user: 下面的汇编指令对应的C源代码是什么：

```asm
<test_func>:
  endbr64
  sub    $0x8,%rsp
  lea    D50(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L148
L132:
  lea    D95(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L180
L134:
  lea    D27(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L83
L40:
  lea    D82(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L109
L87:
  lea    D33(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L1
L118:
  lea    D43(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L42
L76:
  lea    D75(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L168
L17:
  lea    D0(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L61
L159:
  lea    D8(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L62
L183:
  lea    D62(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L77
  add    $0x8,%rsp
  ret
  nop
L148:
  mov    $0x51,%edi
  call   <fail_test@plt>
  jmp    L132
  nop
L77:
  mov    $0x5a,%edi
  add    $0x8,%rsp
  jmp    1070 <fail_test@plt>
  xchg   %ax,%ax
L62:
  mov    $0x59,%edi
  call   <fail_test@plt>
  jmp    L183
  nopl   0x0(%rax)
L61:
  mov    $0x58,%edi
  call   <fail_test@plt>
  jmp    L159
  nopl   0x0(%rax)
L168:
  mov    $0x57,%edi
  call   <fail_test@plt>
  jmp    L17
  nop
L42:
  mov    $0x56,%edi
  call   <fail_test@plt>
  jmp    L76
  nop
L1:
  mov    $0x55,%edi
  call   <fail_test@plt>
  jmp    L118
  nop
L109:
  mov    $0x54,%edi
  call   <fail_test@plt>
  jmp    L87
  nop
L83:
  mov    $0x53,%edi
  call   <fail_test@plt>
  jmp    L40
  nop
L180:
  mov    $0x52,%edi
  call   <fail_test@plt>
  jmp    L134
```

tool_calls: name: unpack_data
arguments: label: D50
type: string
name: unpack_data
arguments: label: D95
type: string
name: unpack_data
arguments: label: D27
type: string
name: unpack_data
arguments: label: D82
type: string
name: unpack_data
arguments: label: D33
type: string
name: unpack_data
arguments: label: D43
type: string
name: unpack_data
arguments: label: D75
type: string
name: unpack_data
arguments: label: D0
type: string
name: unpack_data
arguments: label: D8
type: string
name: unpack_data
arguments: label: D62
type: string

tool: D50: test/progs/func_basic.b

tool: D95: test/progs/func_calls_basic.b

tool: D27: test/progs/func_redecl_err.b

tool: D82: test/progs/func_unknown_res_type_err.b

tool: D33: test/progs/func_bad_res_type_err.b

tool: D43: test/progs/func_unexp_ret_stmt_err.b

tool: D75: test/progs/func_missing_res_type_err.b

tool: D0: test/progs/func_missing_ret_stmt_err.b

tool: D8: test/progs/func_missing_ret_stmt_2_err.b

tool: D62: test/progs/func_stmt_exceeded_err.b

assistant: ```c
void test_func() {
  do {
    if (run("test/progs/"
            "func_basic.b"))
      fail_test(81);
    ;
  } while (0);
  do {
    if (run("test/progs/"
            "func_calls_basic.b"))
      fail_test(82);
    ;
  } while (0);
  do {
    if (!run("test/progs/"
             "func_redecl_err.b"))
      fail_test(83);
    ;
  } while (0);
  do {
    if (!run("test/progs/"
             "func_unknown_res_type_err.b"))
      fail_test(84);
    ;
  } while (0);
  do {
    if (!run("test/progs/"
             "func_bad_res_type_err.b"))
      fail_test(85);
    ;
  } while (0);
  do {
    if (!run("test/progs/"
             "func_unexp_ret_stmt_err.b"))
      fail_test(86);
    ;
  } while (0);
  do {
    if (!run("test/progs/"
             "func_missing_res_type_err.b"))
      fail_test(87);
    ;
  } while (0);
  do {
    if (!run("test/progs/"
             "func_missing_ret_stmt_err.b"))
      fail_test(88);
    ;
  } while (0);
  do {
    if (!run("test/progs/"
             "func_missing_ret_stmt_2_err.b"))
      fail_test(89);
    ;
  } while (0);
  do {
    if (!run("test/progs/"
             "func_stmt_exceeded_err.b"))
      fail_test(90);
    ;
  } while (0);
}
```