#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
scalar_t__ strcmp(char *, char *);
int test_access_basic();
int test_fd_all();
int test_fd_bad_desc();
int test_fd_copy();
int test_fd_devnull();
int test_fd_dup();
int test_fd_multidesc();
int test_fd_open_path();
int test_fd_pipe();
int test_fd_read();
int test_fd_readwrite();
int test_fork_sigchld_ignored();
int test_fork_signal();
int test_fork_wait();
int test_fstat();
int test_get_set_gid();
int test_get_set_groups();
int test_get_set_uid();
int test_getcwd();
int test_gettimeofday();
int test_kill();
int test_killpg_other_group();
int test_killpg_same_group();
int test_lseek_basic();
int test_lseek_errors();
int test_misbehave();
int test_mmap();
int test_munmap_sigsegv();
int test_nanosleep();
int test_pgrp_orphan();
int test_sbrk();
int test_sbrk_sigsegv();
int test_session_basic();
int test_session_login_name();
int test_setjmp();
int test_setpgid();
int test_setpgid_child();
int test_setpgid_leader();
int test_sharing_memory_child_and_grandchild();
int test_sharing_memory_simple();
int test_sigaction_handler_returns();
int test_sigaction_with_setjmp();
int test_signal_abort();
int test_signal_basic();
int test_signal_cont_masked();
int test_signal_handler_mask();
int test_signal_mask();
int test_signal_mask_nonmaskable();
int test_signal_segfault();
int test_signal_send();
int test_signal_sigsuspend();
int test_signal_sigsuspend_stop();
int test_signal_stop();
int test_stat();
int test_vfs_chmod();
int test_vfs_dir();
int test_vfs_dot_dir();
int test_vfs_dot_dot_across_fs();
int test_vfs_dot_dot_dir();
int test_vfs_link();
int test_vfs_relative_dir();
int test_vfs_rw();
int test_vfs_symlink();
int test_vfs_trunc();
int test_wait_basic();
int test_wait_nohang();
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;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x2,-0x8(%rbp)
jge    257a <main+0x3a>
lea    0x1a99(%rip),%rdi
mov    $0x0,%al
call   21b0 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rsi
lea    0x1a98(%rip),%rdi
mov    $0x0,%al
call   21b0 <printf@plt>
mov    -0x18(%rbp),%rdi
lea    0x1aa0(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    25c1 <main+0x81>
mov    $0x0,%al
call   2270 <test_mmap@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1a7c(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    25ea <main+0xaa>
mov    $0x0,%al
call   23d0 <test_munmap_sigsegv@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1a62(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2613 <main+0xd3>
mov    $0x0,%al
call   2090 <test_sbrk@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1a3e(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    263c <main+0xfc>
mov    $0x0,%al
call   21c0 <test_sbrk_sigsegv@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1a22(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2665 <main+0x125>
mov    $0x0,%al
call   22a0 <test_misbehave@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1a03(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    268e <main+0x14e>
mov    $0x0,%al
call   20d0 <test_fd_read@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x19e2(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    26b7 <main+0x177>
mov    $0x0,%al
call   2180 <test_fd_devnull@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x19c4(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    26e0 <main+0x1a0>
mov    $0x0,%al
call   23a0 <test_fd_multidesc@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x19a8(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2709 <main+0x1c9>
mov    $0x0,%al
call   22d0 <test_fd_readwrite@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x198c(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2732 <main+0x1f2>
mov    $0x0,%al
call   20f0 <test_fd_copy@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x196b(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    275b <main+0x21b>
mov    $0x0,%al
call   23c0 <test_fd_bad_desc@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x194e(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2784 <main+0x244>
mov    $0x0,%al
call   2400 <test_fd_open_path@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1932(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    27ad <main+0x26d>
mov    $0x0,%al
call   2230 <test_fd_dup@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1910(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    27d6 <main+0x296>
mov    $0x0,%al
call   2050 <test_fd_pipe@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x18ef(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    27ff <main+0x2bf>
mov    $0x0,%al
call   2120 <test_fd_all@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x18cd(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2828 <main+0x2e8>
mov    $0x0,%al
call   2200 <test_signal_basic@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x18b1(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2851 <main+0x311>
mov    $0x0,%al
call   2110 <test_signal_send@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1894(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    287a <main+0x33a>
mov    $0x0,%al
call   2390 <test_signal_abort@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1878(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    28a3 <main+0x363>
mov    $0x0,%al
call   2440 <test_signal_segfault@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x185f(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    28cc <main+0x38c>
mov    $0x0,%al
call   2410 <test_signal_stop@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1842(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    28f5 <main+0x3b5>
mov    $0x0,%al
call   2360 <test_signal_cont_masked@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x182c(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    291e <main+0x3de>
mov    $0x0,%al
call   2060 <test_signal_mask@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x180f(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2947 <main+0x407>
mov    $0x0,%al
call   2370 <test_signal_mask_nonmaskable@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x17fe(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2970 <main+0x430>
mov    $0x0,%al
call   2460 <test_signal_sigsuspend@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x17e7(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2999 <main+0x459>
mov    $0x0,%al
call   2040 <test_signal_sigsuspend_stop@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x17d5(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    29c2 <main+0x482>
mov    $0x0,%al
call   2070 <test_signal_handler_mask@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x17c0(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    29eb <main+0x4ab>
mov    $0x0,%al
call   2240 <test_fork_wait@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x17a1(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2a14 <main+0x4d4>
mov    $0x0,%al
call   2350 <test_fork_signal@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1784(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2a3d <main+0x4fd>
mov    $0x0,%al
call   2430 <test_fork_sigchld_ignored@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1770(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2a66 <main+0x526>
mov    $0x0,%al
call   23b0 <test_lseek_basic@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1753(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2a8f <main+0x54f>
mov    $0x0,%al
call   2380 <test_lseek_errors@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1737(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2ab8 <main+0x578>
mov    $0x0,%al
call   2150 <test_access_basic@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x171c(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2ae1 <main+0x5a1>
mov    $0x0,%al
call   23e0 <test_stat@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x16f2(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2b0a <main+0x5ca>
mov    $0x0,%al
call   2100 <test_fstat@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x16de(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2b33 <main+0x5f3>
mov    $0x0,%al
call   2160 <test_setjmp@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x16a6(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2b5c <main+0x61c>
mov    $0x0,%al
call   2310 <test_sigaction_with_setjmp@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1693(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2b85 <main+0x645>
mov    $0x0,%al
call   2210 <test_sigaction_handler_returns@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1684(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2bae <main+0x66e>
mov    $0x0,%al
call   2320 <test_vfs_dir@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1663(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2bd7 <main+0x697>
mov    $0x0,%al
call   2170 <test_vfs_rw@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1641(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2c00 <main+0x6c0>
mov    $0x0,%al
call   2080 <test_vfs_relative_dir@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1629(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2c29 <main+0x6e9>
mov    $0x0,%al
call   2220 <test_vfs_dot_dot_dir@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1610(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2c52 <main+0x712>
mov    $0x0,%al
call   2340 <test_vfs_dot_dir@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x15f3(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2c7b <main+0x73b>
mov    $0x0,%al
call   2130 <test_vfs_dot_dot_across_fs@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x15e0(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2ca4 <main+0x764>
mov    $0x0,%al
call   21a0 <test_vfs_trunc@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x15c1(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2ccd <main+0x78d>
mov    $0x0,%al
call   2140 <test_vfs_symlink@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x15a4(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2cf6 <main+0x7b6>
mov    $0x0,%al
call   2450 <test_vfs_link@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1584(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2d1f <main+0x7df>
mov    $0x0,%al
call   2030 <test_vfs_chmod@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1565(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2d48 <main+0x808>
mov    $0x0,%al
call   20c0 <test_wait_basic@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1547(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2d71 <main+0x831>
mov    $0x0,%al
call   22b0 <test_wait_nohang@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x152a(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2d9a <main+0x85a>
mov    $0x0,%al
call   2330 <test_setpgid@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1509(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2dc3 <main+0x883>
mov    $0x0,%al
call   23f0 <test_setpgid_leader@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x14ef(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2dec <main+0x8ac>
mov    $0x0,%al
call   2420 <test_setpgid_child@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x14d4(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2e15 <main+0x8d5>
mov    $0x0,%al
call   2250 <test_kill@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x14b0(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2e3e <main+0x8fe>
mov    $0x0,%al
call   20b0 <test_killpg_same_group@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1499(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2e67 <main+0x927>
mov    $0x0,%al
call   20e0 <test_killpg_other_group@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1483(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2e90 <main+0x950>
mov    $0x0,%al
call   22f0 <test_pgrp_orphan@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1466(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2eb9 <main+0x979>
mov    $0x0,%al
call   2300 <test_session_basic@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x144b(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2ee2 <main+0x9a2>
mov    $0x0,%al
call   22e0 <test_session_login_name@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1435(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2f0b <main+0x9cb>
mov    $0x0,%al
call   22c0 <test_getcwd@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1413(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2f34 <main+0x9f4>
mov    $0x0,%al
call   20a0 <test_gettimeofday@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x13f7(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2f5d <main+0xa1d>
mov    $0x0,%al
call   2290 <test_nanosleep@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x13d8(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2f86 <main+0xa46>
mov    $0x0,%al
call   21d0 <test_get_set_uid@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x13bb(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2faf <main+0xa6f>
mov    $0x0,%al
call   2190 <test_get_set_gid@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x139e(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    2fd8 <main+0xa98>
mov    $0x0,%al
call   21e0 <test_get_set_groups@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1384(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    3001 <main+0xac1>
mov    $0x0,%al
call   2260 <test_sharing_memory_simple@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rdi
lea    0x1371(%rip),%rsi
call   2280 <strcmp@plt>
cmp    $0x0,%rax
jne    302a <main+0xaea>
mov    $0x0,%al
call   21f0 <test_sharing_memory_child_and_grandchild@plt>
mov    %eax,-0x4(%rbp)
jmp    3043 <main+0xb03>
mov    -0x18(%rbp),%rsi
lea    0x136c(%rip),%rdi
mov    $0x0,%al
call   21b0 <printf@plt>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
cmp    $0x1,%edi
jg     2569 <main+0x19>
lea    0xe39(%rip),%rdi
call   20d0 <puts@plt>
mov    $0x1,%eax
pop    %rbx
ret
mov    0x8(%rsi),%rbx
lea    0xa8c(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   21c0 <printf@plt>
lea    0xa95(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2bc4 <main+0x674>
lea    0xa82(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2bcc <main+0x67c>
lea    0xa79(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2bd4 <main+0x684>
lea    0xa66(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2bdc <main+0x68c>
lea    0xa5b(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2be4 <main+0x694>
lea    0xa4d(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2bec <main+0x69c>
lea    0xa3d(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2bf4 <main+0x6a4>
lea    0xa30(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2bfc <main+0x6ac>
lea    0xa25(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c04 <main+0x6b4>
lea    0xa1a(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c0c <main+0x6bc>
lea    0xa0a(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c14 <main+0x6c4>
lea    0x9fe(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c1c <main+0x6cc>
lea    0x9f3(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c24 <main+0x6d4>
lea    0x9e2(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c2c <main+0x6dc>
lea    0x9d2(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c34 <main+0x6e4>
lea    0x9c1(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c3c <main+0x6ec>
lea    0x9b6(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c44 <main+0x6f4>
lea    0x9aa(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c4c <main+0x6fc>
lea    0x99f(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c54 <main+0x704>
lea    0x997(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c5c <main+0x70c>
lea    0x98b(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c64 <main+0x714>
lea    0x986(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c6c <main+0x71c>
lea    0x97a(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c74 <main+0x724>
lea    0x97a(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c7c <main+0x72c>
lea    0x974(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c84 <main+0x734>
lea    0x973(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c8c <main+0x73c>
lea    0x96f(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c94 <main+0x744>
lea    0x961(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2c9c <main+0x74c>
lea    0x955(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2ca4 <main+0x754>
lea    0x952(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2cac <main+0x75c>
lea    0x946(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2cb4 <main+0x764>
lea    0x93b(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2cbc <main+0x76c>
lea    0x931(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2cc4 <main+0x774>
lea    0x918(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2ccc <main+0x77c>
lea    0x915(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2cd4 <main+0x784>
lea    0x8ee(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2cdc <main+0x78c>
lea    0x8ec(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2ce4 <main+0x794>
lea    0x8ee(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2cec <main+0x79c>
lea    0x8de(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2cf4 <main+0x7a4>
lea    0x8cd(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2cfc <main+0x7ac>
lea    0x8c6(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d04 <main+0x7b4>
lea    0x8be(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d0c <main+0x7bc>
lea    0x8b2(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d14 <main+0x7c4>
lea    0x8b0(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d1c <main+0x7cc>
lea    0x8a2(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d24 <main+0x7d4>
lea    0x896(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d2c <main+0x7dc>
lea    0x887(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d34 <main+0x7e4>
lea    0x879(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d3c <main+0x7ec>
lea    0x86c(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d44 <main+0x7f4>
lea    0x860(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d4c <main+0x7fc>
lea    0x850(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d54 <main+0x804>
lea    0x847(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d5c <main+0x80c>
lea    0x83d(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d64 <main+0x814>
lea    0x82a(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d6c <main+0x81c>
lea    0x824(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d74 <main+0x824>
lea    0x81f(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d7c <main+0x82c>
lea    0x813(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d84 <main+0x834>
lea    0x809(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d8c <main+0x83c>
lea    0x804(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d94 <main+0x844>
lea    0x7f3(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2d9c <main+0x84c>
lea    0x7e8(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2da4 <main+0x854>
lea    0x7da(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2dac <main+0x85c>
lea    0x7ce(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2db4 <main+0x864>
lea    0x7c2(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2dbc <main+0x86c>
lea    0x7b9(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2dc4 <main+0x874>
lea    0x7b7(%rip),%rsi
mov    %rbx,%rdi
call   2290 <strcmp@plt>
test   %rax,%rax
je     2dcc <main+0x87c>
lea    0x7c3(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   21c0 <printf@plt>
jmp    2562 <main+0x12>
xor    %eax,%eax
pop    %rbx
jmp    2280 <test_mmap@plt>
xor    %eax,%eax
pop    %rbx
jmp    23e0 <test_munmap_sigsegv@plt>
xor    %eax,%eax
pop    %rbx
jmp    2090 <test_sbrk@plt>
xor    %eax,%eax
pop    %rbx
jmp    21d0 <test_sbrk_sigsegv@plt>
xor    %eax,%eax
pop    %rbx
jmp    22b0 <test_misbehave@plt>
xor    %eax,%eax
pop    %rbx
jmp    20e0 <test_fd_read@plt>
xor    %eax,%eax
pop    %rbx
jmp    2190 <test_fd_devnull@plt>
xor    %eax,%eax
pop    %rbx
jmp    23b0 <test_fd_multidesc@plt>
xor    %eax,%eax
pop    %rbx
jmp    22e0 <test_fd_readwrite@plt>
xor    %eax,%eax
pop    %rbx
jmp    2100 <test_fd_copy@plt>
xor    %eax,%eax
pop    %rbx
jmp    23d0 <test_fd_bad_desc@plt>
xor    %eax,%eax
pop    %rbx
jmp    2410 <test_fd_open_path@plt>
xor    %eax,%eax
pop    %rbx
jmp    2240 <test_fd_dup@plt>
xor    %eax,%eax
pop    %rbx
jmp    2050 <test_fd_pipe@plt>
xor    %eax,%eax
pop    %rbx
jmp    2130 <test_fd_all@plt>
xor    %eax,%eax
pop    %rbx
jmp    2210 <test_signal_basic@plt>
xor    %eax,%eax
pop    %rbx
jmp    2120 <test_signal_send@plt>
xor    %eax,%eax
pop    %rbx
jmp    23a0 <test_signal_abort@plt>
xor    %eax,%eax
pop    %rbx
jmp    2450 <test_signal_segfault@plt>
xor    %eax,%eax
pop    %rbx
jmp    2420 <test_signal_stop@plt>
xor    %eax,%eax
pop    %rbx
jmp    2370 <test_signal_cont_masked@plt>
xor    %eax,%eax
pop    %rbx
jmp    2060 <test_signal_mask@plt>
xor    %eax,%eax
pop    %rbx
jmp    2380 <test_signal_mask_nonmaskable@plt>
xor    %eax,%eax
pop    %rbx
jmp    2470 <test_signal_sigsuspend@plt>
xor    %eax,%eax
pop    %rbx
jmp    2040 <test_signal_sigsuspend_stop@plt>
xor    %eax,%eax
pop    %rbx
jmp    2070 <test_signal_handler_mask@plt>
xor    %eax,%eax
pop    %rbx
jmp    2250 <test_fork_wait@plt>
xor    %eax,%eax
pop    %rbx
jmp    2360 <test_fork_signal@plt>
xor    %eax,%eax
pop    %rbx
jmp    2440 <test_fork_sigchld_ignored@plt>
xor    %eax,%eax
pop    %rbx
jmp    23c0 <test_lseek_basic@plt>
xor    %eax,%eax
pop    %rbx
jmp    2390 <test_lseek_errors@plt>
xor    %eax,%eax
pop    %rbx
jmp    2160 <test_access_basic@plt>
xor    %eax,%eax
pop    %rbx
jmp    23f0 <test_stat@plt>
xor    %eax,%eax
pop    %rbx
jmp    2110 <test_fstat@plt>
xor    %eax,%eax
pop    %rbx
jmp    2170 <test_setjmp@plt>
xor    %eax,%eax
pop    %rbx
jmp    2320 <test_sigaction_with_setjmp@plt>
xor    %eax,%eax
pop    %rbx
jmp    2220 <test_sigaction_handler_returns@plt>
xor    %eax,%eax
pop    %rbx
jmp    2330 <test_vfs_dir@plt>
xor    %eax,%eax
pop    %rbx
jmp    2180 <test_vfs_rw@plt>
xor    %eax,%eax
pop    %rbx
jmp    2080 <test_vfs_relative_dir@plt>
xor    %eax,%eax
pop    %rbx
jmp    2230 <test_vfs_dot_dot_dir@plt>
xor    %eax,%eax
pop    %rbx
jmp    2350 <test_vfs_dot_dir@plt>
xor    %eax,%eax
pop    %rbx
jmp    2140 <test_vfs_dot_dot_across_fs@plt>
xor    %eax,%eax
pop    %rbx
jmp    21b0 <test_vfs_trunc@plt>
xor    %eax,%eax
pop    %rbx
jmp    2150 <test_vfs_symlink@plt>
xor    %eax,%eax
pop    %rbx
jmp    2460 <test_vfs_link@plt>
xor    %eax,%eax
pop    %rbx
jmp    2030 <test_vfs_chmod@plt>
xor    %eax,%eax
pop    %rbx
jmp    20c0 <test_wait_basic@plt>
xor    %eax,%eax
pop    %rbx
jmp    22c0 <test_wait_nohang@plt>
xor    %eax,%eax
pop    %rbx
jmp    2340 <test_setpgid@plt>
xor    %eax,%eax
pop    %rbx
jmp    2400 <test_setpgid_leader@plt>
xor    %eax,%eax
pop    %rbx
jmp    2430 <test_setpgid_child@plt>
xor    %eax,%eax
pop    %rbx
jmp    2260 <test_kill@plt>
xor    %eax,%eax
pop    %rbx
jmp    20b0 <test_killpg_same_group@plt>
xor    %eax,%eax
pop    %rbx
jmp    20f0 <test_killpg_other_group@plt>
xor    %eax,%eax
pop    %rbx
jmp    2300 <test_pgrp_orphan@plt>
xor    %eax,%eax
pop    %rbx
jmp    2310 <test_session_basic@plt>
xor    %eax,%eax
pop    %rbx
jmp    22f0 <test_session_login_name@plt>
xor    %eax,%eax
pop    %rbx
jmp    22d0 <test_getcwd@plt>
xor    %eax,%eax
pop    %rbx
jmp    20a0 <test_gettimeofday@plt>
xor    %eax,%eax
pop    %rbx
jmp    22a0 <test_nanosleep@plt>
xor    %eax,%eax
pop    %rbx
jmp    21e0 <test_get_set_uid@plt>
xor    %eax,%eax
pop    %rbx
jmp    21a0 <test_get_set_gid@plt>
xor    %eax,%eax
pop    %rbx
jmp    21f0 <test_get_set_groups@plt>
xor    %eax,%eax
pop    %rbx
jmp    2270 <test_sharing_memory_simple@plt>
xor    %eax,%eax
pop    %rbx
jmp    2200 <test_sharing_memory_child_and_grandchild@plt>

LLVM IR (-O0):
@.str = [41 x i8] c"Not enough arguments provided to utest.\0A\00"
@.str.1 = [26 x i8] c"Starting user test \22%s\22.\0A\00"
@.str.2 = [5 x i8] c"mmap\00"
@.str.3 = [15 x i8] c"munmap_sigsegv\00"
@.str.4 = [5 x i8] c"sbrk\00"
@.str.5 = [13 x i8] c"sbrk_sigsegv\00"
@.str.6 = [10 x i8] c"misbehave\00"
@.str.7 = [8 x i8] c"fd_read\00"
@.str.8 = [11 x i8] c"fd_devnull\00"
@.str.9 = [13 x i8] c"fd_multidesc\00"
@.str.10 = [13 x i8] c"fd_readwrite\00"
@.str.11 = [8 x i8] c"fd_copy\00"
@.str.12 = [12 x i8] c"fd_bad_desc\00"
@.str.13 = [13 x i8] c"fd_open_path\00"
@.str.14 = [7 x i8] c"fd_dup\00"
@.str.15 = [8 x i8] c"fd_pipe\00"
@.str.16 = [7 x i8] c"fd_all\00"
@.str.17 = [13 x i8] c"signal_basic\00"
@.str.18 = [12 x i8] c"signal_send\00"
@.str.19 = [13 x i8] c"signal_abort\00"
@.str.20 = [16 x i8] c"signal_segfault\00"
@.str.21 = [12 x i8] c"signal_stop\00"
@.str.22 = [19 x i8] c"signal_cont_masked\00"
@.str.23 = [12 x i8] c"signal_mask\00"
@.str.24 = [24 x i8] c"signal_mask_nonmaskable\00"
@.str.25 = [18 x i8] c"signal_sigsuspend\00"
@.str.26 = [23 x i8] c"signal_sigsuspend_stop\00"
@.str.27 = [20 x i8] c"signal_handler_mask\00"
@.str.28 = [10 x i8] c"fork_wait\00"
@.str.29 = [12 x i8] c"fork_signal\00"
@.str.30 = [21 x i8] c"fork_sigchld_ignored\00"
@.str.31 = [12 x i8] c"lseek_basic\00"
@.str.32 = [13 x i8] c"lseek_errors\00"
@.str.33 = [13 x i8] c"access_basic\00"
@.str.34 = [5 x i8] c"stat\00"
@.str.35 = [6 x i8] c"fstat\00"
@.str.36 = [7 x i8] c"setjmp\00"
@.str.37 = [22 x i8] c"sigaction_with_setjmp\00"
@.str.38 = [26 x i8] c"sigaction_handler_returns\00"
@.str.39 = [8 x i8] c"vfs_dir\00"
@.str.40 = [7 x i8] c"vfs_rw\00"
@.str.41 = [17 x i8] c"vfs_relative_dir\00"
@.str.42 = [16 x i8] c"vfs_dot_dot_dir\00"
@.str.43 = [12 x i8] c"vfs_dot_dir\00"
@.str.44 = [22 x i8] c"vfs_dot_dot_across_fs\00"
@.str.45 = [10 x i8] c"vfs_trunc\00"
@.str.46 = [12 x i8] c"vfs_symlink\00"
@.str.47 = [9 x i8] c"vfs_link\00"
@.str.48 = [10 x i8] c"vfs_chmod\00"
@.str.49 = [11 x i8] c"wait_basic\00"
@.str.50 = [12 x i8] c"wait_nohang\00"
@.str.51 = [8 x i8] c"setpgid\00"
@.str.52 = [15 x i8] c"setpgid_leader\00"
@.str.53 = [14 x i8] c"setpgid_child\00"
@.str.54 = [5 x i8] c"kill\00"
@.str.55 = [18 x i8] c"killpg_same_group\00"
@.str.56 = [19 x i8] c"killpg_other_group\00"
@.str.57 = [12 x i8] c"pgrp_orphan\00"
@.str.58 = [14 x i8] c"session_basic\00"
@.str.59 = [19 x i8] c"session_login_name\00"
@.str.60 = [7 x i8] c"getcwd\00"
@.str.61 = [13 x i8] c"gettimeofday\00"
@.str.62 = [10 x i8] c"nanosleep\00"
@.str.63 = [12 x i8] c"get_set_uid\00"
@.str.64 = [12 x i8] c"get_set_gid\00"
@.str.65 = [15 x i8] c"get_set_groups\00"
@.str.66 = [22 x i8] c"sharing_memory_simple\00"
@.str.67 = [36 x i8] c"sharing_memory_child_and_grandchild\00"
@.str.68 = [30 x i8] c"No user test \22%s\22 available.\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i8*
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%7 = load i32, i32* %4
%8 = icmp slt i32 %7, 2
br i1 %8, label %9, label %11
9: ; preds = %2
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str, i64 0, i64 0))
store i32 1, i32* %3
br label %415
11: ; preds = %2
%12 = load i8**, i8*** %5
%13 = getelementptr inbounds i8*, i8** %12, i64 1
%14 = load i8*, i8** %13
store i8* %14, i8** %6
%15 = load i8*, i8** %6
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.1, i64 0, i64 0), i8* %15)
%17 = load i8*, i8** %6
%18 = call i64 @strcmp(i8* %17, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%19 = icmp eq i64 %18, 0
br i1 %19, label %20, label %22
20: ; preds = %11
%21 = call i32 (...) @test_mmap()
store i32 %21, i32* %3
br label %415
22: ; preds = %11
%23 = load i8*, i8** %6
%24 = call i64 @strcmp(i8* %23, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.3, i64 0, i64 0))
%25 = icmp eq i64 %24, 0
br i1 %25, label %26, label %28
26: ; preds = %22
%27 = call i32 (...) @test_munmap_sigsegv()
store i32 %27, i32* %3
br label %415
28: ; preds = %22
%29 = load i8*, i8** %6
%30 = call i64 @strcmp(i8* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%31 = icmp eq i64 %30, 0
br i1 %31, label %32, label %34
32: ; preds = %28
%33 = call i32 (...) @test_sbrk()
store i32 %33, i32* %3
br label %415
34: ; preds = %28
%35 = load i8*, i8** %6
%36 = call i64 @strcmp(i8* %35, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i64 0, i64 0))
%37 = icmp eq i64 %36, 0
br i1 %37, label %38, label %40
38: ; preds = %34
%39 = call i32 (...) @test_sbrk_sigsegv()
store i32 %39, i32* %3
br label %415
40: ; preds = %34
%41 = load i8*, i8** %6
%42 = call i64 @strcmp(i8* %41, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0))
%43 = icmp eq i64 %42, 0
br i1 %43, label %44, label %46
44: ; preds = %40
%45 = call i32 (...) @test_misbehave()
store i32 %45, i32* %3
br label %415
46: ; preds = %40
%47 = load i8*, i8** %6
%48 = call i64 @strcmp(i8* %47, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
%49 = icmp eq i64 %48, 0
br i1 %49, label %50, label %52
50: ; preds = %46
%51 = call i32 (...) @test_fd_read()
store i32 %51, i32* %3
br label %415
52: ; preds = %46
%53 = load i8*, i8** %6
%54 = call i64 @strcmp(i8* %53, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.8, i64 0, i64 0))
%55 = icmp eq i64 %54, 0
br i1 %55, label %56, label %58
56: ; preds = %52
%57 = call i32 (...) @test_fd_devnull()
store i32 %57, i32* %3
br label %415
58: ; preds = %52
%59 = load i8*, i8** %6
%60 = call i64 @strcmp(i8* %59, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
%61 = icmp eq i64 %60, 0
br i1 %61, label %62, label %64
62: ; preds = %58
%63 = call i32 (...) @test_fd_multidesc()
store i32 %63, i32* %3
br label %415
64: ; preds = %58
%65 = load i8*, i8** %6
%66 = call i64 @strcmp(i8* %65, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i64 0, i64 0))
%67 = icmp eq i64 %66, 0
br i1 %67, label %68, label %70
68: ; preds = %64
%69 = call i32 (...) @test_fd_readwrite()
store i32 %69, i32* %3
br label %415
70: ; preds = %64
%71 = load i8*, i8** %6
%72 = call i64 @strcmp(i8* %71, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.11, i64 0, i64 0))
%73 = icmp eq i64 %72, 0
br i1 %73, label %74, label %76
74: ; preds = %70
%75 = call i32 (...) @test_fd_copy()
store i32 %75, i32* %3
br label %415
76: ; preds = %70
%77 = load i8*, i8** %6
%78 = call i64 @strcmp(i8* %77, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0))
%79 = icmp eq i64 %78, 0
br i1 %79, label %80, label %82
80: ; preds = %76
%81 = call i32 (...) @test_fd_bad_desc()
store i32 %81, i32* %3
br label %415
82: ; preds = %76
%83 = load i8*, i8** %6
%84 = call i64 @strcmp(i8* %83, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.13, i64 0, i64 0))
%85 = icmp eq i64 %84, 0
br i1 %85, label %86, label %88
86: ; preds = %82
%87 = call i32 (...) @test_fd_open_path()
store i32 %87, i32* %3
br label %415
88: ; preds = %82
%89 = load i8*, i8** %6
%90 = call i64 @strcmp(i8* %89, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.14, i64 0, i64 0))
%91 = icmp eq i64 %90, 0
br i1 %91, label %92, label %94
92: ; preds = %88
%93 = call i32 (...) @test_fd_dup()
store i32 %93, i32* %3
br label %415
94: ; preds = %88
%95 = load i8*, i8** %6
%96 = call i64 @strcmp(i8* %95, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0))
%97 = icmp eq i64 %96, 0
br i1 %97, label %98, label %100
98: ; preds = %94
%99 = call i32 (...) @test_fd_pipe()
store i32 %99, i32* %3
br label %415
100: ; preds = %94
%101 = load i8*, i8** %6
%102 = call i64 @strcmp(i8* %101, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.16, i64 0, i64 0))
%103 = icmp eq i64 %102, 0
br i1 %103, label %104, label %106
104: ; preds = %100
%105 = call i32 (...) @test_fd_all()
store i32 %105, i32* %3
br label %415
106: ; preds = %100
%107 = load i8*, i8** %6
%108 = call i64 @strcmp(i8* %107, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.17, i64 0, i64 0))
%109 = icmp eq i64 %108, 0
br i1 %109, label %110, label %112
110: ; preds = %106
%111 = call i32 (...) @test_signal_basic()
store i32 %111, i32* %3
br label %415
112: ; preds = %106
%113 = load i8*, i8** %6
%114 = call i64 @strcmp(i8* %113, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0))
%115 = icmp eq i64 %114, 0
br i1 %115, label %116, label %118
116: ; preds = %112
%117 = call i32 (...) @test_signal_send()
store i32 %117, i32* %3
br label %415
118: ; preds = %112
%119 = load i8*, i8** %6
%120 = call i64 @strcmp(i8* %119, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.19, i64 0, i64 0))
%121 = icmp eq i64 %120, 0
br i1 %121, label %122, label %124
122: ; preds = %118
%123 = call i32 (...) @test_signal_abort()
store i32 %123, i32* %3
br label %415
124: ; preds = %118
%125 = load i8*, i8** %6
%126 = call i64 @strcmp(i8* %125, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i64 0, i64 0))
%127 = icmp eq i64 %126, 0
br i1 %127, label %128, label %130
128: ; preds = %124
%129 = call i32 (...) @test_signal_segfault()
store i32 %129, i32* %3
br label %415
130: ; preds = %124
%131 = load i8*, i8** %6
%132 = call i64 @strcmp(i8* %131, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.21, i64 0, i64 0))
%133 = icmp eq i64 %132, 0
br i1 %133, label %134, label %136
134: ; preds = %130
%135 = call i32 (...) @test_signal_stop()
store i32 %135, i32* %3
br label %415
136: ; preds = %130
%137 = load i8*, i8** %6
%138 = call i64 @strcmp(i8* %137, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.22, i64 0, i64 0))
%139 = icmp eq i64 %138, 0
br i1 %139, label %140, label %142
140: ; preds = %136
%141 = call i32 (...) @test_signal_cont_masked()
store i32 %141, i32* %3
br label %415
142: ; preds = %136
%143 = load i8*, i8** %6
%144 = call i64 @strcmp(i8* %143, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0))
%145 = icmp eq i64 %144, 0
br i1 %145, label %146, label %148
146: ; preds = %142
%147 = call i32 (...) @test_signal_mask()
store i32 %147, i32* %3
br label %415
148: ; preds = %142
%149 = load i8*, i8** %6
%150 = call i64 @strcmp(i8* %149, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.24, i64 0, i64 0))
%151 = icmp eq i64 %150, 0
br i1 %151, label %152, label %154
152: ; preds = %148
%153 = call i32 (...) @test_signal_mask_nonmaskable()
store i32 %153, i32* %3
br label %415
154: ; preds = %148
%155 = load i8*, i8** %6
%156 = call i64 @strcmp(i8* %155, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.25, i64 0, i64 0))
%157 = icmp eq i64 %156, 0
br i1 %157, label %158, label %160
158: ; preds = %154
%159 = call i32 (...) @test_signal_sigsuspend()
store i32 %159, i32* %3
br label %415
160: ; preds = %154
%161 = load i8*, i8** %6
%162 = call i64 @strcmp(i8* %161, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.26, i64 0, i64 0))
%163 = icmp eq i64 %162, 0
br i1 %163, label %164, label %166
164: ; preds = %160
%165 = call i32 (...) @test_signal_sigsuspend_stop()
store i32 %165, i32* %3
br label %415
166: ; preds = %160
%167 = load i8*, i8** %6
%168 = call i64 @strcmp(i8* %167, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.27, i64 0, i64 0))
%169 = icmp eq i64 %168, 0
br i1 %169, label %170, label %172
170: ; preds = %166
%171 = call i32 (...) @test_signal_handler_mask()
store i32 %171, i32* %3
br label %415
172: ; preds = %166
%173 = load i8*, i8** %6
%174 = call i64 @strcmp(i8* %173, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.28, i64 0, i64 0))
%175 = icmp eq i64 %174, 0
br i1 %175, label %176, label %178
176: ; preds = %172
%177 = call i32 (...) @test_fork_wait()
store i32 %177, i32* %3
br label %415
178: ; preds = %172
%179 = load i8*, i8** %6
%180 = call i64 @strcmp(i8* %179, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.29, i64 0, i64 0))
%181 = icmp eq i64 %180, 0
br i1 %181, label %182, label %184
182: ; preds = %178
%183 = call i32 (...) @test_fork_signal()
store i32 %183, i32* %3
br label %415
184: ; preds = %178
%185 = load i8*, i8** %6
%186 = call i64 @strcmp(i8* %185, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.30, i64 0, i64 0))
%187 = icmp eq i64 %186, 0
br i1 %187, label %188, label %190
188: ; preds = %184
%189 = call i32 (...) @test_fork_sigchld_ignored()
store i32 %189, i32* %3
br label %415
190: ; preds = %184
%191 = load i8*, i8** %6
%192 = call i64 @strcmp(i8* %191, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.31, i64 0, i64 0))
%193 = icmp eq i64 %192, 0
br i1 %193, label %194, label %196
194: ; preds = %190
%195 = call i32 (...) @test_lseek_basic()
store i32 %195, i32* %3
br label %415
196: ; preds = %190
%197 = load i8*, i8** %6
%198 = call i64 @strcmp(i8* %197, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.32, i64 0, i64 0))
%199 = icmp eq i64 %198, 0
br i1 %199, label %200, label %202
200: ; preds = %196
%201 = call i32 (...) @test_lseek_errors()
store i32 %201, i32* %3
br label %415
202: ; preds = %196
%203 = load i8*, i8** %6
%204 = call i64 @strcmp(i8* %203, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.33, i64 0, i64 0))
%205 = icmp eq i64 %204, 0
br i1 %205, label %206, label %208
206: ; preds = %202
%207 = call i32 (...) @test_access_basic()
store i32 %207, i32* %3
br label %415
208: ; preds = %202
%209 = load i8*, i8** %6
%210 = call i64 @strcmp(i8* %209, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0))
%211 = icmp eq i64 %210, 0
br i1 %211, label %212, label %214
212: ; preds = %208
%213 = call i32 (...) @test_stat()
store i32 %213, i32* %3
br label %415
214: ; preds = %208
%215 = load i8*, i8** %6
%216 = call i64 @strcmp(i8* %215, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.35, i64 0, i64 0))
%217 = icmp eq i64 %216, 0
br i1 %217, label %218, label %220
218: ; preds = %214
%219 = call i32 (...) @test_fstat()
store i32 %219, i32* %3
br label %415
220: ; preds = %214
%221 = load i8*, i8** %6
%222 = call i64 @strcmp(i8* %221, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.36, i64 0, i64 0))
%223 = icmp eq i64 %222, 0
br i1 %223, label %224, label %226
224: ; preds = %220
%225 = call i32 (...) @test_setjmp()
store i32 %225, i32* %3
br label %415
226: ; preds = %220
%227 = load i8*, i8** %6
%228 = call i64 @strcmp(i8* %227, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0))
%229 = icmp eq i64 %228, 0
br i1 %229, label %230, label %232
230: ; preds = %226
%231 = call i32 (...) @test_sigaction_with_setjmp()
store i32 %231, i32* %3
br label %415
232: ; preds = %226
%233 = load i8*, i8** %6
%234 = call i64 @strcmp(i8* %233, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.38, i64 0, i64 0))
%235 = icmp eq i64 %234, 0
br i1 %235, label %236, label %238
236: ; preds = %232
%237 = call i32 (...) @test_sigaction_handler_returns()
store i32 %237, i32* %3
br label %415
238: ; preds = %232
%239 = load i8*, i8** %6
%240 = call i64 @strcmp(i8* %239, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.39, i64 0, i64 0))
%241 = icmp eq i64 %240, 0
br i1 %241, label %242, label %244
242: ; preds = %238
%243 = call i32 (...) @test_vfs_dir()
store i32 %243, i32* %3
br label %415
244: ; preds = %238
%245 = load i8*, i8** %6
%246 = call i64 @strcmp(i8* %245, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.40, i64 0, i64 0))
%247 = icmp eq i64 %246, 0
br i1 %247, label %248, label %250
248: ; preds = %244
%249 = call i32 (...) @test_vfs_rw()
store i32 %249, i32* %3
br label %415
250: ; preds = %244
%251 = load i8*, i8** %6
%252 = call i64 @strcmp(i8* %251, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.41, i64 0, i64 0))
%253 = icmp eq i64 %252, 0
br i1 %253, label %254, label %256
254: ; preds = %250
%255 = call i32 (...) @test_vfs_relative_dir()
store i32 %255, i32* %3
br label %415
256: ; preds = %250
%257 = load i8*, i8** %6
%258 = call i64 @strcmp(i8* %257, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.42, i64 0, i64 0))
%259 = icmp eq i64 %258, 0
br i1 %259, label %260, label %262
260: ; preds = %256
%261 = call i32 (...) @test_vfs_dot_dot_dir()
store i32 %261, i32* %3
br label %415
262: ; preds = %256
%263 = load i8*, i8** %6
%264 = call i64 @strcmp(i8* %263, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0))
%265 = icmp eq i64 %264, 0
br i1 %265, label %266, label %268
266: ; preds = %262
%267 = call i32 (...) @test_vfs_dot_dir()
store i32 %267, i32* %3
br label %415
268: ; preds = %262
%269 = load i8*, i8** %6
%270 = call i64 @strcmp(i8* %269, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.44, i64 0, i64 0))
%271 = icmp eq i64 %270, 0
br i1 %271, label %272, label %274
272: ; preds = %268
%273 = call i32 (...) @test_vfs_dot_dot_across_fs()
store i32 %273, i32* %3
br label %415
274: ; preds = %268
%275 = load i8*, i8** %6
%276 = call i64 @strcmp(i8* %275, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.45, i64 0, i64 0))
%277 = icmp eq i64 %276, 0
br i1 %277, label %278, label %280
278: ; preds = %274
%279 = call i32 (...) @test_vfs_trunc()
store i32 %279, i32* %3
br label %415
280: ; preds = %274
%281 = load i8*, i8** %6
%282 = call i64 @strcmp(i8* %281, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.46, i64 0, i64 0))
%283 = icmp eq i64 %282, 0
br i1 %283, label %284, label %286
284: ; preds = %280
%285 = call i32 (...) @test_vfs_symlink()
store i32 %285, i32* %3
br label %415
286: ; preds = %280
%287 = load i8*, i8** %6
%288 = call i64 @strcmp(i8* %287, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.47, i64 0, i64 0))
%289 = icmp eq i64 %288, 0
br i1 %289, label %290, label %292
290: ; preds = %286
%291 = call i32 (...) @test_vfs_link()
store i32 %291, i32* %3
br label %415
292: ; preds = %286
%293 = load i8*, i8** %6
%294 = call i64 @strcmp(i8* %293, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.48, i64 0, i64 0))
%295 = icmp eq i64 %294, 0
br i1 %295, label %296, label %298
296: ; preds = %292
%297 = call i32 (...) @test_vfs_chmod()
store i32 %297, i32* %3
br label %415
298: ; preds = %292
%299 = load i8*, i8** %6
%300 = call i64 @strcmp(i8* %299, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.49, i64 0, i64 0))
%301 = icmp eq i64 %300, 0
br i1 %301, label %302, label %304
302: ; preds = %298
%303 = call i32 (...) @test_wait_basic()
store i32 %303, i32* %3
br label %415
304: ; preds = %298
%305 = load i8*, i8** %6
%306 = call i64 @strcmp(i8* %305, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.50, i64 0, i64 0))
%307 = icmp eq i64 %306, 0
br i1 %307, label %308, label %310
308: ; preds = %304
%309 = call i32 (...) @test_wait_nohang()
store i32 %309, i32* %3
br label %415
310: ; preds = %304
%311 = load i8*, i8** %6
%312 = call i64 @strcmp(i8* %311, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.51, i64 0, i64 0))
%313 = icmp eq i64 %312, 0
br i1 %313, label %314, label %316
314: ; preds = %310
%315 = call i32 (...) @test_setpgid()
store i32 %315, i32* %3
br label %415
316: ; preds = %310
%317 = load i8*, i8** %6
%318 = call i64 @strcmp(i8* %317, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.52, i64 0, i64 0))
%319 = icmp eq i64 %318, 0
br i1 %319, label %320, label %322
320: ; preds = %316
%321 = call i32 (...) @test_setpgid_leader()
store i32 %321, i32* %3
br label %415
322: ; preds = %316
%323 = load i8*, i8** %6
%324 = call i64 @strcmp(i8* %323, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.53, i64 0, i64 0))
%325 = icmp eq i64 %324, 0
br i1 %325, label %326, label %328
326: ; preds = %322
%327 = call i32 (...) @test_setpgid_child()
store i32 %327, i32* %3
br label %415
328: ; preds = %322
%329 = load i8*, i8** %6
%330 = call i64 @strcmp(i8* %329, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.54, i64 0, i64 0))
%331 = icmp eq i64 %330, 0
br i1 %331, label %332, label %334
332: ; preds = %328
%333 = call i32 (...) @test_kill()
store i32 %333, i32* %3
br label %415
334: ; preds = %328
%335 = load i8*, i8** %6
%336 = call i64 @strcmp(i8* %335, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.55, i64 0, i64 0))
%337 = icmp eq i64 %336, 0
br i1 %337, label %338, label %340
338: ; preds = %334
%339 = call i32 (...) @test_killpg_same_group()
store i32 %339, i32* %3
br label %415
340: ; preds = %334
%341 = load i8*, i8** %6
%342 = call i64 @strcmp(i8* %341, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.56, i64 0, i64 0))
%343 = icmp eq i64 %342, 0
br i1 %343, label %344, label %346
344: ; preds = %340
%345 = call i32 (...) @test_killpg_other_group()
store i32 %345, i32* %3
br label %415
346: ; preds = %340
%347 = load i8*, i8** %6
%348 = call i64 @strcmp(i8* %347, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.57, i64 0, i64 0))
%349 = icmp eq i64 %348, 0
br i1 %349, label %350, label %352
350: ; preds = %346
%351 = call i32 (...) @test_pgrp_orphan()
store i32 %351, i32* %3
br label %415
352: ; preds = %346
%353 = load i8*, i8** %6
%354 = call i64 @strcmp(i8* %353, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.58, i64 0, i64 0))
%355 = icmp eq i64 %354, 0
br i1 %355, label %356, label %358
356: ; preds = %352
%357 = call i32 (...) @test_session_basic()
store i32 %357, i32* %3
br label %415
358: ; preds = %352
%359 = load i8*, i8** %6
%360 = call i64 @strcmp(i8* %359, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.59, i64 0, i64 0))
%361 = icmp eq i64 %360, 0
br i1 %361, label %362, label %364
362: ; preds = %358
%363 = call i32 (...) @test_session_login_name()
store i32 %363, i32* %3
br label %415
364: ; preds = %358
%365 = load i8*, i8** %6
%366 = call i64 @strcmp(i8* %365, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.60, i64 0, i64 0))
%367 = icmp eq i64 %366, 0
br i1 %367, label %368, label %370
368: ; preds = %364
%369 = call i32 (...) @test_getcwd()
store i32 %369, i32* %3
br label %415
370: ; preds = %364
%371 = load i8*, i8** %6
%372 = call i64 @strcmp(i8* %371, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.61, i64 0, i64 0))
%373 = icmp eq i64 %372, 0
br i1 %373, label %374, label %376
374: ; preds = %370
%375 = call i32 (...) @test_gettimeofday()
store i32 %375, i32* %3
br label %415
376: ; preds = %370
%377 = load i8*, i8** %6
%378 = call i64 @strcmp(i8* %377, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.62, i64 0, i64 0))
%379 = icmp eq i64 %378, 0
br i1 %379, label %380, label %382
380: ; preds = %376
%381 = call i32 (...) @test_nanosleep()
store i32 %381, i32* %3
br label %415
382: ; preds = %376
%383 = load i8*, i8** %6
%384 = call i64 @strcmp(i8* %383, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.63, i64 0, i64 0))
%385 = icmp eq i64 %384, 0
br i1 %385, label %386, label %388
386: ; preds = %382
%387 = call i32 (...) @test_get_set_uid()
store i32 %387, i32* %3
br label %415
388: ; preds = %382
%389 = load i8*, i8** %6
%390 = call i64 @strcmp(i8* %389, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.64, i64 0, i64 0))
%391 = icmp eq i64 %390, 0
br i1 %391, label %392, label %394
392: ; preds = %388
%393 = call i32 (...) @test_get_set_gid()
store i32 %393, i32* %3
br label %415
394: ; preds = %388
%395 = load i8*, i8** %6
%396 = call i64 @strcmp(i8* %395, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.65, i64 0, i64 0))
%397 = icmp eq i64 %396, 0
br i1 %397, label %398, label %400
398: ; preds = %394
%399 = call i32 (...) @test_get_set_groups()
store i32 %399, i32* %3
br label %415
400: ; preds = %394
%401 = load i8*, i8** %6
%402 = call i64 @strcmp(i8* %401, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.66, i64 0, i64 0))
%403 = icmp eq i64 %402, 0
br i1 %403, label %404, label %406
404: ; preds = %400
%405 = call i32 (...) @test_sharing_memory_simple()
store i32 %405, i32* %3
br label %415
406: ; preds = %400
%407 = load i8*, i8** %6
%408 = call i64 @strcmp(i8* %407, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.67, i64 0, i64 0))
%409 = icmp eq i64 %408, 0
br i1 %409, label %410, label %412
410: ; preds = %406
%411 = call i32 (...) @test_sharing_memory_child_and_grandchild()
store i32 %411, i32* %3
br label %415
412: ; preds = %406
%413 = load i8*, i8** %6
%414 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.68, i64 0, i64 0), i8* %413)
store i32 1, i32* %3
br label %415
415: ; preds = %412, %410, %404, %398, %392, %386, %380, %374, %368, %362, %356, %350, %344, %338, %332, %326, %320, %314, %308, %302, %296, %290, %284, %278, %272, %266, %260, %254, %248, %242, %236, %230, %224, %218, %212, %206, %200, %194, %188, %182, %176, %170, %164, %158, %152, %146, %140, %134, %128, %122, %116, %110, %104, %98, %92, %86, %80, %74, %68, %62, %56, %50, %44, %38, %32, %26, %20, %9
%416 = load i32, i32* %3
ret i32 %416
}

LLVM IR (-O2):
@.str.1 = [26 x i8] c"Starting user test \22%s\22.\0A\00"
@.str.2 = [5 x i8] c"mmap\00"
@.str.3 = [15 x i8] c"munmap_sigsegv\00"
@.str.4 = [5 x i8] c"sbrk\00"
@.str.5 = [13 x i8] c"sbrk_sigsegv\00"
@.str.6 = [10 x i8] c"misbehave\00"
@.str.7 = [8 x i8] c"fd_read\00"
@.str.8 = [11 x i8] c"fd_devnull\00"
@.str.9 = [13 x i8] c"fd_multidesc\00"
@.str.10 = [13 x i8] c"fd_readwrite\00"
@.str.11 = [8 x i8] c"fd_copy\00"
@.str.12 = [12 x i8] c"fd_bad_desc\00"
@.str.13 = [13 x i8] c"fd_open_path\00"
@.str.14 = [7 x i8] c"fd_dup\00"
@.str.15 = [8 x i8] c"fd_pipe\00"
@.str.16 = [7 x i8] c"fd_all\00"
@.str.17 = [13 x i8] c"signal_basic\00"
@.str.18 = [12 x i8] c"signal_send\00"
@.str.19 = [13 x i8] c"signal_abort\00"
@.str.20 = [16 x i8] c"signal_segfault\00"
@.str.21 = [12 x i8] c"signal_stop\00"
@.str.22 = [19 x i8] c"signal_cont_masked\00"
@.str.23 = [12 x i8] c"signal_mask\00"
@.str.24 = [24 x i8] c"signal_mask_nonmaskable\00"
@.str.25 = [18 x i8] c"signal_sigsuspend\00"
@.str.26 = [23 x i8] c"signal_sigsuspend_stop\00"
@.str.27 = [20 x i8] c"signal_handler_mask\00"
@.str.28 = [10 x i8] c"fork_wait\00"
@.str.29 = [12 x i8] c"fork_signal\00"
@.str.30 = [21 x i8] c"fork_sigchld_ignored\00"
@.str.31 = [12 x i8] c"lseek_basic\00"
@.str.32 = [13 x i8] c"lseek_errors\00"
@.str.33 = [13 x i8] c"access_basic\00"
@.str.34 = [5 x i8] c"stat\00"
@.str.35 = [6 x i8] c"fstat\00"
@.str.36 = [7 x i8] c"setjmp\00"
@.str.37 = [22 x i8] c"sigaction_with_setjmp\00"
@.str.38 = [26 x i8] c"sigaction_handler_returns\00"
@.str.39 = [8 x i8] c"vfs_dir\00"
@.str.40 = [7 x i8] c"vfs_rw\00"
@.str.41 = [17 x i8] c"vfs_relative_dir\00"
@.str.42 = [16 x i8] c"vfs_dot_dot_dir\00"
@.str.43 = [12 x i8] c"vfs_dot_dir\00"
@.str.44 = [22 x i8] c"vfs_dot_dot_across_fs\00"
@.str.45 = [10 x i8] c"vfs_trunc\00"
@.str.46 = [12 x i8] c"vfs_symlink\00"
@.str.47 = [9 x i8] c"vfs_link\00"
@.str.48 = [10 x i8] c"vfs_chmod\00"
@.str.49 = [11 x i8] c"wait_basic\00"
@.str.50 = [12 x i8] c"wait_nohang\00"
@.str.51 = [8 x i8] c"setpgid\00"
@.str.52 = [15 x i8] c"setpgid_leader\00"
@.str.53 = [14 x i8] c"setpgid_child\00"
@.str.54 = [5 x i8] c"kill\00"
@.str.55 = [18 x i8] c"killpg_same_group\00"
@.str.56 = [19 x i8] c"killpg_other_group\00"
@.str.57 = [12 x i8] c"pgrp_orphan\00"
@.str.58 = [14 x i8] c"session_basic\00"
@.str.59 = [19 x i8] c"session_login_name\00"
@.str.60 = [7 x i8] c"getcwd\00"
@.str.61 = [13 x i8] c"gettimeofday\00"
@.str.62 = [10 x i8] c"nanosleep\00"
@.str.63 = [12 x i8] c"get_set_uid\00"
@.str.64 = [12 x i8] c"get_set_gid\00"
@.str.65 = [15 x i8] c"get_set_groups\00"
@.str.66 = [22 x i8] c"sharing_memory_simple\00"
@.str.67 = [36 x i8] c"sharing_memory_child_and_grandchild\00"
@.str.68 = [30 x i8] c"No user test \22%s\22 available.\0A\00"
@str = [40 x i8] c"Not enough arguments provided to utest.\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = icmp slt i32 %0, 2
br i1 %3, label %4, label %6
4: ; preds = %2
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str, i64 0, i64 0))
br label %341
6: ; preds = %2
%7 = getelementptr inbounds i8*, i8** %1, i64 1
%8 = load i8*, i8** %7
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.1, i64 0, i64 0), i8* %8)
%10 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%11 = icmp eq i64 %10, 0
br i1 %11, label %12, label %14
12: ; preds = %6
%13 = tail call i32 (...) @test_mmap()
br label %341
14: ; preds = %6
%15 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.3, i64 0, i64 0))
%16 = icmp eq i64 %15, 0
br i1 %16, label %17, label %19
17: ; preds = %14
%18 = tail call i32 (...) @test_munmap_sigsegv()
br label %341
19: ; preds = %14
%20 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%21 = icmp eq i64 %20, 0
br i1 %21, label %22, label %24
22: ; preds = %19
%23 = tail call i32 (...) @test_sbrk()
br label %341
24: ; preds = %19
%25 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i64 0, i64 0))
%26 = icmp eq i64 %25, 0
br i1 %26, label %27, label %29
27: ; preds = %24
%28 = tail call i32 (...) @test_sbrk_sigsegv()
br label %341
29: ; preds = %24
%30 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0))
%31 = icmp eq i64 %30, 0
br i1 %31, label %32, label %34
32: ; preds = %29
%33 = tail call i32 (...) @test_misbehave()
br label %341
34: ; preds = %29
%35 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
%36 = icmp eq i64 %35, 0
br i1 %36, label %37, label %39
37: ; preds = %34
%38 = tail call i32 (...) @test_fd_read()
br label %341
39: ; preds = %34
%40 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.8, i64 0, i64 0))
%41 = icmp eq i64 %40, 0
br i1 %41, label %42, label %44
42: ; preds = %39
%43 = tail call i32 (...) @test_fd_devnull()
br label %341
44: ; preds = %39
%45 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
%46 = icmp eq i64 %45, 0
br i1 %46, label %47, label %49
47: ; preds = %44
%48 = tail call i32 (...) @test_fd_multidesc()
br label %341
49: ; preds = %44
%50 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i64 0, i64 0))
%51 = icmp eq i64 %50, 0
br i1 %51, label %52, label %54
52: ; preds = %49
%53 = tail call i32 (...) @test_fd_readwrite()
br label %341
54: ; preds = %49
%55 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.11, i64 0, i64 0))
%56 = icmp eq i64 %55, 0
br i1 %56, label %57, label %59
57: ; preds = %54
%58 = tail call i32 (...) @test_fd_copy()
br label %341
59: ; preds = %54
%60 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0))
%61 = icmp eq i64 %60, 0
br i1 %61, label %62, label %64
62: ; preds = %59
%63 = tail call i32 (...) @test_fd_bad_desc()
br label %341
64: ; preds = %59
%65 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.13, i64 0, i64 0))
%66 = icmp eq i64 %65, 0
br i1 %66, label %67, label %69
67: ; preds = %64
%68 = tail call i32 (...) @test_fd_open_path()
br label %341
69: ; preds = %64
%70 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.14, i64 0, i64 0))
%71 = icmp eq i64 %70, 0
br i1 %71, label %72, label %74
72: ; preds = %69
%73 = tail call i32 (...) @test_fd_dup()
br label %341
74: ; preds = %69
%75 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0))
%76 = icmp eq i64 %75, 0
br i1 %76, label %77, label %79
77: ; preds = %74
%78 = tail call i32 (...) @test_fd_pipe()
br label %341
79: ; preds = %74
%80 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.16, i64 0, i64 0))
%81 = icmp eq i64 %80, 0
br i1 %81, label %82, label %84
82: ; preds = %79
%83 = tail call i32 (...) @test_fd_all()
br label %341
84: ; preds = %79
%85 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.17, i64 0, i64 0))
%86 = icmp eq i64 %85, 0
br i1 %86, label %87, label %89
87: ; preds = %84
%88 = tail call i32 (...) @test_signal_basic()
br label %341
89: ; preds = %84
%90 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0))
%91 = icmp eq i64 %90, 0
br i1 %91, label %92, label %94
92: ; preds = %89
%93 = tail call i32 (...) @test_signal_send()
br label %341
94: ; preds = %89
%95 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.19, i64 0, i64 0))
%96 = icmp eq i64 %95, 0
br i1 %96, label %97, label %99
97: ; preds = %94
%98 = tail call i32 (...) @test_signal_abort()
br label %341
99: ; preds = %94
%100 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i64 0, i64 0))
%101 = icmp eq i64 %100, 0
br i1 %101, label %102, label %104
102: ; preds = %99
%103 = tail call i32 (...) @test_signal_segfault()
br label %341
104: ; preds = %99
%105 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.21, i64 0, i64 0))
%106 = icmp eq i64 %105, 0
br i1 %106, label %107, label %109
107: ; preds = %104
%108 = tail call i32 (...) @test_signal_stop()
br label %341
109: ; preds = %104
%110 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.22, i64 0, i64 0))
%111 = icmp eq i64 %110, 0
br i1 %111, label %112, label %114
112: ; preds = %109
%113 = tail call i32 (...) @test_signal_cont_masked()
br label %341
114: ; preds = %109
%115 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0))
%116 = icmp eq i64 %115, 0
br i1 %116, label %117, label %119
117: ; preds = %114
%118 = tail call i32 (...) @test_signal_mask()
br label %341
119: ; preds = %114
%120 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.24, i64 0, i64 0))
%121 = icmp eq i64 %120, 0
br i1 %121, label %122, label %124
122: ; preds = %119
%123 = tail call i32 (...) @test_signal_mask_nonmaskable()
br label %341
124: ; preds = %119
%125 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.25, i64 0, i64 0))
%126 = icmp eq i64 %125, 0
br i1 %126, label %127, label %129
127: ; preds = %124
%128 = tail call i32 (...) @test_signal_sigsuspend()
br label %341
129: ; preds = %124
%130 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.26, i64 0, i64 0))
%131 = icmp eq i64 %130, 0
br i1 %131, label %132, label %134
132: ; preds = %129
%133 = tail call i32 (...) @test_signal_sigsuspend_stop()
br label %341
134: ; preds = %129
%135 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.27, i64 0, i64 0))
%136 = icmp eq i64 %135, 0
br i1 %136, label %137, label %139
137: ; preds = %134
%138 = tail call i32 (...) @test_signal_handler_mask()
br label %341
139: ; preds = %134
%140 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.28, i64 0, i64 0))
%141 = icmp eq i64 %140, 0
br i1 %141, label %142, label %144
142: ; preds = %139
%143 = tail call i32 (...) @test_fork_wait()
br label %341
144: ; preds = %139
%145 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.29, i64 0, i64 0))
%146 = icmp eq i64 %145, 0
br i1 %146, label %147, label %149
147: ; preds = %144
%148 = tail call i32 (...) @test_fork_signal()
br label %341
149: ; preds = %144
%150 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.30, i64 0, i64 0))
%151 = icmp eq i64 %150, 0
br i1 %151, label %152, label %154
152: ; preds = %149
%153 = tail call i32 (...) @test_fork_sigchld_ignored()
br label %341
154: ; preds = %149
%155 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.31, i64 0, i64 0))
%156 = icmp eq i64 %155, 0
br i1 %156, label %157, label %159
157: ; preds = %154
%158 = tail call i32 (...) @test_lseek_basic()
br label %341
159: ; preds = %154
%160 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.32, i64 0, i64 0))
%161 = icmp eq i64 %160, 0
br i1 %161, label %162, label %164
162: ; preds = %159
%163 = tail call i32 (...) @test_lseek_errors()
br label %341
164: ; preds = %159
%165 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.33, i64 0, i64 0))
%166 = icmp eq i64 %165, 0
br i1 %166, label %167, label %169
167: ; preds = %164
%168 = tail call i32 (...) @test_access_basic()
br label %341
169: ; preds = %164
%170 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0))
%171 = icmp eq i64 %170, 0
br i1 %171, label %172, label %174
172: ; preds = %169
%173 = tail call i32 (...) @test_stat()
br label %341
174: ; preds = %169
%175 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.35, i64 0, i64 0))
%176 = icmp eq i64 %175, 0
br i1 %176, label %177, label %179
177: ; preds = %174
%178 = tail call i32 (...) @test_fstat()
br label %341
179: ; preds = %174
%180 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.36, i64 0, i64 0))
%181 = icmp eq i64 %180, 0
br i1 %181, label %182, label %184
182: ; preds = %179
%183 = tail call i32 (...) @test_setjmp()
br label %341
184: ; preds = %179
%185 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0))
%186 = icmp eq i64 %185, 0
br i1 %186, label %187, label %189
187: ; preds = %184
%188 = tail call i32 (...) @test_sigaction_with_setjmp()
br label %341
189: ; preds = %184
%190 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.38, i64 0, i64 0))
%191 = icmp eq i64 %190, 0
br i1 %191, label %192, label %194
192: ; preds = %189
%193 = tail call i32 (...) @test_sigaction_handler_returns()
br label %341
194: ; preds = %189
%195 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.39, i64 0, i64 0))
%196 = icmp eq i64 %195, 0
br i1 %196, label %197, label %199
197: ; preds = %194
%198 = tail call i32 (...) @test_vfs_dir()
br label %341
199: ; preds = %194
%200 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.40, i64 0, i64 0))
%201 = icmp eq i64 %200, 0
br i1 %201, label %202, label %204
202: ; preds = %199
%203 = tail call i32 (...) @test_vfs_rw()
br label %341
204: ; preds = %199
%205 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.41, i64 0, i64 0))
%206 = icmp eq i64 %205, 0
br i1 %206, label %207, label %209
207: ; preds = %204
%208 = tail call i32 (...) @test_vfs_relative_dir()
br label %341
209: ; preds = %204
%210 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.42, i64 0, i64 0))
%211 = icmp eq i64 %210, 0
br i1 %211, label %212, label %214
212: ; preds = %209
%213 = tail call i32 (...) @test_vfs_dot_dot_dir()
br label %341
214: ; preds = %209
%215 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0))
%216 = icmp eq i64 %215, 0
br i1 %216, label %217, label %219
217: ; preds = %214
%218 = tail call i32 (...) @test_vfs_dot_dir()
br label %341
219: ; preds = %214
%220 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.44, i64 0, i64 0))
%221 = icmp eq i64 %220, 0
br i1 %221, label %222, label %224
222: ; preds = %219
%223 = tail call i32 (...) @test_vfs_dot_dot_across_fs()
br label %341
224: ; preds = %219
%225 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.45, i64 0, i64 0))
%226 = icmp eq i64 %225, 0
br i1 %226, label %227, label %229
227: ; preds = %224
%228 = tail call i32 (...) @test_vfs_trunc()
br label %341
229: ; preds = %224
%230 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.46, i64 0, i64 0))
%231 = icmp eq i64 %230, 0
br i1 %231, label %232, label %234
232: ; preds = %229
%233 = tail call i32 (...) @test_vfs_symlink()
br label %341
234: ; preds = %229
%235 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.47, i64 0, i64 0))
%236 = icmp eq i64 %235, 0
br i1 %236, label %237, label %239
237: ; preds = %234
%238 = tail call i32 (...) @test_vfs_link()
br label %341
239: ; preds = %234
%240 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.48, i64 0, i64 0))
%241 = icmp eq i64 %240, 0
br i1 %241, label %242, label %244
242: ; preds = %239
%243 = tail call i32 (...) @test_vfs_chmod()
br label %341
244: ; preds = %239
%245 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.49, i64 0, i64 0))
%246 = icmp eq i64 %245, 0
br i1 %246, label %247, label %249
247: ; preds = %244
%248 = tail call i32 (...) @test_wait_basic()
br label %341
249: ; preds = %244
%250 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.50, i64 0, i64 0))
%251 = icmp eq i64 %250, 0
br i1 %251, label %252, label %254
252: ; preds = %249
%253 = tail call i32 (...) @test_wait_nohang()
br label %341
254: ; preds = %249
%255 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.51, i64 0, i64 0))
%256 = icmp eq i64 %255, 0
br i1 %256, label %257, label %259
257: ; preds = %254
%258 = tail call i32 (...) @test_setpgid()
br label %341
259: ; preds = %254
%260 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.52, i64 0, i64 0))
%261 = icmp eq i64 %260, 0
br i1 %261, label %262, label %264
262: ; preds = %259
%263 = tail call i32 (...) @test_setpgid_leader()
br label %341
264: ; preds = %259
%265 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.53, i64 0, i64 0))
%266 = icmp eq i64 %265, 0
br i1 %266, label %267, label %269
267: ; preds = %264
%268 = tail call i32 (...) @test_setpgid_child()
br label %341
269: ; preds = %264
%270 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.54, i64 0, i64 0))
%271 = icmp eq i64 %270, 0
br i1 %271, label %272, label %274
272: ; preds = %269
%273 = tail call i32 (...) @test_kill()
br label %341
274: ; preds = %269
%275 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.55, i64 0, i64 0))
%276 = icmp eq i64 %275, 0
br i1 %276, label %277, label %279
277: ; preds = %274
%278 = tail call i32 (...) @test_killpg_same_group()
br label %341
279: ; preds = %274
%280 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.56, i64 0, i64 0))
%281 = icmp eq i64 %280, 0
br i1 %281, label %282, label %284
282: ; preds = %279
%283 = tail call i32 (...) @test_killpg_other_group()
br label %341
284: ; preds = %279
%285 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.57, i64 0, i64 0))
%286 = icmp eq i64 %285, 0
br i1 %286, label %287, label %289
287: ; preds = %284
%288 = tail call i32 (...) @test_pgrp_orphan()
br label %341
289: ; preds = %284
%290 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.58, i64 0, i64 0))
%291 = icmp eq i64 %290, 0
br i1 %291, label %292, label %294
292: ; preds = %289
%293 = tail call i32 (...) @test_session_basic()
br label %341
294: ; preds = %289
%295 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.59, i64 0, i64 0))
%296 = icmp eq i64 %295, 0
br i1 %296, label %297, label %299
297: ; preds = %294
%298 = tail call i32 (...) @test_session_login_name()
br label %341
299: ; preds = %294
%300 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.60, i64 0, i64 0))
%301 = icmp eq i64 %300, 0
br i1 %301, label %302, label %304
302: ; preds = %299
%303 = tail call i32 (...) @test_getcwd()
br label %341
304: ; preds = %299
%305 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.61, i64 0, i64 0))
%306 = icmp eq i64 %305, 0
br i1 %306, label %307, label %309
307: ; preds = %304
%308 = tail call i32 (...) @test_gettimeofday()
br label %341
309: ; preds = %304
%310 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.62, i64 0, i64 0))
%311 = icmp eq i64 %310, 0
br i1 %311, label %312, label %314
312: ; preds = %309
%313 = tail call i32 (...) @test_nanosleep()
br label %341
314: ; preds = %309
%315 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.63, i64 0, i64 0))
%316 = icmp eq i64 %315, 0
br i1 %316, label %317, label %319
317: ; preds = %314
%318 = tail call i32 (...) @test_get_set_uid()
br label %341
319: ; preds = %314
%320 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.64, i64 0, i64 0))
%321 = icmp eq i64 %320, 0
br i1 %321, label %322, label %324
322: ; preds = %319
%323 = tail call i32 (...) @test_get_set_gid()
br label %341
324: ; preds = %319
%325 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.65, i64 0, i64 0))
%326 = icmp eq i64 %325, 0
br i1 %326, label %327, label %329
327: ; preds = %324
%328 = tail call i32 (...) @test_get_set_groups()
br label %341
329: ; preds = %324
%330 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.66, i64 0, i64 0))
%331 = icmp eq i64 %330, 0
br i1 %331, label %332, label %334
332: ; preds = %329
%333 = tail call i32 (...) @test_sharing_memory_simple()
br label %341
334: ; preds = %329
%335 = tail call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.67, i64 0, i64 0))
%336 = icmp eq i64 %335, 0
br i1 %336, label %337, label %339
337: ; preds = %334
%338 = tail call i32 (...) @test_sharing_memory_child_and_grandchild()
br label %341
339: ; preds = %334
%340 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.68, i64 0, i64 0), i8* %8)
br label %341
341: ; preds = %12, %17, %22, %27, %32, %37, %42, %47, %52, %57, %62, %67, %72, %77, %82, %87, %92, %97, %102, %107, %112, %117, %122, %127, %132, %137, %142, %147, %152, %157, %162, %167, %172, %177, %182, %187, %192, %197, %202, %207, %212, %217, %222, %227, %232, %237, %242, %247, %252, %257, %262, %267, %272, %277, %282, %287, %292, %297, %302, %307, %312, %317, %322, %327, %332, %337, %339, %4
%342 = phi i32 [ 1, %4 ], [ %13, %12 ], [ %18, %17 ], [ %23, %22 ], [ %28, %27 ], [ %33, %32 ], [ %38, %37 ], [ %43, %42 ], [ %48, %47 ], [ %53, %52 ], [ %58, %57 ], [ %63, %62 ], [ %68, %67 ], [ %73, %72 ], [ %78, %77 ], [ %83, %82 ], [ %88, %87 ], [ %93, %92 ], [ %98, %97 ], [ %103, %102 ], [ %108, %107 ], [ %113, %112 ], [ %118, %117 ], [ %123, %122 ], [ %128, %127 ], [ %133, %132 ], [ %138, %137 ], [ %143, %142 ], [ %148, %147 ], [ %153, %152 ], [ %158, %157 ], [ %163, %162 ], [ %168, %167 ], [ %173, %172 ], [ %178, %177 ], [ %183, %182 ], [ %188, %187 ], [ %193, %192 ], [ %198, %197 ], [ %203, %202 ], [ %208, %207 ], [ %213, %212 ], [ %218, %217 ], [ %223, %222 ], [ %228, %227 ], [ %233, %232 ], [ %238, %237 ], [ %243, %242 ], [ %248, %247 ], [ %253, %252 ], [ %258, %257 ], [ %263, %262 ], [ %268, %267 ], [ %273, %272 ], [ %278, %277 ], [ %283, %282 ], [ %288, %287 ], [ %293, %292 ], [ %298, %297 ], [ %303, %302 ], [ %308, %307 ], [ %313, %312 ], [ %318, %317 ], [ %323, %322 ], [ %328, %327 ], [ %333, %332 ], [ %338, %337 ], [ 1, %339 ]
ret i32 %342
}