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

LLVM IR (-O2):
define i32 @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 i32 undef
}