user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<gen_outputtest>:
  endbr64
  push   %r12
  lea    D178(%rip),%rdi
  lea    D30(%rip),%r12
  push   %rbp
  lea    D26(%rip),%rbp
  push   %rbx
  xor    %ebx,%ebx
  call   <puts@plt>
  lea    D6(%rip),%rdi
  call   <puts@plt>
  lea    D154(%rip),%rdi
  call   <puts@plt>
  lea    D29(%rip),%rdi
  call   <puts@plt>
  lea    D90(%rip),%rdi
  call   <puts@plt>
  lea    D2(%rip),%rdi
  call   <puts@plt>
  lea    D52(%rip),%rdi
  call   <puts@plt>
  lea    D120(%rip),%rdi
  call   <puts@plt>
  lea    D8(%rip),%rdi
  call   <puts@plt>
  nopl   0x0(%rax)
L13:
  mov    %ebx,%edx
  mov    %ebx,%esi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x1(%rbx),%edx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  add    $0x2,%ebx
  call   <printf@plt>
  cmp    $0x40,%ebx
  jne    L13
  xor    %ebx,%ebx
  lea    D118(%rip),%rbp
  lea    D87(%rip),%r12
  jmp    L15
  nop
L9:
  mov    %ebx,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  add    $0x2,%ebx
  call   <printf@plt>
  cmp    $0x40,%ebx
  je     L3
L15:
  test   $0xf,%bl
  jne    L9
  mov    %ebx,%esi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L9
  nopw   0x0(%rax,%rax,1)
L3:
  lea    D105(%rip),%rdi
  xor    %ebx,%ebx
  lea    D32(%rip),%r12
  call   <puts@plt>
  lea    D112(%rip),%rdi
  lea    D121(%rip),%rbp
  call   <puts@plt>
  lea    D58(%rip),%rdi
  call   <puts@plt>
  lea    D166(%rip),%rdi
  call   <puts@plt>
L14:
  mov    %ebx,%edx
  mov    %ebx,%esi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %ebx,%edx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  add    $0x2,%ebx
  call   <printf@plt>
  cmp    $0x40,%ebx
  jne    L14
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D178
type_guessed: string
name: unpack_data
arguments: data_tag: D30
type_guessed: string
name: unpack_data
arguments: data_tag: D26
type_guessed: string
name: unpack_data
arguments: data_tag: D6
type_guessed: string
name: unpack_data
arguments: data_tag: D154
type_guessed: string
name: unpack_data
arguments: data_tag: D29
type_guessed: string
name: unpack_data
arguments: data_tag: D90
type_guessed: string
name: unpack_data
arguments: data_tag: D2
type_guessed: string
name: unpack_data
arguments: data_tag: D52
type_guessed: string
name: unpack_data
arguments: data_tag: D120
type_guessed: string
name: unpack_data
arguments: data_tag: D8
type_guessed: string
name: unpack_data
arguments: data_tag: D118
type_guessed: string
name: unpack_data
arguments: data_tag: D87
type_guessed: string
name: unpack_data
arguments: data_tag: D105
type_guessed: string
name: unpack_data
arguments: data_tag: D32
type_guessed: string
name: unpack_data
arguments: data_tag: D112
type_guessed: string
name: unpack_data
arguments: data_tag: D121
type_guessed: string
name: unpack_data
arguments: data_tag: D58
type_guessed: string
name: unpack_data
arguments: data_tag: D166
type_guessed: string

tool: D178: // Output test program

tool: D30: .output O%d_L	%d


tool: D26: .output O%d_R	%d


tool: D6: #include "vu.mac"

tool: D154: .parm VU 0 stereopeak

tool: D29: .gpr VUTMP

tool: D90: .gpr TMP

tool: D2: .gpr TMP_L

tool: D52: .gpr TMP_R

tool: D120: .send TEST_L 0

tool: D8: .send TEST_R 1

tool: D118: .parm OUT%d	0		stereo


tool: D87: .parm G%x		0		group


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

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


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

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


tool: D58: VU(VU_L, TMP_L)

tool: D166: VU(VU_R, TMP_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);
  }
}
```