void dwt_encode_1_real(int *a, int dn, int sn, int cas) {
  int i;
  if (!cas) {
    if ((dn > 0) || (sn > 1)) {
      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])),
            12993);
      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])),
            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)])),
                    3633);
      for (i = 0; i < dn; i++)
        a[(1 + (i)*2)] = fix_mul(a[(1 + (i)*2)], 5038);
      for (i = 0; i < sn; i++)
        a[(i)*2] = fix_mul(a[(i)*2], 6659);
    }
  } else {
    if ((sn > 0) || (dn > 1)) {
      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)])),
            12993);
      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)])),
            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])),
            3633);
      for (i = 0; i < dn; i++)
        a[(i)*2] = fix_mul(a[(i)*2], 5038);
      for (i = 0; i < sn; i++)
        a[(1 + (i)*2)] = fix_mul(a[(1 + (i)*2)], 6659);
    }
  }
}


x86 assembly (clang, -O0):
<dwt_encode_1_real>:
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_encode_1_real+0x536>
cmpl   $0x0,-0xc(%rbp)
jg     1146 <dwt_encode_1_real+0x36>
cmpl   $0x1,-0x10(%rbp)
jle    1641 <dwt_encode_1_real+0x531>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1256 <dwt_encode_1_real+0x146>
cmpl   $0x0,-0x18(%rbp)
jge    1171 <dwt_encode_1_real+0x61>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1c(%rbp)
jmp    11b1 <dwt_encode_1_real+0xa1>
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1198 <dwt_encode_1_real+0x88>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
jmp    11ab <dwt_encode_1_real+0x9b>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $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)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    $0x0,%eax
jge    11d4 <dwt_encode_1_real+0xc4>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x28(%rbp)
jmp    121a <dwt_encode_1_real+0x10a>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0x10(%rbp),%eax
jl     11fe <dwt_encode_1_real+0xee>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
jmp    1214 <dwt_encode_1_real+0x104>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
shl    $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    $0x32c1,%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    114d <dwt_encode_1_real+0x3d>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1371 <dwt_encode_1_real+0x261>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    1287 <dwt_encode_1_real+0x177>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x30(%rbp)
jmp    12d3 <dwt_encode_1_real+0x1c3>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    -0xc(%rbp),%eax
jl     12b4 <dwt_encode_1_real+0x1a4>
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,-0x34(%rbp)
jmp    12cd <dwt_encode_1_real+0x1bd>
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,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x18(%rbp)
jge    12f2 <dwt_encode_1_real+0x1e2>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x3c(%rbp)
jmp    1338 <dwt_encode_1_real+0x228>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     131c <dwt_encode_1_real+0x20c>
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,-0x40(%rbp)
jmp    1332 <dwt_encode_1_real+0x222>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $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    $0x1b2,%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    125d <dwt_encode_1_real+0x14d>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    147f <dwt_encode_1_real+0x36f>
cmpl   $0x0,-0x18(%rbp)
jge    139c <dwt_encode_1_real+0x28c>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x44(%rbp)
jmp    13dc <dwt_encode_1_real+0x2cc>
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     13c3 <dwt_encode_1_real+0x2b3>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x48(%rbp)
jmp    13d6 <dwt_encode_1_real+0x2c6>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $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)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    $0x0,%eax
jge    13ff <dwt_encode_1_real+0x2ef>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x50(%rbp)
jmp    1445 <dwt_encode_1_real+0x335>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0x10(%rbp),%eax
jl     1429 <dwt_encode_1_real+0x319>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x54(%rbp)
jmp    143f <dwt_encode_1_real+0x32f>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
shl    $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    $0x1c41,%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    1378 <dwt_encode_1_real+0x268>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1598 <dwt_encode_1_real+0x488>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    14b0 <dwt_encode_1_real+0x3a0>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x58(%rbp)
jmp    14fc <dwt_encode_1_real+0x3ec>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    -0xc(%rbp),%eax
jl     14dd <dwt_encode_1_real+0x3cd>
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,-0x5c(%rbp)
jmp    14f6 <dwt_encode_1_real+0x3e6>
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,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x60(%rbp)
cmpl   $0x0,-0x18(%rbp)
jge    151b <dwt_encode_1_real+0x40b>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x64(%rbp)
jmp    1561 <dwt_encode_1_real+0x451>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     1545 <dwt_encode_1_real+0x435>
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,-0x68(%rbp)
jmp    155b <dwt_encode_1_real+0x44b>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $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    $0xe31,%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    1486 <dwt_encode_1_real+0x376>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    15ed <dwt_encode_1_real+0x4dd>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edi
mov    $0x13ae,%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    159f <dwt_encode_1_real+0x48f>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    163c <dwt_encode_1_real+0x52c>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edi
mov    $0x1a03,%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    15f4 <dwt_encode_1_real+0x4e4>
jmp    1641 <dwt_encode_1_real+0x531>
jmp    1bcf <dwt_encode_1_real+0xabf>
cmpl   $0x0,-0x10(%rbp)
jg     165a <dwt_encode_1_real+0x54a>
cmpl   $0x1,-0xc(%rbp)
jle    1bca <dwt_encode_1_real+0xaba>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1775 <dwt_encode_1_real+0x665>
cmpl   $0x0,-0x18(%rbp)
jge    1686 <dwt_encode_1_real+0x576>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x6c(%rbp)
jmp    16cc <dwt_encode_1_real+0x5bc>
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     16b0 <dwt_encode_1_real+0x5a0>
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,-0x70(%rbp)
jmp    16c6 <dwt_encode_1_real+0x5b6>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $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
sub    $0x1,%eax
cmp    $0x0,%eax
jge    16f0 <dwt_encode_1_real+0x5e0>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x78(%rbp)
jmp    173c <dwt_encode_1_real+0x62c>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    -0x10(%rbp),%eax
jl     171d <dwt_encode_1_real+0x60d>
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,-0x7c(%rbp)
jmp    1736 <dwt_encode_1_real+0x626>
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,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x74(%rbp),%edi
mov    -0x78(%rbp),%eax
add    %eax,%edi
mov    $0x32c1,%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    1661 <dwt_encode_1_real+0x551>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    18a6 <dwt_encode_1_real+0x796>
cmpl   $0x0,-0x18(%rbp)
jge    17a0 <dwt_encode_1_real+0x690>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x80(%rbp)
jmp    17e9 <dwt_encode_1_real+0x6d9>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     17ca <dwt_encode_1_real+0x6ba>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x84(%rbp)
jmp    17e0 <dwt_encode_1_real+0x6d0>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $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
add    $0x1,%eax
cmp    $0x0,%eax
jge    1812 <dwt_encode_1_real+0x702>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x8c(%rbp)
jmp    1864 <dwt_encode_1_real+0x754>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0xc(%rbp),%eax
jl     183f <dwt_encode_1_real+0x72f>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x90(%rbp)
jmp    1858 <dwt_encode_1_real+0x748>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
shl    $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    $0x1b2,%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    177c <dwt_encode_1_real+0x66c>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    19e9 <dwt_encode_1_real+0x8d9>
cmpl   $0x0,-0x18(%rbp)
jge    18d5 <dwt_encode_1_real+0x7c5>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x94(%rbp)
jmp    1927 <dwt_encode_1_real+0x817>
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1902 <dwt_encode_1_real+0x7f2>
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,-0x98(%rbp)
jmp    191b <dwt_encode_1_real+0x80b>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $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
sub    $0x1,%eax
cmp    $0x0,%eax
jge    1954 <dwt_encode_1_real+0x844>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0xa0(%rbp)
jmp    19ac <dwt_encode_1_real+0x89c>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
cmp    -0x10(%rbp),%eax
jl     1984 <dwt_encode_1_real+0x874>
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,-0xa4(%rbp)
jmp    19a0 <dwt_encode_1_real+0x890>
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,-0xa4(%rbp)
mov    -0xa4(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x9c(%rbp),%edi
mov    -0xa0(%rbp),%eax
add    %eax,%edi
mov    $0x1c41,%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    18ad <dwt_encode_1_real+0x79d>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1b21 <dwt_encode_1_real+0xa11>
cmpl   $0x0,-0x18(%rbp)
jge    1a17 <dwt_encode_1_real+0x907>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xa8(%rbp)
jmp    1a63 <dwt_encode_1_real+0x953>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     1a41 <dwt_encode_1_real+0x931>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xac(%rbp)
jmp    1a57 <dwt_encode_1_real+0x947>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $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
add    $0x1,%eax
cmp    $0x0,%eax
jge    1a8f <dwt_encode_1_real+0x97f>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xb4(%rbp)
jmp    1ae1 <dwt_encode_1_real+0x9d1>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cmp    -0xc(%rbp),%eax
jl     1abc <dwt_encode_1_real+0x9ac>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xb8(%rbp)
jmp    1ad5 <dwt_encode_1_real+0x9c5>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
shl    $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    $0xe31,%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    19f0 <dwt_encode_1_real+0x8e0>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1b70 <dwt_encode_1_real+0xa60>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edi
mov    $0x13ae,%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    1b28 <dwt_encode_1_real+0xa18>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1bc5 <dwt_encode_1_real+0xab5>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edi
mov    $0x1a03,%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    1b77 <dwt_encode_1_real+0xa67>
jmp    1bca <dwt_encode_1_real+0xaba>
jmp    1bcf <dwt_encode_1_real+0xabf>
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dwt_encode_1_real>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %rdi,%r12
test   %ecx,%ecx
mov    %rdx,0x8(%rsp)
je     13f4 <dwt_encode_1_real+0x2e4>
cmp    $0x1,%esi
jg     113b <dwt_encode_1_real+0x2b>
test   %edx,%edx
jle    166d <dwt_encode_1_real+0x55d>
movslq %edx,%rcx
mov    %esi,%r15d
mov    %rsi,%rax
mov    %rsi,(%rsp)
test   %esi,%esi
mov    %rcx,0x10(%rsp)
jle    11fc <dwt_encode_1_real+0xec>
mov    0x8(%rsp),%rcx
lea    (%rcx,%rcx,1),%eax
add    $0xffffffff,%eax
movslq %eax,%r14
test   %ecx,%ecx
mov    $0x1,%r13d
mov    %r14,%rax
cmovg  %r13,%rax
mov    0x4(%r12),%edi
add    (%r12,%rax,4),%edi
mov    $0x32c1,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    0x10(%rsp),%rcx
sub    %eax,(%r12)
cmpl   $0x1,(%rsp)
je     11fc <dwt_encode_1_real+0xec>
mov    $0x3,%ebx
movabs $0x100000000,%rbp
cs nopw 0x0(%rax,%rax,1)
nop
mov    %rbp,%rax
sar    $0x20,%rax
cmp    %rcx,%r13
mov    %r14,%rcx
cmovl  %rbx,%rcx
cmovg  %r14,%rax
mov    (%r12,%rax,4),%edi
add    (%r12,%rcx,4),%edi
mov    $0x32c1,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    0x10(%rsp),%rcx
sub    %eax,(%r12,%r13,8)
add    $0x1,%r13
movabs $0x200000000,%rax
add    %rax,%rbp
add    $0x2,%rbx
cmp    %r13,%r15
jne    11b0 <dwt_encode_1_real+0xa0>
mov    %r15,0x20(%rsp)
movslq (%rsp),%r14
mov    0x8(%rsp),%rax
mov    %eax,%ecx
test   %eax,%eax
jle    127f <dwt_encode_1_real+0x16f>
mov    (%rsp),%rax
add    %eax,%eax
add    $0xfffffffe,%eax
cltq
mov    %rax,0x18(%rsp)
mov    $0x2,%ebp
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
lea    -0x2(%rbp),%rax
cmp    %r14,%rbx
mov    0x18(%rsp),%rdx
cmovge %rdx,%rax
lea    0x1(%rbx),%r13
cmp    %r14,%r13
mov    %r14,%r15
mov    %rcx,%r14
mov    %rdx,%rcx
cmovl  %rbp,%rcx
mov    (%r12,%rcx,4),%edi
add    (%r12,%rax,4),%edi
mov    $0x1b2,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    %r14,%rcx
mov    %r15,%r14
sub    %eax,0x4(%r12,%rbx,8)
add    $0x2,%rbp
mov    %r13,%rbx
cmp    %r13,%rcx
jne    1230 <dwt_encode_1_real+0x120>
mov    %rcx,0x18(%rsp)
cmpl   $0x0,(%rsp)
jle    132b <dwt_encode_1_real+0x21b>
mov    0x8(%rsp),%rcx
lea    (%rcx,%rcx,1),%eax
add    $0xffffffff,%eax
movslq %eax,%r13
test   %ecx,%ecx
mov    $0x1,%r15d
mov    %r13,%rax
cmovg  %r15,%rax
mov    0x4(%r12),%edi
add    (%r12,%rax,4),%edi
mov    $0x1c41,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,(%r12)
cmpl   $0x1,(%rsp)
je     132b <dwt_encode_1_real+0x21b>
mov    $0x3,%ebx
movabs $0x100000000,%rbp
nopl   0x0(%rax)
mov    %rbp,%rax
sar    $0x20,%rax
cmp    0x10(%rsp),%r15
mov    %r13,%rcx
cmovl  %rbx,%rcx
cmovg  %r13,%rax
mov    (%r12,%rax,4),%edi
add    (%r12,%rcx,4),%edi
mov    $0x1c41,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,(%r12,%r15,8)
add    $0x1,%r15
movabs $0x200000000,%rax
add    %rax,%rbp
add    $0x2,%rbx
cmp    %r15,0x20(%rsp)
jne    12e0 <dwt_encode_1_real+0x1d0>
cmpl   $0x0,0x8(%rsp)
mov    0x18(%rsp),%r15
jle    1393 <dwt_encode_1_real+0x283>
mov    (%rsp),%rax
add    %eax,%eax
add    $0xfffffffe,%eax
cltq
mov    %rax,0x10(%rsp)
mov    $0x2,%ebp
xor    %ebx,%ebx
xchg   %ax,%ax
lea    -0x2(%rbp),%rax
cmp    %r14,%rbx
mov    0x10(%rsp),%rdx
cmovge %rdx,%rax
lea    0x1(%rbx),%r13
cmp    %r14,%r13
mov    %rdx,%rcx
cmovl  %rbp,%rcx
mov    (%r12,%rcx,4),%edi
add    (%r12,%rax,4),%edi
mov    $0xe31,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,0x4(%r12,%rbx,8)
add    $0x2,%rbp
mov    %r13,%rbx
cmp    %r13,%r15
jne    1350 <dwt_encode_1_real+0x240>
cmpl   $0x0,(%rsp)
mov    0x20(%rsp),%rbp
jle    13bd <dwt_encode_1_real+0x2ad>
xor    %ebx,%ebx
mov    (%r12,%rbx,8),%edi
mov    $0x13ae,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    %eax,(%r12,%rbx,8)
add    $0x1,%rbx
cmp    %rbx,%rbp
jne    13a0 <dwt_encode_1_real+0x290>
cmpl   $0x0,0x8(%rsp)
mov    0x18(%rsp),%rbp
jle    166d <dwt_encode_1_real+0x55d>
xor    %ebx,%ebx
nop
mov    0x4(%r12,%rbx,8),%edi
mov    $0x1a03,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    %eax,0x4(%r12,%rbx,8)
add    $0x1,%rbx
cmp    %rbx,%rbp
jne    13d0 <dwt_encode_1_real+0x2c0>
jmp    166d <dwt_encode_1_real+0x55d>
test   %esi,%esi
jg     1401 <dwt_encode_1_real+0x2f1>
cmp    $0x2,%edx
jl     166d <dwt_encode_1_real+0x55d>
mov    %rsi,(%rsp)
test   %esi,%esi
jle    1470 <dwt_encode_1_real+0x360>
mov    0x8(%rsp),%rcx
lea    (%rcx,%rcx,1),%eax
add    $0xfffffffe,%eax
movslq %eax,%r15
movslq %ecx,%r13
mov    (%rsp),%eax
mov    %rax,0x10(%rsp)
mov    $0x2,%ebx
xor    %ebp,%ebp
nopl   0x0(%rax)
lea    -0x2(%rbx),%rax
cmp    %r13,%rbp
cmovge %r15,%rax
lea    0x1(%rbp),%r14
cmp    %r13,%r14
mov    %r15,%rcx
cmovl  %rbx,%rcx
mov    (%r12,%rcx,4),%edi
add    (%r12,%rax,4),%edi
mov    $0x32c1,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
sub    %eax,0x4(%r12,%rbp,8)
add    $0x2,%rbx
mov    %r14,%rbp
cmp    %r14,0x10(%rsp)
jne    1430 <dwt_encode_1_real+0x320>
cmpl   $0x0,0x8(%rsp)
jle    1509 <dwt_encode_1_real+0x3f9>
mov    (%rsp),%rcx
lea    (%rcx,%rcx,1),%eax
add    $0xffffffff,%eax
movslq %eax,%r14
test   %ecx,%ecx
mov    $0x1,%ebp
mov    %r14,%rax
cmovg  %rbp,%rax
mov    (%r12,%rax,4),%edi
add    0x4(%r12),%edi
mov    $0x1b2,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
sub    %eax,(%r12)
cmpl   $0x1,0x8(%rsp)
je     1509 <dwt_encode_1_real+0x3f9>
movslq (%rsp),%r15
mov    0x8(%rsp),%r13d
mov    $0x3,%ebx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    -0x2(%rbx),%eax
cmp    %r15,%rbp
cltq
cmovg  %r14,%rax
mov    %r14,%rcx
cmovl  %rbx,%rcx
mov    (%r12,%rcx,4),%edi
add    (%r12,%rax,4),%edi
mov    $0x1b2,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
sub    %eax,-0x4(%r12,%rbx,4)
add    $0x1,%rbp
add    $0x2,%rbx
cmp    %rbp,%r13
jne    14d0 <dwt_encode_1_real+0x3c0>
cmpl   $0x0,(%rsp)
jle    1570 <dwt_encode_1_real+0x460>
mov    0x8(%rsp),%rcx
lea    (%rcx,%rcx,1),%eax
add    $0xfffffffe,%eax
movslq %eax,%r15
movslq %ecx,%r13
mov    (%rsp),%eax
mov    %rax,0x10(%rsp)
mov    $0x2,%ebx
xor    %ebp,%ebp
nop
lea    -0x2(%rbx),%rax
cmp    %r13,%rbp
cmovge %r15,%rax
lea    0x1(%rbp),%r14
cmp    %r13,%r14
mov    %r15,%rcx
cmovl  %rbx,%rcx
mov    (%r12,%rcx,4),%edi
add    (%r12,%rax,4),%edi
mov    $0x1c41,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,0x4(%r12,%rbp,8)
add    $0x2,%rbx
mov    %r14,%rbp
cmp    %r14,0x10(%rsp)
jne    1530 <dwt_encode_1_real+0x420>
cmpl   $0x0,0x8(%rsp)
jle    1609 <dwt_encode_1_real+0x4f9>
mov    (%rsp),%rcx
lea    (%rcx,%rcx,1),%eax
add    $0xffffffff,%eax
movslq %eax,%r14
test   %ecx,%ecx
mov    $0x1,%ebp
mov    %r14,%rax
cmovg  %rbp,%rax
mov    (%r12,%rax,4),%edi
add    0x4(%r12),%edi
mov    $0xe31,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,(%r12)
cmpl   $0x1,0x8(%rsp)
je     1609 <dwt_encode_1_real+0x4f9>
movslq (%rsp),%r15
mov    0x8(%rsp),%r13d
mov    $0x3,%ebx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    -0x2(%rbx),%eax
cmp    %r15,%rbp
cltq
cmovg  %r14,%rax
mov    %r14,%rcx
cmovl  %rbx,%rcx
mov    (%r12,%rcx,4),%edi
add    (%r12,%rax,4),%edi
mov    $0xe31,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
add    %eax,-0x4(%r12,%rbx,4)
add    $0x1,%rbp
add    $0x2,%rbx
cmp    %rbp,%r13
jne    15d0 <dwt_encode_1_real+0x4c0>
mov    (%rsp),%rax
test   %eax,%eax
jle    163f <dwt_encode_1_real+0x52f>
mov    %eax,%ebx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x4(%r12,%rbp,8),%edi
mov    $0x13ae,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    %eax,0x4(%r12,%rbp,8)
add    $0x1,%rbp
cmp    %rbp,%rbx
jne    1620 <dwt_encode_1_real+0x510>
mov    0x8(%rsp),%rax
test   %eax,%eax
jle    166d <dwt_encode_1_real+0x55d>
mov    %eax,%ebx
xor    %ebp,%ebp
nopl   0x0(%rax)
mov    (%r12,%rbp,8),%edi
mov    $0x1a03,%esi
xor    %eax,%eax
call   1030 <fix_mul@plt>
mov    %eax,(%r12,%rbp,8)
add    $0x1,%rbp
cmp    %rbp,%rbx
jne    1650 <dwt_encode_1_real+0x540>
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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