I'm trying to rewrite the C code below in Assembly x86
int myFn( char * v, char c, int size ) {
  int i;
  for(i=0; i < size; i++ )
    if( v[i] == c )
      return i;
  return -1;
}
I've tried to use this code in x86:
myFn:
  mov esi, 0
  mov ebx, [esp + 8]
  mov ecx, [esp + 12]
  FOR:
    mov eax, -1
    cmp esi, [esp + 4]
    jge ENDFOR
    cmp [ecx + esi], ebx
    je EQUAL
    inc esi
    jmp FOR
  
  EQUAL:
    mov eax, [esi]
  
  ENDFOR:
  ret
I've also created this program to test the function:
section .data
  fmt: db "strfind: %d", 10, 0
  str: db "test", 0
section .text
  global main
  extern printf
main:
  mov eax, 's'
  mov ebx, 4
  push str
  push eax
  push ebx
  call myFn
  add esp, 12
  push eax
  push fmt
  call printf
  add esp, 8
  ret
myFn:
  mov esi, 0
  mov ebx, [esp + 8]
  mov ecx, [esp + 12]
  FOR:
    mov eax, -1
    cmp esi, [esp + 4]
    jge ENDFOR
    cmp [ecx + esi], ebx
    je EQUAL
    inc esi
    jmp FOR
  
  EQUAL:
    mov eax, [esi]
  
  ENDFOR:
  ret
I'm getting Segmentation Fault error or the wrong result when trying to test it. I believe the problem is when comparing the character of the string with the character I want to find
