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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    -0x13000(%rsp),%r11
L224:
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  cmp    %r11,%rsp
  jne    L224
  sub    $0x8b0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D78(%rip),%rax
  mov    %rax,%rsi
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x138a0(%rbp)
  cmpq   $0x0,-0x138a0(%rbp)
  jne    L178
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L178:
  mov    -0x138a0(%rbp),%rax
  mov    %rax,%rdi
  call   <feof@plt>
  test   %eax,%eax
  jne    L240
  lea    -0x138ac(%rbp),%rcx
  lea    -0x138b0(%rbp),%rdx
  mov    -0x138a0(%rbp),%rax
  lea    D32(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
L240:
  mov    -0x138b0(%rbp),%eax
  cmp    $0x64,%eax
  jg     L133
  mov    -0x138ac(%rbp),%eax
  cmp    $0x64,%eax
  jle    L208
L133:
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xffffffff,%eax
  jmp    L202
L208:
  movl   $0x0,-0x138a8(%rbp)
  jmp    L55
L22:
  movl   $0x0,-0x138a4(%rbp)
  jmp    L23
L103:
  lea    -0x13890(%rbp),%rcx
  mov    -0x138a4(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x138a8(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rsi,%rax
  shl    $0x2,%rax
  lea    (%rcx,%rax,1),%rdx
  mov    -0x138a0(%rbp),%rax
  lea    D14(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  addl   $0x1,-0x138a4(%rbp)
L23:
  mov    -0x138ac(%rbp),%eax
  cmp    %eax,-0x138a4(%rbp)
  jge    L122
  mov    -0x138a0(%rbp),%rax
  mov    %rax,%rdi
  call   <feof@plt>
  test   %eax,%eax
  je     L103
L122:
  addl   $0x1,-0x138a8(%rbp)
L55:
  mov    -0x138b0(%rbp),%eax
  cmp    %eax,-0x138a8(%rbp)
  jge    L166
  mov    -0x138a0(%rbp),%rax
  mov    %rax,%rdi
  call   <feof@plt>
  test   %eax,%eax
  je     L22
L166:
  mov    -0x138a0(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x138b0(%rbp),%eax
  cmp    %eax,-0x138a8(%rbp)
  jne    L226
  mov    -0x138ac(%rbp),%eax
  cmp    %eax,-0x138a4(%rbp)
  je     L31
L226:
  lea    D111(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xffffffff,%eax
  jmp    L202
L31:
  movl   $0x0,-0x138a8(%rbp)
  jmp    L154
L204:
  movl   $0x0,-0x138a4(%rbp)
  jmp    L44
L18:
  mov    -0x138a4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x138a8(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  -0x13890(%rbp,%rax,4),%xmm0
  mov    -0x138a8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x138a4(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rcx,%rax
  movss  %xmm0,-0x9c50(%rbp,%rax,4)
  addl   $0x1,-0x138a4(%rbp)
L44:
  mov    -0x138ac(%rbp),%eax
  cmp    %eax,-0x138a4(%rbp)
  jl     L18
  addl   $0x1,-0x138a8(%rbp)
L154:
  mov    -0x138b0(%rbp),%eax
  cmp    %eax,-0x138a8(%rbp)
  jl     L204
  lea    D45(%rip),%rax
  mov    %rax,%rsi
  lea    D108(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x13898(%rbp)
  cmpq   $0x0,-0x13898(%rbp)
  jne    L173
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L173:
  mov    -0x138b0(%rbp),%edx
  mov    -0x138ac(%rbp),%eax
  pxor   %xmm1,%xmm1
  cvtsi2ss %eax,%xmm1
  movd   %xmm1,%ecx
  mov    -0x13898(%rbp),%rax
  movd   %ecx,%xmm0
  lea    D0(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  movl   $0x0,-0x138a8(%rbp)
  jmp    L10
L248:
  movl   $0x0,-0x138a4(%rbp)
  jmp    L21
L177:
  mov    -0x138a4(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x138a8(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rcx,%rax
  mov    -0x9c50(%rbp,%rax,4),%edx
  mov    -0x13898(%rbp),%rax
  movd   %edx,%xmm0
  lea    D70(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  addl   $0x1,-0x138a4(%rbp)
L21:
  mov    -0x138b0(%rbp),%eax
  cmp    %eax,-0x138a4(%rbp)
  jl     L177
  addl   $0x1,-0x138a8(%rbp)
L10:
  mov    -0x138ac(%rbp),%eax
  cmp    %eax,-0x138a8(%rbp)
  jl     L248
  mov    -0x13898(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    $0x0,%eax
L202:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L168
  call   <__stack_chk_fail@plt>
L168:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D78
type: string
name: extract_symbolic_data
arguments: tag: D80
type: string
name: extract_symbolic_data
arguments: tag: D40
type: string
name: extract_symbolic_data
arguments: tag: D32
type: string
name: extract_symbolic_data
arguments: tag: D22
type: string
name: extract_symbolic_data
arguments: tag: D14
type: string
name: extract_symbolic_data
arguments: tag: D111
type: string
name: extract_symbolic_data
arguments: tag: D45
type: string
name: extract_symbolic_data
arguments: tag: D108
type: string
name: extract_symbolic_data
arguments: tag: D56
type: string
name: extract_symbolic_data
arguments: tag: D0
type: string
name: extract_symbolic_data
arguments: tag: D70
type: string

tool: D78: r

tool: D80: mat1.txt

tool: D40: The file `mat1.txt` can not be opened!


tool: D32: %d %d

tool: D22: Very large matrix!

tool: D14: %f

tool: D111: Not enough data in the file!

tool: D45: w

tool: D108: mat2.txt

tool: D56: The file `mat2.txt` can not be opened!


tool: D0: %d %d


tool: D70: %7.2f


assistant: ```c
int main() {
  int i, j, m, n;
  float a[100][100], b[100][100];
  FILE *input, *output;
  if ((input = fopen("mat1.txt", "r")) == NULL) {
    printf("The file `mat1.txt` can not be opened!\n");
    exit(1);
  }
  if (!feof(input))
    fscanf(input, "%d %d", &m, &n);
  if ((m > 100) || (n > 100)) {
    printf("Very large matrix!");
    return (-1);
  }
  for (i = 0; i < m && !feof(input); i++)
    for (j = 0; j < n && !feof(input); j++)
      fscanf(input, "%f", &a[i][j]);
  fclose(input);
  if (i != m || j != n) {
    printf("Not enough data in the file!");
    return (-1);
  }
  for (i = 0; i < m; i++)
    for (j = 0; j < n; j++)
      b[j][i] = a[i][j];
  if ((output = fopen("mat2.txt", "w")) == NULL) {
    printf("The file `mat2.txt` can not be opened!\n");
    exit(1);
  }
  fprintf(output, "%d %d\n", n, m);
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++)
      fprintf(output, "%7.2f\n", b[i][j]);
  fclose(output);
  return (0);
}
```