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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x340,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D75(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x33c(%rbp),%rdx
  lea    -0x340(%rbp),%rax
  mov    %rax,%rsi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x338(%rbp)
  jmp    L174
L10:
  movl   $0x0,-0x334(%rbp)
  jmp    L46
L128:
  mov    -0x334(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x338(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%esi
  lea    D87(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x330(%rbp),%rcx
  mov    -0x334(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x338(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  add    %rax,%rax
  add    %rsi,%rax
  shl    $0x2,%rax
  add    %rcx,%rax
  mov    %rax,%rsi
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  addl   $0x1,-0x334(%rbp)
L46:
  mov    -0x33c(%rbp),%eax
  cmp    %eax,-0x334(%rbp)
  jl     L128
  addl   $0x1,-0x338(%rbp)
L174:
  mov    -0x340(%rbp),%eax
  cmp    %eax,-0x338(%rbp)
  jl     L10
  lea    D31(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x338(%rbp)
  jmp    L2
L55:
  movl   $0x0,-0x334(%rbp)
  jmp    L80
L89:
  mov    -0x334(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x338(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  add    %rax,%rax
  add    %rcx,%rax
  mov    -0x330(%rbp,%rax,4),%eax
  mov    %eax,%esi
  lea    D73(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x33c(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x334(%rbp)
  jne    L88
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L88:
  addl   $0x1,-0x334(%rbp)
L80:
  mov    -0x33c(%rbp),%eax
  cmp    %eax,-0x334(%rbp)
  jl     L89
  addl   $0x1,-0x338(%rbp)
L2:
  mov    -0x340(%rbp),%eax
  cmp    %eax,-0x338(%rbp)
  jl     L55
  movl   $0x0,-0x338(%rbp)
  jmp    L86
L77:
  movl   $0x0,-0x334(%rbp)
  jmp    L13
L182:
  mov    -0x334(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x338(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  add    %rax,%rax
  add    %rcx,%rax
  mov    -0x330(%rbp,%rax,4),%edx
  mov    -0x338(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x334(%rbp),%eax
  movslq %eax,%rcx
  mov    %rcx,%rax
  shl    $0x2,%rax
  add    %rcx,%rax
  add    %rax,%rax
  add    %rsi,%rax
  mov    %edx,-0x1a0(%rbp,%rax,4)
  addl   $0x1,-0x334(%rbp)
L13:
  mov    -0x33c(%rbp),%eax
  cmp    %eax,-0x334(%rbp)
  jl     L182
  addl   $0x1,-0x338(%rbp)
L86:
  mov    -0x340(%rbp),%eax
  cmp    %eax,-0x338(%rbp)
  jl     L77
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x338(%rbp)
  jmp    L47
L87:
  movl   $0x0,-0x334(%rbp)
  jmp    L131
L20:
  mov    -0x334(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x338(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  add    %rax,%rax
  add    %rcx,%rax
  mov    -0x1a0(%rbp,%rax,4),%eax
  mov    %eax,%esi
  lea    D73(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x340(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x334(%rbp)
  jne    L36
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L36:
  addl   $0x1,-0x334(%rbp)
L131:
  mov    -0x340(%rbp),%eax
  cmp    %eax,-0x334(%rbp)
  jl     L20
  addl   $0x1,-0x338(%rbp)
L47:
  mov    -0x33c(%rbp),%eax
  cmp    %eax,-0x338(%rbp)
  jl     L87
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L112
  call   <__stack_chk_fail@plt>
L112:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D75
type_infered: string
name: parse_data
arguments: data_tag: D70
type_infered: string
name: parse_data
arguments: data_tag: D89
type_infered: string
name: parse_data
arguments: data_tag: D87
type_infered: string
name: parse_data
arguments: data_tag: D40
type_infered: string
name: parse_data
arguments: data_tag: D31
type_infered: string
name: parse_data
arguments: data_tag: D73
type_infered: string
name: parse_data
arguments: data_tag: D4
type_infered: string
name: parse_data
arguments: data_tag: D41
type_infered: string

tool: D75: Enter rows and columns of matrix: 

tool: D70: %d %d

tool: D89: 
Enter elements of matrix:

tool: D87: Enter element a%d%d: 

tool: D40: %d

tool: D31: 
Entered Matrix: 

tool: D73: %d  

tool: D4: 


tool: D41: 
Transpose of Matrix:

assistant: ```c
int main() {
  int a[10][10], b[10][10], m, n, i, j;
  printf("Enter rows and columns of matrix: ");
  scanf("%d %d", &m, &n);
  printf("\nEnter elements of matrix:\n");
  for (i = 0; i < m; ++i)
    for (j = 0; j < n; ++j) {
      printf("Enter element a%d%d: ", i + 1, j + 1);
      scanf("%d", &a[i][j]);
    }
  printf("\nEntered Matrix: \n");
  for (i = 0; i < m; ++i)
    for (j = 0; j < n; ++j) {
      printf("%d  ", a[i][j]);
      if (j == n - 1)
        printf("\n\n");
    }
  for (i = 0; i < m; ++i)
    for (j = 0; j < n; ++j) {
      b[j][i] = a[i][j];
    }
  printf("\nTranspose of Matrix:\n");
  for (i = 0; i < n; ++i)
    for (j = 0; j < m; ++j) {
      printf("%d  ", b[i][j]);
      if (j == m - 1)
        printf("\n\n");
    }
  return 0;
}
```