user: Please show me the C implementation that matches the assembly code listed below:

```asm
<frdheader>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1b0,%rsp
  mov    %rdi,-0x138(%rbp)
  mov    %rsi,-0x140(%rbp)
  mov    %rdx,-0x148(%rbp)
  mov    %rcx,-0x150(%rbp)
  mov    %r8,-0x158(%rbp)
  mov    %r9,-0x160(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x168(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x170(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0x178(%rbp)
  mov    0x28(%rbp),%rax
  mov    %rax,-0x180(%rbp)
  mov    0x30(%rbp),%rax
  mov    %rax,-0x188(%rbp)
  mov    0x38(%rbp),%rax
  mov    %rax,-0x190(%rbp)
  mov    0x40(%rbp),%rax
  mov    %rax,-0x198(%rbp)
  mov    0x48(%rbp),%rax
  mov    %rax,-0x1a0(%rbp)
  mov    0x50(%rbp),%rax
  mov    %rax,-0x1a8(%rbp)
  mov    0x58(%rbp),%rax
  mov    %rax,-0x1b0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x90(%rbp),%rax
  mov    $0xa,%edx
  lea    D439(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  movl   $0xa,-0x128(%rbp)
  jmp    L524
L194:
  mov    -0x128(%rbp),%eax
  cltq
  movb   $0x20,-0x90(%rbp,%rax,1)
  addl   $0x1,-0x128(%rbp)
L524:
  cmpl   $0x45,-0x128(%rbp)
  jle    L194
  movb   $0x0,-0x4a(%rbp)
  mov    -0x138(%rbp),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    -0x138(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x138(%rbp),%rax
  mov    (%rax),%eax
  lea    -0x90(%rbp),%rdx
  lea    0x18(%rdx),%rcx
  mov    %eax,%edx
  lea    D325(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  mov    -0x1b0(%rbp),%rax
  mov    (%rax),%eax
  lea    -0x90(%rbp),%rdx
  lea    0x24(%rdx),%rcx
  mov    %eax,%edx
  lea    D325(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  mov    -0x1a8(%rbp),%rax
  mov    (%rax),%eax
  lea    -0x90(%rbp),%rdx
  lea    0x30(%rdx),%rcx
  mov    %eax,%edx
  lea    D325(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  movb   $0x20,-0x54(%rbp)
  lea    -0x90(%rbp),%rdx
  mov    -0x198(%rbp),%rax
  lea    D485(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x2,%eax
  je     L153
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x6,%eax
  je     L153
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x7,%eax
  je     L153
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xc,%eax
  jne    L46
  mov    -0x158(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  js     L46
L153:
  lea    -0x90(%rbp),%rax
  mov    $0x8,%edx
  lea    D524(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  movl   $0x8,-0x128(%rbp)
  jmp    L329
L467:
  mov    -0x128(%rbp),%eax
  cltq
  movb   $0x20,-0x90(%rbp,%rax,1)
  addl   $0x1,-0x128(%rbp)
L329:
  cmpl   $0x45,-0x128(%rbp)
  jle    L467
  movb   $0x0,-0x4a(%rbp)
  mov    -0x140(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  lea    -0x90(%rbp),%rdx
  lea    0x18(%rdx),%rcx
  mov    %eax,%edx
  lea    D315(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  movb   $0x20,-0x6c(%rbp)
  lea    -0x90(%rbp),%rdx
  mov    -0x198(%rbp),%rax
  lea    D485(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  lea    -0x90(%rbp),%rax
  mov    $0x8,%edx
  lea    D454(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  movl   $0x8,-0x128(%rbp)
  jmp    L256
L227:
  mov    -0x128(%rbp),%eax
  cltq
  movb   $0x20,-0x90(%rbp,%rax,1)
  addl   $0x1,-0x128(%rbp)
L256:
  cmpl   $0x45,-0x128(%rbp)
  jle    L227
  movb   $0x0,-0x4a(%rbp)
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  mov    -0x150(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  mov    -0x150(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  lea    -0x90(%rbp),%rdx
  lea    0x18(%rdx),%rcx
  mov    %eax,%edx
  lea    D315(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  movb   $0x20,-0x6c(%rbp)
  lea    -0x90(%rbp),%rdx
  mov    -0x198(%rbp),%rax
  lea    D485(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  lea    -0x90(%rbp),%rax
  mov    $0x9,%edx
  lea    D297(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  movl   $0x9,-0x128(%rbp)
  jmp    L381
L585:
  mov    -0x128(%rbp),%eax
  cltq
  movb   $0x20,-0x90(%rbp,%rax,1)
  addl   $0x1,-0x128(%rbp)
L381:
  cmpl   $0x45,-0x128(%rbp)
  jle    L585
  movb   $0x0,-0x4a(%rbp)
  mov    -0x158(%rbp),%rax
  mov    (%rax),%eax
  lea    -0x90(%rbp),%rdx
  lea    0x18(%rdx),%rcx
  mov    %eax,%edx
  lea    D325(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  movb   $0x20,-0x6c(%rbp)
  lea    -0x90(%rbp),%rdx
  mov    -0x198(%rbp),%rax
  lea    D485(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  mov    -0x158(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  js     L200
  cmpq   $0x0,-0x160(%rbp)
  je     L200
  lea    -0x90(%rbp),%rax
  mov    $0x8,%edx
  lea    D406(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  movl   $0x8,-0x128(%rbp)
  jmp    L91
L218:
  mov    -0x128(%rbp),%eax
  cltq
  movb   $0x20,-0x90(%rbp,%rax,1)
  addl   $0x1,-0x128(%rbp)
L91:
  cmpl   $0x17,-0x128(%rbp)
  jle    L218
  mov    -0x160(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  lea    -0x90(%rbp),%rdx
  lea    0x18(%rdx),%rcx
  mov    %eax,%edx
  lea    D275(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  mov    -0x160(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  lea    -0x90(%rbp),%rdx
  lea    0x24(%rdx),%rcx
  mov    %eax,%edx
  lea    D275(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  mov    -0x160(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  lea    -0x90(%rbp),%rdx
  lea    0x30(%rdx),%rcx
  mov    %eax,%edx
  lea    D275(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  mov    -0x160(%rbp),%rax
  add    $0x40,%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  lea    -0x90(%rbp),%rdx
  lea    0x3c(%rdx),%rcx
  mov    %eax,%edx
  lea    D275(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  mov    -0x160(%rbp),%rax
  add    $0x48,%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  lea    -0x90(%rbp),%rdx
  lea    0x48(%rdx),%rcx
  mov    %eax,%edx
  lea    D275(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  mov    -0x160(%rbp),%rax
  add    $0x50,%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  lea    -0x90(%rbp),%rdx
  lea    0x54(%rdx),%rcx
  mov    %eax,%edx
  lea    D275(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  lea    -0x90(%rbp),%rdx
  mov    -0x198(%rbp),%rax
  lea    D485(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
L200:
  lea    -0x90(%rbp),%rax
  mov    $0xa,%edx
  lea    D234(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  movl   $0xa,-0x128(%rbp)
  jmp    L486
L314:
  mov    -0x128(%rbp),%eax
  cltq
  movb   $0x20,-0x90(%rbp,%rax,1)
  addl   $0x1,-0x128(%rbp)
L486:
  cmpl   $0x45,-0x128(%rbp)
  jle    L314
  movb   $0x0,-0x4a(%rbp)
  mov    -0x168(%rbp),%rax
  mov    (%rax),%eax
  lea    -0x90(%rbp),%rdx
  lea    0x18(%rdx),%rcx
  mov    %eax,%edx
  lea    D325(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <sprintf@plt>
  movb   $0x20,-0x6c(%rbp)
  lea    -0x90(%rbp),%rdx
  mov    -0x198(%rbp),%rax
  lea    D485(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  lea    -0x90(%rbp),%rax
  mov    $0xa,%edx
  lea    D163(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  movl   $0xa,-0x128(%rbp)
  jmp    L31
L351:
  mov    -0x128(%rbp),%eax
  cltq
  movb   $0x20,-0x90(%rbp,%rax,1)
  addl   $0x1,-0x128(%rbp)
L31:
  cmpl   $0x45,-0x128(%rbp)
  jle    L351
  movb   $0x0,-0x4a(%rbp)
  mov    -0x170(%rbp),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  lea    -0x90(%rbp),%rax
  add    $0x18,%rax
  lea    D325(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  movb   $0x20,-0x6c(%rbp)
  lea    -0x90(%rbp),%rdx
  mov    -0x198(%rbp),%rax
  lea    D485(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
L46:
  movl   $0x0,-0x128(%rbp)
  jmp    L563
L94:
  mov    -0x128(%rbp),%eax
  cltq
  movb   $0x20,-0x90(%rbp,%rax,1)
  addl   $0x1,-0x128(%rbp)
L563:
  cmpl   $0x4a,-0x128(%rbp)
  jle    L94
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  cmp    $0x1,%eax
  jne    L542
  lea    -0x90(%rbp),%rax
  mov    $0x3f,%edx
  lea    D364(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  jmp    L457
L542:
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x2,%eax
  jne    L131
  lea    -0x90(%rbp),%rax
  mov    $0x3f,%edx
  lea    D38(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  jmp    L457
L131:
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x3,%eax
  jne    L573
  lea    -0x90(%rbp),%rax
  mov    $0x3f,%edx
  lea    D0(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  jmp    L457
L573:
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x4,%eax
  je     L556
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x5,%eax
  jne    L57
L556:
  lea    -0x90(%rbp),%rax
  mov    $0x3f,%edx
  lea    D329(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  jmp    L457
L57:
  lea    -0x90(%rbp),%rax
  mov    $0x3f,%edx
  lea    D110(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
L457:
  mov    -0x178(%rbp),%rax
  mov    (%rax),%edx
  lea    -0x120(%rbp),%rax
  lea    D325(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x120(%rbp),%rax
  lea    -0x90(%rbp),%rdx
  lea    0x18(%rdx),%rcx
  mov    $0xc,%edx
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <strcpy1@plt>
  mov    -0x180(%rbp),%rax
  lea    -0x90(%rbp),%rdx
  lea    0x24(%rdx),%rcx
  mov    $0xc,%edx
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <strcpy1@plt>
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x2,%eax
  jne    L347
  lea    -0x90(%rbp),%rax
  add    $0x3f,%rax
  mov    $0x5,%edx
  lea    D271(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
L347:
  mov    -0x1a0(%rbp),%rax
  lea    D282(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp1@plt>
  test   %rax,%rax
  jne    L550
  lea    -0x90(%rbp),%rax
  add    $0x4a,%rax
  mov    $0x1,%edx
  lea    D87(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
  jmp    L397
L550:
  lea    -0x90(%rbp),%rax
  add    $0x4a,%rax
  mov    $0x1,%edx
  lea    D463(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strcpy1@plt>
L397:
  mov    -0x188(%rbp),%rax
  mov    (%rax),%eax
  lea    0x64(%rax),%edx
  lea    -0x120(%rbp),%rax
  lea    D170(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x120(%rbp),%rax
  lea    -0x90(%rbp),%rdx
  lea    0x7(%rdx),%rcx
  mov    $0x5,%edx
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <strcpy1@plt>
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comisd %xmm1,%xmm0
  jae    L364
  mov    -0x190(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x2,%eax
  jne    L393
L364:
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D275(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L393:
  mov    -0x148(%rbp),%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <log10@plt>
  test   %eax,%eax
  js     L599
  mov    -0x148(%rbp),%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <log10@plt>
  cmp    $0x9,%eax
  jg     L599
  mov    -0x148(%rbp),%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <log10@plt>
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D238(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,%edi
  call   <floor@plt>
  mov    %eax,%edx
  mov    $0xa,%eax
  sub    %edx,%eax
  mov    %eax,-0x124(%rbp)
  cmpl   $0x0,-0x124(%rbp)
  jne    L558
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D374(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L558:
  cmpl   $0x1,-0x124(%rbp)
  jne    L272
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D150(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L272:
  cmpl   $0x2,-0x124(%rbp)
  jne    L59
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D250(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L59:
  cmpl   $0x3,-0x124(%rbp)
  jne    L146
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D426(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L146:
  cmpl   $0x4,-0x124(%rbp)
  jne    L427
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D522(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L427:
  cmpl   $0x5,-0x124(%rbp)
  jne    L198
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D186(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L198:
  cmpl   $0x6,-0x124(%rbp)
  jne    L217
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D203(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L217:
  cmpl   $0x7,-0x124(%rbp)
  jne    L165
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D383(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L165:
  cmpl   $0x8,-0x124(%rbp)
  jne    L177
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D207(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L177:
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D101(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L258
L599:
  mov    -0x148(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%edx
  lea    -0x120(%rbp),%rax
  lea    D275(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
L258:
  lea    -0x120(%rbp),%rax
  lea    -0x90(%rbp),%rdx
  lea    0xc(%rdx),%rcx
  mov    $0xc,%edx
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <strcpy1@plt>
  mov    -0x188(%rbp),%rax
  mov    (%rax),%edx
  lea    -0x120(%rbp),%rax
  lea    D170(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x120(%rbp),%rax
  lea    -0x90(%rbp),%rdx
  lea    0x3a(%rdx),%rcx
  mov    $0x5,%edx
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <strcpy1@plt>
  movb   $0x0,-0x45(%rbp)
  lea    -0x90(%rbp),%rdx
  mov    -0x198(%rbp),%rax
  lea    D485(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L242
  call   <__stack_chk_fail@plt>
L242:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D439
type_infered: string
name: disassemble_data
arguments: tag: D325
type_infered: string
name: disassemble_data
arguments: tag: D485
type_infered: string
name: disassemble_data
arguments: tag: D524
type_infered: string
name: disassemble_data
arguments: tag: D315
type_infered: string
name: disassemble_data
arguments: tag: D454
type_infered: string
name: disassemble_data
arguments: tag: D297
type_infered: string
name: disassemble_data
arguments: tag: D406
type_infered: string
name: disassemble_data
arguments: tag: D275
type_infered: string
name: disassemble_data
arguments: tag: D234
type_infered: string
name: disassemble_data
arguments: tag: D163
type_infered: string
name: disassemble_data
arguments: tag: D364
type_infered: string
name: disassemble_data
arguments: tag: D38
type_infered: string
name: disassemble_data
arguments: tag: D0
type_infered: string
name: disassemble_data
arguments: tag: D329
type_infered: string
name: disassemble_data
arguments: tag: D110
type_infered: string
name: disassemble_data
arguments: tag: D271
type_infered: string
name: disassemble_data
arguments: tag: D282
type_infered: string
name: disassemble_data
arguments: tag: D87
type_infered: string
name: disassemble_data
arguments: tag: D463
type_infered: string
name: disassemble_data
arguments: tag: D170
type_infered: string
name: disassemble_data
arguments: tag: D238
type_infered: f64
name: disassemble_data
arguments: tag: D374
type_infered: string
name: disassemble_data
arguments: tag: D150
type_infered: string
name: disassemble_data
arguments: tag: D250
type_infered: string
name: disassemble_data
arguments: tag: D426
type_infered: string
name: disassemble_data
arguments: tag: D522
type_infered: string
name: disassemble_data
arguments: tag: D186
type_infered: string
name: disassemble_data
arguments: tag: D203
type_infered: string
name: disassemble_data
arguments: tag: D383
type_infered: string
name: disassemble_data
arguments: tag: D207
type_infered: string
name: disassemble_data
arguments: tag: D101
type_infered: string

tool: D439:     1PSTEP

tool: D325: %12d

tool: D485: %s


tool: D524:     1PGM

tool: D315: %12.6E

tool: D454:     1PGK

tool: D297:     1PHID

tool: D406:     1PAX

tool: D275: %12.5E

tool: D234:     1PSUBC

tool: D163:     1PMODE

tool: D364:   100CL       .00000E+00                                 0    1

tool: D38:   100CL       .00000E+00                                 2    1

tool: D0:   100CL       .00000E+00                                 4    1

tool: D329:   100CL       .00000E+00                                 1    1

tool: D110:   100CL       .00000E+00                                 3    1

tool: D271: MODAL

tool: D282: asc

tool: D87: 1

tool: D463: 2

tool: D170: %5d

tool: D238: 1

tool: D374: %12.0f

tool: D150: %12.1f

tool: D250: %12.2f

tool: D426: %12.3f

tool: D522: %12.4f

tool: D186: %12.5f

tool: D203: %12.6f

tool: D383: %12.7f

tool: D207: %12.8f

tool: D101: %12.9f

assistant: ```c
void frdheader(int *icounter, double *oner, double *time, double *pi, int *noddiam, double *cs, int *null, int *mode, int *noutloc, char *description, int *kode, int *nmethod, FILE *f1, char *output, int *istep, int *iinc) {
  char tmp[132], text[132];
  int i, ncomma;
  strcpy1(&text[0], "    1PSTEP", 10);
  for (i = 10; i < 70; i++)
    text[i] = ' ';
  text[70] = '\0';
  (*icounter)++;
  sprintf(&text[24],
          "%12"
          "d"
          "",
          *icounter);
  sprintf(&text[36],
          "%12"
          "d"
          "",
          *iinc);
  sprintf(&text[48],
          "%12"
          "d"
          "",
          *istep);
  text[60] = ' ';
  fprintf(f1, "%s\n", text);
  if ((*nmethod == 2) || (*nmethod == 6) || (*nmethod == 7) || ((*nmethod == 12) && (*noddiam > -1))) {
    strcpy1(&text[0], "    1PGM", 8);
    for (i = 8; i < 70; i++)
      text[i] = ' ';
    text[70] = '\0';
    sprintf(&text[24], "%12.6E", *oner);
    text[36] = ' ';
    fprintf(f1, "%s\n", text);
    strcpy1(&text[0], "    1PGK", 8);
    for (i = 8; i < 70; i++)
      text[i] = ' ';
    text[70] = '\0';
    sprintf(&text[24], "%12.6E", (*time * 2. * *pi) * (*time * 2. * *pi));
    text[36] = ' ';
    fprintf(f1, "%s\n", text);
    strcpy1(&text[0], "    1PHID", 9);
    for (i = 9; i < 70; i++)
      text[i] = ' ';
    text[70] = '\0';
    sprintf(&text[24],
            "%12"
            "d"
            "",
            *noddiam);
    text[36] = ' ';
    fprintf(f1, "%s\n", text);
    if ((*noddiam >= 0) && (cs != NULL)) {
      strcpy1(&text[0], "    1PAX", 8);
      for (i = 8; i < 24; i++)
        text[i] = ' ';
      sprintf(&text[24], "%12.5E", cs[5]);
      sprintf(&text[36], "%12.5E", cs[6]);
      sprintf(&text[48], "%12.5E", cs[7]);
      sprintf(&text[60], "%12.5E", cs[8]);
      sprintf(&text[72], "%12.5E", cs[9]);
      sprintf(&text[84], "%12.5E", cs[10]);
      fprintf(f1, "%s\n", text);
    }
    strcpy1(&text[0], "    1PSUBC", 10);
    for (i = 10; i < 70; i++)
      text[i] = ' ';
    text[70] = '\0';
    sprintf(&text[24],
            "%12"
            "d"
            "",
            *null);
    text[36] = ' ';
    fprintf(f1, "%s\n", text);
    strcpy1(&text[0], "    1PMODE", 10);
    for (i = 10; i < 70; i++)
      text[i] = ' ';
    text[70] = '\0';
    sprintf(&text[24],
            "%12"
            "d"
            "",
            *mode + 1);
    text[36] = ' ';
    fprintf(f1, "%s\n", text);
  }
  for (i = 0; i < 75; i++)
    text[i] = ' ';
  if (abs(*nmethod) == 1) {
    strcpy1(&text[0], "  100CL       .00000E+00                                 0    1", 63);
  } else if (*nmethod == 2) {
    strcpy1(&text[0], "  100CL       .00000E+00                                 2    1", 63);
  } else if (*nmethod == 3) {
    strcpy1(&text[0], "  100CL       .00000E+00                                 4    1", 63);
  } else if ((*nmethod == 4) || (*nmethod == 5)) {
    strcpy1(&text[0], "  100CL       .00000E+00                                 1    1", 63);
  } else {
    strcpy1(&text[0], "  100CL       .00000E+00                                 3    1", 63);
  }
  sprintf(tmp,
          "%12"
          "d"
          "",
          *noutloc);
  strcpy1(&text[24], tmp, 12);
  strcpy1(&text[36], description, 12);
  if (*nmethod == 2)
    strcpy1(&text[63], "MODAL", 5);
  if (strcmp1(output, "asc") == 0) {
    strcpy1(&text[74], "1", 1);
  } else {
    strcpy1(&text[74], "2", 1);
  }
  sprintf(tmp,
          "%5"
          "d"
          "",
          100 + (*kode));
  strcpy1(&text[7], tmp, 5);
  if ((*time <= 0.) || (*nmethod == 2)) {
    sprintf(tmp, "%12.5E", *time);
  } else if ((log10(*time) >= 0) && (log10(*time) < 10.)) {
    ncomma = 10 - floor(log10(*time) + 1.);
    if (ncomma == 0) {
      sprintf(tmp, "%12.0f", *time);
    } else if (ncomma == 1) {
      sprintf(tmp, "%12.1f", *time);
    } else if (ncomma == 2) {
      sprintf(tmp, "%12.2f", *time);
    } else if (ncomma == 3) {
      sprintf(tmp, "%12.3f", *time);
    } else if (ncomma == 4) {
      sprintf(tmp, "%12.4f", *time);
    } else if (ncomma == 5) {
      sprintf(tmp, "%12.5f", *time);
    } else if (ncomma == 6) {
      sprintf(tmp, "%12.6f", *time);
    } else if (ncomma == 7) {
      sprintf(tmp, "%12.7f", *time);
    } else if (ncomma == 8) {
      sprintf(tmp, "%12.8f", *time);
    } else {
      sprintf(tmp, "%12.9f", *time);
    }
  } else {
    sprintf(tmp, "%12.5E", *time);
  }
  strcpy1(&text[12], tmp, 12);
  sprintf(tmp,
          "%5"
          "d"
          "",
          *kode);
  strcpy1(&text[58], tmp, 5);
  text[75] = '\0';
  fprintf(f1, "%s\n", text);
}
```