user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x340,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x4,-0x338(%rbp)
  movl   $0x4,-0x334(%rbp)
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x340(%rbp)
  jmp    L7
L127:
  movl   $0x0,-0x33c(%rbp)
  jmp    L97
L66:
  lea    -0x330(%rbp),%rcx
  mov    -0x33c(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x340(%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    D0(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  addl   $0x1,-0x33c(%rbp)
L97:
  mov    -0x33c(%rbp),%eax
  cmp    -0x334(%rbp),%eax
  jl     L66
  addl   $0x1,-0x340(%rbp)
L7:
  mov    -0x340(%rbp),%eax
  cmp    -0x338(%rbp),%eax
  jl     L127
  movl   $0x0,-0x340(%rbp)
  jmp    L122
L0:
  movl   $0x0,-0x33c(%rbp)
  jmp    L24
L78:
  mov    -0x33c(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x340(%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    -0x340(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x33c(%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,-0x33c(%rbp)
L24:
  mov    -0x33c(%rbp),%eax
  cmp    -0x334(%rbp),%eax
  jl     L78
  addl   $0x1,-0x340(%rbp)
L122:
  mov    -0x340(%rbp),%eax
  cmp    -0x338(%rbp),%eax
  jl     L0
  mov    $0xa,%edi
  call   <putchar@plt>
  movl   $0x0,-0x340(%rbp)
  jmp    L104
L82:
  movl   $0x0,-0x33c(%rbp)
  jmp    L114
L77:
  mov    -0x33c(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x340(%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    D10(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x33c(%rbp)
L114:
  mov    -0x33c(%rbp),%eax
  cmp    -0x338(%rbp),%eax
  jl     L77
  mov    $0xa,%edi
  call   <putchar@plt>
  addl   $0x1,-0x340(%rbp)
L104:
  mov    -0x340(%rbp),%eax
  cmp    -0x334(%rbp),%eax
  jl     L82
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L58
  call   <__stack_chk_fail@plt>
L58:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D12
data_type: string
name: disassemble_data
arguments: tag: D0
data_type: string
name: disassemble_data
arguments: tag: D10
data_type: string

tool: D12: Vuvedete z (sled vsqka cifra da ima raztoqnie)

tool: D0: %d

tool: D10: %d	

assistant: ```c
int main() {
  int m = 4, n = 4, c, d, z[10][10], t[10][10];
  printf("Vuvedete z (sled vsqka cifra da ima raztoqnie)\n");
  for (c = 0; c < m; c++)
    for (d = 0; d < n; d++)
      scanf("%d", &z[c][d]);
  for (c = 0; c < m; c++)
    for (d = 0; d < n; d++)
      t[d][c] = z[c][d];
  printf("\n");
  for (c = 0; c < n; c++) {
    for (d = 0; d < m; d++)
      printf("%d\t", t[c][d]);
    printf("\n");
  }
  return 0;
}
```