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

```asm
<main>:
  endbr64
  push   %r12
  lea    D158(%rip),%rdi
  mov    $0x1,%r12d
  push   %rbp
  lea    D27(%rip),%rbp
  push   %rbx
  lea    D32(%rip),%rbx
  sub    $0x20,%rsp
  call   <puts@plt>
  lea    D61(%rip),%rdi
  call   <puts@plt>
  lea    D16(%rip),%rdi
  call   <puts@plt>
  pxor   %xmm0,%xmm0
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  nopl   (%rax)
L117:
  mov    %r12d,%edx
  xor    %eax,%eax
  cmp    $0x80,%r12d
  je     L40
  nopw   0x0(%rax,%rax,1)
L3:
  add    %edx,%edx
  mov    %eax,%ecx
  add    $0x1,%eax
  cmp    $0x80,%edx
  jle    L3
  sub    $0x6,%ecx
  pxor   %xmm0,%xmm0
  cvtsi2sd %ecx,%xmm0
L66:
  mov    %rbx,%rdi
  mov    $0x1,%eax
  add    $0x1,%r12d
  call   <printf@plt>
  cmp    $0x81,%r12d
  jne    L117
  mov    $0x1,%eax
  mov    $0xfffffe82,%r12d
  lea    0x1(%rax),%ebp
  cmp    $0x7f,%eax
  ja     L125
  nopw   0x0(%rax,%rax,1)
L71:
  add    %eax,%eax
  cmp    $0x7f,%eax
  jle    L71
  lea    -0x180(%rax,%rax,1),%eax
  pxor   %xmm0,%xmm0
  mov    %rbx,%rdi
  cvtsi2sd %eax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
L109:
  mov    %ebp,%eax
  add    $0x2,%r12d
  lea    0x1(%rax),%ebp
  cmp    $0x7f,%eax
  jbe    L71
L125:
  pxor   %xmm0,%xmm0
  mov    %rbx,%rdi
  mov    $0x1,%eax
  cvtsi2sd %r12d,%xmm0
  call   <printf@plt>
  cmp    $0x81,%ebp
  jne    L109
  lea    D107(%rip),%rdi
  mov    $0x40,%r12d
  lea    D98(%rip),%rbx
  call   <puts@plt>
  pxor   %xmm4,%xmm4
  pxor   %xmm2,%xmm2
  movsd  D137(%rip),%xmm1
  cvtsi2sd %r12d,%xmm2
  movsd  %xmm4,(%rsp)
  lea    D68(%rip),%rbp
  jmp    L82
  nopl   0x0(%rax,%rax,1)
L9:
  pxor   %xmm2,%xmm2
  movsd  D108(%rip),%xmm0
  movsd  D136(%rip),%xmm3
  cvtsi2sd %r12d,%xmm2
  movsd  D89(%rip),%xmm5
  divsd  %xmm2,%xmm0
  movapd %xmm0,%xmm1
  andpd  %xmm3,%xmm1
  ucomisd %xmm1,%xmm5
  jbe    L123
  cvttsd2si %xmm0,%rax
  pxor   %xmm1,%xmm1
  movapd %xmm0,%xmm5
  movsd  D163(%rip),%xmm7
  andnpd %xmm0,%xmm3
  cvtsi2sd %rax,%xmm1
  cmpnlesd %xmm1,%xmm5
  andpd  %xmm7,%xmm5
  addsd  %xmm5,%xmm1
  orpd   %xmm3,%xmm1
  movapd %xmm1,%xmm0
L123:
  movapd %xmm0,%xmm1
L82:
  cvttsd2si %xmm1,%rax
  pxor   %xmm0,%xmm0
  mov    %rbx,%rdi
  add    $0x1,%r12d
  movsd  %xmm2,0x18(%rsp)
  movsd  %xmm4,0x10(%rsp)
  movsd  %xmm1,0x8(%rsp)
  mov    %eax,%eax
  cvtsi2sd %rax,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x18(%rsp),%xmm2
  movsd  D108(%rip),%xmm3
  movsd  0x8(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm4
  divsd  %xmm2,%xmm3
  subsd  %xmm3,%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm1,%xmm6
  mulsd  D8(%rip),%xmm2
  maxsd  %xmm4,%xmm6
  maxsd  (%rsp),%xmm2
  movapd %xmm6,%xmm4
  movsd  %xmm2,(%rsp)
  cmp    $0x80,%r12d
  je     L92
  cmp    $0x60,%r12d
  jne    L9
  mov    %rbp,%rdi
  movsd  %xmm4,0x8(%rsp)
  call   <puts@plt>
  movsd  0x8(%rsp),%xmm4
  jmp    L9
  nopl   (%rax)
L40:
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    D103(%rip),%rax
  movq   %rax,%xmm0
  jmp    L66
L92:
  movsd  (%rsp),%xmm1
  movapd %xmm6,%xmm0
  mov    $0x2,%eax
  lea    D81(%rip),%rdi
  call   <printf@plt>
  xor    %edi,%edi
  call   <exit@plt>
  add    $0x20,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D158
type: string
name: retrieve_data
arguments: tag: D27
type: string
name: retrieve_data
arguments: tag: D32
type: string
name: retrieve_data
arguments: tag: D61
type: string
name: retrieve_data
arguments: tag: D16
type: string
name: retrieve_data
arguments: tag: D107
type: string
name: retrieve_data
arguments: tag: D98
type: string
name: retrieve_data
arguments: tag: D137
type: f32[2]
name: retrieve_data
arguments: tag: D68
type: string
name: retrieve_data
arguments: tag: D108
type: f32[2]
name: retrieve_data
arguments: tag: D136
type: byte[8]
name: retrieve_data
arguments: tag: D89
type: f32[2]
name: retrieve_data
arguments: tag: D163
type: f32[2]
name: retrieve_data
arguments: tag: D8
type: f32[2]
name: retrieve_data
arguments: tag: D103
type: f32[2]
name: retrieve_data
arguments: tag: D81
type: string

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

tool: D27: /* 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: D32: 	.byte	%d


tool: D61: 	.balign 4

tool: D16: LOCAL(div_table_clz):

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

tool: D98: 	.long	0x%X


tool: {"D137": [0.0,32.0]}

tool: D68: LOCAL(div_table):

tool: {"D108": [0.0,56.0]}

tool: {"D136": [0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f]}

tool: {"D89": [0.0,176.0]}

tool: {"D163": [0.0,1.875]}

tool: {"D8": [0.0,1.0]}

tool: {"D103": [0.0,-2.375]}

tool: D81: 	/* 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);
}
```