user: Converte this assembly snippet into its equivalent C code:

```asm
<checkWinner>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  movb   $0x5f,-0xf(%rbp)
  movb   $0x5f,-0xe(%rbp)
  movb   $0x5f,-0xd(%rbp)
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x8(%rbp)
  movl   $0x0,-0xc(%rbp)
  jmp    L60
L3:
  mov    -0xc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0xf(%rbp)
  mov    -0xc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl 0x1(%rax),%eax
  mov    %al,-0xe(%rbp)
  mov    -0xc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl 0x2(%rax),%eax
  mov    %al,-0xd(%rbp)
  movsbl -0xd(%rbp),%edx
  movsbl -0xe(%rbp),%esi
  movsbl -0xf(%rbp),%eax
  mov    -0x18(%rbp),%rcx
  mov    %eax,%edi
  call   <solidLineMade@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L117
  mov    -0x4(%rbp),%eax
  jmp    L57
L117:
  addl   $0x1,-0xc(%rbp)
L60:
  cmpl   $0x2,-0xc(%rbp)
  jle    L3
  movl   $0x0,-0x8(%rbp)
  jmp    L13
L16:
  mov    -0x18(%rbp),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  mov    %al,-0xf(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0x3(%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  mov    %al,-0xe(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0x6(%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  mov    %al,-0xd(%rbp)
  movsbl -0xd(%rbp),%edx
  movsbl -0xe(%rbp),%esi
  movsbl -0xf(%rbp),%eax
  mov    -0x18(%rbp),%rcx
  mov    %eax,%edi
  call   <solidLineMade@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L69
  mov    -0x4(%rbp),%eax
  jmp    L57
L69:
  addl   $0x1,-0x8(%rbp)
L13:
  cmpl   $0x2,-0x8(%rbp)
  jle    L16
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0xf(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x3,%rax
  movzbl 0x1(%rax),%eax
  mov    %al,-0xe(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x6,%rax
  movzbl 0x2(%rax),%eax
  mov    %al,-0xd(%rbp)
  movsbl -0xd(%rbp),%edx
  movsbl -0xe(%rbp),%esi
  movsbl -0xf(%rbp),%eax
  mov    -0x18(%rbp),%rcx
  mov    %eax,%edi
  call   <solidLineMade@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L77
  mov    -0x4(%rbp),%eax
  jmp    L57
L77:
  mov    -0x18(%rbp),%rax
  movzbl 0x2(%rax),%eax
  mov    %al,-0xf(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x3,%rax
  movzbl 0x1(%rax),%eax
  mov    %al,-0xe(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x6,%rax
  movzbl (%rax),%eax
  mov    %al,-0xd(%rbp)
  movsbl -0xd(%rbp),%edx
  movsbl -0xe(%rbp),%esi
  movsbl -0xf(%rbp),%eax
  mov    -0x18(%rbp),%rcx
  mov    %eax,%edi
  call   <solidLineMade@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L7
  mov    -0x4(%rbp),%eax
  jmp    L57
L7:
  mov    -0x4(%rbp),%eax
L57:
  leave
  ret
```

assistant: ```c
int checkWinner(char board[3][3]) {
  char a = '_';
  char b = '_';
  char c = '_';
  int i = 0;
  int j = 0;
  int retVal;
  for (i = 0; i < 3; i++) {
    a = board[i][0];
    b = board[i][1];
    c = board[i][2];
    retVal = solidLineMade(a, b, c, board);
    if (retVal) {
      return retVal;
    }
  }
  for (j = 0; j < 3; j++) {
    a = board[0][j];
    b = board[1][j];
    c = board[2][j];
    retVal = solidLineMade(a, b, c, board);
    if (retVal) {
      return retVal;
    }
  }
  a = board[0][0];
  b = board[1][1];
  c = board[2][2];
  retVal = solidLineMade(a, b, c, board);
  if (retVal) {
    return retVal;
  }
  a = board[0][2];
  b = board[1][1];
  c = board[2][0];
  retVal = solidLineMade(a, b, c, board);
  if (retVal) {
    return retVal;
  }
  return retVal;
}
```