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

```asm
<main>:
  endbr64
  push   %rbx
  cmp    $0x1,%edi
  jle    L1265
  mov    0x8(%rsi),%rbx
  mov    %rbx,%rsi
  lea    D616(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D430(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L750
  lea    D424(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L968
  lea    D595(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L799
  lea    D269(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L126
  lea    D599(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1141
  lea    D175(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L75
  lea    D623(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L42
  lea    D58(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L587
  lea    D177(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L518
  lea    D645(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1185
  lea    D449(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L201
  lea    D208(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L850
  lea    D660(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L519
  lea    D351(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L580
  lea    D471(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L987
  lea    D540(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L751
  lea    D251(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L294
  lea    D206(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L908
  lea    D459(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1201
  lea    D655(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L348
  lea    D667(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L344
  lea    D514(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1090
  lea    D446(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L600
  lea    D148(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L349
  lea    D654(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L158
  lea    D265(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L893
  lea    D517(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L159
  lea    D425(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L164
  lea    D135(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L538
  lea    D577(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L888
  lea    D428(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L475
  lea    D438(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1326
  lea    D621(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L629
  lea    D103(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1231
  lea    D672(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L792
  lea    D649(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L932
  lea    D487(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L690
  lea    D574(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L393
  lea    D248(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L672
  lea    D317(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1001
  lea    D145(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1266
  lea    D8(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L97
  lea    D420(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L90
  lea    D359(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1196
  lea    D87(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L652
  lea    D303(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L339
  lea    D189(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1035
  lea    D107(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L628
  lea    D26(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1007
  call   <test_wait_nohang@plt>
  jmp    L423
L1265:
  lea    D335(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%eax
L423:
  pop    %rbx
  ret
L750:
  call   <test_mmap@plt>
  jmp    L423
L968:
  call   <test_munmap_sigsegv@plt>
  jmp    L423
L799:
  call   <test_sbrk@plt>
  jmp    L423
L126:
  call   <test_sbrk_sigsegv@plt>
  jmp    L423
L1141:
  call   <test_misbehave@plt>
  jmp    L423
L75:
  call   <test_fd_read@plt>
  jmp    L423
L42:
  call   <test_fd_devnull@plt>
  jmp    L423
L587:
  call   <test_fd_multidesc@plt>
  jmp    L423
L518:
  call   <test_fd_readwrite@plt>
  jmp    L423
L1185:
  call   <test_fd_copy@plt>
  jmp    L423
L201:
  call   <test_fd_bad_desc@plt>
  jmp    L423
L850:
  call   <test_fd_open_path@plt>
  jmp    L423
L519:
  call   <test_fd_dup@plt>
  jmp    L423
L580:
  call   <test_fd_pipe@plt>
  jmp    L423
L987:
  call   <test_fd_all@plt>
  jmp    L423
L751:
  call   <test_signal_basic@plt>
  jmp    L423
L294:
  call   <test_signal_send@plt>
  jmp    L423
L908:
  call   <test_signal_abort@plt>
  jmp    L423
L1201:
  call   <test_signal_segfault@plt>
  jmp    L423
L348:
  call   <test_signal_stop@plt>
  jmp    L423
L344:
  call   <test_signal_cont_masked@plt>
  jmp    L423
L1090:
  call   <test_signal_mask@plt>
  jmp    L423
L600:
  call   <test_signal_mask_nonmaskable@plt>
  jmp    L423
L349:
  call   <test_signal_sigsuspend@plt>
  jmp    L423
L158:
  call   <test_signal_sigsuspend_stop@plt>
  jmp    L423
L893:
  call   <test_signal_handler_mask@plt>
  jmp    L423
L159:
  call   <test_fork_wait@plt>
  jmp    L423
L164:
  call   <test_fork_signal@plt>
  jmp    L423
L538:
  call   <test_fork_sigchld_ignored@plt>
  jmp    L423
L888:
  call   <test_lseek_basic@plt>
  jmp    L423
L475:
  call   <test_lseek_errors@plt>
  jmp    L423
L1326:
  call   <test_access_basic@plt>
  jmp    L423
L629:
  call   <test_stat@plt>
  jmp    L423
L1231:
  call   <test_fstat@plt>
  jmp    L423
L792:
  call   <test_setjmp@plt>
  jmp    L423
L932:
  call   <test_sigaction_with_setjmp@plt>
  jmp    L423
L690:
  call   <test_sigaction_handler_returns@plt>
  jmp    L423
L393:
  call   <test_vfs_dir@plt>
  jmp    L423
L672:
  call   <test_vfs_rw@plt>
  jmp    L423
L1001:
  call   <test_vfs_relative_dir@plt>
  jmp    L423
L1266:
  call   <test_vfs_dot_dot_dir@plt>
  jmp    L423
L97:
  call   <test_vfs_dot_dir@plt>
  jmp    L423
L90:
  call   <test_vfs_dot_dot_across_fs@plt>
  jmp    L423
L1196:
  call   <test_vfs_trunc@plt>
  jmp    L423
L652:
  call   <test_vfs_symlink@plt>
  jmp    L423
L339:
  call   <test_vfs_link@plt>
  jmp    L423
L1035:
  call   <test_vfs_chmod@plt>
  jmp    L423
L628:
  call   <test_wait_basic@plt>
  jmp    L423
L1007:
  lea    D606(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L900
  lea    D366(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L895
  lea    D262(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L858
  call   <test_setpgid_child@plt>
  jmp    L423
L900:
  call   <test_setpgid@plt>
  jmp    L423
L895:
  call   <test_setpgid_leader@plt>
  jmp    L423
L858:
  lea    D503(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L935
  call   <test_kill@plt>
  jmp    L423
L935:
  lea    D582(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L187
  call   <test_killpg_same_group@plt>
  jmp    L423
L187:
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L949
  call   <test_killpg_other_group@plt>
  jmp    L423
L949:
  lea    D675(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L711
  call   <test_pgrp_orphan@plt>
  jmp    L423
L711:
  lea    D130(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L680
  call   <test_session_basic@plt>
  jmp    L423
L680:
  lea    D498(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1212
  call   <test_session_login_name@plt>
  jmp    L423
L1212:
  lea    D508(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L146
  call   <test_getcwd@plt>
  jmp    L423
L146:
  lea    D662(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L300
  call   <test_gettimeofday@plt>
  jmp    L423
L300:
  lea    D565(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L614
  call   <test_nanosleep@plt>
  jmp    L423
L614:
  lea    D448(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1223
  call   <test_get_set_uid@plt>
  jmp    L423
L1223:
  lea    D196(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L618
  call   <test_get_set_gid@plt>
  jmp    L423
L618:
  lea    D217(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L798
  call   <test_get_set_groups@plt>
  jmp    L423
L798:
  lea    D637(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L77
  call   <test_sharing_memory_simple@plt>
  jmp    L423
L77:
  lea    D297(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L115
  call   <test_sharing_memory_child_and_grandchild@plt>
  jmp    L423
L115:
  mov    %rbx,%rsi
  lea    D349(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%eax
  jmp    L423
```

tool_calls: name: read_data
arguments: tag: D616
type_guessed: string
name: read_data
arguments: tag: D430
type_guessed: string
name: read_data
arguments: tag: D424
type_guessed: string
name: read_data
arguments: tag: D595
type_guessed: string
name: read_data
arguments: tag: D269
type_guessed: string
name: read_data
arguments: tag: D599
type_guessed: string
name: read_data
arguments: tag: D175
type_guessed: string
name: read_data
arguments: tag: D623
type_guessed: string
name: read_data
arguments: tag: D58
type_guessed: string
name: read_data
arguments: tag: D177
type_guessed: string
name: read_data
arguments: tag: D645
type_guessed: string
name: read_data
arguments: tag: D449
type_guessed: string
name: read_data
arguments: tag: D208
type_guessed: string
name: read_data
arguments: tag: D660
type_guessed: string
name: read_data
arguments: tag: D351
type_guessed: string
name: read_data
arguments: tag: D471
type_guessed: string
name: read_data
arguments: tag: D540
type_guessed: string
name: read_data
arguments: tag: D251
type_guessed: string
name: read_data
arguments: tag: D206
type_guessed: string
name: read_data
arguments: tag: D459
type_guessed: string
name: read_data
arguments: tag: D655
type_guessed: string
name: read_data
arguments: tag: D667
type_guessed: string
name: read_data
arguments: tag: D514
type_guessed: string
name: read_data
arguments: tag: D446
type_guessed: string
name: read_data
arguments: tag: D148
type_guessed: string
name: read_data
arguments: tag: D654
type_guessed: string
name: read_data
arguments: tag: D265
type_guessed: string
name: read_data
arguments: tag: D517
type_guessed: string
name: read_data
arguments: tag: D425
type_guessed: string
name: read_data
arguments: tag: D135
type_guessed: string
name: read_data
arguments: tag: D577
type_guessed: string
name: read_data
arguments: tag: D428
type_guessed: string
name: read_data
arguments: tag: D438
type_guessed: string
name: read_data
arguments: tag: D621
type_guessed: string
name: read_data
arguments: tag: D103
type_guessed: string
name: read_data
arguments: tag: D672
type_guessed: string
name: read_data
arguments: tag: D649
type_guessed: string
name: read_data
arguments: tag: D487
type_guessed: string
name: read_data
arguments: tag: D574
type_guessed: string
name: read_data
arguments: tag: D248
type_guessed: string
name: read_data
arguments: tag: D317
type_guessed: string
name: read_data
arguments: tag: D145
type_guessed: string
name: read_data
arguments: tag: D8
type_guessed: string
name: read_data
arguments: tag: D420
type_guessed: string
name: read_data
arguments: tag: D359
type_guessed: string
name: read_data
arguments: tag: D87
type_guessed: string
name: read_data
arguments: tag: D303
type_guessed: string
name: read_data
arguments: tag: D189
type_guessed: string
name: read_data
arguments: tag: D107
type_guessed: string
name: read_data
arguments: tag: D26
type_guessed: string
name: read_data
arguments: tag: D335
type_guessed: string
name: read_data
arguments: tag: D606
type_guessed: string
name: read_data
arguments: tag: D366
type_guessed: string
name: read_data
arguments: tag: D262
type_guessed: string
name: read_data
arguments: tag: D503
type_guessed: string
name: read_data
arguments: tag: D582
type_guessed: string
name: read_data
arguments: tag: D629
type_guessed: string
name: read_data
arguments: tag: D675
type_guessed: string
name: read_data
arguments: tag: D130
type_guessed: string
name: read_data
arguments: tag: D498
type_guessed: string
name: read_data
arguments: tag: D508
type_guessed: string
name: read_data
arguments: tag: D662
type_guessed: string
name: read_data
arguments: tag: D565
type_guessed: string
name: read_data
arguments: tag: D448
type_guessed: string
name: read_data
arguments: tag: D196
type_guessed: string
name: read_data
arguments: tag: D217
type_guessed: string
name: read_data
arguments: tag: D637
type_guessed: string
name: read_data
arguments: tag: D297
type_guessed: string
name: read_data
arguments: tag: D349
type_guessed: string

tool: D616: Starting user test "%s".


tool: D430: mmap

tool: D424: munmap_sigsegv

tool: D595: sbrk

tool: D269: sbrk_sigsegv

tool: D599: misbehave

tool: D175: fd_read

tool: D623: fd_devnull

tool: D58: fd_multidesc

tool: D177: fd_readwrite

tool: D645: fd_copy

tool: D449: fd_bad_desc

tool: D208: fd_open_path

tool: D660: fd_dup

tool: D351: fd_pipe

tool: D471: fd_all

tool: D540: signal_basic

tool: D251: signal_send

tool: D206: signal_abort

tool: D459: signal_segfault

tool: D655: signal_stop

tool: D667: signal_cont_masked

tool: D514: signal_mask

tool: D446: signal_mask_nonmaskable

tool: D148: signal_sigsuspend

tool: D654: signal_sigsuspend_stop

tool: D265: signal_handler_mask

tool: D517: fork_wait

tool: D425: fork_signal

tool: D135: fork_sigchld_ignored

tool: D577: lseek_basic

tool: D428: lseek_errors

tool: D438: access_basic

tool: D621: stat

tool: D103: fstat

tool: D672: setjmp

tool: D649: sigaction_with_setjmp

tool: D487: sigaction_handler_returns

tool: D574: vfs_dir

tool: D248: vfs_rw

tool: D317: vfs_relative_dir

tool: D145: vfs_dot_dot_dir

tool: D8: vfs_dot_dir

tool: D420: vfs_dot_dot_across_fs

tool: D359: vfs_trunc

tool: D87: vfs_symlink

tool: D303: vfs_link

tool: D189: vfs_chmod

tool: D107: wait_basic

tool: D26: wait_nohang

tool: D335: Not enough arguments provided to utest.

tool: D606: setpgid

tool: D366: setpgid_leader

tool: D262: setpgid_child

tool: D503: kill

tool: D582: killpg_same_group

tool: D629: killpg_other_group

tool: D675: pgrp_orphan

tool: D130: session_basic

tool: D498: session_login_name

tool: D508: getcwd

tool: D662: gettimeofday

tool: D565: nanosleep

tool: D448: get_set_uid

tool: D196: get_set_gid

tool: D217: get_set_groups

tool: D637: sharing_memory_simple

tool: D297: sharing_memory_child_and_grandchild

tool: D349: No user test "%s" available.


assistant: ```c
int main(int argc, char **argv) {
  if (argc < 2) {
    printf("Not enough arguments provided to utest.\n");
    return 1;
  }
  char *test_name = argv[1];
  printf("Starting user test \"%s\".\n", test_name);
  if (strcmp(test_name, "mmap") == 0)
    return test_mmap();
  ;
  if (strcmp(test_name, "munmap_sigsegv") == 0)
    return test_munmap_sigsegv();
  ;
  if (strcmp(test_name, "sbrk") == 0)
    return test_sbrk();
  ;
  if (strcmp(test_name, "sbrk_sigsegv") == 0)
    return test_sbrk_sigsegv();
  ;
  if (strcmp(test_name, "misbehave") == 0)
    return test_misbehave();
  ;
  if (strcmp(test_name, "fd_read") == 0)
    return test_fd_read();
  ;
  if (strcmp(test_name, "fd_devnull") == 0)
    return test_fd_devnull();
  ;
  if (strcmp(test_name, "fd_multidesc") == 0)
    return test_fd_multidesc();
  ;
  if (strcmp(test_name, "fd_readwrite") == 0)
    return test_fd_readwrite();
  ;
  if (strcmp(test_name, "fd_copy") == 0)
    return test_fd_copy();
  ;
  if (strcmp(test_name, "fd_bad_desc") == 0)
    return test_fd_bad_desc();
  ;
  if (strcmp(test_name, "fd_open_path") == 0)
    return test_fd_open_path();
  ;
  if (strcmp(test_name, "fd_dup") == 0)
    return test_fd_dup();
  ;
  if (strcmp(test_name, "fd_pipe") == 0)
    return test_fd_pipe();
  ;
  if (strcmp(test_name, "fd_all") == 0)
    return test_fd_all();
  ;
  if (strcmp(test_name, "signal_basic") == 0)
    return test_signal_basic();
  ;
  if (strcmp(test_name, "signal_send") == 0)
    return test_signal_send();
  ;
  if (strcmp(test_name, "signal_abort") == 0)
    return test_signal_abort();
  ;
  if (strcmp(test_name, "signal_segfault") == 0)
    return test_signal_segfault();
  ;
  if (strcmp(test_name, "signal_stop") == 0)
    return test_signal_stop();
  ;
  if (strcmp(test_name, "signal_cont_masked") == 0)
    return test_signal_cont_masked();
  ;
  if (strcmp(test_name, "signal_mask") == 0)
    return test_signal_mask();
  ;
  if (strcmp(test_name, "signal_mask_nonmaskable") == 0)
    return test_signal_mask_nonmaskable();
  ;
  if (strcmp(test_name, "signal_sigsuspend") == 0)
    return test_signal_sigsuspend();
  ;
  if (strcmp(test_name, "signal_sigsuspend_stop") == 0)
    return test_signal_sigsuspend_stop();
  ;
  if (strcmp(test_name, "signal_handler_mask") == 0)
    return test_signal_handler_mask();
  ;
  if (strcmp(test_name, "fork_wait") == 0)
    return test_fork_wait();
  ;
  if (strcmp(test_name, "fork_signal") == 0)
    return test_fork_signal();
  ;
  if (strcmp(test_name, "fork_sigchld_ignored") == 0)
    return test_fork_sigchld_ignored();
  ;
  if (strcmp(test_name, "lseek_basic") == 0)
    return test_lseek_basic();
  ;
  if (strcmp(test_name, "lseek_errors") == 0)
    return test_lseek_errors();
  ;
  if (strcmp(test_name, "access_basic") == 0)
    return test_access_basic();
  ;
  if (strcmp(test_name, "stat") == 0)
    return test_stat();
  ;
  if (strcmp(test_name, "fstat") == 0)
    return test_fstat();
  ;
  if (strcmp(test_name, "setjmp") == 0)
    return test_setjmp();
  ;
  if (strcmp(test_name, "sigaction_with_setjmp") == 0)
    return test_sigaction_with_setjmp();
  ;
  if (strcmp(test_name, "sigaction_handler_returns") == 0)
    return test_sigaction_handler_returns();
  ;
  if (strcmp(test_name, "vfs_dir") == 0)
    return test_vfs_dir();
  ;
  if (strcmp(test_name, "vfs_rw") == 0)
    return test_vfs_rw();
  ;
  if (strcmp(test_name, "vfs_relative_dir") == 0)
    return test_vfs_relative_dir();
  ;
  if (strcmp(test_name, "vfs_dot_dot_dir") == 0)
    return test_vfs_dot_dot_dir();
  ;
  if (strcmp(test_name, "vfs_dot_dir") == 0)
    return test_vfs_dot_dir();
  ;
  if (strcmp(test_name, "vfs_dot_dot_across_fs") == 0)
    return test_vfs_dot_dot_across_fs();
  ;
  if (strcmp(test_name, "vfs_trunc") == 0)
    return test_vfs_trunc();
  ;
  if (strcmp(test_name, "vfs_symlink") == 0)
    return test_vfs_symlink();
  ;
  if (strcmp(test_name, "vfs_link") == 0)
    return test_vfs_link();
  ;
  if (strcmp(test_name, "vfs_chmod") == 0)
    return test_vfs_chmod();
  ;
  if (strcmp(test_name, "wait_basic") == 0)
    return test_wait_basic();
  ;
  if (strcmp(test_name, "wait_nohang") == 0)
    return test_wait_nohang();
  ;
  if (strcmp(test_name, "setpgid") == 0)
    return test_setpgid();
  ;
  if (strcmp(test_name, "setpgid_leader") == 0)
    return test_setpgid_leader();
  ;
  if (strcmp(test_name, "setpgid_child") == 0)
    return test_setpgid_child();
  ;
  if (strcmp(test_name, "kill") == 0)
    return test_kill();
  ;
  if (strcmp(test_name, "killpg_same_group") == 0)
    return test_killpg_same_group();
  ;
  if (strcmp(test_name, "killpg_other_group") == 0)
    return test_killpg_other_group();
  ;
  if (strcmp(test_name, "pgrp_orphan") == 0)
    return test_pgrp_orphan();
  ;
  if (strcmp(test_name, "session_basic") == 0)
    return test_session_basic();
  ;
  if (strcmp(test_name, "session_login_name") == 0)
    return test_session_login_name();
  ;
  if (strcmp(test_name, "getcwd") == 0)
    return test_getcwd();
  ;
  if (strcmp(test_name, "gettimeofday") == 0)
    return test_gettimeofday();
  ;
  if (strcmp(test_name, "nanosleep") == 0)
    return test_nanosleep();
  ;
  if (strcmp(test_name, "get_set_uid") == 0)
    return test_get_set_uid();
  ;
  if (strcmp(test_name, "get_set_gid") == 0)
    return test_get_set_gid();
  ;
  if (strcmp(test_name, "get_set_groups") == 0)
    return test_get_set_groups();
  ;
  if (strcmp(test_name, "sharing_memory_simple") == 0)
    return test_sharing_memory_simple();
  ;
  if (strcmp(test_name, "sharing_memory_child_and_grandchild") == 0)
    return test_sharing_memory_child_and_grandchild();
  ;
  printf("No user test \"%s\" available.\n", test_name);
  return 1;
}
```