user: What is the c source code of the assembly code below?

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x120,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    $0x0,%edi
  call   <time@plt>
  mov    %eax,%edi
  call   <srand@plt>
  movl   $0x0,-0x118(%rbp)
  movl   $0x0,-0x114(%rbp)
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x120(%rbp)
  jmp    L2
L85:
  movl   $0x0,-0x11c(%rbp)
  jmp    L37
L23:
  mov    $0x0,%eax
  call   <rand@plt>
  movslq %eax,%rdx
  imul   $0x288df0cb,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x4,%edx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  imul   $0x65,%edx,%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  mov    -0x11c(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x120(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  mov    %edx,-0x110(%rbp,%rax,4)
  addl   $0x1,-0x11c(%rbp)
L37:
  cmpl   $0x7,-0x11c(%rbp)
  jle    L23
  addl   $0x1,-0x120(%rbp)
L2:
  cmpl   $0x7,-0x120(%rbp)
  jle    L85
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x120(%rbp)
  jmp    L4
L51:
  movl   $0x0,-0x11c(%rbp)
  jmp    L38
L100:
  mov    -0x11c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x120(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    -0x110(%rbp,%rax,4),%eax
  mov    %eax,%esi
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x120(%rbp),%eax
  cmp    -0x11c(%rbp),%eax
  jne    L34
  mov    -0x11c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x120(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    -0x110(%rbp,%rax,4),%eax
  add    %eax,-0x118(%rbp)
L34:
  mov    -0x120(%rbp),%eax
  cmp    -0x11c(%rbp),%eax
  jle    L109
  mov    -0x11c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x120(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    -0x110(%rbp,%rax,4),%eax
  add    %eax,-0x114(%rbp)
L109:
  addl   $0x1,-0x11c(%rbp)
L38:
  cmpl   $0x7,-0x11c(%rbp)
  jle    L100
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x120(%rbp)
L4:
  cmpl   $0x7,-0x120(%rbp)
  jle    L51
  mov    -0x118(%rbp),%eax
  mov    %eax,%esi
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x114(%rbp),%eax
  mov    %eax,%esi
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getch@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L66
  call   <__stack_chk_fail@plt>
L66:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D25
type: string
name: disassemble_data
arguments: tag: D59
type: string
name: disassemble_data
arguments: tag: D48
type: string
name: disassemble_data
arguments: tag: D14
type: string
name: disassemble_data
arguments: tag: D47
type: string
name: disassemble_data
arguments: tag: D56
type: string

tool: D25: Matriz 8x8 com numero aleatorios? Aqui nos temos!



tool: D59: ----- Matriz -----	


tool: D48: [%d]	

tool: D14: 


tool: D47: A soma da Diagonal Principal e: %d


tool: D56: A soma de todos os numeros abaixo da Diagonal Principal e: %d


assistant: ```c
int main() {
  int matriz[8][8];
  int i, j, diagonal, somatrianguloinferior;
  srand(time(NULL));
  diagonal = 0;
  somatrianguloinferior = 0;
  printf("Matriz 8x8 com numero aleatorios? Aqui nos temos!\n\n\n");
  for (i = 0; i < 8; i++) {
    for (j = 0; j < 8; j++) {
      matriz[i][j] = rand() % 101;
    }
  }
  printf("----- Matriz -----\t\n\n");
  for (i = 0; i < 8; i++) {
    for (j = 0; j < 8; j++) {
      printf("[%d]\t", matriz[i][j]);
      if (i == j) {
        diagonal = diagonal + matriz[i][j];
      }
      if (i > j) {
        somatrianguloinferior = somatrianguloinferior + matriz[i][j];
      }
    }
    printf("\n\n");
  }
  printf("A soma da Diagonal Principal e: %d\n", diagonal);
  printf("A soma de todos os numeros abaixo da Diagonal Principal e: %d\n", somatrianguloinferior);
  getch();
  return 0;
}
```