user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<main>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x10,%rsp
  lea    D10(%rip),%rdi
  call   <puts@plt>
  mov    $0xffffff60,%ebp
  mov    $0x0,%ebx
  lea    D69(%rip),%r12
L16:
  movslq %ebp,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  sar    $0x21,%rdx
  mov    %ebp,%eax
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    %ebx,%esi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x14,%ebx
  add    $0x64,%ebp
  cmp    $0x140,%ebx
  jne    L16
  lea    D91(%rip),%rdi
  call   <puts@plt>
  mov    $0x10,%ebx
  pxor   %xmm6,%xmm6
  movss  %xmm6,0xc(%rsp)
  lea    D15(%rip),%rbp
L3:
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  movapd %xmm0,%xmm1
  subsd  D85(%rip),%xmm1
  mulsd  D95(%rip),%xmm1
  cvtsd2ss %xmm1,%xmm1
  cvtss2sd %xmm1,%xmm1
  mov    %rbp,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  movss  D12(%rip),%xmm2
  addss  0xc(%rsp),%xmm2
  movss  %xmm2,0xc(%rsp)
  sub    $0x1,%ebx
  jne    L3
  lea    D32(%rip),%rdi
  call   <puts@plt>
  mov    $0x10,%ebx
  pxor   %xmm7,%xmm7
  movss  %xmm7,0xc(%rsp)
  lea    D63(%rip),%rbp
L13:
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  movapd %xmm0,%xmm1
  divsd  D95(%rip),%xmm1
  addsd  D85(%rip),%xmm1
  cvtsd2ss %xmm1,%xmm1
  cvtss2sd %xmm1,%xmm1
  mov    %rbp,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  movss  D12(%rip),%xmm4
  addss  0xc(%rsp),%xmm4
  movss  %xmm4,0xc(%rsp)
  sub    $0x1,%ebx
  jne    L13
  mov    $0x0,%eax
  add    $0x10,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: parse_data
arguments: data_label: D10
datatype: string
name: parse_data
arguments: data_label: D69
datatype: string
name: parse_data
arguments: data_label: D91
datatype: string
name: parse_data
arguments: data_label: D15
datatype: string
name: parse_data
arguments: data_label: D85
datatype: f64
name: parse_data
arguments: data_label: D95
datatype: byte[8]
name: parse_data
arguments: data_label: D12
datatype: byte[4]
name: parse_data
arguments: data_label: D32
datatype: string
name: parse_data
arguments: data_label: D63
datatype: string

tool: D10: This is INTEGER conversation of F to C


tool: D69: %d	%d


tool: D91: 

This is FLOAT conversation of F to C

tool: D15: %3.0f	%6.1f


tool: D85: 32

tool: {"D95": [0x72,0x1c,0xc7,0x71,0x1c,0xc7,0xe1,0x3f]}

tool: {"D12": [0x00,0x00,0xa0,0x41]}

tool: D32: 

This is FLOAT conversation of C to F

tool: D63: %f	%f


assistant: ```c
main() {
  int fahr, celsius;
  int lower, upper, step;
  lower = 0;
  upper = 300;
  step = 20;
  fahr = lower;
  printf("This is INTEGER conversation of F to C\n\n");
  while (fahr <= upper) {
    celsius = 5 * (fahr - 32) / 9;
    printf("%d\t%d\n", fahr, celsius);
    fahr = fahr + step;
  }
  printf("\n\nThis is FLOAT conversation of F to C\n");
  float celsiusF;
  float fahrF = lower;
  while (fahrF <= upper) {
    celsiusF = (5.0 / 9.0) * (fahrF - 32.0);
    printf("%3.0f\t%6.1f\n", fahrF, celsiusF);
    fahrF = fahrF + step;
  }
  printf("\n\nThis is FLOAT conversation of C to F\n");
  celsiusF = lower;
  fahrF;
  while (celsiusF <= upper) {
    fahrF = (celsiusF / (5.0 / 9.0)) + 32.0;
    printf("%f\t%f\n", celsiusF, fahrF);
    celsiusF = celsiusF + step;
  }
}
```