user: 请将以下的汇编代码转换成C语言代码:

```asm
<find_maximum>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %esi,-0x2c(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%rax
  mov    (%rax),%eax
  mov    %eax,-0x14(%rbp)
  movl   $0x0,-0x4(%rbp)
  movl   $0x0,-0x10(%rbp)
  jmp    L25
L119:
  mov    -0x10(%rbp),%edx
  mov    -0x2c(%rbp),%ecx
  mov    -0x28(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <find_maximum_row@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jle    L59
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x14(%rbp)
L59:
  mov    -0x10(%rbp),%edx
  mov    -0x2c(%rbp),%ecx
  mov    -0x28(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <find_maximum_column@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jle    L99
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x14(%rbp)
L99:
  addl   $0x1,-0x10(%rbp)
L25:
  mov    -0x10(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L119
  movl   $0x0,-0xc(%rbp)
  jmp    L26
L11:
  mov    -0xc(%rbp),%edx
  mov    -0x2c(%rbp),%esi
  mov    -0x28(%rbp),%rax
  mov    %edx,%ecx
  mov    $0x0,%edx
  mov    %rax,%rdi
  call   <find_maximum_diagonal@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jle    L118
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x14(%rbp)
L118:
  mov    -0x2c(%rbp),%eax
  lea    -0x1(%rax),%edi
  mov    -0xc(%rbp),%edx
  mov    -0x2c(%rbp),%esi
  mov    -0x28(%rbp),%rax
  mov    %edx,%ecx
  mov    %edi,%edx
  mov    %rax,%rdi
  call   <find_maximum_anti_diagonal@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jle    L73
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x14(%rbp)
L73:
  addl   $0x1,-0xc(%rbp)
L26:
  mov    -0xc(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L11
  movl   $0x1,-0x8(%rbp)
  jmp    L75
L58:
  mov    -0x8(%rbp),%edx
  mov    -0x2c(%rbp),%esi
  mov    -0x28(%rbp),%rax
  mov    $0x0,%ecx
  mov    %rax,%rdi
  call   <find_maximum_diagonal@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jle    L15
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x14(%rbp)
L15:
  mov    -0x2c(%rbp),%eax
  sub    -0x8(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x2c(%rbp),%esi
  mov    -0x28(%rbp),%rax
  mov    $0x0,%ecx
  mov    %rax,%rdi
  call   <find_maximum_anti_diagonal@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jle    L104
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x14(%rbp)
L104:
  addl   $0x1,-0x8(%rbp)
L75:
  mov    -0x8(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L58
  mov    -0x14(%rbp),%eax
  leave
  ret
```

assistant: ```c
int find_maximum(int **matrix, int size) {
  int maximum = matrix[0][0];
  int new_maximum = 0;
  for (int i = 0; i < size; i++) {
    if ((new_maximum = find_maximum_row(matrix, size, i)) > maximum)
      maximum = new_maximum;
    if ((new_maximum = find_maximum_column(matrix, size, i)) > maximum)
      maximum = new_maximum;
  }
  for (int i = 0; i < size; i++) {
    if ((new_maximum = find_maximum_diagonal(matrix, size, 0, i)) > maximum)
      maximum = new_maximum;
    if ((new_maximum = find_maximum_anti_diagonal(matrix, size, size - 1, i)) > maximum)
      maximum = new_maximum;
  }
  for (int i = 1; i < size; i++) {
    if ((new_maximum = find_maximum_diagonal(matrix, size, i, 0)) > maximum)
      maximum = new_maximum;
    if ((new_maximum = find_maximum_anti_diagonal(matrix, size, size - i - 1, 0)) > maximum)
      maximum = new_maximum;
  }
  return maximum;
}
```