int main() {
  int N = random();
  p("types_compatible_p"
    "(int, float)",
    __builtin_types_compatible_p(int, float));
  p("choose_expr"
    "(0, 10, 20)",
    __builtin_choose_expr(0, 10, 20));
  p("constant_p"
    "(sizeof(10))",
    __builtin_constant_p(sizeof(10)));
  p("expect"
    "(N == 12, 0)",
    __builtin_expect(N == 12, 0));
  p("prefetch"
    "(&N)",
    (__builtin_prefetch(&N), 0));
  p("prefetch"
    "(&N, 1)",
    (__builtin_prefetch(&N, 1), 0));
  p("prefetch"
    "(&N, 1, 0)",
    (__builtin_prefetch(&N, 1, 0), 0));
  q("huge_val"
    "()",
    __builtin_huge_val());
  q("huge_valf"
    "()",
    __builtin_huge_valf());
  q("huge_vall"
    "()",
    __builtin_huge_vall());
  q("inf"
    "()",
    __builtin_inf());
  q("inff"
    "()",
    __builtin_inff());
  q("infl"
    "()",
    __builtin_infl());
  p("fpclassify"
    "(0, 1, 2, 3, 4, 1.0)",
    __builtin_fpclassify(0, 1, 2, 3, 4, 1.0));
  p("fpclassify"
    "(0, 1, 2, 3, 4, 1.0f)",
    __builtin_fpclassify(0, 1, 2, 3, 4, 1.0f));
  p("fpclassify"
    "(0, 1, 2, 3, 4, 1.0l)",
    __builtin_fpclassify(0, 1, 2, 3, 4, 1.0l));
  q("nan"
    "(\"\")",
    __builtin_nan(""));
  q("nanf"
    "(\"\")",
    __builtin_nanf(""));
  q("nanl"
    "(\"\")",
    __builtin_nanl(""));
  q("nans"
    "(\"\")",
    __builtin_nans(""));
  q("nan"
    "(\"10\")",
    __builtin_nan("10"));
  q("nanf"
    "(\"10\")",
    __builtin_nanf("10"));
  q("nanl"
    "(\"10\")",
    __builtin_nanl("10"));
  q("nans"
    "(\"10\")",
    __builtin_nans("10"));
  p("isgreater"
    "(1., 2.)",
    __builtin_isgreater(1., 2.));
  p("isgreaterequal"
    "(1., 2.)",
    __builtin_isgreaterequal(1., 2.));
  p("isless"
    "(1., 2.)",
    __builtin_isless(1., 2.));
  p("islessequal"
    "(1., 2.)",
    __builtin_islessequal(1., 2.));
  p("islessgreater"
    "(1., 2.)",
    __builtin_islessgreater(1., 2.));
  p("isunordered"
    "(1., 2.)",
    __builtin_isunordered(1., 2.));
  p("isinf"
    "(1.)",
    __builtin_isinf(1.));
  p("isinf_sign"
    "(1.)",
    __builtin_isinf_sign(1.));
  p("isnan"
    "(1.)",
    __builtin_isnan(1.));
  p("abs"
    "(N)",
    __builtin_abs(N));
  p("clz"
    "(N)",
    __builtin_clz(N));
  p("clzl"
    "(N)",
    __builtin_clzl(N));
  p("clzll"
    "(N)",
    __builtin_clzll(N));
  p("ctz"
    "(N)",
    __builtin_ctz(N));
  p("ctzl"
    "(N)",
    __builtin_ctzl(N));
  p("ctzll"
    "(N)",
    __builtin_ctzll(N));
  p("ffs"
    "(N)",
    __builtin_ffs(N));
  p("ffsl"
    "(N)",
    __builtin_ffsl(N));
  p("ffsll"
    "(N)",
    __builtin_ffsll(N));
  p("parity"
    "(N)",
    __builtin_parity(N));
  p("parityl"
    "(N)",
    __builtin_parityl(N));
  p("parityll"
    "(N)",
    __builtin_parityll(N));
  p("popcount"
    "(N)",
    __builtin_popcount(N));
  p("popcountl"
    "(N)",
    __builtin_popcountl(N));
  p("popcountll"
    "(N)",
    __builtin_popcountll(N));
  q("powi"
    "(1.2f, N)",
    __builtin_powi(1.2f, N));
  q("powif"
    "(1.2f, N)",
    __builtin_powif(1.2f, N));
  q("powil"
    "(1.2f, N)",
    __builtin_powil(1.2f, N));
  int a, b, n = random();
  char s0[10], s1[] = "Hello";
  p("strcat"
    "(s0, s1)",
    (__builtin_strcat(s0, s1), 0));
  p("strcmp"
    "(s0, s1)",
    (__builtin_strcmp(s0, s1), 0));
  p("strncat"
    "(s0, s1, n)",
    (__builtin_strncat(s0, s1, n), 0));
  p("strchr"
    "(s0, s1[0])",
    (__builtin_strchr(s0, s1[0]), 0));
  p("strrchr"
    "(s0, s1[0])",
    (__builtin_strrchr(s0, s1[0]), 0));
  p("strcpy"
    "(s0, s1)",
    (__builtin_strcpy(s0, s1), 0));
  p("strncpy"
    "(s0, s1, n)",
    (__builtin_strncpy(s0, s1, n), 0));
  p("__memset_chk"
    "(s0, 0, sizeof s0, n)",
    (__builtin___memset_chk(s0, 0, sizeof s0, n), 0));
  p("__memcpy_chk"
    "(s0, s1, sizeof s0, n)",
    (__builtin___memcpy_chk(s0, s1, sizeof s0, n), 0));
  p("__memmove_chk"
    "(s0, s1, sizeof s0, n)",
    (__builtin___memmove_chk(s0, s1, sizeof s0, n), 0));
  p("__mempcpy_chk"
    "(s0, s1, sizeof s0, n)",
    (__builtin___mempcpy_chk(s0, s1, sizeof s0, n), 0));
  p("__strncpy_chk"
    "(s0, s1, sizeof s0, n)",
    (__builtin___strncpy_chk(s0, s1, sizeof s0, n), 0));
  p("__strcpy_chk"
    "(s0, s1, n)",
    (__builtin___strcpy_chk(s0, s1, n), 0));
  s0[0] = 0;
  p("__strcat_chk"
    "(s0, s1, n)",
    (__builtin___strcat_chk(s0, s1, n), 0));
  p("object_size"
    "(s0, 0)",
    __builtin_object_size(s0, 0));
  p("object_size"
    "(s0, 1)",
    __builtin_object_size(s0, 1));
  p("object_size"
    "(s0, 2)",
    __builtin_object_size(s0, 2));
  p("object_size"
    "(s0, 3)",
    __builtin_object_size(s0, 3));
  p("bswap16"
    "(N)",
    __builtin_bswap16(N));
  p("bswap32"
    "(N)",
    __builtin_bswap32(N));
  p("bswap64"
    "(N)",
    __builtin_bswap64(N));
  p("bitreverse8"
    "(N)",
    __builtin_bitreverse8(N));
  p("bitreverse16"
    "(N)",
    __builtin_bitreverse16(N));
  p("bitreverse32"
    "(N)",
    __builtin_bitreverse32(N));
  p("bitreverse64"
    "(N)",
    __builtin_bitreverse64(N));
  p("trap"
    "()",
    (__builtin_trap(), 0));
  r("extract_return_addr"
    "(&N)",
    __builtin_extract_return_addr(&N));
  p("signbit"
    "(1.0)",
    __builtin_signbit(1.0));
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   10f0 <random@plt>
mov    %eax,-0x8(%rbp)
lea    0xe20(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xe2f(%rip),%rdi
mov    $0x14,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xe33(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1080 <p@plt>
cmpl   $0xc,-0x8(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rsi
lea    0xe28(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x8(%rbp),%rax
prefetcht0 (%rax)
lea    0xe26(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x8(%rbp),%rax
prefetcht0 (%rax)
lea    0xe1c(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x8(%rbp),%rax
prefetchnta (%rax)
lea    0xe15(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xe18(%rip),%rdi
movsd  0xd60(%rip),%xmm0
mov    $0x1,%al
call   1110 <q@plt>
lea    0xe0d(%rip),%rdi
movsd  0xd4a(%rip),%xmm0
mov    $0x1,%al
call   1110 <q@plt>
mov    %rsp,%rax
flds   0xd02(%rip)
fstpt  (%rax)
lea    0xdf8(%rip),%rdi
xor    %eax,%eax
call   1110 <q@plt>
lea    0xdf6(%rip),%rdi
movsd  0xd1b(%rip),%xmm0
mov    $0x1,%al
call   1110 <q@plt>
lea    0xde6(%rip),%rdi
movsd  0xd05(%rip),%xmm0
mov    $0x1,%al
call   1110 <q@plt>
mov    %rsp,%rax
flds   0xcbd(%rip)
fstpt  (%rax)
lea    0xdcc(%rip),%rdi
xor    %eax,%eax
call   1110 <q@plt>
lea    0xdc5(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xdd1(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xdde(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xdeb(%rip),%rdi
movsd  0xc95(%rip),%xmm0
mov    $0x1,%al
call   1110 <q@plt>
lea    0xddd(%rip),%rdi
movsd  0xc7f(%rip),%xmm0
mov    $0x1,%al
call   1110 <q@plt>
mov    %rsp,%rax
flds   0xc3b(%rip)
fstpt  (%rax)
lea    0xdc5(%rip),%rdi
xor    %eax,%eax
call   1110 <q@plt>
lea    0xdc0(%rip),%rdi
movsd  0xc48(%rip),%xmm0
mov    $0x1,%al
call   1110 <q@plt>
lea    0xdb3(%rip),%rdi
movsd  0xc2a(%rip),%xmm0
mov    $0x1,%al
call   1110 <q@plt>
lea    0xda7(%rip),%rdi
movsd  0xc0c(%rip),%xmm0
mov    $0x1,%al
call   1110 <q@plt>
mov    %rsp,%rax
fldt   0xc2c(%rip)
fstpt  (%rax)
lea    0xd91(%rip),%rdi
xor    %eax,%eax
call   1110 <q@plt>
lea    0xd8e(%rip),%rdi
movsd  0xbd5(%rip),%xmm0
mov    $0x1,%al
call   1110 <q@plt>
lea    0xd83(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xd85(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xd8c(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xd88(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xd89(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xd8c(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xd90(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xd8a(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0xd89(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%esi
xor    %eax,%eax
sub    %esi,%eax
cmp    $0x0,%esi
cmovl  %eax,%esi
lea    0xd76(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%eax
bsr    %eax,%esi
xor    $0x1f,%esi
lea    0xd66(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rax
bsr    %rax,%rax
xor    $0x3f,%rax
mov    %eax,%esi
lea    0xd51(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rax
bsr    %rax,%rax
xor    $0x3f,%rax
mov    %eax,%esi
lea    0xd3d(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%eax
bsf    %eax,%esi
lea    0xd32(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rax
bsf    %rax,%rax
mov    %eax,%esi
lea    0xd21(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rax
bsf    %rax,%rax
mov    %eax,%esi
lea    0xd11(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%ecx
bsf    %ecx,%esi
add    $0x1,%esi
xor    %eax,%eax
cmp    $0x0,%ecx
cmove  %eax,%esi
lea    0xcfb(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rdx
bsf    %rdx,%rax
add    $0x1,%rax
xor    %ecx,%ecx
cmp    $0x0,%rdx
cmove  %rcx,%rax
mov    %eax,%esi
lea    0xcdc(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rdx
bsf    %rdx,%rax
add    $0x1,%rax
xor    %ecx,%ecx
cmp    $0x0,%rdx
cmove  %rcx,%rax
mov    %eax,%esi
lea    0xcbe(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%ecx
mov    %ecx,%eax
shr    %eax
and    $0x55555555,%eax
sub    %eax,%ecx
mov    %ecx,%eax
and    $0x33333333,%eax
shr    $0x2,%ecx
and    $0x33333333,%ecx
add    %ecx,%eax
mov    %eax,%ecx
shr    $0x4,%ecx
add    %ecx,%eax
and    $0xf0f0f0f,%eax
imul   $0x1010101,%eax,%esi
shr    $0x18,%esi
and    $0x1,%esi
lea    0xc81(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rcx
mov    %rcx,%rax
shr    %rax
movabs $0x5555555555555555,%rdx
55 55 55
and    %rdx,%rax
sub    %rax,%rcx
movabs $0x3333333333333333,%rdx
33 33 33
mov    %rcx,%rax
and    %rdx,%rax
shr    $0x2,%rcx
and    %rdx,%rcx
add    %rcx,%rax
mov    %rax,%rcx
shr    $0x4,%rcx
add    %rcx,%rax
movabs $0xf0f0f0f0f0f0f0f,%rcx
0f 0f 0f
and    %rcx,%rax
movabs $0x101010101010101,%rcx
01 01 01
imul   %rcx,%rax
shr    $0x38,%rax
and    $0x1,%rax
mov    %eax,%esi
lea    0xc1a(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rcx
mov    %rcx,%rax
shr    %rax
movabs $0x5555555555555555,%rdx
55 55 55
and    %rdx,%rax
sub    %rax,%rcx
movabs $0x3333333333333333,%rdx
33 33 33
mov    %rcx,%rax
and    %rdx,%rax
shr    $0x2,%rcx
and    %rdx,%rcx
add    %rcx,%rax
mov    %rax,%rcx
shr    $0x4,%rcx
add    %rcx,%rax
movabs $0xf0f0f0f0f0f0f0f,%rcx
0f 0f 0f
and    %rcx,%rax
movabs $0x101010101010101,%rcx
01 01 01
imul   %rcx,%rax
shr    $0x38,%rax
and    $0x1,%rax
mov    %eax,%esi
lea    0xbb4(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%ecx
mov    %ecx,%eax
shr    %eax
and    $0x55555555,%eax
sub    %eax,%ecx
mov    %ecx,%eax
and    $0x33333333,%eax
shr    $0x2,%ecx
and    $0x33333333,%ecx
add    %ecx,%eax
mov    %eax,%ecx
shr    $0x4,%ecx
add    %ecx,%eax
and    $0xf0f0f0f,%eax
imul   $0x1010101,%eax,%esi
shr    $0x18,%esi
lea    0xb7d(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rcx
mov    %rcx,%rax
shr    %rax
movabs $0x5555555555555555,%rdx
55 55 55
and    %rdx,%rax
sub    %rax,%rcx
movabs $0x3333333333333333,%rdx
33 33 33
mov    %rcx,%rax
and    %rdx,%rax
shr    $0x2,%rcx
and    %rdx,%rcx
add    %rcx,%rax
mov    %rax,%rcx
shr    $0x4,%rcx
add    %rcx,%rax
movabs $0xf0f0f0f0f0f0f0f,%rcx
0f 0f 0f
and    %rcx,%rax
movabs $0x101010101010101,%rcx
01 01 01
imul   %rcx,%rax
shr    $0x38,%rax
mov    %eax,%esi
lea    0xb1c(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rcx
mov    %rcx,%rax
shr    %rax
movabs $0x5555555555555555,%rdx
55 55 55
and    %rdx,%rax
sub    %rax,%rcx
movabs $0x3333333333333333,%rdx
33 33 33
mov    %rcx,%rax
and    %rdx,%rax
shr    $0x2,%rcx
and    %rdx,%rcx
add    %rcx,%rax
mov    %rax,%rcx
shr    $0x4,%rcx
add    %rcx,%rax
movabs $0xf0f0f0f0f0f0f0f,%rcx
0f 0f 0f
and    %rcx,%rax
movabs $0x101010101010101,%rcx
01 01 01
imul   %rcx,%rax
shr    $0x38,%rax
mov    %eax,%esi
lea    0xabc(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%edi
movsd  0x7c4(%rip),%xmm0
call   1d00 <__powidf2>
lea    0xaac(%rip),%rdi
mov    $0x1,%al
call   1110 <q@plt>
mov    -0x8(%rbp),%edi
movss  0x796(%rip),%xmm0
call   1cb0 <__powisf2>
cvtss2sd %xmm0,%xmm0
lea    0xa98(%rip),%rdi
mov    $0x1,%al
call   1110 <q@plt>
mov    -0x8(%rbp),%edi
mov    %rsp,%rax
flds   0x773(%rip)
fstpt  (%rax)
call   1d50 <__powixf2>
mov    %rsp,%rax
fstpt  (%rax)
lea    0xa81(%rip),%rdi
xor    %eax,%eax
call   1110 <q@plt>
mov    $0x0,%al
call   10f0 <random@plt>
mov    %eax,-0x14(%rbp)
mov    0xa79(%rip),%eax
mov    %eax,-0x24(%rbp)
mov    0xa73(%rip),%ax
mov    %ax,-0x20(%rbp)
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
call   1130 <strcat@plt>
lea    0xa5d(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
call   10c0 <strcmp@plt>
lea    0xa4f(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
movslq -0x14(%rbp),%rdx
call   10b0 <strncat@plt>
lea    0xa3d(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
movsbl -0x24(%rbp),%esi
call   1090 <strchr@plt>
lea    0xa33(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
movsbl -0x24(%rbp),%esi
call   10a0 <strrchr@plt>
lea    0xa28(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
call   1060 <strcpy@plt>
lea    0xa1e(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
movslq -0x14(%rbp),%rdx
call   1050 <strncpy@plt>
lea    0xa0c(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
movslq -0x14(%rbp),%rcx
xor    %esi,%esi
mov    $0xa,%edx
call   1140 <__memset_chk@plt>
lea    0x9fb(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
movslq -0x14(%rbp),%rcx
mov    $0xa,%edx
call   10e0 <__memcpy_chk@plt>
lea    0x9f7(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
movslq -0x14(%rbp),%rcx
mov    $0xa,%edx
call   10d0 <__memmove_chk@plt>
lea    0x9f4(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
movslq -0x14(%rbp),%rcx
mov    $0xa,%edx
call   1040 <__mempcpy_chk@plt>
lea    0x9f2(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
movslq -0x14(%rbp),%rcx
mov    $0xa,%edx
call   1100 <__strncpy_chk@plt>
lea    0x9f0(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
movslq -0x14(%rbp),%rdx
call   1120 <__strcpy_chk@plt>
lea    0x9f3(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
movb   $0x0,-0x1e(%rbp)
lea    -0x1e(%rbp),%rdi
lea    -0x24(%rbp),%rsi
movslq -0x14(%rbp),%rdx
call   1030 <__strcat_chk@plt>
lea    0x9e6(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0x9ee(%rip),%rdi
mov    $0xa,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0x9ee(%rip),%rdi
mov    $0xa,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0x9ee(%rip),%rdi
mov    $0xa,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    0x9ee(%rip),%rdi
mov    $0xa,%esi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%eax
rol    $0x8,%ax
movzwl %ax,%esi
lea    0x9e4(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%esi
bswap  %esi
lea    0x9dc(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rsi
bswap  %rsi
lea    0x9d2(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%eax
rol    $0x4,%al
mov    %al,%cl
and    $0x33,%cl
shl    $0x2,%cl
shr    $0x2,%al
and    $0x33,%al
or     %cl,%al
mov    %al,%cl
and    $0x55,%cl
add    %cl,%cl
shr    %al
and    $0x55,%al
or     %cl,%al
movzbl %al,%esi
lea    0x9aa(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%eax
rol    $0x8,%ax
mov    %ax,%dx
mov    %edx,%eax
and    $0xf0f,%eax
shl    $0x4,%eax
shr    $0x4,%edx
and    $0xf0f,%edx
or     %eax,%edx
mov    %edx,%eax
and    $0x3333,%eax
mov    %eax,%ecx
shr    $0x2,%edx
and    $0x3333,%edx
mov    %edx,%eax
lea    (%rax,%rcx,4),%edx
mov    %edx,%eax
and    $0x5555,%eax
mov    %eax,%ecx
shr    %edx
and    $0x5555,%edx
mov    %edx,%eax
lea    (%rax,%rcx,2),%eax
movzwl %ax,%esi
lea    0x95c(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
mov    -0x8(%rbp),%edx
bswap  %edx
mov    %edx,%eax
and    $0xf0f0f0f,%eax
shl    $0x4,%eax
shr    $0x4,%edx
and    $0xf0f0f0f,%edx
or     %eax,%edx
mov    %edx,%eax
and    $0x33333333,%eax
mov    %eax,%ecx
shr    $0x2,%edx
and    $0x33333333,%edx
mov    %edx,%eax
lea    (%rax,%rcx,4),%edx
mov    %edx,%eax
and    $0x55555555,%eax
mov    %eax,%ecx
shr    %edx
and    $0x55555555,%edx
mov    %edx,%eax
lea    (%rax,%rcx,2),%esi
lea    0x917(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
movslq -0x8(%rbp),%rcx
bswap  %rcx
mov    %rcx,%rax
shr    $0x4,%rax
movabs $0xf0f0f0f0f0f0f0f,%rdx
0f 0f 0f
and    %rdx,%rax
and    %rdx,%rcx
shl    $0x4,%rcx
or     %rcx,%rax
movabs $0x3333333333333333,%rdx
33 33 33
mov    %rax,%rcx
and    %rdx,%rcx
shr    $0x2,%rax
and    %rdx,%rax
lea    (%rax,%rcx,4),%rax
movabs $0x5555555555555555,%rdx
55 55 55
mov    %rax,%rcx
and    %rdx,%rcx
shr    %rax
and    %rdx,%rax
lea    (%rax,%rcx,2),%rsi
lea    0x8bf(%rip),%rdi
mov    $0x0,%al
call   1080 <p@plt>
ud2
lea    0x8bf(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
lea    -0x8(%rbp),%rsi
lea    0x8b2(%rip),%rdi
mov    $0x0,%al
call   1070 <r@plt>
lea    0x8bc(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1080 <p@plt>
xor    %eax,%eax
add    $0x40,%rsp
pop    %rbp
ret
nop

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
xor    %eax,%eax
call   10b0 <random@plt>
mov    %eax,%ebx
mov    %eax,0x18(%rsp)
lea    0xe5e(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xe6d(%rip),%rdi
mov    $0x14,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xe71(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1070 <p@plt>
xor    %esi,%esi
cmp    $0xc,%ebx
sete   %sil
lea    0xe6c(%rip),%rdi
xor    %eax,%eax
call   1070 <p@plt>
prefetcht0 0x18(%rsp)
lea    0xe6c(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
prefetcht0 0x18(%rsp)
lea    0xe64(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
prefetchnta 0x18(%rsp)
lea    0xe5f(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xe62(%rip),%rdi
movsd  0xd6a(%rip),%xmm0
mov    $0x1,%al
call   10d0 <q@plt>
lea    0xe57(%rip),%rdi
movsd  0xd54(%rip),%xmm0
mov    $0x1,%al
call   10d0 <q@plt>
flds   0xd7f(%rip)
fld    %st(0)
fstpt  0x24(%rsp)
fstpt  (%rsp)
lea    0xe3e(%rip),%rdi
xor    %eax,%eax
call   10d0 <q@plt>
lea    0xe3c(%rip),%rdi
movsd  0xd21(%rip),%xmm0
mov    $0x1,%al
call   10d0 <q@plt>
lea    0xe2c(%rip),%rdi
movsd  0xd0b(%rip),%xmm0
mov    $0x1,%al
call   10d0 <q@plt>
fldt   0x24(%rsp)
fstpt  (%rsp)
lea    0xe16(%rip),%rdi
xor    %eax,%eax
call   10d0 <q@plt>
lea    0xe0f(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xe1b(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xe28(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xe35(%rip),%rdi
movsd  0xcaf(%rip),%xmm0
mov    $0x1,%al
call   10d0 <q@plt>
lea    0xe27(%rip),%rdi
movsd  0xc99(%rip),%xmm0
mov    $0x1,%al
call   10d0 <q@plt>
flds   0xcc0(%rip)
fstpt  (%rsp)
lea    0xe11(%rip),%rdi
xor    %eax,%eax
call   10d0 <q@plt>
lea    0xe0c(%rip),%rdi
movsd  0xc74(%rip),%xmm0
mov    $0x1,%al
call   10d0 <q@plt>
lea    0xdff(%rip),%rdi
movsd  0xc66(%rip),%xmm0
mov    $0x1,%al
call   10d0 <q@plt>
lea    0xdf3(%rip),%rdi
movsd  0xc58(%rip),%xmm0
mov    $0x1,%al
call   10d0 <q@plt>
fldt   0xc7b(%rip)
fstpt  (%rsp)
lea    0xddf(%rip),%rdi
xor    %eax,%eax
call   10d0 <q@plt>
lea    0xddc(%rip),%rdi
movsd  0xc33(%rip),%xmm0
mov    $0x1,%al
call   10d0 <q@plt>
lea    0xdd1(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xdd3(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xdda(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xdd6(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xdd7(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xdda(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xdde(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xdd8(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xdd7(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    %ebx,%esi
neg    %esi
cmovs  %ebx,%esi
lea    0xdca(%rip),%rdi
xor    %eax,%eax
call   1070 <p@plt>
bsr    %ebx,%esi
xor    $0x1f,%esi
lea    0xdbd(%rip),%rdi
xor    %eax,%eax
call   1070 <p@plt>
movslq %ebx,%r14
bsr    %r14,%rbx
xor    $0x3f,%ebx
lea    0xdac(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xda4(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <p@plt>
bsf    %r14d,%ebx
lea    0xd99(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xd90(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xd88(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <p@plt>
test   %r14d,%r14d
mov    $0xffffffff,%ebp
cmovne %ebx,%ebp
add    $0x1,%ebp
lea    0xd73(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xd6a(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xd62(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    %r14d,%eax
shr    %eax
and    $0x55555555,%eax
mov    %r14d,%ecx
sub    %eax,%ecx
mov    %ecx,%eax
and    $0x33333333,%eax
shr    $0x2,%ecx
and    $0x33333333,%ecx
add    %eax,%ecx
mov    %ecx,%eax
shr    $0x4,%eax
add    %ecx,%eax
and    $0xf0f0f0f,%eax
imul   $0x1010101,%eax,%r15d
shr    $0x18,%r15d
mov    %r15d,%esi
and    $0x1,%esi
lea    0xd1d(%rip),%rdi
xor    %eax,%eax
call   1070 <p@plt>
mov    %r14,%rax
shr    %rax
movabs $0x5555555555555555,%rcx
55 55 55
and    %rcx,%rax
mov    %r14,%rcx
sub    %rax,%rcx
movabs $0x3333333333333333,%r13
33 33 33
mov    %rcx,%rax
and    %r13,%rax
shr    $0x2,%rcx
and    %r13,%rcx
add    %rax,%rcx
mov    %rcx,%rax
shr    $0x4,%rax
add    %rcx,%rax
movabs $0xf0f0f0f0f0f0f0f,%r12
0f 0f 0f
and    %r12,%rax
movabs $0x101010101010101,%rbx
01 01 01
imul   %rax,%rbx
shr    $0x38,%rbx
mov    %ebx,%ebp
and    $0x1,%ebp
lea    0xcb8(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xcb3(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xcaf(%rip),%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xcaa(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xca7(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <p@plt>
movsd  0x9d0(%rip),%xmm0
mov    %r14d,%edi
call   1a80 <__powidf2>
lea    0xc95(%rip),%rdi
mov    $0x1,%al
call   10d0 <q@plt>
movss  0x9c2(%rip),%xmm0
mov    %r14d,%edi
call   1a30 <__powisf2>
cvtss2sd %xmm0,%xmm0
lea    0xc81(%rip),%rdi
mov    $0x1,%al
call   10d0 <q@plt>
flds   0x9a2(%rip)
fstpt  (%rsp)
mov    %r14d,%edi
call   1ad0 <__powixf2>
fstpt  (%rsp)
lea    0xc6e(%rip),%rdi
xor    %eax,%eax
call   10d0 <q@plt>
xor    %eax,%eax
call   10b0 <random@plt>
mov    %eax,%ebx
movw   $0x6f,0x20(%rsp)
movl   $0x6c6c6548,0x1c(%rsp)
6c
lea    0x2e(%rsp),%r15
lea    0x1c(%rsp),%r14
mov    %r15,%rdi
mov    %r14,%rsi
call   10f0 <strcat@plt>
lea    0xc48(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xc47(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
movslq %ebx,%rbx
mov    %r15,%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
call   1080 <strncat@plt>
lea    0xc35(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xc38(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xc3a(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    %r15,%rdi
mov    %r14,%rsi
call   1060 <strcpy@plt>
lea    0xc32(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    %r15,%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
call   1050 <strncpy@plt>
lea    0xc23(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    $0xa,%edx
mov    %r15,%rdi
xor    %esi,%esi
mov    %rbx,%rcx
call   1100 <__memset_chk@plt>
lea    0xc14(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    $0xa,%edx
mov    %r15,%rdi
mov    %r14,%rsi
mov    %rbx,%rcx
call   10a0 <__memcpy_chk@plt>
lea    0xc13(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    $0xa,%edx
mov    %r15,%rdi
mov    %r14,%rsi
mov    %rbx,%rcx
call   1090 <__memmove_chk@plt>
lea    0xc13(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    $0xa,%edx
mov    %r15,%rdi
mov    %r14,%rsi
mov    %rbx,%rcx
call   1040 <__mempcpy_chk@plt>
lea    0xc14(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    $0xa,%edx
mov    %r15,%rdi
mov    %r14,%rsi
mov    %rbx,%rcx
call   10c0 <__strncpy_chk@plt>
lea    0xc15(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    %r15,%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
call   10e0 <__strcpy_chk@plt>
lea    0xc1b(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
movb   $0x0,0x2e(%rsp)
mov    %r15,%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
call   1030 <__strcat_chk@plt>
lea    0xc10(%rip),%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xc18(%rip),%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xc18(%rip),%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xc18(%rip),%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1070 <p@plt>
lea    0xc18(%rip),%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1070 <p@plt>
movslq 0x18(%rsp),%rbp
mov    %ebp,%ebx
rol    $0x8,%bx
movzwl %bx,%esi
lea    0xc0a(%rip),%rdi
xor    %eax,%eax
call   1070 <p@plt>
mov    %ebp,%r15d
bswap  %r15d
lea    0xc01(%rip),%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1070 <p@plt>
mov    %rbp,%r14
bswap  %r14
lea    0xbf5(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1070 <p@plt>
rol    $0x4,%bpl
mov    %ebp,%eax
and    $0x33,%al
shl    $0x2,%al
shr    $0x2,%bpl
and    $0x33,%bpl
or     %al,%bpl
mov    %ebp,%eax
and    $0x55,%al
add    %al,%al
shr    %bpl
and    $0x55,%bpl
or     %al,%bpl
movzbl %bpl,%esi
lea    0xbc5(%rip),%rdi
xor    %eax,%eax
call   1070 <p@plt>
mov    %ebx,%eax
and    $0xf0f,%eax
shl    $0x4,%eax
shr    $0x4,%ebx
and    $0xf0f,%ebx
or     %eax,%ebx
mov    %ebx,%eax
and    $0x3333,%eax
shr    $0x2,%ebx
and    $0x3333,%ebx
lea    (%rbx,%rax,4),%eax
mov    %eax,%ecx
and    $0x5555,%ecx
shr    %eax
and    $0x5555,%eax
lea    (%rax,%rcx,2),%esi
lea    0xb8c(%rip),%rdi
xor    %eax,%eax
call   1070 <p@plt>
mov    %r15d,%eax
and    $0xf0f0f0f,%eax
shl    $0x4,%eax
shr    $0x4,%r15d
and    $0xf0f0f0f,%r15d
or     %eax,%r15d
mov    %r15d,%eax
and    $0x33333333,%eax
shr    $0x2,%r15d
and    $0x33333333,%r15d
lea    (%r15,%rax,4),%eax
mov    %eax,%ecx
and    $0x55555555,%ecx
shr    %eax
and    $0x55555555,%eax
lea    (%rax,%rcx,2),%esi
lea    0xb4c(%rip),%rdi
xor    %eax,%eax
call   1070 <p@plt>
mov    %r14,%rax
shr    $0x4,%rax
and    %r12,%rax
and    %r12,%r14
shl    $0x4,%r14
or     %rax,%r14
mov    %r14,%rax
and    %r13,%rax
shr    $0x2,%r14
and    %r13,%r14
lea    (%r14,%rax,4),%rax
mov    %rax,%rcx
movabs $0x5555555555555555,%rdx
55 55 55
and    %rdx,%rcx
shr    %rax
and    %rdx,%rax
lea    (%rax,%rcx,2),%rsi
lea    0xb0f(%rip),%rdi
xor    %eax,%eax
call   1070 <p@plt>
ud2
cs nopw 0x0(%rax,%rax,1)
nop

LLVM IR (-O0):
@.str = [31 x i8] c"types_compatible_p(int, float)\00"
@.str.1 = [23 x i8] c"choose_expr(0, 10, 20)\00"
@.str.2 = [23 x i8] c"constant_p(sizeof(10))\00"
@.str.3 = [19 x i8] c"expect(N == 12, 0)\00"
@.str.4 = [13 x i8] c"prefetch(&N)\00"
@.str.5 = [16 x i8] c"prefetch(&N, 1)\00"
@.str.6 = [19 x i8] c"prefetch(&N, 1, 0)\00"
@.str.7 = [11 x i8] c"huge_val()\00"
@.str.8 = [12 x i8] c"huge_valf()\00"
@.str.9 = [12 x i8] c"huge_vall()\00"
@.str.10 = [6 x i8] c"inf()\00"
@.str.11 = [7 x i8] c"inff()\00"
@.str.12 = [7 x i8] c"infl()\00"
@.str.13 = [31 x i8] c"fpclassify(0, 1, 2, 3, 4, 1.0)\00"
@.str.14 = [32 x i8] c"fpclassify(0, 1, 2, 3, 4, 1.0f)\00"
@.str.15 = [32 x i8] c"fpclassify(0, 1, 2, 3, 4, 1.0l)\00"
@.str.16 = [8 x i8] c"nan(\22\22)\00"
@.str.17 = [9 x i8] c"nanf(\22\22)\00"
@.str.18 = [9 x i8] c"nanl(\22\22)\00"
@.str.19 = [9 x i8] c"nans(\22\22)\00"
@.str.20 = [10 x i8] c"nan(\2210\22)\00"
@.str.21 = [11 x i8] c"nanf(\2210\22)\00"
@.str.22 = [11 x i8] c"nanl(\2210\22)\00"
@.str.23 = [11 x i8] c"nans(\2210\22)\00"
@.str.24 = [18 x i8] c"isgreater(1., 2.)\00"
@.str.25 = [23 x i8] c"isgreaterequal(1., 2.)\00"
@.str.26 = [15 x i8] c"isless(1., 2.)\00"
@.str.27 = [20 x i8] c"islessequal(1., 2.)\00"
@.str.28 = [22 x i8] c"islessgreater(1., 2.)\00"
@.str.29 = [20 x i8] c"isunordered(1., 2.)\00"
@.str.30 = [10 x i8] c"isinf(1.)\00"
@.str.31 = [15 x i8] c"isinf_sign(1.)\00"
@.str.32 = [10 x i8] c"isnan(1.)\00"
@.str.33 = [7 x i8] c"abs(N)\00"
@.str.34 = [7 x i8] c"clz(N)\00"
@.str.35 = [8 x i8] c"clzl(N)\00"
@.str.36 = [9 x i8] c"clzll(N)\00"
@.str.37 = [7 x i8] c"ctz(N)\00"
@.str.38 = [8 x i8] c"ctzl(N)\00"
@.str.39 = [9 x i8] c"ctzll(N)\00"
@.str.40 = [7 x i8] c"ffs(N)\00"
@.str.41 = [8 x i8] c"ffsl(N)\00"
@.str.42 = [9 x i8] c"ffsll(N)\00"
@.str.43 = [10 x i8] c"parity(N)\00"
@.str.44 = [11 x i8] c"parityl(N)\00"
@.str.45 = [12 x i8] c"parityll(N)\00"
@.str.46 = [12 x i8] c"popcount(N)\00"
@.str.47 = [13 x i8] c"popcountl(N)\00"
@.str.48 = [14 x i8] c"popcountll(N)\00"
@.str.49 = [14 x i8] c"powi(1.2f, N)\00"
@.str.50 = [15 x i8] c"powif(1.2f, N)\00"
@.str.51 = [15 x i8] c"powil(1.2f, N)\00"
@__const.main.s1 = [6 x i8] c"Hello\00"
@.str.52 = [15 x i8] c"strcat(s0, s1)\00"
@.str.53 = [15 x i8] c"strcmp(s0, s1)\00"
@.str.54 = [19 x i8] c"strncat(s0, s1, n)\00"
@.str.55 = [18 x i8] c"strchr(s0, s1[0])\00"
@.str.56 = [19 x i8] c"strrchr(s0, s1[0])\00"
@.str.57 = [15 x i8] c"strcpy(s0, s1)\00"
@.str.58 = [19 x i8] c"strncpy(s0, s1, n)\00"
@.str.59 = [34 x i8] c"__memset_chk(s0, 0, sizeof s0, n)\00"
@.str.60 = [35 x i8] c"__memcpy_chk(s0, s1, sizeof s0, n)\00"
@.str.61 = [36 x i8] c"__memmove_chk(s0, s1, sizeof s0, n)\00"
@.str.62 = [36 x i8] c"__mempcpy_chk(s0, s1, sizeof s0, n)\00"
@.str.63 = [36 x i8] c"__strncpy_chk(s0, s1, sizeof s0, n)\00"
@.str.64 = [24 x i8] c"__strcpy_chk(s0, s1, n)\00"
@.str.65 = [24 x i8] c"__strcat_chk(s0, s1, n)\00"
@.str.66 = [19 x i8] c"object_size(s0, 0)\00"
@.str.67 = [19 x i8] c"object_size(s0, 1)\00"
@.str.68 = [19 x i8] c"object_size(s0, 2)\00"
@.str.69 = [19 x i8] c"object_size(s0, 3)\00"
@.str.70 = [11 x i8] c"bswap16(N)\00"
@.str.71 = [11 x i8] c"bswap32(N)\00"
@.str.72 = [11 x i8] c"bswap64(N)\00"
@.str.73 = [15 x i8] c"bitreverse8(N)\00"
@.str.74 = [16 x i8] c"bitreverse16(N)\00"
@.str.75 = [16 x i8] c"bitreverse32(N)\00"
@.str.76 = [16 x i8] c"bitreverse64(N)\00"
@.str.77 = [7 x i8] c"trap()\00"
@.str.78 = [24 x i8] c"extract_return_addr(&N)\00"
@.str.79 = [13 x i8] c"signbit(1.0)\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca [10 x i8]
%7 = alloca [6 x i8]
store i32 0, i32* %1
%8 = call i32 (...) @random()
store i32 %8, i32* %2
%9 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str, i64 0, i64 0), i32 0)
%10 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0), i32 20)
%11 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.2, i64 0, i64 0), i32 1)
%12 = load i32, i32* %2
%13 = icmp eq i32 %12, 12
%14 = zext i1 %13 to i32
%15 = sext i32 %14 to i64
%16 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0), i64 %15)
%17 = bitcast i32* %2 to i8*
%18 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0), i32 0)
%19 = bitcast i32* %2 to i8*
%20 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.5, i64 0, i64 0), i32 0)
%21 = bitcast i32* %2 to i8*
%22 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.6, i64 0, i64 0), i32 0)
%23 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.7, i64 0, i64 0), double 0x7FF0000000000000)
%24 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0), double 0x7FF0000000000000)
%25 = call i32 (i8*, x86_fp80, ...) bitcast (i32 (...)* @q to i32 (i8*, x86_fp80, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.9, i64 0, i64 0), x86_fp80 0xK7FFF8000000000000000)
%26 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0), double 0x7FF0000000000000)
%27 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), double 0x7FF0000000000000)
%28 = call i32 (i8*, x86_fp80, ...) bitcast (i32 (...)* @q to i32 (i8*, x86_fp80, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0), x86_fp80 0xK7FFF8000000000000000)
%29 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.13, i64 0, i64 0), i32 2)
%30 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0), i32 2)
%31 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.15, i64 0, i64 0), i32 2)
%32 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.16, i64 0, i64 0), double 0x7FF8000000000000)
%33 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.17, i64 0, i64 0), double 0x7FF8000000000000)
%34 = call i32 (i8*, x86_fp80, ...) bitcast (i32 (...)* @q to i32 (i8*, x86_fp80, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0), x86_fp80 0xK7FFFC000000000000000)
%35 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0), double 0x7FF4000000000000)
%36 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0), double 0x7FF800000000000A)
%37 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.21, i64 0, i64 0), double 0x7FF8000140000000)
%38 = call i32 (i8*, x86_fp80, ...) bitcast (i32 (...)* @q to i32 (i8*, x86_fp80, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0), x86_fp80 0xK7FFFC00000000000000A)
%39 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.23, i64 0, i64 0), double 0x7FF000000000000A)
%40 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.24, i64 0, i64 0), i32 0)
%41 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.25, i64 0, i64 0), i32 0)
%42 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.26, i64 0, i64 0), i32 1)
%43 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.27, i64 0, i64 0), i32 1)
%44 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.28, i64 0, i64 0), i32 1)
%45 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.29, i64 0, i64 0), i32 0)
%46 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.30, i64 0, i64 0), i32 0)
%47 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.31, i64 0, i64 0), i32 0)
%48 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.32, i64 0, i64 0), i32 0)
%49 = load i32, i32* %2
%50 = sub nsw i32 0, %49
%51 = icmp slt i32 %49, 0
%52 = select i1 %51, i32 %50, i32 %49
%53 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0), i32 %52)
%54 = load i32, i32* %2
%55 = call i32 @llvm.ctlz.i32(i32 %54, i1 true)
%56 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.34, i64 0, i64 0), i32 %55)
%57 = load i32, i32* %2
%58 = sext i32 %57 to i64
%59 = call i64 @llvm.ctlz.i64(i64 %58, i1 true)
%60 = trunc i64 %59 to i32
%61 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.35, i64 0, i64 0), i32 %60)
%62 = load i32, i32* %2
%63 = sext i32 %62 to i64
%64 = call i64 @llvm.ctlz.i64(i64 %63, i1 true)
%65 = trunc i64 %64 to i32
%66 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.36, i64 0, i64 0), i32 %65)
%67 = load i32, i32* %2
%68 = call i32 @llvm.cttz.i32(i32 %67, i1 true)
%69 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0), i32 %68)
%70 = load i32, i32* %2
%71 = sext i32 %70 to i64
%72 = call i64 @llvm.cttz.i64(i64 %71, i1 true)
%73 = trunc i64 %72 to i32
%74 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.38, i64 0, i64 0), i32 %73)
%75 = load i32, i32* %2
%76 = sext i32 %75 to i64
%77 = call i64 @llvm.cttz.i64(i64 %76, i1 true)
%78 = trunc i64 %77 to i32
%79 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.39, i64 0, i64 0), i32 %78)
%80 = load i32, i32* %2
%81 = call i32 @llvm.cttz.i32(i32 %80, i1 true)
%82 = add i32 %81, 1
%83 = icmp eq i32 %80, 0
%84 = select i1 %83, i32 0, i32 %82
%85 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.40, i64 0, i64 0), i32 %84)
%86 = load i32, i32* %2
%87 = sext i32 %86 to i64
%88 = call i64 @llvm.cttz.i64(i64 %87, i1 true)
%89 = add i64 %88, 1
%90 = icmp eq i64 %87, 0
%91 = select i1 %90, i64 0, i64 %89
%92 = trunc i64 %91 to i32
%93 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.41, i64 0, i64 0), i32 %92)
%94 = load i32, i32* %2
%95 = sext i32 %94 to i64
%96 = call i64 @llvm.cttz.i64(i64 %95, i1 true)
%97 = add i64 %96, 1
%98 = icmp eq i64 %95, 0
%99 = select i1 %98, i64 0, i64 %97
%100 = trunc i64 %99 to i32
%101 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.42, i64 0, i64 0), i32 %100)
%102 = load i32, i32* %2
%103 = call i32 @llvm.ctpop.i32(i32 %102)
%104 = and i32 %103, 1
%105 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.43, i64 0, i64 0), i32 %104)
%106 = load i32, i32* %2
%107 = sext i32 %106 to i64
%108 = call i64 @llvm.ctpop.i64(i64 %107)
%109 = and i64 %108, 1
%110 = trunc i64 %109 to i32
%111 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.44, i64 0, i64 0), i32 %110)
%112 = load i32, i32* %2
%113 = sext i32 %112 to i64
%114 = call i64 @llvm.ctpop.i64(i64 %113)
%115 = and i64 %114, 1
%116 = trunc i64 %115 to i32
%117 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.45, i64 0, i64 0), i32 %116)
%118 = load i32, i32* %2
%119 = call i32 @llvm.ctpop.i32(i32 %118)
%120 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.46, i64 0, i64 0), i32 %119)
%121 = load i32, i32* %2
%122 = sext i32 %121 to i64
%123 = call i64 @llvm.ctpop.i64(i64 %122)
%124 = trunc i64 %123 to i32
%125 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.47, i64 0, i64 0), i32 %124)
%126 = load i32, i32* %2
%127 = sext i32 %126 to i64
%128 = call i64 @llvm.ctpop.i64(i64 %127)
%129 = trunc i64 %128 to i32
%130 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.48, i64 0, i64 0), i32 %129)
%131 = load i32, i32* %2
%132 = call double @llvm.powi.f64.i32(double 0x3FF3333340000000, i32 %131)
%133 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0), double %132)
%134 = load i32, i32* %2
%135 = call float @llvm.powi.f32.i32(float 0x3FF3333340000000, i32 %134)
%136 = fpext float %135 to double
%137 = call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.50, i64 0, i64 0), double %136)
%138 = load i32, i32* %2
%139 = call x86_fp80 @llvm.powi.f80.i32(x86_fp80 0xK3FFF99999A0000000000, i32 %138)
%140 = call i32 (i8*, x86_fp80, ...) bitcast (i32 (...)* @q to i32 (i8*, x86_fp80, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.51, i64 0, i64 0), x86_fp80 %139)
%141 = call i32 (...) @random()
store i32 %141, i32* %5
%142 = bitcast [6 x i8]* %7 to i8*
%143 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%144 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%145 = call i8* @strcat(i8* %143, i8* %144)
%146 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.52, i64 0, i64 0), i32 0)
%147 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%148 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%149 = call i32 @strcmp(i8* %147, i8* %148)
%150 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.53, i64 0, i64 0), i32 0)
%151 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%152 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%153 = load i32, i32* %5
%154 = sext i32 %153 to i64
%155 = call i8* @strncat(i8* %151, i8* %152, i64 %154)
%156 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.54, i64 0, i64 0), i32 0)
%157 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%158 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%159 = load i8, i8* %158
%160 = sext i8 %159 to i32
%161 = call i8* @strchr(i8* %157, i32 %160)
%162 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.55, i64 0, i64 0), i32 0)
%163 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%164 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%165 = load i8, i8* %164
%166 = sext i8 %165 to i32
%167 = call i8* @strrchr(i8* %163, i32 %166)
%168 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.56, i64 0, i64 0), i32 0)
%169 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%170 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%171 = call i8* @strcpy(i8* %169, i8* %170)
%172 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.57, i64 0, i64 0), i32 0)
%173 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%174 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%175 = load i32, i32* %5
%176 = sext i32 %175 to i64
%177 = call i8* @strncpy(i8* %173, i8* %174, i64 %176)
%178 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.58, i64 0, i64 0), i32 0)
%179 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%180 = load i32, i32* %5
%181 = sext i32 %180 to i64
%182 = call i8* @__memset_chk(i8* %179, i32 0, i64 10, i64 %181)
%183 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.59, i64 0, i64 0), i32 0)
%184 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%185 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%186 = load i32, i32* %5
%187 = sext i32 %186 to i64
%188 = call i8* @__memcpy_chk(i8* %184, i8* %185, i64 10, i64 %187)
%189 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.60, i64 0, i64 0), i32 0)
%190 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%191 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%192 = load i32, i32* %5
%193 = sext i32 %192 to i64
%194 = call i8* @__memmove_chk(i8* %190, i8* %191, i64 10, i64 %193)
%195 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.61, i64 0, i64 0), i32 0)
%196 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%197 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%198 = load i32, i32* %5
%199 = sext i32 %198 to i64
%200 = call i8* @__mempcpy_chk(i8* %196, i8* %197, i64 10, i64 %199)
%201 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.62, i64 0, i64 0), i32 0)
%202 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%203 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%204 = load i32, i32* %5
%205 = sext i32 %204 to i64
%206 = call i8* @__strncpy_chk(i8* %202, i8* %203, i64 10, i64 %205)
%207 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.63, i64 0, i64 0), i32 0)
%208 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%209 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%210 = load i32, i32* %5
%211 = sext i32 %210 to i64
%212 = call i8* @__strcpy_chk(i8* %208, i8* %209, i64 %211)
%213 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.64, i64 0, i64 0), i32 0)
%214 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
store i8 0, i8* %214
%215 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 0, i64 0
%216 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%217 = load i32, i32* %5
%218 = sext i32 %217 to i64
%219 = call i8* @__strcat_chk(i8* %215, i8* %216, i64 %218)
%220 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.65, i64 0, i64 0), i32 0)
%221 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.66, i64 0, i64 0), i64 10)
%222 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.67, i64 0, i64 0), i64 10)
%223 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.68, i64 0, i64 0), i64 10)
%224 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.69, i64 0, i64 0), i64 10)
%225 = load i32, i32* %2
%226 = trunc i32 %225 to i16
%227 = call i16 @llvm.bswap.i16(i16 %226)
%228 = zext i16 %227 to i32
%229 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.70, i64 0, i64 0), i32 %228)
%230 = load i32, i32* %2
%231 = call i32 @llvm.bswap.i32(i32 %230)
%232 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.71, i64 0, i64 0), i32 %231)
%233 = load i32, i32* %2
%234 = sext i32 %233 to i64
%235 = call i64 @llvm.bswap.i64(i64 %234)
%236 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.72, i64 0, i64 0), i64 %235)
%237 = load i32, i32* %2
%238 = trunc i32 %237 to i8
%239 = call i8 @llvm.bitreverse.i8(i8 %238)
%240 = zext i8 %239 to i32
%241 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.73, i64 0, i64 0), i32 %240)
%242 = load i32, i32* %2
%243 = trunc i32 %242 to i16
%244 = call i16 @llvm.bitreverse.i16(i16 %243)
%245 = zext i16 %244 to i32
%246 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.74, i64 0, i64 0), i32 %245)
%247 = load i32, i32* %2
%248 = call i32 @llvm.bitreverse.i32(i32 %247)
%249 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.75, i64 0, i64 0), i32 %248)
%250 = load i32, i32* %2
%251 = sext i32 %250 to i64
%252 = call i64 @llvm.bitreverse.i64(i64 %251)
%253 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.76, i64 0, i64 0), i64 %252)
%254 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.77, i64 0, i64 0), i32 0)
%255 = bitcast i32* %2 to i8*
%256 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @r to i32 (i8*, i8*, ...)*)(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.78, i64 0, i64 0), i8* %255)
%257 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.79, i64 0, i64 0), i32 0)
ret i32 0
}

LLVM IR (-O2):
@.str = [31 x i8] c"types_compatible_p(int, float)\00"
@.str.1 = [23 x i8] c"choose_expr(0, 10, 20)\00"
@.str.2 = [23 x i8] c"constant_p(sizeof(10))\00"
@.str.3 = [19 x i8] c"expect(N == 12, 0)\00"
@.str.4 = [13 x i8] c"prefetch(&N)\00"
@.str.5 = [16 x i8] c"prefetch(&N, 1)\00"
@.str.6 = [19 x i8] c"prefetch(&N, 1, 0)\00"
@.str.7 = [11 x i8] c"huge_val()\00"
@.str.8 = [12 x i8] c"huge_valf()\00"
@.str.9 = [12 x i8] c"huge_vall()\00"
@.str.10 = [6 x i8] c"inf()\00"
@.str.11 = [7 x i8] c"inff()\00"
@.str.12 = [7 x i8] c"infl()\00"
@.str.13 = [31 x i8] c"fpclassify(0, 1, 2, 3, 4, 1.0)\00"
@.str.14 = [32 x i8] c"fpclassify(0, 1, 2, 3, 4, 1.0f)\00"
@.str.15 = [32 x i8] c"fpclassify(0, 1, 2, 3, 4, 1.0l)\00"
@.str.16 = [8 x i8] c"nan(\22\22)\00"
@.str.17 = [9 x i8] c"nanf(\22\22)\00"
@.str.18 = [9 x i8] c"nanl(\22\22)\00"
@.str.19 = [9 x i8] c"nans(\22\22)\00"
@.str.20 = [10 x i8] c"nan(\2210\22)\00"
@.str.21 = [11 x i8] c"nanf(\2210\22)\00"
@.str.22 = [11 x i8] c"nanl(\2210\22)\00"
@.str.23 = [11 x i8] c"nans(\2210\22)\00"
@.str.24 = [18 x i8] c"isgreater(1., 2.)\00"
@.str.25 = [23 x i8] c"isgreaterequal(1., 2.)\00"
@.str.26 = [15 x i8] c"isless(1., 2.)\00"
@.str.27 = [20 x i8] c"islessequal(1., 2.)\00"
@.str.28 = [22 x i8] c"islessgreater(1., 2.)\00"
@.str.29 = [20 x i8] c"isunordered(1., 2.)\00"
@.str.30 = [10 x i8] c"isinf(1.)\00"
@.str.31 = [15 x i8] c"isinf_sign(1.)\00"
@.str.32 = [10 x i8] c"isnan(1.)\00"
@.str.33 = [7 x i8] c"abs(N)\00"
@.str.34 = [7 x i8] c"clz(N)\00"
@.str.35 = [8 x i8] c"clzl(N)\00"
@.str.36 = [9 x i8] c"clzll(N)\00"
@.str.37 = [7 x i8] c"ctz(N)\00"
@.str.38 = [8 x i8] c"ctzl(N)\00"
@.str.39 = [9 x i8] c"ctzll(N)\00"
@.str.40 = [7 x i8] c"ffs(N)\00"
@.str.41 = [8 x i8] c"ffsl(N)\00"
@.str.42 = [9 x i8] c"ffsll(N)\00"
@.str.43 = [10 x i8] c"parity(N)\00"
@.str.44 = [11 x i8] c"parityl(N)\00"
@.str.45 = [12 x i8] c"parityll(N)\00"
@.str.46 = [12 x i8] c"popcount(N)\00"
@.str.47 = [13 x i8] c"popcountl(N)\00"
@.str.48 = [14 x i8] c"popcountll(N)\00"
@.str.49 = [14 x i8] c"powi(1.2f, N)\00"
@.str.50 = [15 x i8] c"powif(1.2f, N)\00"
@.str.51 = [15 x i8] c"powil(1.2f, N)\00"
@__const.main.s1 = [6 x i8] c"Hello\00"
@.str.52 = [15 x i8] c"strcat(s0, s1)\00"
@.str.53 = [15 x i8] c"strcmp(s0, s1)\00"
@.str.54 = [19 x i8] c"strncat(s0, s1, n)\00"
@.str.55 = [18 x i8] c"strchr(s0, s1[0])\00"
@.str.56 = [19 x i8] c"strrchr(s0, s1[0])\00"
@.str.57 = [15 x i8] c"strcpy(s0, s1)\00"
@.str.58 = [19 x i8] c"strncpy(s0, s1, n)\00"
@.str.59 = [34 x i8] c"__memset_chk(s0, 0, sizeof s0, n)\00"
@.str.60 = [35 x i8] c"__memcpy_chk(s0, s1, sizeof s0, n)\00"
@.str.61 = [36 x i8] c"__memmove_chk(s0, s1, sizeof s0, n)\00"
@.str.62 = [36 x i8] c"__mempcpy_chk(s0, s1, sizeof s0, n)\00"
@.str.63 = [36 x i8] c"__strncpy_chk(s0, s1, sizeof s0, n)\00"
@.str.64 = [24 x i8] c"__strcpy_chk(s0, s1, n)\00"
@.str.65 = [24 x i8] c"__strcat_chk(s0, s1, n)\00"
@.str.66 = [19 x i8] c"object_size(s0, 0)\00"
@.str.67 = [19 x i8] c"object_size(s0, 1)\00"
@.str.68 = [19 x i8] c"object_size(s0, 2)\00"
@.str.69 = [19 x i8] c"object_size(s0, 3)\00"
@.str.70 = [11 x i8] c"bswap16(N)\00"
@.str.71 = [11 x i8] c"bswap32(N)\00"
@.str.72 = [11 x i8] c"bswap64(N)\00"
@.str.73 = [15 x i8] c"bitreverse8(N)\00"
@.str.74 = [16 x i8] c"bitreverse16(N)\00"
@.str.75 = [16 x i8] c"bitreverse32(N)\00"
@.str.76 = [16 x i8] c"bitreverse64(N)\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [10 x i8]
%3 = alloca [6 x i8]
%4 = bitcast i32* %1 to i8*
%5 = tail call i32 (...) @random()
store i32 %5, i32* %1
%6 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str, i64 0, i64 0), i32 0)
%7 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0), i32 20)
%8 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.2, i64 0, i64 0), i32 1)
%9 = icmp eq i32 %5, 12
%10 = zext i1 %9 to i64
%11 = tail call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0), i64 %10)
%12 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0), i32 0)
%13 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.5, i64 0, i64 0), i32 0)
%14 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.6, i64 0, i64 0), i32 0)
%15 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.7, i64 0, i64 0), double 0x7FF0000000000000)
%16 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0), double 0x7FF0000000000000)
%17 = tail call i32 (i8*, x86_fp80, ...) bitcast (i32 (...)* @q to i32 (i8*, x86_fp80, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.9, i64 0, i64 0), x86_fp80 0xK7FFF8000000000000000)
%18 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0), double 0x7FF0000000000000)
%19 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), double 0x7FF0000000000000)
%20 = tail call i32 (i8*, x86_fp80, ...) bitcast (i32 (...)* @q to i32 (i8*, x86_fp80, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0), x86_fp80 0xK7FFF8000000000000000)
%21 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.13, i64 0, i64 0), i32 2)
%22 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0), i32 2)
%23 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.15, i64 0, i64 0), i32 2)
%24 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.16, i64 0, i64 0), double 0x7FF8000000000000)
%25 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.17, i64 0, i64 0), double 0x7FF8000000000000)
%26 = tail call i32 (i8*, x86_fp80, ...) bitcast (i32 (...)* @q to i32 (i8*, x86_fp80, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0), x86_fp80 0xK7FFFC000000000000000)
%27 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0), double 0x7FF4000000000000)
%28 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0), double 0x7FF800000000000A)
%29 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.21, i64 0, i64 0), double 0x7FF8000140000000)
%30 = tail call i32 (i8*, x86_fp80, ...) bitcast (i32 (...)* @q to i32 (i8*, x86_fp80, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0), x86_fp80 0xK7FFFC00000000000000A)
%31 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.23, i64 0, i64 0), double 0x7FF000000000000A)
%32 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.24, i64 0, i64 0), i32 0)
%33 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.25, i64 0, i64 0), i32 0)
%34 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.26, i64 0, i64 0), i32 1)
%35 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.27, i64 0, i64 0), i32 1)
%36 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.28, i64 0, i64 0), i32 1)
%37 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.29, i64 0, i64 0), i32 0)
%38 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.30, i64 0, i64 0), i32 0)
%39 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.31, i64 0, i64 0), i32 0)
%40 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.32, i64 0, i64 0), i32 0)
%41 = tail call i32 @llvm.abs.i32(i32 %5, i1 true)
%42 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0), i32 %41)
%43 = tail call i32 @llvm.ctlz.i32(i32 %5, i1 true)
%44 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.34, i64 0, i64 0), i32 %43)
%45 = sext i32 %5 to i64
%46 = tail call i64 @llvm.ctlz.i64(i64 %45, i1 true)
%47 = trunc i64 %46 to i32
%48 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.35, i64 0, i64 0), i32 %47)
%49 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.36, i64 0, i64 0), i32 %47)
%50 = tail call i32 @llvm.cttz.i32(i32 %5, i1 true)
%51 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0), i32 %50)
%52 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.38, i64 0, i64 0), i32 %50)
%53 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.39, i64 0, i64 0), i32 %50)
%54 = add nuw nsw i32 %50, 1
%55 = icmp eq i32 %5, 0
%56 = select i1 %55, i32 0, i32 %54
%57 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.40, i64 0, i64 0), i32 %56)
%58 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.41, i64 0, i64 0), i32 %56)
%59 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.42, i64 0, i64 0), i32 %56)
%60 = tail call i32 @llvm.ctpop.i32(i32 %5)
%61 = and i32 %60, 1
%62 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.43, i64 0, i64 0), i32 %61)
%63 = tail call i64 @llvm.ctpop.i64(i64 %45)
%64 = trunc i64 %63 to i32
%65 = and i32 %64, 1
%66 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.44, i64 0, i64 0), i32 %65)
%67 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.45, i64 0, i64 0), i32 %65)
%68 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.46, i64 0, i64 0), i32 %60)
%69 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.47, i64 0, i64 0), i32 %64)
%70 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.48, i64 0, i64 0), i32 %64)
%71 = tail call double @llvm.powi.f64.i32(double 0x3FF3333340000000, i32 %5)
%72 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0), double %71)
%73 = tail call float @llvm.powi.f32.i32(float 0x3FF3333340000000, i32 %5)
%74 = fpext float %73 to double
%75 = tail call i32 (i8*, double, ...) bitcast (i32 (...)* @q to i32 (i8*, double, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.50, i64 0, i64 0), double %74)
%76 = tail call x86_fp80 @llvm.powi.f80.i32(x86_fp80 0xK3FFF99999A0000000000, i32 %5)
%77 = tail call i32 (i8*, x86_fp80, ...) bitcast (i32 (...)* @q to i32 (i8*, x86_fp80, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.51, i64 0, i64 0), x86_fp80 %76)
%78 = tail call i32 (...) @random()
%79 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%80 = getelementptr inbounds [6 x i8], [6 x i8]* %3, i64 0, i64 0
%81 = call i8* @strcat(i8* %79, i8* %80)
%82 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.52, i64 0, i64 0), i32 0)
%83 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.53, i64 0, i64 0), i32 0)
%84 = sext i32 %78 to i64
%85 = call i8* @strncat(i8* %79, i8* %80, i64 %84)
%86 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.54, i64 0, i64 0), i32 0)
%87 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.55, i64 0, i64 0), i32 0)
%88 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.56, i64 0, i64 0), i32 0)
%89 = call i8* @strcpy(i8* %79, i8* %80)
%90 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.57, i64 0, i64 0), i32 0)
%91 = call i8* @strncpy(i8* %79, i8* %80, i64 %84)
%92 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.58, i64 0, i64 0), i32 0)
%93 = call i8* @__memset_chk(i8* %79, i32 0, i64 10, i64 %84)
%94 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.59, i64 0, i64 0), i32 0)
%95 = call i8* @__memcpy_chk(i8* %79, i8* %80, i64 10, i64 %84)
%96 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.60, i64 0, i64 0), i32 0)
%97 = call i8* @__memmove_chk(i8* %79, i8* %80, i64 10, i64 %84)
%98 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.61, i64 0, i64 0), i32 0)
%99 = call i8* @__mempcpy_chk(i8* %79, i8* %80, i64 10, i64 %84)
%100 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.62, i64 0, i64 0), i32 0)
%101 = call i8* @__strncpy_chk(i8* %79, i8* %80, i64 10, i64 %84)
%102 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.63, i64 0, i64 0), i32 0)
%103 = call i8* @__strcpy_chk(i8* %79, i8* %80, i64 %84)
%104 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.64, i64 0, i64 0), i32 0)
store i8 0, i8* %79
%105 = call i8* @__strcat_chk(i8* %79, i8* %80, i64 %84)
%106 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.65, i64 0, i64 0), i32 0)
%107 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.66, i64 0, i64 0), i64 10)
%108 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.67, i64 0, i64 0), i64 10)
%109 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.68, i64 0, i64 0), i64 10)
%110 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.69, i64 0, i64 0), i64 10)
%111 = load i32, i32* %1
%112 = trunc i32 %111 to i16
%113 = call i16 @llvm.bswap.i16(i16 %112)
%114 = zext i16 %113 to i32
%115 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.70, i64 0, i64 0), i32 %114)
%116 = call i32 @llvm.bswap.i32(i32 %111)
%117 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.71, i64 0, i64 0), i32 %116)
%118 = sext i32 %111 to i64
%119 = call i64 @llvm.bswap.i64(i64 %118)
%120 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.72, i64 0, i64 0), i64 %119)
%121 = trunc i32 %111 to i8
%122 = call i8 @llvm.bitreverse.i8(i8 %121)
%123 = zext i8 %122 to i32
%124 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.73, i64 0, i64 0), i32 %123)
%125 = call i16 @llvm.bitreverse.i16(i16 %112)
%126 = zext i16 %125 to i32
%127 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.74, i64 0, i64 0), i32 %126)
%128 = call i32 @llvm.bitreverse.i32(i32 %111)
%129 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @p to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.75, i64 0, i64 0), i32 %128)
%130 = call i64 @llvm.bitreverse.i64(i64 %118)
%131 = call i32 (i8*, i64, ...) bitcast (i32 (...)* @p to i32 (i8*, i64, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.76, i64 0, i64 0), i64 %130)
unreachable
}