user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D134(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x10(%rbp),%rax
  mov    %rax,%rsi
  lea    D137(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  jmp    L8
L45:
  movss  -0x10(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jp     L154
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  je     L60
L154:
  movss  -0x10(%rbp),%xmm1
  movss  D223(%rip),%xmm0
  comiss %xmm1,%xmm0
  jbe    L62
  movss  -0x10(%rbp),%xmm1
  movss  D130(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movss  D172(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  jmp    L149
L62:
  movss  -0x10(%rbp),%xmm1
  movss  D152(%rip),%xmm0
  comiss %xmm1,%xmm0
  jbe    L104
  movss  -0x10(%rbp),%xmm1
  movss  D12(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movss  D129(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  jmp    L149
L104:
  movss  -0x10(%rbp),%xmm1
  movss  D111(%rip),%xmm0
  comiss %xmm1,%xmm0
  jbe    L1
  movss  -0x10(%rbp),%xmm1
  movss  D206(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movss  D140(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  jmp    L149
L1:
  movss  -0x10(%rbp),%xmm1
  movss  D6(%rip),%xmm0
  comiss %xmm1,%xmm0
  jbe    L92
  movss  -0x10(%rbp),%xmm1
  movss  D61(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movss  D161(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  jmp    L149
L92:
  movss  -0x10(%rbp),%xmm1
  movss  D49(%rip),%xmm0
  comiss %xmm1,%xmm0
  jbe    L147
  movss  -0x10(%rbp),%xmm1
  movss  D71(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movss  D65(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  jmp    L149
L147:
  movss  -0x10(%rbp),%xmm1
  movss  D169(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movss  D153(%rip),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
L149:
  movss  D68(%rip),%xmm0
  comiss -0xc(%rbp),%xmm0
  jbe    L146
  movss  D68(%rip),%xmm0
  movss  %xmm0,-0xc(%rbp)
L146:
  pxor   %xmm2,%xmm2
  cvtss2sd -0xc(%rbp),%xmm2
  movq   %xmm2,%rax
  movq   %rax,%xmm0
  lea    D197(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D134(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x10(%rbp),%rax
  mov    %rax,%rsi
  lea    D137(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
L8:
  movss  -0x10(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jp     L45
  pxor   %xmm1,%xmm1
  ucomiss %xmm1,%xmm0
  jne    L45
  jmp    L143
L60:
  nop
L143:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L132
  call   <__stack_chk_fail@plt>
L132:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D134
type_infered: string
name: read_data
arguments: label: D137
type_infered: string
name: read_data
arguments: label: D223
type_infered: byte[4]
name: read_data
arguments: label: D130
type_infered: byte[4]
name: read_data
arguments: label: D172
type_infered: byte[4]
name: read_data
arguments: label: D152
type_infered: byte[4]
name: read_data
arguments: label: D12
type_infered: byte[4]
name: read_data
arguments: label: D129
type_infered: byte[4]
name: read_data
arguments: label: D111
type_infered: byte[4]
name: read_data
arguments: label: D206
type_infered: byte[4]
name: read_data
arguments: label: D140
type_infered: byte[4]
name: read_data
arguments: label: D6
type_infered: byte[4]
name: read_data
arguments: label: D61
type_infered: byte[4]
name: read_data
arguments: label: D161
type_infered: byte[4]
name: read_data
arguments: label: D49
type_infered: byte[4]
name: read_data
arguments: label: D71
type_infered: byte[4]
name: read_data
arguments: label: D65
type_infered: byte[4]
name: read_data
arguments: label: D169
type_infered: byte[4]
name: read_data
arguments: label: D153
type_infered: byte[4]
name: read_data
arguments: label: D68
type_infered: byte[4]
name: read_data
arguments: label: D197
type_infered: string

tool: D134: Enter value of trade: 

tool: D137: %f

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

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

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

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

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

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

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

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

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

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

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

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

tool: {"D49": [0x00,0x24,0xf4,0x48]}

tool: {"D71": [0xe0,0x2d,0x90,0x3a]}

tool: {"D65": [0x00,0x00,0x1b,0x43]}

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

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

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

tool: D197: Commission: $%.2f



assistant: ```c
int main() {
  float commission, value;
  printf("Enter value of trade: ");
  scanf("%f", &value);
  while (value != 0.0f) {
    if (value == 0)
      break;
    if (value < 2500.00f)
      commission = 30.00f + .017f * value;
    else if (value < 6250.00f)
      commission = 56.00f + .0066f * value;
    else if (value < 20000.00f)
      commission = 76.00f + .0034f * value;
    else if (value < 50000.00f)
      commission = 100.00f + .0022f * value;
    else if (value < 500000.00f)
      commission = 155.00f + .0011f * value;
    else
      commission = 255.00f + .0009f * value;
    if (commission < 39.00f)
      commission = 39.00f;
    printf("Commission: $%.2f\n\n", commission);
    printf("Enter value of trade: ");
    scanf("%f", &value);
  }
  return 0;
}
```