user: Please show me the C implementation that matches the assembly code listed below:

```asm
<ganhou_jogador>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  mov    0x4(%rax),%eax
  cmp    %eax,%edx
  jne    L191
  mov    -0x8(%rbp),%rax
  mov    0x4(%rax),%edx
  mov    -0x8(%rbp),%rax
  mov    0x8(%rax),%eax
  cmp    %eax,%edx
  jne    L191
  mov    -0x8(%rbp),%rax
  mov    (%rax),%eax
  jmp    L75
L191:
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x4(%rax),%eax
  cmp    %eax,%edx
  jne    L217
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x4(%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x8(%rax),%eax
  cmp    %eax,%edx
  jne    L217
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  jmp    L75
L217:
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    0x4(%rax),%eax
  cmp    %eax,%edx
  jne    L111
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    0x4(%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    0x8(%rax),%eax
  cmp    %eax,%edx
  jne    L111
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  jmp    L75
L111:
  mov    -0x8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jne    L26
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jne    L26
  mov    -0x8(%rbp),%rax
  mov    (%rax),%eax
  jmp    L75
L26:
  mov    -0x8(%rbp),%rax
  mov    0x4(%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x4(%rax),%eax
  cmp    %eax,%edx
  jne    L225
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x4(%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    0x4(%rax),%eax
  cmp    %eax,%edx
  jne    L225
  mov    -0x8(%rbp),%rax
  mov    0x4(%rax),%eax
  jmp    L75
L225:
  mov    -0x8(%rbp),%rax
  mov    0x8(%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x8(%rax),%eax
  cmp    %eax,%edx
  jne    L45
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x8(%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    0x8(%rax),%eax
  cmp    %eax,%edx
  jne    L45
  mov    -0x8(%rbp),%rax
  mov    0x8(%rax),%eax
  jmp    L75
L45:
  mov    -0x8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x4(%rax),%eax
  cmp    %eax,%edx
  jne    L19
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x4(%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    0x8(%rax),%eax
  cmp    %eax,%edx
  jne    L19
  mov    -0x8(%rbp),%rax
  mov    (%rax),%eax
  jmp    L75
L19:
  mov    -0x8(%rbp),%rax
  mov    0x8(%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x4(%rax),%eax
  cmp    %eax,%edx
  jne    L57
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    0x4(%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jne    L57
  mov    -0x8(%rbp),%rax
  mov    0x8(%rax),%eax
  jmp    L75
L57:
  mov    $0x0,%eax
L75:
  pop    %rbp
  ret
```

assistant: ```c
int ganhou_jogador(int mat[3][3]) {
  if (mat[0][0] == mat[0][1] && mat[0][1] == mat[0][2]) {
    return mat[0][0];
  } else if (mat[1][0] == mat[1][1] && mat[1][1] == mat[1][2]) {
    return mat[1][0];
  } else if (mat[2][0] == mat[2][1] && mat[2][1] == mat[2][2]) {
    return mat[2][0];
  } else if (mat[0][0] == mat[1][0] && mat[1][0] == mat[2][0]) {
    return mat[0][0];
  } else if (mat[0][1] == mat[1][1] && mat[1][1] == mat[2][1]) {
    return mat[0][1];
  } else if (mat[0][2] == mat[1][2] && mat[1][2] == mat[2][2]) {
    return mat[0][2];
  } else if (mat[0][0] == mat[1][1] && mat[1][1] == mat[2][2]) {
    return mat[0][0];
  } else if (mat[0][2] == mat[1][1] && mat[1][1] == mat[2][0]) {
    return mat[0][2];
  } else {
    return 0;
  }
}
```