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

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  lea    D27(%rip),%r12
  push   %rbp
  mov    %r12,%rdi
  push   %rbx
  lea    D132(%rip),%rbx
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  lea    0x4(%rsp),%rbp
  call   <printf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  movss  0x4(%rsp),%xmm0
  pxor   %xmm7,%xmm7
  ucomiss %xmm7,%xmm0
  jp     L94
  je     L128
L94:
  movss  D91(%rip),%xmm7
  movss  D73(%rip),%xmm6
  lea    D39(%rip),%r13
  movd   %xmm7,%r15d
  movd   %xmm6,%r14d
  jmp    L22
L76:
  mulss  D128(%rip),%xmm0
  addss  D56(%rip),%xmm0
L62:
  movd   %r14d,%xmm3
  movsd  D15(%rip),%xmm1
  comiss %xmm0,%xmm3
  ja     L68
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
L68:
  movapd %xmm1,%xmm0
  mov    %r13,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  movss  0x4(%rsp),%xmm0
  pxor   %xmm4,%xmm4
  ucomiss %xmm4,%xmm0
  jp     L22
  je     L128
L22:
  movd   %r15d,%xmm2
  comiss %xmm0,%xmm2
  ja     L76
  movss  D5(%rip),%xmm5
  comiss %xmm0,%xmm5
  jbe    L127
  mulss  D0(%rip),%xmm0
  addss  D77(%rip),%xmm0
  jmp    L62
  nopw   0x0(%rax,%rax,1)
L127:
  movss  D59(%rip),%xmm6
  comiss %xmm0,%xmm6
  jbe    L36
  mulss  D61(%rip),%xmm0
  addss  D154(%rip),%xmm0
  jmp    L62
  nopw   0x0(%rax,%rax,1)
L36:
  movss  D8(%rip),%xmm7
  comiss %xmm0,%xmm7
  jbe    L112
  mulss  D121(%rip),%xmm0
  addss  D3(%rip),%xmm0
  jmp    L62
  nopw   0x0(%rax,%rax,1)
L128:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L100
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L112:
  mulss  D6(%rip),%xmm0
  addss  D181(%rip),%xmm0
  jmp    L62
L100:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D27
type: string
name: extract_symbolic_data
arguments: data_label: D132
type: string
name: extract_symbolic_data
arguments: data_label: D91
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D73
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D39
type: string
name: extract_symbolic_data
arguments: data_label: D128
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D56
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D15
type: byte[8]
name: extract_symbolic_data
arguments: data_label: D5
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D0
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D77
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D59
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D61
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D154
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D8
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D121
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D3
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D6
type: byte[4]
name: extract_symbolic_data
arguments: data_label: D181
type: byte[4]

tool: D27: Enter value of trade: 

tool: D132: %f

tool: {"D91": [0x00,0x40,0x1c,0x45]}

tool: {"D73": [0x00,0x00,0x1c,0x42]}

tool: D39: Commission: $%.2f


tool: {"D128": [0x96,0x43,0x8b,0x3c]}

tool: {"D56": [0x00,0x00,0xf0,0x41]}

tool: {"D15": [0x00,0x00,0x00,0x00,0x00,0x80,0x43,0x40]}

tool: {"D5": [0x00,0x50,0xc3,0x45]}

tool: {"D0": [0xd0,0x44,0xd8,0x3b]}

tool: {"D77": [0x00,0x00,0x60,0x42]}

tool: {"D59": [0x00,0x40,0x9c,0x46]}

tool: {"D61": [0x89,0xd2,0x5e,0x3b]}

tool: {"D154": [0x00,0x00,0x98,0x42]}

tool: {"D8": [0x00,0x50,0x43,0x47]}

tool: {"D121": [0xe0,0x2d,0x10,0x3b]}

tool: {"D3": [0x00,0x00,0xc8,0x42]}

tool: {"D6": [0xfa,0xed,0x6b,0x3a]}

tool: {"D181": [0x00,0x00,0x7f,0x43]}

assistant: ```c
int main(void) {
  float commission, value;
  printf("Enter value of trade: ");
  scanf("%f", &value);
  while (value != 0.0f) {
    if (value == 0.0f) {
      return 0;
    } else if (value < 2500.00f) {
      commission = 30.00f + 0.017f * value;
    } else if (value < 6250.00f) {
      commission = 56.00f + 0.0066f * value;
    } else if (value < 20000.00f) {
      commission = 76.00f + 0.0034f * value;
    } else if (value < 50000.00f) {
      commission = 100.00f + 0.0022f * value;
    } else {
      commission = 255.00f + 0.0009f * value;
    }
    if (commission < 39.00f) {
      commission = 39.00f;
    }
    printf("Commission: $%.2f\n", commission);
    printf("Enter value of trade: ");
    scanf("%f", &value);
  }
}
```