user: 下面的汇编指令对应的C源代码是什么：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D137(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D34(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    D129(%rip),%rax
  movq   %rax,%xmm0
  lea    D108(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movl   $0x1,-0x34(%rbp)
  jmp    L57
L149:
  movl   $0x0,-0x2c(%rbp)
  cmpl   $0x80,-0x34(%rbp)
  jne    L31
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L31:
  mov    -0x34(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  jmp    L37
L116:
  addl   $0x1,-0x2c(%rbp)
  shll   -0x30(%rbp)
L37:
  cmpl   $0x80,-0x30(%rbp)
  jle    L116
  mov    -0x2c(%rbp),%eax
  sub    $0x7,%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  movq   %xmm2,%rax
  movq   %rax,%xmm0
  lea    D108(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  addl   $0x1,-0x34(%rbp)
L57:
  cmpl   $0x80,-0x34(%rbp)
  jle    L149
  movl   $0x1,-0x34(%rbp)
  jmp    L8
L17:
  mov    -0x34(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  mov    %eax,-0x30(%rbp)
  jmp    L51
L95:
  shll   -0x30(%rbp)
L51:
  cmpl   $0x7f,-0x30(%rbp)
  jle    L95
  mov    -0x30(%rbp),%eax
  sub    $0xc0,%eax
  add    %eax,%eax
  pxor   %xmm3,%xmm3
  cvtsi2sd %eax,%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  lea    D108(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  addl   $0x1,-0x34(%rbp)
L8:
  cmpl   $0x80,-0x34(%rbp)
  jle    L17
  lea    D106(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x40,-0x34(%rbp)
  jmp    L3
L152:
  cmpl   $0x60,-0x34(%rbp)
  jne    L22
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L22:
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x34(%rbp),%xmm1
  movsd  D88(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <ceil@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm0
  cvttsd2si %xmm0,%rax
  mov    %eax,%eax
  test   %rax,%rax
  js     L155
  pxor   %xmm4,%xmm4
  cvtsi2sd %rax,%xmm4
  movq   %xmm4,%rax
  jmp    L128
L155:
  mov    %rax,%rdx
  shr    %rdx
  and    $0x1,%eax
  or     %rax,%rdx
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdx,%xmm0
  addsd  %xmm0,%xmm0
  movq   %xmm0,%rax
L128:
  movq   %rax,%xmm0
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  -0x10(%rbp),%xmm0
  subsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  comisd -0x28(%rbp),%xmm0
  jbe    L121
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
L121:
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x34(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D79(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  comisd -0x20(%rbp),%xmm0
  jbe    L115
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
L115:
  addl   $0x1,-0x34(%rbp)
L3:
  cmpl   $0x7f,-0x34(%rbp)
  jle    L152
  movsd  -0x20(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%edi
  call   <exit@plt>
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D29
type: string
name: parse_data
arguments: data_label: D137
type: string
name: parse_data
arguments: data_label: D34
type: string
name: parse_data
arguments: data_label: D129
type: f64
name: parse_data
arguments: data_label: D108
type: string
name: parse_data
arguments: data_label: D5
type: string
name: parse_data
arguments: data_label: D106
type: string
name: parse_data
arguments: data_label: D105
type: string
name: parse_data
arguments: data_label: D88
type: byte[8]
name: parse_data
arguments: data_label: D22
type: string
name: parse_data
arguments: data_label: D79
type: byte[8]
name: parse_data
arguments: data_label: D27
type: string

tool: D29: /* This table has been generated by divtab-sh4.c.  */

tool: D137: 	.balign 4

tool: D34: LOCAL(div_table_clz):

tool: D129: 0

tool: D108: 	.byte	%d


tool: D5: /* Lookup table translating positive divisor to index into table of
   normalized inverse.  N.B. the '0' entry is also the last entry of the
 previous table, and causes an unaligned access for division by zero.  */
LOCAL(div_table_ix):

tool: D106: /* 1/64 .. 1/127, normalized.  There is an implicit leading 1 in bit 32.  */
	.balign 4
LOCAL(zero_l):

tool: D105: LOCAL(div_table):

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

tool: D22: 	.long	0x%X


tool: {"D79": [0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x40]}

tool: D27: 	/* maximum error: %f scaled: %f*/


assistant: ```c
int main() {
  int i, j;
  double q, r, err, max_err = 0, max_s_err = 0;
  puts("/* This table has been generated by divtab-sh4.c.  */");
  puts("\t.balign 4");
  puts("LOCAL(div_table_clz):");
  printf("\t.byte\t%d\n", 0);
  for (i = 1; i <= 128; i++) {
    int n = 0;
    if (i == 128)
      puts("/* Lookup table translating positive divisor to index into table of\n   normalized inverse.  N.B. the '0' entry is also the last entry of the\n previous table, and causes an unaligned access for division by zero.  */\nLOCAL(div_table_ix):");
    for (j = i; j <= 128; j += j)
      n++;
    printf("\t.byte\t%d\n", n - 7);
  }
  for (i = 1; i <= 128; i++) {
    j = i < 0 ? -i : i;
    while (j < 128)
      j += j;
    printf("\t.byte\t%d\n", j * 2 - 96 * 4);
  }
  puts("/* 1/64 .. 1/127, normalized.  There is an implicit leading 1 in bit 32.  */\n	.balign 4\nLOCAL(zero_l):");
  for (i = 64; i < 128; i++) {
    if (i == 96)
      puts("LOCAL(div_table):");
    q = 4. * (1 << 30) * 128 / i;
    r = ceil(q);
    printf("\t.long\t0x%X\n", (unsigned)r);
    err = r - q;
    if (err > max_err)
      max_err = err;
    err = err * i / 128;
    if (err > max_s_err)
      max_s_err = err;
  }
  printf("\t/* maximum error: %f scaled: %f*/\n", max_err, max_s_err);
  exit(0);
}
```