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

```asm
<main>:
  endbr64
  push   %r15
  mov    $0x190,%edx
  xor    %esi,%esi
  push   %r14
  push   %r13
  push   %r12
  lea    D1(%rip),%r12
  push   %rbp
  push   %rbx
  mov    $0x40,%ebx
  sub    $0x228,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x218(%rsp)
  xor    %eax,%eax
  lea    0x80(%rsp),%rbp
  lea    0xb0(%rsp),%r13
  mov    %rbp,%rdi
  lea    0x1c0(%rsp),%r14
  lea    0x30(%rsp),%r15
  call   <memset@plt>
  lea    0x60(%rsp),%rax
  fld1
  mov    %rax,0x20(%rsp)
  fld    %st(0)
  fstpt  0x80(%rsp)
  fld    %st(0)
  fstpt  0xe0(%rsp)
  flds   0xef0(%rip)        # 2014 <_fini+0xb88>
  fstpt  0x140(%rsp)
  flds   0xee7(%rip)        # 2018 <_fini+0xb8c>
  fstpt  0x1a0(%rsp)
  flds   0xede(%rip)        # 201c <_fini+0xb90>
  fstpt  0x200(%rsp)
  flds   0xec5(%rip)        # 2010 <_fini+0xb84>
  fstpt  0x120(%rsp)
  fldt   0x120(%rsp)
  fxch   %st(1)
  fld    %st(0)
  fstpt  0x10(%rsp)
  nopl   0x0(%rax)
L77:
  fldt   0x10(%rsp)
  fadds  0xeae(%rip)        # 2020 <_fini+0xb94>
  mov    %rbp,%r8
  mov    %rbp,%rax
  fld1
  fdiv   %st(1),%st
  fld    %st(0)
  fstpt  0x30(%rsp)
  fld    %st(0)
  fchs
  fld    %st(1)
  fmul   %st(1),%st
  fld    %st(0)
  fstpt  0x40(%rsp)
  fmul   %st(1),%st
  fld    %st(0)
  fstpt  0x50(%rsp)
  fmul   %st(1),%st
  fld    %st(0)
  fstpt  0x60(%rsp)
  fmulp  %st,%st(1)
  fstpt  0x70(%rsp)
  flds   0xe74(%rip)        # 2020 <_fini+0xb94>
  fdiv   %st(2),%st
  fmuls  0xe6c(%rip)        # 2020 <_fini+0xb94>
  fld    %st(0)
  fstpt  0xd0(%rsp)
  fld    %st(0)
  fstpt  0x130(%rsp)
  flds   0xe44(%rip)        # 2010 <_fini+0xb84>
  fmul   %st(1),%st
  fstpt  0x170(%rsp)
  fld    %st(4)
  fadd   %st(5),%st
  flds   0xe45(%rip)        # 2024 <_fini+0xb98>
  fmul   %st(5),%st
  fsubrp %st,%st(1)
  fstpt  0x180(%rsp)
  fld    %st(0)
  fadd   %st(1),%st
  fldt   0xf0(%rsp)
  fmuls  0xe29(%rip)        # 2024 <_fini+0xb98>
  fsubrp %st,%st(1)
  fstpt  0x190(%rsp)
  fxch   %st(4)
  fmuls  0xe04(%rip)        # 2010 <_fini+0xb84>
  fld    %st(0)
  fstpt  0x1c0(%rsp)
L53:
  fldt   0xf0(%rax)
  add    $0x10,%rax
  fadd   %st(0),%st
  fldt   0xa0(%rax)
  fmuls  0xdf7(%rip)        # 2024 <_fini+0xb98>
  fsubrp %st,%st(1)
  fstpt  0x140(%rax)
  cmp    %rax,%r13
  jne    L53
  mov    0x20(%rsp),%rsi
  mov    %r14,%rdi
L32:
  fldt   0x10(%rsi)
  mov    %rdi,%rdx
  mov    %r15,%rax
  add    $0x10,%rdx
  fldt   0x180(%r8)
  fdivrp %st,%st(1)
  fmul   %st,%st(1)
  fxch   %st(1)
  fsubrp %st,%st(2)
  fxch   %st(1)
  fstpt  (%rax)
  cmp    %rax,%rsi
  je     L12
L44:
  fldt   0x10(%rax)
  add    $0x10,%rax
  add    $0x10,%rdx
  fldt   -0x10(%rdx)
  fmul   %st(2),%st
  fsubrp %st,%st(1)
  fstpt  (%rax)
  cmp    %rax,%rsi
  jne    L44
  fstp   %st(0)
  jmp    L48
  nopl   0x0(%rax)
L12:
  fstp   %st(0)
L48:
  fldt   0x30(%rsp)
  sub    $0x10,%rsi
  sub    $0x60,%r8
  sub    $0x50,%rdi
  cmp    %r15,%rsi
  je     L76
  fldt   (%rdi)
  jmp    L32
  nopl   0x0(%rax,%rax,1)
L76:
  fnstcw 0x2e(%rsp)
  fldt   0x40(%rsp)
  flds   0xd72(%rip)        # 2028 <_fini+0xb9c>
  xor    %eax,%eax
  mov    $0x4,%esi
  movzwl 0x2e(%rsp),%edx
  fmul   %st(1),%st
  or     $0xc,%dh
  mov    %dx,0x2c(%rsp)
  fld1
  fsubrp %st,%st(4)
L5:
  mov    %rax,0x8(%rsp)
  fildll 0x8(%rsp)
  fmuls  0xd4d(%rip)        # 202c <_fini+0xba0>
  fadd   %st(1),%st
  fsubs  0xd49(%rip)        # 2030 <_fini+0xba4>
  fldcw  0x2c(%rsp)
  fistpll 0x8(%rsp)
  fldcw  0x2e(%rsp)
  mov    0x8(%rsp),%rdx
  neg    %rdx
  mov    %rdx,%rdi
  shl    $0x13,%edx
  or     %rdx,%rax
  and    $0x1fff,%edi
  mov    %rax,0x8(%rsp)
  fildll 0x8(%rsp)
  fmuls  0xd1b(%rip)        # 2034 <_fini+0xba8>
  fld    %st(2)
  fsub   %st(1),%st
  fdiv   %st(6),%st
  fmul   %st(7),%st
  fsubr  %st(4),%st
  fxch   %st(1)
  fmul   %st(5),%st
  fsubrp %st,%st(1)
  fmuls  0xd09(%rip)        # 2038 <_fini+0xbac>
  fmuls  0xd07(%rip)        # 203c <_fini+0xbb0>
  fadds  0xcf5(%rip)        # 2030 <_fini+0xba4>
  fldcw  0x2c(%rsp)
  fistpll 0x8(%rsp)
  fldcw  0x2e(%rsp)
  mov    0x8(%rsp),%rax
  and    $0x7ffff,%eax
  sub    $0x1,%esi
  jne    L5
  fstp   %st(0)
  fstp   %st(0)
  fstp   %st(0)
  fstp   %st(0)
  fstp   %st(0)
  fstp   %st(0)
  shl    $0x13,%rdi
  or     %rax,%rdi
  mov    %rdi,%rsi
  mov    %r12,%rdi
  call   <printf@plt>
  fldt   0x10(%rsp)
  fadds  0xcbe(%rip)        # 2040 <_fini+0xbb4>
  fstpt  0x10(%rsp)
  sub    $0x1,%ebx
  je     L7
  fldt   0x120(%rsp)
  fldt   0xe0(%rsp)
  jmp    L77
L7:
  mov    0x218(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L28
  add    $0x228,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L28:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_label: D1
data_type: string

tool: D1: 	.long 0x%x


assistant: ```c
int main(void) {
  long double T[5];
  long double P[5][5];
  int i, j;
  long double X0, X1, X2, S;
  long double inc = 1. / 64;
  long double D = inc * 0.5;
  long i0, i1, i2;
  memset(P, 0, sizeof(P));
  P[0][0] = 1.;
  for (i = 1; i < 5; i++)
    P[i][i] = 1 << i - 1;
  P[2][0] = -D * D;
  for (X0 = 1.; X0 < 2.; X0 += inc) {
    X1 = X0 + inc * 0.5;
    X2 = X1 + inc;
    S = D / X1;
    T[0] = 1. / X1;
    for (i = 1; i < 5; i++)
      T[i] = T[i - 1] * -T[0];
    P[1][0] = S * D;
    P[2][1] = S * D;
    for (i = 3; i < 5; i++) {
      P[i][0] = -D * D * P[i - 2][0];
      for (j = 1; j < i; j++)
        P[i][j] = 2 * P[i - 1][j - 1] - D * D * P[i - 2][j];
    }
    for (i = 4; i > 1; i--) {
      long double a = T[i] / P[i][i];
      for (j = 0; j < i; j++)
        T[j] -= a * P[i][j];
    }
    i2 = 0;
    for (i = 0, i0 = 0; i < 4; i++) {
      long double T0, Ti1;
      i1 = T[1] * 8192. + i0 / (long double)(1 << 19) - 0.5;
      i1 = -(-i1 & 0x1fff);
      Ti1 = ((unsigned)(-i1 << 19) | i0) / -(long double)(1LL << 32LL);
      T0 = T[0] - (T[1] - Ti1) / P[1][1] * P[1][0] - (X1 - 1) * Ti1;
      i0 = T0 * 512 * 1024 + 0.5;
      i0 &= 0x7ffff;
    }
    printf("\t.long 0x%x\n", (-i1 << 19) | i0);
  }
  return 0;
}
```