user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<main>:
  endbr64
  push   %rbp
  cmp    $0x1,%edi
  jle    L236
  mov    0x8(%rsi),%rbp
  lea    D149(%rip),%rdi
  xor    %eax,%eax
  mov    %rbp,%rsi
  call   <printf@plt>
  lea    D71(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L281
  lea    D580(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L351
  lea    D350(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L659
  lea    D22(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L436
  lea    D49(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L434
  lea    D610(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L627
  lea    D351(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L612
  lea    D103(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L292
  lea    D559(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L46
  lea    D86(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L186
  lea    D111(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L264
  lea    D87(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L449
  lea    D654(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L495
  lea    D651(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L181
  lea    D434(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L378
  lea    D646(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L596
  lea    D380(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L268
  lea    D420(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L51
  lea    D689(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L651
  lea    D310(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L500
  lea    D595(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L621
  lea    D225(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L506
  lea    D250(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L649
  lea    D539(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L654
  lea    D622(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L286
  lea    D55(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L105
  lea    D219(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L103
  lea    D98(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L335
  lea    D202(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L211
  lea    D0(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L644
  lea    D527(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L364
  lea    D379(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L18
  lea    D198(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L201
  lea    D319(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L178
  lea    D119(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L243
  lea    D564(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L191
  lea    D85(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L113
  lea    D388(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L329
  lea    D373(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L320
  lea    D514(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L63
  lea    D570(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L102
  lea    D442(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L255
  lea    D432(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L321
  lea    D335(%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     L359
  lea    D476(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L82
  lea    D486(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L265
  lea    D349(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L143
  lea    D403(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L55
  lea    D577(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L322
  lea    D161(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L315
  lea    D125(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L477
  lea    D99(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L382
  lea    D598(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L130
  lea    D502(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L245
  lea    D313(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L519
  lea    D576(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L172
  lea    D294(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L71
  lea    D320(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L304
  lea    D131(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L529
  lea    D214(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L619
  lea    D58(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L237
  lea    D218(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L669
  lea    D339(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L465
  lea    D470(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L407
  lea    D623(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L146
  mov    %rbp,%rsi
  lea    D425(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L603
L281:
  pop    %rbp
  jmp    26e0 <test_mmap@plt>
L236:
  lea    D285(%rip),%rdi
  call   <puts@plt>
L603:
  mov    $0x1,%eax
  pop    %rbp
  ret
L436:
  pop    %rbp
  jmp    2630 <test_sbrk_sigsegv@plt>
L351:
  pop    %rbp
  jmp    2840 <test_munmap_sigsegv@plt>
L659:
  pop    %rbp
  jmp    24f0 <test_sbrk@plt>
L612:
  pop    %rbp
  jmp    25f0 <test_fd_devnull@plt>
L434:
  pop    %rbp
  jmp    2710 <test_misbehave@plt>
L627:
  pop    %rbp
  jmp    2540 <test_fd_read@plt>
L292:
  pop    %rbp
  jmp    2810 <test_fd_multidesc@plt>
L46:
  pop    %rbp
  jmp    2740 <test_fd_readwrite@plt>
L186:
  pop    %rbp
  jmp    2560 <test_fd_copy@plt>
L264:
  pop    %rbp
  jmp    2830 <test_fd_bad_desc@plt>
L449:
  pop    %rbp
  jmp    2870 <test_fd_open_path@plt>
L495:
  pop    %rbp
  jmp    26a0 <test_fd_dup@plt>
L181:
  pop    %rbp
  jmp    24b0 <test_fd_pipe@plt>
L378:
  pop    %rbp
  jmp    2590 <test_fd_all@plt>
L596:
  pop    %rbp
  jmp    2670 <test_signal_basic@plt>
L268:
  pop    %rbp
  jmp    2580 <test_signal_send@plt>
L51:
  pop    %rbp
  jmp    2800 <test_signal_abort@plt>
L651:
  pop    %rbp
  jmp    28b0 <test_signal_segfault@plt>
L621:
  pop    %rbp
  jmp    27d0 <test_signal_cont_masked@plt>
L500:
  pop    %rbp
  jmp    2880 <test_signal_stop@plt>
L146:
  pop    %rbp
  jmp    2660 <test_sharing_memory_child_and_grandchild@plt>
L407:
  pop    %rbp
  jmp    26d0 <test_sharing_memory_simple@plt>
L465:
  pop    %rbp
  jmp    2650 <test_get_set_groups@plt>
L669:
  pop    %rbp
  jmp    2600 <test_get_set_gid@plt>
L237:
  pop    %rbp
  jmp    2640 <test_get_set_uid@plt>
L619:
  pop    %rbp
  jmp    2700 <test_nanosleep@plt>
L529:
  pop    %rbp
  jmp    2500 <test_gettimeofday@plt>
L304:
  pop    %rbp
  jmp    2730 <test_getcwd@plt>
L71:
  pop    %rbp
  jmp    2750 <test_session_login_name@plt>
L172:
  pop    %rbp
  jmp    2770 <test_session_basic@plt>
L519:
  pop    %rbp
  jmp    2760 <test_pgrp_orphan@plt>
L245:
  pop    %rbp
  jmp    2550 <test_killpg_other_group@plt>
L130:
  pop    %rbp
  jmp    2510 <test_killpg_same_group@plt>
L382:
  pop    %rbp
  jmp    26c0 <test_kill@plt>
L477:
  pop    %rbp
  jmp    2890 <test_setpgid_child@plt>
L315:
  pop    %rbp
  jmp    2860 <test_setpgid_leader@plt>
L322:
  pop    %rbp
  jmp    27a0 <test_setpgid@plt>
L55:
  pop    %rbp
  jmp    2720 <test_wait_nohang@plt>
L143:
  pop    %rbp
  jmp    2520 <test_wait_basic@plt>
L265:
  pop    %rbp
  jmp    2490 <test_vfs_chmod@plt>
L82:
  pop    %rbp
  jmp    28c0 <test_vfs_link@plt>
L359:
  pop    %rbp
  jmp    25b0 <test_vfs_symlink@plt>
L45:
  pop    %rbp
  jmp    2610 <test_vfs_trunc@plt>
L321:
  pop    %rbp
  jmp    25a0 <test_vfs_dot_dot_across_fs@plt>
L255:
  pop    %rbp
  jmp    27b0 <test_vfs_dot_dir@plt>
L102:
  pop    %rbp
  jmp    2690 <test_vfs_dot_dot_dir@plt>
L63:
  pop    %rbp
  jmp    24e0 <test_vfs_relative_dir@plt>
L320:
  pop    %rbp
  jmp    25e0 <test_vfs_rw@plt>
L329:
  pop    %rbp
  jmp    2790 <test_vfs_dir@plt>
L113:
  pop    %rbp
  jmp    2680 <test_sigaction_handler_returns@plt>
L191:
  pop    %rbp
  jmp    2780 <test_sigaction_with_setjmp@plt>
L243:
  pop    %rbp
  jmp    25d0 <test_setjmp@plt>
L178:
  pop    %rbp
  jmp    2570 <test_fstat@plt>
L201:
  pop    %rbp
  jmp    2850 <test_stat@plt>
L18:
  pop    %rbp
  jmp    25c0 <test_access_basic@plt>
L364:
  pop    %rbp
  jmp    27f0 <test_lseek_errors@plt>
L644:
  pop    %rbp
  jmp    2820 <test_lseek_basic@plt>
L211:
  pop    %rbp
  jmp    28a0 <test_fork_sigchld_ignored@plt>
L335:
  pop    %rbp
  jmp    27c0 <test_fork_signal@plt>
L103:
  pop    %rbp
  jmp    26b0 <test_fork_wait@plt>
L105:
  pop    %rbp
  jmp    24d0 <test_signal_handler_mask@plt>
L286:
  pop    %rbp
  jmp    24a0 <test_signal_sigsuspend_stop@plt>
L654:
  pop    %rbp
  jmp    28d0 <test_signal_sigsuspend@plt>
L649:
  pop    %rbp
  jmp    27e0 <test_signal_mask_nonmaskable@plt>
L506:
  pop    %rbp
  jmp    24c0 <test_signal_mask@plt>
```

tool_calls: name: disassemble_data
arguments: label: D149
datatype: string
name: disassemble_data
arguments: label: D71
datatype: string
name: disassemble_data
arguments: label: D580
datatype: string
name: disassemble_data
arguments: label: D350
datatype: string
name: disassemble_data
arguments: label: D22
datatype: string
name: disassemble_data
arguments: label: D49
datatype: string
name: disassemble_data
arguments: label: D610
datatype: string
name: disassemble_data
arguments: label: D351
datatype: string
name: disassemble_data
arguments: label: D103
datatype: string
name: disassemble_data
arguments: label: D559
datatype: string
name: disassemble_data
arguments: label: D86
datatype: string
name: disassemble_data
arguments: label: D111
datatype: string
name: disassemble_data
arguments: label: D87
datatype: string
name: disassemble_data
arguments: label: D654
datatype: string
name: disassemble_data
arguments: label: D651
datatype: string
name: disassemble_data
arguments: label: D434
datatype: string
name: disassemble_data
arguments: label: D646
datatype: string
name: disassemble_data
arguments: label: D380
datatype: string
name: disassemble_data
arguments: label: D420
datatype: string
name: disassemble_data
arguments: label: D689
datatype: string
name: disassemble_data
arguments: label: D310
datatype: string
name: disassemble_data
arguments: label: D595
datatype: string
name: disassemble_data
arguments: label: D225
datatype: string
name: disassemble_data
arguments: label: D250
datatype: string
name: disassemble_data
arguments: label: D539
datatype: string
name: disassemble_data
arguments: label: D622
datatype: string
name: disassemble_data
arguments: label: D55
datatype: string
name: disassemble_data
arguments: label: D219
datatype: string
name: disassemble_data
arguments: label: D98
datatype: string
name: disassemble_data
arguments: label: D202
datatype: string
name: disassemble_data
arguments: label: D0
datatype: string
name: disassemble_data
arguments: label: D527
datatype: string
name: disassemble_data
arguments: label: D379
datatype: string
name: disassemble_data
arguments: label: D198
datatype: string
name: disassemble_data
arguments: label: D319
datatype: string
name: disassemble_data
arguments: label: D119
datatype: string
name: disassemble_data
arguments: label: D564
datatype: string
name: disassemble_data
arguments: label: D85
datatype: string
name: disassemble_data
arguments: label: D388
datatype: string
name: disassemble_data
arguments: label: D373
datatype: string
name: disassemble_data
arguments: label: D514
datatype: string
name: disassemble_data
arguments: label: D570
datatype: string
name: disassemble_data
arguments: label: D442
datatype: string
name: disassemble_data
arguments: label: D432
datatype: string
name: disassemble_data
arguments: label: D335
datatype: string
name: disassemble_data
arguments: label: D443
datatype: string
name: disassemble_data
arguments: label: D476
datatype: string
name: disassemble_data
arguments: label: D486
datatype: string
name: disassemble_data
arguments: label: D349
datatype: string
name: disassemble_data
arguments: label: D403
datatype: string
name: disassemble_data
arguments: label: D577
datatype: string
name: disassemble_data
arguments: label: D161
datatype: string
name: disassemble_data
arguments: label: D125
datatype: string
name: disassemble_data
arguments: label: D99
datatype: string
name: disassemble_data
arguments: label: D598
datatype: string
name: disassemble_data
arguments: label: D502
datatype: string
name: disassemble_data
arguments: label: D313
datatype: string
name: disassemble_data
arguments: label: D576
datatype: string
name: disassemble_data
arguments: label: D294
datatype: string
name: disassemble_data
arguments: label: D320
datatype: string
name: disassemble_data
arguments: label: D131
datatype: string
name: disassemble_data
arguments: label: D214
datatype: string
name: disassemble_data
arguments: label: D58
datatype: string
name: disassemble_data
arguments: label: D218
datatype: string
name: disassemble_data
arguments: label: D339
datatype: string
name: disassemble_data
arguments: label: D470
datatype: string
name: disassemble_data
arguments: label: D623
datatype: string
name: disassemble_data
arguments: label: D425
datatype: string
name: disassemble_data
arguments: label: D285
datatype: string

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


tool: D71: mmap

tool: D580: munmap_sigsegv

tool: D350: sbrk

tool: D22: sbrk_sigsegv

tool: D49: misbehave

tool: D610: fd_read

tool: D351: fd_devnull

tool: D103: fd_multidesc

tool: D559: fd_readwrite

tool: D86: fd_copy

tool: D111: fd_bad_desc

tool: D87: fd_open_path

tool: D654: fd_dup

tool: D651: fd_pipe

tool: D434: fd_all

tool: D646: signal_basic

tool: D380: signal_send

tool: D420: signal_abort

tool: D689: signal_segfault

tool: D310: signal_stop

tool: D595: signal_cont_masked

tool: D225: signal_mask

tool: D250: signal_mask_nonmaskable

tool: D539: signal_sigsuspend

tool: D622: signal_sigsuspend_stop

tool: D55: signal_handler_mask

tool: D219: fork_wait

tool: D98: fork_signal

tool: D202: fork_sigchld_ignored

tool: D0: lseek_basic

tool: D527: lseek_errors

tool: D379: access_basic

tool: D198: stat

tool: D319: fstat

tool: D119: setjmp

tool: D564: sigaction_with_setjmp

tool: D85: sigaction_handler_returns

tool: D388: vfs_dir

tool: D373: vfs_rw

tool: D514: vfs_relative_dir

tool: D570: vfs_dot_dot_dir

tool: D442: vfs_dot_dir

tool: D432: vfs_dot_dot_across_fs

tool: D335: vfs_trunc

tool: D443: vfs_symlink

tool: D476: vfs_link

tool: D486: vfs_chmod

tool: D349: wait_basic

tool: D403: wait_nohang

tool: D577: setpgid

tool: D161: setpgid_leader

tool: D125: setpgid_child

tool: D99: kill

tool: D598: killpg_same_group

tool: D502: killpg_other_group

tool: D313: pgrp_orphan

tool: D576: session_basic

tool: D294: session_login_name

tool: D320: getcwd

tool: D131: gettimeofday

tool: D214: nanosleep

tool: D58: get_set_uid

tool: D218: get_set_gid

tool: D339: get_set_groups

tool: D470: sharing_memory_simple

tool: D623: sharing_memory_child_and_grandchild

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


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