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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D72(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    -0x28(%rbp),%rax
  mov    %rax,%rsi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D57(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    -0x20(%rbp),%rax
  lea    0x10(%rax),%rdi
  lea    -0x20(%rbp),%rax
  lea    0xc(%rax),%rsi
  lea    -0x20(%rbp),%rax
  lea    0x8(%rax),%rcx
  lea    -0x20(%rbp),%rax
  lea    0x4(%rax),%rdx
  lea    -0x20(%rbp),%rax
  mov    %rdi,%r9
  mov    %rsi,%r8
  mov    %rax,%rsi
  lea    D54(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movss  -0x20(%rbp),%xmm1
  movss  -0x1c(%rbp),%xmm0
  addss  %xmm0,%xmm1
  movss  -0x18(%rbp),%xmm0
  addss  %xmm0,%xmm1
  movss  -0x14(%rbp),%xmm0
  addss  %xmm0,%xmm1
  movss  -0x10(%rbp),%xmm0
  addss  %xmm1,%xmm0
  movss  D58(%rip),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x2c(%rbp)
  movss  -0x2c(%rbp),%xmm0
  comiss D40(%rip),%xmm0
  jbe    L11
  pxor   %xmm2,%xmm2
  cvtss2sd -0x2c(%rbp),%xmm2
  movq   %xmm2,%rdx
  mov    -0x28(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rsi
  lea    D20(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L8
L11:
  pxor   %xmm3,%xmm3
  cvtss2sd -0x2c(%rbp),%xmm3
  movq   %xmm3,%rdx
  mov    -0x28(%rbp),%rax
  movq   %rdx,%xmm0
  mov    %rax,%rsi
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  nop
L8:
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L18
  call   <__stack_chk_fail@plt>
L18:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D72
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D7
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D57
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D54
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D58
type_guessed: byte[4]
name: extract_symbolic_data
arguments: data_label: D40
type_guessed: byte[4]
name: extract_symbolic_data
arguments: data_label: D20
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D12
type_guessed: string

tool: D72: Ingresa tu matricula

tool: D7: %ld

tool: D57: Ingresa la calificacion de 5 materias, separadas por un espacio

tool: D54: %f %f %f %f %f

tool: {"D58": [0x00,0x00,0xa0,0x40]}

tool: {"D40": [0x00,0x00,0xc0,0x40]}

tool: D20: Aprobado : %ld ::: %.1f 


tool: D12: %ld ::: %.1f 


assistant: ```c
void main() {
  long int matricula;
  float calf[5], promedio;
  printf("Ingresa tu matricula\n");
  scanf("%ld", &matricula);
  printf("Ingresa la calificacion de 5 materias, separadas por un espacio\n");
  scanf("%f %f %f %f %f", &calf[0], &calf[1], &calf[2], &calf[3], &calf[4]);
  promedio = (calf[0] + calf[1] + calf[2] + calf[3] + calf[4]) / 5;
  if (promedio > 6) {
    printf("Aprobado : %ld ::: %.1f \n", matricula, promedio);
  } else {
    printf("%ld ::: %.1f \n", matricula, promedio);
  }
  return;
}
```