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

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x478,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x468(%rsp)
  xor    %eax,%eax
  lea    0x80(%rsp),%r13
  lea    0x20(%rsp),%r12
  lea    0x50(%rsp),%rbp
  mov    $0x0,%ebx
  lea    D100(%rip),%r15
  lea    D98(%rip),%r14
L29:
  add    $0x1,%ebx
  mov    %ebx,%esi
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <gets@plt>
  lea    D91(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r12,%rsi
  mov    %r14,%rdi
  call   <scanf@plt>
  lea    D97(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <scanf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  add    $0x64,%r13
  add    $0x4,%r12
  add    $0x4,%rbp
  cmp    $0xa,%ebx
  jne    L29
  lea    D18(%rip),%rdi
  call   <puts@plt>
  mov    $0x0,%ebx
  pxor   %xmm5,%xmm5
  movss  %xmm5,0xc(%rsp)
  lea    D67(%rip),%r13
  jmp    L22
L12:
  mulss  0x50(%rsp),%xmm0
  divss  D83(%rip),%xmm0
  movss  %xmm0,0x14(%rsp)
  mov    %ebx,0x1c(%rsp)
  movss  %xmm0,0x10(%rsp)
  mov    %ebx,0x18(%rsp)
  mov    $0x1,%r12d
  jmp    L32
L9:
  cmp    $0x9,%r12d
  jg     L14
L32:
  mov    %r12d,%ebx
L22:
  lea    0x1(%rbx),%r12d
  movslq %ebx,%rbp
  movss  0x50(%rsp,%rbp,4),%xmm0
  mulss  0x20(%rsp,%rbp,4),%xmm0
  cvtss2sd %xmm0,%xmm0
  divsd  D26(%rip),%xmm0
  lea    0x0(%rbp,%rbp,4),%rax
  lea    (%rax,%rax,4),%rax
  lea    0x80(%rsp,%rax,4),%rdx
  mov    %r12d,%esi
  mov    %r13,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movss  0x20(%rsp,%rbp,4),%xmm0
  movss  0xc(%rsp),%xmm3
  addss  %xmm0,%xmm3
  movss  %xmm3,0xc(%rsp)
  test   %ebx,%ebx
  je     L12
  movslq %ebx,%rax
  mulss  0x50(%rsp,%rax,4),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  divsd  D26(%rip),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd 0x10(%rsp),%xmm2
  comisd %xmm2,%xmm1
  jbe    L37
  movaps %xmm0,%xmm4
  divss  D83(%rip),%xmm4
  movss  %xmm4,0x10(%rsp)
  mov    %ebx,0x18(%rsp)
L37:
  pxor   %xmm2,%xmm2
  cvtss2sd 0x14(%rsp),%xmm2
  comisd %xmm1,%xmm2
  jbe    L9
  divss  D83(%rip),%xmm0
  movss  %xmm0,0x14(%rsp)
  mov    %ebx,0x1c(%rsp)
  jmp    L9
L14:
  lea    0x80(%rsp),%rdx
  movslq 0x1c(%rsp),%rax
  lea    (%rax,%rax,4),%rax
  lea    (%rax,%rax,4),%rax
  lea    (%rdx,%rax,4),%rcx
  movslq 0x18(%rsp),%rax
  lea    (%rax,%rax,4),%rax
  lea    (%rax,%rax,4),%rax
  lea    (%rdx,%rax,4),%rsi
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  mov    %rcx,%rdx
  pxor   %xmm2,%xmm2
  cvtss2sd 0x14(%rsp),%xmm2
  pxor   %xmm1,%xmm1
  cvtss2sd 0x10(%rsp),%xmm1
  lea    D54(%rip),%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  mov    0x468(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L56
  add    $0x478,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L56:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D100
type_infered: string
name: extract_symbolic_data
arguments: label: D98
type_infered: string
name: extract_symbolic_data
arguments: label: D91
type_infered: string
name: extract_symbolic_data
arguments: label: D97
type_infered: string
name: extract_symbolic_data
arguments: label: D18
type_infered: string
name: extract_symbolic_data
arguments: label: D67
type_infered: string
name: extract_symbolic_data
arguments: label: D83
type_infered: f32
name: extract_symbolic_data
arguments: label: D26
type_infered: f32[2]
name: extract_symbolic_data
arguments: label: D54
type_infered: string

tool: D100: Vendedor #%d
Nome: 

tool: D98:  %f

tool: D91: Total de vendas: R$

tool: D97: Pencentual de comissao: 

tool: D18: 
---- VENDEDORES ----

tool: D67: #%d. %s
Comissao a receber: R$%.2f


tool: D83: 100

tool: {"D26": [0.0,3.390625]}

tool: D54: 
Total de todas as vendas: R$%.2f
Maior valor a ser recebido: R$%.2f, pelo vendedor %s
Menor valor a ser recebido: R$%.2f, pelo vendedor %s


assistant: ```c
void main() {
  float total[10], comissao[10], contt = 0.0, maior, menor;
  char nomes[10][100];
  int ma, me, i;
  for (i = 0; i < 10; i++) {
    printf("Vendedor #%d\n"
           "Nome: ",
           i + 1);
    gets(nomes[i]);
    printf("Total de vendas: R$");
    scanf(" %f", &total[i]);
    printf("Pencentual de comissao: ");
    scanf(" %f", &comissao[i]);
    printf("\n");
    getchar();
  }
  printf("\n---- VENDEDORES ----\n");
  for (i = 0; i < 10; i++) {
    printf("#%d. %s\n"
           "Comissao a receber: R$%.2f\n",
           i + 1, nomes[i], comissao[i] * total[i] / 100.0);
    contt += total[i];
    if (i == 0) {
      maior = comissao[i] * total[i] / 100.0;
      menor = comissao[i] * total[i] / 100.0;
      ma = 0;
      me = 0;
    } else {
      if (comissao[i] * total[i] / 100.0 > maior) {
        maior = comissao[i] * total[i] / 100.0;
        ma = i;
      }
      if (comissao[i] * total[i] / 100.0 < menor) {
        menor = comissao[i] * total[i] / 100.0;
        me = i;
      }
    }
  }
  printf("\nTotal de todas as vendas: R$%.2f\n"
         "Maior valor a ser recebido: R$%.2f, pelo vendedor %s\n"
         "Menor valor a ser recebido: R$%.2f, pelo vendedor %s\n",
         contt, maior, nomes[ma], menor, nomes[me]);
}
```