user: What would the C source look like for the assembly code provided here:

```asm
<test_func>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L88
  mov    $0x51,%edi
  call   <fail_test@plt>
L88:
  lea    D34(%rip),%rax
  mov    %rax,%rdi
  call   <run@plt>
  test   %rax,%rax
  je     L36
  mov    $0x52,%edi
  call   <fail_test@plt>
L36:
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L61
  mov    $0x53,%edi
  call   <fail_test@plt>
L61:
  lea    D95(%rip),%rax
  mov    %rax,%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L3
  mov    $0x54,%edi
  call   <fail_test@plt>
L3:
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L1
  mov    $0x55,%edi
  call   <fail_test@plt>
L1:
  lea    D72(%rip),%rax
  mov    %rax,%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L39
  mov    $0x56,%edi
  call   <fail_test@plt>
L39:
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L55
  mov    $0x57,%edi
  call   <fail_test@plt>
L55:
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L96
  mov    $0x58,%edi
  call   <fail_test@plt>
L96:
  lea    D86(%rip),%rax
  mov    %rax,%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L41
  mov    $0x59,%edi
  call   <fail_test@plt>
L41:
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <run@plt>
  test   %rax,%rax
  jne    L81
  mov    $0x5a,%edi
  call   <fail_test@plt>
L81:
  nop
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D38
datatype: string
name: extract_symbolic_data
arguments: data_tag: D34
datatype: string
name: extract_symbolic_data
arguments: data_tag: D47
datatype: string
name: extract_symbolic_data
arguments: data_tag: D95
datatype: string
name: extract_symbolic_data
arguments: data_tag: D92
datatype: string
name: extract_symbolic_data
arguments: data_tag: D72
datatype: string
name: extract_symbolic_data
arguments: data_tag: D26
datatype: string
name: extract_symbolic_data
arguments: data_tag: D27
datatype: string
name: extract_symbolic_data
arguments: data_tag: D86
datatype: string
name: extract_symbolic_data
arguments: data_tag: D37
datatype: string

tool: D38: test/progs/func_basic.b

tool: D34: test/progs/func_calls_basic.b

tool: D47: test/progs/func_redecl_err.b

tool: D95: test/progs/func_unknown_res_type_err.b

tool: D92: test/progs/func_bad_res_type_err.b

tool: D72: test/progs/func_unexp_ret_stmt_err.b

tool: D26: test/progs/func_missing_res_type_err.b

tool: D27: test/progs/func_missing_ret_stmt_err.b

tool: D86: test/progs/func_missing_ret_stmt_2_err.b

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