int main() {
  int currentBlock[16][16];
  int blockSoFar[16][16];
  int prev[32][32];
  int mx = 4;
  int my = 4;
  int bx = 4;
  int by = 4;
  int diff = 0;
  int localDiff;
  int y;
  int x;
  int yHalf;
  int xHalf;
  int fy;
  int fx;
  int lumMotionBlock[16][16];
  int checksum;
  for (y = 0; y < 16; y++) {
    for (x = 0; x < 16; x++) {
      currentBlock[x][y] = x + (1 << (16 - 2));
      blockSoFar[x][y] = x + y + (1 << (16 - 2));
    }
  }
  for (y = 0; y < 32; y++) {
    for (x = 0; x < 32; x++) {
      prev[x][y] = x + y + (1 << (16 - 2));
    }
  }
  xHalf = ((((mx) < 0) ? -(mx) : (mx)) % 2 == 1);
  yHalf = ((((my) < 0) ? -(my) : (my)) % 2 == 1);
  {
    fy = (by)*8 + (my / 2);
    fx = (bx)*8 + (mx / 2);
  };
  if (xHalf) {
    if (mx < 0) {
      fx--;
    }
    if (yHalf) {
      if (my < 0) {
        fy--;
      }
    } else if (yHalf) {
      if (my < 0) {
        fy--;
      }
    }
  }
  diff = 0;
  if (fx > 16)
    fx = 16;
  if (fy > 16)
    fy = 16;
  for (y = 0; y < 16; y++)
    for (x = 0; x < 16; x++)
      lumMotionBlock[y][x] = prev[y + fy][x + fx];
  for (y = 0; y < 16; y++)
    for (x = 0; x < 16; x++) {
      localDiff = ((lumMotionBlock[y][x] + blockSoFar[y][x] + 1) >> 1) -
                  currentBlock[y][x];
      diff += (((localDiff) < 0) ? -(localDiff) : (localDiff));
    }
  checksum = diff;
  if (checksum == 6016) {
    return 0xbadbeef;
  } else {
    return 0xbad;
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1be0,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x4,-0x1814(%rbp)
movl   $0x4,-0x1818(%rbp)
movl   $0x4,-0x181c(%rbp)
movl   $0x4,-0x1820(%rbp)
movl   $0x0,-0x1824(%rbp)
movl   $0x0,-0x182c(%rbp)
cmpl   $0x10,-0x182c(%rbp)
jge    11fb <main+0xfb>
movl   $0x0,-0x1830(%rbp)
cmpl   $0x10,-0x1830(%rbp)
jge    11e2 <main+0xe2>
mov    -0x1830(%rbp),%edx
add    $0x4000,%edx
movslq -0x1830(%rbp),%rcx
lea    -0x410(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x182c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x1830(%rbp),%edx
add    -0x182c(%rbp),%edx
add    $0x4000,%edx
movslq -0x1830(%rbp),%rcx
lea    -0x810(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x182c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x1830(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1830(%rbp)
jmp    1165 <main+0x65>
jmp    11e7 <main+0xe7>
mov    -0x182c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x182c(%rbp)
jmp    114e <main+0x4e>
movl   $0x0,-0x182c(%rbp)
cmpl   $0x20,-0x182c(%rbp)
jge    1287 <main+0x187>
movl   $0x0,-0x1830(%rbp)
cmpl   $0x20,-0x1830(%rbp)
jge    126e <main+0x16e>
mov    -0x1830(%rbp),%edx
add    -0x182c(%rbp),%edx
add    $0x4000,%edx
movslq -0x1830(%rbp),%rcx
lea    -0x1810(%rbp),%rax
shl    $0x7,%rcx
add    %rcx,%rax
movslq -0x182c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x1830(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1830(%rbp)
jmp    121c <main+0x11c>
jmp    1273 <main+0x173>
mov    -0x182c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x182c(%rbp)
jmp    1205 <main+0x105>
cmpl   $0x0,-0x1814(%rbp)
jge    12a7 <main+0x1a7>
xor    %eax,%eax
sub    -0x1814(%rbp),%eax
mov    %eax,-0x1c48(%rbp)
jmp    12b3 <main+0x1b3>
mov    -0x1814(%rbp),%eax
mov    %eax,-0x1c48(%rbp)
mov    -0x1c48(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x1838(%rbp)
cmpl   $0x0,-0x1818(%rbp)
jge    12f2 <main+0x1f2>
xor    %eax,%eax
sub    -0x1818(%rbp),%eax
mov    %eax,-0x1c4c(%rbp)
jmp    12fe <main+0x1fe>
mov    -0x1818(%rbp),%eax
mov    %eax,-0x1c4c(%rbp)
mov    -0x1c4c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x1834(%rbp)
mov    -0x1820(%rbp),%eax
shl    $0x3,%eax
mov    %eax,-0x1c54(%rbp)
mov    -0x1818(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x1c54(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x183c(%rbp)
mov    -0x181c(%rbp),%eax
shl    $0x3,%eax
mov    %eax,-0x1c50(%rbp)
mov    -0x1814(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x1c50(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x1840(%rbp)
cmpl   $0x0,-0x1838(%rbp)
je     1406 <main+0x306>
cmpl   $0x0,-0x1814(%rbp)
jge    13a0 <main+0x2a0>
mov    -0x1840(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1840(%rbp)
cmpl   $0x0,-0x1834(%rbp)
je     13ce <main+0x2ce>
cmpl   $0x0,-0x1818(%rbp)
jge    13c9 <main+0x2c9>
mov    -0x183c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x183c(%rbp)
jmp    1401 <main+0x301>
cmpl   $0x0,-0x1834(%rbp)
je     13fc <main+0x2fc>
cmpl   $0x0,-0x1818(%rbp)
jge    13f7 <main+0x2f7>
mov    -0x183c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x183c(%rbp)
jmp    13fc <main+0x2fc>
jmp    1401 <main+0x301>
jmp    1406 <main+0x306>
movl   $0x0,-0x1824(%rbp)
cmpl   $0x10,-0x1840(%rbp)
jle    1427 <main+0x327>
movl   $0x10,-0x1840(%rbp)
cmpl   $0x10,-0x183c(%rbp)
jle    143e <main+0x33e>
movl   $0x10,-0x183c(%rbp)
movl   $0x0,-0x182c(%rbp)
cmpl   $0x10,-0x182c(%rbp)
jge    14e7 <main+0x3e7>
movl   $0x0,-0x1830(%rbp)
cmpl   $0x10,-0x1830(%rbp)
jge    14ce <main+0x3ce>
mov    -0x182c(%rbp),%eax
add    -0x183c(%rbp),%eax
movslq %eax,%rcx
lea    -0x1810(%rbp),%rax
shl    $0x7,%rcx
add    %rcx,%rax
mov    -0x1830(%rbp),%ecx
add    -0x1840(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
movslq -0x182c(%rbp),%rcx
lea    -0x1c40(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x1830(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x1830(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1830(%rbp)
jmp    145f <main+0x35f>
jmp    14d3 <main+0x3d3>
mov    -0x182c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x182c(%rbp)
jmp    1448 <main+0x348>
movl   $0x0,-0x182c(%rbp)
cmpl   $0x10,-0x182c(%rbp)
jge    15e9 <main+0x4e9>
movl   $0x0,-0x1830(%rbp)
cmpl   $0x10,-0x1830(%rbp)
jge    15d0 <main+0x4d0>
movslq -0x182c(%rbp),%rcx
lea    -0x1c40(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x1830(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
movslq -0x182c(%rbp),%rdx
lea    -0x810(%rbp),%rcx
shl    $0x6,%rdx
add    %rdx,%rcx
movslq -0x1830(%rbp),%rdx
add    (%rcx,%rdx,4),%eax
add    $0x1,%eax
sar    $0x1,%eax
movslq -0x182c(%rbp),%rdx
lea    -0x410(%rbp),%rcx
shl    $0x6,%rdx
add    %rdx,%rcx
movslq -0x1830(%rbp),%rdx
sub    (%rcx,%rdx,4),%eax
mov    %eax,-0x1828(%rbp)
cmpl   $0x0,-0x1828(%rbp)
jge    159e <main+0x49e>
xor    %eax,%eax
sub    -0x1828(%rbp),%eax
mov    %eax,-0x1c58(%rbp)
jmp    15aa <main+0x4aa>
mov    -0x1828(%rbp),%eax
mov    %eax,-0x1c58(%rbp)
mov    -0x1c58(%rbp),%eax
add    -0x1824(%rbp),%eax
mov    %eax,-0x1824(%rbp)
mov    -0x1830(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1830(%rbp)
jmp    1508 <main+0x408>
jmp    15d5 <main+0x4d5>
mov    -0x182c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x182c(%rbp)
jmp    14f1 <main+0x3f1>
mov    -0x1824(%rbp),%eax
mov    %eax,-0x1c44(%rbp)
cmpl   $0x1780,-0x1c44(%rbp)
jne    1611 <main+0x511>
movl   $0xbadbeef,-0x4(%rbp)
jmp    1618 <main+0x518>
movl   $0xbad,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1be0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x1b88,%rsp
xor    %eax,%eax
nopl   0x0(%rax)
movl   $0x4000,0x780(%rsp,%rax,4)
lea    0x4000(%rax),%ecx
mov    %ecx,0x380(%rsp,%rax,4)
movl   $0x4001,0x7c0(%rsp,%rax,4)
lea    0x4001(%rax),%ecx
mov    %ecx,0x3c0(%rsp,%rax,4)
movl   $0x4002,0x800(%rsp,%rax,4)
lea    0x4002(%rax),%ecx
mov    %ecx,0x400(%rsp,%rax,4)
movl   $0x4003,0x840(%rsp,%rax,4)
lea    0x4003(%rax),%ecx
mov    %ecx,0x440(%rsp,%rax,4)
movl   $0x4004,0x880(%rsp,%rax,4)
lea    0x4004(%rax),%ecx
mov    %ecx,0x480(%rsp,%rax,4)
movl   $0x4005,0x8c0(%rsp,%rax,4)
lea    0x4005(%rax),%ecx
mov    %ecx,0x4c0(%rsp,%rax,4)
movl   $0x4006,0x900(%rsp,%rax,4)
lea    0x4006(%rax),%ecx
mov    %ecx,0x500(%rsp,%rax,4)
movl   $0x4007,0x940(%rsp,%rax,4)
lea    0x4007(%rax),%ecx
mov    %ecx,0x540(%rsp,%rax,4)
movl   $0x4008,0x980(%rsp,%rax,4)
lea    0x4008(%rax),%ecx
mov    %ecx,0x580(%rsp,%rax,4)
movl   $0x4009,0x9c0(%rsp,%rax,4)
lea    0x4009(%rax),%ecx
mov    %ecx,0x5c0(%rsp,%rax,4)
movl   $0x400a,0xa00(%rsp,%rax,4)
lea    0x400a(%rax),%ecx
mov    %ecx,0x600(%rsp,%rax,4)
movl   $0x400b,0xa40(%rsp,%rax,4)
lea    0x400b(%rax),%ecx
mov    %ecx,0x640(%rsp,%rax,4)
movl   $0x400c,0xa80(%rsp,%rax,4)
lea    0x400c(%rax),%ecx
mov    %ecx,0x680(%rsp,%rax,4)
movl   $0x400d,0xac0(%rsp,%rax,4)
lea    0x400d(%rax),%ecx
mov    %ecx,0x6c0(%rsp,%rax,4)
movl   $0x400e,0xb00(%rsp,%rax,4)
lea    0x400e(%rax),%ecx
mov    %ecx,0x700(%rsp,%rax,4)
movl   $0x400f,0xb40(%rsp,%rax,4)
lea    0x400f(%rax),%ecx
mov    %ecx,0x740(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0x10,%rax
jne    1110 <main+0x10>
lea    0xd00(%rsp),%rax
xor    %ecx,%ecx
nopl   0x0(%rax,%rax,1)
mov    $0xffffffffffffffe0,%rdx
mov    %rax,%rsi
nopw   0x0(%rax,%rax,1)
lea    (%rcx,%rdx,1),%edi
add    $0x4020,%edi
mov    %edi,-0x180(%rsi)
lea    0x4021(%rcx,%rdx,1),%edi
mov    %edi,-0x100(%rsi)
lea    0x4022(%rcx,%rdx,1),%edi
mov    %edi,-0x80(%rsi)
lea    (%rcx,%rdx,1),%edi
add    $0x4023,%edi
mov    %edi,(%rsi)
add    $0x200,%rsi
add    $0x4,%rdx
jne    12c0 <main+0x1c0>
add    $0x1,%rcx
add    $0x4,%rax
cmp    $0x20,%rcx
jne    12b0 <main+0x1b0>
movaps 0x13c0(%rsp),%xmm0
movaps 0x13d0(%rsp),%xmm1
movaps 0x13e0(%rsp),%xmm2
movaps 0x13f0(%rsp),%xmm3
movaps %xmm3,-0x50(%rsp)
movaps %xmm2,-0x60(%rsp)
movaps %xmm1,-0x70(%rsp)
movaps %xmm0,-0x80(%rsp)
movaps 0x1440(%rsp),%xmm0
movaps %xmm0,-0x40(%rsp)
movaps 0x1450(%rsp),%xmm0
movaps %xmm0,-0x30(%rsp)
movaps 0x1460(%rsp),%xmm0
movaps %xmm0,-0x20(%rsp)
movaps 0x1470(%rsp),%xmm0
movaps %xmm0,-0x10(%rsp)
movaps 0x14c0(%rsp),%xmm0
movaps %xmm0,(%rsp)
movaps 0x14d0(%rsp),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0x14e0(%rsp),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0x14f0(%rsp),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0x1540(%rsp),%xmm0
movaps 0x1550(%rsp),%xmm1
movaps 0x1560(%rsp),%xmm2
movaps 0x1570(%rsp),%xmm3
movaps %xmm3,0x70(%rsp)
movaps %xmm2,0x60(%rsp)
movaps %xmm1,0x50(%rsp)
movaps %xmm0,0x40(%rsp)
movaps 0x15f0(%rsp),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0x15e0(%rsp),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0x15d0(%rsp),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0x15c0(%rsp),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0x1670(%rsp),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0x1660(%rsp),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0x1650(%rsp),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0x1640(%rsp),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0x16c0(%rsp),%xmm0
movaps 0x16d0(%rsp),%xmm1
movaps 0x16e0(%rsp),%xmm2
movaps 0x16f0(%rsp),%xmm3
movaps %xmm3,0x130(%rsp)
movaps %xmm2,0x120(%rsp)
movaps %xmm1,0x110(%rsp)
movaps %xmm0,0x100(%rsp)
movaps 0x1740(%rsp),%xmm0
movaps 0x1750(%rsp),%xmm1
movaps 0x1760(%rsp),%xmm2
movaps 0x1770(%rsp),%xmm3
movaps %xmm3,0x170(%rsp)
movaps %xmm2,0x160(%rsp)
movaps %xmm1,0x150(%rsp)
movaps %xmm0,0x140(%rsp)
movaps 0x17c0(%rsp),%xmm0
movaps 0x17d0(%rsp),%xmm1
movaps 0x17e0(%rsp),%xmm2
movaps 0x17f0(%rsp),%xmm3
movaps %xmm3,0x1b0(%rsp)
movaps %xmm2,0x1a0(%rsp)
movaps %xmm1,0x190(%rsp)
movaps %xmm0,0x180(%rsp)
movaps 0x1840(%rsp),%xmm0
movaps 0x1850(%rsp),%xmm1
movaps 0x1860(%rsp),%xmm2
movaps 0x1870(%rsp),%xmm3
movaps %xmm3,0x1f0(%rsp)
movaps %xmm2,0x1e0(%rsp)
movaps %xmm1,0x1d0(%rsp)
movaps %xmm0,0x1c0(%rsp)
movaps 0x18c0(%rsp),%xmm0
movaps 0x18d0(%rsp),%xmm1
movaps 0x18e0(%rsp),%xmm2
movaps 0x18f0(%rsp),%xmm3
movaps %xmm3,0x230(%rsp)
movaps %xmm2,0x220(%rsp)
movaps %xmm1,0x210(%rsp)
movaps %xmm0,0x200(%rsp)
movaps 0x1940(%rsp),%xmm0
movaps 0x1950(%rsp),%xmm1
movaps 0x1960(%rsp),%xmm2
movaps 0x1970(%rsp),%xmm3
movaps %xmm3,0x270(%rsp)
movaps %xmm2,0x260(%rsp)
movaps %xmm1,0x250(%rsp)
movaps %xmm0,0x240(%rsp)
movaps 0x19c0(%rsp),%xmm0
movaps 0x19d0(%rsp),%xmm1
movaps 0x19e0(%rsp),%xmm2
movaps 0x19f0(%rsp),%xmm3
movaps %xmm3,0x2b0(%rsp)
movaps %xmm2,0x2a0(%rsp)
movaps %xmm1,0x290(%rsp)
movaps %xmm0,0x280(%rsp)
movaps 0x1a40(%rsp),%xmm0
movaps 0x1a50(%rsp),%xmm1
movaps 0x1a60(%rsp),%xmm2
movaps 0x1a70(%rsp),%xmm3
movaps %xmm3,0x2f0(%rsp)
movaps %xmm2,0x2e0(%rsp)
movaps %xmm1,0x2d0(%rsp)
movaps %xmm0,0x2c0(%rsp)
movaps 0x1ac0(%rsp),%xmm0
movaps 0x1ad0(%rsp),%xmm1
movaps 0x1ae0(%rsp),%xmm2
movaps 0x1af0(%rsp),%xmm3
movaps %xmm3,0x330(%rsp)
movaps %xmm2,0x320(%rsp)
movaps %xmm1,0x310(%rsp)
movaps %xmm0,0x300(%rsp)
movdqa 0x1b40(%rsp),%xmm0
movdqa 0x1b50(%rsp),%xmm1
movdqa 0x1b60(%rsp),%xmm2
movdqa 0x1b70(%rsp),%xmm3
movdqa %xmm3,0x370(%rsp)
movdqa %xmm2,0x360(%rsp)
movdqa %xmm1,0x350(%rsp)
movdqa %xmm0,0x340(%rsp)
xor    %eax,%eax
pcmpeqd %xmm0,%xmm0
xor    %ecx,%ecx
nopl   0x0(%rax,%rax,1)
movd   %ecx,%xmm5
movdqa -0x80(%rsp,%rax,1),%xmm3
movdqa -0x70(%rsp,%rax,1),%xmm4
movdqa -0x60(%rsp,%rax,1),%xmm2
movdqa -0x50(%rsp,%rax,1),%xmm1
paddd  0x380(%rsp,%rax,1),%xmm3
psubd  %xmm0,%xmm3
psrad  $0x1,%xmm3
psubd  0x780(%rsp,%rax,1),%xmm3
movdqa %xmm3,%xmm6
psrad  $0x1f,%xmm6
paddd  %xmm6,%xmm3
pxor   %xmm6,%xmm3
paddd  0x390(%rsp,%rax,1),%xmm4
psubd  %xmm0,%xmm4
psrad  $0x1,%xmm4
psubd  0x790(%rsp,%rax,1),%xmm4
paddd  %xmm5,%xmm3
movdqa %xmm4,%xmm5
psrad  $0x1f,%xmm5
paddd  %xmm5,%xmm4
pxor   %xmm5,%xmm4
paddd  0x3a0(%rsp,%rax,1),%xmm2
psubd  %xmm0,%xmm2
psrad  $0x1,%xmm2
psubd  0x7a0(%rsp,%rax,1),%xmm2
movdqa %xmm2,%xmm5
psrad  $0x1f,%xmm5
paddd  %xmm5,%xmm2
pxor   %xmm5,%xmm2
paddd  %xmm4,%xmm2
paddd  0x3b0(%rsp,%rax,1),%xmm1
psubd  %xmm0,%xmm1
psrad  $0x1,%xmm1
psubd  0x7b0(%rsp,%rax,1),%xmm1
paddd  %xmm3,%xmm2
movdqa %xmm1,%xmm3
psrad  $0x1f,%xmm3
paddd  %xmm3,%xmm1
pxor   %xmm3,%xmm1
paddd  %xmm2,%xmm1
pshufd $0xee,%xmm1,%xmm2
paddd  %xmm1,%xmm2
pshufd $0x55,%xmm2,%xmm1
paddd  %xmm2,%xmm1
movd   %xmm1,%ecx
add    $0x40,%rax
cmp    $0x400,%rax
jne    16f0 <main+0x5f0>
cmp    $0x1780,%ecx
mov    $0xbadbeef,%ecx
mov    $0xbad,%eax
cmove  %ecx,%eax
add    $0x1b88,%rsp
ret

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

LLVM IR (-O2):
define i32 @main() {
%1 = alloca [16 x [16 x i32]]
%2 = alloca [16 x [16 x i32]]
%3 = alloca [32 x [32 x i32]]
%4 = alloca [16 x [16 x i32]]
%5 = bitcast [16 x [16 x i32]]* %1 to i8*
%6 = bitcast [16 x [16 x i32]]* %2 to i8*
%7 = bitcast [32 x [32 x i32]]* %3 to i8*
%8 = bitcast [16 x [16 x i32]]* %4 to i8*
br label %9
9: ; preds = %0, %9
%10 = phi i64 [ 0, %0 ], [ %75, %9 ]
%11 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 0, i64 %10
store i32 16384, i32* %11
%12 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 0, i64 %10
%13 = trunc i64 %10 to i32
%14 = add i32 %13, 16384
store i32 %14, i32* %12
%15 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 1, i64 %10
store i32 16385, i32* %15
%16 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 1, i64 %10
%17 = trunc i64 %10 to i32
%18 = add i32 %17, 16385
store i32 %18, i32* %16
%19 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 2, i64 %10
store i32 16386, i32* %19
%20 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 2, i64 %10
%21 = trunc i64 %10 to i32
%22 = add i32 %21, 16386
store i32 %22, i32* %20
%23 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 3, i64 %10
store i32 16387, i32* %23
%24 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 3, i64 %10
%25 = trunc i64 %10 to i32
%26 = add i32 %25, 16387
store i32 %26, i32* %24
%27 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 4, i64 %10
store i32 16388, i32* %27
%28 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 4, i64 %10
%29 = trunc i64 %10 to i32
%30 = add i32 %29, 16388
store i32 %30, i32* %28
%31 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 5, i64 %10
store i32 16389, i32* %31
%32 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 5, i64 %10
%33 = trunc i64 %10 to i32
%34 = add i32 %33, 16389
store i32 %34, i32* %32
%35 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 6, i64 %10
store i32 16390, i32* %35
%36 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 6, i64 %10
%37 = trunc i64 %10 to i32
%38 = add i32 %37, 16390
store i32 %38, i32* %36
%39 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 7, i64 %10
store i32 16391, i32* %39
%40 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 7, i64 %10
%41 = trunc i64 %10 to i32
%42 = add i32 %41, 16391
store i32 %42, i32* %40
%43 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 8, i64 %10
store i32 16392, i32* %43
%44 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 8, i64 %10
%45 = trunc i64 %10 to i32
%46 = add i32 %45, 16392
store i32 %46, i32* %44
%47 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 9, i64 %10
store i32 16393, i32* %47
%48 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 9, i64 %10
%49 = trunc i64 %10 to i32
%50 = add i32 %49, 16393
store i32 %50, i32* %48
%51 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 10, i64 %10
store i32 16394, i32* %51
%52 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 10, i64 %10
%53 = trunc i64 %10 to i32
%54 = add i32 %53, 16394
store i32 %54, i32* %52
%55 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 11, i64 %10
store i32 16395, i32* %55
%56 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 11, i64 %10
%57 = trunc i64 %10 to i32
%58 = add i32 %57, 16395
store i32 %58, i32* %56
%59 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 12, i64 %10
store i32 16396, i32* %59
%60 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 12, i64 %10
%61 = trunc i64 %10 to i32
%62 = add i32 %61, 16396
store i32 %62, i32* %60
%63 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 13, i64 %10
store i32 16397, i32* %63
%64 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 13, i64 %10
%65 = trunc i64 %10 to i32
%66 = add i32 %65, 16397
store i32 %66, i32* %64
%67 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 14, i64 %10
store i32 16398, i32* %67
%68 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 14, i64 %10
%69 = trunc i64 %10 to i32
%70 = add i32 %69, 16398
store i32 %70, i32* %68
%71 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 15, i64 %10
store i32 16399, i32* %71
%72 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 15, i64 %10
%73 = trunc i64 %10 to i32
%74 = add i32 %73, 16399
store i32 %74, i32* %72
%75 = add nuw nsw i64 %10, 1
%76 = icmp eq i64 %75, 16
br i1 %76, label %77, label %9
77: ; preds = %9, %99
%78 = phi i64 [ %100, %99 ], [ 0, %9 ]
%79 = add nuw nsw i64 %78, 16384
br label %80
80: ; preds = %80, %77
%81 = phi i64 [ 0, %77 ], [ %97, %80 ]
%82 = add nuw nsw i64 %79, %81
%83 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 %81, i64 %78
%84 = trunc i64 %82 to i32
store i32 %84, i32* %83
%85 = or i64 %81, 1
%86 = add nuw nsw i64 %79, %85
%87 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 %85, i64 %78
%88 = trunc i64 %86 to i32
store i32 %88, i32* %87
%89 = or i64 %81, 2
%90 = add nuw nsw i64 %79, %89
%91 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 %89, i64 %78
%92 = trunc i64 %90 to i32
store i32 %92, i32* %91
%93 = or i64 %81, 3
%94 = add nuw nsw i64 %79, %93
%95 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 %93, i64 %78
%96 = trunc i64 %94 to i32
store i32 %96, i32* %95
%97 = add nuw nsw i64 %81, 4
%98 = icmp eq i64 %97, 32
br i1 %98, label %99, label %80
99: ; preds = %80
%100 = add nuw nsw i64 %78, 1
%101 = icmp eq i64 %100, 32
br i1 %101, label %102, label %77
102: ; preds = %99
%103 = bitcast [16 x [16 x i32]]* %4 to i8*
%104 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 16, i64 16
%105 = bitcast i32* %104 to i8*
%106 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 1, i64 0
%107 = bitcast i32* %106 to i8*
%108 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 17, i64 16
%109 = bitcast i32* %108 to i8*
%110 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 2, i64 0
%111 = bitcast i32* %110 to i8*
%112 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 18, i64 16
%113 = bitcast i32* %112 to i8*
%114 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 3, i64 0
%115 = bitcast i32* %114 to i8*
%116 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 19, i64 16
%117 = bitcast i32* %116 to i8*
%118 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 4, i64 0
%119 = bitcast i32* %118 to i8*
%120 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 20, i64 16
%121 = bitcast i32* %120 to i8*
%122 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 5, i64 0
%123 = bitcast i32* %122 to i8*
%124 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 21, i64 16
%125 = bitcast i32* %124 to i8*
%126 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 6, i64 0
%127 = bitcast i32* %126 to i8*
%128 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 22, i64 16
%129 = bitcast i32* %128 to i8*
%130 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 7, i64 0
%131 = bitcast i32* %130 to i8*
%132 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 23, i64 16
%133 = bitcast i32* %132 to i8*
%134 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 8, i64 0
%135 = bitcast i32* %134 to i8*
%136 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 24, i64 16
%137 = bitcast i32* %136 to i8*
%138 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 9, i64 0
%139 = bitcast i32* %138 to i8*
%140 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 25, i64 16
%141 = bitcast i32* %140 to i8*
%142 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 10, i64 0
%143 = bitcast i32* %142 to i8*
%144 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 26, i64 16
%145 = bitcast i32* %144 to i8*
%146 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 11, i64 0
%147 = bitcast i32* %146 to i8*
%148 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 27, i64 16
%149 = bitcast i32* %148 to i8*
%150 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 12, i64 0
%151 = bitcast i32* %150 to i8*
%152 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 28, i64 16
%153 = bitcast i32* %152 to i8*
%154 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 13, i64 0
%155 = bitcast i32* %154 to i8*
%156 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 29, i64 16
%157 = bitcast i32* %156 to i8*
%158 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 14, i64 0
%159 = bitcast i32* %158 to i8*
%160 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 30, i64 16
%161 = bitcast i32* %160 to i8*
%162 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 15, i64 0
%163 = bitcast i32* %162 to i8*
%164 = getelementptr inbounds [32 x [32 x i32]], [32 x [32 x i32]]* %3, i64 0, i64 31, i64 16
%165 = bitcast i32* %164 to i8*
br label %166
166: ; preds = %166, %102
%167 = phi i64 [ 0, %102 ], [ %231, %166 ]
%168 = phi i32 [ 0, %102 ], [ %230, %166 ]
%169 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %168, i64 0
%170 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 %167, i64 0
%171 = bitcast i32* %170 to <4 x i32>*
%172 = load <4 x i32>, <4 x i32>* %171
%173 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 %167, i64 0
%174 = bitcast i32* %173 to <4 x i32>*
%175 = load <4 x i32>, <4 x i32>* %174
%176 = add <4 x i32> %172, <i32 1, i32 1, i32 1, i32 1>
%177 = add <4 x i32> %176, %175
%178 = ashr <4 x i32> %177, <i32 1, i32 1, i32 1, i32 1>
%179 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 %167, i64 0
%180 = bitcast i32* %179 to <4 x i32>*
%181 = load <4 x i32>, <4 x i32>* %180
%182 = sub nsw <4 x i32> %178, %181
%183 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %182, i1 true)
%184 = add <4 x i32> %183, %169
%185 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 %167, i64 4
%186 = bitcast i32* %185 to <4 x i32>*
%187 = load <4 x i32>, <4 x i32>* %186
%188 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 %167, i64 4
%189 = bitcast i32* %188 to <4 x i32>*
%190 = load <4 x i32>, <4 x i32>* %189
%191 = add <4 x i32> %187, <i32 1, i32 1, i32 1, i32 1>
%192 = add <4 x i32> %191, %190
%193 = ashr <4 x i32> %192, <i32 1, i32 1, i32 1, i32 1>
%194 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 %167, i64 4
%195 = bitcast i32* %194 to <4 x i32>*
%196 = load <4 x i32>, <4 x i32>* %195
%197 = sub nsw <4 x i32> %193, %196
%198 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %197, i1 true)
%199 = add <4 x i32> %198, %184
%200 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 %167, i64 8
%201 = bitcast i32* %200 to <4 x i32>*
%202 = load <4 x i32>, <4 x i32>* %201
%203 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 %167, i64 8
%204 = bitcast i32* %203 to <4 x i32>*
%205 = load <4 x i32>, <4 x i32>* %204
%206 = add <4 x i32> %202, <i32 1, i32 1, i32 1, i32 1>
%207 = add <4 x i32> %206, %205
%208 = ashr <4 x i32> %207, <i32 1, i32 1, i32 1, i32 1>
%209 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 %167, i64 8
%210 = bitcast i32* %209 to <4 x i32>*
%211 = load <4 x i32>, <4 x i32>* %210
%212 = sub nsw <4 x i32> %208, %211
%213 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %212, i1 true)
%214 = add <4 x i32> %213, %199
%215 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %4, i64 0, i64 %167, i64 12
%216 = bitcast i32* %215 to <4 x i32>*
%217 = load <4 x i32>, <4 x i32>* %216
%218 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %2, i64 0, i64 %167, i64 12
%219 = bitcast i32* %218 to <4 x i32>*
%220 = load <4 x i32>, <4 x i32>* %219
%221 = add <4 x i32> %217, <i32 1, i32 1, i32 1, i32 1>
%222 = add <4 x i32> %221, %220
%223 = ashr <4 x i32> %222, <i32 1, i32 1, i32 1, i32 1>
%224 = getelementptr inbounds [16 x [16 x i32]], [16 x [16 x i32]]* %1, i64 0, i64 %167, i64 12
%225 = bitcast i32* %224 to <4 x i32>*
%226 = load <4 x i32>, <4 x i32>* %225
%227 = sub nsw <4 x i32> %223, %226
%228 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %227, i1 true)
%229 = add <4 x i32> %228, %214
%230 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %229)
%231 = add nuw nsw i64 %167, 1
%232 = icmp eq i64 %231, 16
br i1 %232, label %233, label %166
233: ; preds = %166
%234 = icmp eq i32 %230, 6016
%235 = select i1 %234, i32 195935983, i32 2989
ret i32 %235
}