void stencil_op(long iter, long I, long J,
                long A[((4L - 2L) + 2L) * 16L][((4L - 2L) + 2L) * 16L]) {
  long j;
  if (I + 1L == 1 * 16L) {
    for (j = 1; j <= 16L; j++) {
      if (A[0][j] != ((I + 0) * ((4L - 2L) + 2L) * (16L) + (J + j))) {
        printf("Invalid north boundary halo\n");
        printf("it %li: [%li][%li] [%i][%li], %li != %li\n", iter, I, J, 0, j,
               A[0][j], ((I + 0) * ((4L - 2L) + 2L) * (16L) + (J + j)));
        abort();
      }
    }
  } else {
    for (j = 1; j <= 16L; j++) {
      if (A[0][j] !=
          ((I + 0) * ((4L - 2L) + 2L) * (16L) + (J + j)) +
              (((4L - 2L) + 2L) * ((4L - 2L) + 2) * 16L * 16L) * (iter + 1L)) {
        printf("Invalid north inner halo\n");
        printf("it %li: [%li][%li] [%i][%li], %li != %li\n", iter, I, J, 0, j,
               A[0][j],
               ((I + 0) * ((4L - 2L) + 2L) * (16L) + (J + j)) +
                   (((4L - 2L) + 2L) * ((4L - 2L) + 2) * 16L * 16L) *
                       (iter + 1L));
        abort();
      }
    }
  }
  if (I + 1L == (1 + (4L - 2L) - 1) * 16L) {
    for (j = 1; j <= 16L; j++) {
      if (A[16L + 1][j] !=
          ((I + 16L + 1) * ((4L - 2L) + 2L) * (16L) + (J + j))) {
        printf("Invalid south boundary halo\n");
        printf("it %li: [%li][%li] [%li][%li], %li != %li\n", iter, I, J,
               16L + 1, j, A[16L + 1][j],
               ((I + 16L + 1) * ((4L - 2L) + 2L) * (16L) + (J + j)));
        abort();
      }
    }
  } else {
    for (j = 1; j <= 16L; j++) {
      if (A[16L + 1][j] !=
          ((I + 16L + 1) * ((4L - 2L) + 2L) * (16L) + (J + j)) +
              (((4L - 2L) + 2L) * ((4L - 2L) + 2) * 16L * 16L) * iter) {
        printf("Invalid south inner halo\n");
        printf("it %li: [%li][%li] [%li][%li], %li != %li\n", iter, I, J,
               16L + 1, j, A[16L + 1][j],
               ((I + 16L + 1) * ((4L - 2L) + 2L) * (16L) + (J + j)) +
                   (((4L - 2L) + 2L) * ((4L - 2L) + 2) * 16L * 16L) * iter);
        abort();
      }
    }
  }
  long i;
  if (J + 1L == 1 * 16L) {
    for (i = 1; i <= 16L; i++) {
      if (A[i][0] != ((I + i) * ((4L - 2L) + 2L) * (16L) + (J + 0))) {
        printf("Invalid west boundary halo\n");
        printf("it %li: [%li][%li] [%li][%i], %li != %li\n", iter, I, J, i, 0,
               A[i][0], ((I + i) * ((4L - 2L) + 2L) * (16L) + (J + 0)));
        abort();
      }
    }
  } else {
    for (i = 1; i <= 16L; i++) {
      if (A[i][0] !=
          ((I + i) * ((4L - 2L) + 2L) * (16L) + (J + 0)) +
              (((4L - 2L) + 2L) * ((4L - 2L) + 2) * 16L * 16L) * (iter + 1L)) {
        printf("Invalid west inner halo\n");
        printf("it %li: [%li][%li] [%li][%i], %li != %li\n", iter, I, J, i, 0,
               A[i][0],
               ((I + i) * ((4L - 2L) + 2L) * (16L) + (J + 0)) +
                   (((4L - 2L) + 2L) * ((4L - 2L) + 2) * 16L * 16L) *
                       (iter + 1L));
        abort();
      }
    }
  }
  if (J + 1L == (1 + (4L - 2L) - 1) * 16L) {
    for (i = 1; i <= 16L; i++) {
      if (A[i][16L + 1] !=
          ((I + i) * ((4L - 2L) + 2L) * (16L) + (J + 16L + 1))) {
        printf("Invalid east boundary halo\n");
        printf("it %li: [%li][%li] [%li][%li], %li != %li\n", iter, I, J, i,
               16L + 1, A[i][16L + 1],
               ((I + i) * ((4L - 2L) + 2L) * (16L) + (J + 16L + 1)));
        abort();
      }
    }
  } else {
    for (i = 1; i <= 16L; i++) {
      if (A[i][16L + 1] !=
          ((I + i) * ((4L - 2L) + 2L) * (16L) + (J + 16L + 1)) +
              (((4L - 2L) + 2L) * ((4L - 2L) + 2) * 16L * 16L) * iter) {
        printf("Invalid east inner halo\n");
        printf("it %li: [%li][%li] [%li][%li], %li != %li\n", iter, I, J, i,
               16L + 1, A[i][16L + 1],
               ((I + i) * ((4L - 2L) + 2L) * (16L) + (J + 16L + 1)) +
                   (((4L - 2L) + 2L) * ((4L - 2L) + 2) * 16L * 16L) * iter);
        abort();
      }
    }
  }
  for (i = 1; i <= 16L; i++) {
    for (j = 1; j <= 16L; j++) {
      A[i][j] += (((4L - 2L) + 2L) * ((4L - 2L) + 2) * 16L * 16L);
    }
  }
}


x86 assembly (clang, -O0):
<stencil_op>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
cmp    $0x10,%rax
jne    120c <stencil_op+0xec>
movq   $0x1,-0x28(%rbp)
cmpq   $0x10,-0x28(%rbp)
jg     1207 <stencil_op+0xe7>
mov    -0x20(%rbp),%rax
mov    -0x28(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x10(%rbp),%rcx
add    $0x0,%rcx
shl    $0x2,%rcx
shl    $0x4,%rcx
mov    -0x18(%rbp),%rdx
add    -0x28(%rbp),%rdx
add    %rdx,%rcx
cmp    %rcx,%rax
je     11f1 <stencil_op+0xd1>
lea    0xe6c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x28(%rbp),%r9
mov    -0x20(%rbp),%rax
mov    -0x28(%rbp),%rdi
mov    (%rax,%rdi,8),%r10
mov    -0x10(%rbp),%rax
add    $0x0,%rax
shl    $0x2,%rax
shl    $0x4,%rax
mov    -0x18(%rbp),%rdi
add    -0x28(%rbp),%rdi
add    %rdi,%rax
lea    0xe44(%rip),%rdi
xor    %r8d,%r8d
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <printf@plt>
call   1030 <abort@plt>
jmp    11f6 <stencil_op+0xd6>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1152 <stencil_op+0x32>
jmp    12ec <stencil_op+0x1cc>
movq   $0x1,-0x28(%rbp)
cmpq   $0x10,-0x28(%rbp)
jg     12e7 <stencil_op+0x1c7>
mov    -0x20(%rbp),%rax
mov    -0x28(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x10(%rbp),%rcx
add    $0x0,%rcx
shl    $0x2,%rcx
shl    $0x4,%rcx
mov    -0x18(%rbp),%rdx
add    -0x28(%rbp),%rdx
add    %rdx,%rcx
mov    -0x8(%rbp),%rdx
add    $0x1,%rdx
shl    $0xc,%rdx
add    %rdx,%rcx
cmp    %rcx,%rax
je     12d1 <stencil_op+0x1b1>
lea    0xde2(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x28(%rbp),%r9
mov    -0x20(%rbp),%rax
mov    -0x28(%rbp),%rdi
mov    (%rax,%rdi,8),%r10
mov    -0x10(%rbp),%rax
add    $0x0,%rax
shl    $0x2,%rax
shl    $0x4,%rax
mov    -0x18(%rbp),%rdi
add    -0x28(%rbp),%rdi
add    %rdi,%rax
mov    -0x8(%rbp),%rdi
add    $0x1,%rdi
shl    $0xc,%rdi
add    %rdi,%rax
lea    0xd64(%rip),%rdi
xor    %r8d,%r8d
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <printf@plt>
call   1030 <abort@plt>
jmp    12d6 <stencil_op+0x1b6>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1214 <stencil_op+0xf4>
jmp    12ec <stencil_op+0x1cc>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
cmp    $0x20,%rax
jne    13d3 <stencil_op+0x2b3>
movq   $0x1,-0x28(%rbp)
cmpq   $0x10,-0x28(%rbp)
jg     13ce <stencil_op+0x2ae>
mov    -0x20(%rbp),%rax
mov    -0x28(%rbp),%rcx
mov    0x2200(%rax,%rcx,8),%rax
mov    -0x10(%rbp),%rcx
add    $0x10,%rcx
add    $0x1,%rcx
shl    $0x2,%rcx
shl    $0x4,%rcx
mov    -0x18(%rbp),%rdx
add    -0x28(%rbp),%rdx
add    %rdx,%rcx
cmp    %rcx,%rax
je     13b8 <stencil_op+0x298>
lea    0xd11(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x28(%rbp),%r9
mov    -0x20(%rbp),%rax
mov    -0x28(%rbp),%rdi
mov    0x2200(%rax,%rdi,8),%r10
mov    -0x10(%rbp),%rax
add    $0x10,%rax
add    $0x1,%rax
shl    $0x2,%rax
shl    $0x4,%rax
mov    -0x18(%rbp),%rdi
add    -0x28(%rbp),%rdi
add    %rdi,%rax
lea    0xce1(%rip),%rdi
mov    $0x11,%r8d
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <printf@plt>
call   1030 <abort@plt>
jmp    13bd <stencil_op+0x29d>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1306 <stencil_op+0x1e6>
jmp    14be <stencil_op+0x39e>
movq   $0x1,-0x28(%rbp)
cmpq   $0x10,-0x28(%rbp)
jg     14b9 <stencil_op+0x399>
mov    -0x20(%rbp),%rax
mov    -0x28(%rbp),%rcx
mov    0x2200(%rax,%rcx,8),%rax
mov    -0x10(%rbp),%rcx
add    $0x10,%rcx
add    $0x1,%rcx
shl    $0x2,%rcx
shl    $0x4,%rcx
mov    -0x18(%rbp),%rdx
add    -0x28(%rbp),%rdx
add    %rdx,%rcx
mov    -0x8(%rbp),%rdx
shl    $0xc,%rdx
add    %rdx,%rcx
cmp    %rcx,%rax
je     14a3 <stencil_op+0x383>
lea    0xc79(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x28(%rbp),%r9
mov    -0x20(%rbp),%rax
mov    -0x28(%rbp),%rdi
mov    0x2200(%rax,%rdi,8),%r10
mov    -0x10(%rbp),%rax
add    $0x10,%rax
add    $0x1,%rax
shl    $0x2,%rax
shl    $0x4,%rax
mov    -0x18(%rbp),%rdi
add    -0x28(%rbp),%rdi
add    %rdi,%rax
mov    -0x8(%rbp),%rdi
shl    $0xc,%rdi
add    %rdi,%rax
lea    0xbf6(%rip),%rdi
mov    $0x11,%r8d
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <printf@plt>
call   1030 <abort@plt>
jmp    14a8 <stencil_op+0x388>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    13db <stencil_op+0x2bb>
jmp    14be <stencil_op+0x39e>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
cmp    $0x10,%rax
jne    159e <stencil_op+0x47e>
movq   $0x1,-0x30(%rbp)
cmpq   $0x10,-0x30(%rbp)
jg     1599 <stencil_op+0x479>
mov    -0x20(%rbp),%rax
mov    -0x30(%rbp),%rcx
shl    $0x9,%rcx
add    %rcx,%rax
mov    (%rax),%rax
mov    -0x10(%rbp),%rcx
add    -0x30(%rbp),%rcx
shl    $0x2,%rcx
shl    $0x4,%rcx
mov    -0x18(%rbp),%rdx
add    $0x0,%rdx
add    %rdx,%rcx
cmp    %rcx,%rax
je     1583 <stencil_op+0x463>
lea    0xba3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x20(%rbp),%rax
mov    -0x30(%rbp),%rdi
shl    $0x9,%rdi
add    %rdi,%rax
mov    (%rax),%r10
mov    -0x10(%rbp),%rax
add    -0x30(%rbp),%rax
shl    $0x2,%rax
shl    $0x4,%rax
mov    -0x18(%rbp),%rdi
add    $0x0,%rdi
add    %rdi,%rax
lea    0xb74(%rip),%rdi
xor    %r9d,%r9d
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <printf@plt>
call   1030 <abort@plt>
jmp    1588 <stencil_op+0x468>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    14d8 <stencil_op+0x3b8>
jmp    168a <stencil_op+0x56a>
movq   $0x1,-0x30(%rbp)
cmpq   $0x10,-0x30(%rbp)
jg     1685 <stencil_op+0x565>
mov    -0x20(%rbp),%rax
mov    -0x30(%rbp),%rcx
shl    $0x9,%rcx
add    %rcx,%rax
mov    (%rax),%rax
mov    -0x10(%rbp),%rcx
add    -0x30(%rbp),%rcx
shl    $0x2,%rcx
shl    $0x4,%rcx
mov    -0x18(%rbp),%rdx
add    $0x0,%rdx
add    %rdx,%rcx
mov    -0x8(%rbp),%rdx
add    $0x1,%rdx
shl    $0xc,%rdx
add    %rdx,%rcx
cmp    %rcx,%rax
je     166f <stencil_op+0x54f>
lea    0xb0c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x20(%rbp),%rax
mov    -0x30(%rbp),%rdi
shl    $0x9,%rdi
add    %rdi,%rax
mov    (%rax),%r10
mov    -0x10(%rbp),%rax
add    -0x30(%rbp),%rax
shl    $0x2,%rax
shl    $0x4,%rax
mov    -0x18(%rbp),%rdi
add    $0x0,%rdi
add    %rdi,%rax
mov    -0x8(%rbp),%rdi
add    $0x1,%rdi
shl    $0xc,%rdi
add    %rdi,%rax
lea    0xa88(%rip),%rdi
xor    %r9d,%r9d
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <printf@plt>
call   1030 <abort@plt>
jmp    1674 <stencil_op+0x554>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    15a6 <stencil_op+0x486>
jmp    168a <stencil_op+0x56a>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
cmp    $0x20,%rax
jne    177d <stencil_op+0x65d>
movq   $0x1,-0x30(%rbp)
cmpq   $0x10,-0x30(%rbp)
jg     1778 <stencil_op+0x658>
mov    -0x20(%rbp),%rax
mov    -0x30(%rbp),%rcx
shl    $0x9,%rcx
add    %rcx,%rax
mov    0x88(%rax),%rax
mov    -0x10(%rbp),%rcx
add    -0x30(%rbp),%rcx
shl    $0x2,%rcx
shl    $0x4,%rcx
mov    -0x18(%rbp),%rdx
add    $0x10,%rdx
add    $0x1,%rdx
add    %rdx,%rcx
cmp    %rcx,%rax
je     1762 <stencil_op+0x642>
lea    0xa2e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x20(%rbp),%rax
mov    -0x30(%rbp),%rdi
shl    $0x9,%rdi
add    %rdi,%rax
mov    0x88(%rax),%r10
mov    -0x10(%rbp),%rax
add    -0x30(%rbp),%rax
shl    $0x2,%rax
shl    $0x4,%rax
mov    -0x18(%rbp),%rdi
add    $0x10,%rdi
add    $0x1,%rdi
add    %rdi,%rax
lea    0x937(%rip),%rdi
mov    $0x11,%r9d
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <printf@plt>
call   1030 <abort@plt>
jmp    1767 <stencil_op+0x647>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    16a4 <stencil_op+0x584>
jmp    1874 <stencil_op+0x754>
movq   $0x1,-0x30(%rbp)
cmpq   $0x10,-0x30(%rbp)
jg     186f <stencil_op+0x74f>
mov    -0x20(%rbp),%rax
mov    -0x30(%rbp),%rcx
shl    $0x9,%rcx
add    %rcx,%rax
mov    0x88(%rax),%rax
mov    -0x10(%rbp),%rcx
add    -0x30(%rbp),%rcx
shl    $0x2,%rcx
shl    $0x4,%rcx
mov    -0x18(%rbp),%rdx
add    $0x10,%rdx
add    $0x1,%rdx
add    %rdx,%rcx
mov    -0x8(%rbp),%rdx
shl    $0xc,%rdx
add    %rdx,%rcx
cmp    %rcx,%rax
je     1859 <stencil_op+0x739>
lea    0x95e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x20(%rbp),%rax
mov    -0x30(%rbp),%rdi
shl    $0x9,%rdi
add    %rdi,%rax
mov    0x88(%rax),%r10
mov    -0x10(%rbp),%rax
add    -0x30(%rbp),%rax
shl    $0x2,%rax
shl    $0x4,%rax
mov    -0x18(%rbp),%rdi
add    $0x10,%rdi
add    $0x1,%rdi
add    %rdi,%rax
mov    -0x8(%rbp),%rdi
shl    $0xc,%rdi
add    %rdi,%rax
lea    0x840(%rip),%rdi
mov    $0x11,%r9d
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1040 <printf@plt>
call   1030 <abort@plt>
jmp    185e <stencil_op+0x73e>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    1785 <stencil_op+0x665>
jmp    1874 <stencil_op+0x754>
movq   $0x1,-0x30(%rbp)
cmpq   $0x10,-0x30(%rbp)
jg     18e3 <stencil_op+0x7c3>
movq   $0x1,-0x28(%rbp)
cmpq   $0x10,-0x28(%rbp)
jg     18cd <stencil_op+0x7ad>
mov    -0x20(%rbp),%rax
mov    -0x30(%rbp),%rcx
shl    $0x9,%rcx
add    %rcx,%rax
mov    -0x28(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
add    $0x1000,%rdx
mov    %rdx,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    188f <stencil_op+0x76f>
jmp    18d2 <stencil_op+0x7b2>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    187c <stencil_op+0x75c>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<stencil_op>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rcx,%rbx
mov    %rdx,%r14
mov    %rsi,%r15
mov    %rdi,%r12
lea    0x1(%rsi),%rcx
mov    %rsi,%rax
shl    $0x6,%rax
cmp    $0x10,%rcx
jne    1255 <stencil_op+0x125>
lea    (%rax,%r14,1),%rbp
add    $0x1,%rbp
cmp    %rbp,0x8(%rbx)
jne    1fb4 <stencil_op+0xe84>
lea    (%rax,%r14,1),%rdx
lea    0x2(%rdx),%rbp
cmp    %rbp,0x10(%rbx)
jne    1fbc <stencil_op+0xe8c>
lea    0x3(%rdx),%rbp
cmp    %rbp,0x18(%rbx)
jne    1fc4 <stencil_op+0xe94>
lea    0x4(%rdx),%rbp
cmp    %rbp,0x20(%rbx)
jne    1fcc <stencil_op+0xe9c>
lea    0x5(%rdx),%rbp
cmp    %rbp,0x28(%rbx)
jne    1fd4 <stencil_op+0xea4>
lea    0x6(%rdx),%rbp
cmp    %rbp,0x30(%rbx)
jne    1fdc <stencil_op+0xeac>
lea    0x7(%rdx),%rbp
cmp    %rbp,0x38(%rbx)
jne    1fe4 <stencil_op+0xeb4>
lea    0x8(%rdx),%rbp
cmp    %rbp,0x40(%rbx)
jne    1fec <stencil_op+0xebc>
lea    0x9(%rdx),%rbp
cmp    %rbp,0x48(%rbx)
jne    1ff4 <stencil_op+0xec4>
lea    0xa(%rdx),%rbp
cmp    %rbp,0x50(%rbx)
jne    1ffc <stencil_op+0xecc>
lea    0xb(%rdx),%rbp
cmp    %rbp,0x58(%rbx)
jne    2004 <stencil_op+0xed4>
lea    0xc(%rdx),%rbp
cmp    %rbp,0x60(%rbx)
jne    200c <stencil_op+0xedc>
lea    0xd(%rdx),%rbp
cmp    %rbp,0x68(%rbx)
jne    2014 <stencil_op+0xee4>
lea    0xe(%rdx),%rbp
cmp    %rbp,0x70(%rbx)
jne    201c <stencil_op+0xeec>
lea    0xf(%rdx),%rbp
cmp    %rbp,0x78(%rbx)
jne    2024 <stencil_op+0xef4>
add    $0x10,%rdx
cmp    %rdx,0x80(%rbx)
je     148d <stencil_op+0x35d>
mov    $0x10,%r13d
mov    %rdx,%rbp
jmp    202a <stencil_op+0xefa>
mov    %r12,%rdx
shl    $0xc,%rdx
add    %r14,%rdx
lea    (%rax,%rdx,1),%rbp
add    $0x1001,%rbp
cmp    %rbp,0x8(%rbx)
jne    2061 <stencil_op+0xf31>
add    %rax,%rdx
add    $0x1000,%rdx
lea    0x2(%rdx),%rbp
cmp    %rbp,0x10(%rbx)
jne    2070 <stencil_op+0xf40>
lea    0x3(%rdx),%rbp
cmp    %rbp,0x18(%rbx)
jne    207f <stencil_op+0xf4f>
lea    0x4(%rdx),%rbp
cmp    %rbp,0x20(%rbx)
jne    208e <stencil_op+0xf5e>
lea    0x5(%rdx),%rbp
cmp    %rbp,0x28(%rbx)
jne    209d <stencil_op+0xf6d>
lea    0x6(%rdx),%rbp
cmp    %rbp,0x30(%rbx)
jne    20ac <stencil_op+0xf7c>
lea    0x7(%rdx),%rbp
cmp    %rbp,0x38(%rbx)
jne    20be <stencil_op+0xf8e>
lea    0x8(%rdx),%rbp
cmp    %rbp,0x40(%rbx)
jne    20d0 <stencil_op+0xfa0>
lea    0x9(%rdx),%rbp
cmp    %rbp,0x48(%rbx)
jne    20e2 <stencil_op+0xfb2>
lea    0xa(%rdx),%rbp
cmp    %rbp,0x50(%rbx)
jne    20f4 <stencil_op+0xfc4>
lea    0xb(%rdx),%rbp
cmp    %rbp,0x58(%rbx)
jne    2106 <stencil_op+0xfd6>
lea    0xc(%rdx),%rbp
cmp    %rbp,0x60(%rbx)
jne    2118 <stencil_op+0xfe8>
lea    0xd(%rdx),%rbp
cmp    %rbp,0x68(%rbx)
jne    212a <stencil_op+0xffa>
lea    0xe(%rdx),%rbp
cmp    %rbp,0x70(%rbx)
jne    213c <stencil_op+0x100c>
lea    0xf(%rdx),%rbp
cmp    %rbp,0x78(%rbx)
jne    214e <stencil_op+0x101e>
add    $0x10,%rdx
cmp    %rdx,0x80(%rbx)
jne    2160 <stencil_op+0x1030>
cmp    $0x20,%rcx
jne    148d <stencil_op+0x35d>
lea    (%r14,%rax,1),%rbp
add    $0x441,%rbp
cmp    %rbp,0x2208(%rbx)
jne    2422 <stencil_op+0x12f2>
lea    (%r14,%rax,1),%rdx
add    $0x440,%rdx
lea    0x2(%rdx),%rbp
cmp    %rbp,0x2210(%rbx)
jne    242a <stencil_op+0x12fa>
lea    0x3(%rdx),%rbp
cmp    %rbp,0x2218(%rbx)
jne    2432 <stencil_op+0x1302>
lea    0x4(%rdx),%rbp
cmp    %rbp,0x2220(%rbx)
jne    243a <stencil_op+0x130a>
lea    0x5(%rdx),%rbp
cmp    %rbp,0x2228(%rbx)
jne    2442 <stencil_op+0x1312>
lea    0x6(%rdx),%rbp
cmp    %rbp,0x2230(%rbx)
jne    244a <stencil_op+0x131a>
lea    0x7(%rdx),%rbp
cmp    %rbp,0x2238(%rbx)
jne    2452 <stencil_op+0x1322>
lea    0x8(%rdx),%rbp
cmp    %rbp,0x2240(%rbx)
jne    245a <stencil_op+0x132a>
lea    0x9(%rdx),%rbp
cmp    %rbp,0x2248(%rbx)
jne    2462 <stencil_op+0x1332>
lea    0xa(%rdx),%rbp
cmp    %rbp,0x2250(%rbx)
jne    246a <stencil_op+0x133a>
lea    0xb(%rdx),%rbp
cmp    %rbp,0x2258(%rbx)
jne    2472 <stencil_op+0x1342>
lea    0xc(%rdx),%rbp
cmp    %rbp,0x2260(%rbx)
jne    247a <stencil_op+0x134a>
lea    0xd(%rdx),%rbp
cmp    %rbp,0x2268(%rbx)
jne    2482 <stencil_op+0x1352>
lea    0xe(%rdx),%rbp
cmp    %rbp,0x2270(%rbx)
jne    248a <stencil_op+0x135a>
lea    0xf(%rdx),%rbp
cmp    %rbp,0x2278(%rbx)
jne    2492 <stencil_op+0x1362>
add    $0x10,%rdx
cmp    %rdx,0x2280(%rbx)
je     15b8 <stencil_op+0x488>
mov    $0x10,%r13d
mov    %rdx,%rbp
jmp    2498 <stencil_op+0x1368>
mov    %r12,%rdx
shl    $0xc,%rdx
add    %r14,%rdx
lea    (%rax,%rdx,1),%rbp
add    $0x441,%rbp
cmp    %rbp,0x2208(%rbx)
jne    1d01 <stencil_op+0xbd1>
add    %rax,%rdx
add    $0x440,%rdx
lea    0x2(%rdx),%rbp
cmp    %rbp,0x2210(%rbx)
jne    1d13 <stencil_op+0xbe3>
lea    0x3(%rdx),%rbp
cmp    %rbp,0x2218(%rbx)
jne    1d25 <stencil_op+0xbf5>
lea    0x4(%rdx),%rbp
cmp    %rbp,0x2220(%rbx)
jne    1d37 <stencil_op+0xc07>
lea    0x5(%rdx),%rbp
cmp    %rbp,0x2228(%rbx)
jne    1d49 <stencil_op+0xc19>
lea    0x6(%rdx),%rbp
cmp    %rbp,0x2230(%rbx)
jne    1d5b <stencil_op+0xc2b>
lea    0x7(%rdx),%rbp
cmp    %rbp,0x2238(%rbx)
jne    1d6d <stencil_op+0xc3d>
lea    0x8(%rdx),%rbp
cmp    %rbp,0x2240(%rbx)
jne    1d7f <stencil_op+0xc4f>
lea    0x9(%rdx),%rbp
cmp    %rbp,0x2248(%rbx)
jne    1d91 <stencil_op+0xc61>
lea    0xa(%rdx),%rbp
cmp    %rbp,0x2250(%rbx)
jne    1da3 <stencil_op+0xc73>
lea    0xb(%rdx),%rbp
cmp    %rbp,0x2258(%rbx)
jne    1db5 <stencil_op+0xc85>
lea    0xc(%rdx),%rbp
cmp    %rbp,0x2260(%rbx)
jne    1dc7 <stencil_op+0xc97>
lea    0xd(%rdx),%rbp
cmp    %rbp,0x2268(%rbx)
jne    1dd9 <stencil_op+0xca9>
lea    0xe(%rdx),%rbp
cmp    %rbp,0x2270(%rbx)
jne    1deb <stencil_op+0xcbb>
lea    0xf(%rdx),%rbp
cmp    %rbp,0x2278(%rbx)
jne    1dfd <stencil_op+0xccd>
add    $0x10,%rdx
cmp    %rdx,0x2280(%rbx)
jne    1e0f <stencil_op+0xcdf>
lea    0x1(%r14),%rdx
cmp    $0x10,%rdx
jne    1757 <stencil_op+0x627>
mov    %rcx,%rbp
shl    $0x6,%rbp
add    %r14,%rbp
cmp    %rbp,0x200(%rbx)
jne    2175 <stencil_op+0x1045>
lea    (%rax,%r14,1),%rbp
add    $0x80,%rbp
cmp    %rbp,0x400(%rbx)
jne    2187 <stencil_op+0x1057>
lea    (%rax,%r14,1),%rbp
add    $0xc0,%rbp
cmp    %rbp,0x600(%rbx)
jne    2199 <stencil_op+0x1069>
lea    (%rax,%r14,1),%rbp
add    $0x100,%rbp
cmp    %rbp,0x800(%rbx)
jne    21ab <stencil_op+0x107b>
lea    (%rax,%r14,1),%rbp
add    $0x140,%rbp
cmp    %rbp,0xa00(%rbx)
jne    21bd <stencil_op+0x108d>
lea    (%rax,%r14,1),%rbp
add    $0x180,%rbp
cmp    %rbp,0xc00(%rbx)
jne    21cf <stencil_op+0x109f>
lea    (%rax,%r14,1),%rbp
add    $0x1c0,%rbp
cmp    %rbp,0xe00(%rbx)
jne    21e1 <stencil_op+0x10b1>
lea    (%rax,%r14,1),%rbp
add    $0x200,%rbp
cmp    %rbp,0x1000(%rbx)
jne    21f0 <stencil_op+0x10c0>
lea    (%rax,%r14,1),%rbp
add    $0x240,%rbp
cmp    %rbp,0x1200(%rbx)
jne    21ff <stencil_op+0x10cf>
lea    (%rax,%r14,1),%rbp
add    $0x280,%rbp
cmp    %rbp,0x1400(%rbx)
jne    220e <stencil_op+0x10de>
lea    (%rax,%r14,1),%rbp
add    $0x2c0,%rbp
cmp    %rbp,0x1600(%rbx)
jne    221d <stencil_op+0x10ed>
lea    (%rax,%r14,1),%rbp
add    $0x300,%rbp
cmp    %rbp,0x1800(%rbx)
jne    222c <stencil_op+0x10fc>
lea    (%rax,%r14,1),%rbp
add    $0x340,%rbp
cmp    %rbp,0x1a00(%rbx)
jne    223b <stencil_op+0x110b>
lea    (%rax,%r14,1),%rbp
add    $0x380,%rbp
cmp    %rbp,0x1c00(%rbx)
jne    224a <stencil_op+0x111a>
lea    (%rax,%r14,1),%rbp
add    $0x3c0,%rbp
cmp    %rbp,0x1e00(%rbx)
jne    2259 <stencil_op+0x1129>
lea    (%rax,%r14,1),%rbp
add    $0x400,%rbp
cmp    %rbp,0x2000(%rbx)
je     1a8f <stencil_op+0x95f>
add    $0x2000,%rbx
mov    $0x10,%r13d
jmp    2266 <stencil_op+0x1136>
mov    %r12,%rdi
shl    $0xc,%rdi
lea    (%r14,%rdi,1),%rbp
mov    %rcx,%rsi
shl    $0x6,%rsi
add    %rsi,%rbp
add    $0x1000,%rbp
cmp    %rbp,0x200(%rbx)
jne    229b <stencil_op+0x116b>
add    %r14,%rdi
add    $0x1000,%rdi
lea    (%rax,%rdi,1),%rbp
add    $0x80,%rbp
cmp    %rbp,0x400(%rbx)
jne    22b1 <stencil_op+0x1181>
lea    (%rax,%rdi,1),%rbp
add    $0xc0,%rbp
cmp    %rbp,0x600(%rbx)
jne    22c7 <stencil_op+0x1197>
lea    (%rax,%rdi,1),%rbp
add    $0x100,%rbp
cmp    %rbp,0x800(%rbx)
jne    22dd <stencil_op+0x11ad>
lea    (%rax,%rdi,1),%rbp
add    $0x140,%rbp
cmp    %rbp,0xa00(%rbx)
jne    22f6 <stencil_op+0x11c6>
lea    (%rax,%rdi,1),%rbp
add    $0x180,%rbp
cmp    %rbp,0xc00(%rbx)
jne    230f <stencil_op+0x11df>
lea    (%rax,%rdi,1),%rbp
add    $0x1c0,%rbp
cmp    %rbp,0xe00(%rbx)
jne    2328 <stencil_op+0x11f8>
lea    (%rax,%rdi,1),%rbp
add    $0x200,%rbp
cmp    %rbp,0x1000(%rbx)
jne    2341 <stencil_op+0x1211>
lea    (%rax,%rdi,1),%rbp
add    $0x240,%rbp
cmp    %rbp,0x1200(%rbx)
jne    235a <stencil_op+0x122a>
lea    (%rax,%rdi,1),%rbp
add    $0x280,%rbp
cmp    %rbp,0x1400(%rbx)
jne    2373 <stencil_op+0x1243>
lea    (%rax,%rdi,1),%rbp
add    $0x2c0,%rbp
cmp    %rbp,0x1600(%rbx)
jne    238c <stencil_op+0x125c>
lea    (%rax,%rdi,1),%rbp
add    $0x300,%rbp
cmp    %rbp,0x1800(%rbx)
jne    23a5 <stencil_op+0x1275>
lea    (%rax,%rdi,1),%rbp
add    $0x340,%rbp
cmp    %rbp,0x1a00(%rbx)
jne    23be <stencil_op+0x128e>
lea    (%rax,%rdi,1),%rbp
add    $0x380,%rbp
cmp    %rbp,0x1c00(%rbx)
jne    23d7 <stencil_op+0x12a7>
lea    (%rax,%rdi,1),%rbp
add    $0x3c0,%rbp
cmp    %rbp,0x1e00(%rbx)
jne    23f0 <stencil_op+0x12c0>
lea    (%rax,%rdi,1),%rbp
add    $0x400,%rbp
cmp    %rbp,0x2000(%rbx)
jne    2409 <stencil_op+0x12d9>
cmp    $0x20,%rdx
jne    1a8f <stencil_op+0x95f>
lea    (%r14,%rsi,1),%rbp
add    $0x11,%rbp
cmp    %rbp,0x288(%rbx)
jne    24cd <stencil_op+0x139d>
lea    0x11(%r14),%rcx
lea    (%rax,%rcx,1),%rbp
add    $0x80,%rbp
cmp    %rbp,0x488(%rbx)
jne    24df <stencil_op+0x13af>
lea    (%rax,%rcx,1),%rbp
add    $0xc0,%rbp
cmp    %rbp,0x688(%rbx)
jne    24f1 <stencil_op+0x13c1>
lea    (%rax,%rcx,1),%rbp
add    $0x100,%rbp
cmp    %rbp,0x888(%rbx)
jne    2503 <stencil_op+0x13d3>
lea    (%rax,%rcx,1),%rbp
add    $0x140,%rbp
cmp    %rbp,0xa88(%rbx)
jne    2515 <stencil_op+0x13e5>
lea    (%rax,%rcx,1),%rbp
add    $0x180,%rbp
cmp    %rbp,0xc88(%rbx)
jne    2527 <stencil_op+0x13f7>
lea    (%rax,%rcx,1),%rbp
add    $0x1c0,%rbp
cmp    %rbp,0xe88(%rbx)
jne    2539 <stencil_op+0x1409>
lea    (%rax,%rcx,1),%rbp
add    $0x200,%rbp
cmp    %rbp,0x1088(%rbx)
jne    2548 <stencil_op+0x1418>
lea    (%rax,%rcx,1),%rbp
add    $0x240,%rbp
cmp    %rbp,0x1288(%rbx)
jne    2557 <stencil_op+0x1427>
lea    (%rax,%rcx,1),%rbp
add    $0x280,%rbp
cmp    %rbp,0x1488(%rbx)
jne    2566 <stencil_op+0x1436>
lea    (%rax,%rcx,1),%rbp
add    $0x2c0,%rbp
cmp    %rbp,0x1688(%rbx)
jne    2575 <stencil_op+0x1445>
lea    (%rax,%rcx,1),%rbp
add    $0x300,%rbp
cmp    %rbp,0x1888(%rbx)
jne    2584 <stencil_op+0x1454>
lea    (%rax,%rcx,1),%rbp
add    $0x340,%rbp
cmp    %rbp,0x1a88(%rbx)
jne    2593 <stencil_op+0x1463>
lea    (%rax,%rcx,1),%rbp
add    $0x380,%rbp
cmp    %rbp,0x1c88(%rbx)
jne    25a2 <stencil_op+0x1472>
lea    (%rax,%rcx,1),%rbp
add    $0x3c0,%rbp
cmp    %rbp,0x1e88(%rbx)
jne    25b1 <stencil_op+0x1481>
lea    (%rax,%rcx,1),%rbp
add    $0x400,%rbp
cmp    %rbp,0x2088(%rbx)
je     1c23 <stencil_op+0xaf3>
add    $0x2088,%rbx
mov    $0x10,%r13d
jmp    25be <stencil_op+0x148e>
mov    %r12,%rdx
shl    $0xc,%rdx
lea    (%r14,%rdx,1),%rsi
shl    $0x6,%rcx
lea    (%rcx,%rsi,1),%rbp
add    $0x11,%rbp
cmp    %rbp,0x288(%rbx)
jne    1e24 <stencil_op+0xcf4>
lea    (%r14,%rdx,1),%rcx
add    $0x11,%rcx
lea    (%rax,%rcx,1),%rbp
add    $0x80,%rbp
cmp    %rbp,0x488(%rbx)
jne    1e3d <stencil_op+0xd0d>
lea    (%rax,%rcx,1),%rbp
add    $0xc0,%rbp
cmp    %rbp,0x688(%rbx)
jne    1e56 <stencil_op+0xd26>
lea    (%rax,%rcx,1),%rbp
add    $0x100,%rbp
cmp    %rbp,0x888(%rbx)
jne    1e6f <stencil_op+0xd3f>
lea    (%rax,%rcx,1),%rbp
add    $0x140,%rbp
cmp    %rbp,0xa88(%rbx)
jne    1e88 <stencil_op+0xd58>
lea    (%rax,%rcx,1),%rbp
add    $0x180,%rbp
cmp    %rbp,0xc88(%rbx)
jne    1ea1 <stencil_op+0xd71>
lea    (%rax,%rcx,1),%rbp
add    $0x1c0,%rbp
cmp    %rbp,0xe88(%rbx)
jne    1eba <stencil_op+0xd8a>
lea    (%rax,%rcx,1),%rbp
add    $0x200,%rbp
cmp    %rbp,0x1088(%rbx)
jne    1ed3 <stencil_op+0xda3>
lea    (%rax,%rcx,1),%rbp
add    $0x240,%rbp
cmp    %rbp,0x1288(%rbx)
jne    1eec <stencil_op+0xdbc>
lea    (%rax,%rcx,1),%rbp
add    $0x280,%rbp
cmp    %rbp,0x1488(%rbx)
jne    1f05 <stencil_op+0xdd5>
lea    (%rax,%rcx,1),%rbp
add    $0x2c0,%rbp
cmp    %rbp,0x1688(%rbx)
jne    1f1e <stencil_op+0xdee>
lea    (%rax,%rcx,1),%rbp
add    $0x300,%rbp
cmp    %rbp,0x1888(%rbx)
jne    1f37 <stencil_op+0xe07>
lea    (%rax,%rcx,1),%rbp
add    $0x340,%rbp
cmp    %rbp,0x1a88(%rbx)
jne    1f50 <stencil_op+0xe20>
lea    (%rax,%rcx,1),%rbp
add    $0x380,%rbp
cmp    %rbp,0x1c88(%rbx)
jne    1f69 <stencil_op+0xe39>
lea    (%rax,%rcx,1),%rbp
add    $0x3c0,%rbp
cmp    %rbp,0x1e88(%rbx)
jne    1f82 <stencil_op+0xe52>
lea    (%rax,%rcx,1),%rbp
add    $0x400,%rbp
cmp    %rbp,0x2088(%rbx)
jne    1f9b <stencil_op+0xe6b>
xor    %eax,%eax
movdqa 0x13d3(%rip),%xmm0
nopl   (%rax)
movdqu 0x208(%rbx,%rax,1),%xmm1
movdqu 0x218(%rbx,%rax,1),%xmm2
movdqu 0x228(%rbx,%rax,1),%xmm3
movdqu 0x238(%rbx,%rax,1),%xmm4
paddq  %xmm0,%xmm1
movdqu %xmm1,0x208(%rbx,%rax,1)
paddq  %xmm0,%xmm2
movdqu %xmm2,0x218(%rbx,%rax,1)
paddq  %xmm0,%xmm3
movdqu %xmm3,0x228(%rbx,%rax,1)
paddq  %xmm0,%xmm4
movdqu %xmm4,0x238(%rbx,%rax,1)
movdqu 0x248(%rbx,%rax,1),%xmm1
paddq  %xmm0,%xmm1
movdqu %xmm1,0x248(%rbx,%rax,1)
movdqu 0x258(%rbx,%rax,1),%xmm1
paddq  %xmm0,%xmm1
movdqu %xmm1,0x258(%rbx,%rax,1)
movdqu 0x268(%rbx,%rax,1),%xmm1
paddq  %xmm0,%xmm1
movdqu %xmm1,0x268(%rbx,%rax,1)
movdqu 0x278(%rbx,%rax,1),%xmm1
paddq  %xmm0,%xmm1
movdqu %xmm1,0x278(%rbx,%rax,1)
add    $0x200,%rax
cmp    $0x2000,%rax
jne    1c30 <stencil_op+0xb00>
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x1,%r13d
lea    0x13e7(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0x2,%r13d
lea    0x13d5(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0x3,%r13d
lea    0x13c3(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0x4,%r13d
lea    0x13b1(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0x5,%r13d
lea    0x139f(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0x6,%r13d
lea    0x138d(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0x7,%r13d
lea    0x137b(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0x8,%r13d
lea    0x1369(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0x9,%r13d
lea    0x1357(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0xa,%r13d
lea    0x1345(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0xb,%r13d
lea    0x1333(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0xc,%r13d
lea    0x1321(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0xd,%r13d
lea    0x130f(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0xe,%r13d
lea    0x12fd(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0xf,%r13d
lea    0x12eb(%rip),%rdi
jmp    249f <stencil_op+0x136f>
mov    $0x10,%r13d
mov    %rdx,%rbp
lea    0x12d6(%rip),%rdi
jmp    249f <stencil_op+0x136f>
add    $0x288,%rbx
mov    $0x1,%r13d
lea    0x1257(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x488,%rbx
mov    $0x2,%r13d
lea    0x123e(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x688,%rbx
mov    $0x3,%r13d
lea    0x1225(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x888,%rbx
mov    $0x4,%r13d
lea    0x120c(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0xa88,%rbx
mov    $0x5,%r13d
lea    0x11f3(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0xc88,%rbx
mov    $0x6,%r13d
lea    0x11da(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0xe88,%rbx
mov    $0x7,%r13d
lea    0x11c1(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x1088,%rbx
mov    $0x8,%r13d
lea    0x11a8(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x1288,%rbx
mov    $0x9,%r13d
lea    0x118f(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x1488,%rbx
mov    $0xa,%r13d
lea    0x1176(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x1688,%rbx
mov    $0xb,%r13d
lea    0x115d(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x1888,%rbx
mov    $0xc,%r13d
lea    0x1144(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x1a88,%rbx
mov    $0xd,%r13d
lea    0x112b(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x1c88,%rbx
mov    $0xe,%r13d
lea    0x1112(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x1e88,%rbx
mov    $0xf,%r13d
lea    0x10f9(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
add    $0x2088,%rbx
mov    $0x10,%r13d
lea    0x10e0(%rip),%rdi
jmp    25c5 <stencil_op+0x1495>
mov    $0x1,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0x2,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0x3,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0x4,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0x5,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0x6,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0x7,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0x8,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0x9,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0xa,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0xb,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0xc,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0xd,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0xe,%r13d
jmp    202a <stencil_op+0xefa>
mov    $0xf,%r13d
lea    0x1112(%rip),%rdi
call   1040 <puts@plt>
lea    0xfd3(%rip),%rdi
mov    %r12,%rsi
mov    %r15,%rdx
mov    %r14,%rcx
xor    %r8d,%r8d
mov    %r13,%r9
xor    %eax,%eax
push   %rbp
push   (%rbx,%r13,8)
call   1050 <printf@plt>
add    $0x10,%rsp
call   1030 <abort@plt>
mov    $0x1,%r13d
lea    0x10bc(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0x2,%r13d
lea    0x10ad(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0x3,%r13d
lea    0x109e(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0x4,%r13d
lea    0x108f(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0x5,%r13d
lea    0x1080(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0x6,%r13d
lea    0x1071(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0x7,%r13d
lea    0x105f(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0x8,%r13d
lea    0x104d(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0x9,%r13d
lea    0x103b(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0xa,%r13d
lea    0x1029(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0xb,%r13d
lea    0x1017(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0xc,%r13d
lea    0x1005(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0xd,%r13d
lea    0xff3(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0xe,%r13d
lea    0xfe1(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0xf,%r13d
lea    0xfcf(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
mov    $0x10,%r13d
mov    %rdx,%rbp
lea    0xfba(%rip),%rdi
jmp    2031 <stencil_op+0xf01>
add    $0x200,%rbx
mov    $0x1,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x400,%rbx
mov    $0x2,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x600,%rbx
mov    $0x3,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x800,%rbx
mov    $0x4,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0xa00,%rbx
mov    $0x5,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0xc00,%rbx
mov    $0x6,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0xe00,%rbx
mov    $0x7,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x1000,%rbx
mov    $0x8,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x1200,%rbx
mov    $0x9,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x1400,%rbx
mov    $0xa,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x1600,%rbx
mov    $0xb,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x1800,%rbx
mov    $0xc,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x1a00,%rbx
mov    $0xd,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x1c00,%rbx
mov    $0xe,%r13d
jmp    2266 <stencil_op+0x1136>
add    $0x1e00,%rbx
mov    $0xf,%r13d
lea    0xe6d(%rip),%rdi
call   1040 <puts@plt>
lea    0xdec(%rip),%rdi
mov    %r12,%rsi
mov    %r15,%rdx
mov    %r14,%rcx
mov    %r13,%r8
xor    %r9d,%r9d
xor    %eax,%eax
push   %rbp
push   (%rbx)
call   1050 <printf@plt>
add    $0x10,%rsp
call   1030 <abort@plt>
add    $0x200,%rbx
mov    $0x1,%r13d
lea    0xe13(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x400,%rbx
mov    $0x2,%r13d
lea    0xdfd(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x600,%rbx
mov    $0x3,%r13d
lea    0xde7(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x800,%rbx
mov    $0x4,%r13d
lea    0xdd1(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0xa00,%rbx
mov    $0x5,%r13d
lea    0xdb8(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0xc00,%rbx
mov    $0x6,%r13d
lea    0xd9f(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0xe00,%rbx
mov    $0x7,%r13d
lea    0xd86(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x1000,%rbx
mov    $0x8,%r13d
lea    0xd6d(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x1200,%rbx
mov    $0x9,%r13d
lea    0xd54(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x1400,%rbx
mov    $0xa,%r13d
lea    0xd3b(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x1600,%rbx
mov    $0xb,%r13d
lea    0xd22(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x1800,%rbx
mov    $0xc,%r13d
lea    0xd09(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x1a00,%rbx
mov    $0xd,%r13d
lea    0xcf0(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x1c00,%rbx
mov    $0xe,%r13d
lea    0xcd7(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x1e00,%rbx
mov    $0xf,%r13d
lea    0xcbe(%rip),%rdi
jmp    226d <stencil_op+0x113d>
add    $0x2000,%rbx
mov    $0x10,%r13d
lea    0xca5(%rip),%rdi
jmp    226d <stencil_op+0x113d>
mov    $0x1,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0x2,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0x3,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0x4,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0x5,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0x6,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0x7,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0x8,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0x9,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0xa,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0xb,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0xc,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0xd,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0xe,%r13d
jmp    2498 <stencil_op+0x1368>
mov    $0xf,%r13d
lea    0xc6f(%rip),%rdi
call   1040 <puts@plt>
lea    0xb8f(%rip),%rdi
mov    $0x11,%r8d
mov    %r12,%rsi
mov    %r15,%rdx
mov    %r14,%rcx
mov    %r13,%r9
xor    %eax,%eax
push   %rbp
push   0x2200(%rbx,%r13,8)
jmp    25e8 <stencil_op+0x14b8>
add    $0x288,%rbx
mov    $0x1,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x488,%rbx
mov    $0x2,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x688,%rbx
mov    $0x3,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x888,%rbx
mov    $0x4,%r13d
jmp    25be <stencil_op+0x148e>
add    $0xa88,%rbx
mov    $0x5,%r13d
jmp    25be <stencil_op+0x148e>
add    $0xc88,%rbx
mov    $0x6,%r13d
jmp    25be <stencil_op+0x148e>
add    $0xe88,%rbx
mov    $0x7,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x1088,%rbx
mov    $0x8,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x1288,%rbx
mov    $0x9,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x1488,%rbx
mov    $0xa,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x1688,%rbx
mov    $0xb,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x1888,%rbx
mov    $0xc,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x1a88,%rbx
mov    $0xd,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x1c88,%rbx
mov    $0xe,%r13d
jmp    25be <stencil_op+0x148e>
add    $0x1e88,%rbx
mov    $0xf,%r13d
lea    0xae2(%rip),%rdi
call   1040 <puts@plt>
lea    0xa69(%rip),%rdi
mov    $0x11,%r9d
mov    %r12,%rsi
mov    %r15,%rdx
mov    %r14,%rcx
mov    %r13,%r8
xor    %eax,%eax
push   %rbp
push   (%rbx)
call   1050 <printf@plt>
add    $0x10,%rsp
call   1030 <abort@plt>

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

LLVM IR (-O2):
@.str.1 = [42 x i8] c"it %li: [%li][%li] [%i][%li], %li != %li\0A\00"
@.str.4 = [43 x i8] c"it %li: [%li][%li] [%li][%li], %li != %li\0A\00"
@.str.7 = [42 x i8] c"it %li: [%li][%li] [%li][%i], %li != %li\0A\00"
@str = [24 x i8] c"Invalid east inner halo\00"
@str.11 = [27 x i8] c"Invalid east boundary halo\00"
@str.12 = [24 x i8] c"Invalid west inner halo\00"
@str.13 = [27 x i8] c"Invalid west boundary halo\00"
@str.14 = [25 x i8] c"Invalid south inner halo\00"
@str.15 = [28 x i8] c"Invalid south boundary halo\00"
@str.16 = [25 x i8] c"Invalid north inner halo\00"
@str.17 = [28 x i8] c"Invalid north boundary halo\00"
define void @stencil_op(i64 %0, i64 %1, i64 %2, [64 x i64]* nocapture %3) {
%5 = add nsw i64 %1, 1
%6 = icmp eq i64 %5, 16
%7 = shl nsw i64 %1, 6
br i1 %6, label %17, label %8
8: ; preds = %4
%9 = shl i64 %0, 12
%10 = add i64 %2, 4096
%11 = add i64 %10, %9
%12 = add i64 %11, %7
%13 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 1
%14 = load i64, i64* %13
%15 = add i64 %12, 1
%16 = icmp eq i64 %14, %15
br i1 %16, label %112, label %105
17: ; preds = %4
%18 = add i64 %7, %2
%19 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 1
%20 = load i64, i64* %19
%21 = add i64 %18, 1
%22 = icmp eq i64 %20, %21
br i1 %22, label %30, label %23
23: ; preds = %100, %95, %90, %85, %80, %75, %70, %65, %60, %55, %50, %45, %40, %35, %30, %17
%24 = phi i64 [ 1, %17 ], [ 2, %30 ], [ 3, %35 ], [ 4, %40 ], [ 5, %45 ], [ 6, %50 ], [ 7, %55 ], [ 8, %60 ], [ 9, %65 ], [ 10, %70 ], [ 11, %75 ], [ 12, %80 ], [ 13, %85 ], [ 14, %90 ], [ 15, %95 ], [ 16, %100 ]
%25 = phi i64 [ %21, %17 ], [ %33, %30 ], [ %38, %35 ], [ %43, %40 ], [ %48, %45 ], [ %53, %50 ], [ %58, %55 ], [ %63, %60 ], [ %68, %65 ], [ %73, %70 ], [ %78, %75 ], [ %83, %80 ], [ %88, %85 ], [ %93, %90 ], [ %98, %95 ], [ %103, %100 ]
%26 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 %24
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.17, i64 0, i64 0))
%28 = load i64, i64* %26
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.1, i64 0, i64 0), i64 %0, i64 %1, i64 %2, i32 0, i64 %24, i64 %28, i64 %25)
tail call void @abort()
unreachable
30: ; preds = %17
%31 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 2
%32 = load i64, i64* %31
%33 = add i64 %18, 2
%34 = icmp eq i64 %32, %33
br i1 %34, label %35, label %23
35: ; preds = %30
%36 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 3
%37 = load i64, i64* %36
%38 = add i64 %18, 3
%39 = icmp eq i64 %37, %38
br i1 %39, label %40, label %23
40: ; preds = %35
%41 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 4
%42 = load i64, i64* %41
%43 = add i64 %18, 4
%44 = icmp eq i64 %42, %43
br i1 %44, label %45, label %23
45: ; preds = %40
%46 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 5
%47 = load i64, i64* %46
%48 = add i64 %18, 5
%49 = icmp eq i64 %47, %48
br i1 %49, label %50, label %23
50: ; preds = %45
%51 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 6
%52 = load i64, i64* %51
%53 = add i64 %18, 6
%54 = icmp eq i64 %52, %53
br i1 %54, label %55, label %23
55: ; preds = %50
%56 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 7
%57 = load i64, i64* %56
%58 = add i64 %18, 7
%59 = icmp eq i64 %57, %58
br i1 %59, label %60, label %23
60: ; preds = %55
%61 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 8
%62 = load i64, i64* %61
%63 = add i64 %18, 8
%64 = icmp eq i64 %62, %63
br i1 %64, label %65, label %23
65: ; preds = %60
%66 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 9
%67 = load i64, i64* %66
%68 = add i64 %18, 9
%69 = icmp eq i64 %67, %68
br i1 %69, label %70, label %23
70: ; preds = %65
%71 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 10
%72 = load i64, i64* %71
%73 = add i64 %18, 10
%74 = icmp eq i64 %72, %73
br i1 %74, label %75, label %23
75: ; preds = %70
%76 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 11
%77 = load i64, i64* %76
%78 = add i64 %18, 11
%79 = icmp eq i64 %77, %78
br i1 %79, label %80, label %23
80: ; preds = %75
%81 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 12
%82 = load i64, i64* %81
%83 = add i64 %18, 12
%84 = icmp eq i64 %82, %83
br i1 %84, label %85, label %23
85: ; preds = %80
%86 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 13
%87 = load i64, i64* %86
%88 = add i64 %18, 13
%89 = icmp eq i64 %87, %88
br i1 %89, label %90, label %23
90: ; preds = %85
%91 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 14
%92 = load i64, i64* %91
%93 = add i64 %18, 14
%94 = icmp eq i64 %92, %93
br i1 %94, label %95, label %23
95: ; preds = %90
%96 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 15
%97 = load i64, i64* %96
%98 = add i64 %18, 15
%99 = icmp eq i64 %97, %98
br i1 %99, label %100, label %23
100: ; preds = %95
%101 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 16
%102 = load i64, i64* %101
%103 = add i64 %18, 16
%104 = icmp eq i64 %102, %103
br i1 %104, label %189, label %23
105: ; preds = %182, %177, %172, %167, %162, %157, %152, %147, %142, %137, %132, %127, %122, %117, %112, %8
%106 = phi i64 [ 1, %8 ], [ 2, %112 ], [ 3, %117 ], [ 4, %122 ], [ 5, %127 ], [ 6, %132 ], [ 7, %137 ], [ 8, %142 ], [ 9, %147 ], [ 10, %152 ], [ 11, %157 ], [ 12, %162 ], [ 13, %167 ], [ 14, %172 ], [ 15, %177 ], [ 16, %182 ]
%107 = phi i64 [ %15, %8 ], [ %115, %112 ], [ %120, %117 ], [ %125, %122 ], [ %130, %127 ], [ %135, %132 ], [ %140, %137 ], [ %145, %142 ], [ %150, %147 ], [ %155, %152 ], [ %160, %157 ], [ %165, %162 ], [ %170, %167 ], [ %175, %172 ], [ %180, %177 ], [ %185, %182 ]
%108 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 %106
%109 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.16, i64 0, i64 0))
%110 = load i64, i64* %108
%111 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.1, i64 0, i64 0), i64 %0, i64 %1, i64 %2, i32 0, i64 %106, i64 %110, i64 %107)
tail call void @abort()
unreachable
112: ; preds = %8
%113 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 2
%114 = load i64, i64* %113
%115 = add i64 %12, 2
%116 = icmp eq i64 %114, %115
br i1 %116, label %117, label %105
117: ; preds = %112
%118 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 3
%119 = load i64, i64* %118
%120 = add i64 %12, 3
%121 = icmp eq i64 %119, %120
br i1 %121, label %122, label %105
122: ; preds = %117
%123 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 4
%124 = load i64, i64* %123
%125 = add i64 %12, 4
%126 = icmp eq i64 %124, %125
br i1 %126, label %127, label %105
127: ; preds = %122
%128 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 5
%129 = load i64, i64* %128
%130 = add i64 %12, 5
%131 = icmp eq i64 %129, %130
br i1 %131, label %132, label %105
132: ; preds = %127
%133 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 6
%134 = load i64, i64* %133
%135 = add i64 %12, 6
%136 = icmp eq i64 %134, %135
br i1 %136, label %137, label %105
137: ; preds = %132
%138 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 7
%139 = load i64, i64* %138
%140 = add i64 %12, 7
%141 = icmp eq i64 %139, %140
br i1 %141, label %142, label %105
142: ; preds = %137
%143 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 8
%144 = load i64, i64* %143
%145 = add i64 %12, 8
%146 = icmp eq i64 %144, %145
br i1 %146, label %147, label %105
147: ; preds = %142
%148 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 9
%149 = load i64, i64* %148
%150 = add i64 %12, 9
%151 = icmp eq i64 %149, %150
br i1 %151, label %152, label %105
152: ; preds = %147
%153 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 10
%154 = load i64, i64* %153
%155 = add i64 %12, 10
%156 = icmp eq i64 %154, %155
br i1 %156, label %157, label %105
157: ; preds = %152
%158 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 11
%159 = load i64, i64* %158
%160 = add i64 %12, 11
%161 = icmp eq i64 %159, %160
br i1 %161, label %162, label %105
162: ; preds = %157
%163 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 12
%164 = load i64, i64* %163
%165 = add i64 %12, 12
%166 = icmp eq i64 %164, %165
br i1 %166, label %167, label %105
167: ; preds = %162
%168 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 13
%169 = load i64, i64* %168
%170 = add i64 %12, 13
%171 = icmp eq i64 %169, %170
br i1 %171, label %172, label %105
172: ; preds = %167
%173 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 14
%174 = load i64, i64* %173
%175 = add i64 %12, 14
%176 = icmp eq i64 %174, %175
br i1 %176, label %177, label %105
177: ; preds = %172
%178 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 15
%179 = load i64, i64* %178
%180 = add i64 %12, 15
%181 = icmp eq i64 %179, %180
br i1 %181, label %182, label %105
182: ; preds = %177
%183 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 0, i64 16
%184 = load i64, i64* %183
%185 = add i64 %12, 16
%186 = icmp eq i64 %184, %185
br i1 %186, label %187, label %105
187: ; preds = %182
%188 = icmp eq i64 %5, 32
br i1 %188, label %199, label %189
189: ; preds = %100, %187
%190 = shl i64 %1, 6
%191 = shl nsw i64 %0, 12
%192 = add i64 %2, 1088
%193 = add i64 %192, %191
%194 = add i64 %193, %190
%195 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 1
%196 = load i64, i64* %195
%197 = add i64 %194, 1
%198 = icmp eq i64 %196, %197
br i1 %198, label %296, label %289
199: ; preds = %187
%200 = shl nuw nsw i64 %1, 6
%201 = add i64 %2, 1088
%202 = add i64 %201, %200
%203 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 1
%204 = load i64, i64* %203
%205 = add i64 %202, 1
%206 = icmp eq i64 %204, %205
br i1 %206, label %214, label %207
207: ; preds = %284, %279, %274, %269, %264, %259, %254, %249, %244, %239, %234, %229, %224, %219, %214, %199
%208 = phi i64 [ 1, %199 ], [ 2, %214 ], [ 3, %219 ], [ 4, %224 ], [ 5, %229 ], [ 6, %234 ], [ 7, %239 ], [ 8, %244 ], [ 9, %249 ], [ 10, %254 ], [ 11, %259 ], [ 12, %264 ], [ 13, %269 ], [ 14, %274 ], [ 15, %279 ], [ 16, %284 ]
%209 = phi i64 [ %205, %199 ], [ %217, %214 ], [ %222, %219 ], [ %227, %224 ], [ %232, %229 ], [ %237, %234 ], [ %242, %239 ], [ %247, %244 ], [ %252, %249 ], [ %257, %254 ], [ %262, %259 ], [ %267, %264 ], [ %272, %269 ], [ %277, %274 ], [ %282, %279 ], [ %287, %284 ]
%210 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 %208
%211 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.15, i64 0, i64 0))
%212 = load i64, i64* %210
%213 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.4, i64 0, i64 0), i64 %0, i64 %1, i64 %2, i64 17, i64 %208, i64 %212, i64 %209)
tail call void @abort()
unreachable
214: ; preds = %199
%215 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 2
%216 = load i64, i64* %215
%217 = add i64 %202, 2
%218 = icmp eq i64 %216, %217
br i1 %218, label %219, label %207
219: ; preds = %214
%220 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 3
%221 = load i64, i64* %220
%222 = add i64 %202, 3
%223 = icmp eq i64 %221, %222
br i1 %223, label %224, label %207
224: ; preds = %219
%225 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 4
%226 = load i64, i64* %225
%227 = add i64 %202, 4
%228 = icmp eq i64 %226, %227
br i1 %228, label %229, label %207
229: ; preds = %224
%230 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 5
%231 = load i64, i64* %230
%232 = add i64 %202, 5
%233 = icmp eq i64 %231, %232
br i1 %233, label %234, label %207
234: ; preds = %229
%235 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 6
%236 = load i64, i64* %235
%237 = add i64 %202, 6
%238 = icmp eq i64 %236, %237
br i1 %238, label %239, label %207
239: ; preds = %234
%240 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 7
%241 = load i64, i64* %240
%242 = add i64 %202, 7
%243 = icmp eq i64 %241, %242
br i1 %243, label %244, label %207
244: ; preds = %239
%245 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 8
%246 = load i64, i64* %245
%247 = add i64 %202, 8
%248 = icmp eq i64 %246, %247
br i1 %248, label %249, label %207
249: ; preds = %244
%250 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 9
%251 = load i64, i64* %250
%252 = add i64 %202, 9
%253 = icmp eq i64 %251, %252
br i1 %253, label %254, label %207
254: ; preds = %249
%255 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 10
%256 = load i64, i64* %255
%257 = add i64 %202, 10
%258 = icmp eq i64 %256, %257
br i1 %258, label %259, label %207
259: ; preds = %254
%260 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 11
%261 = load i64, i64* %260
%262 = add i64 %202, 11
%263 = icmp eq i64 %261, %262
br i1 %263, label %264, label %207
264: ; preds = %259
%265 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 12
%266 = load i64, i64* %265
%267 = add i64 %202, 12
%268 = icmp eq i64 %266, %267
br i1 %268, label %269, label %207
269: ; preds = %264
%270 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 13
%271 = load i64, i64* %270
%272 = add i64 %202, 13
%273 = icmp eq i64 %271, %272
br i1 %273, label %274, label %207
274: ; preds = %269
%275 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 14
%276 = load i64, i64* %275
%277 = add i64 %202, 14
%278 = icmp eq i64 %276, %277
br i1 %278, label %279, label %207
279: ; preds = %274
%280 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 15
%281 = load i64, i64* %280
%282 = add i64 %202, 15
%283 = icmp eq i64 %281, %282
br i1 %283, label %284, label %207
284: ; preds = %279
%285 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 16
%286 = load i64, i64* %285
%287 = add i64 %202, 16
%288 = icmp eq i64 %286, %287
br i1 %288, label %371, label %207
289: ; preds = %366, %361, %356, %351, %346, %341, %336, %331, %326, %321, %316, %311, %306, %301, %296, %189
%290 = phi i64 [ 1, %189 ], [ 2, %296 ], [ 3, %301 ], [ 4, %306 ], [ 5, %311 ], [ 6, %316 ], [ 7, %321 ], [ 8, %326 ], [ 9, %331 ], [ 10, %336 ], [ 11, %341 ], [ 12, %346 ], [ 13, %351 ], [ 14, %356 ], [ 15, %361 ], [ 16, %366 ]
%291 = phi i64 [ %197, %189 ], [ %299, %296 ], [ %304, %301 ], [ %309, %306 ], [ %314, %311 ], [ %319, %316 ], [ %324, %321 ], [ %329, %326 ], [ %334, %331 ], [ %339, %336 ], [ %344, %341 ], [ %349, %346 ], [ %354, %351 ], [ %359, %356 ], [ %364, %361 ], [ %369, %366 ]
%292 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 %290
%293 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.14, i64 0, i64 0))
%294 = load i64, i64* %292
%295 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.4, i64 0, i64 0), i64 %0, i64 %1, i64 %2, i64 17, i64 %290, i64 %294, i64 %291)
tail call void @abort()
unreachable
296: ; preds = %189
%297 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 2
%298 = load i64, i64* %297
%299 = add i64 %194, 2
%300 = icmp eq i64 %298, %299
br i1 %300, label %301, label %289
301: ; preds = %296
%302 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 3
%303 = load i64, i64* %302
%304 = add i64 %194, 3
%305 = icmp eq i64 %303, %304
br i1 %305, label %306, label %289
306: ; preds = %301
%307 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 4
%308 = load i64, i64* %307
%309 = add i64 %194, 4
%310 = icmp eq i64 %308, %309
br i1 %310, label %311, label %289
311: ; preds = %306
%312 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 5
%313 = load i64, i64* %312
%314 = add i64 %194, 5
%315 = icmp eq i64 %313, %314
br i1 %315, label %316, label %289
316: ; preds = %311
%317 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 6
%318 = load i64, i64* %317
%319 = add i64 %194, 6
%320 = icmp eq i64 %318, %319
br i1 %320, label %321, label %289
321: ; preds = %316
%322 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 7
%323 = load i64, i64* %322
%324 = add i64 %194, 7
%325 = icmp eq i64 %323, %324
br i1 %325, label %326, label %289
326: ; preds = %321
%327 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 8
%328 = load i64, i64* %327
%329 = add i64 %194, 8
%330 = icmp eq i64 %328, %329
br i1 %330, label %331, label %289
331: ; preds = %326
%332 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 9
%333 = load i64, i64* %332
%334 = add i64 %194, 9
%335 = icmp eq i64 %333, %334
br i1 %335, label %336, label %289
336: ; preds = %331
%337 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 10
%338 = load i64, i64* %337
%339 = add i64 %194, 10
%340 = icmp eq i64 %338, %339
br i1 %340, label %341, label %289
341: ; preds = %336
%342 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 11
%343 = load i64, i64* %342
%344 = add i64 %194, 11
%345 = icmp eq i64 %343, %344
br i1 %345, label %346, label %289
346: ; preds = %341
%347 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 12
%348 = load i64, i64* %347
%349 = add i64 %194, 12
%350 = icmp eq i64 %348, %349
br i1 %350, label %351, label %289
351: ; preds = %346
%352 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 13
%353 = load i64, i64* %352
%354 = add i64 %194, 13
%355 = icmp eq i64 %353, %354
br i1 %355, label %356, label %289
356: ; preds = %351
%357 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 14
%358 = load i64, i64* %357
%359 = add i64 %194, 14
%360 = icmp eq i64 %358, %359
br i1 %360, label %361, label %289
361: ; preds = %356
%362 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 15
%363 = load i64, i64* %362
%364 = add i64 %194, 15
%365 = icmp eq i64 %363, %364
br i1 %365, label %366, label %289
366: ; preds = %361
%367 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 17, i64 16
%368 = load i64, i64* %367
%369 = add i64 %194, 16
%370 = icmp eq i64 %368, %369
br i1 %370, label %371, label %289
371: ; preds = %366, %284
%372 = add nsw i64 %2, 1
%373 = icmp eq i64 %372, 16
br i1 %373, label %374, label %380
374: ; preds = %371
%375 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 1, i64 0
%376 = load i64, i64* %375
%377 = shl nsw i64 %5, 6
%378 = add nuw nsw i64 %377, %2
%379 = icmp eq i64 %376, %378
br i1 %379, label %396, label %389
380: ; preds = %371
%381 = shl i64 %0, 12
%382 = add i64 %2, 4096
%383 = add i64 %382, %381
%384 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 1, i64 0
%385 = load i64, i64* %384
%386 = shl nsw i64 %5, 6
%387 = add i64 %383, %386
%388 = icmp eq i64 %385, %387
br i1 %388, label %508, label %501
389: ; preds = %494, %487, %480, %473, %466, %459, %452, %445, %438, %431, %424, %417, %410, %403, %396, %374
%390 = phi i64 [ 1, %374 ], [ 2, %396 ], [ 3, %403 ], [ 4, %410 ], [ 5, %417 ], [ 6, %424 ], [ 7, %431 ], [ 8, %438 ], [ 9, %445 ], [ 10, %452 ], [ 11, %459 ], [ 12, %466 ], [ 13, %473 ], [ 14, %480 ], [ 15, %487 ], [ 16, %494 ]
%391 = phi i64* [ %375, %374 ], [ %397, %396 ], [ %404, %403 ], [ %411, %410 ], [ %418, %417 ], [ %425, %424 ], [ %432, %431 ], [ %439, %438 ], [ %446, %445 ], [ %453, %452 ], [ %460, %459 ], [ %467, %466 ], [ %474, %473 ], [ %481, %480 ], [ %488, %487 ], [ %495, %494 ]
%392 = phi i64 [ %378, %374 ], [ %401, %396 ], [ %408, %403 ], [ %415, %410 ], [ %422, %417 ], [ %429, %424 ], [ %436, %431 ], [ %443, %438 ], [ %450, %445 ], [ %457, %452 ], [ %464, %459 ], [ %471, %466 ], [ %478, %473 ], [ %485, %480 ], [ %492, %487 ], [ %499, %494 ]
%393 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.13, i64 0, i64 0))
%394 = load i64, i64* %391
%395 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0), i64 %0, i64 %1, i64 %2, i64 %390, i32 0, i64 %394, i64 %392)
tail call void @abort()
unreachable
396: ; preds = %374
%397 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 2, i64 0
%398 = load i64, i64* %397
%399 = shl i64 %1, 6
%400 = add i64 %399, 128
%401 = add nsw i64 %400, %2
%402 = icmp eq i64 %398, %401
br i1 %402, label %403, label %389
403: ; preds = %396
%404 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 3, i64 0
%405 = load i64, i64* %404
%406 = shl i64 %1, 6
%407 = add i64 %406, 192
%408 = add nsw i64 %407, %2
%409 = icmp eq i64 %405, %408
br i1 %409, label %410, label %389
410: ; preds = %403
%411 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 4, i64 0
%412 = load i64, i64* %411
%413 = shl i64 %1, 6
%414 = add i64 %413, 256
%415 = add nsw i64 %414, %2
%416 = icmp eq i64 %412, %415
br i1 %416, label %417, label %389
417: ; preds = %410
%418 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 5, i64 0
%419 = load i64, i64* %418
%420 = shl i64 %1, 6
%421 = add i64 %420, 320
%422 = add nsw i64 %421, %2
%423 = icmp eq i64 %419, %422
br i1 %423, label %424, label %389
424: ; preds = %417
%425 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 6, i64 0
%426 = load i64, i64* %425
%427 = shl i64 %1, 6
%428 = add i64 %427, 384
%429 = add nsw i64 %428, %2
%430 = icmp eq i64 %426, %429
br i1 %430, label %431, label %389
431: ; preds = %424
%432 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 7, i64 0
%433 = load i64, i64* %432
%434 = shl i64 %1, 6
%435 = add i64 %434, 448
%436 = add nsw i64 %435, %2
%437 = icmp eq i64 %433, %436
br i1 %437, label %438, label %389
438: ; preds = %431
%439 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 8, i64 0
%440 = load i64, i64* %439
%441 = shl i64 %1, 6
%442 = add i64 %441, 512
%443 = add nsw i64 %442, %2
%444 = icmp eq i64 %440, %443
br i1 %444, label %445, label %389
445: ; preds = %438
%446 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 9, i64 0
%447 = load i64, i64* %446
%448 = shl i64 %1, 6
%449 = add i64 %448, 576
%450 = add nsw i64 %449, %2
%451 = icmp eq i64 %447, %450
br i1 %451, label %452, label %389
452: ; preds = %445
%453 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 10, i64 0
%454 = load i64, i64* %453
%455 = shl i64 %1, 6
%456 = add i64 %455, 640
%457 = add nsw i64 %456, %2
%458 = icmp eq i64 %454, %457
br i1 %458, label %459, label %389
459: ; preds = %452
%460 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 11, i64 0
%461 = load i64, i64* %460
%462 = shl i64 %1, 6
%463 = add i64 %462, 704
%464 = add nsw i64 %463, %2
%465 = icmp eq i64 %461, %464
br i1 %465, label %466, label %389
466: ; preds = %459
%467 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 12, i64 0
%468 = load i64, i64* %467
%469 = shl i64 %1, 6
%470 = add i64 %469, 768
%471 = add nsw i64 %470, %2
%472 = icmp eq i64 %468, %471
br i1 %472, label %473, label %389
473: ; preds = %466
%474 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 13, i64 0
%475 = load i64, i64* %474
%476 = shl i64 %1, 6
%477 = add i64 %476, 832
%478 = add nsw i64 %477, %2
%479 = icmp eq i64 %475, %478
br i1 %479, label %480, label %389
480: ; preds = %473
%481 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 14, i64 0
%482 = load i64, i64* %481
%483 = shl i64 %1, 6
%484 = add i64 %483, 896
%485 = add nsw i64 %484, %2
%486 = icmp eq i64 %482, %485
br i1 %486, label %487, label %389
487: ; preds = %480
%488 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 15, i64 0
%489 = load i64, i64* %488
%490 = shl i64 %1, 6
%491 = add i64 %490, 960
%492 = add nsw i64 %491, %2
%493 = icmp eq i64 %489, %492
br i1 %493, label %494, label %389
494: ; preds = %487
%495 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 16, i64 0
%496 = load i64, i64* %495
%497 = shl i64 %1, 6
%498 = add i64 %497, 1024
%499 = add nsw i64 %498, %2
%500 = icmp eq i64 %496, %499
br i1 %500, label %615, label %389
501: ; preds = %606, %599, %592, %585, %578, %571, %564, %557, %550, %543, %536, %529, %522, %515, %508, %380
%502 = phi i64 [ 1, %380 ], [ 2, %508 ], [ 3, %515 ], [ 4, %522 ], [ 5, %529 ], [ 6, %536 ], [ 7, %543 ], [ 8, %550 ], [ 9, %557 ], [ 10, %564 ], [ 11, %571 ], [ 12, %578 ], [ 13, %585 ], [ 14, %592 ], [ 15, %599 ], [ 16, %606 ]
%503 = phi i64* [ %384, %380 ], [ %509, %508 ], [ %516, %515 ], [ %523, %522 ], [ %530, %529 ], [ %537, %536 ], [ %544, %543 ], [ %551, %550 ], [ %558, %557 ], [ %565, %564 ], [ %572, %571 ], [ %579, %578 ], [ %586, %585 ], [ %593, %592 ], [ %600, %599 ], [ %607, %606 ]
%504 = phi i64 [ %387, %380 ], [ %513, %508 ], [ %520, %515 ], [ %527, %522 ], [ %534, %529 ], [ %541, %536 ], [ %548, %543 ], [ %555, %550 ], [ %562, %557 ], [ %569, %564 ], [ %576, %571 ], [ %583, %578 ], [ %590, %585 ], [ %597, %592 ], [ %604, %599 ], [ %611, %606 ]
%505 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.12, i64 0, i64 0))
%506 = load i64, i64* %503
%507 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0), i64 %0, i64 %1, i64 %2, i64 %502, i32 0, i64 %506, i64 %504)
tail call void @abort()
unreachable
508: ; preds = %380
%509 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 2, i64 0
%510 = load i64, i64* %509
%511 = shl i64 %1, 6
%512 = add i64 %511, 128
%513 = add i64 %383, %512
%514 = icmp eq i64 %510, %513
br i1 %514, label %515, label %501
515: ; preds = %508
%516 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 3, i64 0
%517 = load i64, i64* %516
%518 = shl i64 %1, 6
%519 = add i64 %518, 192
%520 = add i64 %383, %519
%521 = icmp eq i64 %517, %520
br i1 %521, label %522, label %501
522: ; preds = %515
%523 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 4, i64 0
%524 = load i64, i64* %523
%525 = shl i64 %1, 6
%526 = add i64 %525, 256
%527 = add i64 %383, %526
%528 = icmp eq i64 %524, %527
br i1 %528, label %529, label %501
529: ; preds = %522
%530 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 5, i64 0
%531 = load i64, i64* %530
%532 = shl i64 %1, 6
%533 = add i64 %532, 320
%534 = add i64 %383, %533
%535 = icmp eq i64 %531, %534
br i1 %535, label %536, label %501
536: ; preds = %529
%537 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 6, i64 0
%538 = load i64, i64* %537
%539 = shl i64 %1, 6
%540 = add i64 %539, 384
%541 = add i64 %383, %540
%542 = icmp eq i64 %538, %541
br i1 %542, label %543, label %501
543: ; preds = %536
%544 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 7, i64 0
%545 = load i64, i64* %544
%546 = shl i64 %1, 6
%547 = add i64 %546, 448
%548 = add i64 %383, %547
%549 = icmp eq i64 %545, %548
br i1 %549, label %550, label %501
550: ; preds = %543
%551 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 8, i64 0
%552 = load i64, i64* %551
%553 = shl i64 %1, 6
%554 = add i64 %553, 512
%555 = add i64 %383, %554
%556 = icmp eq i64 %552, %555
br i1 %556, label %557, label %501
557: ; preds = %550
%558 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 9, i64 0
%559 = load i64, i64* %558
%560 = shl i64 %1, 6
%561 = add i64 %560, 576
%562 = add i64 %383, %561
%563 = icmp eq i64 %559, %562
br i1 %563, label %564, label %501
564: ; preds = %557
%565 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 10, i64 0
%566 = load i64, i64* %565
%567 = shl i64 %1, 6
%568 = add i64 %567, 640
%569 = add i64 %383, %568
%570 = icmp eq i64 %566, %569
br i1 %570, label %571, label %501
571: ; preds = %564
%572 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 11, i64 0
%573 = load i64, i64* %572
%574 = shl i64 %1, 6
%575 = add i64 %574, 704
%576 = add i64 %383, %575
%577 = icmp eq i64 %573, %576
br i1 %577, label %578, label %501
578: ; preds = %571
%579 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 12, i64 0
%580 = load i64, i64* %579
%581 = shl i64 %1, 6
%582 = add i64 %581, 768
%583 = add i64 %383, %582
%584 = icmp eq i64 %580, %583
br i1 %584, label %585, label %501
585: ; preds = %578
%586 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 13, i64 0
%587 = load i64, i64* %586
%588 = shl i64 %1, 6
%589 = add i64 %588, 832
%590 = add i64 %383, %589
%591 = icmp eq i64 %587, %590
br i1 %591, label %592, label %501
592: ; preds = %585
%593 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 14, i64 0
%594 = load i64, i64* %593
%595 = shl i64 %1, 6
%596 = add i64 %595, 896
%597 = add i64 %383, %596
%598 = icmp eq i64 %594, %597
br i1 %598, label %599, label %501
599: ; preds = %592
%600 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 15, i64 0
%601 = load i64, i64* %600
%602 = shl i64 %1, 6
%603 = add i64 %602, 960
%604 = add i64 %383, %603
%605 = icmp eq i64 %601, %604
br i1 %605, label %606, label %501
606: ; preds = %599
%607 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 16, i64 0
%608 = load i64, i64* %607
%609 = shl i64 %1, 6
%610 = add i64 %609, 1024
%611 = add i64 %383, %610
%612 = icmp eq i64 %608, %611
br i1 %612, label %613, label %501
613: ; preds = %606
%614 = icmp eq i64 %372, 32
br i1 %614, label %624, label %615
615: ; preds = %494, %613
%616 = add nsw i64 %2, 17
%617 = shl nsw i64 %0, 12
%618 = add i64 %616, %617
%619 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 1, i64 17
%620 = load i64, i64* %619
%621 = shl nsw i64 %5, 6
%622 = add i64 %618, %621
%623 = icmp eq i64 %620, %622
br i1 %623, label %750, label %743
624: ; preds = %613
%625 = add nuw nsw i64 %2, 17
%626 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 1, i64 17
%627 = load i64, i64* %626
%628 = shl nsw i64 %5, 6
%629 = add nuw nsw i64 %625, %628
%630 = icmp eq i64 %627, %629
br i1 %630, label %638, label %631
631: ; preds = %736, %729, %722, %715, %708, %701, %694, %687, %680, %673, %666, %659, %652, %645, %638, %624
%632 = phi i64 [ 1, %624 ], [ 2, %638 ], [ 3, %645 ], [ 4, %652 ], [ 5, %659 ], [ 6, %666 ], [ 7, %673 ], [ 8, %680 ], [ 9, %687 ], [ 10, %694 ], [ 11, %701 ], [ 12, %708 ], [ 13, %715 ], [ 14, %722 ], [ 15, %729 ], [ 16, %736 ]
%633 = phi i64* [ %626, %624 ], [ %639, %638 ], [ %646, %645 ], [ %653, %652 ], [ %660, %659 ], [ %667, %666 ], [ %674, %673 ], [ %681, %680 ], [ %688, %687 ], [ %695, %694 ], [ %702, %701 ], [ %709, %708 ], [ %716, %715 ], [ %723, %722 ], [ %730, %729 ], [ %737, %736 ]
%634 = phi i64 [ %629, %624 ], [ %643, %638 ], [ %650, %645 ], [ %657, %652 ], [ %664, %659 ], [ %671, %666 ], [ %678, %673 ], [ %685, %680 ], [ %692, %687 ], [ %699, %694 ], [ %706, %701 ], [ %713, %708 ], [ %720, %715 ], [ %727, %722 ], [ %734, %729 ], [ %741, %736 ]
%635 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.11, i64 0, i64 0))
%636 = load i64, i64* %633
%637 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.4, i64 0, i64 0), i64 %0, i64 %1, i64 %2, i64 %632, i64 17, i64 %636, i64 %634)
tail call void @abort()
unreachable
638: ; preds = %624
%639 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 2, i64 17
%640 = load i64, i64* %639
%641 = shl i64 %1, 6
%642 = add i64 %641, 128
%643 = add nsw i64 %625, %642
%644 = icmp eq i64 %640, %643
br i1 %644, label %645, label %631
645: ; preds = %638
%646 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 3, i64 17
%647 = load i64, i64* %646
%648 = shl i64 %1, 6
%649 = add i64 %648, 192
%650 = add nsw i64 %625, %649
%651 = icmp eq i64 %647, %650
br i1 %651, label %652, label %631
652: ; preds = %645
%653 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 4, i64 17
%654 = load i64, i64* %653
%655 = shl i64 %1, 6
%656 = add i64 %655, 256
%657 = add nsw i64 %625, %656
%658 = icmp eq i64 %654, %657
br i1 %658, label %659, label %631
659: ; preds = %652
%660 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 5, i64 17
%661 = load i64, i64* %660
%662 = shl i64 %1, 6
%663 = add i64 %662, 320
%664 = add nsw i64 %625, %663
%665 = icmp eq i64 %661, %664
br i1 %665, label %666, label %631
666: ; preds = %659
%667 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 6, i64 17
%668 = load i64, i64* %667
%669 = shl i64 %1, 6
%670 = add i64 %669, 384
%671 = add nsw i64 %625, %670
%672 = icmp eq i64 %668, %671
br i1 %672, label %673, label %631
673: ; preds = %666
%674 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 7, i64 17
%675 = load i64, i64* %674
%676 = shl i64 %1, 6
%677 = add i64 %676, 448
%678 = add nsw i64 %625, %677
%679 = icmp eq i64 %675, %678
br i1 %679, label %680, label %631
680: ; preds = %673
%681 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 8, i64 17
%682 = load i64, i64* %681
%683 = shl i64 %1, 6
%684 = add i64 %683, 512
%685 = add nsw i64 %625, %684
%686 = icmp eq i64 %682, %685
br i1 %686, label %687, label %631
687: ; preds = %680
%688 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 9, i64 17
%689 = load i64, i64* %688
%690 = shl i64 %1, 6
%691 = add i64 %690, 576
%692 = add nsw i64 %625, %691
%693 = icmp eq i64 %689, %692
br i1 %693, label %694, label %631
694: ; preds = %687
%695 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 10, i64 17
%696 = load i64, i64* %695
%697 = shl i64 %1, 6
%698 = add i64 %697, 640
%699 = add nsw i64 %625, %698
%700 = icmp eq i64 %696, %699
br i1 %700, label %701, label %631
701: ; preds = %694
%702 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 11, i64 17
%703 = load i64, i64* %702
%704 = shl i64 %1, 6
%705 = add i64 %704, 704
%706 = add nsw i64 %625, %705
%707 = icmp eq i64 %703, %706
br i1 %707, label %708, label %631
708: ; preds = %701
%709 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 12, i64 17
%710 = load i64, i64* %709
%711 = shl i64 %1, 6
%712 = add i64 %711, 768
%713 = add nsw i64 %625, %712
%714 = icmp eq i64 %710, %713
br i1 %714, label %715, label %631
715: ; preds = %708
%716 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 13, i64 17
%717 = load i64, i64* %716
%718 = shl i64 %1, 6
%719 = add i64 %718, 832
%720 = add nsw i64 %625, %719
%721 = icmp eq i64 %717, %720
br i1 %721, label %722, label %631
722: ; preds = %715
%723 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 14, i64 17
%724 = load i64, i64* %723
%725 = shl i64 %1, 6
%726 = add i64 %725, 896
%727 = add nsw i64 %625, %726
%728 = icmp eq i64 %724, %727
br i1 %728, label %729, label %631
729: ; preds = %722
%730 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 15, i64 17
%731 = load i64, i64* %730
%732 = shl i64 %1, 6
%733 = add i64 %732, 960
%734 = add nsw i64 %625, %733
%735 = icmp eq i64 %731, %734
br i1 %735, label %736, label %631
736: ; preds = %729
%737 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 16, i64 17
%738 = load i64, i64* %737
%739 = shl i64 %1, 6
%740 = add i64 %739, 1024
%741 = add nsw i64 %625, %740
%742 = icmp eq i64 %738, %741
br i1 %742, label %855, label %631
743: ; preds = %848, %841, %834, %827, %820, %813, %806, %799, %792, %785, %778, %771, %764, %757, %750, %615
%744 = phi i64 [ 1, %615 ], [ 2, %750 ], [ 3, %757 ], [ 4, %764 ], [ 5, %771 ], [ 6, %778 ], [ 7, %785 ], [ 8, %792 ], [ 9, %799 ], [ 10, %806 ], [ 11, %813 ], [ 12, %820 ], [ 13, %827 ], [ 14, %834 ], [ 15, %841 ], [ 16, %848 ]
%745 = phi i64* [ %619, %615 ], [ %751, %750 ], [ %758, %757 ], [ %765, %764 ], [ %772, %771 ], [ %779, %778 ], [ %786, %785 ], [ %793, %792 ], [ %800, %799 ], [ %807, %806 ], [ %814, %813 ], [ %821, %820 ], [ %828, %827 ], [ %835, %834 ], [ %842, %841 ], [ %849, %848 ]
%746 = phi i64 [ %622, %615 ], [ %755, %750 ], [ %762, %757 ], [ %769, %764 ], [ %776, %771 ], [ %783, %778 ], [ %790, %785 ], [ %797, %792 ], [ %804, %799 ], [ %811, %806 ], [ %818, %813 ], [ %825, %820 ], [ %832, %827 ], [ %839, %834 ], [ %846, %841 ], [ %853, %848 ]
%747 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str, i64 0, i64 0))
%748 = load i64, i64* %745
%749 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.4, i64 0, i64 0), i64 %0, i64 %1, i64 %2, i64 %744, i64 17, i64 %748, i64 %746)
tail call void @abort()
unreachable
750: ; preds = %615
%751 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 2, i64 17
%752 = load i64, i64* %751
%753 = shl i64 %1, 6
%754 = add i64 %753, 128
%755 = add i64 %618, %754
%756 = icmp eq i64 %752, %755
br i1 %756, label %757, label %743
757: ; preds = %750
%758 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 3, i64 17
%759 = load i64, i64* %758
%760 = shl i64 %1, 6
%761 = add i64 %760, 192
%762 = add i64 %618, %761
%763 = icmp eq i64 %759, %762
br i1 %763, label %764, label %743
764: ; preds = %757
%765 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 4, i64 17
%766 = load i64, i64* %765
%767 = shl i64 %1, 6
%768 = add i64 %767, 256
%769 = add i64 %618, %768
%770 = icmp eq i64 %766, %769
br i1 %770, label %771, label %743
771: ; preds = %764
%772 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 5, i64 17
%773 = load i64, i64* %772
%774 = shl i64 %1, 6
%775 = add i64 %774, 320
%776 = add i64 %618, %775
%777 = icmp eq i64 %773, %776
br i1 %777, label %778, label %743
778: ; preds = %771
%779 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 6, i64 17
%780 = load i64, i64* %779
%781 = shl i64 %1, 6
%782 = add i64 %781, 384
%783 = add i64 %618, %782
%784 = icmp eq i64 %780, %783
br i1 %784, label %785, label %743
785: ; preds = %778
%786 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 7, i64 17
%787 = load i64, i64* %786
%788 = shl i64 %1, 6
%789 = add i64 %788, 448
%790 = add i64 %618, %789
%791 = icmp eq i64 %787, %790
br i1 %791, label %792, label %743
792: ; preds = %785
%793 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 8, i64 17
%794 = load i64, i64* %793
%795 = shl i64 %1, 6
%796 = add i64 %795, 512
%797 = add i64 %618, %796
%798 = icmp eq i64 %794, %797
br i1 %798, label %799, label %743
799: ; preds = %792
%800 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 9, i64 17
%801 = load i64, i64* %800
%802 = shl i64 %1, 6
%803 = add i64 %802, 576
%804 = add i64 %618, %803
%805 = icmp eq i64 %801, %804
br i1 %805, label %806, label %743
806: ; preds = %799
%807 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 10, i64 17
%808 = load i64, i64* %807
%809 = shl i64 %1, 6
%810 = add i64 %809, 640
%811 = add i64 %618, %810
%812 = icmp eq i64 %808, %811
br i1 %812, label %813, label %743
813: ; preds = %806
%814 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 11, i64 17
%815 = load i64, i64* %814
%816 = shl i64 %1, 6
%817 = add i64 %816, 704
%818 = add i64 %618, %817
%819 = icmp eq i64 %815, %818
br i1 %819, label %820, label %743
820: ; preds = %813
%821 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 12, i64 17
%822 = load i64, i64* %821
%823 = shl i64 %1, 6
%824 = add i64 %823, 768
%825 = add i64 %618, %824
%826 = icmp eq i64 %822, %825
br i1 %826, label %827, label %743
827: ; preds = %820
%828 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 13, i64 17
%829 = load i64, i64* %828
%830 = shl i64 %1, 6
%831 = add i64 %830, 832
%832 = add i64 %618, %831
%833 = icmp eq i64 %829, %832
br i1 %833, label %834, label %743
834: ; preds = %827
%835 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 14, i64 17
%836 = load i64, i64* %835
%837 = shl i64 %1, 6
%838 = add i64 %837, 896
%839 = add i64 %618, %838
%840 = icmp eq i64 %836, %839
br i1 %840, label %841, label %743
841: ; preds = %834
%842 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 15, i64 17
%843 = load i64, i64* %842
%844 = shl i64 %1, 6
%845 = add i64 %844, 960
%846 = add i64 %618, %845
%847 = icmp eq i64 %843, %846
br i1 %847, label %848, label %743
848: ; preds = %841
%849 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 16, i64 17
%850 = load i64, i64* %849
%851 = shl i64 %1, 6
%852 = add i64 %851, 1024
%853 = add i64 %618, %852
%854 = icmp eq i64 %850, %853
br i1 %854, label %855, label %743
855: ; preds = %848, %736
br label %856
856: ; preds = %855, %856
%857 = phi i64 [ %898, %856 ], [ 1, %855 ]
%858 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 %857, i64 1
%859 = bitcast i64* %858 to <2 x i64>*
%860 = load <2 x i64>, <2 x i64>* %859
%861 = add nsw <2 x i64> %860, <i64 4096, i64 4096>
%862 = bitcast i64* %858 to <2 x i64>*
store <2 x i64> %861, <2 x i64>* %862
%863 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 %857, i64 3
%864 = bitcast i64* %863 to <2 x i64>*
%865 = load <2 x i64>, <2 x i64>* %864
%866 = add nsw <2 x i64> %865, <i64 4096, i64 4096>
%867 = bitcast i64* %863 to <2 x i64>*
store <2 x i64> %866, <2 x i64>* %867
%868 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 %857, i64 5
%869 = bitcast i64* %868 to <2 x i64>*
%870 = load <2 x i64>, <2 x i64>* %869
%871 = add nsw <2 x i64> %870, <i64 4096, i64 4096>
%872 = bitcast i64* %868 to <2 x i64>*
store <2 x i64> %871, <2 x i64>* %872
%873 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 %857, i64 7
%874 = bitcast i64* %873 to <2 x i64>*
%875 = load <2 x i64>, <2 x i64>* %874
%876 = add nsw <2 x i64> %875, <i64 4096, i64 4096>
%877 = bitcast i64* %873 to <2 x i64>*
store <2 x i64> %876, <2 x i64>* %877
%878 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 %857, i64 9
%879 = bitcast i64* %878 to <2 x i64>*
%880 = load <2 x i64>, <2 x i64>* %879
%881 = add nsw <2 x i64> %880, <i64 4096, i64 4096>
%882 = bitcast i64* %878 to <2 x i64>*
store <2 x i64> %881, <2 x i64>* %882
%883 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 %857, i64 11
%884 = bitcast i64* %883 to <2 x i64>*
%885 = load <2 x i64>, <2 x i64>* %884
%886 = add nsw <2 x i64> %885, <i64 4096, i64 4096>
%887 = bitcast i64* %883 to <2 x i64>*
store <2 x i64> %886, <2 x i64>* %887
%888 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 %857, i64 13
%889 = bitcast i64* %888 to <2 x i64>*
%890 = load <2 x i64>, <2 x i64>* %889
%891 = add nsw <2 x i64> %890, <i64 4096, i64 4096>
%892 = bitcast i64* %888 to <2 x i64>*
store <2 x i64> %891, <2 x i64>* %892
%893 = getelementptr inbounds [64 x i64], [64 x i64]* %3, i64 %857, i64 15
%894 = bitcast i64* %893 to <2 x i64>*
%895 = load <2 x i64>, <2 x i64>* %894
%896 = add nsw <2 x i64> %895, <i64 4096, i64 4096>
%897 = bitcast i64* %893 to <2 x i64>*
store <2 x i64> %896, <2 x i64>* %897
%898 = add nuw nsw i64 %857, 1
%899 = icmp eq i64 %898, 17
br i1 %899, label %900, label %856
900: ; preds = %856
ret void
}