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

```asm
<calculation_tests>:
  endbr64
  push   %rbx
  sub    $0x30,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  lea    0x1c(%rsp),%rsi
  lea    D53(%rip),%rbx
  mov    %rbx,%rdi
  call   <scanf@plt>
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  lea    0x24(%rsp),%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  movss  0x1c(%rsp),%xmm0
  movss  0x20(%rsp),%xmm1
  comiss %xmm1,%xmm0
  jbe    L42
  movss  0x24(%rsp),%xmm2
  comiss %xmm2,%xmm0
  jbe    L42
  comiss %xmm2,%xmm1
  ja     L0
  movss  %xmm2,0xc(%rsp)
  movss  %xmm1,0x8(%rsp)
  movss  %xmm0,0x4(%rsp)
L42:
  comiss %xmm0,%xmm1
  jbe    L12
  movss  0x24(%rsp),%xmm2
  comiss %xmm2,%xmm1
  jbe    L12
  comiss %xmm2,%xmm0
  ja     L11
  movss  %xmm2,0xc(%rsp)
  movss  %xmm0,0x8(%rsp)
  movss  %xmm1,0x4(%rsp)
L12:
  movss  0x24(%rsp),%xmm2
  comiss %xmm0,%xmm2
  jbe    L24
  comiss %xmm1,%xmm2
  jbe    L24
  comiss %xmm0,%xmm1
  ja     L83
  movss  %xmm0,0xc(%rsp)
  movss  %xmm1,0x8(%rsp)
  movss  %xmm2,0x4(%rsp)
L24:
  movss  0x4(%rsp),%xmm0
  addss  0xc(%rsp),%xmm0
  mulss  D10(%rip),%xmm0
  lea    D15(%rip),%rdi
  call   <printf@plt>
  movss  0xc(%rsp),%xmm4
  addss  0x8(%rsp),%xmm4
  movaps %xmm4,%xmm0
  addss  0x4(%rsp),%xmm0
  divss  D0(%rip),%xmm0
  lea    D45(%rip),%rdi
  call   <printf@plt>
  movss  0x8(%rsp),%xmm0
  lea    D25(%rip),%rdi
  call   <printf@plt>
  movss  0x4(%rsp),%xmm0
  lea    D20(%rip),%rdi
  call   <printf@plt>
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L128
  add    $0x30,%rsp
  pop    %rbx
  ret
L0:
  movss  %xmm1,0xc(%rsp)
  movss  %xmm2,0x8(%rsp)
  movss  %xmm0,0x4(%rsp)
  jmp    L42
L11:
  movss  %xmm0,0xc(%rsp)
  movss  %xmm2,0x8(%rsp)
  movss  %xmm1,0x4(%rsp)
  jmp    L12
L83:
  movss  %xmm1,0xc(%rsp)
  movss  %xmm0,0x8(%rsp)
  movss  %xmm2,0x4(%rsp)
  jmp    L24
L128:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: label: D53
type: string
name: parse_data
arguments: label: D10
type: byte[4]
name: parse_data
arguments: label: D15
type: string
name: parse_data
arguments: label: D0
type: byte[4]
name: parse_data
arguments: label: D45
type: string
name: parse_data
arguments: label: D25
type: string
name: parse_data
arguments: label: D20
type: string

tool: D53: %f

tool: {"D10": [0x00,0x00,0x00,0x3f]}

tool: D15: Media com as duas melhores notas: %.1f


tool: {"D0": [0x00,0x00,0x40,0x40]}

tool: D45: Media com as tres notas: %.1f


tool: D25: Nota mais baixa: %.1f


tool: D20: Nota mais alta: %.1f


assistant: ```c
void calculation_tests() {
  float nota1, nota2, nota3;
  float maior, menor, media, mediatotal, mediamelhor;
  scanf("%f", &nota1);
  scanf("%f", &nota2);
  scanf("%f", &nota3);
  if (nota1 > nota2 && nota1 > nota3) {
    maior = nota1;
    if (nota2 > nota3) {
      media = nota2;
      menor = nota3;
    } else {
      media = nota3;
      menor = nota2;
    }
  }
  if (nota2 > nota1 && nota2 > nota3) {
    maior = nota2;
    if (nota1 > nota3) {
      media = nota1;
      menor = nota3;
    } else {
      media = nota3;
      menor = nota1;
    }
  }
  if (nota3 > nota1 && nota3 > nota2) {
    maior = nota3;
    if (nota2 > nota1) {
      media = nota2;
      menor = nota1;
    } else {
      media = nota1;
      menor = nota2;
    }
  }
  mediamelhor = (media + maior) / 2;
  mediatotal = (menor + media + maior) / 3;
  printf("Media com as duas melhores notas: %.1f\n", mediamelhor);
  printf("Media com as tres notas: %.1f\n", mediatotal);
  printf("Nota mais baixa: %.1f\n", menor);
  printf("Nota mais alta: %.1f\n", maior);
}
```