user: 请将以下的汇编代码转换成C语言代码：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x1b8,%rsp
  mov    %edi,-0x1b4(%rbp)
  mov    %rsi,-0x1c0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  movl   $0x5b,-0x1a4(%rbp)
  movl   $0x2d,-0x1a0(%rbp)
  movl   $0x2d,-0x19c(%rbp)
  mov    -0x1a4(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x198(%rbp)
  mov    -0x1a0(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x190(%rbp)
  mov    -0x19c(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x188(%rbp)
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x180(%rbp)
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  imul   -0x19c(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x178(%rbp)
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  imul   -0x19c(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x170(%rbp)
  lea    D38(%rip),%rax
  mov    %rax,%rsi
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x168(%rbp)
  cmpq   $0x0,-0x168(%rbp)
  jne    L201
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  call   <perror@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L201:
  movl   $0x0,-0x1a8(%rbp)
  jmp    L127
L61:
  mov    -0x168(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  je     L170
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x198(%rbp),%rax
  lea    (%rdx,%rax,1),%rbx
  lea    -0x120(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <strtod@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x1a8(%rbp)
L127:
  mov    -0x1a8(%rbp),%eax
  cmp    -0x1a4(%rbp),%eax
  jl     L61
  jmp    L119
L170:
  nop
L119:
  movl   $0x0,-0x1a8(%rbp)
  jmp    L284
L358:
  mov    -0x168(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  je     L73
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  lea    (%rdx,%rax,1),%rbx
  lea    -0x120(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <strtod@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x1a8(%rbp)
L284:
  mov    -0x1a8(%rbp),%eax
  cmp    -0x1a0(%rbp),%eax
  jl     L358
  jmp    L257
L73:
  nop
L257:
  movl   $0x0,-0x1a8(%rbp)
  jmp    L135
L487:
  mov    -0x168(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  je     L96
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x188(%rbp),%rax
  lea    (%rdx,%rax,1),%rbx
  lea    -0x120(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <strtod@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x1a8(%rbp)
L135:
  mov    -0x1a8(%rbp),%eax
  cmp    -0x19c(%rbp),%eax
  jl     L487
  jmp    L431
L96:
  nop
L431:
  movl   $0x0,-0x1a8(%rbp)
  jmp    L45
L484:
  mov    -0x168(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  je     L37
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x180(%rbp),%rax
  lea    (%rdx,%rax,1),%rbx
  lea    -0x120(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <strtod@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x1a8(%rbp)
L45:
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  cmp    %eax,-0x1a8(%rbp)
  jl     L484
  jmp    L115
L37:
  nop
L115:
  movl   $0x0,-0x1a8(%rbp)
  jmp    L7
L324:
  mov    -0x168(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  je     L518
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x178(%rbp),%rax
  lea    (%rdx,%rax,1),%rbx
  lea    -0x120(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <strtod@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x1a8(%rbp)
L7:
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  imul   -0x19c(%rbp),%eax
  cmp    %eax,-0x1a8(%rbp)
  jl     L324
  jmp    L314
L518:
  nop
L314:
  movl   $0x0,-0x1a8(%rbp)
  jmp    L294
L534:
  mov    -0x168(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  je     L227
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x170(%rbp),%rax
  lea    (%rdx,%rax,1),%rbx
  lea    -0x120(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <strtod@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x1a8(%rbp)
L294:
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  imul   -0x19c(%rbp),%eax
  cmp    %eax,-0x1a8(%rbp)
  jl     L534
  jmp    L15
L227:
  nop
L15:
  mov    -0x168(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x19c(%rbp),%ecx
  mov    -0x1a0(%rbp),%edx
  mov    -0x1a4(%rbp),%eax
  mov    %eax,%esi
  lea    D327(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x1a4(%rbp),%eax
  mov    %eax,%esi
  lea    D230(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
  movl   $0x0,-0x1a8(%rbp)
  jmp    L247
L300:
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  lea    -0x160(%rbp),%rax
  movq   %rdx,%xmm0
  lea    D110(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x1a4(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x1a8(%rbp)
  jge    L521
  lea    -0x160(%rbp),%rax
  lea    D56(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L521:
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  lea    -0x160(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %ebx,%eax
  cmp    $0x6e,%eax
  jle    L138
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
L138:
  lea    -0x160(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  addl   $0x1,-0x1a8(%rbp)
L247:
  mov    -0x1a8(%rbp),%eax
  cmp    -0x1a4(%rbp),%eax
  jl     L300
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  test   %eax,%eax
  je     L39
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L39:
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x1a0(%rbp),%eax
  mov    %eax,%esi
  lea    D61(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
  movl   $0x0,-0x1a8(%rbp)
  jmp    L519
L106:
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x190(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  lea    -0x160(%rbp),%rax
  movq   %rdx,%xmm0
  lea    D110(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x1a0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x1a8(%rbp)
  jge    L326
  lea    -0x160(%rbp),%rax
  lea    D56(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L326:
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  lea    -0x160(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %ebx,%eax
  cmp    $0x6e,%eax
  jle    L189
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
L189:
  lea    -0x160(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  addl   $0x1,-0x1a8(%rbp)
L519:
  mov    -0x1a8(%rbp),%eax
  cmp    -0x1a0(%rbp),%eax
  jl     L106
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  test   %eax,%eax
  je     L8
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L8:
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x19c(%rbp),%eax
  mov    %eax,%esi
  lea    D201(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
  movl   $0x0,-0x1a8(%rbp)
  jmp    L116
L9:
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x188(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  lea    -0x160(%rbp),%rax
  movq   %rdx,%xmm0
  lea    D110(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x19c(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x1a8(%rbp)
  jge    L368
  lea    -0x160(%rbp),%rax
  lea    D56(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L368:
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  lea    -0x160(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %ebx,%eax
  cmp    $0x6e,%eax
  jle    L5
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
L5:
  lea    -0x160(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  addl   $0x1,-0x1a8(%rbp)
L116:
  mov    -0x1a8(%rbp),%eax
  cmp    -0x19c(%rbp),%eax
  jl     L9
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  test   %eax,%eax
  je     L111
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L111:
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  mov    %eax,%esi
  lea    D124(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
  movl   $0x0,-0x1a8(%rbp)
  jmp    L175
L133:
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x180(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  lea    -0x160(%rbp),%rax
  movq   %rdx,%xmm0
  lea    D110(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x1a8(%rbp)
  jge    L77
  lea    -0x160(%rbp),%rax
  lea    D56(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L77:
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  lea    -0x160(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %ebx,%eax
  cmp    $0x6e,%eax
  jle    L162
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
L162:
  lea    -0x160(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  addl   $0x1,-0x1a8(%rbp)
L175:
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  cmp    %eax,-0x1a8(%rbp)
  jl     L133
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  test   %eax,%eax
  je     L421
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L421:
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  imul   -0x19c(%rbp),%eax
  mov    %eax,%esi
  lea    D207(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
  movl   $0x0,-0x1a8(%rbp)
  jmp    L204
L471:
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x178(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  lea    -0x160(%rbp),%rax
  movq   %rdx,%xmm0
  lea    D110(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  imul   -0x19c(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x1a8(%rbp)
  jge    L43
  lea    -0x160(%rbp),%rax
  lea    D56(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L43:
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  lea    -0x160(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %ebx,%eax
  cmp    $0x6e,%eax
  jle    L274
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
L274:
  lea    -0x160(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  addl   $0x1,-0x1a8(%rbp)
L204:
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  imul   -0x19c(%rbp),%eax
  cmp    %eax,-0x1a8(%rbp)
  jl     L471
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  test   %eax,%eax
  je     L180
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L180:
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  imul   -0x19c(%rbp),%eax
  mov    %eax,%esi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
  movl   $0x0,-0x1a8(%rbp)
  jmp    L282
L292:
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x170(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  lea    -0x160(%rbp),%rax
  movq   %rdx,%xmm0
  lea    D110(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  imul   -0x19c(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x1a8(%rbp)
  jge    L192
  lea    -0x160(%rbp),%rax
  lea    D56(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
L192:
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  lea    -0x160(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %ebx,%eax
  cmp    $0x6e,%eax
  jle    L66
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movb   $0x0,-0x120(%rbp)
L66:
  lea    -0x160(%rbp),%rdx
  lea    -0x120(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  addl   $0x1,-0x1a8(%rbp)
L282:
  mov    -0x1a4(%rbp),%eax
  imul   -0x1a0(%rbp),%eax
  imul   -0x19c(%rbp),%eax
  cmp    %eax,-0x1a8(%rbp)
  jl     L292
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  test   %eax,%eax
  je     L450
  lea    -0x120(%rbp),%rax
  mov    %rax,%rsi
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L450:
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  mov    -0x18(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L156
  call   <__stack_chk_fail@plt>
L156:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D38
data_type: string
name: disassemble_data
arguments: label: D25
data_type: string
name: disassemble_data
arguments: label: D327
data_type: string
name: disassemble_data
arguments: label: D230
data_type: string
name: disassemble_data
arguments: label: D110
data_type: string
name: disassemble_data
arguments: label: D56
data_type: string
name: disassemble_data
arguments: label: D26
data_type: string
name: disassemble_data
arguments: label: D235
data_type: string
name: disassemble_data
arguments: label: D61
data_type: string
name: disassemble_data
arguments: label: D201
data_type: string
name: disassemble_data
arguments: label: D124
data_type: string
name: disassemble_data
arguments: label: D207
data_type: string
name: disassemble_data
arguments: label: D70
data_type: string

tool: D38: r

tool: D25: gsw_data_v3_0.dat

tool: D327: static int	gsw_nx=%d, gsw_ny=%d, gsw_nz=%d;


tool: D230: static double	longs_ref[%d] = {


tool: D110: %.17g

tool: D56: ,

tool: D26: 	%s


tool: D235: 	};

tool: D61: static double	lats_ref[%d] = {


tool: D201: static double	p_ref[%d] = {


tool: D124: static double	ndepth_ref[%d] = {


tool: D207: static double	saar_ref[%d] = {


tool: D70: static double	delta_sa_ref[%d] = {


assistant: ```c
int main(int argc, char **argv) {
  int nx = 91, ny = 45, nz = 45;
  int i;
  double *longs_ref, *lats_ref, *p_ref, *ndepth_ref, *saar_ref, *delta_sa_ref;
  FILE *fin;
  char buf[256], b[64], *pC;
  longs_ref = malloc(nx * sizeof(double));
  lats_ref = malloc(ny * sizeof(double));
  p_ref = malloc(nz * sizeof(double));
  ndepth_ref = malloc(nx * ny * sizeof(double));
  saar_ref = malloc(nx * ny * nz * sizeof(double));
  delta_sa_ref = malloc(nx * ny * nz * sizeof(double));
  if ((fin = fopen("gsw_data_v3_0.dat", "r")) == NULL) {
    perror("gsw_data_v3_0.dat");
    exit(1);
  }
  for (i = 0; i < nx; i++) {
    if (fgets(buf, sizeof(buf), fin) == NULL)
      break;
    longs_ref[i] = strtod(buf, NULL);
  }
  for (i = 0; i < ny; i++) {
    if (fgets(buf, sizeof(buf), fin) == NULL)
      break;
    lats_ref[i] = strtod(buf, NULL);
  }
  for (i = 0; i < nz; i++) {
    if (fgets(buf, sizeof(buf), fin) == NULL)
      break;
    p_ref[i] = strtod(buf, NULL);
  }
  for (i = 0; i < nx * ny; i++) {
    if (fgets(buf, sizeof(buf), fin) == NULL)
      break;
    ndepth_ref[i] = strtod(buf, NULL);
  }
  for (i = 0; i < nx * ny * nz; i++) {
    if (fgets(buf, sizeof(buf), fin) == NULL)
      break;
    saar_ref[i] = strtod(buf, NULL);
  }
  for (i = 0; i < nx * ny * nz; i++) {
    if (fgets(buf, sizeof(buf), fin) == NULL)
      break;
    delta_sa_ref[i] = strtod(buf, NULL);
  }
  fclose(fin);
  printf("static int\tgsw_nx=%d, gsw_ny=%d, gsw_nz=%d;\n", nx, ny, nz);
  printf("static double\tlongs_ref[%d] = {\n", nx);
  buf[0] = '\0';
  for (i = 0; i < nx; i++) {
    sprintf(b, "%.17g", longs_ref[i]);
    if (i < (nx - 1))
      strcat(b, ",");
    if (strlen(buf) + strlen(b) > 110) {
      printf("\t%s\n", buf);
      buf[0] = '\0';
    }
    strcat(buf, b);
  }
  if (strlen(buf) != 0)
    printf("\t%s\n", buf);
  printf("\t};\n");
  printf("static double\tlats_ref[%d] = {\n", ny);
  buf[0] = '\0';
  for (i = 0; i < ny; i++) {
    sprintf(b, "%.17g", lats_ref[i]);
    if (i < (ny - 1))
      strcat(b, ",");
    if (strlen(buf) + strlen(b) > 110) {
      printf("\t%s\n", buf);
      buf[0] = '\0';
    }
    strcat(buf, b);
  }
  if (strlen(buf) != 0)
    printf("\t%s\n", buf);
  printf("\t};\n");
  printf("static double\tp_ref[%d] = {\n", nz);
  buf[0] = '\0';
  for (i = 0; i < nz; i++) {
    sprintf(b, "%.17g", p_ref[i]);
    if (i < (nz - 1))
      strcat(b, ",");
    if (strlen(buf) + strlen(b) > 110) {
      printf("\t%s\n", buf);
      buf[0] = '\0';
    }
    strcat(buf, b);
  }
  if (strlen(buf) != 0)
    printf("\t%s\n", buf);
  printf("\t};\n");
  printf("static double\tndepth_ref[%d] = {\n", nx * ny);
  buf[0] = '\0';
  for (i = 0; i < nx * ny; i++) {
    sprintf(b, "%.17g", ndepth_ref[i]);
    if (i < (nx * ny - 1))
      strcat(b, ",");
    if (strlen(buf) + strlen(b) > 110) {
      printf("\t%s\n", buf);
      buf[0] = '\0';
    }
    strcat(buf, b);
  }
  if (strlen(buf) != 0)
    printf("\t%s\n", buf);
  printf("\t};\n");
  printf("static double\tsaar_ref[%d] = {\n", nx * ny * nz);
  buf[0] = '\0';
  for (i = 0; i < nx * ny * nz; i++) {
    sprintf(b, "%.17g", saar_ref[i]);
    if (i < (nx * ny * nz - 1))
      strcat(b, ",");
    if (strlen(buf) + strlen(b) > 110) {
      printf("\t%s\n", buf);
      buf[0] = '\0';
    }
    strcat(buf, b);
  }
  if (strlen(buf) != 0)
    printf("\t%s\n", buf);
  printf("\t};\n");
  printf("static double\tdelta_sa_ref[%d] = {\n", nx * ny * nz);
  buf[0] = '\0';
  for (i = 0; i < nx * ny * nz; i++) {
    sprintf(b, "%.17g", delta_sa_ref[i]);
    if (i < (nx * ny * nz - 1))
      strcat(b, ",");
    if (strlen(buf) + strlen(b) > 110) {
      printf("\t%s\n", buf);
      buf[0] = '\0';
    }
    strcat(buf, b);
  }
  if (strlen(buf) != 0)
    printf("\t%s\n", buf);
  printf("\t};\n");
  return (0);
}
```