void collapse_pyr(pyr, result, x_size, y_size, num_levels) int *pyr, x_size,
    y_size, num_levels;
register int *result;
{
  register int val, rpos, row_rpos;
  register int *im;
  register int rxsize, rysize, ixsize, iysize, ipos;
  register int ccount, lcount;
  register int rx2size;
  int level;
  for (level = num_levels - 1; level >= 0; level--) {
    rxsize = x_size >> level;
    rysize = y_size >> level;
    rx2size = rxsize << 1;
    ixsize = rxsize >> 1;
    iysize = rysize >> 1;
    for (rpos = 0; rpos < rxsize * rysize; rpos++)
      result[rpos] = 0;
    im = pyr;
    for (ipos = ixsize + 1, rpos = rx2size + 2, lcount = 1; lcount < iysize;
         ipos++, rpos += rxsize + 2, lcount++)
      for (ccount = 1; ccount < ixsize; ipos++, rpos += 2, ccount++) {
        if (val = im[ipos]) {
          result[rpos] += val;
          result[rpos - 1] += (val >>= 1);
          result[rpos + 1] += val;
          result[row_rpos = rpos - rxsize] += val;
          result[row_rpos - 1] += (val >>= 1);
          result[row_rpos + 1] += val;
          result[row_rpos = rpos + rxsize] += (val << 1);
          result[row_rpos - 1] += val;
          result[row_rpos + 1] += val;
        }
      }
    for (ipos = 1, rpos = 2, ccount = 1; ccount < ixsize;
         ipos++, rpos += 2, ccount++) {
      if (val = im[ipos]) {
        result[rpos] += val;
        result[rpos - 1] += (val >>= 1);
        result[rpos + 1] += val;
        result[row_rpos = rpos + rxsize] += val;
        result[row_rpos - 1] += (val >>= 1);
        result[row_rpos + 1] += val;
      }
    }
    for (ipos = ixsize, rpos = rx2size, ccount = 1; ccount < iysize;
         ipos += ixsize, rpos += rx2size, ccount++) {
      if (val = im[ipos]) {
        result[rpos] += val;
        result[rpos + 1] += (val >>= 1);
        result[row_rpos = rpos - rxsize] += val;
        result[row_rpos + 1] += (val >> 1);
        result[row_rpos = rpos + rxsize] += val;
        result[row_rpos + 1] += (val >> 1);
      }
    }
    for (ipos = ixsize * (iysize - 1) + 1, rpos = rxsize * (rysize - 1) + 2,
        ccount = 1;
         ccount < ixsize; ipos++, rpos += 2, ccount++) {
      if (val = (im[ipos] >> 1)) {
        result[rpos] += val;
        result[rpos - 1] += (val >>= 1);
        result[rpos + 1] += val;
      }
    }
    for (ipos = (ixsize << 1) - 1, rpos = rx2size + rxsize - 1, ccount = 1;
         ccount < iysize; ipos += ixsize, rpos += rx2size, ccount++) {
      if (val = (im[ipos] >> 1)) {
        result[rpos] += val;
        result[rpos - rxsize] += (val >>= 1);
        result[rpos + rxsize] += val;
      }
    }
    if (val = im[0]) {
      result[0] += val;
      result[1] += (val >>= 1);
      result[rxsize] += val;
      result[rxsize + 1] += (val >> 1);
    }
    if (val = (im[ixsize - 1] >> 1)) {
      result[rxsize - 1] += val;
      result[rx2size - 1] += val >> 1;
    }
    if (val = (im[ixsize * (iysize - 1)] >> 1)) {
      result[rxsize * (rysize - 1)] += val;
      result[rxsize * (rysize - 1) + 1] += val >> 1;
    }
    result[rxsize * rysize - 1] += im[ixsize * iysize - 1] >> 2;
    im = pyr + (2 * ixsize * iysize);
    internal_int_transpose(im, ixsize, iysize);
    for (ipos = ixsize, rpos = (rx2size) + 1, lcount = 1; lcount < iysize;
         ipos += 1, rpos += rxsize + 2, lcount++)
      for (ccount = 1; ccount < ixsize; ipos++, rpos += 2, ccount++) {
        if (val = im[ipos]) {
          result[rpos] += val;
          result[rpos - 1] -= (val >>= 1);
          result[rpos + 1] -= val;
          result[row_rpos = rpos - rxsize] += val;
          result[row_rpos - 1] -= (val >>= 1);
          result[row_rpos + 1] -= val;
          result[row_rpos = rpos + rxsize] += (val << 1);
          result[row_rpos - 1] -= val;
          result[row_rpos + 1] -= val;
        }
      }
    for (ipos = 0, rpos = 1, ccount = 1; ccount < ixsize;
         ipos++, rpos += 2, ccount++) {
      if (val = im[ipos]) {
        result[rpos] += val;
        result[rpos - 1] -= (val >>= 1);
        result[rpos + 1] -= val;
        result[row_rpos = rpos + rxsize] += val;
        result[row_rpos - 1] -= (val >>= 1);
        result[row_rpos + 1] -= val;
      }
    }
    for (ipos = (ixsize << 1) - 1, rpos = rx2size + rxsize - 1, ccount = 1;
         ccount < iysize; ipos += ixsize, rpos += rx2size, ccount++) {
      if (val = im[ipos]) {
        result[rpos] += val;
        result[rpos - 1] -= (val >>= 1);
        result[row_rpos = rpos - rxsize] += val;
        result[row_rpos - 1] -= (val >> 1);
        result[row_rpos = rpos + rxsize] += val;
        result[row_rpos - 1] -= (val >> 1);
      }
    }
    for (ipos = ixsize * (iysize - 1), rpos = rxsize * (rysize - 1) + 1,
        ccount = 1;
         ccount < ixsize; ipos++, rpos += 2, ccount++) {
      if (val = (im[ipos] >> 1)) {
        result[rpos] += val;
        result[rpos - 1] -= (val >>= 1);
        result[rpos + 1] -= val;
      }
    }
    for (ipos = ixsize, rpos = rx2size, ccount = 1; ccount < iysize;
         ipos += ixsize, rpos += rx2size, ccount++) {
      val = -(im[ipos] >> 1);
      if (val) {
        result[rpos] += val;
        result[rpos - rxsize] += (val >>= 1);
        result[rpos + rxsize] += val;
      }
    }
    if (val = -(im[0] >> 1)) {
      result[0] += val;
      result[rxsize] += val >> 1;
    }
    if (val = im[ixsize - 1]) {
      result[rxsize - 1] += val;
      result[rxsize - 2] -= (val >>= 1);
      result[rx2size - 1] += val;
      result[rx2size - 2] -= val >> 1;
    }
    result[rxsize * (rysize - 1)] -= im[ixsize * (iysize - 1)] >> 2;
    if (val = (im[ixsize * iysize - 1] >> 1)) {
      result[rxsize * rysize - 1] += val;
      result[rxsize * rysize - 2] -= val >> 1;
    }
    im = pyr + (ixsize * iysize);
    for (ipos = 1, rpos = rxsize + 2, lcount = 1; lcount < iysize;
         ipos += 1, rpos += rxsize + 2, lcount++)
      for (ccount = 1; ccount < ixsize; ipos++, rpos += 2, ccount++) {
        if (val = im[ipos]) {
          result[rpos] += val;
          result[rpos - 1] += (val >>= 1);
          result[rpos + 1] += val;
          result[row_rpos = rpos - rxsize] -= val;
          result[row_rpos - 1] -= (val >>= 1);
          result[row_rpos + 1] -= val;
          result[row_rpos = rpos + rxsize] -= (val << 1);
          result[row_rpos - 1] -= val;
          result[row_rpos + 1] -= val;
        }
      }
    for (ipos = 1, rpos = 2, ccount = 1; ccount < ixsize;
         ipos++, rpos += 2, ccount++) {
      if (val = -(im[ipos] >> 1)) {
        result[rpos] += val;
        result[rpos - 1] += (val >>= 1);
        result[rpos + 1] += val;
      }
    }
    for (ipos = 0, rpos = rxsize, ccount = 1; ccount < iysize;
         ipos += ixsize, rpos += rx2size, ccount++) {
      if (val = im[ipos]) {
        result[rpos] += val;
        result[rpos + 1] += (val >>= 1);
        result[row_rpos = rpos - rxsize] -= val;
        result[row_rpos + 1] -= (val >> 1);
        result[row_rpos = rpos + rxsize] -= val;
        result[row_rpos + 1] -= (val >> 1);
      }
    }
    for (ipos = ixsize * (iysize - 1) + 1, rpos = rxsize * (rysize - 1) + 2,
        ccount = 1;
         ccount < ixsize; ipos++, rpos += 2, ccount++) {
      if (val = im[ipos]) {
        result[rpos] += val;
        result[rpos - 1] += (val >>= 1);
        result[rpos + 1] += val;
        result[row_rpos = rpos - rxsize] -= val;
        result[row_rpos + 1] -= (val >>= 1);
        result[row_rpos - 1] -= val;
      }
    }
    for (ipos = ixsize - 1, rpos = rx2size - 1, ccount = 1; ccount < iysize;
         ipos += ixsize, rpos += rx2size, ccount++) {
      if (val = (im[ipos] >> 1)) {
        result[rpos] += val;
        result[rpos - rxsize] -= (val >>= 1);
        result[rpos + rxsize] -= val;
      }
    }
    if (val = -(im[0] >> 1)) {
      result[0] += val;
      result[1] += val >> 1;
    }
    result[rxsize - 1] -= im[ixsize - 1] >> 2;
    if (val = im[ixsize * (iysize - 1)]) {
      result[rxsize * (rysize - 1)] += val;
      result[rxsize * (rysize - 1) + 1] += (val >>= 1);
      result[rxsize * (rysize - 2)] -= val;
      result[rxsize * (rysize - 2) + 1] -= val >> 1;
    }
    if (val = (im[ixsize * iysize - 1] >> 1)) {
      result[rxsize * rysize - 1] += val;
      result[rxsize * (rysize - 1) - 1] -= val >> 1;
    }
    im = pyr + (3 * ixsize * iysize);
    for (ipos = 0, rpos = rxsize + 1, lcount = 1; lcount < iysize;
         ipos += 1, rpos += rxsize + 2, lcount++)
      for (ccount = 1; ccount < ixsize; ipos++, rpos += 2, ccount++) {
        if (val = im[ipos]) {
          result[rpos] += val;
          result[rpos - 1] -= (val >>= 1);
          result[rpos + 1] -= val;
          result[row_rpos = rpos - rxsize] -= val;
          result[row_rpos - 1] += (val >>= 1);
          result[row_rpos + 1] += val;
          result[row_rpos = rpos + rxsize] -= (val << 1);
          result[row_rpos - 1] += val;
          result[row_rpos + 1] += val;
        }
      }
    for (ipos = 0, rpos = 1, ccount = 1; ccount < ixsize;
         ipos++, rpos += 2, ccount++) {
      if (val = (im[ipos] >> 1)) {
        result[rpos] -= val;
        result[rpos - 1] += (val >>= 1);
        result[rpos + 1] += val;
      }
    }
    for (ipos = 0, rpos = rxsize, ccount = 1; ccount < iysize;
         ipos += ixsize, rpos += rx2size, ccount++) {
      if (val = (im[ipos] >> 1)) {
        result[rpos] -= val;
        result[rpos + rxsize] += (val >>= 1);
        result[rpos - rxsize] += val;
      }
    }
    for (ipos = ixsize * (iysize - 1), rpos = rxsize * (rysize - 1) + 1,
        ccount = 1;
         ccount < ixsize; ipos++, rpos += 2, ccount++) {
      if (val = im[ipos]) {
        result[rpos] += val;
        result[rpos - 1] -= (val >>= 1);
        result[rpos + 1] -= val;
        result[row_rpos = rpos - rxsize] -= val;
        result[row_rpos + 1] += (val >>= 1);
        result[row_rpos - 1] += val;
      }
    }
    for (ipos = ixsize - 1, rpos = rx2size - 1, ccount = 1; ccount < iysize;
         ipos += ixsize, rpos += rx2size, ccount++) {
      if (val = im[ipos]) {
        result[rpos] += val;
        result[rpos - 1] -= (val >>= 1);
        result[row_rpos = rpos - rxsize] -= val;
        result[row_rpos - 1] += val >> 1;
        result[row_rpos = rpos + rxsize] -= val;
        result[row_rpos - 1] += val >> 1;
      }
    }
    result[0] += (im[0] >> 2);
    if (val = (im[ixsize - 1] >> 1)) {
      result[rxsize - 1] -= val;
      result[rxsize - 2] += val >> 1;
    }
    if (val = (im[ixsize * (iysize - 1)] >> 1)) {
      result[rxsize * (rysize - 1)] -= val;
      result[rxsize * (rysize - 2)] += val >> 1;
    }
    if (val = im[ixsize * iysize - 1]) {
      result[row_rpos = rxsize * rysize - 1] += val;
      result[row_rpos - 1] -= (val >>= 1);
      result[row_rpos - rxsize] -= val;
      result[row_rpos - rxsize - 1] += val >> 1;
    }
    if (level > 0)
      for (im = pyr, rpos = 0; rpos < rxsize * rysize; rpos++)
        im[rpos] = result[rpos];
  }
}


x86 assembly (clang, -O0):
<collapse_pyr>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x54(%rbp)
cmpl   $0x0,-0x54(%rbp)
jl     2aab <collapse_pyr+0x199b>
mov    -0x14(%rbp),%eax
mov    -0x54(%rbp),%ecx
sar    %cl,%eax
mov    %eax,-0x34(%rbp)
mov    -0x18(%rbp),%eax
mov    -0x54(%rbp),%ecx
sar    %cl,%eax
mov    %eax,-0x38(%rbp)
mov    -0x34(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x50(%rbp)
mov    -0x34(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x38(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x40(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x34(%rbp),%ecx
imul   -0x38(%rbp),%ecx
cmp    %ecx,%eax
jge    11a4 <collapse_pyr+0x94>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1175 <collapse_pyr+0x65>
mov    -0x8(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    131e <collapse_pyr+0x20e>
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    12f6 <collapse_pyr+0x1e6>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     12d1 <collapse_pyr+0x1c1>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
shl    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    12d6 <collapse_pyr+0x1c6>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    11d8 <collapse_pyr+0xc8>
jmp    12fb <collapse_pyr+0x1eb>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x34(%rbp),%eax
add    $0x2,%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    11c5 <collapse_pyr+0xb5>
movl   $0x1,-0x44(%rbp)
movl   $0x2,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    1409 <collapse_pyr+0x2f9>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     13e4 <collapse_pyr+0x2d4>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    13e9 <collapse_pyr+0x2d9>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1333 <collapse_pyr+0x223>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    14f5 <collapse_pyr+0x3e5>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     14d0 <collapse_pyr+0x3c0>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    14d5 <collapse_pyr+0x3c5>
mov    -0x3c(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    141c <collapse_pyr+0x30c>
mov    -0x3c(%rbp),%eax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x38(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    15ae <collapse_pyr+0x49e>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1589 <collapse_pyr+0x479>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    158e <collapse_pyr+0x47e>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1520 <collapse_pyr+0x410>
mov    -0x3c(%rbp),%eax
shl    $0x1,%eax
sub    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    -0x34(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    165b <collapse_pyr+0x54b>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1636 <collapse_pyr+0x526>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    163b <collapse_pyr+0x52b>
mov    -0x3c(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    15cd <collapse_pyr+0x4bd>
mov    -0x30(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     16b5 <collapse_pyr+0x5a5>
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x20(%rbp),%ecx
sar    $0x1,%ecx
mov    %ecx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
add    0x4(%rax),%ecx
mov    %ecx,0x4(%rax)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1703 <collapse_pyr+0x5f3>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x50(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    -0x40(%rbp),%edx
sub    $0x1,%edx
imul   %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1766 <collapse_pyr+0x656>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x38(%rbp),%esi
sub    $0x1,%esi
imul   %esi,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x38(%rbp),%esi
sub    $0x1,%esi
imul   %esi,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
imul   -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sar    $0x2,%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   -0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x3c(%rbp),%ecx
shl    $0x1,%ecx
imul   -0x40(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rdi
mov    -0x3c(%rbp),%esi
mov    -0x40(%rbp),%edx
mov    $0x0,%al
call   1030 <internal_int_transpose@plt>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    193c <collapse_pyr+0x82c>
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    1914 <collapse_pyr+0x804>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     18ef <collapse_pyr+0x7df>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
shl    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
jmp    18f4 <collapse_pyr+0x7e4>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    17ea <collapse_pyr+0x6da>
jmp    1919 <collapse_pyr+0x809>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x34(%rbp),%eax
add    $0x2,%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    17d7 <collapse_pyr+0x6c7>
movl   $0x0,-0x44(%rbp)
movl   $0x1,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    1a2f <collapse_pyr+0x91f>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1a0a <collapse_pyr+0x8fa>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
jmp    1a0f <collapse_pyr+0x8ff>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1951 <collapse_pyr+0x841>
mov    -0x3c(%rbp),%eax
shl    $0x1,%eax
sub    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    -0x34(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    1b2d <collapse_pyr+0xa1d>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1b08 <collapse_pyr+0x9f8>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
jmp    1b0d <collapse_pyr+0x9fd>
mov    -0x3c(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1a4e <collapse_pyr+0x93e>
mov    -0x3c(%rbp),%eax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
mov    %eax,-0x44(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x38(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    1be7 <collapse_pyr+0xad7>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1bc2 <collapse_pyr+0xab2>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
jmp    1bc7 <collapse_pyr+0xab7>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1b55 <collapse_pyr+0xa45>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    1c8d <collapse_pyr+0xb7d>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
sar    $0x1,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
cmpl   $0x0,-0x20(%rbp)
je     1c68 <collapse_pyr+0xb58>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    1c6d <collapse_pyr+0xb5d>
mov    -0x3c(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1bfa <collapse_pyr+0xaea>
mov    -0x30(%rbp),%rax
mov    (%rax),%ecx
sar    $0x1,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1cc5 <collapse_pyr+0xbb5>
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1d46 <collapse_pyr+0xc36>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x50(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    -0x10(%rbp),%rax
mov    -0x50(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    -0x40(%rbp),%edx
sub    $0x1,%edx
imul   %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%esi
sar    $0x2,%esi
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x38(%rbp),%edx
sub    $0x1,%edx
imul   %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
imul   -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1dd6 <collapse_pyr+0xcc6>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   -0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   -0x38(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x3c(%rbp),%ecx
imul   -0x40(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
movl   $0x1,-0x44(%rbp)
mov    -0x34(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    1f6b <collapse_pyr+0xe5b>
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    1f43 <collapse_pyr+0xe33>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1f1e <collapse_pyr+0xe0e>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
shl    $0x1,%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
jmp    1f23 <collapse_pyr+0xe13>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1e19 <collapse_pyr+0xd09>
jmp    1f48 <collapse_pyr+0xe38>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x34(%rbp),%eax
add    $0x2,%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1e06 <collapse_pyr+0xcf6>
movl   $0x1,-0x44(%rbp)
movl   $0x2,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    2012 <collapse_pyr+0xf02>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
sar    $0x1,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     1fed <collapse_pyr+0xedd>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    1ff2 <collapse_pyr+0xee2>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1f80 <collapse_pyr+0xe70>
movl   $0x0,-0x44(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    2107 <collapse_pyr+0xff7>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     20e2 <collapse_pyr+0xfd2>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
jmp    20e7 <collapse_pyr+0xfd7>
mov    -0x3c(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    2026 <collapse_pyr+0xf16>
mov    -0x3c(%rbp),%eax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x38(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    220e <collapse_pyr+0x10fe>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     21e9 <collapse_pyr+0x10d9>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
jmp    21ee <collapse_pyr+0x10de>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    2132 <collapse_pyr+0x1022>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    22b9 <collapse_pyr+0x11a9>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     2294 <collapse_pyr+0x1184>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
jmp    2299 <collapse_pyr+0x1189>
mov    -0x3c(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    2227 <collapse_pyr+0x1117>
mov    -0x30(%rbp),%rax
mov    (%rax),%ecx
sar    $0x1,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     22ed <collapse_pyr+0x11dd>
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x20(%rbp),%ecx
sar    $0x1,%ecx
mov    -0x10(%rbp),%rax
add    0x4(%rax),%ecx
mov    %ecx,0x4(%rax)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%esi
sar    $0x2,%esi
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    -0x40(%rbp),%edx
sub    $0x1,%edx
imul   %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     23ba <collapse_pyr+0x12aa>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x38(%rbp),%esi
sub    $0x1,%esi
imul   %esi,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x38(%rbp),%esi
sub    $0x1,%esi
imul   %esi,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x38(%rbp),%edx
sub    $0x2,%edx
imul   %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x38(%rbp),%edx
sub    $0x2,%edx
imul   %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
imul   -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     241b <collapse_pyr+0x130b>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   -0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x38(%rbp),%edx
sub    $0x1,%edx
imul   %edx,%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
imul   $0x3,-0x3c(%rbp),%ecx
imul   -0x40(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    25ad <collapse_pyr+0x149d>
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    2585 <collapse_pyr+0x1475>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     2560 <collapse_pyr+0x1450>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
shl    $0x1,%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    2565 <collapse_pyr+0x1455>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    245f <collapse_pyr+0x134f>
jmp    258a <collapse_pyr+0x147a>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x34(%rbp),%eax
add    $0x2,%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    244c <collapse_pyr+0x133c>
movl   $0x0,-0x44(%rbp)
movl   $0x1,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    2652 <collapse_pyr+0x1542>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     262d <collapse_pyr+0x151d>
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    2632 <collapse_pyr+0x1522>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    25c2 <collapse_pyr+0x14b2>
movl   $0x0,-0x44(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    26f6 <collapse_pyr+0x15e6>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     26d1 <collapse_pyr+0x15c1>
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    26d6 <collapse_pyr+0x15c6>
mov    -0x3c(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    2666 <collapse_pyr+0x1556>
mov    -0x3c(%rbp),%eax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
mov    %eax,-0x44(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x38(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    27fa <collapse_pyr+0x16ea>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     27d5 <collapse_pyr+0x16c5>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    %edx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    27da <collapse_pyr+0x16ca>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    271e <collapse_pyr+0x160e>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    28f2 <collapse_pyr+0x17e2>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     28cd <collapse_pyr+0x17bd>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x34(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    28d2 <collapse_pyr+0x17c2>
mov    -0x3c(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    2813 <collapse_pyr+0x1703>
mov    -0x30(%rbp),%rax
mov    (%rax),%ecx
sar    $0x2,%ecx
mov    -0x10(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     2953 <collapse_pyr+0x1843>
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    -0x40(%rbp),%edx
sub    $0x1,%edx
imul   %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     29b5 <collapse_pyr+0x18a5>
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x38(%rbp),%edx
sub    $0x1,%edx
imul   %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x38(%rbp),%esi
sub    $0x2,%esi
imul   %esi,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
mov    -0x3c(%rbp),%ecx
imul   -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
je     2a44 <collapse_pyr+0x1934>
mov    -0x20(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   -0x38(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
sar    $0x1,%esi
mov    %esi,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    -0x34(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%edx
sar    $0x1,%edx
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
cmpl   $0x0,-0x54(%rbp)
jle    2a98 <collapse_pyr+0x1988>
mov    -0x8(%rbp),%rax
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x34(%rbp),%ecx
imul   -0x38(%rbp),%ecx
cmp    %ecx,%eax
jge    2a93 <collapse_pyr+0x1983>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x30(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    2a5d <collapse_pyr+0x194d>
jmp    2a98 <collapse_pyr+0x1988>
jmp    2a9d <collapse_pyr+0x198d>
mov    -0x54(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x54(%rbp)
jmp    1133 <collapse_pyr+0x23>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<collapse_pyr>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xf8,%rsp
mov    %ecx,0xa8(%rsp)
mov    %edx,0xa4(%rsp)
test   %r8d,%r8d
jle    2379 <collapse_pyr+0x1259>
mov    %rsi,%r14
lea    0x4(%rsi),%rax
mov    %rax,0x88(%rsp)
lea    0x4(%rdi),%rax
mov    %rax,0xc0(%rsp)
lea    0x8(%rsi),%rax
mov    %rax,0xd8(%rsp)
lea    -0x4(%rdi),%rax
mov    %rax,0xb8(%rsp)
lea    0x10(%rdi),%rax
mov    %rax,0xd0(%rsp)
lea    0x10(%rsi),%rax
mov    %rax,0xc8(%rsp)
mov    %rdi,0x18(%rsp)
jmp    11a9 <collapse_pyr+0x89>
nopw   0x0(%rax,%rax,1)
cmp    $0x1,%ebx
jle    2379 <collapse_pyr+0x1259>
mov    %r8d,%eax
mov    %rax,0xf0(%rsp)
lea    -0x1(%rax),%ecx
mov    0xa4(%rsp),%eax
mov    %eax,%edx
sar    %cl,%edx
mov    0xa8(%rsp),%eax
mov    %eax,%esi
mov    %ecx,0xb4(%rsp)
sar    %cl,%esi
mov    %rdx,(%rsp)
mov    %edx,%eax
mov    %rsi,0x10(%rsp)
imul   %esi,%eax
mov    %eax,%ebx
mov    %eax,0x54(%rsp)
test   %eax,%eax
jle    11fe <collapse_pyr+0xde>
lea    0x0(,%rbx,4),%rdx
mov    %r14,%rdi
xor    %esi,%esi
call   1040 <memset@plt>
mov    %rbx,0xe8(%rsp)
mov    (%rsp),%rax
lea    (%rax,%rax,1),%ecx
mov    %rcx,0x70(%rsp)
mov    %eax,%ecx
sar    %ecx
mov    %rcx,0x40(%rsp)
mov    0x10(%rsp),%rcx
mov    %ecx,%edx
sar    %edx
mov    %rdx,0x48(%rsp)
cltq
mov    %rax,0x8(%rsp)
cmp    $0x4,%ecx
jl     1330 <collapse_pyr+0x210>
mov    0x70(%rsp),%rax
lea    0x2(%rax),%r11d
mov    0x8(%rsp),%rcx
lea    0x2(%rcx),%r9d
mov    0x40(%rsp),%rsi
cmp    $0x3,%esi
mov    $0x2,%eax
cmovge %esi,%eax
mov    0x48(%rsp),%rdx
cmp    $0x3,%edx
mov    $0x2,%r10d
cmovge %edx,%r10d
lea    0x0(,%rcx,4),%rcx
mov    %r14,%rdx
sub    %rcx,%rdx
mov    %rdx,0x28(%rsp)
lea    (%rax,%rax,1),%r12
add    $0xfffffffffffffffe,%r12
mov    $0x1,%r15d
jmp    12a3 <collapse_pyr+0x183>
add    %eax,%r11d
add    %r9d,%r11d
add    $0x1,%r15d
cmp    %r10d,%r15d
je     1330 <collapse_pyr+0x210>
add    $0x1,%esi
cmpl   $0x4,(%rsp)
jl     1293 <collapse_pyr+0x173>
movslq %esi,%rax
movslq %r11d,%rdx
lea    (%r14,%rdx,4),%rbp
mov    0x28(%rsp),%rcx
lea    (%rcx,%rdx,4),%rcx
add    0x8(%rsp),%rdx
lea    (%r14,%rdx,4),%rdx
mov    0x18(%rsp),%rdi
lea    (%rdi,%rax,4),%r8
xor    %eax,%eax
jmp    12ec <collapse_pyr+0x1cc>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x2,%rax
add    $0x1,%esi
cmp    %eax,%r12d
je     1290 <collapse_pyr+0x170>
mov    (%r8,%rax,2),%edi
test   %edi,%edi
je     12e0 <collapse_pyr+0x1c0>
add    %edi,0x0(%rbp,%rax,4)
mov    %edi,%r13d
sar    %r13d
add    %r13d,-0x4(%rbp,%rax,4)
add    %r13d,0x4(%rbp,%rax,4)
add    %r13d,(%rcx,%rax,4)
sar    $0x2,%edi
add    %edi,-0x4(%rcx,%rax,4)
add    %edi,0x4(%rcx,%rax,4)
lea    (%rdi,%rdi,1),%ebx
add    %ebx,(%rdx,%rax,4)
add    %edi,-0x4(%rdx,%rax,4)
add    %edi,0x4(%rdx,%rax,4)
jmp    12e0 <collapse_pyr+0x1c0>
nopw   0x0(%rax,%rax,1)
cmpl   $0x4,(%rsp)
mov    0x18(%rsp),%rbp
mov    0x48(%rsp),%r15
mov    0x40(%rsp),%r12
jl     13a0 <collapse_pyr+0x280>
mov    (%rsp),%ecx
cmp    $0x3,%r12d
mov    $0x2,%eax
cmovge %r12d,%eax
lea    (%r14,%rcx,4),%rcx
mov    $0x1,%edx
jmp    1369 <collapse_pyr+0x249>
add    $0x1,%rdx
cmp    %rdx,%rax
je     13a0 <collapse_pyr+0x280>
mov    0x0(%rbp,%rdx,4),%esi
test   %esi,%esi
je     1360 <collapse_pyr+0x240>
add    %esi,(%r14,%rdx,8)
mov    %esi,%edi
sar    %edi
add    %edi,-0x4(%r14,%rdx,8)
add    %edi,0x4(%r14,%rdx,8)
add    %edi,(%rcx,%rdx,8)
sar    $0x2,%esi
add    %esi,-0x4(%rcx,%rdx,8)
add    %esi,0x4(%rcx,%rdx,8)
jmp    1360 <collapse_pyr+0x240>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movslq %r12d,%r11
movslq 0x70(%rsp),%rax
mov    %rax,0x30(%rsp)
cmpl   $0x4,0x10(%rsp)
jl     1450 <collapse_pyr+0x330>
cmp    $0x3,%r15d
mov    $0x2,%eax
cmovge %r15d,%eax
mov    0x88(%rsp),%rsi
mov    0x30(%rsp),%rbp
lea    (%rsi,%rbp,4),%rcx
lea    0x0(,%rbp,4),%rdx
mov    0x8(%rsp),%rdi
lea    0x0(,%rdi,4),%r9
neg    %r9
add    %rbp,%rdi
lea    (%rsi,%rdi,4),%rdi
mov    0x18(%rsp),%rsi
lea    (%rsi,%r11,4),%rbp
lea    0x0(,%r11,4),%r8
add    $0xffffffff,%eax
jmp    141e <collapse_pyr+0x2fe>
nopl   0x0(%rax,%rax,1)
add    %rdx,%rcx
add    %rdx,%rdi
add    %r8,%rbp
add    $0xffffffff,%eax
je     1450 <collapse_pyr+0x330>
mov    0x0(%rbp),%ebx
test   %ebx,%ebx
je     1410 <collapse_pyr+0x2f0>
add    %ebx,-0x4(%rcx)
mov    %ebx,%esi
sar    %esi
add    %esi,(%rcx)
add    %esi,-0x4(%rcx,%r9,1)
sar    $0x2,%ebx
add    %ebx,(%rcx,%r9,1)
add    %esi,-0x4(%rdi)
add    %ebx,(%rdi)
jmp    1410 <collapse_pyr+0x2f0>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x1(%r15),%r8d
imul   %r12d,%r8d
lea    0x1(%r8),%r9d
mov    0x10(%rsp),%rax
lea    -0x1(%rax),%r13d
mov    (%rsp),%rax
imul   %eax,%r13d
lea    0x2(%r13),%ebx
cmp    $0x4,%eax
mov    0x18(%rsp),%rsi
jl     14d0 <collapse_pyr+0x3b0>
movslq %r9d,%rdx
movslq %ebx,%rcx
cmp    $0x3,%r12d
mov    $0x2,%eax
cmovge %r12d,%eax
lea    (%r14,%rcx,4),%rcx
lea    (%rsi,%rdx,4),%rdx
add    $0xffffffffffffffff,%rax
xor    %esi,%esi
jmp    14a8 <collapse_pyr+0x388>
xchg   %ax,%ax
add    $0x1,%rsi
cmp    %esi,%eax
je     14d0 <collapse_pyr+0x3b0>
mov    (%rdx,%rsi,4),%ebp
cmp    $0x2,%ebp
jb     14a0 <collapse_pyr+0x380>
mov    %ebp,%edi
sar    %edi
add    %edi,(%rcx,%rsi,8)
sar    $0x2,%ebp
add    %ebp,-0x4(%rcx,%rsi,8)
add    %ebp,0x4(%rcx,%rsi,8)
jmp    14a0 <collapse_pyr+0x380>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %ebx,0xac(%rsp)
mov    %r9d,0xb0(%rsp)
mov    (%rsp),%rax
mov    %eax,%ecx
and    $0xfffffffe,%ecx
mov    %rcx,0x38(%rsp)
lea    (%rax,%rax,2),%eax
add    $0xffffffff,%eax
mov    %eax,0x58(%rsp)
cmpl   $0x4,0x10(%rsp)
jl     15a0 <collapse_pyr+0x480>
mov    0x38(%rsp),%rax
add    $0xfffffffe,%eax
or     $0x1,%eax
cltq
movslq 0x58(%rsp),%rdi
cmp    $0x3,%r15d
mov    $0x2,%ecx
cmovge %r15d,%ecx
lea    (%r14,%rdi,4),%rdx
mov    0x30(%rsp),%rsi
lea    0x0(,%rsi,4),%rsi
mov    0x8(%rsp),%rbp
lea    0x0(,%rbp,4),%r9
neg    %r9
add    %rbp,%rdi
lea    (%r14,%rdi,4),%rbp
mov    0xc0(%rsp),%rdi
lea    (%rdi,%rax,4),%rbx
add    $0xfffffffffffffffc,%rbx
lea    0x0(,%r11,4),%r10
add    $0xffffffff,%ecx
jmp    157e <collapse_pyr+0x45e>
cs nopw 0x0(%rax,%rax,1)
add    %rsi,%rdx
add    %rsi,%rbp
add    %r10,%rbx
add    $0xffffffff,%ecx
je     15a0 <collapse_pyr+0x480>
mov    (%rbx),%eax
cmp    $0x2,%eax
jb     1570 <collapse_pyr+0x450>
mov    %eax,%edi
sar    %edi
add    %edi,(%rdx)
sar    $0x2,%eax
add    %eax,(%rdx,%r9,1)
add    %eax,0x0(%rbp)
jmp    1570 <collapse_pyr+0x450>
nopw   0x0(%rax,%rax,1)
mov    0x18(%rsp),%rdx
mov    (%rdx),%eax
test   %eax,%eax
je     15c7 <collapse_pyr+0x4a7>
add    %eax,(%r14)
mov    %eax,%ecx
sar    %ecx
add    %ecx,0x4(%r14)
mov    0x8(%rsp),%rsi
add    %ecx,(%r14,%rsi,4)
sar    $0x2,%eax
add    %eax,0x4(%r14,%rsi,4)
mov    -0x4(%rdx,%r11,4),%eax
cmp    $0x2,%eax
jb     15ec <collapse_pyr+0x4cc>
mov    %eax,%ecx
sar    %ecx
mov    0x8(%rsp),%rsi
add    %ecx,-0x4(%r14,%rsi,4)
sar    $0x2,%eax
mov    0x30(%rsp),%rcx
add    %eax,-0x4(%r14,%rcx,4)
mov    %r11,0x98(%rsp)
movslq %r8d,%rax
mov    %rax,0x80(%rsp)
mov    (%rdx,%rax,4),%eax
mov    %r13,0x68(%rsp)
movslq %r13d,%rcx
mov    %rcx,0x78(%rsp)
cmp    $0x2,%eax
jb     1629 <collapse_pyr+0x509>
mov    %eax,%ecx
sar    %ecx
mov    0x78(%rsp),%rsi
add    %ecx,(%r14,%rsi,4)
sar    $0x2,%eax
add    %eax,0x4(%r14,%rsi,4)
mov    %r12d,%eax
imul   %r15d,%eax
mov    %rax,0xe0(%rsp)
cltq
mov    %rax,0x20(%rsp)
mov    -0x4(%rdx,%rax,4),%eax
sar    $0x2,%eax
movslq 0x54(%rsp),%rcx
mov    %rcx,0x90(%rsp)
add    %eax,-0x4(%r14,%rcx,4)
mov    0x38(%rsp),%rax
imul   %r15d,%eax
cltq
mov    %rax,0x60(%rsp)
lea    (%rdx,%rax,4),%rdi
mov    %rdi,0x28(%rsp)
mov    %r12d,%esi
mov    %r15d,%edx
xor    %eax,%eax
call   1030 <internal_int_transpose@plt>
cmpl   $0x4,0x10(%rsp)
jl     1780 <collapse_pyr+0x660>
mov    0x70(%rsp),%rax
mov    %eax,%r11d
or     $0x1,%r11d
mov    (%rsp),%rax
lea    0x2(%rax),%r9d
cmp    $0x3,%r12d
mov    $0x2,%eax
cmovge %r12d,%eax
cmp    $0x3,%r15d
mov    $0x2,%r10d
cmovge %r15d,%r10d
mov    0x8(%rsp),%rcx
lea    0x0(,%rcx,4),%rcx
mov    %r14,%r8
sub    %rcx,%r8
lea    (%rax,%rax,1),%rdi
add    $0xfffffffffffffffe,%rdi
mov    $0x1,%r13d
mov    %r12d,%esi
jmp    1700 <collapse_pyr+0x5e0>
xchg   %ax,%ax
add    %eax,%r11d
mov    0x48(%rsp),%r15
mov    0x40(%rsp),%r12
add    %r9d,%r11d
add    $0x1,%esi
add    $0x1,%r13d
cmp    %r10d,%r13d
je     1780 <collapse_pyr+0x660>
cmpl   $0x4,(%rsp)
jl     16ed <collapse_pyr+0x5cd>
movslq %esi,%rax
movslq %r11d,%rdx
lea    (%r14,%rdx,4),%rbp
lea    (%r8,%rdx,4),%rcx
add    0x8(%rsp),%rdx
lea    (%r14,%rdx,4),%rdx
mov    0x28(%rsp),%rbx
lea    (%rbx,%rax,4),%r12
xor    %eax,%eax
jmp    173b <collapse_pyr+0x61b>
nopw   0x0(%rax,%rax,1)
add    $0x2,%rax
add    $0x1,%esi
cmp    %eax,%edi
je     16e0 <collapse_pyr+0x5c0>
mov    (%r12,%rax,2),%r15d
test   %r15d,%r15d
je     1730 <collapse_pyr+0x610>
add    %r15d,0x0(%rbp,%rax,4)
mov    %r15d,%ebx
sar    %ebx
sub    %ebx,-0x4(%rbp,%rax,4)
sub    %ebx,0x4(%rbp,%rax,4)
add    %ebx,(%rcx,%rax,4)
sar    $0x2,%r15d
sub    %r15d,-0x4(%rcx,%rax,4)
sub    %r15d,0x4(%rcx,%rax,4)
lea    (%r15,%r15,1),%ebx
add    %ebx,(%rdx,%rax,4)
sub    %r15d,-0x4(%rdx,%rax,4)
sub    %r15d,0x4(%rdx,%rax,4)
jmp    1730 <collapse_pyr+0x610>
nopw   0x0(%rax,%rax,1)
cmpl   $0x4,(%rsp)
mov    0xd8(%rsp),%rbp
mov    0x98(%rsp),%r10
mov    0x30(%rsp),%r11
mov    0x68(%rsp),%r13
mov    0x28(%rsp),%rbx
jl     1800 <collapse_pyr+0x6e0>
cmp    $0x3,%r12d
mov    $0x2,%eax
cmovge %r12d,%eax
mov    (%rsp),%ecx
add    $0xffffffff,%eax
lea    0x0(,%rcx,4),%rcx
add    %rbp,%rcx
xor    %edx,%edx
jmp    17d9 <collapse_pyr+0x6b9>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rdx
cmp    %rdx,%rax
je     1800 <collapse_pyr+0x6e0>
mov    (%rbx,%rdx,4),%esi
test   %esi,%esi
je     17d0 <collapse_pyr+0x6b0>
add    %esi,-0x4(%rbp,%rdx,8)
mov    %esi,%edi
sar    %edi
sub    %edi,-0x8(%rbp,%rdx,8)
sub    %edi,0x0(%rbp,%rdx,8)
add    %edi,-0x4(%rcx,%rdx,8)
sar    $0x2,%esi
sub    %esi,-0x8(%rcx,%rdx,8)
sub    %esi,(%rcx,%rdx,8)
jmp    17d0 <collapse_pyr+0x6b0>
cmpl   $0x4,0x10(%rsp)
jl     18b0 <collapse_pyr+0x790>
mov    0x38(%rsp),%rax
add    $0xfffffffe,%eax
or     $0x1,%eax
movslq %eax,%rbp
movslq 0x58(%rsp),%rdi
cmp    $0x3,%r15d
mov    $0x2,%eax
cmovge %r15d,%eax
lea    (%r14,%rdi,4),%rcx
lea    0x0(,%r11,4),%rdx
mov    0x8(%rsp),%rsi
lea    0x0(,%rsi,4),%r9
neg    %r9
add    %rsi,%rdi
lea    (%r14,%rdi,4),%rdi
add    0x60(%rsp),%rbp
mov    0xc0(%rsp),%rsi
lea    (%rsi,%rbp,4),%rbp
add    $0xfffffffffffffffc,%rbp
lea    0x0(,%r10,4),%r8
add    $0xffffffff,%eax
jmp    187e <collapse_pyr+0x75e>
add    %rdx,%rcx
add    %rdx,%rdi
add    %r8,%rbp
add    $0xffffffff,%eax
je     18b0 <collapse_pyr+0x790>
mov    0x0(%rbp),%ebx
test   %ebx,%ebx
je     1870 <collapse_pyr+0x750>
add    %ebx,(%rcx)
mov    %ebx,%esi
sar    %esi
sub    %esi,-0x4(%rcx)
add    %esi,(%rcx,%r9,1)
sar    $0x2,%ebx
sub    %ebx,-0x4(%rcx,%r9,1)
add    %esi,(%rdi)
sub    %ebx,-0x4(%rdi)
jmp    1870 <collapse_pyr+0x750>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r13d
movslq %r13d,%rax
mov    %rax,0x68(%rsp)
cmpl   $0x4,(%rsp)
mov    0x18(%rsp),%rbx
jl     1930 <collapse_pyr+0x810>
cmp    $0x3,%r12d
mov    $0x2,%eax
cmovge %r12d,%eax
mov    0x68(%rsp),%rcx
lea    (%r14,%rcx,4),%rcx
mov    0x80(%rsp),%rdx
mov    0x60(%rsp),%rsi
add    %rsi,%rdx
lea    (%rbx,%rdx,4),%rdx
add    $0xffffffffffffffff,%rax
xor    %esi,%esi
jmp    1908 <collapse_pyr+0x7e8>
nopl   0x0(%rax)
add    $0x1,%rsi
cmp    %esi,%eax
je     1930 <collapse_pyr+0x810>
mov    (%rdx,%rsi,4),%ebp
cmp    $0x2,%ebp
jb     1900 <collapse_pyr+0x7e0>
mov    %ebp,%edi
sar    %edi
add    %edi,(%rcx,%rsi,8)
sar    $0x2,%ebp
sub    %ebp,-0x4(%rcx,%rsi,8)
sub    %ebp,0x4(%rcx,%rsi,8)
jmp    1900 <collapse_pyr+0x7e0>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmpl   $0x4,0x10(%rsp)
jl     19b0 <collapse_pyr+0x890>
cmp    $0x3,%r15d
mov    $0x2,%eax
cmovge %r15d,%eax
lea    (%r14,%r11,4),%rcx
lea    0x0(,%r11,4),%rdx
mov    0x8(%rsp),%rsi
lea    0x0(,%rsi,4),%r8
neg    %r8
add    %r11,%rsi
lea    (%r14,%rsi,4),%rdi
mov    0x60(%rsp),%rsi
add    %r10,%rsi
lea    (%rbx,%rsi,4),%rbp
lea    0x0(,%r10,4),%rbx
add    $0xffffffff,%eax
jmp    198e <collapse_pyr+0x86e>
add    %rdx,%rcx
add    %rdx,%rdi
add    %rbx,%rbp
add    $0xffffffff,%eax
je     19b0 <collapse_pyr+0x890>
mov    0x0(%rbp),%esi
cmp    $0x2,%esi
jb     1980 <collapse_pyr+0x860>
sar    %esi
sub    %esi,(%rcx)
neg    %esi
sar    %esi
add    %esi,(%rcx,%r8,1)
add    %esi,(%rdi)
jmp    1980 <collapse_pyr+0x860>
cs nopw 0x0(%rax,%rax,1)
lea    -0x1(%r10),%rsi
mov    0x28(%rsp),%rdi
mov    (%rdi),%eax
cmp    $0x2,%eax
jb     19d2 <collapse_pyr+0x8b2>
sar    %eax
sub    %eax,(%r14)
neg    %eax
sar    %eax
mov    0x8(%rsp),%rcx
add    %eax,(%r14,%rcx,4)
mov    0x20(%rsp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,0x38(%rsp)
mov    (%rdi,%rsi,4),%eax
test   %eax,%eax
je     1a07 <collapse_pyr+0x8e7>
mov    0x8(%rsp),%rdx
add    %eax,-0x4(%r14,%rdx,4)
mov    %eax,%ecx
sar    %ecx
sub    %ecx,-0x8(%r14,%rdx,4)
add    %ecx,-0x4(%r14,%r11,4)
sar    $0x2,%eax
sub    %eax,-0x8(%r14,%r11,4)
mov    %rsi,0x60(%rsp)
mov    0x80(%rsp),%rax
mov    (%rdi,%rax,4),%eax
sar    $0x2,%eax
mov    0x78(%rsp),%rcx
sub    %eax,(%r14,%rcx,4)
mov    0x90(%rsp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,0x58(%rsp)
mov    0x38(%rsp),%rax
mov    (%rdi,%rax,4),%eax
cmp    $0x2,%eax
jb     1a5e <collapse_pyr+0x93e>
mov    %eax,%ecx
sar    %ecx
mov    0x58(%rsp),%rdx
add    %ecx,(%r14,%rdx,4)
sar    $0x2,%eax
mov    0x90(%rsp),%rcx
sub    %eax,-0x8(%r14,%rcx,4)
mov    (%rsp),%rax
add    $0x2,%eax
mov    %eax,0x28(%rsp)
cmpl   $0x4,0x10(%rsp)
jl     1b70 <collapse_pyr+0xa50>
mov    0x40(%rsp),%rcx
cmp    $0x3,%ecx
mov    $0x2,%eax
cmovge %ecx,%eax
mov    0x48(%rsp),%rcx
cmp    $0x3,%ecx
mov    $0x2,%r15d
cmovge %ecx,%r15d
mov    0x8(%rsp),%rcx
lea    0x0(,%rcx,4),%rcx
mov    %r14,%r9
sub    %rcx,%r9
mov    0x18(%rsp),%rcx
mov    0x20(%rsp),%rdx
lea    (%rcx,%rdx,4),%r8
lea    (%rax,%rax,1),%r13
add    $0xfffffffffffffffe,%r13
mov    $0x1,%r11d
mov    $0x1,%edi
mov    0x28(%rsp),%r12d
jmp    1af4 <collapse_pyr+0x9d4>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    %ebx,%r12d
add    $0x1,%edi
add    0x28(%rsp),%r12d
add    $0x1,%r11d
cmp    %r15d,%r11d
je     1b70 <collapse_pyr+0xa50>
cmpl   $0x4,(%rsp)
jl     1ae3 <collapse_pyr+0x9c3>
movslq %edi,%rdx
movslq %r12d,%rax
lea    (%r14,%rax,4),%rbp
lea    (%r9,%rax,4),%rcx
add    0x8(%rsp),%rax
lea    (%r14,%rax,4),%rax
lea    (%r8,%rdx,4),%rdx
xor    %ebx,%ebx
jmp    1b2c <collapse_pyr+0xa0c>
nopl   0x0(%rax)
add    $0x2,%rbx
add    $0x1,%edi
cmp    %ebx,%r13d
je     1ae0 <collapse_pyr+0x9c0>
mov    (%rdx,%rbx,2),%r10d
test   %r10d,%r10d
je     1b20 <collapse_pyr+0xa00>
add    %r10d,0x0(%rbp,%rbx,4)
mov    %r10d,%esi
sar    %esi
add    %esi,-0x4(%rbp,%rbx,4)
add    %esi,0x4(%rbp,%rbx,4)
sub    %esi,(%rcx,%rbx,4)
sar    $0x2,%r10d
sub    %r10d,-0x4(%rcx,%rbx,4)
sub    %r10d,0x4(%rcx,%rbx,4)
lea    (%r10,%r10,1),%esi
sub    %esi,(%rax,%rbx,4)
sub    %r10d,-0x4(%rax,%rbx,4)
sub    %r10d,0x4(%rax,%rbx,4)
jmp    1b20 <collapse_pyr+0xa00>
nopl   0x0(%rax,%rax,1)
mov    0x18(%rsp),%r9
mov    0x20(%rsp),%rax
lea    (%r9,%rax,4),%r8
cmpl   $0x4,(%rsp)
mov    0x48(%rsp),%r11
mov    0x40(%rsp),%r15
mov    0x98(%rsp),%r12
jl     1be0 <collapse_pyr+0xac0>
cmp    $0x3,%r15d
mov    $0x2,%eax
cmovge %r15d,%eax
mov    $0x1,%ecx
jmp    1bb9 <collapse_pyr+0xa99>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rcx
cmp    %rcx,%rax
je     1be0 <collapse_pyr+0xac0>
mov    (%r8,%rcx,4),%edx
cmp    $0x2,%edx
jb     1bb0 <collapse_pyr+0xa90>
sar    %edx
sub    %edx,(%r14,%rcx,8)
neg    %edx
sar    %edx
add    %edx,-0x4(%r14,%rcx,8)
add    %edx,0x4(%r14,%rcx,8)
jmp    1bb0 <collapse_pyr+0xa90>
nopl   0x0(%rax,%rax,1)
cmpl   $0x4,0x10(%rsp)
jl     1c60 <collapse_pyr+0xb40>
cmp    $0x3,%r11d
mov    $0x2,%eax
cmovge %r11d,%eax
mov    0x30(%rsp),%rcx
lea    0x0(,%rcx,4),%r10
lea    0x0(,%r12,4),%rdx
add    $0xffffffff,%eax
mov    %r8,%rsi
mov    0x88(%rsp),%rdi
jmp    1c2b <collapse_pyr+0xb0b>
nopl   0x0(%rax)
add    %r10,%rdi
add    %rdx,%rsi
add    $0xffffffff,%eax
je     1c60 <collapse_pyr+0xb40>
mov    (%rsi),%ebp
test   %ebp,%ebp
je     1c20 <collapse_pyr+0xb00>
mov    0x8(%rsp),%rcx
add    %ebp,-0x4(%rdi,%rcx,4)
mov    %ebp,%ebx
sar    %ebx
add    %ebx,(%rdi,%rcx,4)
sub    %ebx,-0x4(%rdi)
sar    $0x2,%ebp
sub    %ebp,(%rdi)
sub    %ebx,-0x4(%rdi,%rcx,8)
sub    %ebp,(%rdi,%rcx,8)
jmp    1c20 <collapse_pyr+0xb00>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmpl   $0x4,(%rsp)
jl     1ce0 <collapse_pyr+0xbc0>
movslq 0xb0(%rsp),%rsi
movslq 0xac(%rsp),%rdx
cmp    $0x3,%r15d
mov    $0x2,%eax
cmovge %r15d,%eax
mov    (%rsp),%ecx
lea    (%r14,%rdx,4),%rdx
shl    $0x2,%rcx
neg    %rcx
add    0x20(%rsp),%rsi
lea    (%r9,%rsi,4),%rsi
add    $0xffffffffffffffff,%rax
xor    %edi,%edi
jmp    1cbc <collapse_pyr+0xb9c>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x8,%rdx
add    $0x1,%rdi
cmp    %edi,%eax
je     1ce0 <collapse_pyr+0xbc0>
mov    (%rsi,%rdi,4),%ebp
test   %ebp,%ebp
je     1cb0 <collapse_pyr+0xb90>
add    %ebp,(%rdx)
mov    %ebp,%ebx
sar    %ebx
add    %ebx,-0x4(%rdx)
add    %ebx,0x4(%rdx)
sub    %ebx,(%rdx,%rcx,1)
sar    $0x2,%ebp
sub    %ebp,0x4(%rdx,%rcx,1)
sub    %ebp,-0x4(%rdx,%rcx,1)
jmp    1cb0 <collapse_pyr+0xb90>
nop
cmpl   $0x4,0x10(%rsp)
jl     1d90 <collapse_pyr+0xc70>
mov    0x70(%rsp),%rax
add    $0xfffffffe,%eax
or     $0x1,%eax
movslq %eax,%rsi
cmp    $0x3,%r11d
mov    $0x2,%eax
cmovge %r11d,%eax
mov    0x88(%rsp),%rdi
lea    -0x4(%rdi,%rsi,4),%rcx
mov    0x30(%rsp),%rdx
lea    0x0(,%rdx,4),%rdx
mov    0x8(%rsp),%rbp
lea    0x0(,%rbp,4),%r9
neg    %r9
add    %rbp,%rsi
add    $0xffffffffffffffff,%rsi
lea    (%rdi,%rsi,4),%rbp
mov    0x20(%rsp),%rdi
add    %r12,%rdi
mov    0xb8(%rsp),%rsi
lea    (%rsi,%rdi,4),%rbx
lea    0x0(,%r12,4),%r10
add    $0xffffffff,%eax
jmp    1d6e <collapse_pyr+0xc4e>
nopl   0x0(%rax)
add    %rdx,%rcx
add    %rdx,%rbp
add    %r10,%rbx
add    $0xffffffff,%eax
je     1d90 <collapse_pyr+0xc70>
mov    (%rbx),%esi
cmp    $0x2,%esi
jb     1d60 <collapse_pyr+0xc40>
mov    %esi,%edi
sar    %edi
add    %edi,(%rcx)
sar    $0x2,%esi
sub    %esi,(%rcx,%r9,1)
sub    %esi,0x0(%rbp)
jmp    1d60 <collapse_pyr+0xc40>
nopw   0x0(%rax,%rax,1)
mov    (%r8),%eax
cmp    $0x2,%eax
jb     1da5 <collapse_pyr+0xc85>
sar    %eax
sub    %eax,(%r14)
neg    %eax
sar    %eax
add    %eax,0x4(%r14)
mov    0x60(%rsp),%rax
mov    (%r8,%rax,4),%eax
sar    $0x2,%eax
mov    0x8(%rsp),%rcx
sub    %eax,-0x4(%r14,%rcx,4)
mov    0x80(%rsp),%rax
mov    (%r8,%rax,4),%eax
test   %eax,%eax
je     1dfc <collapse_pyr+0xcdc>
mov    0x78(%rsp),%rcx
add    %eax,(%r14,%rcx,4)
mov    %eax,%ecx
sar    %ecx
mov    0x68(%rsp),%rdx
add    %ecx,(%r14,%rdx,4)
mov    0x10(%rsp),%rdx
add    $0xfffffffe,%edx
imul   (%rsp),%edx
movslq %edx,%rdx
sub    %ecx,(%r14,%rdx,4)
sar    $0x2,%eax
sub    %eax,0x4(%r14,%rdx,4)
mov    0x38(%rsp),%rax
mov    (%r8,%rax,4),%eax
cmp    $0x2,%eax
jb     1e24 <collapse_pyr+0xd04>
mov    %eax,%ecx
sar    %ecx
mov    0x58(%rsp),%rdx
add    %ecx,(%r14,%rdx,4)
sar    $0x2,%eax
mov    0x78(%rsp),%rcx
sub    %eax,-0x4(%r14,%rcx,4)
mov    0xe0(%rsp),%rax
lea    (%rax,%rax,2),%eax
cltq
mov    %rax,0x20(%rsp)
cmpl   $0x4,0x10(%rsp)
jl     1f30 <collapse_pyr+0xe10>
mov    (%rsp),%rax
add    $0x1,%eax
mov    0x40(%rsp),%rdx
cmp    $0x3,%edx
mov    $0x2,%ecx
cmovge %edx,%ecx
mov    0x48(%rsp),%rdx
cmp    $0x3,%edx
mov    $0x2,%r13d
cmovge %edx,%r13d
mov    0x8(%rsp),%rdx
lea    0x0(,%rdx,4),%rsi
mov    %r14,%r10
sub    %rsi,%r10
mov    0x18(%rsp),%rdx
mov    0x20(%rsp),%rsi
lea    (%rdx,%rsi,4),%r12
lea    (%rcx,%rcx,1),%r8
add    $0xfffffffffffffffe,%r8
xor    %r9d,%r9d
mov    $0x1,%ebx
jmp    1eb3 <collapse_pyr+0xd93>
nopl   (%rax)
add    %r15d,%eax
add    $0x1,%r9d
add    0x28(%rsp),%eax
add    $0x1,%ebx
cmp    %r13d,%ebx
je     1f30 <collapse_pyr+0xe10>
cmpl   $0x4,(%rsp)
jl     1ea3 <collapse_pyr+0xd83>
movslq %r9d,%rcx
movslq %eax,%rsi
lea    (%r14,%rsi,4),%rdi
lea    (%r10,%rsi,4),%rbp
add    0x8(%rsp),%rsi
lea    (%r14,%rsi,4),%r11
lea    (%r12,%rcx,4),%rsi
xor    %r15d,%r15d
jmp    1eed <collapse_pyr+0xdcd>
nopl   0x0(%rax)
add    $0x2,%r15
add    $0x1,%r9d
cmp    %r15d,%r8d
je     1ea0 <collapse_pyr+0xd80>
mov    (%rsi,%r15,2),%ecx
test   %ecx,%ecx
je     1ee0 <collapse_pyr+0xdc0>
add    %ecx,(%rdi,%r15,4)
mov    %ecx,%edx
sar    %edx
sub    %edx,-0x4(%rdi,%r15,4)
sub    %edx,0x4(%rdi,%r15,4)
sub    %edx,0x0(%rbp,%r15,4)
sar    $0x2,%ecx
add    %ecx,-0x4(%rbp,%r15,4)
add    %ecx,0x4(%rbp,%r15,4)
lea    (%rcx,%rcx,1),%edx
sub    %edx,(%r11,%r15,4)
add    %ecx,-0x4(%r11,%r15,4)
add    %ecx,0x4(%r11,%r15,4)
jmp    1ee0 <collapse_pyr+0xdc0>
nopl   0x0(%rax)
mov    0x18(%rsp),%rax
mov    0x20(%rsp),%rcx
lea    (%rax,%rcx,4),%r9
cmpl   $0x4,(%rsp)
mov    0xb4(%rsp),%r8d
mov    0xe8(%rsp),%r10
mov    0x48(%rsp),%r15
mov    0x40(%rsp),%r12
mov    0x98(%rsp),%r13
jl     1fb0 <collapse_pyr+0xe90>
cmp    $0x3,%r12d
mov    $0x2,%eax
cmovge %r12d,%eax
add    $0xffffffff,%eax
xor    %ecx,%ecx
jmp    1f89 <collapse_pyr+0xe69>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rcx
cmp    %rcx,%rax
je     1fb0 <collapse_pyr+0xe90>
mov    (%r9,%rcx,4),%edx
cmp    $0x2,%edx
jb     1f80 <collapse_pyr+0xe60>
mov    %edx,%esi
sar    %esi
sub    %esi,0x4(%r14,%rcx,8)
sar    $0x2,%edx
add    %edx,(%r14,%rcx,8)
add    %edx,0x8(%r14,%rcx,8)
jmp    1f80 <collapse_pyr+0xe60>
nopl   0x0(%rax)
cmpl   $0x4,0x10(%rsp)
jl     2020 <collapse_pyr+0xf00>
cmp    $0x3,%r15d
mov    $0x2,%eax
cmovge %r15d,%eax
mov    0x30(%rsp),%rcx
lea    0x0(,%rcx,4),%r11
lea    0x0(,%r13,4),%rdx
add    $0xffffffff,%eax
mov    %r9,%rsi
mov    %r14,%rbp
jmp    1ffb <collapse_pyr+0xedb>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    %r11,%rbp
add    %rdx,%rsi
add    $0xffffffff,%eax
je     2020 <collapse_pyr+0xf00>
mov    (%rsi),%edi
cmp    $0x2,%edi
jb     1ff0 <collapse_pyr+0xed0>
mov    %edi,%ebx
sar    %ebx
mov    0x8(%rsp),%rcx
sub    %ebx,0x0(%rbp,%rcx,4)
sar    $0x2,%edi
add    %edi,0x0(%rbp,%rcx,8)
add    %edi,0x0(%rbp)
jmp    1ff0 <collapse_pyr+0xed0>
nopl   0x0(%rax,%rax,1)
cmpl   $0x4,(%rsp)
mov    0x30(%rsp),%rbx
jl     20a0 <collapse_pyr+0xf80>
cmp    $0x3,%r12d
mov    $0x2,%eax
cmovl  %eax,%r12d
mov    (%rsp),%eax
mov    0x68(%rsp),%rcx
lea    (%r14,%rcx,4),%rcx
shl    $0x2,%rax
neg    %rax
mov    0x80(%rsp),%rdx
mov    0x20(%rsp),%rsi
add    %rsi,%rdx
mov    0x18(%rsp),%rsi
lea    (%rsi,%rdx,4),%rdx
add    $0xffffffffffffffff,%r12
xor    %esi,%esi
jmp    207d <collapse_pyr+0xf5d>
nopl   0x0(%rax)
add    $0x8,%rcx
add    $0x1,%rsi
cmp    %esi,%r12d
je     20a0 <collapse_pyr+0xf80>
mov    (%rdx,%rsi,4),%ebp
test   %ebp,%ebp
je     2070 <collapse_pyr+0xf50>
add    %ebp,(%rcx)
mov    %ebp,%edi
sar    %edi
sub    %edi,-0x4(%rcx)
sub    %edi,0x4(%rcx)
sub    %edi,(%rcx,%rax,1)
sar    $0x2,%ebp
add    %ebp,0x4(%rcx,%rax,1)
add    %ebp,-0x4(%rcx,%rax,1)
jmp    2070 <collapse_pyr+0xf50>
cmpl   $0x4,0x10(%rsp)
jl     2150 <collapse_pyr+0x1030>
mov    0x70(%rsp),%rax
add    $0xfffffffe,%eax
or     $0x1,%eax
movslq %eax,%rdx
cmp    $0x3,%r15d
mov    $0x2,%eax
cmovl  %eax,%r15d
mov    0x88(%rsp),%rsi
lea    (%rsi,%rdx,4),%rax
add    $0xfffffffffffffffc,%rax
shl    $0x2,%rbx
mov    0x8(%rsp),%rdi
lea    0x0(,%rdi,4),%rcx
neg    %rcx
add    %rdi,%rdx
add    $0xffffffffffffffff,%rdx
lea    (%rsi,%rdx,4),%rdx
mov    0x20(%rsp),%rdi
add    %r13,%rdi
mov    0xb8(%rsp),%rsi
lea    (%rsi,%rdi,4),%rsi
shl    $0x2,%r13
add    $0xffffffff,%r15d
jmp    212f <collapse_pyr+0x100f>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    %rbx,%rax
add    %rbx,%rdx
add    %r13,%rsi
add    $0xffffffff,%r15d
je     2150 <collapse_pyr+0x1030>
mov    (%rsi),%ebp
test   %ebp,%ebp
je     2120 <collapse_pyr+0x1000>
add    %ebp,(%rax)
mov    %ebp,%edi
sar    %edi
sub    %edi,-0x4(%rax)
sub    %edi,(%rax,%rcx,1)
sar    $0x2,%ebp
add    %ebp,-0x4(%rax,%rcx,1)
sub    %edi,(%rdx)
add    %ebp,-0x4(%rdx)
jmp    2120 <collapse_pyr+0x1000>
nop
mov    (%r9),%eax
sar    $0x2,%eax
add    %eax,(%r14)
mov    0x60(%rsp),%rax
mov    (%r9,%rax,4),%eax
cmp    $0x2,%eax
jb     2180 <collapse_pyr+0x1060>
mov    0x8(%rsp),%rsi
lea    -0x1(%rsi),%rcx
mov    %eax,%edx
sar    %edx
sub    %edx,(%r14,%rcx,4)
sar    $0x2,%eax
add    %eax,-0x8(%r14,%rsi,4)
mov    0x80(%rsp),%rax
mov    (%r9,%rax,4),%eax
cmp    $0x2,%eax
jb     21b4 <collapse_pyr+0x1094>
mov    %eax,%ecx
sar    %ecx
mov    0x78(%rsp),%rdx
sub    %ecx,(%r14,%rdx,4)
sar    $0x2,%eax
mov    0x10(%rsp),%rcx
add    $0xfffffffe,%ecx
imul   (%rsp),%ecx
movslq %ecx,%rcx
add    %eax,(%r14,%rcx,4)
mov    0x38(%rsp),%rax
mov    (%r9,%rax,4),%eax
test   %eax,%eax
je     21ed <collapse_pyr+0x10cd>
mov    0x58(%rsp),%rsi
add    %eax,(%r14,%rsi,4)
mov    %eax,%ecx
sar    %ecx
mov    0x90(%rsp),%rdx
sub    %ecx,-0x8(%r14,%rdx,4)
sub    (%rsp),%esi
movslq %esi,%rdx
sub    %ecx,(%r14,%rdx,4)
sar    $0x2,%eax
add    %eax,-0x4(%r14,%rdx,4)
mov    0xf0(%rsp),%rbx
cmp    $0x2,%ebx
mov    0x18(%rsp),%rdi
jl     11a0 <collapse_pyr+0x80>
cmpl   $0x0,0x54(%rsp)
jle    11a0 <collapse_pyr+0x80>
cmpl   $0x8,0x54(%rsp)
jb     2227 <collapse_pyr+0x1107>
lea    (%r14,%r10,4),%rax
cmp    %rdi,%rax
jbe    2290 <collapse_pyr+0x1170>
lea    (%rdi,%r10,4),%rax
cmp    %r14,%rax
jbe    2290 <collapse_pyr+0x1170>
xor    %eax,%eax
mov    %rax,%rcx
not    %rcx
add    %r10,%rcx
mov    %r10,%rdx
and    $0x3,%rdx
je     2251 <collapse_pyr+0x1131>
nopl   0x0(%rax,%rax,1)
mov    (%r14,%rax,4),%esi
mov    %esi,(%rdi,%rax,4)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    2240 <collapse_pyr+0x1120>
cmp    $0x3,%rcx
jb     11a0 <collapse_pyr+0x80>
nopl   0x0(%rax,%rax,1)
mov    (%r14,%rax,4),%ecx
mov    %ecx,(%rdi,%rax,4)
mov    0x4(%r14,%rax,4),%ecx
mov    %ecx,0x4(%rdi,%rax,4)
mov    0x8(%r14,%rax,4),%ecx
mov    %ecx,0x8(%rdi,%rax,4)
mov    0xc(%r14,%rax,4),%ecx
mov    %ecx,0xc(%rdi,%rax,4)
add    $0x4,%rax
cmp    %rax,%r10
jne    2260 <collapse_pyr+0x1140>
jmp    11a0 <collapse_pyr+0x80>
mov    %r10d,%eax
and    $0xfffffff8,%eax
lea    -0x8(%rax),%rsi
mov    %rsi,%rdx
shr    $0x3,%rdx
add    $0x1,%rdx
mov    %edx,%ecx
and    $0x3,%ecx
cmp    $0x18,%rsi
jae    22b4 <collapse_pyr+0x1194>
xor    %esi,%esi
jmp    2320 <collapse_pyr+0x1200>
and    $0xfffffffffffffffc,%rdx
xor    %esi,%esi
nopw   0x0(%rax,%rax,1)
movups (%r14,%rsi,4),%xmm0
movups 0x10(%r14,%rsi,4),%xmm1
movups %xmm0,(%rdi,%rsi,4)
movups %xmm1,0x10(%rdi,%rsi,4)
movups 0x20(%r14,%rsi,4),%xmm0
movups 0x30(%r14,%rsi,4),%xmm1
movups %xmm0,0x20(%rdi,%rsi,4)
movups %xmm1,0x30(%rdi,%rsi,4)
movups 0x40(%r14,%rsi,4),%xmm0
movups 0x50(%r14,%rsi,4),%xmm1
movups %xmm0,0x40(%rdi,%rsi,4)
movups %xmm1,0x50(%rdi,%rsi,4)
movups 0x60(%r14,%rsi,4),%xmm0
movups 0x70(%r14,%rsi,4),%xmm1
movups %xmm0,0x60(%rdi,%rsi,4)
movups %xmm1,0x70(%rdi,%rsi,4)
add    $0x20,%rsi
add    $0xfffffffffffffffc,%rdx
jne    22c0 <collapse_pyr+0x11a0>
test   %rcx,%rcx
je     236b <collapse_pyr+0x124b>
mov    0xd0(%rsp),%rdx
lea    (%rdx,%rsi,4),%rdx
mov    0xc8(%rsp),%rbp
lea    0x0(,%rsi,4),%rsi
add    %rbp,%rsi
shl    $0x5,%rcx
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
movups -0x10(%rsi,%rbp,1),%xmm0
movups (%rsi,%rbp,1),%xmm1
movups %xmm0,-0x10(%rdx,%rbp,1)
movups %xmm1,(%rdx,%rbp,1)
add    $0x20,%rbp
cmp    %rbp,%rcx
jne    2350 <collapse_pyr+0x1230>
cmp    %r10,%rax
je     11a0 <collapse_pyr+0x80>
jmp    2229 <collapse_pyr+0x1109>
add    $0xf8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @collapse_pyr(i32* %0, i32* %1, i32 %2, i32 %3, i32 %4) {
%6 = alloca i32*
%7 = alloca i32*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32*
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
store i32* %0, i32** %6
store i32* %1, i32** %7
store i32 %2, i32* %8
store i32 %3, i32* %9
store i32 %4, i32* %10
%24 = load i32, i32* %10
%25 = sub nsw i32 %24, 1
store i32 %25, i32* %23
br label %26
26: ; preds = %2070, %5
%27 = load i32, i32* %23
%28 = icmp sge i32 %27, 0
br i1 %28, label %29, label %2073
29: ; preds = %26
%30 = load i32, i32* %8
%31 = load i32, i32* %23
%32 = ashr i32 %30, %31
store i32 %32, i32* %15
%33 = load i32, i32* %9
%34 = load i32, i32* %23
%35 = ashr i32 %33, %34
store i32 %35, i32* %16
%36 = load i32, i32* %15
%37 = shl i32 %36, 1
store i32 %37, i32* %22
%38 = load i32, i32* %15
%39 = ashr i32 %38, 1
store i32 %39, i32* %17
%40 = load i32, i32* %16
%41 = ashr i32 %40, 1
store i32 %41, i32* %18
store i32 0, i32* %12
br label %42
42: ; preds = %53, %29
%43 = load i32, i32* %12
%44 = load i32, i32* %15
%45 = load i32, i32* %16
%46 = mul nsw i32 %44, %45
%47 = icmp slt i32 %43, %46
br i1 %47, label %48, label %56
48: ; preds = %42
%49 = load i32*, i32** %7
%50 = load i32, i32* %12
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds i32, i32* %49, i64 %51
store i32 0, i32* %52
br label %53
53: ; preds = %48
%54 = load i32, i32* %12
%55 = add nsw i32 %54, 1
store i32 %55, i32* %12
br label %42
56: ; preds = %42
%57 = load i32*, i32** %6
store i32* %57, i32** %14
%58 = load i32, i32* %17
%59 = add nsw i32 %58, 1
store i32 %59, i32* %19
%60 = load i32, i32* %22
%61 = add nsw i32 %60, 2
store i32 %61, i32* %12
store i32 1, i32* %21
br label %62
62: ; preds = %164, %56
%63 = load i32, i32* %21
%64 = load i32, i32* %18
%65 = icmp slt i32 %63, %64
br i1 %65, label %66, label %173
66: ; preds = %62
store i32 1, i32* %20
br label %67
67: ; preds = %156, %66
%68 = load i32, i32* %20
%69 = load i32, i32* %17
%70 = icmp slt i32 %68, %69
br i1 %70, label %71, label %163
71: ; preds = %67
%72 = load i32*, i32** %14
%73 = load i32, i32* %19
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds i32, i32* %72, i64 %74
%76 = load i32, i32* %75
store i32 %76, i32* %11
%77 = icmp ne i32 %76, 0
br i1 %77, label %78, label %155
78: ; preds = %71
%79 = load i32, i32* %11
%80 = load i32*, i32** %7
%81 = load i32, i32* %12
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds i32, i32* %80, i64 %82
%84 = load i32, i32* %83
%85 = add nsw i32 %84, %79
store i32 %85, i32* %83
%86 = load i32, i32* %11
%87 = ashr i32 %86, 1
store i32 %87, i32* %11
%88 = load i32*, i32** %7
%89 = load i32, i32* %12
%90 = sub nsw i32 %89, 1
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds i32, i32* %88, i64 %91
%93 = load i32, i32* %92
%94 = add nsw i32 %93, %87
store i32 %94, i32* %92
%95 = load i32, i32* %11
%96 = load i32*, i32** %7
%97 = load i32, i32* %12
%98 = add nsw i32 %97, 1
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds i32, i32* %96, i64 %99
%101 = load i32, i32* %100
%102 = add nsw i32 %101, %95
store i32 %102, i32* %100
%103 = load i32, i32* %11
%104 = load i32*, i32** %7
%105 = load i32, i32* %12
%106 = load i32, i32* %15
%107 = sub nsw i32 %105, %106
store i32 %107, i32* %13
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds i32, i32* %104, i64 %108
%110 = load i32, i32* %109
%111 = add nsw i32 %110, %103
store i32 %111, i32* %109
%112 = load i32, i32* %11
%113 = ashr i32 %112, 1
store i32 %113, i32* %11
%114 = load i32*, i32** %7
%115 = load i32, i32* %13
%116 = sub nsw i32 %115, 1
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds i32, i32* %114, i64 %117
%119 = load i32, i32* %118
%120 = add nsw i32 %119, %113
store i32 %120, i32* %118
%121 = load i32, i32* %11
%122 = load i32*, i32** %7
%123 = load i32, i32* %13
%124 = add nsw i32 %123, 1
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds i32, i32* %122, i64 %125
%127 = load i32, i32* %126
%128 = add nsw i32 %127, %121
store i32 %128, i32* %126
%129 = load i32, i32* %11
%130 = shl i32 %129, 1
%131 = load i32*, i32** %7
%132 = load i32, i32* %12
%133 = load i32, i32* %15
%134 = add nsw i32 %132, %133
store i32 %134, i32* %13
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds i32, i32* %131, i64 %135
%137 = load i32, i32* %136
%138 = add nsw i32 %137, %130
store i32 %138, i32* %136
%139 = load i32, i32* %11
%140 = load i32*, i32** %7
%141 = load i32, i32* %13
%142 = sub nsw i32 %141, 1
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds i32, i32* %140, i64 %143
%145 = load i32, i32* %144
%146 = add nsw i32 %145, %139
store i32 %146, i32* %144
%147 = load i32, i32* %11
%148 = load i32*, i32** %7
%149 = load i32, i32* %13
%150 = add nsw i32 %149, 1
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds i32, i32* %148, i64 %151
%153 = load i32, i32* %152
%154 = add nsw i32 %153, %147
store i32 %154, i32* %152
br label %155
155: ; preds = %78, %71
br label %156
156: ; preds = %155
%157 = load i32, i32* %19
%158 = add nsw i32 %157, 1
store i32 %158, i32* %19
%159 = load i32, i32* %12
%160 = add nsw i32 %159, 2
store i32 %160, i32* %12
%161 = load i32, i32* %20
%162 = add nsw i32 %161, 1
store i32 %162, i32* %20
br label %67
163: ; preds = %67
br label %164
164: ; preds = %163
%165 = load i32, i32* %19
%166 = add nsw i32 %165, 1
store i32 %166, i32* %19
%167 = load i32, i32* %15
%168 = add nsw i32 %167, 2
%169 = load i32, i32* %12
%170 = add nsw i32 %169, %168
store i32 %170, i32* %12
%171 = load i32, i32* %21
%172 = add nsw i32 %171, 1
store i32 %172, i32* %21
br label %62
173: ; preds = %62
store i32 1, i32* %19
store i32 2, i32* %12
store i32 1, i32* %20
br label %174
174: ; preds = %237, %173
%175 = load i32, i32* %20
%176 = load i32, i32* %17
%177 = icmp slt i32 %175, %176
br i1 %177, label %178, label %244
178: ; preds = %174
%179 = load i32*, i32** %14
%180 = load i32, i32* %19
%181 = sext i32 %180 to i64
%182 = getelementptr inbounds i32, i32* %179, i64 %181
%183 = load i32, i32* %182
store i32 %183, i32* %11
%184 = icmp ne i32 %183, 0
br i1 %184, label %185, label %236
185: ; preds = %178
%186 = load i32, i32* %11
%187 = load i32*, i32** %7
%188 = load i32, i32* %12
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds i32, i32* %187, i64 %189
%191 = load i32, i32* %190
%192 = add nsw i32 %191, %186
store i32 %192, i32* %190
%193 = load i32, i32* %11
%194 = ashr i32 %193, 1
store i32 %194, i32* %11
%195 = load i32*, i32** %7
%196 = load i32, i32* %12
%197 = sub nsw i32 %196, 1
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds i32, i32* %195, i64 %198
%200 = load i32, i32* %199
%201 = add nsw i32 %200, %194
store i32 %201, i32* %199
%202 = load i32, i32* %11
%203 = load i32*, i32** %7
%204 = load i32, i32* %12
%205 = add nsw i32 %204, 1
%206 = sext i32 %205 to i64
%207 = getelementptr inbounds i32, i32* %203, i64 %206
%208 = load i32, i32* %207
%209 = add nsw i32 %208, %202
store i32 %209, i32* %207
%210 = load i32, i32* %11
%211 = load i32*, i32** %7
%212 = load i32, i32* %12
%213 = load i32, i32* %15
%214 = add nsw i32 %212, %213
store i32 %214, i32* %13
%215 = sext i32 %214 to i64
%216 = getelementptr inbounds i32, i32* %211, i64 %215
%217 = load i32, i32* %216
%218 = add nsw i32 %217, %210
store i32 %218, i32* %216
%219 = load i32, i32* %11
%220 = ashr i32 %219, 1
store i32 %220, i32* %11
%221 = load i32*, i32** %7
%222 = load i32, i32* %13
%223 = sub nsw i32 %222, 1
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds i32, i32* %221, i64 %224
%226 = load i32, i32* %225
%227 = add nsw i32 %226, %220
store i32 %227, i32* %225
%228 = load i32, i32* %11
%229 = load i32*, i32** %7
%230 = load i32, i32* %13
%231 = add nsw i32 %230, 1
%232 = sext i32 %231 to i64
%233 = getelementptr inbounds i32, i32* %229, i64 %232
%234 = load i32, i32* %233
%235 = add nsw i32 %234, %228
store i32 %235, i32* %233
br label %236
236: ; preds = %185, %178
br label %237
237: ; preds = %236
%238 = load i32, i32* %19
%239 = add nsw i32 %238, 1
store i32 %239, i32* %19
%240 = load i32, i32* %12
%241 = add nsw i32 %240, 2
store i32 %241, i32* %12
%242 = load i32, i32* %20
%243 = add nsw i32 %242, 1
store i32 %243, i32* %20
br label %174
244: ; preds = %174
%245 = load i32, i32* %17
store i32 %245, i32* %19
%246 = load i32, i32* %22
store i32 %246, i32* %12
store i32 1, i32* %20
br label %247
247: ; preds = %312, %244
%248 = load i32, i32* %20
%249 = load i32, i32* %18
%250 = icmp slt i32 %248, %249
br i1 %250, label %251, label %321
251: ; preds = %247
%252 = load i32*, i32** %14
%253 = load i32, i32* %19
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds i32, i32* %252, i64 %254
%256 = load i32, i32* %255
store i32 %256, i32* %11
%257 = icmp ne i32 %256, 0
br i1 %257, label %258, label %311
258: ; preds = %251
%259 = load i32, i32* %11
%260 = load i32*, i32** %7
%261 = load i32, i32* %12
%262 = sext i32 %261 to i64
%263 = getelementptr inbounds i32, i32* %260, i64 %262
%264 = load i32, i32* %263
%265 = add nsw i32 %264, %259
store i32 %265, i32* %263
%266 = load i32, i32* %11
%267 = ashr i32 %266, 1
store i32 %267, i32* %11
%268 = load i32*, i32** %7
%269 = load i32, i32* %12
%270 = add nsw i32 %269, 1
%271 = sext i32 %270 to i64
%272 = getelementptr inbounds i32, i32* %268, i64 %271
%273 = load i32, i32* %272
%274 = add nsw i32 %273, %267
store i32 %274, i32* %272
%275 = load i32, i32* %11
%276 = load i32*, i32** %7
%277 = load i32, i32* %12
%278 = load i32, i32* %15
%279 = sub nsw i32 %277, %278
store i32 %279, i32* %13
%280 = sext i32 %279 to i64
%281 = getelementptr inbounds i32, i32* %276, i64 %280
%282 = load i32, i32* %281
%283 = add nsw i32 %282, %275
store i32 %283, i32* %281
%284 = load i32, i32* %11
%285 = ashr i32 %284, 1
%286 = load i32*, i32** %7
%287 = load i32, i32* %13
%288 = add nsw i32 %287, 1
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds i32, i32* %286, i64 %289
%291 = load i32, i32* %290
%292 = add nsw i32 %291, %285
store i32 %292, i32* %290
%293 = load i32, i32* %11
%294 = load i32*, i32** %7
%295 = load i32, i32* %12
%296 = load i32, i32* %15
%297 = add nsw i32 %295, %296
store i32 %297, i32* %13
%298 = sext i32 %297 to i64
%299 = getelementptr inbounds i32, i32* %294, i64 %298
%300 = load i32, i32* %299
%301 = add nsw i32 %300, %293
store i32 %301, i32* %299
%302 = load i32, i32* %11
%303 = ashr i32 %302, 1
%304 = load i32*, i32** %7
%305 = load i32, i32* %13
%306 = add nsw i32 %305, 1
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds i32, i32* %304, i64 %307
%309 = load i32, i32* %308
%310 = add nsw i32 %309, %303
store i32 %310, i32* %308
br label %311
311: ; preds = %258, %251
br label %312
312: ; preds = %311
%313 = load i32, i32* %17
%314 = load i32, i32* %19
%315 = add nsw i32 %314, %313
store i32 %315, i32* %19
%316 = load i32, i32* %22
%317 = load i32, i32* %12
%318 = add nsw i32 %317, %316
store i32 %318, i32* %12
%319 = load i32, i32* %20
%320 = add nsw i32 %319, 1
store i32 %320, i32* %20
br label %247
321: ; preds = %247
%322 = load i32, i32* %17
%323 = load i32, i32* %18
%324 = sub nsw i32 %323, 1
%325 = mul nsw i32 %322, %324
%326 = add nsw i32 %325, 1
store i32 %326, i32* %19
%327 = load i32, i32* %15
%328 = load i32, i32* %16
%329 = sub nsw i32 %328, 1
%330 = mul nsw i32 %327, %329
%331 = add nsw i32 %330, 2
store i32 %331, i32* %12
store i32 1, i32* %20
br label %332
332: ; preds = %370, %321
%333 = load i32, i32* %20
%334 = load i32, i32* %17
%335 = icmp slt i32 %333, %334
br i1 %335, label %336, label %377
336: ; preds = %332
%337 = load i32*, i32** %14
%338 = load i32, i32* %19
%339 = sext i32 %338 to i64
%340 = getelementptr inbounds i32, i32* %337, i64 %339
%341 = load i32, i32* %340
%342 = ashr i32 %341, 1
store i32 %342, i32* %11
%343 = icmp ne i32 %342, 0
br i1 %343, label %344, label %369
344: ; preds = %336
%345 = load i32, i32* %11
%346 = load i32*, i32** %7
%347 = load i32, i32* %12
%348 = sext i32 %347 to i64
%349 = getelementptr inbounds i32, i32* %346, i64 %348
%350 = load i32, i32* %349
%351 = add nsw i32 %350, %345
store i32 %351, i32* %349
%352 = load i32, i32* %11
%353 = ashr i32 %352, 1
store i32 %353, i32* %11
%354 = load i32*, i32** %7
%355 = load i32, i32* %12
%356 = sub nsw i32 %355, 1
%357 = sext i32 %356 to i64
%358 = getelementptr inbounds i32, i32* %354, i64 %357
%359 = load i32, i32* %358
%360 = add nsw i32 %359, %353
store i32 %360, i32* %358
%361 = load i32, i32* %11
%362 = load i32*, i32** %7
%363 = load i32, i32* %12
%364 = add nsw i32 %363, 1
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds i32, i32* %362, i64 %365
%367 = load i32, i32* %366
%368 = add nsw i32 %367, %361
store i32 %368, i32* %366
br label %369
369: ; preds = %344, %336
br label %370
370: ; preds = %369
%371 = load i32, i32* %19
%372 = add nsw i32 %371, 1
store i32 %372, i32* %19
%373 = load i32, i32* %12
%374 = add nsw i32 %373, 2
store i32 %374, i32* %12
%375 = load i32, i32* %20
%376 = add nsw i32 %375, 1
store i32 %376, i32* %20
br label %332
377: ; preds = %332
%378 = load i32, i32* %17
%379 = shl i32 %378, 1
%380 = sub nsw i32 %379, 1
store i32 %380, i32* %19
%381 = load i32, i32* %22
%382 = load i32, i32* %15
%383 = add nsw i32 %381, %382
%384 = sub nsw i32 %383, 1
store i32 %384, i32* %12
store i32 1, i32* %20
br label %385
385: ; preds = %425, %377
%386 = load i32, i32* %20
%387 = load i32, i32* %18
%388 = icmp slt i32 %386, %387
br i1 %388, label %389, label %434
389: ; preds = %385
%390 = load i32*, i32** %14
%391 = load i32, i32* %19
%392 = sext i32 %391 to i64
%393 = getelementptr inbounds i32, i32* %390, i64 %392
%394 = load i32, i32* %393
%395 = ashr i32 %394, 1
store i32 %395, i32* %11
%396 = icmp ne i32 %395, 0
br i1 %396, label %397, label %424
397: ; preds = %389
%398 = load i32, i32* %11
%399 = load i32*, i32** %7
%400 = load i32, i32* %12
%401 = sext i32 %400 to i64
%402 = getelementptr inbounds i32, i32* %399, i64 %401
%403 = load i32, i32* %402
%404 = add nsw i32 %403, %398
store i32 %404, i32* %402
%405 = load i32, i32* %11
%406 = ashr i32 %405, 1
store i32 %406, i32* %11
%407 = load i32*, i32** %7
%408 = load i32, i32* %12
%409 = load i32, i32* %15
%410 = sub nsw i32 %408, %409
%411 = sext i32 %410 to i64
%412 = getelementptr inbounds i32, i32* %407, i64 %411
%413 = load i32, i32* %412
%414 = add nsw i32 %413, %406
store i32 %414, i32* %412
%415 = load i32, i32* %11
%416 = load i32*, i32** %7
%417 = load i32, i32* %12
%418 = load i32, i32* %15
%419 = add nsw i32 %417, %418
%420 = sext i32 %419 to i64
%421 = getelementptr inbounds i32, i32* %416, i64 %420
%422 = load i32, i32* %421
%423 = add nsw i32 %422, %415
store i32 %423, i32* %421
br label %424
424: ; preds = %397, %389
br label %425
425: ; preds = %424
%426 = load i32, i32* %17
%427 = load i32, i32* %19
%428 = add nsw i32 %427, %426
store i32 %428, i32* %19
%429 = load i32, i32* %22
%430 = load i32, i32* %12
%431 = add nsw i32 %430, %429
store i32 %431, i32* %12
%432 = load i32, i32* %20
%433 = add nsw i32 %432, 1
store i32 %433, i32* %20
br label %385
434: ; preds = %385
%435 = load i32*, i32** %14
%436 = getelementptr inbounds i32, i32* %435, i64 0
%437 = load i32, i32* %436
store i32 %437, i32* %11
%438 = icmp ne i32 %437, 0
br i1 %438, label %439, label %467
439: ; preds = %434
%440 = load i32, i32* %11
%441 = load i32*, i32** %7
%442 = getelementptr inbounds i32, i32* %441, i64 0
%443 = load i32, i32* %442
%444 = add nsw i32 %443, %440
store i32 %444, i32* %442
%445 = load i32, i32* %11
%446 = ashr i32 %445, 1
store i32 %446, i32* %11
%447 = load i32*, i32** %7
%448 = getelementptr inbounds i32, i32* %447, i64 1
%449 = load i32, i32* %448
%450 = add nsw i32 %449, %446
store i32 %450, i32* %448
%451 = load i32, i32* %11
%452 = load i32*, i32** %7
%453 = load i32, i32* %15
%454 = sext i32 %453 to i64
%455 = getelementptr inbounds i32, i32* %452, i64 %454
%456 = load i32, i32* %455
%457 = add nsw i32 %456, %451
store i32 %457, i32* %455
%458 = load i32, i32* %11
%459 = ashr i32 %458, 1
%460 = load i32*, i32** %7
%461 = load i32, i32* %15
%462 = add nsw i32 %461, 1
%463 = sext i32 %462 to i64
%464 = getelementptr inbounds i32, i32* %460, i64 %463
%465 = load i32, i32* %464
%466 = add nsw i32 %465, %459
store i32 %466, i32* %464
br label %467
467: ; preds = %439, %434
%468 = load i32*, i32** %14
%469 = load i32, i32* %17
%470 = sub nsw i32 %469, 1
%471 = sext i32 %470 to i64
%472 = getelementptr inbounds i32, i32* %468, i64 %471
%473 = load i32, i32* %472
%474 = ashr i32 %473, 1
store i32 %474, i32* %11
%475 = icmp ne i32 %474, 0
br i1 %475, label %476, label %494
476: ; preds = %467
%477 = load i32, i32* %11
%478 = load i32*, i32** %7
%479 = load i32, i32* %15
%480 = sub nsw i32 %479, 1
%481 = sext i32 %480 to i64
%482 = getelementptr inbounds i32, i32* %478, i64 %481
%483 = load i32, i32* %482
%484 = add nsw i32 %483, %477
store i32 %484, i32* %482
%485 = load i32, i32* %11
%486 = ashr i32 %485, 1
%487 = load i32*, i32** %7
%488 = load i32, i32* %22
%489 = sub nsw i32 %488, 1
%490 = sext i32 %489 to i64
%491 = getelementptr inbounds i32, i32* %487, i64 %490
%492 = load i32, i32* %491
%493 = add nsw i32 %492, %486
store i32 %493, i32* %491
br label %494
494: ; preds = %476, %467
%495 = load i32*, i32** %14
%496 = load i32, i32* %17
%497 = load i32, i32* %18
%498 = sub nsw i32 %497, 1
%499 = mul nsw i32 %496, %498
%500 = sext i32 %499 to i64
%501 = getelementptr inbounds i32, i32* %495, i64 %500
%502 = load i32, i32* %501
%503 = ashr i32 %502, 1
store i32 %503, i32* %11
%504 = icmp ne i32 %503, 0
br i1 %504, label %505, label %528
505: ; preds = %494
%506 = load i32, i32* %11
%507 = load i32*, i32** %7
%508 = load i32, i32* %15
%509 = load i32, i32* %16
%510 = sub nsw i32 %509, 1
%511 = mul nsw i32 %508, %510
%512 = sext i32 %511 to i64
%513 = getelementptr inbounds i32, i32* %507, i64 %512
%514 = load i32, i32* %513
%515 = add nsw i32 %514, %506
store i32 %515, i32* %513
%516 = load i32, i32* %11
%517 = ashr i32 %516, 1
%518 = load i32*, i32** %7
%519 = load i32, i32* %15
%520 = load i32, i32* %16
%521 = sub nsw i32 %520, 1
%522 = mul nsw i32 %519, %521
%523 = add nsw i32 %522, 1
%524 = sext i32 %523 to i64
%525 = getelementptr inbounds i32, i32* %518, i64 %524
%526 = load i32, i32* %525
%527 = add nsw i32 %526, %517
store i32 %527, i32* %525
br label %528
528: ; preds = %505, %494
%529 = load i32*, i32** %14
%530 = load i32, i32* %17
%531 = load i32, i32* %18
%532 = mul nsw i32 %530, %531
%533 = sub nsw i32 %532, 1
%534 = sext i32 %533 to i64
%535 = getelementptr inbounds i32, i32* %529, i64 %534
%536 = load i32, i32* %535
%537 = ashr i32 %536, 2
%538 = load i32*, i32** %7
%539 = load i32, i32* %15
%540 = load i32, i32* %16
%541 = mul nsw i32 %539, %540
%542 = sub nsw i32 %541, 1
%543 = sext i32 %542 to i64
%544 = getelementptr inbounds i32, i32* %538, i64 %543
%545 = load i32, i32* %544
%546 = add nsw i32 %545, %537
store i32 %546, i32* %544
%547 = load i32*, i32** %6
%548 = load i32, i32* %17
%549 = mul nsw i32 2, %548
%550 = load i32, i32* %18
%551 = mul nsw i32 %549, %550
%552 = sext i32 %551 to i64
%553 = getelementptr inbounds i32, i32* %547, i64 %552
store i32* %553, i32** %14
%554 = load i32*, i32** %14
%555 = load i32, i32* %17
%556 = load i32, i32* %18
%557 = call i32 (i32*, i32, i32, ...) bitcast (i32 (...)* @internal_int_transpose to i32 (i32*, i32, i32, ...)*)(i32* %554, i32 %555, i32 %556)
%558 = load i32, i32* %17
store i32 %558, i32* %19
%559 = load i32, i32* %22
%560 = add nsw i32 %559, 1
store i32 %560, i32* %12
store i32 1, i32* %21
br label %561
561: ; preds = %663, %528
%562 = load i32, i32* %21
%563 = load i32, i32* %18
%564 = icmp slt i32 %562, %563
br i1 %564, label %565, label %672
565: ; preds = %561
store i32 1, i32* %20
br label %566
566: ; preds = %655, %565
%567 = load i32, i32* %20
%568 = load i32, i32* %17
%569 = icmp slt i32 %567, %568
br i1 %569, label %570, label %662
570: ; preds = %566
%571 = load i32*, i32** %14
%572 = load i32, i32* %19
%573 = sext i32 %572 to i64
%574 = getelementptr inbounds i32, i32* %571, i64 %573
%575 = load i32, i32* %574
store i32 %575, i32* %11
%576 = icmp ne i32 %575, 0
br i1 %576, label %577, label %654
577: ; preds = %570
%578 = load i32, i32* %11
%579 = load i32*, i32** %7
%580 = load i32, i32* %12
%581 = sext i32 %580 to i64
%582 = getelementptr inbounds i32, i32* %579, i64 %581
%583 = load i32, i32* %582
%584 = add nsw i32 %583, %578
store i32 %584, i32* %582
%585 = load i32, i32* %11
%586 = ashr i32 %585, 1
store i32 %586, i32* %11
%587 = load i32*, i32** %7
%588 = load i32, i32* %12
%589 = sub nsw i32 %588, 1
%590 = sext i32 %589 to i64
%591 = getelementptr inbounds i32, i32* %587, i64 %590
%592 = load i32, i32* %591
%593 = sub nsw i32 %592, %586
store i32 %593, i32* %591
%594 = load i32, i32* %11
%595 = load i32*, i32** %7
%596 = load i32, i32* %12
%597 = add nsw i32 %596, 1
%598 = sext i32 %597 to i64
%599 = getelementptr inbounds i32, i32* %595, i64 %598
%600 = load i32, i32* %599
%601 = sub nsw i32 %600, %594
store i32 %601, i32* %599
%602 = load i32, i32* %11
%603 = load i32*, i32** %7
%604 = load i32, i32* %12
%605 = load i32, i32* %15
%606 = sub nsw i32 %604, %605
store i32 %606, i32* %13
%607 = sext i32 %606 to i64
%608 = getelementptr inbounds i32, i32* %603, i64 %607
%609 = load i32, i32* %608
%610 = add nsw i32 %609, %602
store i32 %610, i32* %608
%611 = load i32, i32* %11
%612 = ashr i32 %611, 1
store i32 %612, i32* %11
%613 = load i32*, i32** %7
%614 = load i32, i32* %13
%615 = sub nsw i32 %614, 1
%616 = sext i32 %615 to i64
%617 = getelementptr inbounds i32, i32* %613, i64 %616
%618 = load i32, i32* %617
%619 = sub nsw i32 %618, %612
store i32 %619, i32* %617
%620 = load i32, i32* %11
%621 = load i32*, i32** %7
%622 = load i32, i32* %13
%623 = add nsw i32 %622, 1
%624 = sext i32 %623 to i64
%625 = getelementptr inbounds i32, i32* %621, i64 %624
%626 = load i32, i32* %625
%627 = sub nsw i32 %626, %620
store i32 %627, i32* %625
%628 = load i32, i32* %11
%629 = shl i32 %628, 1
%630 = load i32*, i32** %7
%631 = load i32, i32* %12
%632 = load i32, i32* %15
%633 = add nsw i32 %631, %632
store i32 %633, i32* %13
%634 = sext i32 %633 to i64
%635 = getelementptr inbounds i32, i32* %630, i64 %634
%636 = load i32, i32* %635
%637 = add nsw i32 %636, %629
store i32 %637, i32* %635
%638 = load i32, i32* %11
%639 = load i32*, i32** %7
%640 = load i32, i32* %13
%641 = sub nsw i32 %640, 1
%642 = sext i32 %641 to i64
%643 = getelementptr inbounds i32, i32* %639, i64 %642
%644 = load i32, i32* %643
%645 = sub nsw i32 %644, %638
store i32 %645, i32* %643
%646 = load i32, i32* %11
%647 = load i32*, i32** %7
%648 = load i32, i32* %13
%649 = add nsw i32 %648, 1
%650 = sext i32 %649 to i64
%651 = getelementptr inbounds i32, i32* %647, i64 %650
%652 = load i32, i32* %651
%653 = sub nsw i32 %652, %646
store i32 %653, i32* %651
br label %654
654: ; preds = %577, %570
br label %655
655: ; preds = %654
%656 = load i32, i32* %19
%657 = add nsw i32 %656, 1
store i32 %657, i32* %19
%658 = load i32, i32* %12
%659 = add nsw i32 %658, 2
store i32 %659, i32* %12
%660 = load i32, i32* %20
%661 = add nsw i32 %660, 1
store i32 %661, i32* %20
br label %566
662: ; preds = %566
br label %663
663: ; preds = %662
%664 = load i32, i32* %19
%665 = add nsw i32 %664, 1
store i32 %665, i32* %19
%666 = load i32, i32* %15
%667 = add nsw i32 %666, 2
%668 = load i32, i32* %12
%669 = add nsw i32 %668, %667
store i32 %669, i32* %12
%670 = load i32, i32* %21
%671 = add nsw i32 %670, 1
store i32 %671, i32* %21
br label %561
672: ; preds = %561
store i32 0, i32* %19
store i32 1, i32* %12
store i32 1, i32* %20
br label %673
673: ; preds = %736, %672
%674 = load i32, i32* %20
%675 = load i32, i32* %17
%676 = icmp slt i32 %674, %675
br i1 %676, label %677, label %743
677: ; preds = %673
%678 = load i32*, i32** %14
%679 = load i32, i32* %19
%680 = sext i32 %679 to i64
%681 = getelementptr inbounds i32, i32* %678, i64 %680
%682 = load i32, i32* %681
store i32 %682, i32* %11
%683 = icmp ne i32 %682, 0
br i1 %683, label %684, label %735
684: ; preds = %677
%685 = load i32, i32* %11
%686 = load i32*, i32** %7
%687 = load i32, i32* %12
%688 = sext i32 %687 to i64
%689 = getelementptr inbounds i32, i32* %686, i64 %688
%690 = load i32, i32* %689
%691 = add nsw i32 %690, %685
store i32 %691, i32* %689
%692 = load i32, i32* %11
%693 = ashr i32 %692, 1
store i32 %693, i32* %11
%694 = load i32*, i32** %7
%695 = load i32, i32* %12
%696 = sub nsw i32 %695, 1
%697 = sext i32 %696 to i64
%698 = getelementptr inbounds i32, i32* %694, i64 %697
%699 = load i32, i32* %698
%700 = sub nsw i32 %699, %693
store i32 %700, i32* %698
%701 = load i32, i32* %11
%702 = load i32*, i32** %7
%703 = load i32, i32* %12
%704 = add nsw i32 %703, 1
%705 = sext i32 %704 to i64
%706 = getelementptr inbounds i32, i32* %702, i64 %705
%707 = load i32, i32* %706
%708 = sub nsw i32 %707, %701
store i32 %708, i32* %706
%709 = load i32, i32* %11
%710 = load i32*, i32** %7
%711 = load i32, i32* %12
%712 = load i32, i32* %15
%713 = add nsw i32 %711, %712
store i32 %713, i32* %13
%714 = sext i32 %713 to i64
%715 = getelementptr inbounds i32, i32* %710, i64 %714
%716 = load i32, i32* %715
%717 = add nsw i32 %716, %709
store i32 %717, i32* %715
%718 = load i32, i32* %11
%719 = ashr i32 %718, 1
store i32 %719, i32* %11
%720 = load i32*, i32** %7
%721 = load i32, i32* %13
%722 = sub nsw i32 %721, 1
%723 = sext i32 %722 to i64
%724 = getelementptr inbounds i32, i32* %720, i64 %723
%725 = load i32, i32* %724
%726 = sub nsw i32 %725, %719
store i32 %726, i32* %724
%727 = load i32, i32* %11
%728 = load i32*, i32** %7
%729 = load i32, i32* %13
%730 = add nsw i32 %729, 1
%731 = sext i32 %730 to i64
%732 = getelementptr inbounds i32, i32* %728, i64 %731
%733 = load i32, i32* %732
%734 = sub nsw i32 %733, %727
store i32 %734, i32* %732
br label %735
735: ; preds = %684, %677
br label %736
736: ; preds = %735
%737 = load i32, i32* %19
%738 = add nsw i32 %737, 1
store i32 %738, i32* %19
%739 = load i32, i32* %12
%740 = add nsw i32 %739, 2
store i32 %740, i32* %12
%741 = load i32, i32* %20
%742 = add nsw i32 %741, 1
store i32 %742, i32* %20
br label %673
743: ; preds = %673
%744 = load i32, i32* %17
%745 = shl i32 %744, 1
%746 = sub nsw i32 %745, 1
store i32 %746, i32* %19
%747 = load i32, i32* %22
%748 = load i32, i32* %15
%749 = add nsw i32 %747, %748
%750 = sub nsw i32 %749, 1
store i32 %750, i32* %12
store i32 1, i32* %20
br label %751
751: ; preds = %816, %743
%752 = load i32, i32* %20
%753 = load i32, i32* %18
%754 = icmp slt i32 %752, %753
br i1 %754, label %755, label %825
755: ; preds = %751
%756 = load i32*, i32** %14
%757 = load i32, i32* %19
%758 = sext i32 %757 to i64
%759 = getelementptr inbounds i32, i32* %756, i64 %758
%760 = load i32, i32* %759
store i32 %760, i32* %11
%761 = icmp ne i32 %760, 0
br i1 %761, label %762, label %815
762: ; preds = %755
%763 = load i32, i32* %11
%764 = load i32*, i32** %7
%765 = load i32, i32* %12
%766 = sext i32 %765 to i64
%767 = getelementptr inbounds i32, i32* %764, i64 %766
%768 = load i32, i32* %767
%769 = add nsw i32 %768, %763
store i32 %769, i32* %767
%770 = load i32, i32* %11
%771 = ashr i32 %770, 1
store i32 %771, i32* %11
%772 = load i32*, i32** %7
%773 = load i32, i32* %12
%774 = sub nsw i32 %773, 1
%775 = sext i32 %774 to i64
%776 = getelementptr inbounds i32, i32* %772, i64 %775
%777 = load i32, i32* %776
%778 = sub nsw i32 %777, %771
store i32 %778, i32* %776
%779 = load i32, i32* %11
%780 = load i32*, i32** %7
%781 = load i32, i32* %12
%782 = load i32, i32* %15
%783 = sub nsw i32 %781, %782
store i32 %783, i32* %13
%784 = sext i32 %783 to i64
%785 = getelementptr inbounds i32, i32* %780, i64 %784
%786 = load i32, i32* %785
%787 = add nsw i32 %786, %779
store i32 %787, i32* %785
%788 = load i32, i32* %11
%789 = ashr i32 %788, 1
%790 = load i32*, i32** %7
%791 = load i32, i32* %13
%792 = sub nsw i32 %791, 1
%793 = sext i32 %792 to i64
%794 = getelementptr inbounds i32, i32* %790, i64 %793
%795 = load i32, i32* %794
%796 = sub nsw i32 %795, %789
store i32 %796, i32* %794
%797 = load i32, i32* %11
%798 = load i32*, i32** %7
%799 = load i32, i32* %12
%800 = load i32, i32* %15
%801 = add nsw i32 %799, %800
store i32 %801, i32* %13
%802 = sext i32 %801 to i64
%803 = getelementptr inbounds i32, i32* %798, i64 %802
%804 = load i32, i32* %803
%805 = add nsw i32 %804, %797
store i32 %805, i32* %803
%806 = load i32, i32* %11
%807 = ashr i32 %806, 1
%808 = load i32*, i32** %7
%809 = load i32, i32* %13
%810 = sub nsw i32 %809, 1
%811 = sext i32 %810 to i64
%812 = getelementptr inbounds i32, i32* %808, i64 %811
%813 = load i32, i32* %812
%814 = sub nsw i32 %813, %807
store i32 %814, i32* %812
br label %815
815: ; preds = %762, %755
br label %816
816: ; preds = %815
%817 = load i32, i32* %17
%818 = load i32, i32* %19
%819 = add nsw i32 %818, %817
store i32 %819, i32* %19
%820 = load i32, i32* %22
%821 = load i32, i32* %12
%822 = add nsw i32 %821, %820
store i32 %822, i32* %12
%823 = load i32, i32* %20
%824 = add nsw i32 %823, 1
store i32 %824, i32* %20
br label %751
825: ; preds = %751
%826 = load i32, i32* %17
%827 = load i32, i32* %18
%828 = sub nsw i32 %827, 1
%829 = mul nsw i32 %826, %828
store i32 %829, i32* %19
%830 = load i32, i32* %15
%831 = load i32, i32* %16
%832 = sub nsw i32 %831, 1
%833 = mul nsw i32 %830, %832
%834 = add nsw i32 %833, 1
store i32 %834, i32* %12
store i32 1, i32* %20
br label %835
835: ; preds = %873, %825
%836 = load i32, i32* %20
%837 = load i32, i32* %17
%838 = icmp slt i32 %836, %837
br i1 %838, label %839, label %880
839: ; preds = %835
%840 = load i32*, i32** %14
%841 = load i32, i32* %19
%842 = sext i32 %841 to i64
%843 = getelementptr inbounds i32, i32* %840, i64 %842
%844 = load i32, i32* %843
%845 = ashr i32 %844, 1
store i32 %845, i32* %11
%846 = icmp ne i32 %845, 0
br i1 %846, label %847, label %872
847: ; preds = %839
%848 = load i32, i32* %11
%849 = load i32*, i32** %7
%850 = load i32, i32* %12
%851 = sext i32 %850 to i64
%852 = getelementptr inbounds i32, i32* %849, i64 %851
%853 = load i32, i32* %852
%854 = add nsw i32 %853, %848
store i32 %854, i32* %852
%855 = load i32, i32* %11
%856 = ashr i32 %855, 1
store i32 %856, i32* %11
%857 = load i32*, i32** %7
%858 = load i32, i32* %12
%859 = sub nsw i32 %858, 1
%860 = sext i32 %859 to i64
%861 = getelementptr inbounds i32, i32* %857, i64 %860
%862 = load i32, i32* %861
%863 = sub nsw i32 %862, %856
store i32 %863, i32* %861
%864 = load i32, i32* %11
%865 = load i32*, i32** %7
%866 = load i32, i32* %12
%867 = add nsw i32 %866, 1
%868 = sext i32 %867 to i64
%869 = getelementptr inbounds i32, i32* %865, i64 %868
%870 = load i32, i32* %869
%871 = sub nsw i32 %870, %864
store i32 %871, i32* %869
br label %872
872: ; preds = %847, %839
br label %873
873: ; preds = %872
%874 = load i32, i32* %19
%875 = add nsw i32 %874, 1
store i32 %875, i32* %19
%876 = load i32, i32* %12
%877 = add nsw i32 %876, 2
store i32 %877, i32* %12
%878 = load i32, i32* %20
%879 = add nsw i32 %878, 1
store i32 %879, i32* %20
br label %835
880: ; preds = %835
%881 = load i32, i32* %17
store i32 %881, i32* %19
%882 = load i32, i32* %22
store i32 %882, i32* %12
store i32 1, i32* %20
br label %883
883: ; preds = %925, %880
%884 = load i32, i32* %20
%885 = load i32, i32* %18
%886 = icmp slt i32 %884, %885
br i1 %886, label %887, label %934
887: ; preds = %883
%888 = load i32*, i32** %14
%889 = load i32, i32* %19
%890 = sext i32 %889 to i64
%891 = getelementptr inbounds i32, i32* %888, i64 %890
%892 = load i32, i32* %891
%893 = ashr i32 %892, 1
%894 = sub nsw i32 0, %893
store i32 %894, i32* %11
%895 = load i32, i32* %11
%896 = icmp ne i32 %895, 0
br i1 %896, label %897, label %924
897: ; preds = %887
%898 = load i32, i32* %11
%899 = load i32*, i32** %7
%900 = load i32, i32* %12
%901 = sext i32 %900 to i64
%902 = getelementptr inbounds i32, i32* %899, i64 %901
%903 = load i32, i32* %902
%904 = add nsw i32 %903, %898
store i32 %904, i32* %902
%905 = load i32, i32* %11
%906 = ashr i32 %905, 1
store i32 %906, i32* %11
%907 = load i32*, i32** %7
%908 = load i32, i32* %12
%909 = load i32, i32* %15
%910 = sub nsw i32 %908, %909
%911 = sext i32 %910 to i64
%912 = getelementptr inbounds i32, i32* %907, i64 %911
%913 = load i32, i32* %912
%914 = add nsw i32 %913, %906
store i32 %914, i32* %912
%915 = load i32, i32* %11
%916 = load i32*, i32** %7
%917 = load i32, i32* %12
%918 = load i32, i32* %15
%919 = add nsw i32 %917, %918
%920 = sext i32 %919 to i64
%921 = getelementptr inbounds i32, i32* %916, i64 %920
%922 = load i32, i32* %921
%923 = add nsw i32 %922, %915
store i32 %923, i32* %921
br label %924
924: ; preds = %897, %887
br label %925
925: ; preds = %924
%926 = load i32, i32* %17
%927 = load i32, i32* %19
%928 = add nsw i32 %927, %926
store i32 %928, i32* %19
%929 = load i32, i32* %22
%930 = load i32, i32* %12
%931 = add nsw i32 %930, %929
store i32 %931, i32* %12
%932 = load i32, i32* %20
%933 = add nsw i32 %932, 1
store i32 %933, i32* %20
br label %883
934: ; preds = %883
%935 = load i32*, i32** %14
%936 = getelementptr inbounds i32, i32* %935, i64 0
%937 = load i32, i32* %936
%938 = ashr i32 %937, 1
%939 = sub nsw i32 0, %938
store i32 %939, i32* %11
%940 = icmp ne i32 %939, 0
br i1 %940, label %941, label %955
941: ; preds = %934
%942 = load i32, i32* %11
%943 = load i32*, i32** %7
%944 = getelementptr inbounds i32, i32* %943, i64 0
%945 = load i32, i32* %944
%946 = add nsw i32 %945, %942
store i32 %946, i32* %944
%947 = load i32, i32* %11
%948 = ashr i32 %947, 1
%949 = load i32*, i32** %7
%950 = load i32, i32* %15
%951 = sext i32 %950 to i64
%952 = getelementptr inbounds i32, i32* %949, i64 %951
%953 = load i32, i32* %952
%954 = add nsw i32 %953, %948
store i32 %954, i32* %952
br label %955
955: ; preds = %941, %934
%956 = load i32*, i32** %14
%957 = load i32, i32* %17
%958 = sub nsw i32 %957, 1
%959 = sext i32 %958 to i64
%960 = getelementptr inbounds i32, i32* %956, i64 %959
%961 = load i32, i32* %960
store i32 %961, i32* %11
%962 = icmp ne i32 %961, 0
br i1 %962, label %963, label %998
963: ; preds = %955
%964 = load i32, i32* %11
%965 = load i32*, i32** %7
%966 = load i32, i32* %15
%967 = sub nsw i32 %966, 1
%968 = sext i32 %967 to i64
%969 = getelementptr inbounds i32, i32* %965, i64 %968
%970 = load i32, i32* %969
%971 = add nsw i32 %970, %964
store i32 %971, i32* %969
%972 = load i32, i32* %11
%973 = ashr i32 %972, 1
store i32 %973, i32* %11
%974 = load i32*, i32** %7
%975 = load i32, i32* %15
%976 = sub nsw i32 %975, 2
%977 = sext i32 %976 to i64
%978 = getelementptr inbounds i32, i32* %974, i64 %977
%979 = load i32, i32* %978
%980 = sub nsw i32 %979, %973
store i32 %980, i32* %978
%981 = load i32, i32* %11
%982 = load i32*, i32** %7
%983 = load i32, i32* %22
%984 = sub nsw i32 %983, 1
%985 = sext i32 %984 to i64
%986 = getelementptr inbounds i32, i32* %982, i64 %985
%987 = load i32, i32* %986
%988 = add nsw i32 %987, %981
store i32 %988, i32* %986
%989 = load i32, i32* %11
%990 = ashr i32 %989, 1
%991 = load i32*, i32** %7
%992 = load i32, i32* %22
%993 = sub nsw i32 %992, 2
%994 = sext i32 %993 to i64
%995 = getelementptr inbounds i32, i32* %991, i64 %994
%996 = load i32, i32* %995
%997 = sub nsw i32 %996, %990
store i32 %997, i32* %995
br label %998
998: ; preds = %963, %955
%999 = load i32*, i32** %14
%1000 = load i32, i32* %17
%1001 = load i32, i32* %18
%1002 = sub nsw i32 %1001, 1
%1003 = mul nsw i32 %1000, %1002
%1004 = sext i32 %1003 to i64
%1005 = getelementptr inbounds i32, i32* %999, i64 %1004
%1006 = load i32, i32* %1005
%1007 = ashr i32 %1006, 2
%1008 = load i32*, i32** %7
%1009 = load i32, i32* %15
%1010 = load i32, i32* %16
%1011 = sub nsw i32 %1010, 1
%1012 = mul nsw i32 %1009, %1011
%1013 = sext i32 %1012 to i64
%1014 = getelementptr inbounds i32, i32* %1008, i64 %1013
%1015 = load i32, i32* %1014
%1016 = sub nsw i32 %1015, %1007
store i32 %1016, i32* %1014
%1017 = load i32*, i32** %14
%1018 = load i32, i32* %17
%1019 = load i32, i32* %18
%1020 = mul nsw i32 %1018, %1019
%1021 = sub nsw i32 %1020, 1
%1022 = sext i32 %1021 to i64
%1023 = getelementptr inbounds i32, i32* %1017, i64 %1022
%1024 = load i32, i32* %1023
%1025 = ashr i32 %1024, 1
store i32 %1025, i32* %11
%1026 = icmp ne i32 %1025, 0
br i1 %1026, label %1027, label %1049
1027: ; preds = %998
%1028 = load i32, i32* %11
%1029 = load i32*, i32** %7
%1030 = load i32, i32* %15
%1031 = load i32, i32* %16
%1032 = mul nsw i32 %1030, %1031
%1033 = sub nsw i32 %1032, 1
%1034 = sext i32 %1033 to i64
%1035 = getelementptr inbounds i32, i32* %1029, i64 %1034
%1036 = load i32, i32* %1035
%1037 = add nsw i32 %1036, %1028
store i32 %1037, i32* %1035
%1038 = load i32, i32* %11
%1039 = ashr i32 %1038, 1
%1040 = load i32*, i32** %7
%1041 = load i32, i32* %15
%1042 = load i32, i32* %16
%1043 = mul nsw i32 %1041, %1042
%1044 = sub nsw i32 %1043, 2
%1045 = sext i32 %1044 to i64
%1046 = getelementptr inbounds i32, i32* %1040, i64 %1045
%1047 = load i32, i32* %1046
%1048 = sub nsw i32 %1047, %1039
store i32 %1048, i32* %1046
br label %1049
1049: ; preds = %1027, %998
%1050 = load i32*, i32** %6
%1051 = load i32, i32* %17
%1052 = load i32, i32* %18
%1053 = mul nsw i32 %1051, %1052
%1054 = sext i32 %1053 to i64
%1055 = getelementptr inbounds i32, i32* %1050, i64 %1054
store i32* %1055, i32** %14
store i32 1, i32* %19
%1056 = load i32, i32* %15
%1057 = add nsw i32 %1056, 2
store i32 %1057, i32* %12
store i32 1, i32* %21
br label %1058
1058: ; preds = %1160, %1049
%1059 = load i32, i32* %21
%1060 = load i32, i32* %18
%1061 = icmp slt i32 %1059, %1060
br i1 %1061, label %1062, label %1169
1062: ; preds = %1058
store i32 1, i32* %20
br label %1063
1063: ; preds = %1152, %1062
%1064 = load i32, i32* %20
%1065 = load i32, i32* %17
%1066 = icmp slt i32 %1064, %1065
br i1 %1066, label %1067, label %1159
1067: ; preds = %1063
%1068 = load i32*, i32** %14
%1069 = load i32, i32* %19
%1070 = sext i32 %1069 to i64
%1071 = getelementptr inbounds i32, i32* %1068, i64 %1070
%1072 = load i32, i32* %1071
store i32 %1072, i32* %11
%1073 = icmp ne i32 %1072, 0
br i1 %1073, label %1074, label %1151
1074: ; preds = %1067
%1075 = load i32, i32* %11
%1076 = load i32*, i32** %7
%1077 = load i32, i32* %12
%1078 = sext i32 %1077 to i64
%1079 = getelementptr inbounds i32, i32* %1076, i64 %1078
%1080 = load i32, i32* %1079
%1081 = add nsw i32 %1080, %1075
store i32 %1081, i32* %1079
%1082 = load i32, i32* %11
%1083 = ashr i32 %1082, 1
store i32 %1083, i32* %11
%1084 = load i32*, i32** %7
%1085 = load i32, i32* %12
%1086 = sub nsw i32 %1085, 1
%1087 = sext i32 %1086 to i64
%1088 = getelementptr inbounds i32, i32* %1084, i64 %1087
%1089 = load i32, i32* %1088
%1090 = add nsw i32 %1089, %1083
store i32 %1090, i32* %1088
%1091 = load i32, i32* %11
%1092 = load i32*, i32** %7
%1093 = load i32, i32* %12
%1094 = add nsw i32 %1093, 1
%1095 = sext i32 %1094 to i64
%1096 = getelementptr inbounds i32, i32* %1092, i64 %1095
%1097 = load i32, i32* %1096
%1098 = add nsw i32 %1097, %1091
store i32 %1098, i32* %1096
%1099 = load i32, i32* %11
%1100 = load i32*, i32** %7
%1101 = load i32, i32* %12
%1102 = load i32, i32* %15
%1103 = sub nsw i32 %1101, %1102
store i32 %1103, i32* %13
%1104 = sext i32 %1103 to i64
%1105 = getelementptr inbounds i32, i32* %1100, i64 %1104
%1106 = load i32, i32* %1105
%1107 = sub nsw i32 %1106, %1099
store i32 %1107, i32* %1105
%1108 = load i32, i32* %11
%1109 = ashr i32 %1108, 1
store i32 %1109, i32* %11
%1110 = load i32*, i32** %7
%1111 = load i32, i32* %13
%1112 = sub nsw i32 %1111, 1
%1113 = sext i32 %1112 to i64
%1114 = getelementptr inbounds i32, i32* %1110, i64 %1113
%1115 = load i32, i32* %1114
%1116 = sub nsw i32 %1115, %1109
store i32 %1116, i32* %1114
%1117 = load i32, i32* %11
%1118 = load i32*, i32** %7
%1119 = load i32, i32* %13
%1120 = add nsw i32 %1119, 1
%1121 = sext i32 %1120 to i64
%1122 = getelementptr inbounds i32, i32* %1118, i64 %1121
%1123 = load i32, i32* %1122
%1124 = sub nsw i32 %1123, %1117
store i32 %1124, i32* %1122
%1125 = load i32, i32* %11
%1126 = shl i32 %1125, 1
%1127 = load i32*, i32** %7
%1128 = load i32, i32* %12
%1129 = load i32, i32* %15
%1130 = add nsw i32 %1128, %1129
store i32 %1130, i32* %13
%1131 = sext i32 %1130 to i64
%1132 = getelementptr inbounds i32, i32* %1127, i64 %1131
%1133 = load i32, i32* %1132
%1134 = sub nsw i32 %1133, %1126
store i32 %1134, i32* %1132
%1135 = load i32, i32* %11
%1136 = load i32*, i32** %7
%1137 = load i32, i32* %13
%1138 = sub nsw i32 %1137, 1
%1139 = sext i32 %1138 to i64
%1140 = getelementptr inbounds i32, i32* %1136, i64 %1139
%1141 = load i32, i32* %1140
%1142 = sub nsw i32 %1141, %1135
store i32 %1142, i32* %1140
%1143 = load i32, i32* %11
%1144 = load i32*, i32** %7
%1145 = load i32, i32* %13
%1146 = add nsw i32 %1145, 1
%1147 = sext i32 %1146 to i64
%1148 = getelementptr inbounds i32, i32* %1144, i64 %1147
%1149 = load i32, i32* %1148
%1150 = sub nsw i32 %1149, %1143
store i32 %1150, i32* %1148
br label %1151
1151: ; preds = %1074, %1067
br label %1152
1152: ; preds = %1151
%1153 = load i32, i32* %19
%1154 = add nsw i32 %1153, 1
store i32 %1154, i32* %19
%1155 = load i32, i32* %12
%1156 = add nsw i32 %1155, 2
store i32 %1156, i32* %12
%1157 = load i32, i32* %20
%1158 = add nsw i32 %1157, 1
store i32 %1158, i32* %20
br label %1063
1159: ; preds = %1063
br label %1160
1160: ; preds = %1159
%1161 = load i32, i32* %19
%1162 = add nsw i32 %1161, 1
store i32 %1162, i32* %19
%1163 = load i32, i32* %15
%1164 = add nsw i32 %1163, 2
%1165 = load i32, i32* %12
%1166 = add nsw i32 %1165, %1164
store i32 %1166, i32* %12
%1167 = load i32, i32* %21
%1168 = add nsw i32 %1167, 1
store i32 %1168, i32* %21
br label %1058
1169: ; preds = %1058
store i32 1, i32* %19
store i32 2, i32* %12
store i32 1, i32* %20
br label %1170
1170: ; preds = %1209, %1169
%1171 = load i32, i32* %20
%1172 = load i32, i32* %17
%1173 = icmp slt i32 %1171, %1172
br i1 %1173, label %1174, label %1216
1174: ; preds = %1170
%1175 = load i32*, i32** %14
%1176 = load i32, i32* %19
%1177 = sext i32 %1176 to i64
%1178 = getelementptr inbounds i32, i32* %1175, i64 %1177
%1179 = load i32, i32* %1178
%1180 = ashr i32 %1179, 1
%1181 = sub nsw i32 0, %1180
store i32 %1181, i32* %11
%1182 = icmp ne i32 %1181, 0
br i1 %1182, label %1183, label %1208
1183: ; preds = %1174
%1184 = load i32, i32* %11
%1185 = load i32*, i32** %7
%1186 = load i32, i32* %12
%1187 = sext i32 %1186 to i64
%1188 = getelementptr inbounds i32, i32* %1185, i64 %1187
%1189 = load i32, i32* %1188
%1190 = add nsw i32 %1189, %1184
store i32 %1190, i32* %1188
%1191 = load i32, i32* %11
%1192 = ashr i32 %1191, 1
store i32 %1192, i32* %11
%1193 = load i32*, i32** %7
%1194 = load i32, i32* %12
%1195 = sub nsw i32 %1194, 1
%1196 = sext i32 %1195 to i64
%1197 = getelementptr inbounds i32, i32* %1193, i64 %1196
%1198 = load i32, i32* %1197
%1199 = add nsw i32 %1198, %1192
store i32 %1199, i32* %1197
%1200 = load i32, i32* %11
%1201 = load i32*, i32** %7
%1202 = load i32, i32* %12
%1203 = add nsw i32 %1202, 1
%1204 = sext i32 %1203 to i64
%1205 = getelementptr inbounds i32, i32* %1201, i64 %1204
%1206 = load i32, i32* %1205
%1207 = add nsw i32 %1206, %1200
store i32 %1207, i32* %1205
br label %1208
1208: ; preds = %1183, %1174
br label %1209
1209: ; preds = %1208
%1210 = load i32, i32* %19
%1211 = add nsw i32 %1210, 1
store i32 %1211, i32* %19
%1212 = load i32, i32* %12
%1213 = add nsw i32 %1212, 2
store i32 %1213, i32* %12
%1214 = load i32, i32* %20
%1215 = add nsw i32 %1214, 1
store i32 %1215, i32* %20
br label %1170
1216: ; preds = %1170
store i32 0, i32* %19
%1217 = load i32, i32* %15
store i32 %1217, i32* %12
store i32 1, i32* %20
br label %1218
1218: ; preds = %1283, %1216
%1219 = load i32, i32* %20
%1220 = load i32, i32* %18
%1221 = icmp slt i32 %1219, %1220
br i1 %1221, label %1222, label %1292
1222: ; preds = %1218
%1223 = load i32*, i32** %14
%1224 = load i32, i32* %19
%1225 = sext i32 %1224 to i64
%1226 = getelementptr inbounds i32, i32* %1223, i64 %1225
%1227 = load i32, i32* %1226
store i32 %1227, i32* %11
%1228 = icmp ne i32 %1227, 0
br i1 %1228, label %1229, label %1282
1229: ; preds = %1222
%1230 = load i32, i32* %11
%1231 = load i32*, i32** %7
%1232 = load i32, i32* %12
%1233 = sext i32 %1232 to i64
%1234 = getelementptr inbounds i32, i32* %1231, i64 %1233
%1235 = load i32, i32* %1234
%1236 = add nsw i32 %1235, %1230
store i32 %1236, i32* %1234
%1237 = load i32, i32* %11
%1238 = ashr i32 %1237, 1
store i32 %1238, i32* %11
%1239 = load i32*, i32** %7
%1240 = load i32, i32* %12
%1241 = add nsw i32 %1240, 1
%1242 = sext i32 %1241 to i64
%1243 = getelementptr inbounds i32, i32* %1239, i64 %1242
%1244 = load i32, i32* %1243
%1245 = add nsw i32 %1244, %1238
store i32 %1245, i32* %1243
%1246 = load i32, i32* %11
%1247 = load i32*, i32** %7
%1248 = load i32, i32* %12
%1249 = load i32, i32* %15
%1250 = sub nsw i32 %1248, %1249
store i32 %1250, i32* %13
%1251 = sext i32 %1250 to i64
%1252 = getelementptr inbounds i32, i32* %1247, i64 %1251
%1253 = load i32, i32* %1252
%1254 = sub nsw i32 %1253, %1246
store i32 %1254, i32* %1252
%1255 = load i32, i32* %11
%1256 = ashr i32 %1255, 1
%1257 = load i32*, i32** %7
%1258 = load i32, i32* %13
%1259 = add nsw i32 %1258, 1
%1260 = sext i32 %1259 to i64
%1261 = getelementptr inbounds i32, i32* %1257, i64 %1260
%1262 = load i32, i32* %1261
%1263 = sub nsw i32 %1262, %1256
store i32 %1263, i32* %1261
%1264 = load i32, i32* %11
%1265 = load i32*, i32** %7
%1266 = load i32, i32* %12
%1267 = load i32, i32* %15
%1268 = add nsw i32 %1266, %1267
store i32 %1268, i32* %13
%1269 = sext i32 %1268 to i64
%1270 = getelementptr inbounds i32, i32* %1265, i64 %1269
%1271 = load i32, i32* %1270
%1272 = sub nsw i32 %1271, %1264
store i32 %1272, i32* %1270
%1273 = load i32, i32* %11
%1274 = ashr i32 %1273, 1
%1275 = load i32*, i32** %7
%1276 = load i32, i32* %13
%1277 = add nsw i32 %1276, 1
%1278 = sext i32 %1277 to i64
%1279 = getelementptr inbounds i32, i32* %1275, i64 %1278
%1280 = load i32, i32* %1279
%1281 = sub nsw i32 %1280, %1274
store i32 %1281, i32* %1279
br label %1282
1282: ; preds = %1229, %1222
br label %1283
1283: ; preds = %1282
%1284 = load i32, i32* %17
%1285 = load i32, i32* %19
%1286 = add nsw i32 %1285, %1284
store i32 %1286, i32* %19
%1287 = load i32, i32* %22
%1288 = load i32, i32* %12
%1289 = add nsw i32 %1288, %1287
store i32 %1289, i32* %12
%1290 = load i32, i32* %20
%1291 = add nsw i32 %1290, 1
store i32 %1291, i32* %20
br label %1218
1292: ; preds = %1218
%1293 = load i32, i32* %17
%1294 = load i32, i32* %18
%1295 = sub nsw i32 %1294, 1
%1296 = mul nsw i32 %1293, %1295
%1297 = add nsw i32 %1296, 1
store i32 %1297, i32* %19
%1298 = load i32, i32* %15
%1299 = load i32, i32* %16
%1300 = sub nsw i32 %1299, 1
%1301 = mul nsw i32 %1298, %1300
%1302 = add nsw i32 %1301, 2
store i32 %1302, i32* %12
store i32 1, i32* %20
br label %1303
1303: ; preds = %1366, %1292
%1304 = load i32, i32* %20
%1305 = load i32, i32* %17
%1306 = icmp slt i32 %1304, %1305
br i1 %1306, label %1307, label %1373
1307: ; preds = %1303
%1308 = load i32*, i32** %14
%1309 = load i32, i32* %19
%1310 = sext i32 %1309 to i64
%1311 = getelementptr inbounds i32, i32* %1308, i64 %1310
%1312 = load i32, i32* %1311
store i32 %1312, i32* %11
%1313 = icmp ne i32 %1312, 0
br i1 %1313, label %1314, label %1365
1314: ; preds = %1307
%1315 = load i32, i32* %11
%1316 = load i32*, i32** %7
%1317 = load i32, i32* %12
%1318 = sext i32 %1317 to i64
%1319 = getelementptr inbounds i32, i32* %1316, i64 %1318
%1320 = load i32, i32* %1319
%1321 = add nsw i32 %1320, %1315
store i32 %1321, i32* %1319
%1322 = load i32, i32* %11
%1323 = ashr i32 %1322, 1
store i32 %1323, i32* %11
%1324 = load i32*, i32** %7
%1325 = load i32, i32* %12
%1326 = sub nsw i32 %1325, 1
%1327 = sext i32 %1326 to i64
%1328 = getelementptr inbounds i32, i32* %1324, i64 %1327
%1329 = load i32, i32* %1328
%1330 = add nsw i32 %1329, %1323
store i32 %1330, i32* %1328
%1331 = load i32, i32* %11
%1332 = load i32*, i32** %7
%1333 = load i32, i32* %12
%1334 = add nsw i32 %1333, 1
%1335 = sext i32 %1334 to i64
%1336 = getelementptr inbounds i32, i32* %1332, i64 %1335
%1337 = load i32, i32* %1336
%1338 = add nsw i32 %1337, %1331
store i32 %1338, i32* %1336
%1339 = load i32, i32* %11
%1340 = load i32*, i32** %7
%1341 = load i32, i32* %12
%1342 = load i32, i32* %15
%1343 = sub nsw i32 %1341, %1342
store i32 %1343, i32* %13
%1344 = sext i32 %1343 to i64
%1345 = getelementptr inbounds i32, i32* %1340, i64 %1344
%1346 = load i32, i32* %1345
%1347 = sub nsw i32 %1346, %1339
store i32 %1347, i32* %1345
%1348 = load i32, i32* %11
%1349 = ashr i32 %1348, 1
store i32 %1349, i32* %11
%1350 = load i32*, i32** %7
%1351 = load i32, i32* %13
%1352 = add nsw i32 %1351, 1
%1353 = sext i32 %1352 to i64
%1354 = getelementptr inbounds i32, i32* %1350, i64 %1353
%1355 = load i32, i32* %1354
%1356 = sub nsw i32 %1355, %1349
store i32 %1356, i32* %1354
%1357 = load i32, i32* %11
%1358 = load i32*, i32** %7
%1359 = load i32, i32* %13
%1360 = sub nsw i32 %1359, 1
%1361 = sext i32 %1360 to i64
%1362 = getelementptr inbounds i32, i32* %1358, i64 %1361
%1363 = load i32, i32* %1362
%1364 = sub nsw i32 %1363, %1357
store i32 %1364, i32* %1362
br label %1365
1365: ; preds = %1314, %1307
br label %1366
1366: ; preds = %1365
%1367 = load i32, i32* %19
%1368 = add nsw i32 %1367, 1
store i32 %1368, i32* %19
%1369 = load i32, i32* %12
%1370 = add nsw i32 %1369, 2
store i32 %1370, i32* %12
%1371 = load i32, i32* %20
%1372 = add nsw i32 %1371, 1
store i32 %1372, i32* %20
br label %1303
1373: ; preds = %1303
%1374 = load i32, i32* %17
%1375 = sub nsw i32 %1374, 1
store i32 %1375, i32* %19
%1376 = load i32, i32* %22
%1377 = sub nsw i32 %1376, 1
store i32 %1377, i32* %12
store i32 1, i32* %20
br label %1378
1378: ; preds = %1418, %1373
%1379 = load i32, i32* %20
%1380 = load i32, i32* %18
%1381 = icmp slt i32 %1379, %1380
br i1 %1381, label %1382, label %1427
1382: ; preds = %1378
%1383 = load i32*, i32** %14
%1384 = load i32, i32* %19
%1385 = sext i32 %1384 to i64
%1386 = getelementptr inbounds i32, i32* %1383, i64 %1385
%1387 = load i32, i32* %1386
%1388 = ashr i32 %1387, 1
store i32 %1388, i32* %11
%1389 = icmp ne i32 %1388, 0
br i1 %1389, label %1390, label %1417
1390: ; preds = %1382
%1391 = load i32, i32* %11
%1392 = load i32*, i32** %7
%1393 = load i32, i32* %12
%1394 = sext i32 %1393 to i64
%1395 = getelementptr inbounds i32, i32* %1392, i64 %1394
%1396 = load i32, i32* %1395
%1397 = add nsw i32 %1396, %1391
store i32 %1397, i32* %1395
%1398 = load i32, i32* %11
%1399 = ashr i32 %1398, 1
store i32 %1399, i32* %11
%1400 = load i32*, i32** %7
%1401 = load i32, i32* %12
%1402 = load i32, i32* %15
%1403 = sub nsw i32 %1401, %1402
%1404 = sext i32 %1403 to i64
%1405 = getelementptr inbounds i32, i32* %1400, i64 %1404
%1406 = load i32, i32* %1405
%1407 = sub nsw i32 %1406, %1399
store i32 %1407, i32* %1405
%1408 = load i32, i32* %11
%1409 = load i32*, i32** %7
%1410 = load i32, i32* %12
%1411 = load i32, i32* %15
%1412 = add nsw i32 %1410, %1411
%1413 = sext i32 %1412 to i64
%1414 = getelementptr inbounds i32, i32* %1409, i64 %1413
%1415 = load i32, i32* %1414
%1416 = sub nsw i32 %1415, %1408
store i32 %1416, i32* %1414
br label %1417
1417: ; preds = %1390, %1382
br label %1418
1418: ; preds = %1417
%1419 = load i32, i32* %17
%1420 = load i32, i32* %19
%1421 = add nsw i32 %1420, %1419
store i32 %1421, i32* %19
%1422 = load i32, i32* %22
%1423 = load i32, i32* %12
%1424 = add nsw i32 %1423, %1422
store i32 %1424, i32* %12
%1425 = load i32, i32* %20
%1426 = add nsw i32 %1425, 1
store i32 %1426, i32* %20
br label %1378
1427: ; preds = %1378
%1428 = load i32*, i32** %14
%1429 = getelementptr inbounds i32, i32* %1428, i64 0
%1430 = load i32, i32* %1429
%1431 = ashr i32 %1430, 1
%1432 = sub nsw i32 0, %1431
store i32 %1432, i32* %11
%1433 = icmp ne i32 %1432, 0
br i1 %1433, label %1434, label %1446
1434: ; preds = %1427
%1435 = load i32, i32* %11
%1436 = load i32*, i32** %7
%1437 = getelementptr inbounds i32, i32* %1436, i64 0
%1438 = load i32, i32* %1437
%1439 = add nsw i32 %1438, %1435
store i32 %1439, i32* %1437
%1440 = load i32, i32* %11
%1441 = ashr i32 %1440, 1
%1442 = load i32*, i32** %7
%1443 = getelementptr inbounds i32, i32* %1442, i64 1
%1444 = load i32, i32* %1443
%1445 = add nsw i32 %1444, %1441
store i32 %1445, i32* %1443
br label %1446
1446: ; preds = %1434, %1427
%1447 = load i32*, i32** %14
%1448 = load i32, i32* %17
%1449 = sub nsw i32 %1448, 1
%1450 = sext i32 %1449 to i64
%1451 = getelementptr inbounds i32, i32* %1447, i64 %1450
%1452 = load i32, i32* %1451
%1453 = ashr i32 %1452, 2
%1454 = load i32*, i32** %7
%1455 = load i32, i32* %15
%1456 = sub nsw i32 %1455, 1
%1457 = sext i32 %1456 to i64
%1458 = getelementptr inbounds i32, i32* %1454, i64 %1457
%1459 = load i32, i32* %1458
%1460 = sub nsw i32 %1459, %1453
store i32 %1460, i32* %1458
%1461 = load i32*, i32** %14
%1462 = load i32, i32* %17
%1463 = load i32, i32* %18
%1464 = sub nsw i32 %1463, 1
%1465 = mul nsw i32 %1462, %1464
%1466 = sext i32 %1465 to i64
%1467 = getelementptr inbounds i32, i32* %1461, i64 %1466
%1468 = load i32, i32* %1467
store i32 %1468, i32* %11
%1469 = icmp ne i32 %1468, 0
br i1 %1469, label %1470, label %1515
1470: ; preds = %1446
%1471 = load i32, i32* %11
%1472 = load i32*, i32** %7
%1473 = load i32, i32* %15
%1474 = load i32, i32* %16
%1475 = sub nsw i32 %1474, 1
%1476 = mul nsw i32 %1473, %1475
%1477 = sext i32 %1476 to i64
%1478 = getelementptr inbounds i32, i32* %1472, i64 %1477
%1479 = load i32, i32* %1478
%1480 = add nsw i32 %1479, %1471
store i32 %1480, i32* %1478
%1481 = load i32, i32* %11
%1482 = ashr i32 %1481, 1
store i32 %1482, i32* %11
%1483 = load i32*, i32** %7
%1484 = load i32, i32* %15
%1485 = load i32, i32* %16
%1486 = sub nsw i32 %1485, 1
%1487 = mul nsw i32 %1484, %1486
%1488 = add nsw i32 %1487, 1
%1489 = sext i32 %1488 to i64
%1490 = getelementptr inbounds i32, i32* %1483, i64 %1489
%1491 = load i32, i32* %1490
%1492 = add nsw i32 %1491, %1482
store i32 %1492, i32* %1490
%1493 = load i32, i32* %11
%1494 = load i32*, i32** %7
%1495 = load i32, i32* %15
%1496 = load i32, i32* %16
%1497 = sub nsw i32 %1496, 2
%1498 = mul nsw i32 %1495, %1497
%1499 = sext i32 %1498 to i64
%1500 = getelementptr inbounds i32, i32* %1494, i64 %1499
%1501 = load i32, i32* %1500
%1502 = sub nsw i32 %1501, %1493
store i32 %1502, i32* %1500
%1503 = load i32, i32* %11
%1504 = ashr i32 %1503, 1
%1505 = load i32*, i32** %7
%1506 = load i32, i32* %15
%1507 = load i32, i32* %16
%1508 = sub nsw i32 %1507, 2
%1509 = mul nsw i32 %1506, %1508
%1510 = add nsw i32 %1509, 1
%1511 = sext i32 %1510 to i64
%1512 = getelementptr inbounds i32, i32* %1505, i64 %1511
%1513 = load i32, i32* %1512
%1514 = sub nsw i32 %1513, %1504
store i32 %1514, i32* %1512
br label %1515
1515: ; preds = %1470, %1446
%1516 = load i32*, i32** %14
%1517 = load i32, i32* %17
%1518 = load i32, i32* %18
%1519 = mul nsw i32 %1517, %1518
%1520 = sub nsw i32 %1519, 1
%1521 = sext i32 %1520 to i64
%1522 = getelementptr inbounds i32, i32* %1516, i64 %1521
%1523 = load i32, i32* %1522
%1524 = ashr i32 %1523, 1
store i32 %1524, i32* %11
%1525 = icmp ne i32 %1524, 0
br i1 %1525, label %1526, label %1549
1526: ; preds = %1515
%1527 = load i32, i32* %11
%1528 = load i32*, i32** %7
%1529 = load i32, i32* %15
%1530 = load i32, i32* %16
%1531 = mul nsw i32 %1529, %1530
%1532 = sub nsw i32 %1531, 1
%1533 = sext i32 %1532 to i64
%1534 = getelementptr inbounds i32, i32* %1528, i64 %1533
%1535 = load i32, i32* %1534
%1536 = add nsw i32 %1535, %1527
store i32 %1536, i32* %1534
%1537 = load i32, i32* %11
%1538 = ashr i32 %1537, 1
%1539 = load i32*, i32** %7
%1540 = load i32, i32* %15
%1541 = load i32, i32* %16
%1542 = sub nsw i32 %1541, 1
%1543 = mul nsw i32 %1540, %1542
%1544 = sub nsw i32 %1543, 1
%1545 = sext i32 %1544 to i64
%1546 = getelementptr inbounds i32, i32* %1539, i64 %1545
%1547 = load i32, i32* %1546
%1548 = sub nsw i32 %1547, %1538
store i32 %1548, i32* %1546
br label %1549
1549: ; preds = %1526, %1515
%1550 = load i32*, i32** %6
%1551 = load i32, i32* %17
%1552 = mul nsw i32 3, %1551
%1553 = load i32, i32* %18
%1554 = mul nsw i32 %1552, %1553
%1555 = sext i32 %1554 to i64
%1556 = getelementptr inbounds i32, i32* %1550, i64 %1555
store i32* %1556, i32** %14
store i32 0, i32* %19
%1557 = load i32, i32* %15
%1558 = add nsw i32 %1557, 1
store i32 %1558, i32* %12
store i32 1, i32* %21
br label %1559
1559: ; preds = %1661, %1549
%1560 = load i32, i32* %21
%1561 = load i32, i32* %18
%1562 = icmp slt i32 %1560, %1561
br i1 %1562, label %1563, label %1670
1563: ; preds = %1559
store i32 1, i32* %20
br label %1564
1564: ; preds = %1653, %1563
%1565 = load i32, i32* %20
%1566 = load i32, i32* %17
%1567 = icmp slt i32 %1565, %1566
br i1 %1567, label %1568, label %1660
1568: ; preds = %1564
%1569 = load i32*, i32** %14
%1570 = load i32, i32* %19
%1571 = sext i32 %1570 to i64
%1572 = getelementptr inbounds i32, i32* %1569, i64 %1571
%1573 = load i32, i32* %1572
store i32 %1573, i32* %11
%1574 = icmp ne i32 %1573, 0
br i1 %1574, label %1575, label %1652
1575: ; preds = %1568
%1576 = load i32, i32* %11
%1577 = load i32*, i32** %7
%1578 = load i32, i32* %12
%1579 = sext i32 %1578 to i64
%1580 = getelementptr inbounds i32, i32* %1577, i64 %1579
%1581 = load i32, i32* %1580
%1582 = add nsw i32 %1581, %1576
store i32 %1582, i32* %1580
%1583 = load i32, i32* %11
%1584 = ashr i32 %1583, 1
store i32 %1584, i32* %11
%1585 = load i32*, i32** %7
%1586 = load i32, i32* %12
%1587 = sub nsw i32 %1586, 1
%1588 = sext i32 %1587 to i64
%1589 = getelementptr inbounds i32, i32* %1585, i64 %1588
%1590 = load i32, i32* %1589
%1591 = sub nsw i32 %1590, %1584
store i32 %1591, i32* %1589
%1592 = load i32, i32* %11
%1593 = load i32*, i32** %7
%1594 = load i32, i32* %12
%1595 = add nsw i32 %1594, 1
%1596 = sext i32 %1595 to i64
%1597 = getelementptr inbounds i32, i32* %1593, i64 %1596
%1598 = load i32, i32* %1597
%1599 = sub nsw i32 %1598, %1592
store i32 %1599, i32* %1597
%1600 = load i32, i32* %11
%1601 = load i32*, i32** %7
%1602 = load i32, i32* %12
%1603 = load i32, i32* %15
%1604 = sub nsw i32 %1602, %1603
store i32 %1604, i32* %13
%1605 = sext i32 %1604 to i64
%1606 = getelementptr inbounds i32, i32* %1601, i64 %1605
%1607 = load i32, i32* %1606
%1608 = sub nsw i32 %1607, %1600
store i32 %1608, i32* %1606
%1609 = load i32, i32* %11
%1610 = ashr i32 %1609, 1
store i32 %1610, i32* %11
%1611 = load i32*, i32** %7
%1612 = load i32, i32* %13
%1613 = sub nsw i32 %1612, 1
%1614 = sext i32 %1613 to i64
%1615 = getelementptr inbounds i32, i32* %1611, i64 %1614
%1616 = load i32, i32* %1615
%1617 = add nsw i32 %1616, %1610
store i32 %1617, i32* %1615
%1618 = load i32, i32* %11
%1619 = load i32*, i32** %7
%1620 = load i32, i32* %13
%1621 = add nsw i32 %1620, 1
%1622 = sext i32 %1621 to i64
%1623 = getelementptr inbounds i32, i32* %1619, i64 %1622
%1624 = load i32, i32* %1623
%1625 = add nsw i32 %1624, %1618
store i32 %1625, i32* %1623
%1626 = load i32, i32* %11
%1627 = shl i32 %1626, 1
%1628 = load i32*, i32** %7
%1629 = load i32, i32* %12
%1630 = load i32, i32* %15
%1631 = add nsw i32 %1629, %1630
store i32 %1631, i32* %13
%1632 = sext i32 %1631 to i64
%1633 = getelementptr inbounds i32, i32* %1628, i64 %1632
%1634 = load i32, i32* %1633
%1635 = sub nsw i32 %1634, %1627
store i32 %1635, i32* %1633
%1636 = load i32, i32* %11
%1637 = load i32*, i32** %7
%1638 = load i32, i32* %13
%1639 = sub nsw i32 %1638, 1
%1640 = sext i32 %1639 to i64
%1641 = getelementptr inbounds i32, i32* %1637, i64 %1640
%1642 = load i32, i32* %1641
%1643 = add nsw i32 %1642, %1636
store i32 %1643, i32* %1641
%1644 = load i32, i32* %11
%1645 = load i32*, i32** %7
%1646 = load i32, i32* %13
%1647 = add nsw i32 %1646, 1
%1648 = sext i32 %1647 to i64
%1649 = getelementptr inbounds i32, i32* %1645, i64 %1648
%1650 = load i32, i32* %1649
%1651 = add nsw i32 %1650, %1644
store i32 %1651, i32* %1649
br label %1652
1652: ; preds = %1575, %1568
br label %1653
1653: ; preds = %1652
%1654 = load i32, i32* %19
%1655 = add nsw i32 %1654, 1
store i32 %1655, i32* %19
%1656 = load i32, i32* %12
%1657 = add nsw i32 %1656, 2
store i32 %1657, i32* %12
%1658 = load i32, i32* %20
%1659 = add nsw i32 %1658, 1
store i32 %1659, i32* %20
br label %1564
1660: ; preds = %1564
br label %1661
1661: ; preds = %1660
%1662 = load i32, i32* %19
%1663 = add nsw i32 %1662, 1
store i32 %1663, i32* %19
%1664 = load i32, i32* %15
%1665 = add nsw i32 %1664, 2
%1666 = load i32, i32* %12
%1667 = add nsw i32 %1666, %1665
store i32 %1667, i32* %12
%1668 = load i32, i32* %21
%1669 = add nsw i32 %1668, 1
store i32 %1669, i32* %21
br label %1559
1670: ; preds = %1559
store i32 0, i32* %19
store i32 1, i32* %12
store i32 1, i32* %20
br label %1671
1671: ; preds = %1709, %1670
%1672 = load i32, i32* %20
%1673 = load i32, i32* %17
%1674 = icmp slt i32 %1672, %1673
br i1 %1674, label %1675, label %1716
1675: ; preds = %1671
%1676 = load i32*, i32** %14
%1677 = load i32, i32* %19
%1678 = sext i32 %1677 to i64
%1679 = getelementptr inbounds i32, i32* %1676, i64 %1678
%1680 = load i32, i32* %1679
%1681 = ashr i32 %1680, 1
store i32 %1681, i32* %11
%1682 = icmp ne i32 %1681, 0
br i1 %1682, label %1683, label %1708
1683: ; preds = %1675
%1684 = load i32, i32* %11
%1685 = load i32*, i32** %7
%1686 = load i32, i32* %12
%1687 = sext i32 %1686 to i64
%1688 = getelementptr inbounds i32, i32* %1685, i64 %1687
%1689 = load i32, i32* %1688
%1690 = sub nsw i32 %1689, %1684
store i32 %1690, i32* %1688
%1691 = load i32, i32* %11
%1692 = ashr i32 %1691, 1
store i32 %1692, i32* %11
%1693 = load i32*, i32** %7
%1694 = load i32, i32* %12
%1695 = sub nsw i32 %1694, 1
%1696 = sext i32 %1695 to i64
%1697 = getelementptr inbounds i32, i32* %1693, i64 %1696
%1698 = load i32, i32* %1697
%1699 = add nsw i32 %1698, %1692
store i32 %1699, i32* %1697
%1700 = load i32, i32* %11
%1701 = load i32*, i32** %7
%1702 = load i32, i32* %12
%1703 = add nsw i32 %1702, 1
%1704 = sext i32 %1703 to i64
%1705 = getelementptr inbounds i32, i32* %1701, i64 %1704
%1706 = load i32, i32* %1705
%1707 = add nsw i32 %1706, %1700
store i32 %1707, i32* %1705
br label %1708
1708: ; preds = %1683, %1675
br label %1709
1709: ; preds = %1708
%1710 = load i32, i32* %19
%1711 = add nsw i32 %1710, 1
store i32 %1711, i32* %19
%1712 = load i32, i32* %12
%1713 = add nsw i32 %1712, 2
store i32 %1713, i32* %12
%1714 = load i32, i32* %20
%1715 = add nsw i32 %1714, 1
store i32 %1715, i32* %20
br label %1671
1716: ; preds = %1671
store i32 0, i32* %19
%1717 = load i32, i32* %15
store i32 %1717, i32* %12
store i32 1, i32* %20
br label %1718
1718: ; preds = %1758, %1716
%1719 = load i32, i32* %20
%1720 = load i32, i32* %18
%1721 = icmp slt i32 %1719, %1720
br i1 %1721, label %1722, label %1767
1722: ; preds = %1718
%1723 = load i32*, i32** %14
%1724 = load i32, i32* %19
%1725 = sext i32 %1724 to i64
%1726 = getelementptr inbounds i32, i32* %1723, i64 %1725
%1727 = load i32, i32* %1726
%1728 = ashr i32 %1727, 1
store i32 %1728, i32* %11
%1729 = icmp ne i32 %1728, 0
br i1 %1729, label %1730, label %1757
1730: ; preds = %1722
%1731 = load i32, i32* %11
%1732 = load i32*, i32** %7
%1733 = load i32, i32* %12
%1734 = sext i32 %1733 to i64
%1735 = getelementptr inbounds i32, i32* %1732, i64 %1734
%1736 = load i32, i32* %1735
%1737 = sub nsw i32 %1736, %1731
store i32 %1737, i32* %1735
%1738 = load i32, i32* %11
%1739 = ashr i32 %1738, 1
store i32 %1739, i32* %11
%1740 = load i32*, i32** %7
%1741 = load i32, i32* %12
%1742 = load i32, i32* %15
%1743 = add nsw i32 %1741, %1742
%1744 = sext i32 %1743 to i64
%1745 = getelementptr inbounds i32, i32* %1740, i64 %1744
%1746 = load i32, i32* %1745
%1747 = add nsw i32 %1746, %1739
store i32 %1747, i32* %1745
%1748 = load i32, i32* %11
%1749 = load i32*, i32** %7
%1750 = load i32, i32* %12
%1751 = load i32, i32* %15
%1752 = sub nsw i32 %1750, %1751
%1753 = sext i32 %1752 to i64
%1754 = getelementptr inbounds i32, i32* %1749, i64 %1753
%1755 = load i32, i32* %1754
%1756 = add nsw i32 %1755, %1748
store i32 %1756, i32* %1754
br label %1757
1757: ; preds = %1730, %1722
br label %1758
1758: ; preds = %1757
%1759 = load i32, i32* %17
%1760 = load i32, i32* %19
%1761 = add nsw i32 %1760, %1759
store i32 %1761, i32* %19
%1762 = load i32, i32* %22
%1763 = load i32, i32* %12
%1764 = add nsw i32 %1763, %1762
store i32 %1764, i32* %12
%1765 = load i32, i32* %20
%1766 = add nsw i32 %1765, 1
store i32 %1766, i32* %20
br label %1718
1767: ; preds = %1718
%1768 = load i32, i32* %17
%1769 = load i32, i32* %18
%1770 = sub nsw i32 %1769, 1
%1771 = mul nsw i32 %1768, %1770
store i32 %1771, i32* %19
%1772 = load i32, i32* %15
%1773 = load i32, i32* %16
%1774 = sub nsw i32 %1773, 1
%1775 = mul nsw i32 %1772, %1774
%1776 = add nsw i32 %1775, 1
store i32 %1776, i32* %12
store i32 1, i32* %20
br label %1777
1777: ; preds = %1840, %1767
%1778 = load i32, i32* %20
%1779 = load i32, i32* %17
%1780 = icmp slt i32 %1778, %1779
br i1 %1780, label %1781, label %1847
1781: ; preds = %1777
%1782 = load i32*, i32** %14
%1783 = load i32, i32* %19
%1784 = sext i32 %1783 to i64
%1785 = getelementptr inbounds i32, i32* %1782, i64 %1784
%1786 = load i32, i32* %1785
store i32 %1786, i32* %11
%1787 = icmp ne i32 %1786, 0
br i1 %1787, label %1788, label %1839
1788: ; preds = %1781
%1789 = load i32, i32* %11
%1790 = load i32*, i32** %7
%1791 = load i32, i32* %12
%1792 = sext i32 %1791 to i64
%1793 = getelementptr inbounds i32, i32* %1790, i64 %1792
%1794 = load i32, i32* %1793
%1795 = add nsw i32 %1794, %1789
store i32 %1795, i32* %1793
%1796 = load i32, i32* %11
%1797 = ashr i32 %1796, 1
store i32 %1797, i32* %11
%1798 = load i32*, i32** %7
%1799 = load i32, i32* %12
%1800 = sub nsw i32 %1799, 1
%1801 = sext i32 %1800 to i64
%1802 = getelementptr inbounds i32, i32* %1798, i64 %1801
%1803 = load i32, i32* %1802
%1804 = sub nsw i32 %1803, %1797
store i32 %1804, i32* %1802
%1805 = load i32, i32* %11
%1806 = load i32*, i32** %7
%1807 = load i32, i32* %12
%1808 = add nsw i32 %1807, 1
%1809 = sext i32 %1808 to i64
%1810 = getelementptr inbounds i32, i32* %1806, i64 %1809
%1811 = load i32, i32* %1810
%1812 = sub nsw i32 %1811, %1805
store i32 %1812, i32* %1810
%1813 = load i32, i32* %11
%1814 = load i32*, i32** %7
%1815 = load i32, i32* %12
%1816 = load i32, i32* %15
%1817 = sub nsw i32 %1815, %1816
store i32 %1817, i32* %13
%1818 = sext i32 %1817 to i64
%1819 = getelementptr inbounds i32, i32* %1814, i64 %1818
%1820 = load i32, i32* %1819
%1821 = sub nsw i32 %1820, %1813
store i32 %1821, i32* %1819
%1822 = load i32, i32* %11
%1823 = ashr i32 %1822, 1
store i32 %1823, i32* %11
%1824 = load i32*, i32** %7
%1825 = load i32, i32* %13
%1826 = add nsw i32 %1825, 1
%1827 = sext i32 %1826 to i64
%1828 = getelementptr inbounds i32, i32* %1824, i64 %1827
%1829 = load i32, i32* %1828
%1830 = add nsw i32 %1829, %1823
store i32 %1830, i32* %1828
%1831 = load i32, i32* %11
%1832 = load i32*, i32** %7
%1833 = load i32, i32* %13
%1834 = sub nsw i32 %1833, 1
%1835 = sext i32 %1834 to i64
%1836 = getelementptr inbounds i32, i32* %1832, i64 %1835
%1837 = load i32, i32* %1836
%1838 = add nsw i32 %1837, %1831
store i32 %1838, i32* %1836
br label %1839
1839: ; preds = %1788, %1781
br label %1840
1840: ; preds = %1839
%1841 = load i32, i32* %19
%1842 = add nsw i32 %1841, 1
store i32 %1842, i32* %19
%1843 = load i32, i32* %12
%1844 = add nsw i32 %1843, 2
store i32 %1844, i32* %12
%1845 = load i32, i32* %20
%1846 = add nsw i32 %1845, 1
store i32 %1846, i32* %20
br label %1777
1847: ; preds = %1777
%1848 = load i32, i32* %17
%1849 = sub nsw i32 %1848, 1
store i32 %1849, i32* %19
%1850 = load i32, i32* %22
%1851 = sub nsw i32 %1850, 1
store i32 %1851, i32* %12
store i32 1, i32* %20
br label %1852
1852: ; preds = %1917, %1847
%1853 = load i32, i32* %20
%1854 = load i32, i32* %18
%1855 = icmp slt i32 %1853, %1854
br i1 %1855, label %1856, label %1926
1856: ; preds = %1852
%1857 = load i32*, i32** %14
%1858 = load i32, i32* %19
%1859 = sext i32 %1858 to i64
%1860 = getelementptr inbounds i32, i32* %1857, i64 %1859
%1861 = load i32, i32* %1860
store i32 %1861, i32* %11
%1862 = icmp ne i32 %1861, 0
br i1 %1862, label %1863, label %1916
1863: ; preds = %1856
%1864 = load i32, i32* %11
%1865 = load i32*, i32** %7
%1866 = load i32, i32* %12
%1867 = sext i32 %1866 to i64
%1868 = getelementptr inbounds i32, i32* %1865, i64 %1867
%1869 = load i32, i32* %1868
%1870 = add nsw i32 %1869, %1864
store i32 %1870, i32* %1868
%1871 = load i32, i32* %11
%1872 = ashr i32 %1871, 1
store i32 %1872, i32* %11
%1873 = load i32*, i32** %7
%1874 = load i32, i32* %12
%1875 = sub nsw i32 %1874, 1
%1876 = sext i32 %1875 to i64
%1877 = getelementptr inbounds i32, i32* %1873, i64 %1876
%1878 = load i32, i32* %1877
%1879 = sub nsw i32 %1878, %1872
store i32 %1879, i32* %1877
%1880 = load i32, i32* %11
%1881 = load i32*, i32** %7
%1882 = load i32, i32* %12
%1883 = load i32, i32* %15
%1884 = sub nsw i32 %1882, %1883
store i32 %1884, i32* %13
%1885 = sext i32 %1884 to i64
%1886 = getelementptr inbounds i32, i32* %1881, i64 %1885
%1887 = load i32, i32* %1886
%1888 = sub nsw i32 %1887, %1880
store i32 %1888, i32* %1886
%1889 = load i32, i32* %11
%1890 = ashr i32 %1889, 1
%1891 = load i32*, i32** %7
%1892 = load i32, i32* %13
%1893 = sub nsw i32 %1892, 1
%1894 = sext i32 %1893 to i64
%1895 = getelementptr inbounds i32, i32* %1891, i64 %1894
%1896 = load i32, i32* %1895
%1897 = add nsw i32 %1896, %1890
store i32 %1897, i32* %1895
%1898 = load i32, i32* %11
%1899 = load i32*, i32** %7
%1900 = load i32, i32* %12
%1901 = load i32, i32* %15
%1902 = add nsw i32 %1900, %1901
store i32 %1902, i32* %13
%1903 = sext i32 %1902 to i64
%1904 = getelementptr inbounds i32, i32* %1899, i64 %1903
%1905 = load i32, i32* %1904
%1906 = sub nsw i32 %1905, %1898
store i32 %1906, i32* %1904
%1907 = load i32, i32* %11
%1908 = ashr i32 %1907, 1
%1909 = load i32*, i32** %7
%1910 = load i32, i32* %13
%1911 = sub nsw i32 %1910, 1
%1912 = sext i32 %1911 to i64
%1913 = getelementptr inbounds i32, i32* %1909, i64 %1912
%1914 = load i32, i32* %1913
%1915 = add nsw i32 %1914, %1908
store i32 %1915, i32* %1913
br label %1916
1916: ; preds = %1863, %1856
br label %1917
1917: ; preds = %1916
%1918 = load i32, i32* %17
%1919 = load i32, i32* %19
%1920 = add nsw i32 %1919, %1918
store i32 %1920, i32* %19
%1921 = load i32, i32* %22
%1922 = load i32, i32* %12
%1923 = add nsw i32 %1922, %1921
store i32 %1923, i32* %12
%1924 = load i32, i32* %20
%1925 = add nsw i32 %1924, 1
store i32 %1925, i32* %20
br label %1852
1926: ; preds = %1852
%1927 = load i32*, i32** %14
%1928 = getelementptr inbounds i32, i32* %1927, i64 0
%1929 = load i32, i32* %1928
%1930 = ashr i32 %1929, 2
%1931 = load i32*, i32** %7
%1932 = getelementptr inbounds i32, i32* %1931, i64 0
%1933 = load i32, i32* %1932
%1934 = add nsw i32 %1933, %1930
store i32 %1934, i32* %1932
%1935 = load i32*, i32** %14
%1936 = load i32, i32* %17
%1937 = sub nsw i32 %1936, 1
%1938 = sext i32 %1937 to i64
%1939 = getelementptr inbounds i32, i32* %1935, i64 %1938
%1940 = load i32, i32* %1939
%1941 = ashr i32 %1940, 1
store i32 %1941, i32* %11
%1942 = icmp ne i32 %1941, 0
br i1 %1942, label %1943, label %1961
1943: ; preds = %1926
%1944 = load i32, i32* %11
%1945 = load i32*, i32** %7
%1946 = load i32, i32* %15
%1947 = sub nsw i32 %1946, 1
%1948 = sext i32 %1947 to i64
%1949 = getelementptr inbounds i32, i32* %1945, i64 %1948
%1950 = load i32, i32* %1949
%1951 = sub nsw i32 %1950, %1944
store i32 %1951, i32* %1949
%1952 = load i32, i32* %11
%1953 = ashr i32 %1952, 1
%1954 = load i32*, i32** %7
%1955 = load i32, i32* %15
%1956 = sub nsw i32 %1955, 2
%1957 = sext i32 %1956 to i64
%1958 = getelementptr inbounds i32, i32* %1954, i64 %1957
%1959 = load i32, i32* %1958
%1960 = add nsw i32 %1959, %1953
store i32 %1960, i32* %1958
br label %1961
1961: ; preds = %1943, %1926
%1962 = load i32*, i32** %14
%1963 = load i32, i32* %17
%1964 = load i32, i32* %18
%1965 = sub nsw i32 %1964, 1
%1966 = mul nsw i32 %1963, %1965
%1967 = sext i32 %1966 to i64
%1968 = getelementptr inbounds i32, i32* %1962, i64 %1967
%1969 = load i32, i32* %1968
%1970 = ashr i32 %1969, 1
store i32 %1970, i32* %11
%1971 = icmp ne i32 %1970, 0
br i1 %1971, label %1972, label %1994
1972: ; preds = %1961
%1973 = load i32, i32* %11
%1974 = load i32*, i32** %7
%1975 = load i32, i32* %15
%1976 = load i32, i32* %16
%1977 = sub nsw i32 %1976, 1
%1978 = mul nsw i32 %1975, %1977
%1979 = sext i32 %1978 to i64
%1980 = getelementptr inbounds i32, i32* %1974, i64 %1979
%1981 = load i32, i32* %1980
%1982 = sub nsw i32 %1981, %1973
store i32 %1982, i32* %1980
%1983 = load i32, i32* %11
%1984 = ashr i32 %1983, 1
%1985 = load i32*, i32** %7
%1986 = load i32, i32* %15
%1987 = load i32, i32* %16
%1988 = sub nsw i32 %1987, 2
%1989 = mul nsw i32 %1986, %1988
%1990 = sext i32 %1989 to i64
%1991 = getelementptr inbounds i32, i32* %1985, i64 %1990
%1992 = load i32, i32* %1991
%1993 = add nsw i32 %1992, %1984
store i32 %1993, i32* %1991
br label %1994
1994: ; preds = %1972, %1961
%1995 = load i32*, i32** %14
%1996 = load i32, i32* %17
%1997 = load i32, i32* %18
%1998 = mul nsw i32 %1996, %1997
%1999 = sub nsw i32 %1998, 1
%2000 = sext i32 %1999 to i64
%2001 = getelementptr inbounds i32, i32* %1995, i64 %2000
%2002 = load i32, i32* %2001
store i32 %2002, i32* %11
%2003 = icmp ne i32 %2002, 0
br i1 %2003, label %2004, label %2044
2004: ; preds = %1994
%2005 = load i32, i32* %11
%2006 = load i32*, i32** %7
%2007 = load i32, i32* %15
%2008 = load i32, i32* %16
%2009 = mul nsw i32 %2007, %2008
%2010 = sub nsw i32 %2009, 1
store i32 %2010, i32* %13
%2011 = sext i32 %2010 to i64
%2012 = getelementptr inbounds i32, i32* %2006, i64 %2011
%2013 = load i32, i32* %2012
%2014 = add nsw i32 %2013, %2005
store i32 %2014, i32* %2012
%2015 = load i32, i32* %11
%2016 = ashr i32 %2015, 1
store i32 %2016, i32* %11
%2017 = load i32*, i32** %7
%2018 = load i32, i32* %13
%2019 = sub nsw i32 %2018, 1
%2020 = sext i32 %2019 to i64
%2021 = getelementptr inbounds i32, i32* %2017, i64 %2020
%2022 = load i32, i32* %2021
%2023 = sub nsw i32 %2022, %2016
store i32 %2023, i32* %2021
%2024 = load i32, i32* %11
%2025 = load i32*, i32** %7
%2026 = load i32, i32* %13
%2027 = load i32, i32* %15
%2028 = sub nsw i32 %2026, %2027
%2029 = sext i32 %2028 to i64
%2030 = getelementptr inbounds i32, i32* %2025, i64 %2029
%2031 = load i32, i32* %2030
%2032 = sub nsw i32 %2031, %2024
store i32 %2032, i32* %2030
%2033 = load i32, i32* %11
%2034 = ashr i32 %2033, 1
%2035 = load i32*, i32** %7
%2036 = load i32, i32* %13
%2037 = load i32, i32* %15
%2038 = sub nsw i32 %2036, %2037
%2039 = sub nsw i32 %2038, 1
%2040 = sext i32 %2039 to i64
%2041 = getelementptr inbounds i32, i32* %2035, i64 %2040
%2042 = load i32, i32* %2041
%2043 = add nsw i32 %2042, %2034
store i32 %2043, i32* %2041
br label %2044
2044: ; preds = %2004, %1994
%2045 = load i32, i32* %23
%2046 = icmp sgt i32 %2045, 0
br i1 %2046, label %2047, label %2069
2047: ; preds = %2044
%2048 = load i32*, i32** %6
store i32* %2048, i32** %14
store i32 0, i32* %12
br label %2049
2049: ; preds = %2065, %2047
%2050 = load i32, i32* %12
%2051 = load i32, i32* %15
%2052 = load i32, i32* %16
%2053 = mul nsw i32 %2051, %2052
%2054 = icmp slt i32 %2050, %2053
br i1 %2054, label %2055, label %2068
2055: ; preds = %2049
%2056 = load i32*, i32** %7
%2057 = load i32, i32* %12
%2058 = sext i32 %2057 to i64
%2059 = getelementptr inbounds i32, i32* %2056, i64 %2058
%2060 = load i32, i32* %2059
%2061 = load i32*, i32** %14
%2062 = load i32, i32* %12
%2063 = sext i32 %2062 to i64
%2064 = getelementptr inbounds i32, i32* %2061, i64 %2063
store i32 %2060, i32* %2064
br label %2065
2065: ; preds = %2055
%2066 = load i32, i32* %12
%2067 = add nsw i32 %2066, 1
store i32 %2067, i32* %12
br label %2049
2068: ; preds = %2049
br label %2069
2069: ; preds = %2068, %2044
br label %2070
2070: ; preds = %2069
%2071 = load i32, i32* %23
%2072 = add nsw i32 %2071, -1
store i32 %2072, i32* %23
br label %26
2073: ; preds = %26
ret void
}

LLVM IR (-O2):
define void @collapse_pyr(i32* %0, i32* %1, i32 %2, i32 %3, i32 %4) {
%6 = bitcast i32* %1 to i8*
%7 = icmp sgt i32 %4, 0
br i1 %7, label %8, label %1323
8: ; preds = %5
%9 = getelementptr inbounds i32, i32* %1, i64 1
br label %10
10: ; preds = %8, %1322
%11 = phi i32 [ %4, %8 ], [ %12, %1322 ]
%12 = add nsw i32 %11, -1
%13 = ashr i32 %2, %12
%14 = ashr i32 %3, %12
%15 = shl i32 %13, 1
%16 = ashr i32 %13, 1
%17 = ashr i32 %14, 1
%18 = mul i32 %13, %14
%19 = icmp sgt i32 %18, 0
br i1 %19, label %20, label %23
20: ; preds = %10
%21 = zext i32 %18 to i64
%22 = shl nuw nsw i64 %21, 2
br label %23
23: ; preds = %20, %10
%24 = icmp sgt i32 %14, 3
br i1 %24, label %25, label %32
25: ; preds = %23
%26 = add nsw i32 %15, 2
%27 = icmp sgt i32 %13, 3
%28 = add nsw i32 %13, 2
%29 = sext i32 %13 to i64
%30 = call i32 @llvm.smax.i32(i32 %16, i32 2)
%31 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %38
32: ; preds = %100, %23
%33 = icmp sgt i32 %13, 3
br i1 %33, label %34, label %106
34: ; preds = %32
%35 = zext i32 %13 to i64
%36 = call i32 @llvm.smax.i32(i32 %16, i32 2)
%37 = zext i32 %36 to i64
br label %112
38: ; preds = %25, %100
%39 = phi i32 [ 1, %25 ], [ %104, %100 ]
%40 = phi i32 [ %16, %25 ], [ %102, %100 ]
%41 = phi i32 [ %26, %25 ], [ %103, %100 ]
%42 = add i32 %40, 1
br i1 %27, label %43, label %100
43: ; preds = %38
%44 = sext i32 %42 to i64
%45 = sext i32 %41 to i64
br label %46
46: ; preds = %43, %92
%47 = phi i64 [ %45, %43 ], [ %93, %92 ]
%48 = phi i64 [ %44, %43 ], [ %95, %92 ]
%49 = phi i32 [ 1, %43 ], [ %94, %92 ]
%50 = getelementptr inbounds i32, i32* %0, i64 %48
%51 = load i32, i32* %50
%52 = icmp eq i32 %51, 0
br i1 %52, label %92, label %53
53: ; preds = %46
%54 = getelementptr inbounds i32, i32* %1, i64 %47
%55 = load i32, i32* %54
%56 = add nsw i32 %55, %51
store i32 %56, i32* %54
%57 = ashr i32 %51, 1
%58 = add nsw i64 %47, -1
%59 = getelementptr inbounds i32, i32* %1, i64 %58
%60 = load i32, i32* %59
%61 = add nsw i32 %60, %57
store i32 %61, i32* %59
%62 = add nsw i64 %47, 1
%63 = getelementptr inbounds i32, i32* %1, i64 %62
%64 = load i32, i32* %63
%65 = add nsw i32 %64, %57
store i32 %65, i32* %63
%66 = sub nsw i64 %47, %29
%67 = getelementptr inbounds i32, i32* %1, i64 %66
%68 = load i32, i32* %67
%69 = add nsw i32 %68, %57
store i32 %69, i32* %67
%70 = ashr i32 %51, 2
%71 = add nsw i64 %66, -1
%72 = getelementptr inbounds i32, i32* %1, i64 %71
%73 = load i32, i32* %72
%74 = add nsw i32 %73, %70
store i32 %74, i32* %72
%75 = add nsw i64 %66, 1
%76 = getelementptr inbounds i32, i32* %1, i64 %75
%77 = load i32, i32* %76
%78 = add nsw i32 %77, %70
store i32 %78, i32* %76
%79 = shl nsw i32 %70, 1
%80 = add nsw i64 %47, %29
%81 = getelementptr inbounds i32, i32* %1, i64 %80
%82 = load i32, i32* %81
%83 = add nsw i32 %82, %79
store i32 %83, i32* %81
%84 = add nsw i64 %80, -1
%85 = getelementptr inbounds i32, i32* %1, i64 %84
%86 = load i32, i32* %85
%87 = add nsw i32 %86, %70
store i32 %87, i32* %85
%88 = add nsw i64 %80, 1
%89 = getelementptr inbounds i32, i32* %1, i64 %88
%90 = load i32, i32* %89
%91 = add nsw i32 %90, %70
store i32 %91, i32* %89
br label %92
92: ; preds = %46, %53
%93 = add nsw i64 %47, 2
%94 = add nuw nsw i32 %49, 1
%95 = add nsw i64 %48, 1
%96 = icmp eq i32 %94, %30
br i1 %96, label %97, label %46
97: ; preds = %92
%98 = trunc i64 %93 to i32
%99 = trunc i64 %95 to i32
br label %100
100: ; preds = %97, %38
%101 = phi i32 [ %41, %38 ], [ %98, %97 ]
%102 = phi i32 [ %42, %38 ], [ %99, %97 ]
%103 = add nsw i32 %28, %101
%104 = add nuw nsw i32 %39, 1
%105 = icmp eq i32 %104, %31
br i1 %105, label %32, label %38
106: ; preds = %144, %32
br i1 %24, label %107, label %186
107: ; preds = %106
%108 = sext i32 %16 to i64
%109 = sext i32 %15 to i64
%110 = sext i32 %13 to i64
%111 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %148
112: ; preds = %34, %144
%113 = phi i64 [ 2, %34 ], [ %146, %144 ]
%114 = phi i64 [ 1, %34 ], [ %145, %144 ]
%115 = getelementptr inbounds i32, i32* %0, i64 %114
%116 = load i32, i32* %115
%117 = icmp eq i32 %116, 0
br i1 %117, label %144, label %118
118: ; preds = %112
%119 = getelementptr inbounds i32, i32* %1, i64 %113
%120 = load i32, i32* %119
%121 = add nsw i32 %120, %116
store i32 %121, i32* %119
%122 = ashr i32 %116, 1
%123 = add nsw i64 %113, -1
%124 = getelementptr inbounds i32, i32* %1, i64 %123
%125 = load i32, i32* %124
%126 = add nsw i32 %125, %122
store i32 %126, i32* %124
%127 = or i64 %113, 1
%128 = getelementptr inbounds i32, i32* %1, i64 %127
%129 = load i32, i32* %128
%130 = add nsw i32 %129, %122
store i32 %130, i32* %128
%131 = add nuw nsw i64 %113, %35
%132 = getelementptr inbounds i32, i32* %1, i64 %131
%133 = load i32, i32* %132
%134 = add nsw i32 %133, %122
store i32 %134, i32* %132
%135 = ashr i32 %116, 2
%136 = add nsw i64 %131, -1
%137 = getelementptr inbounds i32, i32* %1, i64 %136
%138 = load i32, i32* %137
%139 = add nsw i32 %138, %135
store i32 %139, i32* %137
%140 = add nuw nsw i64 %131, 1
%141 = getelementptr inbounds i32, i32* %1, i64 %140
%142 = load i32, i32* %141
%143 = add nsw i32 %142, %135
store i32 %143, i32* %141
br label %144
144: ; preds = %112, %118
%145 = add nuw nsw i64 %114, 1
%146 = add nuw nsw i64 %113, 2
%147 = icmp eq i64 %145, %37
br i1 %147, label %106, label %112
148: ; preds = %107, %181
%149 = phi i64 [ %109, %107 ], [ %183, %181 ]
%150 = phi i64 [ %108, %107 ], [ %182, %181 ]
%151 = phi i32 [ 1, %107 ], [ %184, %181 ]
%152 = getelementptr inbounds i32, i32* %0, i64 %150
%153 = load i32, i32* %152
%154 = icmp eq i32 %153, 0
br i1 %154, label %181, label %155
155: ; preds = %148
%156 = getelementptr inbounds i32, i32* %1, i64 %149
%157 = load i32, i32* %156
%158 = add nsw i32 %157, %153
store i32 %158, i32* %156
%159 = ashr i32 %153, 1
%160 = or i64 %149, 1
%161 = getelementptr inbounds i32, i32* %1, i64 %160
%162 = load i32, i32* %161
%163 = add nsw i32 %162, %159
store i32 %163, i32* %161
%164 = sub nsw i64 %149, %110
%165 = getelementptr inbounds i32, i32* %1, i64 %164
%166 = load i32, i32* %165
%167 = add nsw i32 %166, %159
store i32 %167, i32* %165
%168 = ashr i32 %153, 2
%169 = add nsw i64 %164, 1
%170 = getelementptr inbounds i32, i32* %1, i64 %169
%171 = load i32, i32* %170
%172 = add nsw i32 %171, %168
store i32 %172, i32* %170
%173 = add nsw i64 %149, %110
%174 = getelementptr inbounds i32, i32* %1, i64 %173
%175 = load i32, i32* %174
%176 = add nsw i32 %175, %159
store i32 %176, i32* %174
%177 = add nsw i64 %173, 1
%178 = getelementptr inbounds i32, i32* %1, i64 %177
%179 = load i32, i32* %178
%180 = add nsw i32 %179, %168
store i32 %180, i32* %178
br label %181
181: ; preds = %148, %155
%182 = add i64 %150, %108
%183 = add i64 %149, %109
%184 = add nuw nsw i32 %151, 1
%185 = icmp eq i32 %184, %111
br i1 %185, label %186, label %148
186: ; preds = %181, %106
%187 = add nsw i32 %17, -1
%188 = mul i32 %187, %16
%189 = add i32 %188, 1
%190 = add nsw i32 %14, -1
%191 = mul nsw i32 %190, %13
%192 = add i32 %191, 2
br i1 %33, label %193, label %223
193: ; preds = %186
%194 = sext i32 %189 to i64
%195 = sext i32 %192 to i64
%196 = call i32 @llvm.smax.i32(i32 %16, i32 2)
br label %197
197: ; preds = %193, %218
%198 = phi i64 [ %195, %193 ], [ %220, %218 ]
%199 = phi i64 [ %194, %193 ], [ %219, %218 ]
%200 = phi i32 [ 1, %193 ], [ %221, %218 ]
%201 = getelementptr inbounds i32, i32* %0, i64 %199
%202 = load i32, i32* %201
%203 = icmp ult i32 %202, 2
br i1 %203, label %218, label %204
204: ; preds = %197
%205 = ashr i32 %202, 1
%206 = getelementptr inbounds i32, i32* %1, i64 %198
%207 = load i32, i32* %206
%208 = add nsw i32 %207, %205
store i32 %208, i32* %206
%209 = ashr i32 %202, 2
%210 = add nsw i64 %198, -1
%211 = getelementptr inbounds i32, i32* %1, i64 %210
%212 = load i32, i32* %211
%213 = add nsw i32 %212, %209
store i32 %213, i32* %211
%214 = add nsw i64 %198, 1
%215 = getelementptr inbounds i32, i32* %1, i64 %214
%216 = load i32, i32* %215
%217 = add nsw i32 %216, %209
store i32 %217, i32* %215
br label %218
218: ; preds = %197, %204
%219 = add nsw i64 %199, 1
%220 = add nsw i64 %198, 2
%221 = add nuw nsw i32 %200, 1
%222 = icmp eq i32 %221, %196
br i1 %222, label %223, label %197
223: ; preds = %218, %186
%224 = and i32 %13, -2
%225 = mul i32 %13, 3
%226 = add i32 %225, -1
br i1 %24, label %227, label %262
227: ; preds = %223
%228 = add i32 %224, -2
%229 = or i32 %228, 1
%230 = sext i32 %229 to i64
%231 = sext i32 %16 to i64
%232 = sext i32 %226 to i64
%233 = sext i32 %15 to i64
%234 = sext i32 %13 to i64
%235 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %236
236: ; preds = %227, %257
%237 = phi i64 [ %232, %227 ], [ %259, %257 ]
%238 = phi i64 [ %230, %227 ], [ %258, %257 ]
%239 = phi i32 [ 1, %227 ], [ %260, %257 ]
%240 = getelementptr inbounds i32, i32* %0, i64 %238
%241 = load i32, i32* %240
%242 = icmp ult i32 %241, 2
br i1 %242, label %257, label %243
243: ; preds = %236
%244 = ashr i32 %241, 1
%245 = getelementptr inbounds i32, i32* %1, i64 %237
%246 = load i32, i32* %245
%247 = add nsw i32 %246, %244
store i32 %247, i32* %245
%248 = ashr i32 %241, 2
%249 = sub nsw i64 %237, %234
%250 = getelementptr inbounds i32, i32* %1, i64 %249
%251 = load i32, i32* %250
%252 = add nsw i32 %251, %248
store i32 %252, i32* %250
%253 = add nsw i64 %237, %234
%254 = getelementptr inbounds i32, i32* %1, i64 %253
%255 = load i32, i32* %254
%256 = add nsw i32 %255, %248
store i32 %256, i32* %254
br label %257
257: ; preds = %236, %243
%258 = add i64 %238, %231
%259 = add i64 %237, %233
%260 = add nuw nsw i32 %239, 1
%261 = icmp eq i32 %260, %235
br i1 %261, label %262, label %236
262: ; preds = %257, %223
%263 = load i32, i32* %0
%264 = icmp eq i32 %263, 0
br i1 %264, label %281, label %265
265: ; preds = %262
%266 = load i32, i32* %1
%267 = add nsw i32 %266, %263
store i32 %267, i32* %1
%268 = ashr i32 %263, 1
%269 = load i32, i32* %9
%270 = add nsw i32 %269, %268
store i32 %270, i32* %9
%271 = sext i32 %13 to i64
%272 = getelementptr inbounds i32, i32* %1, i64 %271
%273 = load i32, i32* %272
%274 = add nsw i32 %273, %268
store i32 %274, i32* %272
%275 = ashr i32 %263, 2
%276 = add nsw i32 %13, 1
%277 = sext i32 %276 to i64
%278 = getelementptr inbounds i32, i32* %1, i64 %277
%279 = load i32, i32* %278
%280 = add nsw i32 %279, %275
store i32 %280, i32* %278
br label %281
281: ; preds = %265, %262
%282 = add nsw i32 %16, -1
%283 = sext i32 %282 to i64
%284 = getelementptr inbounds i32, i32* %0, i64 %283
%285 = load i32, i32* %284
%286 = icmp ult i32 %285, 2
br i1 %286, label %300, label %287
287: ; preds = %281
%288 = ashr i32 %285, 1
%289 = add nsw i32 %13, -1
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds i32, i32* %1, i64 %290
%292 = load i32, i32* %291
%293 = add nsw i32 %292, %288
store i32 %293, i32* %291
%294 = ashr i32 %285, 2
%295 = add nsw i32 %15, -1
%296 = sext i32 %295 to i64
%297 = getelementptr inbounds i32, i32* %1, i64 %296
%298 = load i32, i32* %297
%299 = add nsw i32 %298, %294
store i32 %299, i32* %297
br label %300
300: ; preds = %287, %281
%301 = sext i32 %188 to i64
%302 = getelementptr inbounds i32, i32* %0, i64 %301
%303 = load i32, i32* %302
%304 = icmp ult i32 %303, 2
br i1 %304, label %317, label %305
305: ; preds = %300
%306 = ashr i32 %303, 1
%307 = sext i32 %191 to i64
%308 = getelementptr inbounds i32, i32* %1, i64 %307
%309 = load i32, i32* %308
%310 = add nsw i32 %309, %306
store i32 %310, i32* %308
%311 = ashr i32 %303, 2
%312 = add nsw i32 %191, 1
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds i32, i32* %1, i64 %313
%315 = load i32, i32* %314
%316 = add nsw i32 %315, %311
store i32 %316, i32* %314
br label %317
317: ; preds = %305, %300
%318 = mul i32 %16, %17
%319 = add nsw i32 %318, -1
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds i32, i32* %0, i64 %320
%322 = load i32, i32* %321
%323 = ashr i32 %322, 2
%324 = add nsw i32 %18, -1
%325 = sext i32 %324 to i64
%326 = getelementptr inbounds i32, i32* %1, i64 %325
%327 = load i32, i32* %326
%328 = add nsw i32 %327, %323
store i32 %328, i32* %326
%329 = mul nsw i32 %224, %17
%330 = sext i32 %329 to i64
%331 = getelementptr inbounds i32, i32* %0, i64 %330
%332 = tail call i32 (i32*, i32, i32, ...) bitcast (i32 (...)* @internal_int_transpose to i32 (i32*, i32, i32, ...)*)(i32* %331, i32 %16, i32 %17)
br i1 %24, label %333, label %339
333: ; preds = %317
%334 = or i32 %15, 1
%335 = add nsw i32 %13, 2
%336 = sext i32 %13 to i64
%337 = call i32 @llvm.smax.i32(i32 %16, i32 2)
%338 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %345
339: ; preds = %406, %317
br i1 %33, label %340, label %413
340: ; preds = %339
%341 = zext i32 %13 to i64
%342 = call i32 @llvm.smax.i32(i32 %16, i32 2)
%343 = add nsw i32 %342, -1
%344 = zext i32 %343 to i64
br label %423
345: ; preds = %333, %406
%346 = phi i32 [ 1, %333 ], [ %411, %406 ]
%347 = phi i32 [ %16, %333 ], [ %409, %406 ]
%348 = phi i32 [ %334, %333 ], [ %410, %406 ]
br i1 %33, label %349, label %406
349: ; preds = %345
%350 = sext i32 %347 to i64
%351 = sext i32 %348 to i64
br label %352
352: ; preds = %349, %398
%353 = phi i64 [ %351, %349 ], [ %400, %398 ]
%354 = phi i64 [ %350, %349 ], [ %399, %398 ]
%355 = phi i32 [ 1, %349 ], [ %401, %398 ]
%356 = getelementptr inbounds i32, i32* %331, i64 %354
%357 = load i32, i32* %356
%358 = icmp eq i32 %357, 0
br i1 %358, label %398, label %359
359: ; preds = %352
%360 = getelementptr inbounds i32, i32* %1, i64 %353
%361 = load i32, i32* %360
%362 = add nsw i32 %361, %357
store i32 %362, i32* %360
%363 = ashr i32 %357, 1
%364 = add nsw i64 %353, -1
%365 = getelementptr inbounds i32, i32* %1, i64 %364
%366 = load i32, i32* %365
%367 = sub nsw i32 %366, %363
store i32 %367, i32* %365
%368 = add nsw i64 %353, 1
%369 = getelementptr inbounds i32, i32* %1, i64 %368
%370 = load i32, i32* %369
%371 = sub nsw i32 %370, %363
store i32 %371, i32* %369
%372 = sub nsw i64 %353, %336
%373 = getelementptr inbounds i32, i32* %1, i64 %372
%374 = load i32, i32* %373
%375 = add nsw i32 %374, %363
store i32 %375, i32* %373
%376 = ashr i32 %357, 2
%377 = add nsw i64 %372, -1
%378 = getelementptr inbounds i32, i32* %1, i64 %377
%379 = load i32, i32* %378
%380 = sub nsw i32 %379, %376
store i32 %380, i32* %378
%381 = add nsw i64 %372, 1
%382 = getelementptr inbounds i32, i32* %1, i64 %381
%383 = load i32, i32* %382
%384 = sub nsw i32 %383, %376
store i32 %384, i32* %382
%385 = shl nsw i32 %376, 1
%386 = add nsw i64 %353, %336
%387 = getelementptr inbounds i32, i32* %1, i64 %386
%388 = load i32, i32* %387
%389 = add nsw i32 %388, %385
store i32 %389, i32* %387
%390 = add nsw i64 %386, -1
%391 = getelementptr inbounds i32, i32* %1, i64 %390
%392 = load i32, i32* %391
%393 = sub nsw i32 %392, %376
store i32 %393, i32* %391
%394 = add nsw i64 %386, 1
%395 = getelementptr inbounds i32, i32* %1, i64 %394
%396 = load i32, i32* %395
%397 = sub nsw i32 %396, %376
store i32 %397, i32* %395
br label %398
398: ; preds = %352, %359
%399 = add nsw i64 %354, 1
%400 = add nsw i64 %353, 2
%401 = add nuw nsw i32 %355, 1
%402 = icmp eq i32 %401, %337
br i1 %402, label %403, label %352
403: ; preds = %398
%404 = trunc i64 %400 to i32
%405 = trunc i64 %399 to i32
br label %406
406: ; preds = %403, %345
%407 = phi i32 [ %348, %345 ], [ %404, %403 ]
%408 = phi i32 [ %347, %345 ], [ %405, %403 ]
%409 = add nsw i32 %408, 1
%410 = add nsw i32 %335, %407
%411 = add nuw nsw i32 %346, 1
%412 = icmp eq i32 %411, %338
br i1 %412, label %339, label %345
413: ; preds = %455, %339
br i1 %24, label %414, label %497
414: ; preds = %413
%415 = add i32 %224, -2
%416 = or i32 %415, 1
%417 = sext i32 %416 to i64
%418 = sext i32 %16 to i64
%419 = sext i32 %226 to i64
%420 = sext i32 %15 to i64
%421 = sext i32 %13 to i64
%422 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %459
423: ; preds = %340, %455
%424 = phi i64 [ 1, %340 ], [ %457, %455 ]
%425 = phi i64 [ 0, %340 ], [ %456, %455 ]
%426 = getelementptr inbounds i32, i32* %331, i64 %425
%427 = load i32, i32* %426
%428 = icmp eq i32 %427, 0
br i1 %428, label %455, label %429
429: ; preds = %423
%430 = getelementptr inbounds i32, i32* %1, i64 %424
%431 = load i32, i32* %430
%432 = add nsw i32 %431, %427
store i32 %432, i32* %430
%433 = ashr i32 %427, 1
%434 = add nsw i64 %424, -1
%435 = getelementptr inbounds i32, i32* %1, i64 %434
%436 = load i32, i32* %435
%437 = sub nsw i32 %436, %433
store i32 %437, i32* %435
%438 = add nuw nsw i64 %424, 1
%439 = getelementptr inbounds i32, i32* %1, i64 %438
%440 = load i32, i32* %439
%441 = sub nsw i32 %440, %433
store i32 %441, i32* %439
%442 = add nuw nsw i64 %424, %341
%443 = getelementptr inbounds i32, i32* %1, i64 %442
%444 = load i32, i32* %443
%445 = add nsw i32 %444, %433
store i32 %445, i32* %443
%446 = ashr i32 %427, 2
%447 = add nsw i64 %442, -1
%448 = getelementptr inbounds i32, i32* %1, i64 %447
%449 = load i32, i32* %448
%450 = sub nsw i32 %449, %446
store i32 %450, i32* %448
%451 = add nuw nsw i64 %442, 1
%452 = getelementptr inbounds i32, i32* %1, i64 %451
%453 = load i32, i32* %452
%454 = sub nsw i32 %453, %446
store i32 %454, i32* %452
br label %455
455: ; preds = %423, %429
%456 = add nuw nsw i64 %425, 1
%457 = add nuw nsw i64 %424, 2
%458 = icmp eq i64 %456, %344
br i1 %458, label %413, label %423
459: ; preds = %414, %492
%460 = phi i64 [ %419, %414 ], [ %494, %492 ]
%461 = phi i64 [ %417, %414 ], [ %493, %492 ]
%462 = phi i32 [ 1, %414 ], [ %495, %492 ]
%463 = getelementptr inbounds i32, i32* %331, i64 %461
%464 = load i32, i32* %463
%465 = icmp eq i32 %464, 0
br i1 %465, label %492, label %466
466: ; preds = %459
%467 = getelementptr inbounds i32, i32* %1, i64 %460
%468 = load i32, i32* %467
%469 = add nsw i32 %468, %464
store i32 %469, i32* %467
%470 = ashr i32 %464, 1
%471 = add nsw i64 %460, -1
%472 = getelementptr inbounds i32, i32* %1, i64 %471
%473 = load i32, i32* %472
%474 = sub nsw i32 %473, %470
store i32 %474, i32* %472
%475 = sub nsw i64 %460, %421
%476 = getelementptr inbounds i32, i32* %1, i64 %475
%477 = load i32, i32* %476
%478 = add nsw i32 %477, %470
store i32 %478, i32* %476
%479 = ashr i32 %464, 2
%480 = add nsw i64 %475, -1
%481 = getelementptr inbounds i32, i32* %1, i64 %480
%482 = load i32, i32* %481
%483 = sub nsw i32 %482, %479
store i32 %483, i32* %481
%484 = add nsw i64 %460, %421
%485 = getelementptr inbounds i32, i32* %1, i64 %484
%486 = load i32, i32* %485
%487 = add nsw i32 %486, %470
store i32 %487, i32* %485
%488 = add nsw i64 %484, -1
%489 = getelementptr inbounds i32, i32* %1, i64 %488
%490 = load i32, i32* %489
%491 = sub nsw i32 %490, %479
store i32 %491, i32* %489
br label %492
492: ; preds = %459, %466
%493 = add i64 %461, %418
%494 = add i64 %460, %420
%495 = add nuw nsw i32 %462, 1
%496 = icmp eq i32 %495, %422
br i1 %496, label %497, label %459
497: ; preds = %492, %413
%498 = add i32 %191, 1
br i1 %33, label %499, label %502
499: ; preds = %497
%500 = sext i32 %498 to i64
%501 = call i32 @llvm.smax.i32(i32 %16, i32 2)
br label %508
502: ; preds = %529, %497
br i1 %24, label %503, label %561
503: ; preds = %502
%504 = sext i32 %16 to i64
%505 = sext i32 %15 to i64
%506 = sext i32 %13 to i64
%507 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %534
508: ; preds = %499, %529
%509 = phi i64 [ %500, %499 ], [ %531, %529 ]
%510 = phi i64 [ %301, %499 ], [ %530, %529 ]
%511 = phi i32 [ 1, %499 ], [ %532, %529 ]
%512 = getelementptr inbounds i32, i32* %331, i64 %510
%513 = load i32, i32* %512
%514 = icmp ult i32 %513, 2
br i1 %514, label %529, label %515
515: ; preds = %508
%516 = ashr i32 %513, 1
%517 = getelementptr inbounds i32, i32* %1, i64 %509
%518 = load i32, i32* %517
%519 = add nsw i32 %518, %516
store i32 %519, i32* %517
%520 = ashr i32 %513, 2
%521 = add nsw i64 %509, -1
%522 = getelementptr inbounds i32, i32* %1, i64 %521
%523 = load i32, i32* %522
%524 = sub nsw i32 %523, %520
store i32 %524, i32* %522
%525 = add nsw i64 %509, 1
%526 = getelementptr inbounds i32, i32* %1, i64 %525
%527 = load i32, i32* %526
%528 = sub nsw i32 %527, %520
store i32 %528, i32* %526
br label %529
529: ; preds = %508, %515
%530 = add nsw i64 %510, 1
%531 = add nsw i64 %509, 2
%532 = add nuw nsw i32 %511, 1
%533 = icmp eq i32 %532, %501
br i1 %533, label %502, label %508
534: ; preds = %503, %556
%535 = phi i64 [ %505, %503 ], [ %558, %556 ]
%536 = phi i64 [ %504, %503 ], [ %557, %556 ]
%537 = phi i32 [ 1, %503 ], [ %559, %556 ]
%538 = getelementptr inbounds i32, i32* %331, i64 %536
%539 = load i32, i32* %538
%540 = ashr i32 %539, 1
%541 = icmp ult i32 %539, 2
br i1 %541, label %556, label %542
542: ; preds = %534
%543 = sub nsw i32 0, %540
%544 = getelementptr inbounds i32, i32* %1, i64 %535
%545 = load i32, i32* %544
%546 = sub i32 %545, %540
store i32 %546, i32* %544
%547 = ashr i32 %543, 1
%548 = sub nsw i64 %535, %506
%549 = getelementptr inbounds i32, i32* %1, i64 %548
%550 = load i32, i32* %549
%551 = add nsw i32 %550, %547
store i32 %551, i32* %549
%552 = add nsw i64 %535, %506
%553 = getelementptr inbounds i32, i32* %1, i64 %552
%554 = load i32, i32* %553
%555 = add nsw i32 %554, %547
store i32 %555, i32* %553
br label %556
556: ; preds = %534, %542
%557 = add i64 %536, %504
%558 = add i64 %535, %505
%559 = add nuw nsw i32 %537, 1
%560 = icmp eq i32 %559, %507
br i1 %560, label %561, label %534
561: ; preds = %556, %502
%562 = load i32, i32* %331
%563 = ashr i32 %562, 1
%564 = icmp ult i32 %562, 2
br i1 %564, label %574, label %565
565: ; preds = %561
%566 = sub nsw i32 0, %563
%567 = load i32, i32* %1
%568 = sub i32 %567, %563
store i32 %568, i32* %1
%569 = ashr i32 %566, 1
%570 = sext i32 %13 to i64
%571 = getelementptr inbounds i32, i32* %1, i64 %570
%572 = load i32, i32* %571
%573 = add nsw i32 %572, %569
store i32 %573, i32* %571
br label %574
574: ; preds = %565, %561
%575 = getelementptr inbounds i32, i32* %331, i64 %283
%576 = load i32, i32* %575
%577 = icmp eq i32 %576, 0
br i1 %577, label %601, label %578
578: ; preds = %574
%579 = add nsw i32 %13, -1
%580 = sext i32 %579 to i64
%581 = getelementptr inbounds i32, i32* %1, i64 %580
%582 = load i32, i32* %581
%583 = add nsw i32 %582, %576
store i32 %583, i32* %581
%584 = ashr i32 %576, 1
%585 = add nsw i32 %13, -2
%586 = sext i32 %585 to i64
%587 = getelementptr inbounds i32, i32* %1, i64 %586
%588 = load i32, i32* %587
%589 = sub nsw i32 %588, %584
store i32 %589, i32* %587
%590 = add nsw i32 %15, -1
%591 = sext i32 %590 to i64
%592 = getelementptr inbounds i32, i32* %1, i64 %591
%593 = load i32, i32* %592
%594 = add nsw i32 %593, %584
store i32 %594, i32* %592
%595 = ashr i32 %576, 2
%596 = add nsw i32 %15, -2
%597 = sext i32 %596 to i64
%598 = getelementptr inbounds i32, i32* %1, i64 %597
%599 = load i32, i32* %598
%600 = sub nsw i32 %599, %595
store i32 %600, i32* %598
br label %601
601: ; preds = %578, %574
%602 = getelementptr inbounds i32, i32* %331, i64 %301
%603 = load i32, i32* %602
%604 = ashr i32 %603, 2
%605 = sext i32 %191 to i64
%606 = getelementptr inbounds i32, i32* %1, i64 %605
%607 = load i32, i32* %606
%608 = sub nsw i32 %607, %604
store i32 %608, i32* %606
%609 = getelementptr inbounds i32, i32* %331, i64 %320
%610 = load i32, i32* %609
%611 = icmp ult i32 %610, 2
br i1 %611, label %622, label %612
612: ; preds = %601
%613 = ashr i32 %610, 1
%614 = load i32, i32* %326
%615 = add nsw i32 %614, %613
store i32 %615, i32* %326
%616 = ashr i32 %610, 2
%617 = add nsw i32 %18, -2
%618 = sext i32 %617 to i64
%619 = getelementptr inbounds i32, i32* %1, i64 %618
%620 = load i32, i32* %619
%621 = sub nsw i32 %620, %616
store i32 %621, i32* %619
br label %622
622: ; preds = %612, %601
%623 = sext i32 %318 to i64
%624 = getelementptr inbounds i32, i32* %0, i64 %623
%625 = add nsw i32 %13, 2
br i1 %24, label %626, label %630
626: ; preds = %622
%627 = sext i32 %13 to i64
%628 = call i32 @llvm.smax.i32(i32 %16, i32 2)
%629 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %634
630: ; preds = %695, %622
br i1 %33, label %631, label %702
631: ; preds = %630
%632 = call i32 @llvm.smax.i32(i32 %16, i32 2)
%633 = zext i32 %632 to i64
br label %708
634: ; preds = %626, %695
%635 = phi i32 [ 1, %626 ], [ %700, %695 ]
%636 = phi i32 [ 1, %626 ], [ %698, %695 ]
%637 = phi i32 [ %625, %626 ], [ %699, %695 ]
br i1 %33, label %638, label %695
638: ; preds = %634
%639 = sext i32 %636 to i64
%640 = sext i32 %637 to i64
br label %641
641: ; preds = %638, %687
%642 = phi i64 [ %640, %638 ], [ %689, %687 ]
%643 = phi i64 [ %639, %638 ], [ %688, %687 ]
%644 = phi i32 [ 1, %638 ], [ %690, %687 ]
%645 = getelementptr inbounds i32, i32* %624, i64 %643
%646 = load i32, i32* %645
%647 = icmp eq i32 %646, 0
br i1 %647, label %687, label %648
648: ; preds = %641
%649 = getelementptr inbounds i32, i32* %1, i64 %642
%650 = load i32, i32* %649
%651 = add nsw i32 %650, %646
store i32 %651, i32* %649
%652 = ashr i32 %646, 1
%653 = add nsw i64 %642, -1
%654 = getelementptr inbounds i32, i32* %1, i64 %653
%655 = load i32, i32* %654
%656 = add nsw i32 %655, %652
store i32 %656, i32* %654
%657 = add nsw i64 %642, 1
%658 = getelementptr inbounds i32, i32* %1, i64 %657
%659 = load i32, i32* %658
%660 = add nsw i32 %659, %652
store i32 %660, i32* %658
%661 = sub nsw i64 %642, %627
%662 = getelementptr inbounds i32, i32* %1, i64 %661
%663 = load i32, i32* %662
%664 = sub nsw i32 %663, %652
store i32 %664, i32* %662
%665 = ashr i32 %646, 2
%666 = add nsw i64 %661, -1
%667 = getelementptr inbounds i32, i32* %1, i64 %666
%668 = load i32, i32* %667
%669 = sub nsw i32 %668, %665
store i32 %669, i32* %667
%670 = add nsw i64 %661, 1
%671 = getelementptr inbounds i32, i32* %1, i64 %670
%672 = load i32, i32* %671
%673 = sub nsw i32 %672, %665
store i32 %673, i32* %671
%674 = mul nsw i32 %665, -2
%675 = add nsw i64 %642, %627
%676 = getelementptr inbounds i32, i32* %1, i64 %675
%677 = load i32, i32* %676
%678 = add i32 %677, %674
store i32 %678, i32* %676
%679 = add nsw i64 %675, -1
%680 = getelementptr inbounds i32, i32* %1, i64 %679
%681 = load i32, i32* %680
%682 = sub nsw i32 %681, %665
store i32 %682, i32* %680
%683 = add nsw i64 %675, 1
%684 = getelementptr inbounds i32, i32* %1, i64 %683
%685 = load i32, i32* %684
%686 = sub nsw i32 %685, %665
store i32 %686, i32* %684
br label %687
687: ; preds = %641, %648
%688 = add nsw i64 %643, 1
%689 = add nsw i64 %642, 2
%690 = add nuw nsw i32 %644, 1
%691 = icmp eq i32 %690, %628
br i1 %691, label %692, label %641
692: ; preds = %687
%693 = trunc i64 %689 to i32
%694 = trunc i64 %688 to i32
br label %695
695: ; preds = %692, %634
%696 = phi i32 [ %637, %634 ], [ %693, %692 ]
%697 = phi i32 [ %636, %634 ], [ %694, %692 ]
%698 = add nsw i32 %697, 1
%699 = add nsw i32 %696, %625
%700 = add nuw nsw i32 %635, 1
%701 = icmp eq i32 %700, %629
br i1 %701, label %630, label %634
702: ; preds = %729, %630
br i1 %24, label %703, label %733
703: ; preds = %702
%704 = sext i32 %16 to i64
%705 = sext i32 %13 to i64
%706 = sext i32 %15 to i64
%707 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %739
708: ; preds = %631, %729
%709 = phi i64 [ 2, %631 ], [ %731, %729 ]
%710 = phi i64 [ 1, %631 ], [ %730, %729 ]
%711 = getelementptr inbounds i32, i32* %624, i64 %710
%712 = load i32, i32* %711
%713 = ashr i32 %712, 1
%714 = icmp ult i32 %712, 2
br i1 %714, label %729, label %715
715: ; preds = %708
%716 = sub nsw i32 0, %713
%717 = getelementptr inbounds i32, i32* %1, i64 %709
%718 = load i32, i32* %717
%719 = sub i32 %718, %713
store i32 %719, i32* %717
%720 = ashr i32 %716, 1
%721 = add nsw i64 %709, -1
%722 = getelementptr inbounds i32, i32* %1, i64 %721
%723 = load i32, i32* %722
%724 = add nsw i32 %723, %720
store i32 %724, i32* %722
%725 = or i64 %709, 1
%726 = getelementptr inbounds i32, i32* %1, i64 %725
%727 = load i32, i32* %726
%728 = add nsw i32 %727, %720
store i32 %728, i32* %726
br label %729
729: ; preds = %708, %715
%730 = add nuw nsw i64 %710, 1
%731 = add nuw nsw i64 %709, 2
%732 = icmp eq i64 %730, %633
br i1 %732, label %702, label %708
733: ; preds = %772, %702
br i1 %33, label %734, label %815
734: ; preds = %733
%735 = sext i32 %189 to i64
%736 = sext i32 %192 to i64
%737 = zext i32 %13 to i64
%738 = call i32 @llvm.smax.i32(i32 %16, i32 2)
br label %777
739: ; preds = %703, %772
%740 = phi i64 [ %705, %703 ], [ %774, %772 ]
%741 = phi i64 [ 0, %703 ], [ %773, %772 ]
%742 = phi i32 [ 1, %703 ], [ %775, %772 ]
%743 = getelementptr inbounds i32, i32* %624, i64 %741
%744 = load i32, i32* %743
%745 = icmp eq i32 %744, 0
br i1 %745, label %772, label %746
746: ; preds = %739
%747 = getelementptr inbounds i32, i32* %1, i64 %740
%748 = load i32, i32* %747
%749 = add nsw i32 %748, %744
store i32 %749, i32* %747
%750 = ashr i32 %744, 1
%751 = add nsw i64 %740, 1
%752 = getelementptr inbounds i32, i32* %1, i64 %751
%753 = load i32, i32* %752
%754 = add nsw i32 %753, %750
store i32 %754, i32* %752
%755 = sub nsw i64 %740, %705
%756 = getelementptr inbounds i32, i32* %1, i64 %755
%757 = load i32, i32* %756
%758 = sub nsw i32 %757, %750
store i32 %758, i32* %756
%759 = ashr i32 %744, 2
%760 = add nuw nsw i64 %755, 1
%761 = getelementptr inbounds i32, i32* %1, i64 %760
%762 = load i32, i32* %761
%763 = sub nsw i32 %762, %759
store i32 %763, i32* %761
%764 = add nsw i64 %740, %705
%765 = getelementptr inbounds i32, i32* %1, i64 %764
%766 = load i32, i32* %765
%767 = sub nsw i32 %766, %750
store i32 %767, i32* %765
%768 = add nsw i64 %764, 1
%769 = getelementptr inbounds i32, i32* %1, i64 %768
%770 = load i32, i32* %769
%771 = sub nsw i32 %770, %759
store i32 %771, i32* %769
br label %772
772: ; preds = %739, %746
%773 = add nsw i64 %741, %704
%774 = add i64 %740, %706
%775 = add nuw nsw i32 %742, 1
%776 = icmp eq i32 %775, %707
br i1 %776, label %733, label %739
777: ; preds = %734, %810
%778 = phi i64 [ %736, %734 ], [ %812, %810 ]
%779 = phi i64 [ %735, %734 ], [ %811, %810 ]
%780 = phi i32 [ 1, %734 ], [ %813, %810 ]
%781 = getelementptr inbounds i32, i32* %624, i64 %779
%782 = load i32, i32* %781
%783 = icmp eq i32 %782, 0
br i1 %783, label %810, label %784
784: ; preds = %777
%785 = getelementptr inbounds i32, i32* %1, i64 %778
%786 = load i32, i32* %785
%787 = add nsw i32 %786, %782
store i32 %787, i32* %785
%788 = ashr i32 %782, 1
%789 = add nsw i64 %778, -1
%790 = getelementptr inbounds i32, i32* %1, i64 %789
%791 = load i32, i32* %790
%792 = add nsw i32 %791, %788
store i32 %792, i32* %790
%793 = add nsw i64 %778, 1
%794 = getelementptr inbounds i32, i32* %1, i64 %793
%795 = load i32, i32* %794
%796 = add nsw i32 %795, %788
store i32 %796, i32* %794
%797 = sub nsw i64 %778, %737
%798 = getelementptr inbounds i32, i32* %1, i64 %797
%799 = load i32, i32* %798
%800 = sub nsw i32 %799, %788
store i32 %800, i32* %798
%801 = ashr i32 %782, 2
%802 = add nsw i64 %797, 1
%803 = getelementptr inbounds i32, i32* %1, i64 %802
%804 = load i32, i32* %803
%805 = sub nsw i32 %804, %801
store i32 %805, i32* %803
%806 = add nsw i64 %797, -1
%807 = getelementptr inbounds i32, i32* %1, i64 %806
%808 = load i32, i32* %807
%809 = sub nsw i32 %808, %801
store i32 %809, i32* %807
br label %810
810: ; preds = %777, %784
%811 = add nsw i64 %779, 1
%812 = add nsw i64 %778, 2
%813 = add nuw nsw i32 %780, 1
%814 = icmp eq i32 %813, %738
br i1 %814, label %815, label %777
815: ; preds = %810, %733
br i1 %24, label %816, label %851
816: ; preds = %815
%817 = sext i32 %16 to i64
%818 = add nsw i64 %817, -1
%819 = add i32 %15, -2
%820 = or i32 %819, 1
%821 = sext i32 %820 to i64
%822 = sext i32 %15 to i64
%823 = sext i32 %13 to i64
%824 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %825
825: ; preds = %816, %846
%826 = phi i64 [ %821, %816 ], [ %848, %846 ]
%827 = phi i64 [ %818, %816 ], [ %847, %846 ]
%828 = phi i32 [ 1, %816 ], [ %849, %846 ]
%829 = getelementptr inbounds i32, i32* %624, i64 %827
%830 = load i32, i32* %829
%831 = icmp ult i32 %830, 2
br i1 %831, label %846, label %832
832: ; preds = %825
%833 = ashr i32 %830, 1
%834 = getelementptr inbounds i32, i32* %1, i64 %826
%835 = load i32, i32* %834
%836 = add nsw i32 %835, %833
store i32 %836, i32* %834
%837 = ashr i32 %830, 2
%838 = sub nsw i64 %826, %823
%839 = getelementptr inbounds i32, i32* %1, i64 %838
%840 = load i32, i32* %839
%841 = sub nsw i32 %840, %837
store i32 %841, i32* %839
%842 = add nsw i64 %826, %823
%843 = getelementptr inbounds i32, i32* %1, i64 %842
%844 = load i32, i32* %843
%845 = sub nsw i32 %844, %837
store i32 %845, i32* %843
br label %846
846: ; preds = %825, %832
%847 = add i64 %827, %817
%848 = add i64 %826, %822
%849 = add nuw nsw i32 %828, 1
%850 = icmp eq i32 %849, %824
br i1 %850, label %851, label %825
851: ; preds = %846, %815
%852 = load i32, i32* %624
%853 = ashr i32 %852, 1
%854 = icmp ult i32 %852, 2
br i1 %854, label %862, label %855
855: ; preds = %851
%856 = sub nsw i32 0, %853
%857 = load i32, i32* %1
%858 = sub i32 %857, %853
store i32 %858, i32* %1
%859 = ashr i32 %856, 1
%860 = load i32, i32* %9
%861 = add nsw i32 %860, %859
store i32 %861, i32* %9
br label %862
862: ; preds = %855, %851
%863 = getelementptr inbounds i32, i32* %624, i64 %283
%864 = load i32, i32* %863
%865 = ashr i32 %864, 2
%866 = add nsw i32 %13, -1
%867 = sext i32 %866 to i64
%868 = getelementptr inbounds i32, i32* %1, i64 %867
%869 = load i32, i32* %868
%870 = sub nsw i32 %869, %865
store i32 %870, i32* %868
%871 = getelementptr inbounds i32, i32* %624, i64 %301
%872 = load i32, i32* %871
%873 = icmp eq i32 %872, 0
br i1 %873, label %894, label %874
874: ; preds = %862
%875 = load i32, i32* %606
%876 = add nsw i32 %875, %872
store i32 %876, i32* %606
%877 = ashr i32 %872, 1
%878 = sext i32 %498 to i64
%879 = getelementptr inbounds i32, i32* %1, i64 %878
%880 = load i32, i32* %879
%881 = add nsw i32 %880, %877
store i32 %881, i32* %879
%882 = add nsw i32 %14, -2
%883 = mul nsw i32 %882, %13
%884 = sext i32 %883 to i64
%885 = getelementptr inbounds i32, i32* %1, i64 %884
%886 = load i32, i32* %885
%887 = sub nsw i32 %886, %877
store i32 %887, i32* %885
%888 = ashr i32 %872, 2
%889 = add nsw i32 %883, 1
%890 = sext i32 %889 to i64
%891 = getelementptr inbounds i32, i32* %1, i64 %890
%892 = load i32, i32* %891
%893 = sub nsw i32 %892, %888
store i32 %893, i32* %891
br label %894
894: ; preds = %874, %862
%895 = getelementptr inbounds i32, i32* %624, i64 %320
%896 = load i32, i32* %895
%897 = icmp ult i32 %896, 2
br i1 %897, label %908, label %898
898: ; preds = %894
%899 = ashr i32 %896, 1
%900 = load i32, i32* %326
%901 = add nsw i32 %900, %899
store i32 %901, i32* %326
%902 = ashr i32 %896, 2
%903 = add nsw i32 %191, -1
%904 = sext i32 %903 to i64
%905 = getelementptr inbounds i32, i32* %1, i64 %904
%906 = load i32, i32* %905
%907 = sub nsw i32 %906, %902
store i32 %907, i32* %905
br label %908
908: ; preds = %898, %894
%909 = mul i32 %318, 3
%910 = sext i32 %909 to i64
%911 = getelementptr inbounds i32, i32* %0, i64 %910
br i1 %24, label %912, label %917
912: ; preds = %908
%913 = add nsw i32 %13, 1
%914 = sext i32 %13 to i64
%915 = call i32 @llvm.smax.i32(i32 %16, i32 2)
%916 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %922
917: ; preds = %983, %908
br i1 %33, label %918, label %990
918: ; preds = %917
%919 = call i32 @llvm.smax.i32(i32 %16, i32 2)
%920 = add nsw i32 %919, -1
%921 = zext i32 %920 to i64
br label %996
922: ; preds = %912, %983
%923 = phi i32 [ 1, %912 ], [ %988, %983 ]
%924 = phi i32 [ 0, %912 ], [ %986, %983 ]
%925 = phi i32 [ %913, %912 ], [ %987, %983 ]
br i1 %33, label %926, label %983
926: ; preds = %922
%927 = sext i32 %924 to i64
%928 = sext i32 %925 to i64
br label %929
929: ; preds = %926, %975
%930 = phi i64 [ %928, %926 ], [ %977, %975 ]
%931 = phi i64 [ %927, %926 ], [ %976, %975 ]
%932 = phi i32 [ 1, %926 ], [ %978, %975 ]
%933 = getelementptr inbounds i32, i32* %911, i64 %931
%934 = load i32, i32* %933
%935 = icmp eq i32 %934, 0
br i1 %935, label %975, label %936
936: ; preds = %929
%937 = getelementptr inbounds i32, i32* %1, i64 %930
%938 = load i32, i32* %937
%939 = add nsw i32 %938, %934
store i32 %939, i32* %937
%940 = ashr i32 %934, 1
%941 = add nsw i64 %930, -1
%942 = getelementptr inbounds i32, i32* %1, i64 %941
%943 = load i32, i32* %942
%944 = sub nsw i32 %943, %940
store i32 %944, i32* %942
%945 = add nsw i64 %930, 1
%946 = getelementptr inbounds i32, i32* %1, i64 %945
%947 = load i32, i32* %946
%948 = sub nsw i32 %947, %940
store i32 %948, i32* %946
%949 = sub nsw i64 %930, %914
%950 = getelementptr inbounds i32, i32* %1, i64 %949
%951 = load i32, i32* %950
%952 = sub nsw i32 %951, %940
store i32 %952, i32* %950
%953 = ashr i32 %934, 2
%954 = add nsw i64 %949, -1
%955 = getelementptr inbounds i32, i32* %1, i64 %954
%956 = load i32, i32* %955
%957 = add nsw i32 %956, %953
store i32 %957, i32* %955
%958 = add nsw i64 %949, 1
%959 = getelementptr inbounds i32, i32* %1, i64 %958
%960 = load i32, i32* %959
%961 = add nsw i32 %960, %953
store i32 %961, i32* %959
%962 = mul nsw i32 %953, -2
%963 = add nsw i64 %930, %914
%964 = getelementptr inbounds i32, i32* %1, i64 %963
%965 = load i32, i32* %964
%966 = add i32 %965, %962
store i32 %966, i32* %964
%967 = add nsw i64 %963, -1
%968 = getelementptr inbounds i32, i32* %1, i64 %967
%969 = load i32, i32* %968
%970 = add nsw i32 %969, %953
store i32 %970, i32* %968
%971 = add nsw i64 %963, 1
%972 = getelementptr inbounds i32, i32* %1, i64 %971
%973 = load i32, i32* %972
%974 = add nsw i32 %973, %953
store i32 %974, i32* %972
br label %975
975: ; preds = %929, %936
%976 = add nsw i64 %931, 1
%977 = add nsw i64 %930, 2
%978 = add nuw nsw i32 %932, 1
%979 = icmp eq i32 %978, %915
br i1 %979, label %980, label %929
980: ; preds = %975
%981 = trunc i64 %977 to i32
%982 = trunc i64 %976 to i32
br label %983
983: ; preds = %980, %922
%984 = phi i32 [ %925, %922 ], [ %981, %980 ]
%985 = phi i32 [ %924, %922 ], [ %982, %980 ]
%986 = add nsw i32 %985, 1
%987 = add nsw i32 %984, %625
%988 = add nuw nsw i32 %923, 1
%989 = icmp eq i32 %988, %916
br i1 %989, label %917, label %922
990: ; preds = %1016, %917
br i1 %24, label %991, label %1020
991: ; preds = %990
%992 = sext i32 %16 to i64
%993 = sext i32 %13 to i64
%994 = sext i32 %15 to i64
%995 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %1025
996: ; preds = %918, %1016
%997 = phi i64 [ 1, %918 ], [ %1018, %1016 ]
%998 = phi i64 [ 0, %918 ], [ %1017, %1016 ]
%999 = getelementptr inbounds i32, i32* %911, i64 %998
%1000 = load i32, i32* %999
%1001 = icmp ult i32 %1000, 2
br i1 %1001, label %1016, label %1002
1002: ; preds = %996
%1003 = ashr i32 %1000, 1
%1004 = getelementptr inbounds i32, i32* %1, i64 %997
%1005 = load i32, i32* %1004
%1006 = sub nsw i32 %1005, %1003
store i32 %1006, i32* %1004
%1007 = ashr i32 %1000, 2
%1008 = add nsw i64 %997, -1
%1009 = getelementptr inbounds i32, i32* %1, i64 %1008
%1010 = load i32, i32* %1009
%1011 = add nsw i32 %1010, %1007
store i32 %1011, i32* %1009
%1012 = add nuw nsw i64 %997, 1
%1013 = getelementptr inbounds i32, i32* %1, i64 %1012
%1014 = load i32, i32* %1013
%1015 = add nsw i32 %1014, %1007
store i32 %1015, i32* %1013
br label %1016
1016: ; preds = %996, %1002
%1017 = add nuw nsw i64 %998, 1
%1018 = add nuw nsw i64 %997, 2
%1019 = icmp eq i64 %1017, %921
br i1 %1019, label %990, label %996
1020: ; preds = %1046, %990
br i1 %33, label %1021, label %1051
1021: ; preds = %1020
%1022 = sext i32 %498 to i64
%1023 = zext i32 %13 to i64
%1024 = call i32 @llvm.smax.i32(i32 %16, i32 2)
br label %1061
1025: ; preds = %991, %1046
%1026 = phi i64 [ %993, %991 ], [ %1048, %1046 ]
%1027 = phi i64 [ 0, %991 ], [ %1047, %1046 ]
%1028 = phi i32 [ 1, %991 ], [ %1049, %1046 ]
%1029 = getelementptr inbounds i32, i32* %911, i64 %1027
%1030 = load i32, i32* %1029
%1031 = icmp ult i32 %1030, 2
br i1 %1031, label %1046, label %1032
1032: ; preds = %1025
%1033 = ashr i32 %1030, 1
%1034 = getelementptr inbounds i32, i32* %1, i64 %1026
%1035 = load i32, i32* %1034
%1036 = sub nsw i32 %1035, %1033
store i32 %1036, i32* %1034
%1037 = ashr i32 %1030, 2
%1038 = add nsw i64 %1026, %993
%1039 = getelementptr inbounds i32, i32* %1, i64 %1038
%1040 = load i32, i32* %1039
%1041 = add nsw i32 %1040, %1037
store i32 %1041, i32* %1039
%1042 = sub nsw i64 %1026, %993
%1043 = getelementptr inbounds i32, i32* %1, i64 %1042
%1044 = load i32, i32* %1043
%1045 = add nsw i32 %1044, %1037
store i32 %1045, i32* %1043
br label %1046
1046: ; preds = %1025, %1032
%1047 = add nsw i64 %1027, %992
%1048 = add i64 %1026, %994
%1049 = add nuw nsw i32 %1028, 1
%1050 = icmp eq i32 %1049, %995
br i1 %1050, label %1020, label %1025
1051: ; preds = %1094, %1020
br i1 %24, label %1052, label %1137
1052: ; preds = %1051
%1053 = sext i32 %16 to i64
%1054 = add nsw i64 %1053, -1
%1055 = add i32 %15, -2
%1056 = or i32 %1055, 1
%1057 = sext i32 %1056 to i64
%1058 = sext i32 %15 to i64
%1059 = sext i32 %13 to i64
%1060 = call i32 @llvm.smax.i32(i32 %17, i32 2)
br label %1099
1061: ; preds = %1021, %1094
%1062 = phi i64 [ %1022, %1021 ], [ %1096, %1094 ]
%1063 = phi i64 [ %301, %1021 ], [ %1095, %1094 ]
%1064 = phi i32 [ 1, %1021 ], [ %1097, %1094 ]
%1065 = getelementptr inbounds i32, i32* %911, i64 %1063
%1066 = load i32, i32* %1065
%1067 = icmp eq i32 %1066, 0
br i1 %1067, label %1094, label %1068
1068: ; preds = %1061
%1069 = getelementptr inbounds i32, i32* %1, i64 %1062
%1070 = load i32, i32* %1069
%1071 = add nsw i32 %1070, %1066
store i32 %1071, i32* %1069
%1072 = ashr i32 %1066, 1
%1073 = add nsw i64 %1062, -1
%1074 = getelementptr inbounds i32, i32* %1, i64 %1073
%1075 = load i32, i32* %1074
%1076 = sub nsw i32 %1075, %1072
store i32 %1076, i32* %1074
%1077 = add nsw i64 %1062, 1
%1078 = getelementptr inbounds i32, i32* %1, i64 %1077
%1079 = load i32, i32* %1078
%1080 = sub nsw i32 %1079, %1072
store i32 %1080, i32* %1078
%1081 = sub nsw i64 %1062, %1023
%1082 = getelementptr inbounds i32, i32* %1, i64 %1081
%1083 = load i32, i32* %1082
%1084 = sub nsw i32 %1083, %1072
store i32 %1084, i32* %1082
%1085 = ashr i32 %1066, 2
%1086 = add nsw i64 %1081, 1
%1087 = getelementptr inbounds i32, i32* %1, i64 %1086
%1088 = load i32, i32* %1087
%1089 = add nsw i32 %1088, %1085
store i32 %1089, i32* %1087
%1090 = add nsw i64 %1081, -1
%1091 = getelementptr inbounds i32, i32* %1, i64 %1090
%1092 = load i32, i32* %1091
%1093 = add nsw i32 %1092, %1085
store i32 %1093, i32* %1091
br label %1094
1094: ; preds = %1061, %1068
%1095 = add nsw i64 %1063, 1
%1096 = add nsw i64 %1062, 2
%1097 = add nuw nsw i32 %1064, 1
%1098 = icmp eq i32 %1097, %1024
br i1 %1098, label %1051, label %1061
1099: ; preds = %1052, %1132
%1100 = phi i64 [ %1057, %1052 ], [ %1134, %1132 ]
%1101 = phi i64 [ %1054, %1052 ], [ %1133, %1132 ]
%1102 = phi i32 [ 1, %1052 ], [ %1135, %1132 ]
%1103 = getelementptr inbounds i32, i32* %911, i64 %1101
%1104 = load i32, i32* %1103
%1105 = icmp eq i32 %1104, 0
br i1 %1105, label %1132, label %1106
1106: ; preds = %1099
%1107 = getelementptr inbounds i32, i32* %1, i64 %1100
%1108 = load i32, i32* %1107
%1109 = add nsw i32 %1108, %1104
store i32 %1109, i32* %1107
%1110 = ashr i32 %1104, 1
%1111 = add nsw i64 %1100, -1
%1112 = getelementptr inbounds i32, i32* %1, i64 %1111
%1113 = load i32, i32* %1112
%1114 = sub nsw i32 %1113, %1110
store i32 %1114, i32* %1112
%1115 = sub nsw i64 %1100, %1059
%1116 = getelementptr inbounds i32, i32* %1, i64 %1115
%1117 = load i32, i32* %1116
%1118 = sub nsw i32 %1117, %1110
store i32 %1118, i32* %1116
%1119 = ashr i32 %1104, 2
%1120 = add nsw i64 %1115, -1
%1121 = getelementptr inbounds i32, i32* %1, i64 %1120
%1122 = load i32, i32* %1121
%1123 = add nsw i32 %1122, %1119
store i32 %1123, i32* %1121
%1124 = add nsw i64 %1100, %1059
%1125 = getelementptr inbounds i32, i32* %1, i64 %1124
%1126 = load i32, i32* %1125
%1127 = sub nsw i32 %1126, %1110
store i32 %1127, i32* %1125
%1128 = add nsw i64 %1124, -1
%1129 = getelementptr inbounds i32, i32* %1, i64 %1128
%1130 = load i32, i32* %1129
%1131 = add nsw i32 %1130, %1119
store i32 %1131, i32* %1129
br label %1132
1132: ; preds = %1099, %1106
%1133 = add i64 %1101, %1053
%1134 = add i64 %1100, %1058
%1135 = add nuw nsw i32 %1102, 1
%1136 = icmp eq i32 %1135, %1060
br i1 %1136, label %1137, label %1099
1137: ; preds = %1132, %1051
%1138 = load i32, i32* %911
%1139 = ashr i32 %1138, 2
%1140 = load i32, i32* %1
%1141 = add nsw i32 %1140, %1139
store i32 %1141, i32* %1
%1142 = getelementptr inbounds i32, i32* %911, i64 %283
%1143 = load i32, i32* %1142
%1144 = icmp ult i32 %1143, 2
br i1 %1144, label %1155, label %1145
1145: ; preds = %1137
%1146 = ashr i32 %1143, 1
%1147 = load i32, i32* %868
%1148 = sub nsw i32 %1147, %1146
store i32 %1148, i32* %868
%1149 = ashr i32 %1143, 2
%1150 = add nsw i32 %13, -2
%1151 = sext i32 %1150 to i64
%1152 = getelementptr inbounds i32, i32* %1, i64 %1151
%1153 = load i32, i32* %1152
%1154 = add nsw i32 %1153, %1149
store i32 %1154, i32* %1152
br label %1155
1155: ; preds = %1145, %1137
%1156 = getelementptr inbounds i32, i32* %911, i64 %301
%1157 = load i32, i32* %1156
%1158 = icmp ult i32 %1157, 2
br i1 %1158, label %1170, label %1159
1159: ; preds = %1155
%1160 = ashr i32 %1157, 1
%1161 = load i32, i32* %606
%1162 = sub nsw i32 %1161, %1160
store i32 %1162, i32* %606
%1163 = ashr i32 %1157, 2
%1164 = add nsw i32 %14, -2
%1165 = mul nsw i32 %1164, %13
%1166 = sext i32 %1165 to i64
%1167 = getelementptr inbounds i32, i32* %1, i64 %1166
%1168 = load i32, i32* %1167
%1169 = add nsw i32 %1168, %1163
store i32 %1169, i32* %1167
br label %1170
1170: ; preds = %1159, %1155
%1171 = getelementptr inbounds i32, i32* %911, i64 %320
%1172 = load i32, i32* %1171
%1173 = icmp eq i32 %1172, 0
br i1 %1173, label %1194, label %1174
1174: ; preds = %1170
%1175 = load i32, i32* %326
%1176 = add nsw i32 %1175, %1172
store i32 %1176, i32* %326
%1177 = ashr i32 %1172, 1
%1178 = add nsw i32 %18, -2
%1179 = sext i32 %1178 to i64
%1180 = getelementptr inbounds i32, i32* %1, i64 %1179
%1181 = load i32, i32* %1180
%1182 = sub nsw i32 %1181, %1177
store i32 %1182, i32* %1180
%1183 = sub nsw i32 %324, %13
%1184 = sext i32 %1183 to i64
%1185 = getelementptr inbounds i32, i32* %1, i64 %1184
%1186 = load i32, i32* %1185
%1187 = sub nsw i32 %1186, %1177
store i32 %1187, i32* %1185
%1188 = ashr i32 %1172, 2
%1189 = add nsw i32 %1183, -1
%1190 = sext i32 %1189 to i64
%1191 = getelementptr inbounds i32, i32* %1, i64 %1190
%1192 = load i32, i32* %1191
%1193 = add nsw i32 %1192, %1188
store i32 %1193, i32* %1191
br label %1194
1194: ; preds = %1174, %1170
%1195 = icmp sgt i32 %11, 1
%1196 = select i1 %1195, i1 %19, i1 false
br i1 %1196, label %1197, label %1322
1197: ; preds = %1194
%1198 = zext i32 %18 to i64
%1199 = icmp ult i32 %18, 8
br i1 %1199, label %1285, label %1200
1200: ; preds = %1197
%1201 = getelementptr i32, i32* %0, i64 %1198
%1202 = getelementptr i32, i32* %1, i64 %1198
%1203 = icmp ugt i32* %1202, %0
%1204 = icmp ugt i32* %1201, %1
%1205 = and i1 %1203, %1204
br i1 %1205, label %1285, label %1206
1206: ; preds = %1200
%1207 = and i64 %1198, 4294967288
%1208 = add nsw i64 %1207, -8
%1209 = lshr exact i64 %1208, 3
%1210 = add nuw nsw i64 %1209, 1
%1211 = and i64 %1210, 3
%1212 = icmp ult i64 %1208, 24
br i1 %1212, label %1264, label %1213
1213: ; preds = %1206
%1214 = and i64 %1210, 4611686018427387900
br label %1215
1215: ; preds = %1215, %1213
%1216 = phi i64 [ 0, %1213 ], [ %1261, %1215 ]
%1217 = phi i64 [ 0, %1213 ], [ %1262, %1215 ]
%1218 = getelementptr inbounds i32, i32* %1, i64 %1216
%1219 = bitcast i32* %1218 to <4 x i32>*
%1220 = load <4 x i32>, <4 x i32>* %1219
%1221 = getelementptr inbounds i32, i32* %1218, i64 4
%1222 = bitcast i32* %1221 to <4 x i32>*
%1223 = load <4 x i32>, <4 x i32>* %1222
%1224 = getelementptr inbounds i32, i32* %0, i64 %1216
%1225 = bitcast i32* %1224 to <4 x i32>*
store <4 x i32> %1220, <4 x i32>* %1225
%1226 = getelementptr inbounds i32, i32* %1224, i64 4
%1227 = bitcast i32* %1226 to <4 x i32>*
store <4 x i32> %1223, <4 x i32>* %1227
%1228 = or i64 %1216, 8
%1229 = getelementptr inbounds i32, i32* %1, i64 %1228
%1230 = bitcast i32* %1229 to <4 x i32>*
%1231 = load <4 x i32>, <4 x i32>* %1230
%1232 = getelementptr inbounds i32, i32* %1229, i64 4
%1233 = bitcast i32* %1232 to <4 x i32>*
%1234 = load <4 x i32>, <4 x i32>* %1233
%1235 = getelementptr inbounds i32, i32* %0, i64 %1228
%1236 = bitcast i32* %1235 to <4 x i32>*
store <4 x i32> %1231, <4 x i32>* %1236
%1237 = getelementptr inbounds i32, i32* %1235, i64 4
%1238 = bitcast i32* %1237 to <4 x i32>*
store <4 x i32> %1234, <4 x i32>* %1238
%1239 = or i64 %1216, 16
%1240 = getelementptr inbounds i32, i32* %1, i64 %1239
%1241 = bitcast i32* %1240 to <4 x i32>*
%1242 = load <4 x i32>, <4 x i32>* %1241
%1243 = getelementptr inbounds i32, i32* %1240, i64 4
%1244 = bitcast i32* %1243 to <4 x i32>*
%1245 = load <4 x i32>, <4 x i32>* %1244
%1246 = getelementptr inbounds i32, i32* %0, i64 %1239
%1247 = bitcast i32* %1246 to <4 x i32>*
store <4 x i32> %1242, <4 x i32>* %1247
%1248 = getelementptr inbounds i32, i32* %1246, i64 4
%1249 = bitcast i32* %1248 to <4 x i32>*
store <4 x i32> %1245, <4 x i32>* %1249
%1250 = or i64 %1216, 24
%1251 = getelementptr inbounds i32, i32* %1, i64 %1250
%1252 = bitcast i32* %1251 to <4 x i32>*
%1253 = load <4 x i32>, <4 x i32>* %1252
%1254 = getelementptr inbounds i32, i32* %1251, i64 4
%1255 = bitcast i32* %1254 to <4 x i32>*
%1256 = load <4 x i32>, <4 x i32>* %1255
%1257 = getelementptr inbounds i32, i32* %0, i64 %1250
%1258 = bitcast i32* %1257 to <4 x i32>*
store <4 x i32> %1253, <4 x i32>* %1258
%1259 = getelementptr inbounds i32, i32* %1257, i64 4
%1260 = bitcast i32* %1259 to <4 x i32>*
store <4 x i32> %1256, <4 x i32>* %1260
%1261 = add nuw i64 %1216, 32
%1262 = add i64 %1217, 4
%1263 = icmp eq i64 %1262, %1214
br i1 %1263, label %1264, label %1215
1264: ; preds = %1215, %1206
%1265 = phi i64 [ 0, %1206 ], [ %1261, %1215 ]
%1266 = icmp eq i64 %1211, 0
br i1 %1266, label %1283, label %1267
1267: ; preds = %1264, %1267
%1268 = phi i64 [ %1280, %1267 ], [ %1265, %1264 ]
%1269 = phi i64 [ %1281, %1267 ], [ 0, %1264 ]
%1270 = getelementptr inbounds i32, i32* %1, i64 %1268
%1271 = bitcast i32* %1270 to <4 x i32>*
%1272 = load <4 x i32>, <4 x i32>* %1271
%1273 = getelementptr inbounds i32, i32* %1270, i64 4
%1274 = bitcast i32* %1273 to <4 x i32>*
%1275 = load <4 x i32>, <4 x i32>* %1274
%1276 = getelementptr inbounds i32, i32* %0, i64 %1268
%1277 = bitcast i32* %1276 to <4 x i32>*
store <4 x i32> %1272, <4 x i32>* %1277
%1278 = getelementptr inbounds i32, i32* %1276, i64 4
%1279 = bitcast i32* %1278 to <4 x i32>*
store <4 x i32> %1275, <4 x i32>* %1279
%1280 = add nuw i64 %1268, 8
%1281 = add i64 %1269, 1
%1282 = icmp eq i64 %1281, %1211
br i1 %1282, label %1283, label %1267
1283: ; preds = %1267, %1264
%1284 = icmp eq i64 %1207, %1198
br i1 %1284, label %1322, label %1285
1285: ; preds = %1200, %1197, %1283
%1286 = phi i64 [ 0, %1200 ], [ 0, %1197 ], [ %1207, %1283 ]
%1287 = xor i64 %1286, -1
%1288 = add nsw i64 %1287, %1198
%1289 = and i64 %1198, 3
%1290 = icmp eq i64 %1289, 0
br i1 %1290, label %1300, label %1291
1291: ; preds = %1285, %1291
%1292 = phi i64 [ %1297, %1291 ], [ %1286, %1285 ]
%1293 = phi i64 [ %1298, %1291 ], [ 0, %1285 ]
%1294 = getelementptr inbounds i32, i32* %1, i64 %1292
%1295 = load i32, i32* %1294
%1296 = getelementptr inbounds i32, i32* %0, i64 %1292
store i32 %1295, i32* %1296
%1297 = add nuw nsw i64 %1292, 1
%1298 = add i64 %1293, 1
%1299 = icmp eq i64 %1298, %1289
br i1 %1299, label %1300, label %1291
1300: ; preds = %1291, %1285
%1301 = phi i64 [ %1286, %1285 ], [ %1297, %1291 ]
%1302 = icmp ult i64 %1288, 3
br i1 %1302, label %1322, label %1303
1303: ; preds = %1300, %1303
%1304 = phi i64 [ %1320, %1303 ], [ %1301, %1300 ]
%1305 = getelementptr inbounds i32, i32* %1, i64 %1304
%1306 = load i32, i32* %1305
%1307 = getelementptr inbounds i32, i32* %0, i64 %1304
store i32 %1306, i32* %1307
%1308 = add nuw nsw i64 %1304, 1
%1309 = getelementptr inbounds i32, i32* %1, i64 %1308
%1310 = load i32, i32* %1309
%1311 = getelementptr inbounds i32, i32* %0, i64 %1308
store i32 %1310, i32* %1311
%1312 = add nuw nsw i64 %1304, 2
%1313 = getelementptr inbounds i32, i32* %1, i64 %1312
%1314 = load i32, i32* %1313
%1315 = getelementptr inbounds i32, i32* %0, i64 %1312
store i32 %1314, i32* %1315
%1316 = add nuw nsw i64 %1304, 3
%1317 = getelementptr inbounds i32, i32* %1, i64 %1316
%1318 = load i32, i32* %1317
%1319 = getelementptr inbounds i32, i32* %0, i64 %1316
store i32 %1318, i32* %1319
%1320 = add nuw nsw i64 %1304, 4
%1321 = icmp eq i64 %1320, %1198
br i1 %1321, label %1322, label %1303
1322: ; preds = %1300, %1303, %1283, %1194
br i1 %1195, label %10, label %1323
1323: ; preds = %1322, %5
ret void
}