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

```asm
<test_func>:
  endbr64
  sub    $0x8,%rsp
  lea    D12(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L43
L7:
  lea    D83(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L161
L111:
  lea    D88(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L109
L36:
  lea    D67(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L65
L55:
  lea    D19(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L8
L50:
  lea    D63(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L38
L51:
  lea    D1(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L139
L113:
  lea    D89(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L61
L121:
  lea    D99(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L181
L114:
  lea    D91(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L162
  add    $0x8,%rsp
  ret
  nop
L43:
  mov    $0x51,%edi
  call   <fail_test@plt>
  jmp    L7
  nop
L162:
  mov    $0x5a,%edi
  add    $0x8,%rsp
  jmp    1070 <fail_test@plt>
  xchg   %ax,%ax
L181:
  mov    $0x59,%edi
  call   <fail_test@plt>
  jmp    L114
  nopl   0x0(%rax)
L61:
  mov    $0x58,%edi
  call   <fail_test@plt>
  jmp    L121
  nopl   0x0(%rax)
L139:
  mov    $0x57,%edi
  call   <fail_test@plt>
  jmp    L113
  nop
L38:
  mov    $0x56,%edi
  call   <fail_test@plt>
  jmp    L51
  nop
L8:
  mov    $0x55,%edi
  call   <fail_test@plt>
  jmp    L50
  nop
L65:
  mov    $0x54,%edi
  call   <fail_test@plt>
  jmp    L55
  nop
L109:
  mov    $0x53,%edi
  call   <fail_test@plt>
  jmp    L36
  nop
L161:
  mov    $0x52,%edi
  call   <fail_test@plt>
  jmp    L111
```

tool_calls: name: retrieve_data
arguments: label: D12
type: string
name: retrieve_data
arguments: label: D83
type: string
name: retrieve_data
arguments: label: D88
type: string
name: retrieve_data
arguments: label: D67
type: string
name: retrieve_data
arguments: label: D19
type: string
name: retrieve_data
arguments: label: D63
type: string
name: retrieve_data
arguments: label: D1
type: string
name: retrieve_data
arguments: label: D89
type: string
name: retrieve_data
arguments: label: D99
type: string
name: retrieve_data
arguments: label: D91
type: string

tool: D12: test/progs/func_basic.b

tool: D83: test/progs/func_calls_basic.b

tool: D88: test/progs/func_redecl_err.b

tool: D67: test/progs/func_unknown_res_type_err.b

tool: D19: test/progs/func_bad_res_type_err.b

tool: D63: test/progs/func_unexp_ret_stmt_err.b

tool: D1: test/progs/func_missing_res_type_err.b

tool: D89: test/progs/func_missing_ret_stmt_err.b

tool: D99: test/progs/func_missing_ret_stmt_2_err.b

tool: D91: 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);
}
```