int left(int *f) {
  int y, a = 0;
  for (int i = 0; i < 4; i++) {
    if (*(f + 4 * i) == 0)
      if ((*(f + 1 + 4 * i) != 0) || (*(f + 2 + 4 * i) != 0) ||
          (*(f + 3 + 4 * i) != 0))
        a = 1;
    if (*(f + 1 + 4 * i) == 0)
      if ((*(f + 2 + 4 * i) != 0) || (*(f + 3 + 4 * i) != 0))
        a = 1;
    if (*(f + 2 + 4 * i) == 0)
      if ((*(f + 3 + 4 * i) != 0))
        a = 1;
    if (((*(f + 4 * i)) == (*(f + 1 + 4 * i))) && ((*(f + 4 * i)) != 0))
      a = 1;
    if (((*(f + 1 + 4 * i)) == (*(f + 2 + 4 * i))) && ((*(f + 1 + 4 * i)) != 0))
      a = 1;
    if (((*(f + 2 + 4 * i)) == (*(f + 3 + 4 * i))) && ((*(f + 2 + 4 * i)) != 0))
      a = 1;
  }
  for (y = 0; y < 4; y++) {
    for (int i = 0; i < 3; i++) {
      if (*(f + 4 * y) == 0) {
        *(f + 4 * y) = *(f + 1 + 4 * y);
        *(f + 1 + 4 * y) = *(f + 2 + 4 * y);
        *(f + 2 + 4 * y) = *(f + 3 + 4 * y);
        *(f + 3 + 4 * y) = 0;
      }
      if (*(f + 1 + 4 * y) == 0) {
        *(f + 1 + 4 * y) = *(f + 2 + 4 * y);
        *(f + 2 + 4 * y) = *(f + 3 + 4 * y);
        *(f + 3 + 4 * y) = 0;
      }
      if (*(f + 2 + 4 * y) == 0) {
        *(f + 2 + 4 * y) = *(f + 3 + 4 * y);
        *(f + 3 + 4 * y) = 0;
      }
    }
  }
  for (y = 0; y < 4; y++) {
    if (*(f + 4 * y) == *(f + 1 + 4 * y)) {
      *(f + 4 * y) += *(f + 1 + 4 * y);
      *(f + 1 + 4 * y) = *(f + 2 + 4 * y);
      *(f + 2 + 4 * y) = *(f + 3 + 4 * y);
      *(f + 3 + 4 * y) = 0;
    }
    if (*(f + 1 + 4 * y) == *(f + 2 + 4 * y)) {
      *(f + 1 + 4 * y) += *(f + 2 + 4 * y);
      *(f + 2 + 4 * y) = *(f + 3 + 4 * y);
      *(f + 3 + 4 * y) = 0;
    }
    if (*(f + 2 + 4 * y) == *(f + 3 + 4 * y)) {
      *(f + 2 + 4 * y) += *(f + 3 + 4 * y);
      *(f + 3 + 4 * y) = 0;
    }
    for (int i = 0; i < 2; i++) {
      if (*(f + 4 * y) == 0) {
        *(f + 4 * y) = *(f + 1 + 4 * y);
        *(f + 1 + 4 * y) = *(f + 2 + 4 * y);
        *(f + 2 + 4 * y) = *(f + 3 + 4 * y);
        *(f + 3 + 4 * y) = 0;
      }
      if (*(f + 1 + 4 * y) == 0) {
        *(f + 1 + 4 * y) = *(f + 2 + 4 * y);
        *(f + 2 + 4 * y) = *(f + 3 + 4 * y);
        *(f + 3 + 4 * y) = 0;
      }
      if (*(f + 2 + 4 * y) == 0) {
        *(f + 2 + 4 * y) = *(f + 3 + 4 * y);
        *(f + 3 + 4 * y) = 0;
      }
    }
  }
  return a;
}


x86 assembly (clang, -O0):
<left>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0x4,-0x14(%rbp)
jge    1301 <left+0x201>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    118b <left+0x8b>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x4(%rax,%rcx,4)
jne    117f <left+0x7f>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x8(%rax,%rcx,4)
jne    117f <left+0x7f>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0xc(%rax,%rcx,4)
je     1186 <left+0x86>
movl   $0x1,-0x10(%rbp)
jmp    118b <left+0x8b>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x4(%rax,%rcx,4)
jne    11df <left+0xdf>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x8(%rax,%rcx,4)
jne    11d3 <left+0xd3>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0xc(%rax,%rcx,4)
je     11da <left+0xda>
movl   $0x1,-0x10(%rbp)
jmp    11df <left+0xdf>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x8(%rax,%rcx,4)
jne    121b <left+0x11b>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0xc(%rax,%rcx,4)
je     1216 <left+0x116>
movl   $0x1,-0x10(%rbp)
jmp    121b <left+0x11b>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
shl    $0x2,%edx
movslq %edx,%rdx
cmp    0x4(%rcx,%rdx,4),%eax
jne    1260 <left+0x160>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     1260 <left+0x160>
movl   $0x1,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x4(%rax,%rcx,4),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
shl    $0x2,%edx
movslq %edx,%rdx
cmp    0x8(%rcx,%rdx,4),%eax
jne    12a7 <left+0x1a7>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x4(%rax,%rcx,4)
je     12a7 <left+0x1a7>
movl   $0x1,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x8(%rax,%rcx,4),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
shl    $0x2,%edx
movslq %edx,%rdx
cmp    0xc(%rcx,%rdx,4),%eax
jne    12ee <left+0x1ee>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x8(%rax,%rcx,4)
je     12ee <left+0x1ee>
movl   $0x1,-0x10(%rbp)
jmp    12f3 <left+0x1f3>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1116 <left+0x16>
movl   $0x0,-0xc(%rbp)
cmpl   $0x4,-0xc(%rbp)
jge    149a <left+0x39a>
movl   $0x0,-0x18(%rbp)
cmpl   $0x3,-0x18(%rbp)
jge    1487 <left+0x387>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    13b4 <left+0x2b4>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x4(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x8(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0xc(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x8(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,0xc(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x4(%rax,%rcx,4)
jne    1425 <left+0x325>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x8(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0xc(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x8(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,0xc(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x8(%rax,%rcx,4)
jne    1474 <left+0x374>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0xc(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x8(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,0xc(%rax,%rcx,4)
jmp    1479 <left+0x379>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1319 <left+0x219>
jmp    148c <left+0x38c>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1308 <left+0x208>
movl   $0x0,-0xc(%rbp)
cmpl   $0x4,-0xc(%rbp)
jge    17bf <left+0x6bf>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x8(%rbp),%rcx
mov    -0xc(%rbp),%edx
shl    $0x2,%edx
movslq %edx,%rdx
cmp    0x4(%rcx,%rdx,4),%eax
jne    154f <left+0x44f>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x4(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x8(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0xc(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x8(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,0xc(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x4(%rax,%rcx,4),%eax
mov    -0x8(%rbp),%rcx
mov    -0xc(%rbp),%edx
shl    $0x2,%edx
movslq %edx,%rdx
cmp    0x8(%rcx,%rdx,4),%eax
jne    15d4 <left+0x4d4>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x8(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
add    0x4(%rax,%rcx,4),%edx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0xc(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x8(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,0xc(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x8(%rax,%rcx,4),%eax
mov    -0x8(%rbp),%rcx
mov    -0xc(%rbp),%edx
shl    $0x2,%edx
movslq %edx,%rdx
cmp    0xc(%rcx,%rdx,4),%eax
jne    1637 <left+0x537>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0xc(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
add    0x8(%rax,%rcx,4),%edx
mov    %edx,0x8(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,0xc(%rax,%rcx,4)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x2,-0x1c(%rbp)
jge    17ac <left+0x6ac>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    16d9 <left+0x5d9>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x4(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x8(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0xc(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x8(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,0xc(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x4(%rax,%rcx,4)
jne    174a <left+0x64a>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0x8(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0xc(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x8(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,0xc(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,0x8(%rax,%rcx,4)
jne    1799 <left+0x699>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    0xc(%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,0x8(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,0xc(%rax,%rcx,4)
jmp    179e <left+0x69e>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    163e <left+0x53e>
jmp    17b1 <left+0x6b1>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    14a1 <left+0x3a1>
mov    -0x10(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<left>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
lea    0xc(%rdi),%rax
mov    (%rdi),%r10d
mov    0x4(%rdi),%edx
test   %r10d,%r10d
je     1122 <left+0x22>
xor    %r9d,%r9d
test   %edx,%edx
jne    112c <left+0x2c>
jmp    114d <left+0x4d>
mov    $0x1,%r9d
test   %edx,%edx
je     1138 <left+0x38>
mov    0x8(%rdi),%ebp
xor    %r8d,%r8d
test   %ebp,%ebp
jne    115f <left+0x5f>
jmp    117a <left+0x7a>
mov    $0x1,%r9d
cmpl   $0x0,0x8(%rdi)
jne    114d <left+0x4d>
cmpl   $0x0,(%rax)
je     1687 <left+0x587>
mov    0x8(%rdi),%ebp
test   %ebp,%ebp
je     1169 <left+0x69>
mov    $0x1,%r8b
xor    %edx,%edx
mov    $0x1,%r9d
mov    (%rax),%ebx
xor    %r11d,%r11d
mov    %r9d,%ecx
jmp    118c <left+0x8c>
cmpl   $0x0,(%rax)
mov    $0x1,%ecx
cmovne %ecx,%r9d
mov    $0x1,%r8b
xor    %edx,%edx
mov    (%rax),%ebx
test   %ebx,%ebx
mov    $0x1,%ecx
cmove  %r9d,%ecx
xor    %ebp,%ebp
mov    $0x1,%r11b
cmp    %edx,%r10d
mov    $0x1,%esi
cmovne %ecx,%esi
test   %r10d,%r10d
cmove  %ecx,%esi
cmp    %ebp,%edx
mov    $0x1,%ecx
cmovne %esi,%ecx
test   %r8b,%r8b
cmovne %esi,%ecx
cmp    %ebx,%ebp
mov    $0x1,%edx
cmovne %ecx,%edx
test   %r11b,%r11b
cmovne %ecx,%edx
mov    $0x1,%ecx
mov    0x10(%rdi),%r9d
mov    0x14(%rdi),%esi
test   %r9d,%r9d
je     11d6 <left+0xd6>
mov    %edx,%ecx
test   %esi,%esi
jne    11da <left+0xda>
jmp    11f7 <left+0xf7>
test   %esi,%esi
je     11e6 <left+0xe6>
mov    0x18(%rdi),%ebp
xor    %r8d,%r8d
test   %ebp,%ebp
jne    1208 <left+0x108>
jmp    1221 <left+0x121>
cmpl   $0x0,0x18(%rdi)
jne    11f2 <left+0xf2>
cmpl   $0x0,0x1c(%rdi)
je     11f7 <left+0xf7>
mov    $0x1,%edx
mov    0x18(%rdi),%ebp
test   %ebp,%ebp
je     1210 <left+0x110>
mov    $0x1,%r8b
xor    %esi,%esi
mov    $0x1,%ecx
mov    0x1c(%rdi),%ebx
xor    %r10d,%r10d
jmp    1233 <left+0x133>
cmpl   $0x0,0x1c(%rdi)
mov    $0x1,%ecx
cmove  %edx,%ecx
mov    $0x1,%r8b
xor    %esi,%esi
mov    0x1c(%rdi),%ebx
test   %ebx,%ebx
mov    $0x1,%edx
cmovne %edx,%ecx
xor    %ebp,%ebp
mov    $0x1,%r10b
cmp    %esi,%r9d
mov    $0x1,%edx
cmovne %ecx,%edx
test   %r9d,%r9d
cmove  %ecx,%edx
cmp    %ebp,%esi
mov    $0x1,%ecx
cmovne %edx,%ecx
test   %r8b,%r8b
cmovne %edx,%ecx
cmp    %ebx,%ebp
mov    $0x1,%edx
cmovne %ecx,%edx
test   %r10b,%r10b
cmovne %ecx,%edx
mov    $0x1,%ecx
mov    0x20(%rdi),%r9d
mov    0x24(%rdi),%esi
test   %r9d,%r9d
je     127d <left+0x17d>
mov    %edx,%ecx
test   %esi,%esi
jne    1281 <left+0x181>
jmp    129e <left+0x19e>
test   %esi,%esi
je     128d <left+0x18d>
mov    0x28(%rdi),%ebp
xor    %r8d,%r8d
test   %ebp,%ebp
jne    12af <left+0x1af>
jmp    12c8 <left+0x1c8>
cmpl   $0x0,0x28(%rdi)
jne    1299 <left+0x199>
cmpl   $0x0,0x2c(%rdi)
je     129e <left+0x19e>
mov    $0x1,%edx
mov    0x28(%rdi),%ebp
test   %ebp,%ebp
je     12b7 <left+0x1b7>
mov    $0x1,%r8b
xor    %esi,%esi
mov    $0x1,%ecx
mov    0x2c(%rdi),%ebx
xor    %r10d,%r10d
jmp    12da <left+0x1da>
cmpl   $0x0,0x2c(%rdi)
mov    $0x1,%ecx
cmove  %edx,%ecx
mov    $0x1,%r8b
xor    %esi,%esi
mov    0x2c(%rdi),%ebx
test   %ebx,%ebx
mov    $0x1,%edx
cmovne %edx,%ecx
xor    %ebp,%ebp
mov    $0x1,%r10b
cmp    %esi,%r9d
mov    $0x1,%edx
cmovne %ecx,%edx
test   %r9d,%r9d
cmove  %ecx,%edx
cmp    %ebp,%esi
mov    $0x1,%esi
cmovne %edx,%esi
test   %r8b,%r8b
cmovne %edx,%esi
cmp    %ebx,%ebp
mov    $0x1,%ecx
cmovne %esi,%ecx
test   %r10b,%r10b
cmovne %esi,%ecx
mov    $0x1,%r12d
mov    0x30(%rdi),%r9d
mov    0x34(%rdi),%r14d
test   %r9d,%r9d
je     1328 <left+0x228>
mov    %ecx,%r12d
test   %r14d,%r14d
jne    132d <left+0x22d>
jmp    134c <left+0x24c>
test   %r14d,%r14d
je     133b <left+0x23b>
mov    0x38(%rdi),%r15d
xor    %r8d,%r8d
test   %r15d,%r15d
jne    1361 <left+0x261>
jmp    137e <left+0x27e>
cmpl   $0x0,0x38(%rdi)
jne    1347 <left+0x247>
cmpl   $0x0,0x3c(%rdi)
je     134c <left+0x24c>
mov    $0x1,%ecx
mov    0x38(%rdi),%r15d
test   %r15d,%r15d
je     136a <left+0x26a>
mov    $0x1,%r8b
xor    %r14d,%r14d
mov    $0x1,%r12d
mov    0x3c(%rdi),%r11d
xor    %r10d,%r10d
jmp    1394 <left+0x294>
cmpl   $0x0,0x3c(%rdi)
mov    $0x1,%r12d
cmove  %ecx,%r12d
mov    $0x1,%r8b
xor    %r14d,%r14d
mov    0x3c(%rdi),%r11d
test   %r11d,%r11d
mov    $0x1,%ecx
cmovne %ecx,%r12d
xor    %r15d,%r15d
mov    $0x1,%r10b
xor    %edi,%edi
jmp    13ae <left+0x2ae>
nopl   0x0(%rax,%rax,1)
add    $0x10,%rdi
cmp    $0x40,%rdi
je     14eb <left+0x3eb>
mov    -0xc(%rax,%rdi,1),%esi
mov    -0x8(%rax,%rdi,1),%ecx
mov    -0x4(%rax,%rdi,1),%edx
test   %esi,%esi
je     1410 <left+0x310>
mov    %edx,%ebx
mov    %ecx,%edx
mov    %esi,%ecx
test   %edx,%edx
je     142a <left+0x32a>
mov    %ebx,%esi
mov    %edx,%ebx
test   %esi,%esi
je     1440 <left+0x340>
test   %ecx,%ecx
je     1452 <left+0x352>
mov    %esi,%edx
mov    %ebx,%esi
mov    %ecx,%ebx
test   %esi,%esi
je     1470 <left+0x370>
mov    %edx,%ecx
mov    %esi,%edx
test   %ecx,%ecx
je     148a <left+0x38a>
test   %ebx,%ebx
je     14a0 <left+0x3a0>
mov    %ecx,%esi
mov    %edx,%ecx
test   %ecx,%ecx
je     14be <left+0x3be>
test   %esi,%esi
jne    13a0 <left+0x2a0>
jmp    14d8 <left+0x3d8>
nopl   0x0(%rax,%rax,1)
mov    %ecx,-0xc(%rax,%rdi,1)
mov    %edx,-0x8(%rax,%rdi,1)
mov    (%rax,%rdi,1),%ebx
mov    %ebx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
test   %edx,%edx
jne    13c8 <left+0x2c8>
mov    %ebx,-0x8(%rax,%rdi,1)
mov    (%rax,%rdi,1),%esi
mov    %esi,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
test   %esi,%esi
jne    13d0 <left+0x2d0>
mov    (%rax,%rdi,1),%esi
mov    %esi,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
test   %ecx,%ecx
jne    13d4 <left+0x2d4>
mov    %ebx,-0xc(%rax,%rdi,1)
mov    %esi,-0x8(%rax,%rdi,1)
mov    (%rax,%rdi,1),%edx
mov    %edx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
test   %esi,%esi
jne    13e2 <left+0x2e2>
mov    %edx,-0x8(%rax,%rdi,1)
mov    (%rax,%rdi,1),%ecx
mov    %ecx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
test   %ecx,%ecx
jne    13ee <left+0x2ee>
mov    (%rax,%rdi,1),%ecx
mov    %ecx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
test   %ebx,%ebx
jne    13f6 <left+0x2f6>
mov    %edx,-0xc(%rax,%rdi,1)
mov    %ecx,-0x8(%rax,%rdi,1)
mov    (%rax,%rdi,1),%esi
mov    %esi,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
test   %ecx,%ecx
jne    1402 <left+0x302>
mov    %esi,-0x8(%rax,%rdi,1)
mov    (%rax,%rdi,1),%esi
mov    %esi,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
test   %esi,%esi
jne    13a0 <left+0x2a0>
mov    (%rax,%rdi,1),%ecx
mov    %ecx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
jmp    13a0 <left+0x2a0>
xor    %edi,%edi
jmp    14fe <left+0x3fe>
nop
add    $0x10,%rdi
cmp    $0x40,%rdi
je     1647 <left+0x547>
mov    -0xc(%rax,%rdi,1),%esi
mov    -0x8(%rax,%rdi,1),%ebp
cmp    %ebp,%esi
jne    1540 <left+0x440>
add    %esi,%esi
mov    %esi,-0xc(%rax,%rdi,1)
mov    -0x4(%rax,%rdi,1),%ebp
mov    (%rax,%rdi,1),%ebx
mov    %ebp,-0x8(%rax,%rdi,1)
mov    %ebx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
cmp    %ebx,%ebp
je     1548 <left+0x448>
mov    (%rax,%rdi,1),%ecx
cmp    %ecx,%ebx
je     1564 <left+0x464>
jmp    1575 <left+0x475>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    -0x4(%rax,%rdi,1),%ebx
cmp    %ebx,%ebp
jne    152a <left+0x42a>
add    %ebx,%ebx
mov    %ebx,-0x8(%rax,%rdi,1)
mov    %ebx,%ebp
mov    (%rax,%rdi,1),%ebx
mov    %ebx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
xor    %ecx,%ecx
cmp    %ecx,%ebx
jne    1575 <left+0x475>
mov    %ecx,%ebx
add    %ecx,%ebx
mov    %ebx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
xor    %ecx,%ecx
mov    $0x1,%r13d
test   %esi,%esi
je     15c0 <left+0x4c0>
mov    %ecx,%edx
mov    %ebx,%ecx
mov    %ebp,%ebx
test   %ebx,%ebx
je     15dc <left+0x4dc>
mov    %edx,%esi
mov    %ecx,%edx
test   %edx,%edx
je     15f3 <left+0x4f3>
mov    %esi,%ecx
mov    %edx,%esi
test   %r13d,%r13d
je     1605 <left+0x505>
mov    %ecx,%edx
mov    %esi,%ecx
mov    %ebx,%esi
test   %esi,%esi
je     161e <left+0x51e>
mov    %edx,%esi
mov    %ecx,%edx
test   %edx,%edx
jne    14f0 <left+0x3f0>
jmp    1637 <left+0x537>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ebp,-0xc(%rax,%rdi,1)
mov    %ebx,-0x8(%rax,%rdi,1)
mov    %ecx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
xor    %edx,%edx
mov    %ebp,%r13d
test   %ebx,%ebx
jne    1589 <left+0x489>
mov    %ecx,-0x8(%rax,%rdi,1)
mov    %edx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
xor    %esi,%esi
mov    %ecx,%ebx
test   %edx,%edx
jne    1591 <left+0x491>
mov    %esi,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
xor    %ecx,%ecx
test   %r13d,%r13d
jne    159a <left+0x49a>
mov    %ebx,-0xc(%rax,%rdi,1)
mov    %esi,-0x8(%rax,%rdi,1)
mov    %ecx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
xor    %edx,%edx
test   %esi,%esi
jne    15a4 <left+0x4a4>
mov    %ecx,-0x8(%rax,%rdi,1)
mov    %edx,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
xor    %esi,%esi
test   %edx,%edx
jne    14f0 <left+0x3f0>
mov    %esi,-0x4(%rax,%rdi,1)
movl   $0x0,(%rax,%rdi,1)
jmp    14f0 <left+0x3f0>
cmp    %r14d,%r9d
mov    $0x1,%eax
cmovne %r12d,%eax
test   %r9d,%r9d
cmove  %r12d,%eax
cmp    %r15d,%r14d
mov    $0x1,%ecx
cmovne %eax,%ecx
test   %r8b,%r8b
cmovne %eax,%ecx
mov    $0x1,%eax
cmp    %r11d,%r15d
cmovne %ecx,%eax
test   %r10b,%r10b
cmovne %ecx,%eax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x1,%r8b
xor    %r9d,%r9d
jmp    1178 <left+0x78>

LLVM IR (-O0):
define i32 @left(i32* %0) {
%2 = alloca i32*
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
store i32* %0, i32** %2
store i32 0, i32* %4
store i32 0, i32* %5
br label %8
8: ; preds = %174, %1
%9 = load i32, i32* %5
%10 = icmp slt i32 %9, 4
br i1 %10, label %11, label %177
11: ; preds = %8
%12 = load i32*, i32** %2
%13 = load i32, i32* %5
%14 = mul nsw i32 4, %13
%15 = sext i32 %14 to i64
%16 = getelementptr inbounds i32, i32* %12, i64 %15
%17 = load i32, i32* %16
%18 = icmp eq i32 %17, 0
br i1 %18, label %19, label %48
19: ; preds = %11
%20 = load i32*, i32** %2
%21 = getelementptr inbounds i32, i32* %20, i64 1
%22 = load i32, i32* %5
%23 = mul nsw i32 4, %22
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds i32, i32* %21, i64 %24
%26 = load i32, i32* %25
%27 = icmp ne i32 %26, 0
br i1 %27, label %46, label %28
28: ; preds = %19
%29 = load i32*, i32** %2
%30 = getelementptr inbounds i32, i32* %29, i64 2
%31 = load i32, i32* %5
%32 = mul nsw i32 4, %31
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds i32, i32* %30, i64 %33
%35 = load i32, i32* %34
%36 = icmp ne i32 %35, 0
br i1 %36, label %46, label %37
37: ; preds = %28
%38 = load i32*, i32** %2
%39 = getelementptr inbounds i32, i32* %38, i64 3
%40 = load i32, i32* %5
%41 = mul nsw i32 4, %40
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds i32, i32* %39, i64 %42
%44 = load i32, i32* %43
%45 = icmp ne i32 %44, 0
br i1 %45, label %46, label %47
46: ; preds = %37, %28, %19
store i32 1, i32* %4
br label %47
47: ; preds = %46, %37
br label %48
48: ; preds = %47, %11
%49 = load i32*, i32** %2
%50 = getelementptr inbounds i32, i32* %49, i64 1
%51 = load i32, i32* %5
%52 = mul nsw i32 4, %51
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds i32, i32* %50, i64 %53
%55 = load i32, i32* %54
%56 = icmp eq i32 %55, 0
br i1 %56, label %57, label %77
57: ; preds = %48
%58 = load i32*, i32** %2
%59 = getelementptr inbounds i32, i32* %58, i64 2
%60 = load i32, i32* %5
%61 = mul nsw i32 4, %60
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds i32, i32* %59, i64 %62
%64 = load i32, i32* %63
%65 = icmp ne i32 %64, 0
br i1 %65, label %75, label %66
66: ; preds = %57
%67 = load i32*, i32** %2
%68 = getelementptr inbounds i32, i32* %67, i64 3
%69 = load i32, i32* %5
%70 = mul nsw i32 4, %69
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds i32, i32* %68, i64 %71
%73 = load i32, i32* %72
%74 = icmp ne i32 %73, 0
br i1 %74, label %75, label %76
75: ; preds = %66, %57
store i32 1, i32* %4
br label %76
76: ; preds = %75, %66
br label %77
77: ; preds = %76, %48
%78 = load i32*, i32** %2
%79 = getelementptr inbounds i32, i32* %78, i64 2
%80 = load i32, i32* %5
%81 = mul nsw i32 4, %80
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds i32, i32* %79, i64 %82
%84 = load i32, i32* %83
%85 = icmp eq i32 %84, 0
br i1 %85, label %86, label %97
86: ; preds = %77
%87 = load i32*, i32** %2
%88 = getelementptr inbounds i32, i32* %87, i64 3
%89 = load i32, i32* %5
%90 = mul nsw i32 4, %89
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds i32, i32* %88, i64 %91
%93 = load i32, i32* %92
%94 = icmp ne i32 %93, 0
br i1 %94, label %95, label %96
95: ; preds = %86
store i32 1, i32* %4
br label %96
96: ; preds = %95, %86
br label %97
97: ; preds = %96, %77
%98 = load i32*, i32** %2
%99 = load i32, i32* %5
%100 = mul nsw i32 4, %99
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds i32, i32* %98, i64 %101
%103 = load i32, i32* %102
%104 = load i32*, i32** %2
%105 = getelementptr inbounds i32, i32* %104, i64 1
%106 = load i32, i32* %5
%107 = mul nsw i32 4, %106
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds i32, i32* %105, i64 %108
%110 = load i32, i32* %109
%111 = icmp eq i32 %103, %110
br i1 %111, label %112, label %121
112: ; preds = %97
%113 = load i32*, i32** %2
%114 = load i32, i32* %5
%115 = mul nsw i32 4, %114
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds i32, i32* %113, i64 %116
%118 = load i32, i32* %117
%119 = icmp ne i32 %118, 0
br i1 %119, label %120, label %121
120: ; preds = %112
store i32 1, i32* %4
br label %121
121: ; preds = %120, %112, %97
%122 = load i32*, i32** %2
%123 = getelementptr inbounds i32, i32* %122, i64 1
%124 = load i32, i32* %5
%125 = mul nsw i32 4, %124
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds i32, i32* %123, i64 %126
%128 = load i32, i32* %127
%129 = load i32*, i32** %2
%130 = getelementptr inbounds i32, i32* %129, i64 2
%131 = load i32, i32* %5
%132 = mul nsw i32 4, %131
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds i32, i32* %130, i64 %133
%135 = load i32, i32* %134
%136 = icmp eq i32 %128, %135
br i1 %136, label %137, label %147
137: ; preds = %121
%138 = load i32*, i32** %2
%139 = getelementptr inbounds i32, i32* %138, i64 1
%140 = load i32, i32* %5
%141 = mul nsw i32 4, %140
%142 = sext i32 %141 to i64
%143 = getelementptr inbounds i32, i32* %139, i64 %142
%144 = load i32, i32* %143
%145 = icmp ne i32 %144, 0
br i1 %145, label %146, label %147
146: ; preds = %137
store i32 1, i32* %4
br label %147
147: ; preds = %146, %137, %121
%148 = load i32*, i32** %2
%149 = getelementptr inbounds i32, i32* %148, i64 2
%150 = load i32, i32* %5
%151 = mul nsw i32 4, %150
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds i32, i32* %149, i64 %152
%154 = load i32, i32* %153
%155 = load i32*, i32** %2
%156 = getelementptr inbounds i32, i32* %155, i64 3
%157 = load i32, i32* %5
%158 = mul nsw i32 4, %157
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds i32, i32* %156, i64 %159
%161 = load i32, i32* %160
%162 = icmp eq i32 %154, %161
br i1 %162, label %163, label %173
163: ; preds = %147
%164 = load i32*, i32** %2
%165 = getelementptr inbounds i32, i32* %164, i64 2
%166 = load i32, i32* %5
%167 = mul nsw i32 4, %166
%168 = sext i32 %167 to i64
%169 = getelementptr inbounds i32, i32* %165, i64 %168
%170 = load i32, i32* %169
%171 = icmp ne i32 %170, 0
br i1 %171, label %172, label %173
172: ; preds = %163
store i32 1, i32* %4
br label %173
173: ; preds = %172, %163, %147
br label %174
174: ; preds = %173
%175 = load i32, i32* %5
%176 = add nsw i32 %175, 1
store i32 %176, i32* %5
br label %8
177: ; preds = %8
store i32 0, i32* %3
br label %178
178: ; preds = %314, %177
%179 = load i32, i32* %3
%180 = icmp slt i32 %179, 4
br i1 %180, label %181, label %317
181: ; preds = %178
store i32 0, i32* %6
br label %182
182: ; preds = %310, %181
%183 = load i32, i32* %6
%184 = icmp slt i32 %183, 3
br i1 %184, label %185, label %313
185: ; preds = %182
%186 = load i32*, i32** %2
%187 = load i32, i32* %3
%188 = mul nsw i32 4, %187
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds i32, i32* %186, i64 %189
%191 = load i32, i32* %190
%192 = icmp eq i32 %191, 0
br i1 %192, label %193, label %238
193: ; preds = %185
%194 = load i32*, i32** %2
%195 = getelementptr inbounds i32, i32* %194, i64 1
%196 = load i32, i32* %3
%197 = mul nsw i32 4, %196
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds i32, i32* %195, i64 %198
%200 = load i32, i32* %199
%201 = load i32*, i32** %2
%202 = load i32, i32* %3
%203 = mul nsw i32 4, %202
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds i32, i32* %201, i64 %204
store i32 %200, i32* %205
%206 = load i32*, i32** %2
%207 = getelementptr inbounds i32, i32* %206, i64 2
%208 = load i32, i32* %3
%209 = mul nsw i32 4, %208
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds i32, i32* %207, i64 %210
%212 = load i32, i32* %211
%213 = load i32*, i32** %2
%214 = getelementptr inbounds i32, i32* %213, i64 1
%215 = load i32, i32* %3
%216 = mul nsw i32 4, %215
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds i32, i32* %214, i64 %217
store i32 %212, i32* %218
%219 = load i32*, i32** %2
%220 = getelementptr inbounds i32, i32* %219, i64 3
%221 = load i32, i32* %3
%222 = mul nsw i32 4, %221
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds i32, i32* %220, i64 %223
%225 = load i32, i32* %224
%226 = load i32*, i32** %2
%227 = getelementptr inbounds i32, i32* %226, i64 2
%228 = load i32, i32* %3
%229 = mul nsw i32 4, %228
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds i32, i32* %227, i64 %230
store i32 %225, i32* %231
%232 = load i32*, i32** %2
%233 = getelementptr inbounds i32, i32* %232, i64 3
%234 = load i32, i32* %3
%235 = mul nsw i32 4, %234
%236 = sext i32 %235 to i64
%237 = getelementptr inbounds i32, i32* %233, i64 %236
store i32 0, i32* %237
br label %238
238: ; preds = %193, %185
%239 = load i32*, i32** %2
%240 = getelementptr inbounds i32, i32* %239, i64 1
%241 = load i32, i32* %3
%242 = mul nsw i32 4, %241
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds i32, i32* %240, i64 %243
%245 = load i32, i32* %244
%246 = icmp eq i32 %245, 0
br i1 %246, label %247, label %280
247: ; preds = %238
%248 = load i32*, i32** %2
%249 = getelementptr inbounds i32, i32* %248, i64 2
%250 = load i32, i32* %3
%251 = mul nsw i32 4, %250
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds i32, i32* %249, i64 %252
%254 = load i32, i32* %253
%255 = load i32*, i32** %2
%256 = getelementptr inbounds i32, i32* %255, i64 1
%257 = load i32, i32* %3
%258 = mul nsw i32 4, %257
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds i32, i32* %256, i64 %259
store i32 %254, i32* %260
%261 = load i32*, i32** %2
%262 = getelementptr inbounds i32, i32* %261, i64 3
%263 = load i32, i32* %3
%264 = mul nsw i32 4, %263
%265 = sext i32 %264 to i64
%266 = getelementptr inbounds i32, i32* %262, i64 %265
%267 = load i32, i32* %266
%268 = load i32*, i32** %2
%269 = getelementptr inbounds i32, i32* %268, i64 2
%270 = load i32, i32* %3
%271 = mul nsw i32 4, %270
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds i32, i32* %269, i64 %272
store i32 %267, i32* %273
%274 = load i32*, i32** %2
%275 = getelementptr inbounds i32, i32* %274, i64 3
%276 = load i32, i32* %3
%277 = mul nsw i32 4, %276
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds i32, i32* %275, i64 %278
store i32 0, i32* %279
br label %280
280: ; preds = %247, %238
%281 = load i32*, i32** %2
%282 = getelementptr inbounds i32, i32* %281, i64 2
%283 = load i32, i32* %3
%284 = mul nsw i32 4, %283
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds i32, i32* %282, i64 %285
%287 = load i32, i32* %286
%288 = icmp eq i32 %287, 0
br i1 %288, label %289, label %309
289: ; preds = %280
%290 = load i32*, i32** %2
%291 = getelementptr inbounds i32, i32* %290, i64 3
%292 = load i32, i32* %3
%293 = mul nsw i32 4, %292
%294 = sext i32 %293 to i64
%295 = getelementptr inbounds i32, i32* %291, i64 %294
%296 = load i32, i32* %295
%297 = load i32*, i32** %2
%298 = getelementptr inbounds i32, i32* %297, i64 2
%299 = load i32, i32* %3
%300 = mul nsw i32 4, %299
%301 = sext i32 %300 to i64
%302 = getelementptr inbounds i32, i32* %298, i64 %301
store i32 %296, i32* %302
%303 = load i32*, i32** %2
%304 = getelementptr inbounds i32, i32* %303, i64 3
%305 = load i32, i32* %3
%306 = mul nsw i32 4, %305
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds i32, i32* %304, i64 %307
store i32 0, i32* %308
br label %309
309: ; preds = %289, %280
br label %310
310: ; preds = %309
%311 = load i32, i32* %6
%312 = add nsw i32 %311, 1
store i32 %312, i32* %6
br label %182
313: ; preds = %182
br label %314
314: ; preds = %313
%315 = load i32, i32* %3
%316 = add nsw i32 %315, 1
store i32 %316, i32* %3
br label %178
317: ; preds = %178
store i32 0, i32* %3
br label %318
318: ; preds = %605, %317
%319 = load i32, i32* %3
%320 = icmp slt i32 %319, 4
br i1 %320, label %321, label %608
321: ; preds = %318
%322 = load i32*, i32** %2
%323 = load i32, i32* %3
%324 = mul nsw i32 4, %323
%325 = sext i32 %324 to i64
%326 = getelementptr inbounds i32, i32* %322, i64 %325
%327 = load i32, i32* %326
%328 = load i32*, i32** %2
%329 = getelementptr inbounds i32, i32* %328, i64 1
%330 = load i32, i32* %3
%331 = mul nsw i32 4, %330
%332 = sext i32 %331 to i64
%333 = getelementptr inbounds i32, i32* %329, i64 %332
%334 = load i32, i32* %333
%335 = icmp eq i32 %327, %334
br i1 %335, label %336, label %383
336: ; preds = %321
%337 = load i32*, i32** %2
%338 = getelementptr inbounds i32, i32* %337, i64 1
%339 = load i32, i32* %3
%340 = mul nsw i32 4, %339
%341 = sext i32 %340 to i64
%342 = getelementptr inbounds i32, i32* %338, i64 %341
%343 = load i32, i32* %342
%344 = load i32*, i32** %2
%345 = load i32, i32* %3
%346 = mul nsw i32 4, %345
%347 = sext i32 %346 to i64
%348 = getelementptr inbounds i32, i32* %344, i64 %347
%349 = load i32, i32* %348
%350 = add nsw i32 %349, %343
store i32 %350, i32* %348
%351 = load i32*, i32** %2
%352 = getelementptr inbounds i32, i32* %351, i64 2
%353 = load i32, i32* %3
%354 = mul nsw i32 4, %353
%355 = sext i32 %354 to i64
%356 = getelementptr inbounds i32, i32* %352, i64 %355
%357 = load i32, i32* %356
%358 = load i32*, i32** %2
%359 = getelementptr inbounds i32, i32* %358, i64 1
%360 = load i32, i32* %3
%361 = mul nsw i32 4, %360
%362 = sext i32 %361 to i64
%363 = getelementptr inbounds i32, i32* %359, i64 %362
store i32 %357, i32* %363
%364 = load i32*, i32** %2
%365 = getelementptr inbounds i32, i32* %364, i64 3
%366 = load i32, i32* %3
%367 = mul nsw i32 4, %366
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds i32, i32* %365, i64 %368
%370 = load i32, i32* %369
%371 = load i32*, i32** %2
%372 = getelementptr inbounds i32, i32* %371, i64 2
%373 = load i32, i32* %3
%374 = mul nsw i32 4, %373
%375 = sext i32 %374 to i64
%376 = getelementptr inbounds i32, i32* %372, i64 %375
store i32 %370, i32* %376
%377 = load i32*, i32** %2
%378 = getelementptr inbounds i32, i32* %377, i64 3
%379 = load i32, i32* %3
%380 = mul nsw i32 4, %379
%381 = sext i32 %380 to i64
%382 = getelementptr inbounds i32, i32* %378, i64 %381
store i32 0, i32* %382
br label %383
383: ; preds = %336, %321
%384 = load i32*, i32** %2
%385 = getelementptr inbounds i32, i32* %384, i64 1
%386 = load i32, i32* %3
%387 = mul nsw i32 4, %386
%388 = sext i32 %387 to i64
%389 = getelementptr inbounds i32, i32* %385, i64 %388
%390 = load i32, i32* %389
%391 = load i32*, i32** %2
%392 = getelementptr inbounds i32, i32* %391, i64 2
%393 = load i32, i32* %3
%394 = mul nsw i32 4, %393
%395 = sext i32 %394 to i64
%396 = getelementptr inbounds i32, i32* %392, i64 %395
%397 = load i32, i32* %396
%398 = icmp eq i32 %390, %397
br i1 %398, label %399, label %434
399: ; preds = %383
%400 = load i32*, i32** %2
%401 = getelementptr inbounds i32, i32* %400, i64 2
%402 = load i32, i32* %3
%403 = mul nsw i32 4, %402
%404 = sext i32 %403 to i64
%405 = getelementptr inbounds i32, i32* %401, i64 %404
%406 = load i32, i32* %405
%407 = load i32*, i32** %2
%408 = getelementptr inbounds i32, i32* %407, i64 1
%409 = load i32, i32* %3
%410 = mul nsw i32 4, %409
%411 = sext i32 %410 to i64
%412 = getelementptr inbounds i32, i32* %408, i64 %411
%413 = load i32, i32* %412
%414 = add nsw i32 %413, %406
store i32 %414, i32* %412
%415 = load i32*, i32** %2
%416 = getelementptr inbounds i32, i32* %415, i64 3
%417 = load i32, i32* %3
%418 = mul nsw i32 4, %417
%419 = sext i32 %418 to i64
%420 = getelementptr inbounds i32, i32* %416, i64 %419
%421 = load i32, i32* %420
%422 = load i32*, i32** %2
%423 = getelementptr inbounds i32, i32* %422, i64 2
%424 = load i32, i32* %3
%425 = mul nsw i32 4, %424
%426 = sext i32 %425 to i64
%427 = getelementptr inbounds i32, i32* %423, i64 %426
store i32 %421, i32* %427
%428 = load i32*, i32** %2
%429 = getelementptr inbounds i32, i32* %428, i64 3
%430 = load i32, i32* %3
%431 = mul nsw i32 4, %430
%432 = sext i32 %431 to i64
%433 = getelementptr inbounds i32, i32* %429, i64 %432
store i32 0, i32* %433
br label %434
434: ; preds = %399, %383
%435 = load i32*, i32** %2
%436 = getelementptr inbounds i32, i32* %435, i64 2
%437 = load i32, i32* %3
%438 = mul nsw i32 4, %437
%439 = sext i32 %438 to i64
%440 = getelementptr inbounds i32, i32* %436, i64 %439
%441 = load i32, i32* %440
%442 = load i32*, i32** %2
%443 = getelementptr inbounds i32, i32* %442, i64 3
%444 = load i32, i32* %3
%445 = mul nsw i32 4, %444
%446 = sext i32 %445 to i64
%447 = getelementptr inbounds i32, i32* %443, i64 %446
%448 = load i32, i32* %447
%449 = icmp eq i32 %441, %448
br i1 %449, label %450, label %472
450: ; preds = %434
%451 = load i32*, i32** %2
%452 = getelementptr inbounds i32, i32* %451, i64 3
%453 = load i32, i32* %3
%454 = mul nsw i32 4, %453
%455 = sext i32 %454 to i64
%456 = getelementptr inbounds i32, i32* %452, i64 %455
%457 = load i32, i32* %456
%458 = load i32*, i32** %2
%459 = getelementptr inbounds i32, i32* %458, i64 2
%460 = load i32, i32* %3
%461 = mul nsw i32 4, %460
%462 = sext i32 %461 to i64
%463 = getelementptr inbounds i32, i32* %459, i64 %462
%464 = load i32, i32* %463
%465 = add nsw i32 %464, %457
store i32 %465, i32* %463
%466 = load i32*, i32** %2
%467 = getelementptr inbounds i32, i32* %466, i64 3
%468 = load i32, i32* %3
%469 = mul nsw i32 4, %468
%470 = sext i32 %469 to i64
%471 = getelementptr inbounds i32, i32* %467, i64 %470
store i32 0, i32* %471
br label %472
472: ; preds = %450, %434
store i32 0, i32* %7
br label %473
473: ; preds = %601, %472
%474 = load i32, i32* %7
%475 = icmp slt i32 %474, 2
br i1 %475, label %476, label %604
476: ; preds = %473
%477 = load i32*, i32** %2
%478 = load i32, i32* %3
%479 = mul nsw i32 4, %478
%480 = sext i32 %479 to i64
%481 = getelementptr inbounds i32, i32* %477, i64 %480
%482 = load i32, i32* %481
%483 = icmp eq i32 %482, 0
br i1 %483, label %484, label %529
484: ; preds = %476
%485 = load i32*, i32** %2
%486 = getelementptr inbounds i32, i32* %485, i64 1
%487 = load i32, i32* %3
%488 = mul nsw i32 4, %487
%489 = sext i32 %488 to i64
%490 = getelementptr inbounds i32, i32* %486, i64 %489
%491 = load i32, i32* %490
%492 = load i32*, i32** %2
%493 = load i32, i32* %3
%494 = mul nsw i32 4, %493
%495 = sext i32 %494 to i64
%496 = getelementptr inbounds i32, i32* %492, i64 %495
store i32 %491, i32* %496
%497 = load i32*, i32** %2
%498 = getelementptr inbounds i32, i32* %497, i64 2
%499 = load i32, i32* %3
%500 = mul nsw i32 4, %499
%501 = sext i32 %500 to i64
%502 = getelementptr inbounds i32, i32* %498, i64 %501
%503 = load i32, i32* %502
%504 = load i32*, i32** %2
%505 = getelementptr inbounds i32, i32* %504, i64 1
%506 = load i32, i32* %3
%507 = mul nsw i32 4, %506
%508 = sext i32 %507 to i64
%509 = getelementptr inbounds i32, i32* %505, i64 %508
store i32 %503, i32* %509
%510 = load i32*, i32** %2
%511 = getelementptr inbounds i32, i32* %510, i64 3
%512 = load i32, i32* %3
%513 = mul nsw i32 4, %512
%514 = sext i32 %513 to i64
%515 = getelementptr inbounds i32, i32* %511, i64 %514
%516 = load i32, i32* %515
%517 = load i32*, i32** %2
%518 = getelementptr inbounds i32, i32* %517, i64 2
%519 = load i32, i32* %3
%520 = mul nsw i32 4, %519
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds i32, i32* %518, i64 %521
store i32 %516, i32* %522
%523 = load i32*, i32** %2
%524 = getelementptr inbounds i32, i32* %523, i64 3
%525 = load i32, i32* %3
%526 = mul nsw i32 4, %525
%527 = sext i32 %526 to i64
%528 = getelementptr inbounds i32, i32* %524, i64 %527
store i32 0, i32* %528
br label %529
529: ; preds = %484, %476
%530 = load i32*, i32** %2
%531 = getelementptr inbounds i32, i32* %530, i64 1
%532 = load i32, i32* %3
%533 = mul nsw i32 4, %532
%534 = sext i32 %533 to i64
%535 = getelementptr inbounds i32, i32* %531, i64 %534
%536 = load i32, i32* %535
%537 = icmp eq i32 %536, 0
br i1 %537, label %538, label %571
538: ; preds = %529
%539 = load i32*, i32** %2
%540 = getelementptr inbounds i32, i32* %539, i64 2
%541 = load i32, i32* %3
%542 = mul nsw i32 4, %541
%543 = sext i32 %542 to i64
%544 = getelementptr inbounds i32, i32* %540, i64 %543
%545 = load i32, i32* %544
%546 = load i32*, i32** %2
%547 = getelementptr inbounds i32, i32* %546, i64 1
%548 = load i32, i32* %3
%549 = mul nsw i32 4, %548
%550 = sext i32 %549 to i64
%551 = getelementptr inbounds i32, i32* %547, i64 %550
store i32 %545, i32* %551
%552 = load i32*, i32** %2
%553 = getelementptr inbounds i32, i32* %552, i64 3
%554 = load i32, i32* %3
%555 = mul nsw i32 4, %554
%556 = sext i32 %555 to i64
%557 = getelementptr inbounds i32, i32* %553, i64 %556
%558 = load i32, i32* %557
%559 = load i32*, i32** %2
%560 = getelementptr inbounds i32, i32* %559, i64 2
%561 = load i32, i32* %3
%562 = mul nsw i32 4, %561
%563 = sext i32 %562 to i64
%564 = getelementptr inbounds i32, i32* %560, i64 %563
store i32 %558, i32* %564
%565 = load i32*, i32** %2
%566 = getelementptr inbounds i32, i32* %565, i64 3
%567 = load i32, i32* %3
%568 = mul nsw i32 4, %567
%569 = sext i32 %568 to i64
%570 = getelementptr inbounds i32, i32* %566, i64 %569
store i32 0, i32* %570
br label %571
571: ; preds = %538, %529
%572 = load i32*, i32** %2
%573 = getelementptr inbounds i32, i32* %572, i64 2
%574 = load i32, i32* %3
%575 = mul nsw i32 4, %574
%576 = sext i32 %575 to i64
%577 = getelementptr inbounds i32, i32* %573, i64 %576
%578 = load i32, i32* %577
%579 = icmp eq i32 %578, 0
br i1 %579, label %580, label %600
580: ; preds = %571
%581 = load i32*, i32** %2
%582 = getelementptr inbounds i32, i32* %581, i64 3
%583 = load i32, i32* %3
%584 = mul nsw i32 4, %583
%585 = sext i32 %584 to i64
%586 = getelementptr inbounds i32, i32* %582, i64 %585
%587 = load i32, i32* %586
%588 = load i32*, i32** %2
%589 = getelementptr inbounds i32, i32* %588, i64 2
%590 = load i32, i32* %3
%591 = mul nsw i32 4, %590
%592 = sext i32 %591 to i64
%593 = getelementptr inbounds i32, i32* %589, i64 %592
store i32 %587, i32* %593
%594 = load i32*, i32** %2
%595 = getelementptr inbounds i32, i32* %594, i64 3
%596 = load i32, i32* %3
%597 = mul nsw i32 4, %596
%598 = sext i32 %597 to i64
%599 = getelementptr inbounds i32, i32* %595, i64 %598
store i32 0, i32* %599
br label %600
600: ; preds = %580, %571
br label %601
601: ; preds = %600
%602 = load i32, i32* %7
%603 = add nsw i32 %602, 1
store i32 %603, i32* %7
br label %473
604: ; preds = %473
br label %605
605: ; preds = %604
%606 = load i32, i32* %3
%607 = add nsw i32 %606, 1
store i32 %607, i32* %3
br label %318
608: ; preds = %318
%609 = load i32, i32* %4
ret i32 %609
}

LLVM IR (-O2):
define i32 @left(i32* %0) {
%2 = getelementptr inbounds i32, i32* %0, i64 1
%3 = getelementptr inbounds i32, i32* %0, i64 2
%4 = getelementptr inbounds i32, i32* %0, i64 3
%5 = load i32, i32* %0
%6 = icmp eq i32 %5, 0
%7 = load i32, i32* %2
%8 = icmp eq i32 %7, 0
br i1 %6, label %9, label %16
9: ; preds = %1
br i1 %8, label %10, label %25
10: ; preds = %9
%11 = load i32, i32* %3
%12 = icmp eq i32 %11, 0
br i1 %12, label %13, label %17
13: ; preds = %10
%14 = load i32, i32* %4
%15 = icmp eq i32 %14, 0
br i1 %15, label %35, label %17
16: ; preds = %1
br i1 %8, label %17, label %25
17: ; preds = %10, %13, %16
%18 = phi i32 [ 0, %16 ], [ 1, %13 ], [ 1, %10 ]
%19 = load i32, i32* %3
%20 = icmp eq i32 %19, 0
br i1 %20, label %21, label %29
21: ; preds = %17
%22 = load i32, i32* %4
%23 = icmp eq i32 %22, 0
%24 = select i1 %23, i32 %18, i32 1
br label %35
25: ; preds = %9, %16
%26 = phi i32 [ 0, %16 ], [ 1, %9 ]
%27 = load i32, i32* %3
%28 = icmp eq i32 %27, 0
br i1 %28, label %35, label %29
29: ; preds = %17, %25
%30 = phi i32 [ %26, %25 ], [ 1, %17 ]
%31 = phi i32 [ %27, %25 ], [ %19, %17 ]
%32 = phi i32 [ %7, %25 ], [ 0, %17 ]
%33 = phi i1 [ false, %25 ], [ true, %17 ]
%34 = load i32, i32* %4
br label %42
35: ; preds = %21, %13, %25
%36 = phi i32 [ %26, %25 ], [ 0, %13 ], [ %24, %21 ]
%37 = phi i32 [ %7, %25 ], [ 0, %13 ], [ 0, %21 ]
%38 = phi i1 [ false, %25 ], [ true, %13 ], [ true, %21 ]
%39 = load i32, i32* %4
%40 = icmp eq i32 %39, 0
%41 = select i1 %40, i32 %36, i32 1
br label %42
42: ; preds = %29, %35
%43 = phi i1 [ false, %29 ], [ true, %35 ]
%44 = phi i32 [ %31, %29 ], [ 0, %35 ]
%45 = phi i32 [ %32, %29 ], [ %37, %35 ]
%46 = phi i1 [ %33, %29 ], [ %38, %35 ]
%47 = phi i32 [ %34, %29 ], [ %39, %35 ]
%48 = phi i32 [ %30, %29 ], [ %41, %35 ]
%49 = icmp ne i32 %5, %45
%50 = or i1 %6, %49
%51 = icmp ne i32 %45, %44
%52 = or i1 %46, %51
%53 = icmp ne i32 %44, %47
%54 = or i1 %43, %53
%55 = select i1 %54, i1 %52, i1 false
%56 = select i1 %55, i1 %50, i1 false
%57 = select i1 %56, i32 %48, i32 1
%58 = getelementptr inbounds i32, i32* %0, i64 4
%59 = load i32, i32* %58
%60 = icmp eq i32 %59, 0
%61 = getelementptr inbounds i32, i32* %0, i64 5
%62 = load i32, i32* %61
%63 = icmp eq i32 %62, 0
br i1 %60, label %64, label %74
64: ; preds = %42
br i1 %63, label %65, label %85
65: ; preds = %64
%66 = getelementptr inbounds i32, i32* %0, i64 6
%67 = load i32, i32* %66
%68 = icmp eq i32 %67, 0
br i1 %68, label %69, label %73
69: ; preds = %65
%70 = getelementptr inbounds i32, i32* %0, i64 7
%71 = load i32, i32* %70
%72 = icmp eq i32 %71, 0
br i1 %72, label %75, label %73
73: ; preds = %69, %65
br label %75
74: ; preds = %42
br i1 %63, label %75, label %85
75: ; preds = %73, %69, %74
%76 = phi i32 [ %57, %74 ], [ %57, %69 ], [ 1, %73 ]
%77 = getelementptr inbounds i32, i32* %0, i64 6
%78 = load i32, i32* %77
%79 = icmp eq i32 %78, 0
br i1 %79, label %80, label %90
80: ; preds = %75
%81 = getelementptr inbounds i32, i32* %0, i64 7
%82 = load i32, i32* %81
%83 = icmp eq i32 %82, 0
%84 = select i1 %83, i32 %76, i32 1
br label %97
85: ; preds = %64, %74
%86 = phi i32 [ %57, %74 ], [ 1, %64 ]
%87 = getelementptr inbounds i32, i32* %0, i64 6
%88 = load i32, i32* %87
%89 = icmp eq i32 %88, 0
br i1 %89, label %97, label %90
90: ; preds = %75, %85
%91 = phi i32 [ %86, %85 ], [ 1, %75 ]
%92 = phi i32 [ %88, %85 ], [ %78, %75 ]
%93 = phi i32 [ %62, %85 ], [ 0, %75 ]
%94 = phi i1 [ false, %85 ], [ true, %75 ]
%95 = getelementptr inbounds i32, i32* %0, i64 7
%96 = load i32, i32* %95
br label %105
97: ; preds = %80, %85
%98 = phi i32 [ %86, %85 ], [ %84, %80 ]
%99 = phi i32 [ %62, %85 ], [ 0, %80 ]
%100 = phi i1 [ false, %85 ], [ true, %80 ]
%101 = getelementptr inbounds i32, i32* %0, i64 7
%102 = load i32, i32* %101
%103 = icmp eq i32 %102, 0
%104 = select i1 %103, i32 %98, i32 1
br label %105
105: ; preds = %90, %97
%106 = phi i1 [ false, %90 ], [ true, %97 ]
%107 = phi i32 [ %92, %90 ], [ 0, %97 ]
%108 = phi i32 [ %93, %90 ], [ %99, %97 ]
%109 = phi i1 [ %94, %90 ], [ %100, %97 ]
%110 = phi i32 [ %96, %90 ], [ %102, %97 ]
%111 = phi i32 [ %91, %90 ], [ %104, %97 ]
%112 = icmp ne i32 %59, %108
%113 = or i1 %60, %112
%114 = icmp ne i32 %108, %107
%115 = or i1 %109, %114
%116 = icmp ne i32 %107, %110
%117 = or i1 %106, %116
%118 = select i1 %117, i1 %115, i1 false
%119 = select i1 %118, i1 %113, i1 false
%120 = select i1 %119, i32 %111, i32 1
%121 = getelementptr inbounds i32, i32* %0, i64 8
%122 = load i32, i32* %121
%123 = icmp eq i32 %122, 0
%124 = getelementptr inbounds i32, i32* %0, i64 9
%125 = load i32, i32* %124
%126 = icmp eq i32 %125, 0
br i1 %123, label %127, label %137
127: ; preds = %105
br i1 %126, label %128, label %148
128: ; preds = %127
%129 = getelementptr inbounds i32, i32* %0, i64 10
%130 = load i32, i32* %129
%131 = icmp eq i32 %130, 0
br i1 %131, label %132, label %136
132: ; preds = %128
%133 = getelementptr inbounds i32, i32* %0, i64 11
%134 = load i32, i32* %133
%135 = icmp eq i32 %134, 0
br i1 %135, label %138, label %136
136: ; preds = %132, %128
br label %138
137: ; preds = %105
br i1 %126, label %138, label %148
138: ; preds = %136, %132, %137
%139 = phi i32 [ %120, %137 ], [ %120, %132 ], [ 1, %136 ]
%140 = getelementptr inbounds i32, i32* %0, i64 10
%141 = load i32, i32* %140
%142 = icmp eq i32 %141, 0
br i1 %142, label %143, label %153
143: ; preds = %138
%144 = getelementptr inbounds i32, i32* %0, i64 11
%145 = load i32, i32* %144
%146 = icmp eq i32 %145, 0
%147 = select i1 %146, i32 %139, i32 1
br label %160
148: ; preds = %127, %137
%149 = phi i32 [ %120, %137 ], [ 1, %127 ]
%150 = getelementptr inbounds i32, i32* %0, i64 10
%151 = load i32, i32* %150
%152 = icmp eq i32 %151, 0
br i1 %152, label %160, label %153
153: ; preds = %138, %148
%154 = phi i32 [ %149, %148 ], [ 1, %138 ]
%155 = phi i32 [ %151, %148 ], [ %141, %138 ]
%156 = phi i32 [ %125, %148 ], [ 0, %138 ]
%157 = phi i1 [ false, %148 ], [ true, %138 ]
%158 = getelementptr inbounds i32, i32* %0, i64 11
%159 = load i32, i32* %158
br label %168
160: ; preds = %143, %148
%161 = phi i32 [ %149, %148 ], [ %147, %143 ]
%162 = phi i32 [ %125, %148 ], [ 0, %143 ]
%163 = phi i1 [ false, %148 ], [ true, %143 ]
%164 = getelementptr inbounds i32, i32* %0, i64 11
%165 = load i32, i32* %164
%166 = icmp eq i32 %165, 0
%167 = select i1 %166, i32 %161, i32 1
br label %168
168: ; preds = %153, %160
%169 = phi i1 [ false, %153 ], [ true, %160 ]
%170 = phi i32 [ %155, %153 ], [ 0, %160 ]
%171 = phi i32 [ %156, %153 ], [ %162, %160 ]
%172 = phi i1 [ %157, %153 ], [ %163, %160 ]
%173 = phi i32 [ %159, %153 ], [ %165, %160 ]
%174 = phi i32 [ %154, %153 ], [ %167, %160 ]
%175 = icmp ne i32 %122, %171
%176 = or i1 %123, %175
%177 = icmp ne i32 %171, %170
%178 = or i1 %172, %177
%179 = icmp ne i32 %170, %173
%180 = or i1 %169, %179
%181 = select i1 %180, i1 %178, i1 false
%182 = select i1 %181, i1 %176, i1 false
%183 = select i1 %182, i32 %174, i32 1
%184 = getelementptr inbounds i32, i32* %0, i64 12
%185 = load i32, i32* %184
%186 = icmp eq i32 %185, 0
%187 = getelementptr inbounds i32, i32* %0, i64 13
%188 = load i32, i32* %187
%189 = icmp eq i32 %188, 0
br i1 %186, label %190, label %200
190: ; preds = %168
br i1 %189, label %191, label %211
191: ; preds = %190
%192 = getelementptr inbounds i32, i32* %0, i64 14
%193 = load i32, i32* %192
%194 = icmp eq i32 %193, 0
br i1 %194, label %195, label %199
195: ; preds = %191
%196 = getelementptr inbounds i32, i32* %0, i64 15
%197 = load i32, i32* %196
%198 = icmp eq i32 %197, 0
br i1 %198, label %201, label %199
199: ; preds = %195, %191
br label %201
200: ; preds = %168
br i1 %189, label %201, label %211
201: ; preds = %199, %195, %200
%202 = phi i32 [ %183, %200 ], [ %183, %195 ], [ 1, %199 ]
%203 = getelementptr inbounds i32, i32* %0, i64 14
%204 = load i32, i32* %203
%205 = icmp eq i32 %204, 0
br i1 %205, label %206, label %216
206: ; preds = %201
%207 = getelementptr inbounds i32, i32* %0, i64 15
%208 = load i32, i32* %207
%209 = icmp eq i32 %208, 0
%210 = select i1 %209, i32 %202, i32 1
br label %223
211: ; preds = %190, %200
%212 = phi i32 [ %183, %200 ], [ 1, %190 ]
%213 = getelementptr inbounds i32, i32* %0, i64 14
%214 = load i32, i32* %213
%215 = icmp eq i32 %214, 0
br i1 %215, label %223, label %216
216: ; preds = %201, %211
%217 = phi i32 [ %212, %211 ], [ 1, %201 ]
%218 = phi i32 [ %214, %211 ], [ %204, %201 ]
%219 = phi i32 [ %188, %211 ], [ 0, %201 ]
%220 = phi i1 [ false, %211 ], [ true, %201 ]
%221 = getelementptr inbounds i32, i32* %0, i64 15
%222 = load i32, i32* %221
br label %231
223: ; preds = %206, %211
%224 = phi i32 [ %212, %211 ], [ %210, %206 ]
%225 = phi i32 [ %188, %211 ], [ 0, %206 ]
%226 = phi i1 [ false, %211 ], [ true, %206 ]
%227 = getelementptr inbounds i32, i32* %0, i64 15
%228 = load i32, i32* %227
%229 = icmp eq i32 %228, 0
%230 = select i1 %229, i32 %224, i32 1
br label %231
231: ; preds = %216, %223
%232 = phi i1 [ false, %216 ], [ true, %223 ]
%233 = phi i32 [ %218, %216 ], [ 0, %223 ]
%234 = phi i32 [ %219, %216 ], [ %225, %223 ]
%235 = phi i1 [ %220, %216 ], [ %226, %223 ]
%236 = phi i32 [ %222, %216 ], [ %228, %223 ]
%237 = phi i32 [ %217, %216 ], [ %230, %223 ]
br label %238
238: ; preds = %231, %298
%239 = phi i64 [ 0, %231 ], [ %299, %298 ]
%240 = shl nsw i64 %239, 2
%241 = getelementptr inbounds i32, i32* %0, i64 %240
%242 = getelementptr inbounds i32, i32* %2, i64 %240
%243 = getelementptr inbounds i32, i32* %3, i64 %240
%244 = load i32, i32* %241
%245 = getelementptr inbounds i32, i32* %4, i64 %240
%246 = load i32, i32* %242
%247 = load i32, i32* %243
%248 = icmp eq i32 %244, 0
br i1 %248, label %249, label %251
249: ; preds = %238
store i32 %246, i32* %241
store i32 %247, i32* %242
%250 = load i32, i32* %245
store i32 %250, i32* %243
store i32 0, i32* %245
br label %251
251: ; preds = %249, %238
%252 = phi i32 [ %250, %249 ], [ %247, %238 ]
%253 = phi i32 [ %247, %249 ], [ %246, %238 ]
%254 = phi i32 [ %246, %249 ], [ %244, %238 ]
%255 = icmp eq i32 %253, 0
br i1 %255, label %256, label %258
256: ; preds = %251
store i32 %252, i32* %242
%257 = load i32, i32* %245
store i32 %257, i32* %243
store i32 0, i32* %245
br label %258
258: ; preds = %256, %251
%259 = phi i32 [ %257, %256 ], [ %252, %251 ]
%260 = phi i32 [ %252, %256 ], [ %253, %251 ]
%261 = icmp eq i32 %259, 0
br i1 %261, label %262, label %264
262: ; preds = %258
%263 = load i32, i32* %245
store i32 %263, i32* %243
store i32 0, i32* %245
br label %264
264: ; preds = %258, %262
%265 = phi i32 [ %259, %258 ], [ %263, %262 ]
%266 = icmp eq i32 %254, 0
br i1 %266, label %267, label %269
267: ; preds = %264
store i32 %260, i32* %241
store i32 %265, i32* %242
%268 = load i32, i32* %245
store i32 %268, i32* %243
store i32 0, i32* %245
br label %269
269: ; preds = %267, %264
%270 = phi i32 [ %268, %267 ], [ %265, %264 ]
%271 = phi i32 [ %265, %267 ], [ %260, %264 ]
%272 = phi i32 [ %260, %267 ], [ %254, %264 ]
%273 = icmp eq i32 %271, 0
br i1 %273, label %274, label %276
274: ; preds = %269
store i32 %270, i32* %242
%275 = load i32, i32* %245
store i32 %275, i32* %243
store i32 0, i32* %245
br label %276
276: ; preds = %274, %269
%277 = phi i32 [ %275, %274 ], [ %270, %269 ]
%278 = phi i32 [ %270, %274 ], [ %271, %269 ]
%279 = icmp eq i32 %277, 0
br i1 %279, label %280, label %282
280: ; preds = %276
%281 = load i32, i32* %245
store i32 %281, i32* %243
store i32 0, i32* %245
br label %282
282: ; preds = %280, %276
%283 = phi i32 [ %277, %276 ], [ %281, %280 ]
%284 = icmp eq i32 %272, 0
br i1 %284, label %285, label %287
285: ; preds = %282
store i32 %278, i32* %241
store i32 %283, i32* %242
%286 = load i32, i32* %245
store i32 %286, i32* %243
store i32 0, i32* %245
br label %287
287: ; preds = %285, %282
%288 = phi i32 [ %286, %285 ], [ %283, %282 ]
%289 = phi i32 [ %283, %285 ], [ %278, %282 ]
%290 = icmp eq i32 %289, 0
br i1 %290, label %291, label %293
291: ; preds = %287
store i32 %288, i32* %242
%292 = load i32, i32* %245
store i32 %292, i32* %243
store i32 0, i32* %245
br label %293
293: ; preds = %291, %287
%294 = phi i32 [ %292, %291 ], [ %288, %287 ]
%295 = icmp eq i32 %294, 0
br i1 %295, label %296, label %298
296: ; preds = %293
%297 = load i32, i32* %245
store i32 %297, i32* %243
store i32 0, i32* %245
br label %298
298: ; preds = %296, %293
%299 = add nuw nsw i64 %239, 1
%300 = icmp eq i64 %299, 4
br i1 %300, label %301, label %238
301: ; preds = %298, %373
%302 = phi i64 [ %374, %373 ], [ 0, %298 ]
%303 = shl nuw nsw i64 %302, 2
%304 = getelementptr inbounds i32, i32* %0, i64 %303
%305 = load i32, i32* %304
%306 = getelementptr inbounds i32, i32* %2, i64 %303
%307 = load i32, i32* %306
%308 = icmp eq i32 %305, %307
br i1 %308, label %312, label %309
309: ; preds = %301
%310 = getelementptr inbounds i32, i32* %3, i64 %303
%311 = load i32, i32* %310
br label %318
312: ; preds = %301
%313 = shl nsw i32 %305, 1
store i32 %313, i32* %304
%314 = getelementptr inbounds i32, i32* %3, i64 %303
%315 = load i32, i32* %314
store i32 %315, i32* %306
%316 = getelementptr inbounds i32, i32* %4, i64 %303
%317 = load i32, i32* %316
store i32 %317, i32* %314
store i32 0, i32* %316
br label %318
318: ; preds = %309, %312
%319 = phi i32 [ %313, %312 ], [ %305, %309 ]
%320 = phi i32 [ %317, %312 ], [ %311, %309 ]
%321 = phi i32 [ %315, %312 ], [ %307, %309 ]
%322 = getelementptr inbounds i32, i32* %3, i64 %303
%323 = icmp eq i32 %321, %320
br i1 %323, label %327, label %324
324: ; preds = %318
%325 = getelementptr inbounds i32, i32* %4, i64 %303
%326 = load i32, i32* %325
br label %331
327: ; preds = %318
%328 = shl nsw i32 %320, 1
store i32 %328, i32* %306
%329 = getelementptr inbounds i32, i32* %4, i64 %303
%330 = load i32, i32* %329
store i32 %330, i32* %322
store i32 0, i32* %329
br label %331
331: ; preds = %324, %327
%332 = phi i32 [ %328, %327 ], [ %321, %324 ]
%333 = phi i32 [ 0, %327 ], [ %326, %324 ]
%334 = phi i32 [ %330, %327 ], [ %320, %324 ]
%335 = getelementptr inbounds i32, i32* %4, i64 %303
%336 = icmp eq i32 %334, %333
br i1 %336, label %337, label %339
337: ; preds = %331
%338 = shl nsw i32 %333, 1
store i32 %338, i32* %322
store i32 0, i32* %335
br label %339
339: ; preds = %337, %331
%340 = phi i32 [ 0, %337 ], [ %333, %331 ]
%341 = phi i32 [ %338, %337 ], [ %334, %331 ]
%342 = icmp eq i32 %319, 0
br i1 %342, label %343, label %344
343: ; preds = %339
store i32 %332, i32* %304
store i32 %341, i32* %306
store i32 %340, i32* %322
store i32 0, i32* %335
br label %344
344: ; preds = %339, %343
%345 = phi i32 [ 0, %343 ], [ %340, %339 ]
%346 = phi i32 [ %340, %343 ], [ %341, %339 ]
%347 = phi i32 [ %332, %343 ], [ 1, %339 ]
%348 = phi i32 [ %341, %343 ], [ %332, %339 ]
%349 = icmp eq i32 %348, 0
br i1 %349, label %350, label %351
350: ; preds = %344
store i32 %346, i32* %306
store i32 %345, i32* %322
store i32 0, i32* %335
br label %351
351: ; preds = %344, %350
%352 = phi i32 [ %346, %350 ], [ %348, %344 ]
%353 = phi i32 [ 0, %350 ], [ %345, %344 ]
%354 = phi i32 [ %345, %350 ], [ %346, %344 ]
%355 = icmp eq i32 %354, 0
br i1 %355, label %356, label %357
356: ; preds = %351
store i32 %353, i32* %322
store i32 0, i32* %335
br label %357
357: ; preds = %351, %356
%358 = phi i32 [ %353, %351 ], [ 0, %356 ]
%359 = phi i32 [ %354, %351 ], [ %353, %356 ]
%360 = icmp eq i32 %347, 0
br i1 %360, label %361, label %362
361: ; preds = %357
store i32 %352, i32* %304
store i32 %359, i32* %306
store i32 %358, i32* %322
store i32 0, i32* %335
br label %362
362: ; preds = %357, %361
%363 = phi i32 [ 0, %361 ], [ %358, %357 ]
%364 = phi i32 [ %358, %361 ], [ %359, %357 ]
%365 = phi i32 [ %359, %361 ], [ %352, %357 ]
%366 = icmp eq i32 %365, 0
br i1 %366, label %367, label %368
367: ; preds = %362
store i32 %364, i32* %306
store i32 %363, i32* %322
store i32 0, i32* %335
br label %368
368: ; preds = %362, %367
%369 = phi i32 [ 0, %367 ], [ %363, %362 ]
%370 = phi i32 [ %363, %367 ], [ %364, %362 ]
%371 = icmp eq i32 %370, 0
br i1 %371, label %372, label %373
372: ; preds = %368
store i32 %369, i32* %322
store i32 0, i32* %335
br label %373
373: ; preds = %372, %368
%374 = add nuw nsw i64 %302, 1
%375 = icmp eq i64 %374, 4
br i1 %375, label %376, label %301
376: ; preds = %373
%377 = icmp ne i32 %233, %236
%378 = or i1 %232, %377
%379 = icmp ne i32 %234, %233
%380 = or i1 %235, %379
%381 = select i1 %378, i1 %380, i1 false
%382 = icmp ne i32 %185, %234
%383 = or i1 %186, %382
%384 = select i1 %381, i1 %383, i1 false
%385 = select i1 %384, i32 %237, i32 1
ret i32 %385
}