user: What is the c source code of the assembly code below?

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  cmpl   $0x1,-0x14(%rbp)
  jg     L843
  lea    D425(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x1,%eax
  jmp    L1542
L843:
  mov    -0x20(%rbp),%rax
  mov    0x8(%rax),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D381(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  lea    D738(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L84
  mov    $0x0,%eax
  call   <test_mmap@plt>
  jmp    L1542
L84:
  mov    -0x8(%rbp),%rax
  lea    D344(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1111
  mov    $0x0,%eax
  call   <test_munmap@plt>
  jmp    L1542
L1111:
  mov    -0x8(%rbp),%rax
  lea    D505(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L977
  mov    $0x0,%eax
  call   <test_munmap_sigsegv@plt>
  jmp    L1542
L977:
  mov    -0x8(%rbp),%rax
  lea    D248(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L96
  mov    $0x0,%eax
  call   <test_mmap_prot_none@plt>
  jmp    L1542
L96:
  mov    -0x8(%rbp),%rax
  lea    D320(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1033
  mov    $0x0,%eax
  call   <test_mmap_prot_read@plt>
  jmp    L1542
L1033:
  mov    -0x8(%rbp),%rax
  lea    D159(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L29
  mov    $0x0,%eax
  call   <test_sbrk@plt>
  jmp    L1542
L29:
  mov    -0x8(%rbp),%rax
  lea    D720(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L420
  mov    $0x0,%eax
  call   <test_sbrk_sigsegv@plt>
  jmp    L1542
L420:
  mov    -0x8(%rbp),%rax
  lea    D686(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1590
  mov    $0x0,%eax
  call   <test_misbehave@plt>
  jmp    L1542
L1590:
  mov    -0x8(%rbp),%rax
  lea    D202(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L654
  mov    $0x0,%eax
  call   <test_fd_read@plt>
  jmp    L1542
L654:
  mov    -0x8(%rbp),%rax
  lea    D307(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1282
  mov    $0x0,%eax
  call   <test_fd_devnull@plt>
  jmp    L1542
L1282:
  mov    -0x8(%rbp),%rax
  lea    D476(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1389
  mov    $0x0,%eax
  call   <test_fd_multidesc@plt>
  jmp    L1542
L1389:
  mov    -0x8(%rbp),%rax
  lea    D477(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L457
  mov    $0x0,%eax
  call   <test_fd_readwrite@plt>
  jmp    L1542
L457:
  mov    -0x8(%rbp),%rax
  lea    D641(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1037
  mov    $0x0,%eax
  call   <test_fd_copy@plt>
  jmp    L1542
L1037:
  mov    -0x8(%rbp),%rax
  lea    D112(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1588
  mov    $0x0,%eax
  call   <test_fd_bad_desc@plt>
  jmp    L1542
L1588:
  mov    -0x8(%rbp),%rax
  lea    D335(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L530
  mov    $0x0,%eax
  call   <test_fd_open_path@plt>
  jmp    L1542
L530:
  mov    -0x8(%rbp),%rax
  lea    D436(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L751
  mov    $0x0,%eax
  call   <test_fd_dup@plt>
  jmp    L1542
L751:
  mov    -0x8(%rbp),%rax
  lea    D139(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L910
  mov    $0x0,%eax
  call   <test_fd_pipe@plt>
  jmp    L1542
L910:
  mov    -0x8(%rbp),%rax
  lea    D134(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L642
  mov    $0x0,%eax
  call   <test_fd_readv@plt>
  jmp    L1542
L642:
  mov    -0x8(%rbp),%rax
  lea    D44(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L482
  mov    $0x0,%eax
  call   <test_fd_writev@plt>
  jmp    L1542
L482:
  mov    -0x8(%rbp),%rax
  lea    D695(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L347
  mov    $0x0,%eax
  call   <test_fd_all@plt>
  jmp    L1542
L347:
  mov    -0x8(%rbp),%rax
  lea    D563(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L549
  mov    $0x0,%eax
  call   <test_signal_basic@plt>
  jmp    L1542
L549:
  mov    -0x8(%rbp),%rax
  lea    D509(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L664
  mov    $0x0,%eax
  call   <test_signal_send@plt>
  jmp    L1542
L664:
  mov    -0x8(%rbp),%rax
  lea    D768(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L301
  mov    $0x0,%eax
  call   <test_signal_abort@plt>
  jmp    L1542
L301:
  mov    -0x8(%rbp),%rax
  lea    D737(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L809
  mov    $0x0,%eax
  call   <test_signal_segfault@plt>
  jmp    L1542
L809:
  mov    -0x8(%rbp),%rax
  lea    D267(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L226
  mov    $0x0,%eax
  call   <test_signal_stop@plt>
  jmp    L1542
L226:
  mov    -0x8(%rbp),%rax
  lea    D629(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1520
  mov    $0x0,%eax
  call   <test_signal_cont_masked@plt>
  jmp    L1542
L1520:
  mov    -0x8(%rbp),%rax
  lea    D239(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L116
  mov    $0x0,%eax
  call   <test_signal_mask@plt>
  jmp    L1542
L116:
  mov    -0x8(%rbp),%rax
  lea    D416(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L790
  mov    $0x0,%eax
  call   <test_signal_mask_nonmaskable@plt>
  jmp    L1542
L790:
  mov    -0x8(%rbp),%rax
  lea    D814(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L772
  mov    $0x0,%eax
  call   <test_signal_sigsuspend@plt>
  jmp    L1542
L772:
  mov    -0x8(%rbp),%rax
  lea    D490(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1425
  mov    $0x0,%eax
  call   <test_signal_sigsuspend_stop@plt>
  jmp    L1542
L1425:
  mov    -0x8(%rbp),%rax
  lea    D362(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L399
  mov    $0x0,%eax
  call   <test_signal_handler_mask@plt>
  jmp    L1542
L399:
  mov    -0x8(%rbp),%rax
  lea    D479(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1595
  mov    $0x0,%eax
  call   <test_fork_wait@plt>
  jmp    L1542
L1595:
  mov    -0x8(%rbp),%rax
  lea    D446(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1027
  mov    $0x0,%eax
  call   <test_fork_signal@plt>
  jmp    L1542
L1027:
  mov    -0x8(%rbp),%rax
  lea    D130(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L259
  mov    $0x0,%eax
  call   <test_fork_sigchld_ignored@plt>
  jmp    L1542
L259:
  mov    -0x8(%rbp),%rax
  lea    D625(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1045
  mov    $0x0,%eax
  call   <test_lseek_basic@plt>
  jmp    L1542
L1045:
  mov    -0x8(%rbp),%rax
  lea    D110(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1358
  mov    $0x0,%eax
  call   <test_lseek_errors@plt>
  jmp    L1542
L1358:
  mov    -0x8(%rbp),%rax
  lea    D58(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L13
  mov    $0x0,%eax
  call   <test_access_basic@plt>
  jmp    L1542
L13:
  mov    -0x8(%rbp),%rax
  lea    D162(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1320
  mov    $0x0,%eax
  call   <test_stat@plt>
  jmp    L1542
L1320:
  mov    -0x8(%rbp),%rax
  lea    D793(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L942
  mov    $0x0,%eax
  call   <test_fstat@plt>
  jmp    L1542
L942:
  mov    -0x8(%rbp),%rax
  lea    D220(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1035
  mov    $0x0,%eax
  call   <test_setjmp@plt>
  jmp    L1542
L1035:
  mov    -0x8(%rbp),%rax
  lea    D195(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L985
  mov    $0x0,%eax
  call   <test_sigaction_with_setjmp@plt>
  jmp    L1542
L985:
  mov    -0x8(%rbp),%rax
  lea    D794(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L777
  mov    $0x0,%eax
  call   <test_sigaction_handler_returns@plt>
  jmp    L1542
L777:
  mov    -0x8(%rbp),%rax
  lea    D372(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1321
  mov    $0x0,%eax
  call   <test_vfs_dir@plt>
  jmp    L1542
L1321:
  mov    -0x8(%rbp),%rax
  lea    D259(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L807
  mov    $0x0,%eax
  call   <test_vfs_rw@plt>
  jmp    L1542
L807:
  mov    -0x8(%rbp),%rax
  lea    D121(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1174
  mov    $0x0,%eax
  call   <test_vfs_relative_dir@plt>
  jmp    L1542
L1174:
  mov    -0x8(%rbp),%rax
  lea    D478(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L249
  mov    $0x0,%eax
  call   <test_vfs_dot_dot_dir@plt>
  jmp    L1542
L249:
  mov    -0x8(%rbp),%rax
  lea    D242(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L930
  mov    $0x0,%eax
  call   <test_vfs_dot_dir@plt>
  jmp    L1542
L930:
  mov    -0x8(%rbp),%rax
  lea    D778(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1278
  mov    $0x0,%eax
  call   <test_vfs_dot_dot_across_fs@plt>
  jmp    L1542
L1278:
  mov    -0x8(%rbp),%rax
  lea    D204(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1242
  mov    $0x0,%eax
  call   <test_vfs_trunc@plt>
  jmp    L1542
L1242:
  mov    -0x8(%rbp),%rax
  lea    D155(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L378
  mov    $0x0,%eax
  call   <test_vfs_symlink@plt>
  jmp    L1542
L378:
  mov    -0x8(%rbp),%rax
  lea    D323(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L949
  mov    $0x0,%eax
  call   <test_vfs_link@plt>
  jmp    L1542
L949:
  mov    -0x8(%rbp),%rax
  lea    D414(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L148
  mov    $0x0,%eax
  call   <test_vfs_chmod@plt>
  jmp    L1542
L148:
  mov    -0x8(%rbp),%rax
  lea    D494(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L634
  mov    $0x0,%eax
  call   <test_wait_basic@plt>
  jmp    L1542
L634:
  mov    -0x8(%rbp),%rax
  lea    D254(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L895
  mov    $0x0,%eax
  call   <test_wait_nohang@plt>
  jmp    L1542
L895:
  mov    -0x8(%rbp),%rax
  lea    D46(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L242
  mov    $0x0,%eax
  call   <test_setpgid@plt>
  jmp    L1542
L242:
  mov    -0x8(%rbp),%rax
  lea    D262(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1470
  mov    $0x0,%eax
  call   <test_setpgid_leader@plt>
  jmp    L1542
L1470:
  mov    -0x8(%rbp),%rax
  lea    D200(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1567
  mov    $0x0,%eax
  call   <test_setpgid_child@plt>
  jmp    L1542
L1567:
  mov    -0x8(%rbp),%rax
  lea    D501(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L364
  mov    $0x0,%eax
  call   <test_kill@plt>
  jmp    L1542
L364:
  mov    -0x8(%rbp),%rax
  lea    D569(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L532
  mov    $0x0,%eax
  call   <test_killpg_same_group@plt>
  jmp    L1542
L532:
  mov    -0x8(%rbp),%rax
  lea    D440(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L929
  mov    $0x0,%eax
  call   <test_killpg_other_group@plt>
  jmp    L1542
L929:
  mov    -0x8(%rbp),%rax
  lea    D285(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L196
  mov    $0x0,%eax
  call   <test_pgrp_orphan@plt>
  jmp    L1542
L196:
  mov    -0x8(%rbp),%rax
  lea    D358(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L78
  mov    $0x0,%eax
  call   <test_session_basic@plt>
  jmp    L1542
L78:
  mov    -0x8(%rbp),%rax
  lea    D249(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L773
  mov    $0x0,%eax
  call   <test_session_login_name@plt>
  jmp    L1542
L773:
  mov    -0x8(%rbp),%rax
  lea    D253(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L512
  mov    $0x0,%eax
  call   <test_getcwd@plt>
  jmp    L1542
L512:
  mov    -0x8(%rbp),%rax
  lea    D459(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L844
  mov    $0x0,%eax
  call   <test_gettimeofday@plt>
  jmp    L1542
L844:
  mov    -0x8(%rbp),%rax
  lea    D265(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1029
  mov    $0x0,%eax
  call   <test_nanosleep@plt>
  jmp    L1542
L1029:
  mov    -0x8(%rbp),%rax
  lea    D310(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L725
  mov    $0x0,%eax
  call   <test_itimer@plt>
  jmp    L1542
L725:
  mov    -0x8(%rbp),%rax
  lea    D451(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1471
  mov    $0x0,%eax
  call   <test_get_set_uid@plt>
  jmp    L1542
L1471:
  mov    -0x8(%rbp),%rax
  lea    D306(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1101
  mov    $0x0,%eax
  call   <test_get_set_gid@plt>
  jmp    L1542
L1101:
  mov    -0x8(%rbp),%rax
  lea    D673(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L373
  mov    $0x0,%eax
  call   <test_get_set_groups@plt>
  jmp    L1542
L373:
  mov    -0x8(%rbp),%rax
  lea    D761(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1373
  mov    $0x0,%eax
  call   <test_sharing_memory_simple@plt>
  jmp    L1542
L1373:
  mov    -0x8(%rbp),%rax
  lea    D176(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1277
  mov    $0x0,%eax
  call   <test_sharing_memory_child_and_grandchild@plt>
  jmp    L1542
L1277:
  mov    -0x8(%rbp),%rax
  lea    D395(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L876
  mov    $0x0,%eax
  call   <test_pty_simple@plt>
  jmp    L1542
L876:
  mov    -0x8(%rbp),%rax
  lea    D595(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L819
  mov    $0x0,%eax
  call   <test_tty_canon@plt>
  jmp    L1542
L819:
  mov    -0x8(%rbp),%rax
  lea    D779(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L854
  mov    $0x0,%eax
  call   <test_tty_echo@plt>
  jmp    L1542
L854:
  mov    -0x8(%rbp),%rax
  lea    D251(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1356
  mov    $0x0,%eax
  call   <test_tty_signals@plt>
  jmp    L1542
L1356:
  mov    -0x8(%rbp),%rax
  lea    D273(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L967
  mov    $0x0,%eax
  call   <test_procstat@plt>
  jmp    L1542
L967:
  mov    -0x8(%rbp),%rax
  lea    D73(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1289
  mov    $0x0,%eax
  call   <test_pipe_parent_signaled@plt>
  jmp    L1542
L1289:
  mov    -0x8(%rbp),%rax
  lea    D812(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L878
  mov    $0x0,%eax
  call   <test_pipe_child_signaled@plt>
  jmp    L1542
L878:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D31(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L1542:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D425
datatype: string
name: read_data
arguments: label: D381
datatype: string
name: read_data
arguments: label: D738
datatype: string
name: read_data
arguments: label: D344
datatype: string
name: read_data
arguments: label: D505
datatype: string
name: read_data
arguments: label: D248
datatype: string
name: read_data
arguments: label: D320
datatype: string
name: read_data
arguments: label: D159
datatype: string
name: read_data
arguments: label: D720
datatype: string
name: read_data
arguments: label: D686
datatype: string
name: read_data
arguments: label: D202
datatype: string
name: read_data
arguments: label: D307
datatype: string
name: read_data
arguments: label: D476
datatype: string
name: read_data
arguments: label: D477
datatype: string
name: read_data
arguments: label: D641
datatype: string
name: read_data
arguments: label: D112
datatype: string
name: read_data
arguments: label: D335
datatype: string
name: read_data
arguments: label: D436
datatype: string
name: read_data
arguments: label: D139
datatype: string
name: read_data
arguments: label: D134
datatype: string
name: read_data
arguments: label: D44
datatype: string
name: read_data
arguments: label: D695
datatype: string
name: read_data
arguments: label: D563
datatype: string
name: read_data
arguments: label: D509
datatype: string
name: read_data
arguments: label: D768
datatype: string
name: read_data
arguments: label: D737
datatype: string
name: read_data
arguments: label: D267
datatype: string
name: read_data
arguments: label: D629
datatype: string
name: read_data
arguments: label: D239
datatype: string
name: read_data
arguments: label: D416
datatype: string
name: read_data
arguments: label: D814
datatype: string
name: read_data
arguments: label: D490
datatype: string
name: read_data
arguments: label: D362
datatype: string
name: read_data
arguments: label: D479
datatype: string
name: read_data
arguments: label: D446
datatype: string
name: read_data
arguments: label: D130
datatype: string
name: read_data
arguments: label: D625
datatype: string
name: read_data
arguments: label: D110
datatype: string
name: read_data
arguments: label: D58
datatype: string
name: read_data
arguments: label: D162
datatype: string
name: read_data
arguments: label: D793
datatype: string
name: read_data
arguments: label: D220
datatype: string
name: read_data
arguments: label: D195
datatype: string
name: read_data
arguments: label: D794
datatype: string
name: read_data
arguments: label: D372
datatype: string
name: read_data
arguments: label: D259
datatype: string
name: read_data
arguments: label: D121
datatype: string
name: read_data
arguments: label: D478
datatype: string
name: read_data
arguments: label: D242
datatype: string
name: read_data
arguments: label: D778
datatype: string
name: read_data
arguments: label: D204
datatype: string
name: read_data
arguments: label: D155
datatype: string
name: read_data
arguments: label: D323
datatype: string
name: read_data
arguments: label: D414
datatype: string
name: read_data
arguments: label: D494
datatype: string
name: read_data
arguments: label: D254
datatype: string
name: read_data
arguments: label: D46
datatype: string
name: read_data
arguments: label: D262
datatype: string
name: read_data
arguments: label: D200
datatype: string
name: read_data
arguments: label: D501
datatype: string
name: read_data
arguments: label: D569
datatype: string
name: read_data
arguments: label: D440
datatype: string
name: read_data
arguments: label: D285
datatype: string
name: read_data
arguments: label: D358
datatype: string
name: read_data
arguments: label: D249
datatype: string
name: read_data
arguments: label: D253
datatype: string
name: read_data
arguments: label: D459
datatype: string
name: read_data
arguments: label: D265
datatype: string
name: read_data
arguments: label: D310
datatype: string
name: read_data
arguments: label: D451
datatype: string
name: read_data
arguments: label: D306
datatype: string
name: read_data
arguments: label: D673
datatype: string
name: read_data
arguments: label: D761
datatype: string
name: read_data
arguments: label: D176
datatype: string
name: read_data
arguments: label: D395
datatype: string
name: read_data
arguments: label: D595
datatype: string
name: read_data
arguments: label: D779
datatype: string
name: read_data
arguments: label: D251
datatype: string
name: read_data
arguments: label: D273
datatype: string
name: read_data
arguments: label: D73
datatype: string
name: read_data
arguments: label: D812
datatype: string
name: read_data
arguments: label: D31
datatype: string

tool: D425: Not enough arguments provided to utest.

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


tool: D738: mmap

tool: D344: munmap

tool: D505: munmap_sigsegv

tool: D248: mmap_prot_none

tool: D320: mmap_prot_read

tool: D159: sbrk

tool: D720: sbrk_sigsegv

tool: D686: misbehave

tool: D202: fd_read

tool: D307: fd_devnull

tool: D476: fd_multidesc

tool: D477: fd_readwrite

tool: D641: fd_copy

tool: D112: fd_bad_desc

tool: D335: fd_open_path

tool: D436: fd_dup

tool: D139: fd_pipe

tool: D134: fd_readv

tool: D44: fd_writev

tool: D695: fd_all

tool: D563: signal_basic

tool: D509: signal_send

tool: D768: signal_abort

tool: D737: signal_segfault

tool: D267: signal_stop

tool: D629: signal_cont_masked

tool: D239: signal_mask

tool: D416: signal_mask_nonmaskable

tool: D814: signal_sigsuspend

tool: D490: signal_sigsuspend_stop

tool: D362: signal_handler_mask

tool: D479: fork_wait

tool: D446: fork_signal

tool: D130: fork_sigchld_ignored

tool: D625: lseek_basic

tool: D110: lseek_errors

tool: D58: access_basic

tool: D162: stat

tool: D793: fstat

tool: D220: setjmp

tool: D195: sigaction_with_setjmp

tool: D794: sigaction_handler_returns

tool: D372: vfs_dir

tool: D259: vfs_rw

tool: D121: vfs_relative_dir

tool: D478: vfs_dot_dot_dir

tool: D242: vfs_dot_dir

tool: D778: vfs_dot_dot_across_fs

tool: D204: vfs_trunc

tool: D155: vfs_symlink

tool: D323: vfs_link

tool: D414: vfs_chmod

tool: D494: wait_basic

tool: D254: wait_nohang

tool: D46: setpgid

tool: D262: setpgid_leader

tool: D200: setpgid_child

tool: D501: kill

tool: D569: killpg_same_group

tool: D440: killpg_other_group

tool: D285: pgrp_orphan

tool: D358: session_basic

tool: D249: session_login_name

tool: D253: getcwd

tool: D459: gettimeofday

tool: D265: nanosleep

tool: D310: itimer

tool: D451: get_set_uid

tool: D306: get_set_gid

tool: D673: get_set_groups

tool: D761: sharing_memory_simple

tool: D176: sharing_memory_child_and_grandchild

tool: D395: pty_simple

tool: D595: tty_canon

tool: D779: tty_echo

tool: D251: tty_signals

tool: D273: procstat

tool: D73: pipe_parent_signaled

tool: D812: pipe_child_signaled

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