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

```asm
<print_buffers>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x120,%rsp
  mov    %rdi,-0xf8(%rbp)
  mov    %rsi,-0x100(%rbp)
  mov    %rdx,-0x108(%rbp)
  mov    %rcx,-0x110(%rbp)
  mov    %r8,-0x118(%rbp)
  mov    %r9,-0x120(%rbp)
  mov    -0xf8(%rbp),%rax
  lea    D54(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0xf0(%rbp)
  jmp    L976
L511:
  movl   $0x0,-0xec(%rbp)
  jmp    L1043
L107:
  movl   $0x0,-0xe8(%rbp)
  jmp    L643
L958:
  movl   $0x0,-0xe4(%rbp)
  jmp    L1072
L432:
  movl   $0x0,-0xe0(%rbp)
  jmp    L365
L750:
  movl   $0x0,-0xdc(%rbp)
  jmp    L719
L158:
  movl   $0x0,-0xd8(%rbp)
  jmp    L1049
L908:
  movl   $0x0,-0xd4(%rbp)
  jmp    L314
L368:
  movl   $0x0,-0xd0(%rbp)
  jmp    L21
L457:
  mov    -0xdc(%rbp),%r9d
  mov    -0xe0(%rbp),%r8d
  mov    -0xe4(%rbp),%ecx
  mov    -0xe8(%rbp),%edx
  mov    -0xec(%rbp),%esi
  mov    -0xf0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x60(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    0x48(%rbp),%edi
  push   %rdi
  mov    -0xd0(%rbp),%edi
  push   %rdi
  mov    -0xd4(%rbp),%edi
  push   %rdi
  mov    -0xd8(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Blocal_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rcx
  mov    -0x108(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  movq   %rcx,%xmm0
  lea    D14(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  addl   $0x1,-0xd0(%rbp)
L21:
  mov    -0xd0(%rbp),%eax
  cmp    0x58(%rbp),%eax
  jl     L457
  addl   $0x1,-0xd4(%rbp)
L314:
  mov    -0xd4(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L368
  addl   $0x1,-0xd8(%rbp)
L1049:
  mov    -0xd8(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L908
  addl   $0x1,-0xdc(%rbp)
L719:
  mov    -0xdc(%rbp),%eax
  cmp    0x60(%rbp),%eax
  jl     L158
  addl   $0x1,-0xe0(%rbp)
L365:
  mov    -0xe0(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L750
  addl   $0x1,-0xe4(%rbp)
L1072:
  mov    -0xe4(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L432
  addl   $0x1,-0xe8(%rbp)
L643:
  mov    -0xe8(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L958
  addl   $0x1,-0xec(%rbp)
L1043:
  mov    -0xec(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L107
  addl   $0x1,-0xf0(%rbp)
L976:
  mov    -0xf0(%rbp),%eax
  cmp    0x68(%rbp),%eax
  jl     L511
  movl   $0x0,-0xcc(%rbp)
  jmp    L981
L785:
  movl   $0x0,-0xc8(%rbp)
  jmp    L978
L294:
  movl   $0x0,-0xc4(%rbp)
  jmp    L254
L642:
  movl   $0x0,-0xc0(%rbp)
  jmp    L359
L1023:
  movl   $0x0,-0xbc(%rbp)
  jmp    L647
L490:
  movl   $0x0,-0xb8(%rbp)
  jmp    L268
L590:
  movl   $0x0,-0xb4(%rbp)
  jmp    L895
L356:
  movl   $0x0,-0xb0(%rbp)
  jmp    L771
L445:
  movl   $0x0,-0xac(%rbp)
  jmp    L865
L673:
  mov    -0xb8(%rbp),%r9d
  mov    -0xbc(%rbp),%r8d
  mov    -0xc0(%rbp),%ecx
  mov    -0xc4(%rbp),%edx
  mov    -0xc8(%rbp),%esi
  mov    -0xcc(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x60(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    0x48(%rbp),%edi
  push   %rdi
  mov    -0xac(%rbp),%edi
  push   %rdi
  mov    -0xb0(%rbp),%edi
  push   %rdi
  mov    -0xb4(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Blocal_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x110(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rcx
  mov    -0x118(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  movq   %rcx,%xmm0
  lea    D14(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  addl   $0x1,-0xac(%rbp)
L865:
  mov    -0xac(%rbp),%eax
  cmp    0x58(%rbp),%eax
  jl     L673
  addl   $0x1,-0xb0(%rbp)
L771:
  mov    -0xb0(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L445
  addl   $0x1,-0xb4(%rbp)
L895:
  mov    -0xb4(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L356
  addl   $0x1,-0xb8(%rbp)
L268:
  mov    -0xb8(%rbp),%eax
  cmp    0x60(%rbp),%eax
  jl     L590
  addl   $0x1,-0xbc(%rbp)
L647:
  mov    -0xbc(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L490
  addl   $0x1,-0xc0(%rbp)
L359:
  mov    -0xc0(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L1023
  addl   $0x1,-0xc4(%rbp)
L254:
  mov    -0xc4(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L642
  addl   $0x1,-0xc8(%rbp)
L978:
  mov    -0xc8(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L294
  addl   $0x1,-0xcc(%rbp)
L981:
  mov    -0xcc(%rbp),%eax
  cmp    0x68(%rbp),%eax
  jl     L785
  movl   $0x0,-0xa8(%rbp)
  jmp    L701
L429:
  movl   $0x0,-0xa4(%rbp)
  jmp    L80
L729:
  movl   $0x0,-0xa0(%rbp)
  jmp    L321
L544:
  movl   $0x0,-0x9c(%rbp)
  jmp    L400
L1005:
  movl   $0x0,-0x98(%rbp)
  jmp    L117
L197:
  movl   $0x0,-0x94(%rbp)
  jmp    L36
L786:
  movl   $0x0,-0x90(%rbp)
  jmp    L308
L863:
  movl   $0x0,-0x8c(%rbp)
  jmp    L1091
L652:
  movl   $0x0,-0x88(%rbp)
  jmp    L507
L315:
  movl   $0x0,-0x84(%rbp)
  jmp    L535
L1098:
  mov    -0x8c(%rbp),%r9d
  mov    -0x90(%rbp),%r8d
  mov    -0x94(%rbp),%ecx
  mov    -0xa0(%rbp),%edx
  mov    -0xa4(%rbp),%esi
  mov    -0x84(%rbp),%eax
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x60(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    0x48(%rbp),%edi
  push   %rdi
  mov    -0xa8(%rbp),%edi
  push   %rdi
  mov    -0x88(%rbp),%edi
  push   %rdi
  mov    -0x98(%rbp),%edi
  push   %rdi
  mov    -0x9c(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Bdouble_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x120(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%rax
  movq   %rdx,%xmm0
  mov    0x10(%rbp),%rdx
  lea    D14(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  addl   $0x1,-0x84(%rbp)
L535:
  mov    -0x84(%rbp),%eax
  cmp    0x68(%rbp),%eax
  jl     L1098
  addl   $0x1,-0x88(%rbp)
L507:
  mov    -0x88(%rbp),%eax
  cmp    0x60(%rbp),%eax
  jl     L315
  addl   $0x1,-0x8c(%rbp)
L1091:
  mov    -0x8c(%rbp),%eax
  cmp    0x60(%rbp),%eax
  jl     L652
  addl   $0x1,-0x90(%rbp)
L308:
  mov    -0x90(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L863
  addl   $0x1,-0x94(%rbp)
L36:
  mov    -0x94(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L786
  addl   $0x1,-0x98(%rbp)
L117:
  mov    -0x98(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L197
  addl   $0x1,-0x9c(%rbp)
L400:
  mov    -0x9c(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L1005
  addl   $0x1,-0xa0(%rbp)
L321:
  mov    -0xa0(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L544
  addl   $0x1,-0xa4(%rbp)
L80:
  mov    -0xa4(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L729
  addl   $0x1,-0xa8(%rbp)
L701:
  mov    -0xa8(%rbp),%eax
  cmp    0x58(%rbp),%eax
  jl     L429
  movl   $0x0,-0x80(%rbp)
  jmp    L276
L370:
  movl   $0x0,-0x7c(%rbp)
  jmp    L569
L1048:
  movl   $0x0,-0x78(%rbp)
  jmp    L471
L151:
  movl   $0x0,-0x74(%rbp)
  jmp    L257
L589:
  movl   $0x0,-0x70(%rbp)
  jmp    L575
L343:
  movl   $0x0,-0x6c(%rbp)
  jmp    L637
L548:
  movl   $0x0,-0x68(%rbp)
  jmp    L902
L211:
  movl   $0x0,-0x64(%rbp)
  jmp    L51
L506:
  movl   $0x0,-0x60(%rbp)
  jmp    L137
L505:
  movl   $0x0,-0x5c(%rbp)
  jmp    L831
L218:
  mov    -0x64(%rbp),%r9d
  mov    -0x68(%rbp),%r8d
  mov    -0x6c(%rbp),%ecx
  mov    -0x78(%rbp),%edx
  mov    -0x7c(%rbp),%esi
  mov    -0x5c(%rbp),%eax
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x60(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    0x48(%rbp),%edi
  push   %rdi
  mov    -0x80(%rbp),%edi
  push   %rdi
  mov    -0x60(%rbp),%edi
  push   %rdi
  mov    -0x70(%rbp),%edi
  push   %rdi
  mov    -0x74(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Bdouble_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rcx
  mov    0x20(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  movq   %rcx,%xmm0
  lea    D14(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  addl   $0x1,-0x5c(%rbp)
L831:
  mov    -0x5c(%rbp),%eax
  cmp    0x68(%rbp),%eax
  jl     L218
  addl   $0x1,-0x60(%rbp)
L137:
  mov    -0x60(%rbp),%eax
  cmp    0x60(%rbp),%eax
  jl     L505
  addl   $0x1,-0x64(%rbp)
L51:
  mov    -0x64(%rbp),%eax
  cmp    0x60(%rbp),%eax
  jl     L506
  addl   $0x1,-0x68(%rbp)
L902:
  mov    -0x68(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L211
  addl   $0x1,-0x6c(%rbp)
L637:
  mov    -0x6c(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L548
  addl   $0x1,-0x70(%rbp)
L575:
  mov    -0x70(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L343
  addl   $0x1,-0x74(%rbp)
L257:
  mov    -0x74(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L589
  addl   $0x1,-0x78(%rbp)
L471:
  mov    -0x78(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L151
  addl   $0x1,-0x7c(%rbp)
L569:
  mov    -0x7c(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L1048
  addl   $0x1,-0x80(%rbp)
L276:
  mov    -0x80(%rbp),%eax
  cmp    0x58(%rbp),%eax
  jl     L370
  movl   $0x0,-0x58(%rbp)
  jmp    L688
L1106:
  movl   $0x0,-0x54(%rbp)
  jmp    L752
L872:
  movl   $0x0,-0x50(%rbp)
  jmp    L452
L845:
  movl   $0x0,-0x4c(%rbp)
  jmp    L546
L329:
  movl   $0x0,-0x48(%rbp)
  jmp    L126
L1135:
  movl   $0x0,-0x44(%rbp)
  jmp    L190
L651:
  movl   $0x0,-0x40(%rbp)
  jmp    L957
L740:
  movl   $0x0,-0x3c(%rbp)
  jmp    L775
L1000:
  movl   $0x0,-0x38(%rbp)
  jmp    L428
L577:
  movl   $0x0,-0x34(%rbp)
  jmp    L34
L973:
  mov    -0x3c(%rbp),%r9d
  mov    -0x40(%rbp),%r8d
  mov    -0x44(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x54(%rbp),%esi
  mov    -0x34(%rbp),%eax
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x60(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    0x48(%rbp),%edi
  push   %rdi
  mov    -0x58(%rbp),%edi
  push   %rdi
  mov    -0x38(%rbp),%edi
  push   %rdi
  mov    -0x48(%rbp),%edi
  push   %rdi
  mov    -0x4c(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Bdouble_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rsi
  mov    -0x50(%rbp),%r9d
  mov    -0x54(%rbp),%r8d
  mov    -0x34(%rbp),%ecx
  mov    0x30(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0x58(%rbp),%edi
  push   %rdi
  mov    -0x38(%rbp),%edi
  push   %rdi
  mov    -0x48(%rbp),%edi
  push   %rdi
  mov    -0x4c(%rbp),%edi
  push   %rdi
  mov    -0x3c(%rbp),%edi
  push   %rdi
  mov    -0x40(%rbp),%edi
  push   %rdi
  mov    -0x44(%rbp),%edi
  push   %rdi
  movq   %rsi,%xmm0
  lea    D38(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  add    $0x40,%rsp
  addl   $0x1,-0x34(%rbp)
L34:
  mov    -0x34(%rbp),%eax
  cmp    0x68(%rbp),%eax
  jl     L973
  addl   $0x1,-0x38(%rbp)
L428:
  mov    -0x38(%rbp),%eax
  cmp    0x60(%rbp),%eax
  jl     L577
  addl   $0x1,-0x3c(%rbp)
L775:
  mov    -0x3c(%rbp),%eax
  cmp    0x60(%rbp),%eax
  jl     L1000
  addl   $0x1,-0x40(%rbp)
L957:
  mov    -0x40(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L740
  addl   $0x1,-0x44(%rbp)
L190:
  mov    -0x44(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L651
  addl   $0x1,-0x48(%rbp)
L126:
  mov    -0x48(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L1135
  addl   $0x1,-0x4c(%rbp)
L546:
  mov    -0x4c(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L329
  addl   $0x1,-0x50(%rbp)
L452:
  mov    -0x50(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L845
  addl   $0x1,-0x54(%rbp)
L752:
  mov    -0x54(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L872
  addl   $0x1,-0x58(%rbp)
L688:
  mov    -0x58(%rbp),%eax
  cmp    0x58(%rbp),%eax
  jl     L1106
  movl   $0x0,-0x30(%rbp)
  jmp    L206
L970:
  movl   $0x0,-0x2c(%rbp)
  jmp    L1012
L64:
  movl   $0x0,-0x28(%rbp)
  jmp    L614
L322:
  movl   $0x0,-0x24(%rbp)
  jmp    L28
L672:
  movl   $0x0,-0x20(%rbp)
  jmp    L1151
L237:
  movl   $0x0,-0x1c(%rbp)
  jmp    L522
L311:
  movl   $0x0,-0x18(%rbp)
  jmp    L108
L838:
  movl   $0x0,-0x14(%rbp)
  jmp    L1141
L656:
  movl   $0x0,-0x10(%rbp)
  jmp    L1142
L1146:
  movl   $0x0,-0xc(%rbp)
  jmp    L830
L762:
  mov    -0x14(%rbp),%r9d
  mov    -0x18(%rbp),%r8d
  mov    -0x1c(%rbp),%ecx
  mov    -0x28(%rbp),%edx
  mov    -0x2c(%rbp),%esi
  mov    -0xc(%rbp),%eax
  mov    0x58(%rbp),%edi
  push   %rdi
  mov    0x60(%rbp),%edi
  push   %rdi
  mov    0x50(%rbp),%edi
  push   %rdi
  mov    0x48(%rbp),%edi
  push   %rdi
  mov    -0x30(%rbp),%edi
  push   %rdi
  mov    -0x10(%rbp),%edi
  push   %rdi
  mov    -0x20(%rbp),%edi
  push   %rdi
  mov    -0x24(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <Bdouble_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rsi
  mov    -0x28(%rbp),%r9d
  mov    -0x2c(%rbp),%r8d
  mov    -0xc(%rbp),%ecx
  mov    0x40(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0x30(%rbp),%edi
  push   %rdi
  mov    -0x10(%rbp),%edi
  push   %rdi
  mov    -0x20(%rbp),%edi
  push   %rdi
  mov    -0x24(%rbp),%edi
  push   %rdi
  mov    -0x14(%rbp),%edi
  push   %rdi
  mov    -0x18(%rbp),%edi
  push   %rdi
  mov    -0x1c(%rbp),%edi
  push   %rdi
  movq   %rsi,%xmm0
  lea    D38(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  add    $0x40,%rsp
  addl   $0x1,-0xc(%rbp)
L830:
  mov    -0xc(%rbp),%eax
  cmp    0x68(%rbp),%eax
  jl     L762
  addl   $0x1,-0x10(%rbp)
L1142:
  mov    -0x10(%rbp),%eax
  cmp    0x60(%rbp),%eax
  jl     L1146
  addl   $0x1,-0x14(%rbp)
L1141:
  mov    -0x14(%rbp),%eax
  cmp    0x60(%rbp),%eax
  jl     L656
  addl   $0x1,-0x18(%rbp)
L108:
  mov    -0x18(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L838
  addl   $0x1,-0x1c(%rbp)
L522:
  mov    -0x1c(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L311
  addl   $0x1,-0x20(%rbp)
L1151:
  mov    -0x20(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L237
  addl   $0x1,-0x24(%rbp)
L28:
  mov    -0x24(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L672
  addl   $0x1,-0x28(%rbp)
L614:
  mov    -0x28(%rbp),%eax
  cmp    0x50(%rbp),%eax
  jl     L322
  addl   $0x1,-0x2c(%rbp)
L1012:
  mov    -0x2c(%rbp),%eax
  cmp    0x48(%rbp),%eax
  jl     L64
  addl   $0x1,-0x30(%rbp)
L206:
  mov    -0x30(%rbp),%eax
  cmp    0x58(%rbp),%eax
  jl     L970
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D54
data_type: string
name: parse_data
arguments: data_label: D14
data_type: string
name: parse_data
arguments: data_label: D38
data_type: string

tool: D54: w

tool: D14: %s = %lf


tool: D38: %s = %lf - (t=%d,iCprime=%d,iSprime=%d,kCprime=%d,kSprime=%d,x=%d,jCprime=%d,jSprime=%d,x2=%d,m=%d)


assistant: ```c
void print_buffers(char *file_name, const double *B1_Blocal_re, char *B1_Blocal_re_name, const double *B1_Blocal_im, char *B1_Blocal_im_name, const double *B1_Bsingle_re, char *B1_Bsingle_re_name, const double *B1_Bsingle_im, char *B1_Bsingle_im_name, const double *B1_Bdouble_re, char *B1_Bdouble_re_name, const double *B1_Bdouble_im, char *B1_Bdouble_im_name, const int Nc, const int Ns, const int Nsrc, const int Vsnk, const int Nt, const int Nw) {
  FILE *f = fopen(file_name, "w");
  for (int t = 0; t < Nt; t++)
    for (int iCprime = 0; iCprime < Nc; iCprime++)
      for (int iSprime = 0; iSprime < Ns; iSprime++)
        for (int kCprime = 0; kCprime < Nc; kCprime++)
          for (int kSprime = 0; kSprime < Ns; kSprime++)
            for (int x = 0; x < Vsnk; x++)
              for (int jCprime = 0; jCprime < Nc; jCprime++)
                for (int jSprime = 0; jSprime < Ns; jSprime++)
                  for (int m = 0; m < Nsrc; m++)
                    fprintf(f, "%s = %lf\n", B1_Blocal_re_name, B1_Blocal_re[Blocal_index(t, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, m, Nc, Ns, Vsnk, Nsrc)]);
  for (int t = 0; t < Nt; t++)
    for (int iCprime = 0; iCprime < Nc; iCprime++)
      for (int iSprime = 0; iSprime < Ns; iSprime++)
        for (int kCprime = 0; kCprime < Nc; kCprime++)
          for (int kSprime = 0; kSprime < Ns; kSprime++)
            for (int x = 0; x < Vsnk; x++)
              for (int jCprime = 0; jCprime < Nc; jCprime++)
                for (int jSprime = 0; jSprime < Ns; jSprime++)
                  for (int m = 0; m < Nsrc; m++)
                    fprintf(f, "%s = %lf\n", B1_Blocal_im_name, B1_Blocal_im[Blocal_index(t, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, m, Nc, Ns, Vsnk, Nsrc)]);
  for (int m = 0; m < Nsrc; m++)
    for (int iCprime = 0; iCprime < Nc; iCprime++)
      for (int iSprime = 0; iSprime < Ns; iSprime++)
        for (int jCprime = 0; jCprime < Nc; jCprime++)
          for (int jSprime = 0; jSprime < Ns; jSprime++)
            for (int kCprime = 0; kCprime < Nc; kCprime++)
              for (int kSprime = 0; kSprime < Ns; kSprime++)
                for (int x = 0; x < Vsnk; x++)
                  for (int x2 = 0; x2 < Vsnk; x2++)
                    for (int t = 0; t < Nt; t++)
                      fprintf(f, "%s = %lf\n", B1_Bsingle_re_name, B1_Bsingle_re[Bdouble_index(t, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, x2, m, Nc, Ns, Vsnk, Nsrc)]);
  for (int m = 0; m < Nsrc; m++)
    for (int iCprime = 0; iCprime < Nc; iCprime++)
      for (int iSprime = 0; iSprime < Ns; iSprime++)
        for (int jCprime = 0; jCprime < Nc; jCprime++)
          for (int jSprime = 0; jSprime < Ns; jSprime++)
            for (int kCprime = 0; kCprime < Nc; kCprime++)
              for (int kSprime = 0; kSprime < Ns; kSprime++)
                for (int x = 0; x < Vsnk; x++)
                  for (int x2 = 0; x2 < Vsnk; x2++)
                    for (int t = 0; t < Nt; t++)
                      fprintf(f, "%s = %lf\n", B1_Bsingle_im_name, B1_Bsingle_im[Bdouble_index(t, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, x2, m, Nc, Ns, Vsnk, Nsrc)]);
  for (int m = 0; m < Nsrc; m++)
    for (int iCprime = 0; iCprime < Nc; iCprime++)
      for (int iSprime = 0; iSprime < Ns; iSprime++)
        for (int jCprime = 0; jCprime < Nc; jCprime++)
          for (int jSprime = 0; jSprime < Ns; jSprime++)
            for (int kCprime = 0; kCprime < Nc; kCprime++)
              for (int kSprime = 0; kSprime < Ns; kSprime++)
                for (int x = 0; x < Vsnk; x++)
                  for (int x2 = 0; x2 < Vsnk; x2++)
                    for (int t = 0; t < Nt; t++)
                      fprintf(f, "%s = %lf - (t=%d,iCprime=%d,iSprime=%d,kCprime=%d,kSprime=%d,x=%d,jCprime=%d,jSprime=%d,x2=%d,m=%d)\n", B1_Bdouble_re_name, B1_Bdouble_re[Bdouble_index(t, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, x2, m, Nc, Ns, Vsnk, Nsrc)], t, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, x2, m);
  for (int m = 0; m < Nsrc; m++)
    for (int iCprime = 0; iCprime < Nc; iCprime++)
      for (int iSprime = 0; iSprime < Ns; iSprime++)
        for (int jCprime = 0; jCprime < Nc; jCprime++)
          for (int jSprime = 0; jSprime < Ns; jSprime++)
            for (int kCprime = 0; kCprime < Nc; kCprime++)
              for (int kSprime = 0; kSprime < Ns; kSprime++)
                for (int x = 0; x < Vsnk; x++)
                  for (int x2 = 0; x2 < Vsnk; x2++)
                    for (int t = 0; t < Nt; t++)
                      fprintf(f, "%s = %lf - (t=%d,iCprime=%d,iSprime=%d,kCprime=%d,kSprime=%d,x=%d,jCprime=%d,jSprime=%d,x2=%d,m=%d)\n", B1_Bdouble_im_name, B1_Bdouble_im[Bdouble_index(t, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, x2, m, Nc, Ns, Vsnk, Nsrc)], t, iCprime, iSprime, kCprime, kSprime, x, jCprime, jSprime, x2, m);
  fclose(f);
}
```