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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x420,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x414(%rbp)
  jmp    L118
L135:
  mov    -0x414(%rbp),%eax
  sub    $0x63,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D142(%rip),%xmm1
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%edx
  mov    D69(%rip),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  mov    -0x414(%rbp),%edx
  movslq %edx,%rdx
  mov    %rax,-0x410(%rbp,%rdx,8)
  addl   $0x1,-0x414(%rbp)
L118:
  cmpl   $0x63,-0x414(%rbp)
  jle    L135
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x410(%rbp)
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x0,-0x414(%rbp)
  jmp    L110
L59:
  mov    -0x414(%rbp),%eax
  and    $0x7,%eax
  test   %eax,%eax
  jne    L119
  mov    $0xa,%edi
  call   <putchar@plt>
L119:
  mov    -0x414(%rbp),%eax
  cltq
  mov    -0x410(%rbp,%rax,8),%rax
  movq   %rax,%xmm0
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  addl   $0x1,-0x414(%rbp)
L110:
  cmpl   $0x63,-0x414(%rbp)
  jle    L59
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x414(%rbp)
  jmp    L41
L146:
  mov    -0x414(%rbp),%eax
  sub    $0xf,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D69(%rip),%xmm1
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%edx
  mov    D69(%rip),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  mov    -0x414(%rbp),%edx
  movslq %edx,%rdx
  mov    %rax,-0x410(%rbp,%rdx,8)
  addl   $0x1,-0x414(%rbp)
L41:
  cmpl   $0xf,-0x414(%rbp)
  jle    L146
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x410(%rbp)
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x0,-0x414(%rbp)
  jmp    L111
L61:
  mov    -0x414(%rbp),%eax
  and    $0x7,%eax
  test   %eax,%eax
  jne    L70
  mov    $0xa,%edi
  call   <putchar@plt>
L70:
  mov    -0x414(%rbp),%eax
  cltq
  mov    -0x410(%rbp,%rax,8),%rax
  movq   %rax,%xmm0
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  addl   $0x1,-0x414(%rbp)
L111:
  cmpl   $0xf,-0x414(%rbp)
  jle    L61
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x414(%rbp)
  jmp    L130
L48:
  mov    $0x1,%eax
  sub    -0x414(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D145(%rip),%xmm1
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%edx
  mov    D37(%rip),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D91(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  mov    -0x414(%rbp),%eax
  cltq
  movsd  %xmm0,-0x410(%rbp,%rax,8)
  addl   $0x1,-0x414(%rbp)
L130:
  cmpl   $0x1f,-0x414(%rbp)
  jle    L48
  lea    D103(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x0,-0x414(%rbp)
  jmp    L93
L79:
  mov    -0x414(%rbp),%eax
  and    $0x7,%eax
  test   %eax,%eax
  jne    L99
  mov    $0xa,%edi
  call   <putchar@plt>
L99:
  mov    -0x414(%rbp),%eax
  cltq
  mov    -0x410(%rbp,%rax,8),%rax
  movq   %rax,%xmm0
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  addl   $0x1,-0x414(%rbp)
L93:
  cmpl   $0x1f,-0x414(%rbp)
  jle    L79
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L127
  call   <__stack_chk_fail@plt>
L127:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D142
type: f64
name: disassemble_data
arguments: tag: D69
type: f64
name: disassemble_data
arguments: tag: D13
type: string
name: disassemble_data
arguments: tag: D17
type: string
name: disassemble_data
arguments: tag: D0
type: string
name: disassemble_data
arguments: tag: D77
type: string
name: disassemble_data
arguments: tag: D145
type: f64
name: disassemble_data
arguments: tag: D37
type: f64
name: disassemble_data
arguments: tag: D91
type: f64
name: disassemble_data
arguments: tag: D103
type: string

tool: D142: 10

tool: D69: 2

tool: D13: double __FM4Op_gains[99] = {

tool: D17: %lf,

tool: D0: };

tool: D77: double __FM4Op_susLevels[16] = {

tool: D145: 5

tool: D37: 5.7

tool: D91: 6

tool: D103: double __FM4Op_attTimes[16] = {

assistant: ```c
void main() {
  int i, j;
  double temp;
  double data[128];
  for (i = 0; i < 100; i++) {
    data[i] = pow(2.0, -(99 - i) / 10.0);
  }
  data[0] = 0.0;
  printf("double __FM4Op_gains[99] = {");
  for (i = 0; i < 100; i++) {
    if (i % 8 == 0)
      printf("\n");
    printf("%lf,", data[i]);
  }
  printf("};\n");
  for (i = 0; i < 16; i++) {
    data[i] = pow(2.0, -(15 - i) / 2.0);
  }
  data[0] = 0.0;
  printf("double __FM4Op_susLevels[16] = {");
  for (i = 0; i < 16; i++) {
    if (i % 8 == 0)
      printf("\n");
    printf("%lf,", data[i]);
  }
  printf("};\n");
  for (i = 0; i < 32; i++) {
    data[i] = 6.0 * pow(5.7, -(i - 1) / 5.0);
  }
  printf("double __FM4Op_attTimes[16] = {");
  for (i = 0; i < 32; i++) {
    if (i % 8 == 0)
      printf("\n");
    printf("%lf,", data[i]);
  }
  printf("};\n");
  exit(1);
}
```