void dwt_decode_97(int *a, int dn, int sn, int cas) {
  int i;
  if (!cas) {
    if ((dn > 0) || (sn > 1)) {
      for (i = 0; i < sn; i++) {
        a[(i)*2] = fix_mul(a[(i)*2], 10078);
      }
      for (i = 0; i < dn; i++) {
        a[(1 + (i)*2)] = fix_mul(a[(1 + (i)*2)], 13318);
      }
      for (i = 0; i < sn; i++) {
        a[(i)*2] -=
            fix_mul(((i - 1) < 0 ? a[(1 + (0) * 2)]
                                 : ((i - 1) >= dn ? a[(1 + (dn - 1) * 2)]
                                                  : a[(1 + (i - 1) * 2)])) +
                        ((i) < 0 ? a[(1 + (0) * 2)]
                                 : ((i) >= dn ? a[(1 + (dn - 1) * 2)]
                                              : a[(1 + (i)*2)])),
                    3633);
      }
      for (i = 0; i < dn; i++) {
        a[(1 + (i)*2)] -= fix_mul(
            ((i) < 0 ? a[(0) * 2] : ((i) >= sn ? a[(sn - 1) * 2] : a[(i)*2])) +
                ((i + 1) < 0
                     ? a[(0) * 2]
                     : ((i + 1) >= sn ? a[(sn - 1) * 2] : a[(i + 1) * 2])),
            7233);
      }
      for (i = 0; i < sn; i++) {
        a[(i)*2] +=
            fix_mul(((i - 1) < 0 ? a[(1 + (0) * 2)]
                                 : ((i - 1) >= dn ? a[(1 + (dn - 1) * 2)]
                                                  : a[(1 + (i - 1) * 2)])) +
                        ((i) < 0 ? a[(1 + (0) * 2)]
                                 : ((i) >= dn ? a[(1 + (dn - 1) * 2)]
                                              : a[(1 + (i)*2)])),
                    434);
      }
      for (i = 0; i < dn; i++) {
        a[(1 + (i)*2)] += fix_mul(
            ((i) < 0 ? a[(0) * 2] : ((i) >= sn ? a[(sn - 1) * 2] : a[(i)*2])) +
                ((i + 1) < 0
                     ? a[(0) * 2]
                     : ((i + 1) >= sn ? a[(sn - 1) * 2] : a[(i + 1) * 2])),
            12994);
      }
    }
  } else {
    if ((sn > 0) || (dn > 1)) {
      for (i = 0; i < sn; i++) {
        a[(1 + (i)*2)] = fix_mul(a[(1 + (i)*2)], 10078);
      }
      for (i = 0; i < dn; i++) {
        a[(i)*2] = fix_mul(a[(i)*2], 13318);
      }
      for (i = 0; i < sn; i++) {
        a[(1 + (i)*2)] -= fix_mul(
            ((i) < 0 ? a[(0) * 2] : ((i) >= dn ? a[(dn - 1) * 2] : a[(i)*2])) +
                ((i + 1) < 0
                     ? a[(0) * 2]
                     : ((i + 1) >= dn ? a[(dn - 1) * 2] : a[(i + 1) * 2])),
            3633);
      }
      for (i = 0; i < dn; i++) {
        a[(i)*2] -= fix_mul(
            ((i) < 0 ? a[(1 + (0) * 2)]
                     : ((i) >= sn ? a[(1 + (sn - 1) * 2)] : a[(1 + (i)*2)])) +
                ((i - 1) < 0 ? a[(1 + (0) * 2)]
                             : ((i - 1) >= sn ? a[(1 + (sn - 1) * 2)]
                                              : a[(1 + (i - 1) * 2)])),
            7233);
      }
      for (i = 0; i < sn; i++) {
        a[(1 + (i)*2)] += fix_mul(
            ((i) < 0 ? a[(0) * 2] : ((i) >= dn ? a[(dn - 1) * 2] : a[(i)*2])) +
                ((i + 1) < 0
                     ? a[(0) * 2]
                     : ((i + 1) >= dn ? a[(dn - 1) * 2] : a[(i + 1) * 2])),
            434);
      }
      for (i = 0; i < dn; i++) {
        a[(i)*2] += fix_mul(
            ((i) < 0 ? a[(1 + (0) * 2)]
                     : ((i) >= sn ? a[(1 + (sn - 1) * 2)] : a[(1 + (i)*2)])) +
                ((i - 1) < 0 ? a[(1 + (0) * 2)]
                             : ((i - 1) >= sn ? a[(1 + (sn - 1) * 2)]
                                              : a[(1 + (i - 1) * 2)])),
            12994);
      }
    }
  }
}


x86 assembly (clang, -O0):
<dwt_decode_97>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
jne    1646 <dwt_decode_97+0x536>
cmpl   $0x0,-0xc(%rbp)
jg     1146 <dwt_decode_97+0x36>
cmpl   $0x1,-0x10(%rbp)
jle    1641 <dwt_decode_97+0x531>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1195 <dwt_decode_97+0x85>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edi
mov    $0x275e,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%edx
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    114d <dwt_decode_97+0x3d>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11ea <dwt_decode_97+0xda>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edi
mov    $0x3406,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%edx
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    119c <dwt_decode_97+0x8c>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1305 <dwt_decode_97+0x1f5>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    121b <dwt_decode_97+0x10b>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x1c(%rbp)
jmp    1267 <dwt_decode_97+0x157>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    -0xc(%rbp),%eax
jl     1248 <dwt_decode_97+0x138>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
jmp    1261 <dwt_decode_97+0x151>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x18(%rbp)
jge    1286 <dwt_decode_97+0x176>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x28(%rbp)
jmp    12cc <dwt_decode_97+0x1bc>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     12b0 <dwt_decode_97+0x1a0>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
jmp    12c6 <dwt_decode_97+0x1b6>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x24(%rbp),%edi
mov    -0x28(%rbp),%eax
add    %eax,%edi
mov    $0xe31,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%esi
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11f1 <dwt_decode_97+0xe1>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1415 <dwt_decode_97+0x305>
cmpl   $0x0,-0x18(%rbp)
jge    1330 <dwt_decode_97+0x220>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x30(%rbp)
jmp    1370 <dwt_decode_97+0x260>
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1357 <dwt_decode_97+0x247>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x34(%rbp)
jmp    136a <dwt_decode_97+0x25a>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    $0x0,%eax
jge    1393 <dwt_decode_97+0x283>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x3c(%rbp)
jmp    13d9 <dwt_decode_97+0x2c9>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0x10(%rbp),%eax
jl     13bd <dwt_decode_97+0x2ad>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x40(%rbp)
jmp    13d3 <dwt_decode_97+0x2c3>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x38(%rbp),%edi
mov    -0x3c(%rbp),%eax
add    %eax,%edi
mov    $0x1c41,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%esi
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    130c <dwt_decode_97+0x1fc>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    152e <dwt_decode_97+0x41e>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    1446 <dwt_decode_97+0x336>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x44(%rbp)
jmp    1492 <dwt_decode_97+0x382>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    -0xc(%rbp),%eax
jl     1473 <dwt_decode_97+0x363>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x48(%rbp)
jmp    148c <dwt_decode_97+0x37c>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    %eax,-0x4c(%rbp)
cmpl   $0x0,-0x18(%rbp)
jge    14b1 <dwt_decode_97+0x3a1>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x50(%rbp)
jmp    14f7 <dwt_decode_97+0x3e7>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     14db <dwt_decode_97+0x3cb>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x54(%rbp)
jmp    14f1 <dwt_decode_97+0x3e1>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x4c(%rbp),%edi
mov    -0x50(%rbp),%eax
add    %eax,%edi
mov    $0x1b2,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%edx
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    141c <dwt_decode_97+0x30c>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    163c <dwt_decode_97+0x52c>
cmpl   $0x0,-0x18(%rbp)
jge    1559 <dwt_decode_97+0x449>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x58(%rbp)
jmp    1599 <dwt_decode_97+0x489>
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1580 <dwt_decode_97+0x470>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x5c(%rbp)
jmp    1593 <dwt_decode_97+0x483>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    $0x0,%eax
jge    15bc <dwt_decode_97+0x4ac>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x64(%rbp)
jmp    1602 <dwt_decode_97+0x4f2>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0x10(%rbp),%eax
jl     15e6 <dwt_decode_97+0x4d6>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x68(%rbp)
jmp    15fc <dwt_decode_97+0x4ec>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%eax
add    %eax,%edi
mov    $0x32c2,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%edx
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1535 <dwt_decode_97+0x425>
jmp    1641 <dwt_decode_97+0x531>
jmp    1bcf <dwt_decode_97+0xabf>
cmpl   $0x0,-0x10(%rbp)
jg     165a <dwt_decode_97+0x54a>
cmpl   $0x1,-0xc(%rbp)
jle    1bca <dwt_decode_97+0xaba>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    16af <dwt_decode_97+0x59f>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edi
mov    $0x275e,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%edx
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1661 <dwt_decode_97+0x551>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    16fe <dwt_decode_97+0x5ee>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edi
mov    $0x3406,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%edx
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    16b6 <dwt_decode_97+0x5a6>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    180e <dwt_decode_97+0x6fe>
cmpl   $0x0,-0x18(%rbp)
jge    1729 <dwt_decode_97+0x619>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x6c(%rbp)
jmp    1769 <dwt_decode_97+0x659>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     1750 <dwt_decode_97+0x640>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x70(%rbp)
jmp    1763 <dwt_decode_97+0x653>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    $0x0,%eax
jge    178c <dwt_decode_97+0x67c>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x78(%rbp)
jmp    17d2 <dwt_decode_97+0x6c2>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0xc(%rbp),%eax
jl     17b6 <dwt_decode_97+0x6a6>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x7c(%rbp)
jmp    17cc <dwt_decode_97+0x6bc>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x74(%rbp),%edi
mov    -0x78(%rbp),%eax
add    %eax,%edi
mov    $0xe31,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%esi
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1705 <dwt_decode_97+0x5f5>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    194a <dwt_decode_97+0x83a>
cmpl   $0x0,-0x18(%rbp)
jge    183a <dwt_decode_97+0x72a>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x80(%rbp)
jmp    1889 <dwt_decode_97+0x779>
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1867 <dwt_decode_97+0x757>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x84(%rbp)
jmp    1880 <dwt_decode_97+0x770>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x80(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    18b3 <dwt_decode_97+0x7a3>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x8c(%rbp)
jmp    190b <dwt_decode_97+0x7fb>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    -0x10(%rbp),%eax
jl     18e3 <dwt_decode_97+0x7d3>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x90(%rbp)
jmp    18ff <dwt_decode_97+0x7ef>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x90(%rbp)
mov    -0x90(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0x88(%rbp),%edi
mov    -0x8c(%rbp),%eax
add    %eax,%edi
mov    $0x1c41,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%esi
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1815 <dwt_decode_97+0x705>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1a82 <dwt_decode_97+0x972>
cmpl   $0x0,-0x18(%rbp)
jge    1978 <dwt_decode_97+0x868>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x94(%rbp)
jmp    19c4 <dwt_decode_97+0x8b4>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     19a2 <dwt_decode_97+0x892>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x98(%rbp)
jmp    19b8 <dwt_decode_97+0x8a8>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x98(%rbp)
mov    -0x98(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0x94(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    $0x0,%eax
jge    19f0 <dwt_decode_97+0x8e0>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xa0(%rbp)
jmp    1a42 <dwt_decode_97+0x932>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0xc(%rbp),%eax
jl     1a1d <dwt_decode_97+0x90d>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xa4(%rbp)
jmp    1a36 <dwt_decode_97+0x926>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xa4(%rbp)
mov    -0xa4(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x9c(%rbp),%edi
mov    -0xa0(%rbp),%eax
add    %eax,%edi
mov    $0x1b2,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%edx
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1951 <dwt_decode_97+0x841>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1bc5 <dwt_decode_97+0xab5>
cmpl   $0x0,-0x18(%rbp)
jge    1ab1 <dwt_decode_97+0x9a1>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0xa8(%rbp)
jmp    1b03 <dwt_decode_97+0x9f3>
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1ade <dwt_decode_97+0x9ce>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xac(%rbp)
jmp    1af7 <dwt_decode_97+0x9e7>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xac(%rbp)
mov    -0xac(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
mov    %eax,-0xb0(%rbp)
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    1b30 <dwt_decode_97+0xa20>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0xb4(%rbp)
jmp    1b88 <dwt_decode_97+0xa78>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    -0x10(%rbp),%eax
jl     1b60 <dwt_decode_97+0xa50>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xb8(%rbp)
jmp    1b7c <dwt_decode_97+0xa6c>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb0(%rbp),%edi
mov    -0xb4(%rbp),%eax
add    %eax,%edi
mov    $0x32c2,%esi
mov    $0x0,%al
call   1030 <fix_mul@plt>
mov    %eax,%edx
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1a89 <dwt_decode_97+0x979>
jmp    1bca <dwt_decode_97+0xaba>
jmp    1bcf <dwt_decode_97+0xabf>
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dwt_decode_97>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %edx,%r12d
mov    %esi,%r15d
mov    %rdi,%r14
test   %ecx,%ecx
je     140e <dwt_decode_97+0x2fe>
cmp    $0x1,%r15d
jg     113e <dwt_decode_97+0x2e>
test   %r12d,%r12d
jle    16a0 <dwt_decode_97+0x590>
mov    %r12d,%r13d
test   %r12d,%r12d
jle    116f <dwt_decode_97+0x5f>
xor    %ebx,%ebx
nopl   0x0(%rax,%rax,1)
mov    0x4(%r14,%rbx,8),%edi
mov    $0x275e,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    %eax,0x4(%r14,%rbx,8)
add    $0x1,%rbx
cmp    %rbx,%r13
jne    1150 <dwt_decode_97+0x40>
mov    %r15d,%ebp
test   %r15d,%r15d
jle    119d <dwt_decode_97+0x8d>
xor    %ebx,%ebx
nopl   0x0(%rax)
mov    (%r14,%rbx,8),%edi
mov    $0x3406,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    %eax,(%r14,%rbx,8)
add    $0x1,%rbx
cmp    %rbx,%rbp
jne    1180 <dwt_decode_97+0x70>
mov    %rbp,0x18(%rsp)
mov    %r15,%rax
mov    %r15,0x8(%rsp)
movslq %r15d,%r15
mov    %r12,0x10(%rsp)
test   %r12d,%r12d
jle    121c <dwt_decode_97+0x10c>
mov    0x8(%rsp),%rax
add    %eax,%eax
add    $0xfffffffe,%eax
cltq
mov    %rax,0x28(%rsp)
mov    $0x2,%ebp
xor    %ebx,%ebx
nop
lea    -0x2(%rbp),%rax
cmp    %r15,%rbx
mov    0x28(%rsp),%rcx
cmovge %rcx,%rax
mov    %r15,%r12
mov    %r13,%r15
lea    0x1(%rbx),%r13
cmp    %r12,%r13
cmovl  %rbp,%rcx
mov    (%r14,%rcx,4),%edi
add    (%r14,%rax,4),%edi
mov    $0xe31,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
sub    %eax,0x4(%r14,%rbx,8)
add    $0x2,%rbp
mov    %r13,%rbx
cmp    %r13,%r15
mov    %r15,%r13
mov    %r12,%r15
jne    11d0 <dwt_decode_97+0xc0>
mov    %r13,0x30(%rsp)
movslq 0x10(%rsp),%rcx
cmpl   $0x0,0x8(%rsp)
mov    %rcx,0x20(%rsp)
jle    12de <dwt_decode_97+0x1ce>
mov    0x10(%rsp),%rcx
lea    (%rcx,%rcx,1),%eax
add    $0xffffffff,%eax
movslq %eax,%r13
test   %ecx,%ecx
mov    $0x1,%ebp
mov    %r13,%rax
cmovg  %rbp,%rax
mov    0x4(%r14),%edi
add    (%r14,%rax,4),%edi
mov    $0x1c41,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    0x20(%rsp),%rcx
sub    %eax,(%r14)
cmpl   $0x1,0x8(%rsp)
je     12de <dwt_decode_97+0x1ce>
mov    $0x3,%r12d
movabs $0x100000000,%rbx
cs nopw 0x0(%rax,%rax,1)
nop
mov    %rbx,%rax
sar    $0x20,%rax
cmp    %rcx,%rbp
mov    %r13,%rcx
cmovl  %r12,%rcx
cmovg  %r13,%rax
mov    (%r14,%rax,4),%edi
add    (%r14,%rcx,4),%edi
mov    $0x1c41,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    0x20(%rsp),%rcx
sub    %eax,(%r14,%rbp,8)
add    $0x1,%rbp
movabs $0x200000000,%rax
add    %rax,%rbx
add    $0x2,%r12
cmp    %rbp,0x18(%rsp)
jne    1290 <dwt_decode_97+0x180>
cmpl   $0x0,0x10(%rsp)
mov    0x30(%rsp),%r12
jle    1353 <dwt_decode_97+0x243>
mov    0x8(%rsp),%rax
add    %eax,%eax
add    $0xfffffffe,%eax
cltq
mov    %rax,0x28(%rsp)
mov    $0x2,%ebp
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    -0x2(%rbp),%rax
cmp    %r15,%rbx
mov    0x28(%rsp),%rdx
cmovge %rdx,%rax
lea    0x1(%rbx),%r13
cmp    %r15,%r13
mov    %rdx,%rcx
cmovl  %rbp,%rcx
mov    (%r14,%rcx,4),%edi
add    (%r14,%rax,4),%edi
mov    $0x1b2,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,0x4(%r14,%rbx,8)
add    $0x2,%rbp
mov    %r13,%rbx
cmp    %r13,%r12
jne    1310 <dwt_decode_97+0x200>
mov    0x8(%rsp),%rbx
test   %ebx,%ebx
mov    0x10(%rsp),%rcx
mov    0x20(%rsp),%r15
jle    16a0 <dwt_decode_97+0x590>
lea    (%rcx,%rcx,1),%eax
add    $0xffffffff,%eax
movslq %eax,%r12
test   %ecx,%ecx
mov    $0x1,%r13d
mov    %r12,%rax
cmovg  %r13,%rax
mov    0x4(%r14),%edi
add    (%r14,%rax,4),%edi
mov    $0x32c2,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,(%r14)
cmp    $0x1,%ebx
je     16a0 <dwt_decode_97+0x590>
mov    $0x3,%ebx
movabs $0x100000000,%rbp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %rbp,%rax
sar    $0x20,%rax
cmp    %r15,%r13
mov    %r12,%rcx
cmovl  %rbx,%rcx
cmovg  %r12,%rax
mov    (%r14,%rax,4),%edi
add    (%r14,%rcx,4),%edi
mov    $0x32c2,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,(%r14,%r13,8)
add    $0x1,%r13
movabs $0x200000000,%rax
add    %rax,%rbp
add    $0x2,%rbx
cmp    %r13,0x18(%rsp)
jne    13c0 <dwt_decode_97+0x2b0>
jmp    16a0 <dwt_decode_97+0x590>
test   %r15d,%r15d
jg     141d <dwt_decode_97+0x30d>
cmp    $0x2,%r12d
jl     16a0 <dwt_decode_97+0x590>
test   %r12d,%r12d
jle    144d <dwt_decode_97+0x33d>
mov    %r12d,%ebx
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
mov    (%r14,%rbp,8),%edi
mov    $0x275e,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    %eax,(%r14,%rbp,8)
add    $0x1,%rbp
cmp    %rbp,%rbx
jne    1430 <dwt_decode_97+0x320>
test   %r15d,%r15d
jle    147f <dwt_decode_97+0x36f>
mov    %r15d,%ebx
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
mov    0x4(%r14,%rbp,8),%edi
mov    $0x3406,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    %eax,0x4(%r14,%rbp,8)
add    $0x1,%rbp
cmp    %rbp,%rbx
jne    1460 <dwt_decode_97+0x350>
mov    %r15,0x8(%rsp)
mov    %r12,0x10(%rsp)
test   %r12d,%r12d
jle    1519 <dwt_decode_97+0x409>
mov    0x8(%rsp),%rcx
lea    (%rcx,%rcx,1),%eax
add    $0xffffffff,%eax
movslq %eax,%r13
test   %ecx,%ecx
mov    $0x1,%ebp
mov    %r13,%rax
cmovg  %rbp,%rax
mov    (%r14,%rax,4),%edi
add    0x4(%r14),%edi
mov    $0xe31,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
sub    %eax,(%r14)
cmpl   $0x1,0x10(%rsp)
je     1519 <dwt_decode_97+0x409>
movslq 0x8(%rsp),%r15
mov    0x10(%rsp),%r12d
mov    $0x3,%ebx
nopl   0x0(%rax,%rax,1)
lea    -0x2(%rbx),%eax
cmp    %r15,%rbp
cltq
cmovg  %r13,%rax
mov    %r13,%rcx
cmovl  %rbx,%rcx
mov    (%r14,%rcx,4),%edi
add    (%r14,%rax,4),%edi
mov    $0xe31,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
sub    %eax,-0x4(%r14,%rbx,4)
add    $0x1,%rbp
add    $0x2,%rbx
cmp    %rbp,%r12
jne    14e0 <dwt_decode_97+0x3d0>
cmpl   $0x0,0x8(%rsp)
jle    1590 <dwt_decode_97+0x480>
mov    0x10(%rsp),%rcx
lea    (%rcx,%rcx,1),%eax
add    $0xfffffffe,%eax
movslq %eax,%r12
movslq %ecx,%r13
mov    0x8(%rsp),%eax
mov    %rax,0x18(%rsp)
mov    $0x2,%ebx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x2(%rbx),%rax
cmp    %r13,%rbp
cmovge %r12,%rax
lea    0x1(%rbp),%r15
cmp    %r13,%r15
mov    %r12,%rcx
cmovl  %rbx,%rcx
mov    (%r14,%rcx,4),%edi
add    (%r14,%rax,4),%edi
mov    $0x1c41,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
sub    %eax,0x4(%r14,%rbp,8)
add    $0x2,%rbx
mov    %r15,%rbp
cmp    %r15,0x18(%rsp)
jne    1550 <dwt_decode_97+0x440>
cmpl   $0x0,0x10(%rsp)
jle    1629 <dwt_decode_97+0x519>
mov    0x8(%rsp),%rcx
lea    (%rcx,%rcx,1),%eax
add    $0xffffffff,%eax
movslq %eax,%r13
test   %ecx,%ecx
mov    $0x1,%ebp
mov    %r13,%rax
cmovg  %rbp,%rax
mov    (%r14,%rax,4),%edi
add    0x4(%r14),%edi
mov    $0x1b2,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,(%r14)
cmpl   $0x1,0x10(%rsp)
je     1629 <dwt_decode_97+0x519>
movslq 0x8(%rsp),%r15
mov    0x10(%rsp),%r12d
mov    $0x3,%ebx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    -0x2(%rbx),%eax
cmp    %r15,%rbp
cltq
cmovg  %r13,%rax
mov    %r13,%rcx
cmovl  %rbx,%rcx
mov    (%r14,%rcx,4),%edi
add    (%r14,%rax,4),%edi
mov    $0x1b2,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,-0x4(%r14,%rbx,4)
add    $0x1,%rbp
add    $0x2,%rbx
cmp    %rbp,%r12
jne    15f0 <dwt_decode_97+0x4e0>
mov    0x8(%rsp),%rcx
test   %ecx,%ecx
mov    0x10(%rsp),%rdx
jle    16a0 <dwt_decode_97+0x590>
lea    (%rdx,%rdx,1),%eax
add    $0xfffffffe,%eax
movslq %eax,%r12
movslq %edx,%r13
mov    %ecx,%eax
mov    %rax,0x18(%rsp)
mov    $0x2,%ebx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x2(%rbx),%rax
cmp    %r13,%rbp
cmovge %r12,%rax
lea    0x1(%rbp),%r15
cmp    %r13,%r15
mov    %r12,%rcx
cmovl  %rbx,%rcx
mov    (%r14,%rcx,4),%edi
add    (%r14,%rax,4),%edi
mov    $0x32c2,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,0x4(%r14,%rbp,8)
add    $0x2,%rbx
mov    %r15,%rbp
cmp    %r15,0x18(%rsp)
jne    1660 <dwt_decode_97+0x550>
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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