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

```asm
<test_func>:
  endbr64
  sub    $0x8,%rsp
  lea    D4(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L74
L19:
  lea    D91(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L100
L65:
  lea    D54(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L145
L94:
  lea    D90(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L127
L51:
  lea    D55(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L155
L42:
  lea    D94(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L192
L118:
  lea    D13(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L40
L139:
  lea    D74(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L54
L167:
  lea    D78(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L198
L5:
  lea    D27(%rip),%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L197
L163:
  add    $0x8,%rsp
  ret
L74:
  mov    $0x51,%edi
  call   <fail_test@plt>
  jmp    L19
L100:
  mov    $0x52,%edi
  call   <fail_test@plt>
  jmp    L65
L145:
  mov    $0x53,%edi
  call   <fail_test@plt>
  jmp    L94
L127:
  mov    $0x54,%edi
  call   <fail_test@plt>
  jmp    L51
L155:
  mov    $0x55,%edi
  call   <fail_test@plt>
  jmp    L42
L192:
  mov    $0x56,%edi
  call   <fail_test@plt>
  jmp    L118
L40:
  mov    $0x57,%edi
  call   <fail_test@plt>
  jmp    L139
L54:
  mov    $0x58,%edi
  call   <fail_test@plt>
  jmp    L167
L198:
  mov    $0x59,%edi
  call   <fail_test@plt>
  jmp    L5
L197:
  mov    $0x5a,%edi
  call   <fail_test@plt>
  jmp    L163
```

tool_calls: name: retrieve_data
arguments: data_label: D4
data_type: string
name: retrieve_data
arguments: data_label: D91
data_type: string
name: retrieve_data
arguments: data_label: D54
data_type: string
name: retrieve_data
arguments: data_label: D90
data_type: string
name: retrieve_data
arguments: data_label: D55
data_type: string
name: retrieve_data
arguments: data_label: D94
data_type: string
name: retrieve_data
arguments: data_label: D13
data_type: string
name: retrieve_data
arguments: data_label: D74
data_type: string
name: retrieve_data
arguments: data_label: D78
data_type: string
name: retrieve_data
arguments: data_label: D27
data_type: string

tool: D4: test/progs/func_basic.b

tool: D91: test/progs/func_calls_basic.b

tool: D54: test/progs/func_redecl_err.b

tool: D90: test/progs/func_unknown_res_type_err.b

tool: D55: test/progs/func_bad_res_type_err.b

tool: D94: test/progs/func_unexp_ret_stmt_err.b

tool: D13: test/progs/func_missing_res_type_err.b

tool: D74: test/progs/func_missing_ret_stmt_err.b

tool: D78: test/progs/func_missing_ret_stmt_2_err.b

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