int o(int t, int q, int d) {
  int i = 0, j = 0, h, n, C, D;
  if (t) {
    C = *((int *)(t + 12));
    j = *((int *)(t + 16));
    o(*((int *)(t + 8)), 0, d);
    for (D = 0; D < 0xC0000; D++)
      *((signed char *)(d + D)) =
          (D >= C && D < (C + j) && (D - (C)&1023) < (j & 1023))
              ? (D >= C + 1025 && D < (C + 1025 + j - 2050) &&
                 (D - (C + 1025) & 1023) < (j - 2050 & 1023))
                    ? (D >= C + 2050 && D < (C + 2050 + j - 3075) &&
                       (D - (C + 2050) & 1023) < (j - 3075 & 1023))
                          ? (D >= C + 2050 && D < (C + 2050 + j - 4100) &&
                             (D - (C + 2050) & 1023) < (j - 4100 & 1023))
                                ? (D >= C + 4100 &&
                                   D < (C + 4100 + ((j & 1023) + 18424)) &&
                                   (D - (C + 4100) & 1023) <
                                       (((j & 1023) + 18424) & 1023))
                                      ? 176
                                      : 24
                                : 20
                          : 28
                    : 0
              : *((signed char *)(d + D));
    for (n = *((int *)(t + 4)); *((signed char *)(i + n)); i++)
      for (h = 0; h >> 14 == 0; h += 0x81)
        *((int *)(16 * *((signed char *)(n + i)) + h / 1024 +
                  *((int *)(0x90200 + 36)))) &
                128 >> (h & 7)
            ? *((signed char *)(d + *((int *)(t + 12)) + 5126 + i * 8 +
                                (h & 0x3C07))) = 31
            : 31;
    ((int (*)(int t, int q, int d))(*((int *)(t))))(t, 2, d);
  }
}


x86 assembly (clang, -O0):
<o>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
cmpl   $0x0,-0x8(%rbp)
je     14a9 <o+0x399>
mov    -0x8(%rbp),%eax
add    $0xc,%eax
cltq
mov    (%rax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%eax
add    $0x10,%eax
cltq
mov    (%rax),%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
add    $0x8,%eax
cltq
mov    (%rax),%edi
mov    -0x10(%rbp),%edx
xor    %esi,%esi
call   1030 <o@plt>
movl   $0x0,-0x28(%rbp)
cmpl   $0xc0000,-0x28(%rbp)
jge    13c1 <o+0x2b1>
mov    -0x28(%rbp),%eax
cmp    -0x24(%rbp),%eax
jl     1396 <o+0x286>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    -0x18(%rbp),%ecx
cmp    %ecx,%eax
jge    1396 <o+0x286>
mov    -0x28(%rbp),%eax
sub    -0x24(%rbp),%eax
and    $0x3ff,%eax
mov    -0x18(%rbp),%ecx
and    $0x3ff,%ecx
cmp    %ecx,%eax
jge    1396 <o+0x286>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    $0x401,%ecx
cmp    %ecx,%eax
jl     1381 <o+0x271>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    $0x401,%ecx
add    -0x18(%rbp),%ecx
sub    $0x802,%ecx
cmp    %ecx,%eax
jge    1381 <o+0x271>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    $0x401,%ecx
sub    %ecx,%eax
and    $0x3ff,%eax
mov    -0x18(%rbp),%ecx
sub    $0x802,%ecx
and    $0x3ff,%ecx
cmp    %ecx,%eax
jge    1381 <o+0x271>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    $0x802,%ecx
cmp    %ecx,%eax
jl     1369 <o+0x259>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    $0x802,%ecx
add    -0x18(%rbp),%ecx
sub    $0xc03,%ecx
cmp    %ecx,%eax
jge    1369 <o+0x259>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    $0x802,%ecx
sub    %ecx,%eax
and    $0x3ff,%eax
mov    -0x18(%rbp),%ecx
sub    $0xc03,%ecx
and    $0x3ff,%ecx
cmp    %ecx,%eax
jge    1369 <o+0x259>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    $0x802,%ecx
cmp    %ecx,%eax
jl     1351 <o+0x241>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    $0x802,%ecx
add    -0x18(%rbp),%ecx
sub    $0x1004,%ecx
cmp    %ecx,%eax
jge    1351 <o+0x241>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    $0x802,%ecx
sub    %ecx,%eax
and    $0x3ff,%eax
mov    -0x18(%rbp),%ecx
sub    $0x1004,%ecx
and    $0x3ff,%ecx
cmp    %ecx,%eax
jge    1351 <o+0x241>
mov    -0x28(%rbp),%ecx
mov    -0x24(%rbp),%edx
add    $0x1004,%edx
xor    %eax,%eax
cmp    %edx,%ecx
mov    %al,-0x29(%rbp)
jl     1336 <o+0x226>
mov    -0x28(%rbp),%ecx
mov    -0x24(%rbp),%edx
add    $0x1004,%edx
mov    -0x18(%rbp),%eax
and    $0x3ff,%eax
add    $0x47f8,%eax
add    %eax,%edx
xor    %eax,%eax
cmp    %edx,%ecx
mov    %al,-0x29(%rbp)
jge    1336 <o+0x226>
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    $0x1004,%ecx
sub    %ecx,%eax
and    $0x3ff,%eax
mov    -0x18(%rbp),%ecx
and    $0x3ff,%ecx
add    $0x47f8,%ecx
and    $0x3ff,%ecx
cmp    %ecx,%eax
setl   %al
mov    %al,-0x29(%rbp)
mov    -0x29(%rbp),%dl
mov    $0x18,%eax
mov    $0xb0,%ecx
test   $0x1,%dl
cmovne %ecx,%eax
mov    %eax,-0x30(%rbp)
jmp    135e <o+0x24e>
mov    $0x14,%eax
mov    %eax,-0x30(%rbp)
jmp    135e <o+0x24e>
mov    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
jmp    1376 <o+0x266>
mov    $0x1c,%eax
mov    %eax,-0x34(%rbp)
jmp    1376 <o+0x266>
mov    -0x34(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    138b <o+0x27b>
xor    %eax,%eax
mov    %eax,-0x38(%rbp)
jmp    138b <o+0x27b>
mov    -0x38(%rbp),%eax
mov    %eax,-0x3c(%rbp)
jmp    13a4 <o+0x294>
mov    -0x10(%rbp),%eax
add    -0x28(%rbp),%eax
cltq
movsbl (%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    %al,%cl
mov    -0x10(%rbp),%eax
add    -0x28(%rbp),%eax
cltq
mov    %cl,(%rax)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    116e <o+0x5e>
mov    -0x8(%rbp),%eax
add    $0x4,%eax
cltq
mov    (%rax),%eax
mov    %eax,-0x20(%rbp)
mov    -0x14(%rbp),%eax
add    -0x20(%rbp),%eax
cltq
cmpb   $0x0,(%rax)
je     1495 <o+0x385>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
sar    $0xe,%eax
cmp    $0x0,%eax
jne    1482 <o+0x372>
mov    -0x20(%rbp),%eax
add    -0x14(%rbp),%eax
cltq
movsbl (%rax),%eax
shl    $0x4,%eax
mov    %eax,-0x40(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x400,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x40(%rbp),%eax
add    %ecx,%eax
mov    $0x90224,%ecx
add    (%rcx),%eax
cltq
mov    (%rax),%eax
mov    -0x1c(%rbp),%ecx
and    $0x7,%ecx
mov    $0x80,%edx
sar    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     146d <o+0x35d>
mov    -0x10(%rbp),%eax
mov    -0x8(%rbp),%ecx
add    $0xc,%ecx
movslq %ecx,%rcx
add    (%rcx),%eax
add    $0x1406,%eax
mov    -0x14(%rbp),%ecx
shl    $0x3,%ecx
add    %ecx,%eax
mov    -0x1c(%rbp),%ecx
and    $0x3c07,%ecx
add    %ecx,%eax
cltq
movb   $0x1f,(%rax)
jmp    1472 <o+0x362>
jmp    1472 <o+0x362>
mov    -0x1c(%rbp),%eax
add    $0x81,%eax
mov    %eax,-0x1c(%rbp)
jmp    13e6 <o+0x2d6>
jmp    1487 <o+0x377>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    13ce <o+0x2be>
movslq -0x8(%rbp),%rax
movslq (%rax),%rax
mov    -0x8(%rbp),%edi
mov    -0x10(%rbp),%edx
mov    $0x2,%esi
call   *%rax
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<o>:
test   %edi,%edi
je     1387 <o+0x277>
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %edi,0xc(%rsp)
movslq %edi,%r14
movslq 0xc(%r14),%rbp
mov    0x8(%r14),%edi
mov    0x10(%r14),%r12d
mov    %rdx,%r13
call   1030 <o@plt>
lea    (%r12,%rbp,1),%esi
mov    %r12d,%eax
and    $0x3ff,%eax
lea    0x401(%rbp),%rcx
lea    (%r12,%rcx,1),%r9d
add    $0xfffff7fe,%r9d
lea    0x3fe(%r12),%r8d
and    $0x3ff,%r8d
lea    0x802(%rbp),%rdx
lea    0x3fd(%r12),%edi
and    $0x3ff,%edi
mov    %edi,0x8(%rsp)
mov    %rdx,0x40(%rsp)
add    %r12d,%edx
add    $0xffffeffc,%edx
add    $0x3fc,%r12d
and    $0x3ff,%r12d
lea    0x1004(%rbp),%rdi
lea    0x47f8(%rax),%ebx
mov    %rdi,0x20(%rsp)
add    %eax,%edi
add    $0x47f8,%edi
and    $0x3ff,%ebx
mov    %ebx,0x4(%rsp)
movslq %esi,%rsi
movslq %edx,%rdx
mov    %rdx,0x28(%rsp)
movslq %r9d,%rdx
movslq %edi,%rdi
mov    %rdi,0x18(%rsp)
mov    $0xffffeffc,%edi
sub    %ebp,%edi
mov    %rdi,0x10(%rsp)
mov    $0xfffff7fe,%edi
sub    %ebp,%edi
mov    %rdi,0x30(%rsp)
mov    $0xfffffbff,%ebx
sub    %ebp,%ebx
mov    %ebp,%r15d
neg    %r15d
mov    %r13,0x38(%rsp)
movslq %r13d,%r9
xor    %r11d,%r11d
jmp    122a <o+0x11a>
nop
movzbl (%r9,%r11,1),%r10d
mov    %r10b,(%r9,%r11,1)
add    $0x1,%r11
cmp    $0xc0000,%r11
je     12d5 <o+0x1c5>
cmp    %rbp,%r11
jl     1210 <o+0x100>
cmp    %rsi,%r11
jge    1210 <o+0x100>
lea    (%r15,%r11,1),%edi
and    $0x3ff,%edi
cmp    %eax,%edi
jae    1210 <o+0x100>
xor    %r10d,%r10d
cmp    %rcx,%r11
jl     1215 <o+0x105>
cmp    %rdx,%r11
jge    1215 <o+0x105>
lea    (%rbx,%r11,1),%edi
and    $0x3ff,%edi
cmp    %r8d,%edi
jae    12cd <o+0x1bd>
mov    $0x1c,%r10b
cmp    0x40(%rsp),%r11
jl     1215 <o+0x105>
mov    0x30(%rsp),%rdi
lea    (%rdi,%r11,1),%r13d
and    $0x3ff,%r13d
cmp    0x8(%rsp),%r13d
jae    1215 <o+0x105>
mov    $0x14,%r10b
cmp    0x28(%rsp),%r11
jge    1215 <o+0x105>
cmp    %r12d,%r13d
jae    1215 <o+0x105>
mov    $0x18,%r10b
cmp    0x20(%rsp),%r11
jl     1215 <o+0x105>
cmp    0x18(%rsp),%r11
jge    1215 <o+0x105>
mov    0x10(%rsp),%rdi
add    %r11d,%edi
and    $0x3ff,%edi
cmp    0x4(%rsp),%edi
mov    $0x18,%r10d
mov    $0xb0,%edi
cmovb  %edi,%r10d
jmp    1215 <o+0x105>
xor    %r10d,%r10d
jmp    1215 <o+0x105>
movslq 0x4(%r14),%r9
mov    (%r9),%cl
test   %cl,%cl
mov    0x38(%rsp),%rdx
je     136b <o+0x25b>
lea    0x1406(%rdx),%r8d
mov    0x90224,%ebp
xor    %esi,%esi
mov    %r9,%rdi
jmp    1315 <o+0x205>
xchg   %ax,%ax
lea    (%rsi,%r9,1),%rdi
add    $0x1,%rdi
mov    0x1(%rsi,%r9,1),%cl
add    $0x1,%rsi
test   %cl,%cl
je     136b <o+0x25b>
lea    (%r8,%rsi,8),%r10d
xor    %ebx,%ebx
nopl   0x0(%rax,%rax,1)
movsbl %cl,%ecx
shl    $0x4,%ecx
mov    %ebx,%eax
shr    $0xa,%eax
add    %ebp,%eax
add    %ecx,%eax
cltq
mov    (%rax),%eax
mov    %ebx,%ecx
and    $0x7,%cl
shl    %cl,%eax
test   $0x80,%al
je     1358 <o+0x248>
mov    %ebx,%eax
and    $0x3c07,%eax
add    %r10d,%eax
add    0xc(%r14),%eax
cltq
movb   $0x1f,(%rax)
mov    0x90224,%ebp
cmp    $0x3f7e,%ebx
ja     1300 <o+0x1f0>
add    $0x81,%ebx
movzbl (%rdi),%ecx
jmp    1320 <o+0x210>
movslq (%r14),%rax
mov    0xc(%rsp),%edi
mov    $0x2,%esi
call   *%rax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @o(i32 %0, i32 %1, i32 %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
store i32 %0, i32* %5
store i32 %1, i32* %6
store i32 %2, i32* %7
store i32 0, i32* %8
store i32 0, i32* %9
%14 = load i32, i32* %5
%15 = icmp ne i32 %14, 0
br i1 %15, label %16, label %259
16: ; preds = %3
%17 = load i32, i32* %5
%18 = add nsw i32 %17, 12
%19 = sext i32 %18 to i64
%20 = inttoptr i64 %19 to i32*
%21 = load i32, i32* %20
store i32 %21, i32* %12
%22 = load i32, i32* %5
%23 = add nsw i32 %22, 16
%24 = sext i32 %23 to i64
%25 = inttoptr i64 %24 to i32*
%26 = load i32, i32* %25
store i32 %26, i32* %9
%27 = load i32, i32* %5
%28 = add nsw i32 %27, 8
%29 = sext i32 %28 to i64
%30 = inttoptr i64 %29 to i32*
%31 = load i32, i32* %30
%32 = load i32, i32* %7
%33 = call i32 @o(i32 %31, i32 0, i32 %32)
store i32 0, i32* %13
br label %34
34: ; preds = %178, %16
%35 = load i32, i32* %13
%36 = icmp slt i32 %35, 786432
br i1 %36, label %37, label %181
37: ; preds = %34
%38 = load i32, i32* %13
%39 = load i32, i32* %12
%40 = icmp sge i32 %38, %39
br i1 %40, label %41, label %162
41: ; preds = %37
%42 = load i32, i32* %13
%43 = load i32, i32* %12
%44 = load i32, i32* %9
%45 = add nsw i32 %43, %44
%46 = icmp slt i32 %42, %45
br i1 %46, label %47, label %162
47: ; preds = %41
%48 = load i32, i32* %13
%49 = load i32, i32* %12
%50 = sub nsw i32 %48, %49
%51 = and i32 %50, 1023
%52 = load i32, i32* %9
%53 = and i32 %52, 1023
%54 = icmp slt i32 %51, %53
br i1 %54, label %55, label %162
55: ; preds = %47
%56 = load i32, i32* %13
%57 = load i32, i32* %12
%58 = add nsw i32 %57, 1025
%59 = icmp sge i32 %56, %58
br i1 %59, label %60, label %159
60: ; preds = %55
%61 = load i32, i32* %13
%62 = load i32, i32* %12
%63 = add nsw i32 %62, 1025
%64 = load i32, i32* %9
%65 = add nsw i32 %63, %64
%66 = sub nsw i32 %65, 2050
%67 = icmp slt i32 %61, %66
br i1 %67, label %68, label %159
68: ; preds = %60
%69 = load i32, i32* %13
%70 = load i32, i32* %12
%71 = add nsw i32 %70, 1025
%72 = sub nsw i32 %69, %71
%73 = and i32 %72, 1023
%74 = load i32, i32* %9
%75 = sub nsw i32 %74, 2050
%76 = and i32 %75, 1023
%77 = icmp slt i32 %73, %76
br i1 %77, label %78, label %159
78: ; preds = %68
%79 = load i32, i32* %13
%80 = load i32, i32* %12
%81 = add nsw i32 %80, 2050
%82 = icmp sge i32 %79, %81
br i1 %82, label %83, label %156
83: ; preds = %78
%84 = load i32, i32* %13
%85 = load i32, i32* %12
%86 = add nsw i32 %85, 2050
%87 = load i32, i32* %9
%88 = add nsw i32 %86, %87
%89 = sub nsw i32 %88, 3075
%90 = icmp slt i32 %84, %89
br i1 %90, label %91, label %156
91: ; preds = %83
%92 = load i32, i32* %13
%93 = load i32, i32* %12
%94 = add nsw i32 %93, 2050
%95 = sub nsw i32 %92, %94
%96 = and i32 %95, 1023
%97 = load i32, i32* %9
%98 = sub nsw i32 %97, 3075
%99 = and i32 %98, 1023
%100 = icmp slt i32 %96, %99
br i1 %100, label %101, label %156
101: ; preds = %91
%102 = load i32, i32* %13
%103 = load i32, i32* %12
%104 = add nsw i32 %103, 2050
%105 = icmp sge i32 %102, %104
br i1 %105, label %106, label %153
106: ; preds = %101
%107 = load i32, i32* %13
%108 = load i32, i32* %12
%109 = add nsw i32 %108, 2050
%110 = load i32, i32* %9
%111 = add nsw i32 %109, %110
%112 = sub nsw i32 %111, 4100
%113 = icmp slt i32 %107, %112
br i1 %113, label %114, label %153
114: ; preds = %106
%115 = load i32, i32* %13
%116 = load i32, i32* %12
%117 = add nsw i32 %116, 2050
%118 = sub nsw i32 %115, %117
%119 = and i32 %118, 1023
%120 = load i32, i32* %9
%121 = sub nsw i32 %120, 4100
%122 = and i32 %121, 1023
%123 = icmp slt i32 %119, %122
br i1 %123, label %124, label %153
124: ; preds = %114
%125 = load i32, i32* %13
%126 = load i32, i32* %12
%127 = add nsw i32 %126, 4100
%128 = icmp sge i32 %125, %127
br i1 %128, label %129, label %149
129: ; preds = %124
%130 = load i32, i32* %13
%131 = load i32, i32* %12
%132 = add nsw i32 %131, 4100
%133 = load i32, i32* %9
%134 = and i32 %133, 1023
%135 = add nsw i32 %134, 18424
%136 = add nsw i32 %132, %135
%137 = icmp slt i32 %130, %136
br i1 %137, label %138, label %149
138: ; preds = %129
%139 = load i32, i32* %13
%140 = load i32, i32* %12
%141 = add nsw i32 %140, 4100
%142 = sub nsw i32 %139, %141
%143 = and i32 %142, 1023
%144 = load i32, i32* %9
%145 = and i32 %144, 1023
%146 = add nsw i32 %145, 18424
%147 = and i32 %146, 1023
%148 = icmp slt i32 %143, %147
br label %149
149: ; preds = %138, %129, %124
%150 = phi i1 [ false, %129 ], [ false, %124 ], [ %148, %138 ]
%151 = zext i1 %150 to i64
%152 = select i1 %150, i32 176, i32 24
br label %154
153: ; preds = %114, %106, %101
br label %154
154: ; preds = %153, %149
%155 = phi i32 [ %152, %149 ], [ 20, %153 ]
br label %157
156: ; preds = %91, %83, %78
br label %157
157: ; preds = %156, %154
%158 = phi i32 [ %155, %154 ], [ 28, %156 ]
br label %160
159: ; preds = %68, %60, %55
br label %160
160: ; preds = %159, %157
%161 = phi i32 [ %158, %157 ], [ 0, %159 ]
br label %170
162: ; preds = %47, %41, %37
%163 = load i32, i32* %7
%164 = load i32, i32* %13
%165 = add nsw i32 %163, %164
%166 = sext i32 %165 to i64
%167 = inttoptr i64 %166 to i8*
%168 = load i8, i8* %167
%169 = sext i8 %168 to i32
br label %170
170: ; preds = %162, %160
%171 = phi i32 [ %161, %160 ], [ %169, %162 ]
%172 = trunc i32 %171 to i8
%173 = load i32, i32* %7
%174 = load i32, i32* %13
%175 = add nsw i32 %173, %174
%176 = sext i32 %175 to i64
%177 = inttoptr i64 %176 to i8*
store i8 %172, i8* %177
br label %178
178: ; preds = %170
%179 = load i32, i32* %13
%180 = add nsw i32 %179, 1
store i32 %180, i32* %13
br label %34
181: ; preds = %34
%182 = load i32, i32* %5
%183 = add nsw i32 %182, 4
%184 = sext i32 %183 to i64
%185 = inttoptr i64 %184 to i32*
%186 = load i32, i32* %185
store i32 %186, i32* %11
br label %187
187: ; preds = %246, %181
%188 = load i32, i32* %8
%189 = load i32, i32* %11
%190 = add nsw i32 %188, %189
%191 = sext i32 %190 to i64
%192 = inttoptr i64 %191 to i8*
%193 = load i8, i8* %192
%194 = icmp ne i8 %193, 0
br i1 %194, label %195, label %249
195: ; preds = %187
store i32 0, i32* %10
br label %196
196: ; preds = %242, %195
%197 = load i32, i32* %10
%198 = ashr i32 %197, 14
%199 = icmp eq i32 %198, 0
br i1 %199, label %200, label %245
200: ; preds = %196
%201 = load i32, i32* %11
%202 = load i32, i32* %8
%203 = add nsw i32 %201, %202
%204 = sext i32 %203 to i64
%205 = inttoptr i64 %204 to i8*
%206 = load i8, i8* %205
%207 = sext i8 %206 to i32
%208 = mul nsw i32 16, %207
%209 = load i32, i32* %10
%210 = sdiv i32 %209, 1024
%211 = add nsw i32 %208, %210
%212 = load i32, i32* inttoptr (i64 590372 to i32*)
%213 = add nsw i32 %211, %212
%214 = sext i32 %213 to i64
%215 = inttoptr i64 %214 to i32*
%216 = load i32, i32* %215
%217 = load i32, i32* %10
%218 = and i32 %217, 7
%219 = ashr i32 128, %218
%220 = and i32 %216, %219
%221 = icmp ne i32 %220, 0
br i1 %221, label %222, label %239
222: ; preds = %200
%223 = load i32, i32* %7
%224 = load i32, i32* %5
%225 = add nsw i32 %224, 12
%226 = sext i32 %225 to i64
%227 = inttoptr i64 %226 to i32*
%228 = load i32, i32* %227
%229 = add nsw i32 %223, %228
%230 = add nsw i32 %229, 5126
%231 = load i32, i32* %8
%232 = mul nsw i32 %231, 8
%233 = add nsw i32 %230, %232
%234 = load i32, i32* %10
%235 = and i32 %234, 15367
%236 = add nsw i32 %233, %235
%237 = sext i32 %236 to i64
%238 = inttoptr i64 %237 to i8*
store i8 31, i8* %238
br label %240
239: ; preds = %200
br label %240
240: ; preds = %239, %222
%241 = phi i32 [ 31, %222 ], [ 31, %239 ]
br label %242
242: ; preds = %240
%243 = load i32, i32* %10
%244 = add nsw i32 %243, 129
store i32 %244, i32* %10
br label %196
245: ; preds = %196
br label %246
246: ; preds = %245
%247 = load i32, i32* %8
%248 = add nsw i32 %247, 1
store i32 %248, i32* %8
br label %187
249: ; preds = %187
%250 = load i32, i32* %5
%251 = sext i32 %250 to i64
%252 = inttoptr i64 %251 to i32*
%253 = load i32, i32* %252
%254 = sext i32 %253 to i64
%255 = inttoptr i64 %254 to i32 (i32, i32, i32)*
%256 = load i32, i32* %5
%257 = load i32, i32* %7
%258 = call i32 %255(i32 %256, i32 2, i32 %257)
br label %259
259: ; preds = %249, %3
%260 = load i32, i32* %4
ret i32 %260
}

LLVM IR (-O2):
define i32 @o(i32 %0, i32 %1, i32 %2) {
%4 = icmp eq i32 %0, 0
br i1 %4, label %161, label %5
5: ; preds = %3
%6 = add nsw i32 %0, 12
%7 = sext i32 %6 to i64
%8 = inttoptr i64 %7 to i32*
%9 = load i32, i32* %8
%10 = add nsw i32 %0, 16
%11 = sext i32 %10 to i64
%12 = inttoptr i64 %11 to i32*
%13 = load i32, i32* %12
%14 = add nsw i32 %0, 8
%15 = sext i32 %14 to i64
%16 = inttoptr i64 %15 to i32*
%17 = load i32, i32* %16
%18 = tail call i32 @o(i32 %17, i32 undef, i32 %2)
%19 = add nsw i32 %13, %9
%20 = and i32 %13, 1023
%21 = add nsw i32 %9, 1025
%22 = add i32 %13, -2050
%23 = add i32 %22, %21
%24 = add i32 %13, 1022
%25 = and i32 %24, 1023
%26 = add nsw i32 %9, 2050
%27 = add nsw i32 %26, %13
%28 = add i32 %13, 1021
%29 = and i32 %28, 1023
%30 = add nsw i32 %27, -4100
%31 = add i32 %13, 1020
%32 = and i32 %31, 1023
%33 = add nsw i32 %9, 4100
%34 = add nuw nsw i32 %20, 18424
%35 = add nsw i32 %34, %33
%36 = and i32 %34, 1023
%37 = sext i32 %19 to i64
%38 = sext i32 %33 to i64
%39 = sext i32 %26 to i64
%40 = sext i32 %30 to i64
%41 = sext i32 %21 to i64
%42 = sext i32 %9 to i64
%43 = sext i32 %2 to i64
%44 = sext i32 %23 to i64
%45 = sext i32 %35 to i64
br label %46
46: ; preds = %5, %90
%47 = phi i64 [ 0, %5 ], [ %94, %90 ]
%48 = icmp sge i64 %47, %42
%49 = icmp slt i64 %47, %37
%50 = select i1 %48, i1 %49, i1 false
br i1 %50, label %51, label %86
51: ; preds = %46
%52 = trunc i64 %47 to i32
%53 = sub i32 %52, %9
%54 = and i32 %53, 1023
%55 = icmp ult i32 %54, %20
br i1 %55, label %56, label %86
56: ; preds = %51
%57 = icmp sge i64 %47, %41
%58 = icmp slt i64 %47, %44
%59 = select i1 %57, i1 %58, i1 false
br i1 %59, label %60, label %90
60: ; preds = %56
%61 = trunc i64 %47 to i32
%62 = sub i32 %61, %21
%63 = and i32 %62, 1023
%64 = icmp ult i32 %63, %25
br i1 %64, label %65, label %90
65: ; preds = %60
%66 = icmp slt i64 %47, %39
br i1 %66, label %90, label %67
67: ; preds = %65
%68 = trunc i64 %47 to i32
%69 = sub i32 %68, %26
%70 = and i32 %69, 1023
%71 = icmp ult i32 %70, %29
br i1 %71, label %72, label %90
72: ; preds = %67
%73 = icmp slt i64 %47, %40
%74 = icmp ult i32 %70, %32
%75 = select i1 %73, i1 %74, i1 false
br i1 %75, label %76, label %90
76: ; preds = %72
%77 = icmp sge i64 %47, %38
%78 = icmp slt i64 %47, %45
%79 = select i1 %77, i1 %78, i1 false
br i1 %79, label %80, label %90
80: ; preds = %76
%81 = trunc i64 %47 to i32
%82 = sub i32 %81, %33
%83 = and i32 %82, 1023
%84 = icmp ult i32 %83, %36
%85 = select i1 %84, i8 -80, i8 24
br label %90
86: ; preds = %51, %46
%87 = add nsw i64 %47, %43
%88 = inttoptr i64 %87 to i8*
%89 = load i8, i8* %88
br label %90
90: ; preds = %80, %76, %65, %67, %72, %60, %56, %86
%91 = phi i8 [ %89, %86 ], [ 20, %72 ], [ 28, %67 ], [ 28, %65 ], [ 0, %60 ], [ 0, %56 ], [ 24, %76 ], [ %85, %80 ]
%92 = add nsw i64 %47, %43
%93 = inttoptr i64 %92 to i8*
store i8 %91, i8* %93
%94 = add nuw nsw i64 %47, 1
%95 = icmp eq i64 %94, 786432
br i1 %95, label %96, label %46
96: ; preds = %90
%97 = add nsw i32 %0, 4
%98 = sext i32 %97 to i64
%99 = inttoptr i64 %98 to i32*
%100 = load i32, i32* %99
%101 = sext i32 %100 to i64
%102 = inttoptr i64 %101 to i8*
%103 = load i8, i8* %102
%104 = icmp eq i8 %103, 0
br i1 %104, label %154, label %105
105: ; preds = %96
%106 = add i32 %2, 5126
%107 = load i32, i32* inttoptr (i64 590372 to i32*)
br label %108
108: ; preds = %105, %148
%109 = phi i32 [ %107, %105 ], [ %142, %148 ]
%110 = phi i8 [ %103, %105 ], [ %152, %148 ]
%111 = phi i64 [ 0, %105 ], [ %149, %148 ]
%112 = phi i8* [ %102, %105 ], [ %151, %148 ]
%113 = trunc i64 %111 to i32
%114 = shl nsw i32 %113, 3
%115 = add i32 %106, %114
br label %116
116: ; preds = %145, %108
%117 = phi i32 [ %109, %108 ], [ %142, %145 ]
%118 = phi i32 [ %109, %108 ], [ %143, %145 ]
%119 = phi i8 [ %110, %108 ], [ %147, %145 ]
%120 = phi i32 [ 0, %108 ], [ %146, %145 ]
%121 = sext i8 %119 to i32
%122 = shl nsw i32 %121, 4
%123 = lshr i32 %120, 10
%124 = add i32 %118, %123
%125 = add i32 %124, %122
%126 = sext i32 %125 to i64
%127 = inttoptr i64 %126 to i32*
%128 = load i32, i32* %127
%129 = and i32 %120, 7
%130 = lshr i32 128, %129
%131 = and i32 %128, %130
%132 = icmp eq i32 %131, 0
br i1 %132, label %141, label %133
133: ; preds = %116
%134 = load i32, i32* %8
%135 = and i32 %120, 15367
%136 = add i32 %115, %135
%137 = add i32 %136, %134
%138 = sext i32 %137 to i64
%139 = inttoptr i64 %138 to i8*
store i8 31, i8* %139
%140 = load i32, i32* inttoptr (i64 590372 to i32*)
br label %141
141: ; preds = %116, %133
%142 = phi i32 [ %117, %116 ], [ %140, %133 ]
%143 = phi i32 [ %118, %116 ], [ %140, %133 ]
%144 = icmp ult i32 %120, 16255
br i1 %144, label %145, label %148
145: ; preds = %141
%146 = add nuw nsw i32 %120, 129
%147 = load i8, i8* %112
br label %116
148: ; preds = %141
%149 = add nuw i64 %111, 1
%150 = add nsw i64 %149, %101
%151 = inttoptr i64 %150 to i8*
%152 = load i8, i8* %151
%153 = icmp eq i8 %152, 0
br i1 %153, label %154, label %108
154: ; preds = %148, %96
%155 = sext i32 %0 to i64
%156 = inttoptr i64 %155 to i32*
%157 = load i32, i32* %156
%158 = sext i32 %157 to i64
%159 = inttoptr i64 %158 to i32 (i32, i32, i32)*
%160 = tail call i32 %159(i32 %0, i32 2, i32 %2)
br label %161
161: ; preds = %154, %3
ret i32 undef
}