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

```asm
<main>:
  endbr64
  push   %rbp
  cmp    $0x1,%edi
  jle    L39
  mov    0x8(%rsi),%rbp
  lea    D57(%rip),%rdi
  xor    %eax,%eax
  mov    %rbp,%rsi
  call   <printf@plt>
  lea    D247(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L325
  lea    D586(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L45
  lea    D443(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L418
  lea    D494(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L8
  lea    D228(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L369
  lea    D669(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L304
  lea    D383(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L384
  lea    D0(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L149
  lea    D508(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L290
  lea    D191(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L360
  lea    D224(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L6
  lea    D464(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L57
  lea    D317(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L515
  lea    D654(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L310
  lea    D60(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L479
  lea    D213(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L407
  lea    D149(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L86
  lea    D316(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L634
  lea    D397(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L266
  lea    D426(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L338
  lea    D414(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L485
  lea    D130(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L292
  lea    D566(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L448
  lea    D230(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L11
  lea    D672(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L20
  lea    D305(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L308
  lea    D502(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L333
  lea    D37(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L423
  lea    D31(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L331
  lea    D44(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L111
  lea    D131(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L82
  lea    D607(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L662
  lea    D579(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L501
  lea    D570(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L26
  lea    D194(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L492
  lea    D634(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L245
  lea    D169(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L328
  lea    D84(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L383
  lea    D612(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L318
  lea    D134(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L135
  lea    D578(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L80
  lea    D187(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L238
  lea    D551(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L312
  lea    D595(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L520
  lea    D137(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L585
  lea    D402(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L491
  lea    D412(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L244
  lea    D165(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L625
  lea    D685(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L570
  lea    D374(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L387
  lea    D259(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L345
  lea    D301(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L410
  lea    D429(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L48
  lea    D112(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L226
  lea    D139(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L397
  lea    D12(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L129
  lea    D487(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L669
  lea    D627(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L431
  lea    D548(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L192
  lea    D656(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L580
  lea    D34(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L329
  lea    D585(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L615
  lea    D339(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L152
  lea    D200(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L642
  lea    D395(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L597
  lea    D637(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L202
  mov    %rbp,%rsi
  lea    D642(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L565
L325:
  pop    %rbp
  jmp    26e0 <test_mmap@plt>
L39:
  lea    D48(%rip),%rdi
  call   <puts@plt>
L565:
  mov    $0x1,%eax
  pop    %rbp
  ret
L8:
  pop    %rbp
  jmp    2630 <test_sbrk_sigsegv@plt>
L45:
  pop    %rbp
  jmp    2840 <test_munmap_sigsegv@plt>
L418:
  pop    %rbp
  jmp    24f0 <test_sbrk@plt>
L384:
  pop    %rbp
  jmp    25f0 <test_fd_devnull@plt>
L369:
  pop    %rbp
  jmp    2710 <test_misbehave@plt>
L304:
  pop    %rbp
  jmp    2540 <test_fd_read@plt>
L149:
  pop    %rbp
  jmp    2810 <test_fd_multidesc@plt>
L290:
  pop    %rbp
  jmp    2740 <test_fd_readwrite@plt>
L360:
  pop    %rbp
  jmp    2560 <test_fd_copy@plt>
L6:
  pop    %rbp
  jmp    2830 <test_fd_bad_desc@plt>
L57:
  pop    %rbp
  jmp    2870 <test_fd_open_path@plt>
L515:
  pop    %rbp
  jmp    26a0 <test_fd_dup@plt>
L310:
  pop    %rbp
  jmp    24b0 <test_fd_pipe@plt>
L479:
  pop    %rbp
  jmp    2590 <test_fd_all@plt>
L407:
  pop    %rbp
  jmp    2670 <test_signal_basic@plt>
L86:
  pop    %rbp
  jmp    2580 <test_signal_send@plt>
L634:
  pop    %rbp
  jmp    2800 <test_signal_abort@plt>
L266:
  pop    %rbp
  jmp    28b0 <test_signal_segfault@plt>
L485:
  pop    %rbp
  jmp    27d0 <test_signal_cont_masked@plt>
L338:
  pop    %rbp
  jmp    2880 <test_signal_stop@plt>
L202:
  pop    %rbp
  jmp    2660 <test_sharing_memory_child_and_grandchild@plt>
L597:
  pop    %rbp
  jmp    26d0 <test_sharing_memory_simple@plt>
L642:
  pop    %rbp
  jmp    2650 <test_get_set_groups@plt>
L152:
  pop    %rbp
  jmp    2600 <test_get_set_gid@plt>
L615:
  pop    %rbp
  jmp    2640 <test_get_set_uid@plt>
L329:
  pop    %rbp
  jmp    2700 <test_nanosleep@plt>
L580:
  pop    %rbp
  jmp    2500 <test_gettimeofday@plt>
L192:
  pop    %rbp
  jmp    2730 <test_getcwd@plt>
L431:
  pop    %rbp
  jmp    2750 <test_session_login_name@plt>
L669:
  pop    %rbp
  jmp    2770 <test_session_basic@plt>
L129:
  pop    %rbp
  jmp    2760 <test_pgrp_orphan@plt>
L397:
  pop    %rbp
  jmp    2550 <test_killpg_other_group@plt>
L226:
  pop    %rbp
  jmp    2510 <test_killpg_same_group@plt>
L48:
  pop    %rbp
  jmp    26c0 <test_kill@plt>
L410:
  pop    %rbp
  jmp    2890 <test_setpgid_child@plt>
L345:
  pop    %rbp
  jmp    2860 <test_setpgid_leader@plt>
L387:
  pop    %rbp
  jmp    27a0 <test_setpgid@plt>
L570:
  pop    %rbp
  jmp    2720 <test_wait_nohang@plt>
L625:
  pop    %rbp
  jmp    2520 <test_wait_basic@plt>
L244:
  pop    %rbp
  jmp    2490 <test_vfs_chmod@plt>
L491:
  pop    %rbp
  jmp    28c0 <test_vfs_link@plt>
L585:
  pop    %rbp
  jmp    25b0 <test_vfs_symlink@plt>
L520:
  pop    %rbp
  jmp    2610 <test_vfs_trunc@plt>
L312:
  pop    %rbp
  jmp    25a0 <test_vfs_dot_dot_across_fs@plt>
L238:
  pop    %rbp
  jmp    27b0 <test_vfs_dot_dir@plt>
L80:
  pop    %rbp
  jmp    2690 <test_vfs_dot_dot_dir@plt>
L135:
  pop    %rbp
  jmp    24e0 <test_vfs_relative_dir@plt>
L318:
  pop    %rbp
  jmp    25e0 <test_vfs_rw@plt>
L383:
  pop    %rbp
  jmp    2790 <test_vfs_dir@plt>
L328:
  pop    %rbp
  jmp    2680 <test_sigaction_handler_returns@plt>
L245:
  pop    %rbp
  jmp    2780 <test_sigaction_with_setjmp@plt>
L492:
  pop    %rbp
  jmp    25d0 <test_setjmp@plt>
L26:
  pop    %rbp
  jmp    2570 <test_fstat@plt>
L501:
  pop    %rbp
  jmp    2850 <test_stat@plt>
L662:
  pop    %rbp
  jmp    25c0 <test_access_basic@plt>
L82:
  pop    %rbp
  jmp    27f0 <test_lseek_errors@plt>
L111:
  pop    %rbp
  jmp    2820 <test_lseek_basic@plt>
L331:
  pop    %rbp
  jmp    28a0 <test_fork_sigchld_ignored@plt>
L423:
  pop    %rbp
  jmp    27c0 <test_fork_signal@plt>
L333:
  pop    %rbp
  jmp    26b0 <test_fork_wait@plt>
L308:
  pop    %rbp
  jmp    24d0 <test_signal_handler_mask@plt>
L20:
  pop    %rbp
  jmp    24a0 <test_signal_sigsuspend_stop@plt>
L11:
  pop    %rbp
  jmp    28d0 <test_signal_sigsuspend@plt>
L448:
  pop    %rbp
  jmp    27e0 <test_signal_mask_nonmaskable@plt>
L292:
  pop    %rbp
  jmp    24c0 <test_signal_mask@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D57
datatype: string
name: extract_symbolic_data
arguments: label: D247
datatype: string
name: extract_symbolic_data
arguments: label: D586
datatype: string
name: extract_symbolic_data
arguments: label: D443
datatype: string
name: extract_symbolic_data
arguments: label: D494
datatype: string
name: extract_symbolic_data
arguments: label: D228
datatype: string
name: extract_symbolic_data
arguments: label: D669
datatype: string
name: extract_symbolic_data
arguments: label: D383
datatype: string
name: extract_symbolic_data
arguments: label: D0
datatype: string
name: extract_symbolic_data
arguments: label: D508
datatype: string
name: extract_symbolic_data
arguments: label: D191
datatype: string
name: extract_symbolic_data
arguments: label: D224
datatype: string
name: extract_symbolic_data
arguments: label: D464
datatype: string
name: extract_symbolic_data
arguments: label: D317
datatype: string
name: extract_symbolic_data
arguments: label: D654
datatype: string
name: extract_symbolic_data
arguments: label: D60
datatype: string
name: extract_symbolic_data
arguments: label: D213
datatype: string
name: extract_symbolic_data
arguments: label: D149
datatype: string
name: extract_symbolic_data
arguments: label: D316
datatype: string
name: extract_symbolic_data
arguments: label: D397
datatype: string
name: extract_symbolic_data
arguments: label: D426
datatype: string
name: extract_symbolic_data
arguments: label: D414
datatype: string
name: extract_symbolic_data
arguments: label: D130
datatype: string
name: extract_symbolic_data
arguments: label: D566
datatype: string
name: extract_symbolic_data
arguments: label: D230
datatype: string
name: extract_symbolic_data
arguments: label: D672
datatype: string
name: extract_symbolic_data
arguments: label: D305
datatype: string
name: extract_symbolic_data
arguments: label: D502
datatype: string
name: extract_symbolic_data
arguments: label: D37
datatype: string
name: extract_symbolic_data
arguments: label: D31
datatype: string
name: extract_symbolic_data
arguments: label: D44
datatype: string
name: extract_symbolic_data
arguments: label: D131
datatype: string
name: extract_symbolic_data
arguments: label: D607
datatype: string
name: extract_symbolic_data
arguments: label: D579
datatype: string
name: extract_symbolic_data
arguments: label: D570
datatype: string
name: extract_symbolic_data
arguments: label: D194
datatype: string
name: extract_symbolic_data
arguments: label: D634
datatype: string
name: extract_symbolic_data
arguments: label: D169
datatype: string
name: extract_symbolic_data
arguments: label: D84
datatype: string
name: extract_symbolic_data
arguments: label: D612
datatype: string
name: extract_symbolic_data
arguments: label: D134
datatype: string
name: extract_symbolic_data
arguments: label: D578
datatype: string
name: extract_symbolic_data
arguments: label: D187
datatype: string
name: extract_symbolic_data
arguments: label: D551
datatype: string
name: extract_symbolic_data
arguments: label: D595
datatype: string
name: extract_symbolic_data
arguments: label: D137
datatype: string
name: extract_symbolic_data
arguments: label: D402
datatype: string
name: extract_symbolic_data
arguments: label: D412
datatype: string
name: extract_symbolic_data
arguments: label: D165
datatype: string
name: extract_symbolic_data
arguments: label: D685
datatype: string
name: extract_symbolic_data
arguments: label: D374
datatype: string
name: extract_symbolic_data
arguments: label: D259
datatype: string
name: extract_symbolic_data
arguments: label: D301
datatype: string
name: extract_symbolic_data
arguments: label: D429
datatype: string
name: extract_symbolic_data
arguments: label: D112
datatype: string
name: extract_symbolic_data
arguments: label: D139
datatype: string
name: extract_symbolic_data
arguments: label: D12
datatype: string
name: extract_symbolic_data
arguments: label: D487
datatype: string
name: extract_symbolic_data
arguments: label: D627
datatype: string
name: extract_symbolic_data
arguments: label: D548
datatype: string
name: extract_symbolic_data
arguments: label: D656
datatype: string
name: extract_symbolic_data
arguments: label: D34
datatype: string
name: extract_symbolic_data
arguments: label: D585
datatype: string
name: extract_symbolic_data
arguments: label: D339
datatype: string
name: extract_symbolic_data
arguments: label: D200
datatype: string
name: extract_symbolic_data
arguments: label: D395
datatype: string
name: extract_symbolic_data
arguments: label: D637
datatype: string
name: extract_symbolic_data
arguments: label: D642
datatype: string
name: extract_symbolic_data
arguments: label: D48
datatype: string

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


tool: D247: mmap

tool: D586: munmap_sigsegv

tool: D443: sbrk

tool: D494: sbrk_sigsegv

tool: D228: misbehave

tool: D669: fd_read

tool: D383: fd_devnull

tool: D0: fd_multidesc

tool: D508: fd_readwrite

tool: D191: fd_copy

tool: D224: fd_bad_desc

tool: D464: fd_open_path

tool: D317: fd_dup

tool: D654: fd_pipe

tool: D60: fd_all

tool: D213: signal_basic

tool: D149: signal_send

tool: D316: signal_abort

tool: D397: signal_segfault

tool: D426: signal_stop

tool: D414: signal_cont_masked

tool: D130: signal_mask

tool: D566: signal_mask_nonmaskable

tool: D230: signal_sigsuspend

tool: D672: signal_sigsuspend_stop

tool: D305: signal_handler_mask

tool: D502: fork_wait

tool: D37: fork_signal

tool: D31: fork_sigchld_ignored

tool: D44: lseek_basic

tool: D131: lseek_errors

tool: D607: access_basic

tool: D579: stat

tool: D570: fstat

tool: D194: setjmp

tool: D634: sigaction_with_setjmp

tool: D169: sigaction_handler_returns

tool: D84: vfs_dir

tool: D612: vfs_rw

tool: D134: vfs_relative_dir

tool: D578: vfs_dot_dot_dir

tool: D187: vfs_dot_dir

tool: D551: vfs_dot_dot_across_fs

tool: D595: vfs_trunc

tool: D137: vfs_symlink

tool: D402: vfs_link

tool: D412: vfs_chmod

tool: D165: wait_basic

tool: D685: wait_nohang

tool: D374: setpgid

tool: D259: setpgid_leader

tool: D301: setpgid_child

tool: D429: kill

tool: D112: killpg_same_group

tool: D139: killpg_other_group

tool: D12: pgrp_orphan

tool: D487: session_basic

tool: D627: session_login_name

tool: D548: getcwd

tool: D656: gettimeofday

tool: D34: nanosleep

tool: D585: get_set_uid

tool: D339: get_set_gid

tool: D200: get_set_groups

tool: D395: sharing_memory_simple

tool: D637: sharing_memory_child_and_grandchild

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


tool: D48: Not enough arguments provided to utest.

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;
}
```