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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  cmpl   $0x1,-0x14(%rbp)
  jg     L528
  lea    D601(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x1,%eax
  jmp    L69
L528:
  mov    -0x20(%rbp),%rax
  mov    0x8(%rax),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D670(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  lea    D18(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L129
  mov    $0x0,%eax
  call   <test_mmap@plt>
  jmp    L69
L129:
  mov    -0x8(%rbp),%rax
  lea    D646(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L238
  mov    $0x0,%eax
  call   <test_munmap_sigsegv@plt>
  jmp    L69
L238:
  mov    -0x8(%rbp),%rax
  lea    D593(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1004
  mov    $0x0,%eax
  call   <test_sbrk@plt>
  jmp    L69
L1004:
  mov    -0x8(%rbp),%rax
  lea    D269(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1130
  mov    $0x0,%eax
  call   <test_sbrk_sigsegv@plt>
  jmp    L69
L1130:
  mov    -0x8(%rbp),%rax
  lea    D618(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1222
  mov    $0x0,%eax
  call   <test_misbehave@plt>
  jmp    L69
L1222:
  mov    -0x8(%rbp),%rax
  lea    D262(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L376
  mov    $0x0,%eax
  call   <test_fd_read@plt>
  jmp    L69
L376:
  mov    -0x8(%rbp),%rax
  lea    D207(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1027
  mov    $0x0,%eax
  call   <test_fd_devnull@plt>
  jmp    L69
L1027:
  mov    -0x8(%rbp),%rax
  lea    D279(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L148
  mov    $0x0,%eax
  call   <test_fd_multidesc@plt>
  jmp    L69
L148:
  mov    -0x8(%rbp),%rax
  lea    D553(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L979
  mov    $0x0,%eax
  call   <test_fd_readwrite@plt>
  jmp    L69
L979:
  mov    -0x8(%rbp),%rax
  lea    D242(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L499
  mov    $0x0,%eax
  call   <test_fd_copy@plt>
  jmp    L69
L499:
  mov    -0x8(%rbp),%rax
  lea    D355(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1304
  mov    $0x0,%eax
  call   <test_fd_bad_desc@plt>
  jmp    L69
L1304:
  mov    -0x8(%rbp),%rax
  lea    D139(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1278
  mov    $0x0,%eax
  call   <test_fd_open_path@plt>
  jmp    L69
L1278:
  mov    -0x8(%rbp),%rax
  lea    D681(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1143
  mov    $0x0,%eax
  call   <test_fd_dup@plt>
  jmp    L69
L1143:
  mov    -0x8(%rbp),%rax
  lea    D162(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1085
  mov    $0x0,%eax
  call   <test_fd_pipe@plt>
  jmp    L69
L1085:
  mov    -0x8(%rbp),%rax
  lea    D202(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L41
  mov    $0x0,%eax
  call   <test_fd_all@plt>
  jmp    L69
L41:
  mov    -0x8(%rbp),%rax
  lea    D398(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L172
  mov    $0x0,%eax
  call   <test_signal_basic@plt>
  jmp    L69
L172:
  mov    -0x8(%rbp),%rax
  lea    D374(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L583
  mov    $0x0,%eax
  call   <test_signal_send@plt>
  jmp    L69
L583:
  mov    -0x8(%rbp),%rax
  lea    D583(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1329
  mov    $0x0,%eax
  call   <test_signal_abort@plt>
  jmp    L69
L1329:
  mov    -0x8(%rbp),%rax
  lea    D223(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1214
  mov    $0x0,%eax
  call   <test_signal_segfault@plt>
  jmp    L69
L1214:
  mov    -0x8(%rbp),%rax
  lea    D94(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L80
  mov    $0x0,%eax
  call   <test_signal_stop@plt>
  jmp    L69
L80:
  mov    -0x8(%rbp),%rax
  lea    D95(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L602
  mov    $0x0,%eax
  call   <test_signal_cont_masked@plt>
  jmp    L69
L602:
  mov    -0x8(%rbp),%rax
  lea    D212(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L999
  mov    $0x0,%eax
  call   <test_signal_mask@plt>
  jmp    L69
L999:
  mov    -0x8(%rbp),%rax
  lea    D53(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L381
  mov    $0x0,%eax
  call   <test_signal_mask_nonmaskable@plt>
  jmp    L69
L381:
  mov    -0x8(%rbp),%rax
  lea    D573(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L9
  mov    $0x0,%eax
  call   <test_signal_sigsuspend@plt>
  jmp    L69
L9:
  mov    -0x8(%rbp),%rax
  lea    D268(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L606
  mov    $0x0,%eax
  call   <test_signal_sigsuspend_stop@plt>
  jmp    L69
L606:
  mov    -0x8(%rbp),%rax
  lea    D2(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L382
  mov    $0x0,%eax
  call   <test_signal_handler_mask@plt>
  jmp    L69
L382:
  mov    -0x8(%rbp),%rax
  lea    D407(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L618
  mov    $0x0,%eax
  call   <test_fork_wait@plt>
  jmp    L69
L618:
  mov    -0x8(%rbp),%rax
  lea    D124(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1077
  mov    $0x0,%eax
  call   <test_fork_signal@plt>
  jmp    L69
L1077:
  mov    -0x8(%rbp),%rax
  lea    D22(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1146
  mov    $0x0,%eax
  call   <test_fork_sigchld_ignored@plt>
  jmp    L69
L1146:
  mov    -0x8(%rbp),%rax
  lea    D541(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L888
  mov    $0x0,%eax
  call   <test_lseek_basic@plt>
  jmp    L69
L888:
  mov    -0x8(%rbp),%rax
  lea    D115(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1032
  mov    $0x0,%eax
  call   <test_lseek_errors@plt>
  jmp    L69
L1032:
  mov    -0x8(%rbp),%rax
  lea    D512(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L142
  mov    $0x0,%eax
  call   <test_access_basic@plt>
  jmp    L69
L142:
  mov    -0x8(%rbp),%rax
  lea    D337(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1053
  mov    $0x0,%eax
  call   <test_stat@plt>
  jmp    L69
L1053:
  mov    -0x8(%rbp),%rax
  lea    D621(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L11
  mov    $0x0,%eax
  call   <test_fstat@plt>
  jmp    L69
L11:
  mov    -0x8(%rbp),%rax
  lea    D673(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L406
  mov    $0x0,%eax
  call   <test_setjmp@plt>
  jmp    L69
L406:
  mov    -0x8(%rbp),%rax
  lea    D467(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L833
  mov    $0x0,%eax
  call   <test_sigaction_with_setjmp@plt>
  jmp    L69
L833:
  mov    -0x8(%rbp),%rax
  lea    D624(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L710
  mov    $0x0,%eax
  call   <test_sigaction_handler_returns@plt>
  jmp    L69
L710:
  mov    -0x8(%rbp),%rax
  lea    D135(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L87
  mov    $0x0,%eax
  call   <test_vfs_dir@plt>
  jmp    L69
L87:
  mov    -0x8(%rbp),%rax
  lea    D109(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1023
  mov    $0x0,%eax
  call   <test_vfs_rw@plt>
  jmp    L69
L1023:
  mov    -0x8(%rbp),%rax
  lea    D114(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L578
  mov    $0x0,%eax
  call   <test_vfs_relative_dir@plt>
  jmp    L69
L578:
  mov    -0x8(%rbp),%rax
  lea    D535(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L78
  mov    $0x0,%eax
  call   <test_vfs_dot_dot_dir@plt>
  jmp    L69
L78:
  mov    -0x8(%rbp),%rax
  lea    D86(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L556
  mov    $0x0,%eax
  call   <test_vfs_dot_dir@plt>
  jmp    L69
L556:
  mov    -0x8(%rbp),%rax
  lea    D493(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L943
  mov    $0x0,%eax
  call   <test_vfs_dot_dot_across_fs@plt>
  jmp    L69
L943:
  mov    -0x8(%rbp),%rax
  lea    D161(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L309
  mov    $0x0,%eax
  call   <test_vfs_trunc@plt>
  jmp    L69
L309:
  mov    -0x8(%rbp),%rax
  lea    D197(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L37
  mov    $0x0,%eax
  call   <test_vfs_symlink@plt>
  jmp    L69
L37:
  mov    -0x8(%rbp),%rax
  lea    D400(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1215
  mov    $0x0,%eax
  call   <test_vfs_link@plt>
  jmp    L69
L1215:
  mov    -0x8(%rbp),%rax
  lea    D639(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L898
  mov    $0x0,%eax
  call   <test_vfs_chmod@plt>
  jmp    L69
L898:
  mov    -0x8(%rbp),%rax
  lea    D213(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L306
  mov    $0x0,%eax
  call   <test_wait_basic@plt>
  jmp    L69
L306:
  mov    -0x8(%rbp),%rax
  lea    D20(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L851
  mov    $0x0,%eax
  call   <test_wait_nohang@plt>
  jmp    L69
L851:
  mov    -0x8(%rbp),%rax
  lea    D665(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L104
  mov    $0x0,%eax
  call   <test_setpgid@plt>
  jmp    L69
L104:
  mov    -0x8(%rbp),%rax
  lea    D200(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1216
  mov    $0x0,%eax
  call   <test_setpgid_leader@plt>
  jmp    L69
L1216:
  mov    -0x8(%rbp),%rax
  lea    D539(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L950
  mov    $0x0,%eax
  call   <test_setpgid_child@plt>
  jmp    L69
L950:
  mov    -0x8(%rbp),%rax
  lea    D77(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L527
  mov    $0x0,%eax
  call   <test_kill@plt>
  jmp    L69
L527:
  mov    -0x8(%rbp),%rax
  lea    D129(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L569
  mov    $0x0,%eax
  call   <test_killpg_same_group@plt>
  jmp    L69
L569:
  mov    -0x8(%rbp),%rax
  lea    D647(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1153
  mov    $0x0,%eax
  call   <test_killpg_other_group@plt>
  jmp    L69
L1153:
  mov    -0x8(%rbp),%rax
  lea    D642(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L410
  mov    $0x0,%eax
  call   <test_pgrp_orphan@plt>
  jmp    L69
L410:
  mov    -0x8(%rbp),%rax
  lea    D261(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L706
  mov    $0x0,%eax
  call   <test_session_basic@plt>
  jmp    L69
L706:
  mov    -0x8(%rbp),%rax
  lea    D515(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L699
  mov    $0x0,%eax
  call   <test_session_login_name@plt>
  jmp    L69
L699:
  mov    -0x8(%rbp),%rax
  lea    D300(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L891
  mov    $0x0,%eax
  call   <test_getcwd@plt>
  jmp    L69
L891:
  mov    -0x8(%rbp),%rax
  lea    D409(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L1141
  mov    $0x0,%eax
  call   <test_gettimeofday@plt>
  jmp    L69
L1141:
  mov    -0x8(%rbp),%rax
  lea    D231(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L575
  mov    $0x0,%eax
  call   <test_nanosleep@plt>
  jmp    L69
L575:
  mov    -0x8(%rbp),%rax
  lea    D32(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L44
  mov    $0x0,%eax
  call   <test_get_set_uid@plt>
  jmp    L69
L44:
  mov    -0x8(%rbp),%rax
  lea    D309(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L33
  mov    $0x0,%eax
  call   <test_get_set_gid@plt>
  jmp    L69
L33:
  mov    -0x8(%rbp),%rax
  lea    D216(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L231
  mov    $0x0,%eax
  call   <test_get_set_groups@plt>
  jmp    L69
L231:
  mov    -0x8(%rbp),%rax
  lea    D101(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L460
  mov    $0x0,%eax
  call   <test_sharing_memory_simple@plt>
  jmp    L69
L460:
  mov    -0x8(%rbp),%rax
  lea    D584(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L669
  mov    $0x0,%eax
  call   <test_sharing_memory_child_and_grandchild@plt>
  jmp    L69
L669:
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D253(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L69:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D601
data_type: string
name: extract_symbolic_data
arguments: data_label: D670
data_type: string
name: extract_symbolic_data
arguments: data_label: D18
data_type: string
name: extract_symbolic_data
arguments: data_label: D646
data_type: string
name: extract_symbolic_data
arguments: data_label: D593
data_type: string
name: extract_symbolic_data
arguments: data_label: D269
data_type: string
name: extract_symbolic_data
arguments: data_label: D618
data_type: string
name: extract_symbolic_data
arguments: data_label: D262
data_type: string
name: extract_symbolic_data
arguments: data_label: D207
data_type: string
name: extract_symbolic_data
arguments: data_label: D279
data_type: string
name: extract_symbolic_data
arguments: data_label: D553
data_type: string
name: extract_symbolic_data
arguments: data_label: D242
data_type: string
name: extract_symbolic_data
arguments: data_label: D355
data_type: string
name: extract_symbolic_data
arguments: data_label: D139
data_type: string
name: extract_symbolic_data
arguments: data_label: D681
data_type: string
name: extract_symbolic_data
arguments: data_label: D162
data_type: string
name: extract_symbolic_data
arguments: data_label: D202
data_type: string
name: extract_symbolic_data
arguments: data_label: D398
data_type: string
name: extract_symbolic_data
arguments: data_label: D374
data_type: string
name: extract_symbolic_data
arguments: data_label: D583
data_type: string
name: extract_symbolic_data
arguments: data_label: D223
data_type: string
name: extract_symbolic_data
arguments: data_label: D94
data_type: string
name: extract_symbolic_data
arguments: data_label: D95
data_type: string
name: extract_symbolic_data
arguments: data_label: D212
data_type: string
name: extract_symbolic_data
arguments: data_label: D53
data_type: string
name: extract_symbolic_data
arguments: data_label: D573
data_type: string
name: extract_symbolic_data
arguments: data_label: D268
data_type: string
name: extract_symbolic_data
arguments: data_label: D2
data_type: string
name: extract_symbolic_data
arguments: data_label: D407
data_type: string
name: extract_symbolic_data
arguments: data_label: D124
data_type: string
name: extract_symbolic_data
arguments: data_label: D22
data_type: string
name: extract_symbolic_data
arguments: data_label: D541
data_type: string
name: extract_symbolic_data
arguments: data_label: D115
data_type: string
name: extract_symbolic_data
arguments: data_label: D512
data_type: string
name: extract_symbolic_data
arguments: data_label: D337
data_type: string
name: extract_symbolic_data
arguments: data_label: D621
data_type: string
name: extract_symbolic_data
arguments: data_label: D673
data_type: string
name: extract_symbolic_data
arguments: data_label: D467
data_type: string
name: extract_symbolic_data
arguments: data_label: D624
data_type: string
name: extract_symbolic_data
arguments: data_label: D135
data_type: string
name: extract_symbolic_data
arguments: data_label: D109
data_type: string
name: extract_symbolic_data
arguments: data_label: D114
data_type: string
name: extract_symbolic_data
arguments: data_label: D535
data_type: string
name: extract_symbolic_data
arguments: data_label: D86
data_type: string
name: extract_symbolic_data
arguments: data_label: D493
data_type: string
name: extract_symbolic_data
arguments: data_label: D161
data_type: string
name: extract_symbolic_data
arguments: data_label: D197
data_type: string
name: extract_symbolic_data
arguments: data_label: D400
data_type: string
name: extract_symbolic_data
arguments: data_label: D639
data_type: string
name: extract_symbolic_data
arguments: data_label: D213
data_type: string
name: extract_symbolic_data
arguments: data_label: D20
data_type: string
name: extract_symbolic_data
arguments: data_label: D665
data_type: string
name: extract_symbolic_data
arguments: data_label: D200
data_type: string
name: extract_symbolic_data
arguments: data_label: D539
data_type: string
name: extract_symbolic_data
arguments: data_label: D77
data_type: string
name: extract_symbolic_data
arguments: data_label: D129
data_type: string
name: extract_symbolic_data
arguments: data_label: D647
data_type: string
name: extract_symbolic_data
arguments: data_label: D642
data_type: string
name: extract_symbolic_data
arguments: data_label: D261
data_type: string
name: extract_symbolic_data
arguments: data_label: D515
data_type: string
name: extract_symbolic_data
arguments: data_label: D300
data_type: string
name: extract_symbolic_data
arguments: data_label: D409
data_type: string
name: extract_symbolic_data
arguments: data_label: D231
data_type: string
name: extract_symbolic_data
arguments: data_label: D32
data_type: string
name: extract_symbolic_data
arguments: data_label: D309
data_type: string
name: extract_symbolic_data
arguments: data_label: D216
data_type: string
name: extract_symbolic_data
arguments: data_label: D101
data_type: string
name: extract_symbolic_data
arguments: data_label: D584
data_type: string
name: extract_symbolic_data
arguments: data_label: D253
data_type: string

tool: D601: Not enough arguments provided to utest.

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


tool: D18: mmap

tool: D646: munmap_sigsegv

tool: D593: sbrk

tool: D269: sbrk_sigsegv

tool: D618: misbehave

tool: D262: fd_read

tool: D207: fd_devnull

tool: D279: fd_multidesc

tool: D553: fd_readwrite

tool: D242: fd_copy

tool: D355: fd_bad_desc

tool: D139: fd_open_path

tool: D681: fd_dup

tool: D162: fd_pipe

tool: D202: fd_all

tool: D398: signal_basic

tool: D374: signal_send

tool: D583: signal_abort

tool: D223: signal_segfault

tool: D94: signal_stop

tool: D95: signal_cont_masked

tool: D212: signal_mask

tool: D53: signal_mask_nonmaskable

tool: D573: signal_sigsuspend

tool: D268: signal_sigsuspend_stop

tool: D2: signal_handler_mask

tool: D407: fork_wait

tool: D124: fork_signal

tool: D22: fork_sigchld_ignored

tool: D541: lseek_basic

tool: D115: lseek_errors

tool: D512: access_basic

tool: D337: stat

tool: D621: fstat

tool: D673: setjmp

tool: D467: sigaction_with_setjmp

tool: D624: sigaction_handler_returns

tool: D135: vfs_dir

tool: D109: vfs_rw

tool: D114: vfs_relative_dir

tool: D535: vfs_dot_dot_dir

tool: D86: vfs_dot_dir

tool: D493: vfs_dot_dot_across_fs

tool: D161: vfs_trunc

tool: D197: vfs_symlink

tool: D400: vfs_link

tool: D639: vfs_chmod

tool: D213: wait_basic

tool: D20: wait_nohang

tool: D665: setpgid

tool: D200: setpgid_leader

tool: D539: setpgid_child

tool: D77: kill

tool: D129: killpg_same_group

tool: D647: killpg_other_group

tool: D642: pgrp_orphan

tool: D261: session_basic

tool: D515: session_login_name

tool: D300: getcwd

tool: D409: gettimeofday

tool: D231: nanosleep

tool: D32: get_set_uid

tool: D309: get_set_gid

tool: D216: get_set_groups

tool: D101: sharing_memory_simple

tool: D584: sharing_memory_child_and_grandchild

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


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