user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  push   %rbx
  cmp    $0x1,%edi
  jle    L1181
  mov    0x8(%rsi),%rbx
  mov    %rbx,%rsi
  lea    D761(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D576(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1191
  lea    D588(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1439
  lea    D615(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L424
  lea    D581(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1060
  lea    D599(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1566
  lea    D520(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1139
  lea    D697(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L953
  lea    D482(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L416
  lea    D250(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1418
  lea    D515(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1392
  lea    D677(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L62
  lea    D423(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L849
  lea    D533(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L183
  lea    D550(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1190
  lea    D564(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1061
  lea    D151(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L757
  lea    D159(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L841
  lea    D301(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L123
  lea    D63(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L204
  lea    D55(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L867
  lea    D368(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L484
  lea    D80(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1215
  lea    D483(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L503
  lea    D508(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L385
  lea    D439(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L616
  lea    D726(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1113
  lea    D219(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L850
  lea    D283(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L125
  lea    D713(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L726
  lea    D763(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1115
  lea    D529(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L917
  lea    D537(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1251
  lea    D99(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L883
  lea    D327(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1277
  lea    D175(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L195
  lea    D443(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1475
  lea    D530(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1417
  lea    D339(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L160
  lea    D41(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1574
  lea    D751(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L684
  lea    D98(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1041
  lea    D568(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1078
  lea    D172(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1399
  lea    D815(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L455
  lea    D158(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L638
  lea    D442(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L36
  lea    D586(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1459
  lea    D723(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L897
  lea    D338(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1152
  call   <test_vfs_trunc@plt>
  jmp    L194
L1181:
  lea    D164(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%eax
L194:
  pop    %rbx
  ret
L1191:
  call   <test_mmap@plt>
  jmp    L194
L1439:
  call   <test_munmap@plt>
  jmp    L194
L424:
  call   <test_munmap_sigsegv@plt>
  jmp    L194
L1060:
  call   <test_mmap_prot_none@plt>
  jmp    L194
L1566:
  call   <test_mmap_prot_read@plt>
  jmp    L194
L1139:
  call   <test_sbrk@plt>
  jmp    L194
L953:
  call   <test_sbrk_sigsegv@plt>
  jmp    L194
L416:
  call   <test_misbehave@plt>
  jmp    L194
L1418:
  call   <test_fd_read@plt>
  jmp    L194
L1392:
  call   <test_fd_devnull@plt>
  jmp    L194
L62:
  call   <test_fd_multidesc@plt>
  jmp    L194
L849:
  call   <test_fd_readwrite@plt>
  jmp    L194
L183:
  call   <test_fd_copy@plt>
  jmp    L194
L1190:
  call   <test_fd_bad_desc@plt>
  jmp    L194
L1061:
  call   <test_fd_open_path@plt>
  jmp    L194
L757:
  call   <test_fd_dup@plt>
  jmp    L194
L841:
  call   <test_fd_pipe@plt>
  jmp    L194
L123:
  call   <test_fd_readv@plt>
  jmp    L194
L204:
  call   <test_fd_writev@plt>
  jmp    L194
L867:
  call   <test_fd_all@plt>
  jmp    L194
L484:
  call   <test_signal_basic@plt>
  jmp    L194
L1215:
  call   <test_signal_send@plt>
  jmp    L194
L503:
  call   <test_signal_abort@plt>
  jmp    L194
L385:
  call   <test_signal_segfault@plt>
  jmp    L194
L616:
  call   <test_signal_stop@plt>
  jmp    L194
L1113:
  call   <test_signal_cont_masked@plt>
  jmp    L194
L850:
  call   <test_signal_mask@plt>
  jmp    L194
L125:
  call   <test_signal_mask_nonmaskable@plt>
  jmp    L194
L726:
  call   <test_signal_sigsuspend@plt>
  jmp    L194
L1115:
  call   <test_signal_sigsuspend_stop@plt>
  jmp    L194
L917:
  call   <test_signal_handler_mask@plt>
  jmp    L194
L1251:
  call   <test_fork_wait@plt>
  jmp    L194
L883:
  call   <test_fork_signal@plt>
  jmp    L194
L1277:
  call   <test_fork_sigchld_ignored@plt>
  jmp    L194
L195:
  call   <test_lseek_basic@plt>
  jmp    L194
L1475:
  call   <test_lseek_errors@plt>
  jmp    L194
L1417:
  call   <test_access_basic@plt>
  jmp    L194
L160:
  call   <test_stat@plt>
  jmp    L194
L1574:
  call   <test_fstat@plt>
  jmp    L194
L684:
  call   <test_setjmp@plt>
  jmp    L194
L1041:
  call   <test_sigaction_with_setjmp@plt>
  jmp    L194
L1078:
  call   <test_sigaction_handler_returns@plt>
  jmp    L194
L1399:
  call   <test_vfs_dir@plt>
  jmp    L194
L455:
  call   <test_vfs_rw@plt>
  jmp    L194
L638:
  call   <test_vfs_relative_dir@plt>
  jmp    L194
L36:
  call   <test_vfs_dot_dot_dir@plt>
  jmp    L194
L1459:
  call   <test_vfs_dot_dir@plt>
  jmp    L194
L897:
  call   <test_vfs_dot_dot_across_fs@plt>
  jmp    L194
L1152:
  lea    D383(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1304
  lea    D81(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L219
  lea    D183(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L60
  call   <test_vfs_chmod@plt>
  jmp    L194
L1304:
  call   <test_vfs_symlink@plt>
  jmp    L194
L219:
  call   <test_vfs_link@plt>
  jmp    L194
L60:
  lea    D459(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L714
  call   <test_wait_basic@plt>
  jmp    L194
L714:
  lea    D481(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1521
  call   <test_wait_nohang@plt>
  jmp    L194
L1521:
  lea    D735(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L523
  call   <test_setpgid@plt>
  jmp    L194
L523:
  lea    D224(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L203
  call   <test_setpgid_leader@plt>
  jmp    L194
L203:
  lea    D119(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L341
  call   <test_setpgid_child@plt>
  jmp    L194
L341:
  lea    D166(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1342
  call   <test_kill@plt>
  jmp    L194
L1342:
  lea    D451(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L379
  call   <test_killpg_same_group@plt>
  jmp    L194
L379:
  lea    D51(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1485
  call   <test_killpg_other_group@plt>
  jmp    L194
L1485:
  lea    D611(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1033
  call   <test_pgrp_orphan@plt>
  jmp    L194
L1033:
  lea    D562(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1354
  call   <test_session_basic@plt>
  jmp    L194
L1354:
  lea    D249(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1590
  call   <test_session_login_name@plt>
  jmp    L194
L1590:
  lea    D9(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1059
  call   <test_getcwd@plt>
  jmp    L194
L1059:
  lea    D744(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L74
  call   <test_gettimeofday@plt>
  jmp    L194
L74:
  lea    D432(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L295
  call   <test_nanosleep@plt>
  jmp    L194
L295:
  lea    D134(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L58
  call   <test_itimer@plt>
  jmp    L194
L58:
  lea    D149(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1242
  call   <test_get_set_uid@plt>
  jmp    L194
L1242:
  lea    D450(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1359
  call   <test_get_set_gid@plt>
  jmp    L194
L1359:
  lea    D365(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L403
  call   <test_get_set_groups@plt>
  jmp    L194
L403:
  lea    D326(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L961
  call   <test_sharing_memory_simple@plt>
  jmp    L194
L961:
  lea    D345(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L560
  call   <test_sharing_memory_child_and_grandchild@plt>
  jmp    L194
L560:
  lea    D651(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1012
  call   <test_pty_simple@plt>
  jmp    L194
L1012:
  lea    D195(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1149
  call   <test_tty_canon@plt>
  jmp    L194
L1149:
  lea    D725(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L795
  call   <test_tty_echo@plt>
  jmp    L194
L795:
  lea    D745(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L534
  call   <test_tty_signals@plt>
  jmp    L194
L534:
  lea    D657(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L772
  call   <test_procstat@plt>
  jmp    L194
L772:
  lea    D616(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1287
  call   <test_pipe_parent_signaled@plt>
  jmp    L194
L1287:
  lea    D729(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1413
  call   <test_pipe_child_signaled@plt>
  jmp    L194
L1413:
  mov    %rbx,%rsi
  lea    D554(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%eax
  jmp    L194
```

tool_calls: name: read_data
arguments: tag: D761
type_guessed: string
name: read_data
arguments: tag: D576
type_guessed: string
name: read_data
arguments: tag: D588
type_guessed: string
name: read_data
arguments: tag: D615
type_guessed: string
name: read_data
arguments: tag: D581
type_guessed: string
name: read_data
arguments: tag: D599
type_guessed: string
name: read_data
arguments: tag: D520
type_guessed: string
name: read_data
arguments: tag: D697
type_guessed: string
name: read_data
arguments: tag: D482
type_guessed: string
name: read_data
arguments: tag: D250
type_guessed: string
name: read_data
arguments: tag: D515
type_guessed: string
name: read_data
arguments: tag: D677
type_guessed: string
name: read_data
arguments: tag: D423
type_guessed: string
name: read_data
arguments: tag: D533
type_guessed: string
name: read_data
arguments: tag: D550
type_guessed: string
name: read_data
arguments: tag: D564
type_guessed: string
name: read_data
arguments: tag: D151
type_guessed: string
name: read_data
arguments: tag: D159
type_guessed: string
name: read_data
arguments: tag: D301
type_guessed: string
name: read_data
arguments: tag: D63
type_guessed: string
name: read_data
arguments: tag: D55
type_guessed: string
name: read_data
arguments: tag: D368
type_guessed: string
name: read_data
arguments: tag: D80
type_guessed: string
name: read_data
arguments: tag: D483
type_guessed: string
name: read_data
arguments: tag: D508
type_guessed: string
name: read_data
arguments: tag: D439
type_guessed: string
name: read_data
arguments: tag: D726
type_guessed: string
name: read_data
arguments: tag: D219
type_guessed: string
name: read_data
arguments: tag: D283
type_guessed: string
name: read_data
arguments: tag: D713
type_guessed: string
name: read_data
arguments: tag: D763
type_guessed: string
name: read_data
arguments: tag: D529
type_guessed: string
name: read_data
arguments: tag: D537
type_guessed: string
name: read_data
arguments: tag: D99
type_guessed: string
name: read_data
arguments: tag: D327
type_guessed: string
name: read_data
arguments: tag: D175
type_guessed: string
name: read_data
arguments: tag: D443
type_guessed: string
name: read_data
arguments: tag: D530
type_guessed: string
name: read_data
arguments: tag: D339
type_guessed: string
name: read_data
arguments: tag: D41
type_guessed: string
name: read_data
arguments: tag: D751
type_guessed: string
name: read_data
arguments: tag: D98
type_guessed: string
name: read_data
arguments: tag: D568
type_guessed: string
name: read_data
arguments: tag: D172
type_guessed: string
name: read_data
arguments: tag: D815
type_guessed: string
name: read_data
arguments: tag: D158
type_guessed: string
name: read_data
arguments: tag: D442
type_guessed: string
name: read_data
arguments: tag: D586
type_guessed: string
name: read_data
arguments: tag: D723
type_guessed: string
name: read_data
arguments: tag: D338
type_guessed: string
name: read_data
arguments: tag: D164
type_guessed: string
name: read_data
arguments: tag: D383
type_guessed: string
name: read_data
arguments: tag: D81
type_guessed: string
name: read_data
arguments: tag: D183
type_guessed: string
name: read_data
arguments: tag: D459
type_guessed: string
name: read_data
arguments: tag: D481
type_guessed: string
name: read_data
arguments: tag: D735
type_guessed: string
name: read_data
arguments: tag: D224
type_guessed: string
name: read_data
arguments: tag: D119
type_guessed: string
name: read_data
arguments: tag: D166
type_guessed: string
name: read_data
arguments: tag: D451
type_guessed: string
name: read_data
arguments: tag: D51
type_guessed: string
name: read_data
arguments: tag: D611
type_guessed: string
name: read_data
arguments: tag: D562
type_guessed: string
name: read_data
arguments: tag: D249
type_guessed: string
name: read_data
arguments: tag: D9
type_guessed: string
name: read_data
arguments: tag: D744
type_guessed: string
name: read_data
arguments: tag: D432
type_guessed: string
name: read_data
arguments: tag: D134
type_guessed: string
name: read_data
arguments: tag: D149
type_guessed: string
name: read_data
arguments: tag: D450
type_guessed: string
name: read_data
arguments: tag: D365
type_guessed: string
name: read_data
arguments: tag: D326
type_guessed: string
name: read_data
arguments: tag: D345
type_guessed: string
name: read_data
arguments: tag: D651
type_guessed: string
name: read_data
arguments: tag: D195
type_guessed: string
name: read_data
arguments: tag: D725
type_guessed: string
name: read_data
arguments: tag: D745
type_guessed: string
name: read_data
arguments: tag: D657
type_guessed: string
name: read_data
arguments: tag: D616
type_guessed: string
name: read_data
arguments: tag: D729
type_guessed: string
name: read_data
arguments: tag: D554
type_guessed: string

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


tool: D576: mmap

tool: D588: munmap

tool: D615: munmap_sigsegv

tool: D581: mmap_prot_none

tool: D599: mmap_prot_read

tool: D520: sbrk

tool: D697: sbrk_sigsegv

tool: D482: misbehave

tool: D250: fd_read

tool: D515: fd_devnull

tool: D677: fd_multidesc

tool: D423: fd_readwrite

tool: D533: fd_copy

tool: D550: fd_bad_desc

tool: D564: fd_open_path

tool: D151: fd_dup

tool: D159: fd_pipe

tool: D301: fd_readv

tool: D63: fd_writev

tool: D55: fd_all

tool: D368: signal_basic

tool: D80: signal_send

tool: D483: signal_abort

tool: D508: signal_segfault

tool: D439: signal_stop

tool: D726: signal_cont_masked

tool: D219: signal_mask

tool: D283: signal_mask_nonmaskable

tool: D713: signal_sigsuspend

tool: D763: signal_sigsuspend_stop

tool: D529: signal_handler_mask

tool: D537: fork_wait

tool: D99: fork_signal

tool: D327: fork_sigchld_ignored

tool: D175: lseek_basic

tool: D443: lseek_errors

tool: D530: access_basic

tool: D339: stat

tool: D41: fstat

tool: D751: setjmp

tool: D98: sigaction_with_setjmp

tool: D568: sigaction_handler_returns

tool: D172: vfs_dir

tool: D815: vfs_rw

tool: D158: vfs_relative_dir

tool: D442: vfs_dot_dot_dir

tool: D586: vfs_dot_dir

tool: D723: vfs_dot_dot_across_fs

tool: D338: vfs_trunc

tool: D164: Not enough arguments provided to utest.

tool: D383: vfs_symlink

tool: D81: vfs_link

tool: D183: vfs_chmod

tool: D459: wait_basic

tool: D481: wait_nohang

tool: D735: setpgid

tool: D224: setpgid_leader

tool: D119: setpgid_child

tool: D166: kill

tool: D451: killpg_same_group

tool: D51: killpg_other_group

tool: D611: pgrp_orphan

tool: D562: session_basic

tool: D249: session_login_name

tool: D9: getcwd

tool: D744: gettimeofday

tool: D432: nanosleep

tool: D134: itimer

tool: D149: get_set_uid

tool: D450: get_set_gid

tool: D365: get_set_groups

tool: D326: sharing_memory_simple

tool: D345: sharing_memory_child_and_grandchild

tool: D651: pty_simple

tool: D195: tty_canon

tool: D725: tty_echo

tool: D745: tty_signals

tool: D657: procstat

tool: D616: pipe_parent_signaled

tool: D729: pipe_child_signaled

tool: D554: 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") == 0)
    return test_munmap();
  ;
  if (strcmp(test_name, "munmap_sigsegv") == 0)
    return test_munmap_sigsegv();
  ;
  if (strcmp(test_name, "mmap_prot_none") == 0)
    return test_mmap_prot_none();
  ;
  if (strcmp(test_name, "mmap_prot_read") == 0)
    return test_mmap_prot_read();
  ;
  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_readv") == 0)
    return test_fd_readv();
  ;
  if (strcmp(test_name, "fd_writev") == 0)
    return test_fd_writev();
  ;
  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, "itimer") == 0)
    return test_itimer();
  ;
  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();
  ;
  if (strcmp(test_name, "pty_simple") == 0)
    return test_pty_simple();
  ;
  if (strcmp(test_name, "tty_canon") == 0)
    return test_tty_canon();
  ;
  if (strcmp(test_name, "tty_echo") == 0)
    return test_tty_echo();
  ;
  if (strcmp(test_name, "tty_signals") == 0)
    return test_tty_signals();
  ;
  if (strcmp(test_name, "procstat") == 0)
    return test_procstat();
  ;
  if (strcmp(test_name, "pipe_parent_signaled") == 0)
    return test_pipe_parent_signaled();
  ;
  if (strcmp(test_name, "pipe_child_signaled") == 0)
    return test_pipe_child_signaled();
  ;
  printf("No user test \"%s\" available.\n", test_name);
  return 1;
}
```