user: What is the c source code of the assembly code below:

```asm
<gen_outputtest>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  lea    D126(%rip),%rdi
  call   <puts@plt>
  lea    D104(%rip),%rdi
  call   <puts@plt>
  lea    D78(%rip),%rdi
  call   <puts@plt>
  lea    D12(%rip),%rdi
  call   <puts@plt>
  lea    D6(%rip),%rdi
  call   <puts@plt>
  lea    D98(%rip),%rdi
  call   <puts@plt>
  lea    D60(%rip),%rdi
  call   <puts@plt>
  lea    D55(%rip),%rdi
  call   <puts@plt>
  lea    D40(%rip),%rdi
  call   <puts@plt>
  mov    $0x0,%ebx
  lea    D23(%rip),%r12
  lea    D169(%rip),%rbp
L18:
  mov    %ebx,%edx
  mov    %ebx,%esi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x1(%rbx),%edx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x2,%ebx
  cmp    $0x40,%ebx
  jne    L18
  mov    $0x0,%ebx
  lea    D97(%rip),%r12
  lea    D148(%rip),%rbp
  jmp    L57
L47:
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x2,%ebx
  cmp    $0x40,%ebx
  je     L49
L57:
  test   $0xf,%bl
  jne    L47
  mov    %ebx,%esi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L47
L49:
  lea    D54(%rip),%rdi
  call   <puts@plt>
  lea    D132(%rip),%rdi
  call   <puts@plt>
  lea    D83(%rip),%rdi
  call   <puts@plt>
  lea    D73(%rip),%rdi
  call   <puts@plt>
  mov    $0x0,%ebx
  lea    D189(%rip),%r12
  lea    D71(%rip),%rbp
L43:
  mov    %ebx,%edx
  mov    %ebx,%esi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%edx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x2,%ebx
  cmp    $0x40,%ebx
  jne    L43
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D126
type_guessed: string
name: retrieve_data
arguments: tag: D104
type_guessed: string
name: retrieve_data
arguments: tag: D78
type_guessed: string
name: retrieve_data
arguments: tag: D12
type_guessed: string
name: retrieve_data
arguments: tag: D6
type_guessed: string
name: retrieve_data
arguments: tag: D98
type_guessed: string
name: retrieve_data
arguments: tag: D60
type_guessed: string
name: retrieve_data
arguments: tag: D55
type_guessed: string
name: retrieve_data
arguments: tag: D40
type_guessed: string
name: retrieve_data
arguments: tag: D23
type_guessed: string
name: retrieve_data
arguments: tag: D169
type_guessed: string
name: retrieve_data
arguments: tag: D97
type_guessed: string
name: retrieve_data
arguments: tag: D148
type_guessed: string
name: retrieve_data
arguments: tag: D54
type_guessed: string
name: retrieve_data
arguments: tag: D132
type_guessed: string
name: retrieve_data
arguments: tag: D83
type_guessed: string
name: retrieve_data
arguments: tag: D73
type_guessed: string
name: retrieve_data
arguments: tag: D189
type_guessed: string
name: retrieve_data
arguments: tag: D71
type_guessed: string

tool: D126: // Output test program

tool: D104: #include "vu.mac"

tool: D78: .parm VU 0 stereopeak

tool: D12: .gpr VUTMP

tool: D6: .gpr TMP

tool: D98: .gpr TMP_L

tool: D60: .gpr TMP_R

tool: D55: .send TEST_L 0

tool: D40: .send TEST_R 1

tool: D23: .output O%d_L	%d


tool: D169: .output O%d_R	%d


tool: D97: .parm G%x		0		group


tool: D148: .parm OUT%d	0		stereo


tool: D54: ACC3(TMP_L, TEST_L, 0, 0)

tool: D132: ACC3(TMP_R, TEST_R, 0, 0)

tool: D83: VU(VU_L, TMP_L)

tool: D73: VU(VU_R, TMP_R)

tool: D189: MACS(O%d_L, 0, TMP_L, OUT%d_L)


tool: D71: MACS(O%d_R, 0, TMP_R, OUT%d_R)


assistant: ```c
void gen_outputtest(void) {
  int i;
  printf("// Output test program\n");
  printf("#include \"vu.mac\"\n");
  printf(".parm VU 0 stereopeak\n");
  printf(".gpr VUTMP\n");
  printf(".gpr TMP\n");
  printf(".gpr TMP_L\n");
  printf(".gpr TMP_R\n");
  printf(".send TEST_L 0\n");
  printf(".send TEST_R 1\n");
  for (i = 0; i < 64; i += 2) {
    printf(".output O%d_L	%d\n", i, i);
    printf(".output O%d_R	%d\n", i, i + 1);
  }
  for (i = 0; i < 64; i += 2) {
    if (!(i % 16))
      printf(".parm G%x		0		group\n", i);
    printf(".parm OUT%d	0		stereo\n", i);
  }
  printf("ACC3(TMP_L, TEST_L, 0, 0)\n");
  printf("ACC3(TMP_R, TEST_R, 0, 0)\n");
  printf("VU(VU_L, TMP_L)\n");
  printf("VU(VU_R, TMP_R)\n");
  for (i = 0; i < 64; i += 2) {
    printf("MACS(O%d_L, 0, TMP_L, OUT%d_L)\n", i, i);
    printf("MACS(O%d_R, 0, TMP_R, OUT%d_R)\n", i, i);
  }
}
```