int so3CoefLoc(int m, int mp, int l, int bw) {
  int k;
  int tmpA, tmpB;
  if (m >= 0) {
    if (mp >= 0) {
      tmpA = (6 * bw * bw + 3 * m - 2 * m * m - 1);
      tmpA *= m;
      tmpA /= 6;
      tmpB = 0;
      for (k = 0; k < mp; k++)
        tmpB += ((bw) - (((m)) > ((k)) ? ((m)) : ((k))));
      tmpA += tmpB;
      tmpA += (l - ((m) > (mp) ? (m) : (mp)));
    } else {
      tmpA = -(m * (1 + m) * (1 + 2 * m)) / 6;
      tmpA += bw * bw * (1 + m);
      tmpB = 0;
      for (k = mp; k < 0; k++)
        tmpB += ((bw) - (((m)) > ((-k)) ? ((m)) : ((-k))));
      tmpA -= tmpB;
      tmpA += (l - ((m) > (-mp) ? (m) : (-mp)));
    }
  } else {
    if (mp >= 0) {
      tmpA = (4 * bw * bw * bw - bw) / 3;
      tmpB = (-m) * (1 - m) * (1 - 2 * m);
      tmpB /= -6;
      tmpB += bw * bw * (-m);
      tmpA -= tmpB;
      tmpB = 0;
      for (k = 0; k < mp; k++)
        tmpB += ((bw) - (((-m)) > ((k)) ? ((-m)) : ((k))));
      tmpA += tmpB;
      tmpA += (l - ((-m) > (mp) ? (-m) : (mp)));
    } else {
      tmpA = (4 * bw * bw * bw - bw) / 3;
      tmpB = ((-m) - 1) * (6 * bw * bw - m - 2 * (m * m));
      tmpB /= 6;
      tmpA -= tmpB;
      tmpB = 0;
      for (k = mp; k < 0; k++)
        tmpB += ((bw) - (((-m)) > ((-k)) ? ((-m)) : ((-k))));
      tmpA -= tmpB;
      tmpA += (l - ((-m) > (-mp) ? (-m) : (-mp)));
    }
  }
  return tmpA;
}


x86 assembly (clang, -O0):
<so3CoefLoc>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
cmpl   $0x0,-0x4(%rbp)
jl     12d4 <so3CoefLoc+0x1d4>
cmpl   $0x0,-0x8(%rbp)
jl     11f4 <so3CoefLoc+0xf4>
imul   $0x6,-0x10(%rbp),%eax
imul   -0x10(%rbp),%eax
imul   $0x3,-0x4(%rbp),%ecx
add    %ecx,%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
imul   -0x4(%rbp),%ecx
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x4(%rbp),%eax
imul   -0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
mov    $0x6,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    11b5 <so3CoefLoc+0xb5>
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x4(%rbp),%eax
cmp    -0x14(%rbp),%eax
jle    1193 <so3CoefLoc+0x93>
mov    -0x4(%rbp),%eax
mov    %eax,-0x24(%rbp)
jmp    1199 <so3CoefLoc+0x99>
mov    -0x14(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x24(%rbp),%ecx
sub    %ecx,%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    116a <so3CoefLoc+0x6a>
mov    -0x1c(%rbp),%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x4(%rbp),%eax
cmp    -0x8(%rbp),%eax
jle    11db <so3CoefLoc+0xdb>
mov    -0x4(%rbp),%eax
mov    %eax,-0x2c(%rbp)
jmp    11e1 <so3CoefLoc+0xe1>
mov    -0x8(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x2c(%rbp),%ecx
sub    %ecx,%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    12cf <so3CoefLoc+0x1cf>
mov    -0x4(%rbp),%ecx
mov    -0x4(%rbp),%eax
add    $0x1,%eax
imul   %eax,%ecx
mov    -0x4(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
imul   %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    $0x6,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
mov    -0x10(%rbp),%eax
imul   -0x10(%rbp),%eax
mov    -0x4(%rbp),%ecx
add    $0x1,%ecx
imul   %ecx,%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
jge    128d <so3CoefLoc+0x18d>
mov    -0x10(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x4(%rbp),%eax
xor    %ecx,%ecx
sub    -0x14(%rbp),%ecx
cmp    %ecx,%eax
jle    1269 <so3CoefLoc+0x169>
mov    -0x4(%rbp),%eax
mov    %eax,-0x34(%rbp)
jmp    1271 <so3CoefLoc+0x171>
xor    %eax,%eax
sub    -0x14(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x34(%rbp),%ecx
sub    %ecx,%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    123e <so3CoefLoc+0x13e>
mov    -0x1c(%rbp),%ecx
mov    -0x18(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x4(%rbp),%eax
xor    %ecx,%ecx
sub    -0x8(%rbp),%ecx
cmp    %ecx,%eax
jle    12b9 <so3CoefLoc+0x1b9>
mov    -0x4(%rbp),%eax
mov    %eax,-0x3c(%rbp)
jmp    12c1 <so3CoefLoc+0x1c1>
xor    %eax,%eax
sub    -0x8(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x3c(%rbp),%ecx
sub    %ecx,%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    14f0 <so3CoefLoc+0x3f0>
cmpl   $0x0,-0x8(%rbp)
jl     13eb <so3CoefLoc+0x2eb>
mov    -0x10(%rbp),%eax
shl    $0x2,%eax
imul   -0x10(%rbp),%eax
imul   -0x10(%rbp),%eax
sub    -0x10(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
mov    $0x1,%ecx
sub    -0x4(%rbp),%ecx
imul   %ecx,%eax
mov    -0x4(%rbp),%edx
shl    $0x1,%edx
mov    $0x1,%ecx
sub    %edx,%ecx
imul   %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0xfffffffa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%eax
imul   -0x10(%rbp),%eax
xor    %ecx,%ecx
sub    -0x4(%rbp),%ecx
imul   %ecx,%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%ecx
mov    -0x18(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    13a8 <so3CoefLoc+0x2a8>
mov    -0x10(%rbp),%eax
mov    %eax,-0x40(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cmp    -0x14(%rbp),%eax
jle    1386 <so3CoefLoc+0x286>
xor    %eax,%eax
sub    -0x4(%rbp),%eax
mov    %eax,-0x44(%rbp)
jmp    138c <so3CoefLoc+0x28c>
mov    -0x14(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x40(%rbp),%eax
mov    -0x44(%rbp),%ecx
sub    %ecx,%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1359 <so3CoefLoc+0x259>
mov    -0x1c(%rbp),%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x48(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cmp    -0x8(%rbp),%eax
jle    13d2 <so3CoefLoc+0x2d2>
xor    %eax,%eax
sub    -0x4(%rbp),%eax
mov    %eax,-0x4c(%rbp)
jmp    13d8 <so3CoefLoc+0x2d8>
mov    -0x8(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x48(%rbp),%eax
mov    -0x4c(%rbp),%ecx
sub    %ecx,%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    14eb <so3CoefLoc+0x3eb>
mov    -0x10(%rbp),%eax
shl    $0x2,%eax
imul   -0x10(%rbp),%eax
imul   -0x10(%rbp),%eax
sub    -0x10(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
sub    $0x1,%eax
imul   $0x6,-0x10(%rbp),%ecx
imul   -0x10(%rbp),%ecx
sub    -0x4(%rbp),%ecx
mov    -0x4(%rbp),%edx
imul   -0x4(%rbp),%edx
shl    $0x1,%edx
sub    %edx,%ecx
imul   %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x6,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%ecx
mov    -0x18(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
jge    14a5 <so3CoefLoc+0x3a5>
mov    -0x10(%rbp),%eax
mov    %eax,-0x50(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
xor    %ecx,%ecx
sub    -0x14(%rbp),%ecx
cmp    %ecx,%eax
jle    1481 <so3CoefLoc+0x381>
xor    %eax,%eax
sub    -0x4(%rbp),%eax
mov    %eax,-0x54(%rbp)
jmp    1489 <so3CoefLoc+0x389>
xor    %eax,%eax
sub    -0x14(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x50(%rbp),%eax
mov    -0x54(%rbp),%ecx
sub    %ecx,%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1452 <so3CoefLoc+0x352>
mov    -0x1c(%rbp),%ecx
mov    -0x18(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x58(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
xor    %ecx,%ecx
sub    -0x8(%rbp),%ecx
cmp    %ecx,%eax
jle    14d5 <so3CoefLoc+0x3d5>
xor    %eax,%eax
sub    -0x4(%rbp),%eax
mov    %eax,-0x5c(%rbp)
jmp    14dd <so3CoefLoc+0x3dd>
xor    %eax,%eax
sub    -0x8(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    -0x5c(%rbp),%ecx
sub    %ecx,%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    14f0 <so3CoefLoc+0x3f0>
mov    -0x18(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<so3CoefLoc>:
push   %rbp
push   %rbx
mov    %edx,%eax
test   %edi,%edi
js     130e <so3CoefLoc+0x20e>
test   %esi,%esi
js     154d <so3CoefLoc+0x44d>
mov    %ecx,%edx
imul   %edx,%edx
lea    (%rdx,%rdx,2),%edx
mov    $0x3,%ebx
sub    %edi,%ebx
sub    %edi,%ebx
imul   %edi,%ebx
lea    (%rbx,%rdx,2),%edx
add    $0xffffffff,%edx
imul   %edi,%edx
movslq %edx,%rdx
imul   $0x2aaaaaab,%rdx,%r8
mov    %r8,%rdx
shr    $0x3f,%rdx
shr    $0x20,%r8
add    %edx,%r8d
xor    %ebp,%ebp
test   %esi,%esi
je     1302 <so3CoefLoc+0x202>
mov    $0x0,%edx
cmp    $0x8,%esi
jb     12f0 <so3CoefLoc+0x1f0>
mov    %esi,%edx
and    $0xfffffff8,%edx
movd   %edi,%xmm0
pshufd $0x0,%xmm0,%xmm14
movd   %ecx,%xmm0
pshufd $0x0,%xmm0,%xmm8
lea    -0x8(%rdx),%ebp
mov    %ebp,%r9d
shr    $0x3,%r9d
add    $0x1,%r9d
test   %ebp,%ebp
je     197f <so3CoefLoc+0x87f>
mov    %r9d,%ebp
and    $0xfffffffe,%ebp
movdqa %xmm8,%xmm13
paddd  %xmm8,%xmm13
movdqa 0xe58(%rip),%xmm2
pxor   %xmm1,%xmm1
movdqa 0xe5b(%rip),%xmm9
movdqa 0xe62(%rip),%xmm10
movdqa 0xe69(%rip),%xmm11
movdqa 0xe70(%rip),%xmm12
pxor   %xmm3,%xmm3
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movdqa %xmm2,%xmm4
paddd  %xmm9,%xmm4
movdqa %xmm2,%xmm7
pcmpgtd %xmm14,%xmm7
movdqa %xmm2,%xmm0
pand   %xmm7,%xmm0
pandn  %xmm14,%xmm7
por    %xmm0,%xmm7
movdqa %xmm4,%xmm0
pcmpgtd %xmm14,%xmm0
pand   %xmm0,%xmm4
pandn  %xmm14,%xmm0
por    %xmm4,%xmm0
movdqa %xmm2,%xmm5
paddd  %xmm10,%xmm5
movdqa %xmm2,%xmm6
paddd  %xmm11,%xmm6
movdqa %xmm5,%xmm4
pcmpgtd %xmm14,%xmm4
pand   %xmm4,%xmm5
pandn  %xmm14,%xmm4
por    %xmm5,%xmm4
paddd  %xmm7,%xmm4
movdqa %xmm6,%xmm5
pcmpgtd %xmm14,%xmm5
pand   %xmm5,%xmm6
pandn  %xmm14,%xmm5
por    %xmm6,%xmm5
paddd  %xmm0,%xmm5
paddd  %xmm13,%xmm1
psubd  %xmm4,%xmm1
paddd  %xmm13,%xmm3
psubd  %xmm5,%xmm3
paddd  %xmm12,%xmm2
add    $0xfffffffe,%ebp
jne    11e0 <so3CoefLoc+0xe0>
test   $0x1,%r9b
je     12cf <so3CoefLoc+0x1cf>
movdqa 0xd83(%rip),%xmm0
paddd  %xmm2,%xmm0
movdqa %xmm2,%xmm4
pcmpgtd %xmm14,%xmm4
pand   %xmm4,%xmm2
pandn  %xmm14,%xmm4
por    %xmm2,%xmm4
movdqa %xmm0,%xmm2
pcmpgtd %xmm14,%xmm2
pand   %xmm2,%xmm0
pandn  %xmm14,%xmm2
por    %xmm0,%xmm2
paddd  %xmm8,%xmm1
psubd  %xmm4,%xmm1
paddd  %xmm8,%xmm3
psubd  %xmm2,%xmm3
paddd  %xmm3,%xmm1
pshufd $0xee,%xmm1,%xmm0
paddd  %xmm1,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%ebp
cmp    %esi,%edx
je     1302 <so3CoefLoc+0x202>
nopl   (%rax)
cmp    %edi,%edx
mov    %edx,%ebx
cmovl  %edi,%ebx
add    %ecx,%ebp
sub    %ebx,%ebp
add    $0x1,%edx
cmp    %edx,%esi
jne    12f0 <so3CoefLoc+0x1f0>
cmp    %esi,%edi
cmovg  %edi,%esi
sub    %esi,%eax
jmp    1543 <so3CoefLoc+0x443>
mov    %ecx,%r9d
imul   %r9d,%r9d
mov    %r9d,%r8d
imul   %ecx,%r8d
shl    $0x2,%r8d
sub    %ecx,%r8d
test   %esi,%esi
js     177e <so3CoefLoc+0x67e>
mov    %edi,%r11d
neg    %r11d
movslq %r8d,%rbp
imul   $0x55555556,%rbp,%r8
mov    %r8,%rbp
shr    $0x3f,%rbp
shr    $0x20,%r8
add    %ebp,%r8d
mov    $0x1,%ebp
mov    $0x1,%ebx
sub    %edi,%ebx
imul   %r11d,%ebx
sub    %edi,%ebp
sub    %edi,%ebp
imul   %ebx,%ebp
movslq %ebp,%rdx
imul   $0x2aaaaaab,%rdx,%r10
mov    %r10,%rdx
shr    $0x3f,%rdx
shr    $0x20,%r10
add    %edx,%r10d
imul   %edi,%r9d
xor    %ebp,%ebp
test   %esi,%esi
je     1534 <so3CoefLoc+0x434>
mov    $0x0,%edi
cmp    $0x8,%esi
jb     1520 <so3CoefLoc+0x420>
mov    %esi,%edi
and    $0xfffffff8,%edi
movd   %r11d,%xmm0
pshufd $0x0,%xmm0,%xmm14
movd   %ecx,%xmm0
pshufd $0x0,%xmm0,%xmm8
lea    -0x8(%rdi),%edx
mov    %edx,%ebp
shr    $0x3,%ebp
add    $0x1,%ebp
test   %edx,%edx
je     19b4 <so3CoefLoc+0x8b4>
mov    %ebp,%ebx
and    $0xfffffffe,%ebx
movdqa %xmm8,%xmm13
paddd  %xmm8,%xmm13
movdqa 0xc28(%rip),%xmm2
pxor   %xmm1,%xmm1
movdqa 0xc2b(%rip),%xmm9
movdqa 0xc32(%rip),%xmm10
movdqa 0xc39(%rip),%xmm11
movdqa 0xc40(%rip),%xmm12
pxor   %xmm3,%xmm3
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movdqa %xmm2,%xmm4
paddd  %xmm9,%xmm4
movdqa %xmm2,%xmm7
pcmpgtd %xmm14,%xmm7
movdqa %xmm2,%xmm0
pand   %xmm7,%xmm0
pandn  %xmm14,%xmm7
por    %xmm0,%xmm7
movdqa %xmm4,%xmm0
pcmpgtd %xmm14,%xmm0
pand   %xmm0,%xmm4
pandn  %xmm14,%xmm0
por    %xmm4,%xmm0
movdqa %xmm2,%xmm5
paddd  %xmm10,%xmm5
movdqa %xmm2,%xmm6
paddd  %xmm11,%xmm6
movdqa %xmm5,%xmm4
pcmpgtd %xmm14,%xmm4
pand   %xmm4,%xmm5
pandn  %xmm14,%xmm4
por    %xmm5,%xmm4
paddd  %xmm7,%xmm4
movdqa %xmm6,%xmm5
pcmpgtd %xmm14,%xmm5
pand   %xmm5,%xmm6
pandn  %xmm14,%xmm5
por    %xmm6,%xmm5
paddd  %xmm0,%xmm5
paddd  %xmm13,%xmm1
psubd  %xmm4,%xmm1
paddd  %xmm13,%xmm3
psubd  %xmm5,%xmm3
paddd  %xmm12,%xmm2
add    $0xfffffffe,%ebx
jne    1410 <so3CoefLoc+0x310>
test   $0x1,%bpl
je     14ff <so3CoefLoc+0x3ff>
movdqa 0xb53(%rip),%xmm0
paddd  %xmm2,%xmm0
movdqa %xmm2,%xmm4
pcmpgtd %xmm14,%xmm4
pand   %xmm4,%xmm2
pandn  %xmm14,%xmm4
por    %xmm2,%xmm4
movdqa %xmm0,%xmm2
pcmpgtd %xmm14,%xmm2
pand   %xmm2,%xmm0
pandn  %xmm14,%xmm2
por    %xmm0,%xmm2
paddd  %xmm8,%xmm1
psubd  %xmm4,%xmm1
paddd  %xmm8,%xmm3
psubd  %xmm2,%xmm3
paddd  %xmm3,%xmm1
pshufd $0xee,%xmm1,%xmm0
paddd  %xmm1,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%ebp
cmp    %esi,%edi
je     1534 <so3CoefLoc+0x434>
nopl   (%rax)
cmp    %r11d,%edi
mov    %edi,%edx
cmovl  %r11d,%edx
add    %ecx,%ebp
sub    %edx,%ebp
add    $0x1,%edi
cmp    %edi,%esi
jne    1520 <so3CoefLoc+0x420>
cmp    %esi,%r11d
cmovg  %r11d,%esi
sub    %esi,%eax
add    %r10d,%eax
add    %r9d,%eax
add    %r8d,%eax
add    %ebp,%eax
jmp    197c <so3CoefLoc+0x87c>
lea    0x1(%rdi),%r8d
mov    %r8d,%edx
imul   %edi,%edx
lea    (%rdi,%rdi,1),%r10d
not    %r10d
imul   %edx,%r10d
mov    %ecx,%r9d
imul   %ecx,%r9d
mov    %esi,%edx
neg    %edx
xor    %ebx,%ebx
cmp    $0x8,%edx
jb     1731 <so3CoefLoc+0x631>
mov    %edx,%r11d
and    $0xfffffff8,%r11d
movd   %esi,%xmm0
pshufd $0x0,%xmm0,%xmm15
paddd  0xa6e(%rip),%xmm15
movd   %edi,%xmm0
pshufd $0x0,%xmm0,%xmm13
movd   %ecx,%xmm0
pshufd $0x0,%xmm0,%xmm8
lea    -0x8(%r11),%ebp
mov    %ebp,%ebx
shr    $0x3,%ebx
add    $0x1,%ebx
test   %ebp,%ebp
je     199e <so3CoefLoc+0x89e>
mov    %ebx,%ebp
and    $0xfffffffe,%ebp
movdqa %xmm8,%xmm14
paddd  %xmm8,%xmm14
pxor   %xmm1,%xmm1
movdqa 0xa7a(%rip),%xmm9
movdqa 0xa81(%rip),%xmm10
movdqa 0xa88(%rip),%xmm12
movdqa 0xa4f(%rip),%xmm11
pxor   %xmm4,%xmm4
cs nopw 0x0(%rax,%rax,1)
nop
pxor   %xmm7,%xmm7
psubd  %xmm15,%xmm7
movdqa %xmm9,%xmm6
psubd  %xmm15,%xmm6
movdqa %xmm13,%xmm2
pcmpgtd %xmm7,%xmm2
movdqa %xmm13,%xmm5
pand   %xmm2,%xmm5
pandn  %xmm7,%xmm2
por    %xmm5,%xmm2
movdqa %xmm6,%xmm5
pcmpgtd %xmm13,%xmm5
pand   %xmm5,%xmm6
pandn  %xmm13,%xmm5
por    %xmm6,%xmm5
movdqa %xmm10,%xmm6
psubd  %xmm15,%xmm6
movdqa %xmm12,%xmm7
psubd  %xmm15,%xmm7
movdqa %xmm13,%xmm0
pcmpgtd %xmm6,%xmm0
movdqa %xmm13,%xmm3
pand   %xmm0,%xmm3
pandn  %xmm6,%xmm0
por    %xmm3,%xmm0
paddd  %xmm2,%xmm0
movdqa %xmm7,%xmm2
pcmpgtd %xmm13,%xmm2
pand   %xmm2,%xmm7
pandn  %xmm13,%xmm2
por    %xmm7,%xmm2
paddd  %xmm5,%xmm2
paddd  %xmm14,%xmm1
psubd  %xmm0,%xmm1
paddd  %xmm14,%xmm4
psubd  %xmm2,%xmm4
paddd  %xmm11,%xmm15
add    $0xfffffffe,%ebp
jne    1600 <so3CoefLoc+0x500>
test   $0x1,%bl
je     170c <so3CoefLoc+0x60c>
pxor   %xmm0,%xmm0
psubd  %xmm15,%xmm0
movdqa 0x98b(%rip),%xmm2
psubd  %xmm15,%xmm2
movdqa %xmm13,%xmm3
pcmpgtd %xmm0,%xmm3
movdqa %xmm13,%xmm5
pand   %xmm3,%xmm5
pandn  %xmm0,%xmm3
por    %xmm5,%xmm3
movdqa %xmm2,%xmm0
pcmpgtd %xmm13,%xmm0
pand   %xmm0,%xmm2
pandn  %xmm13,%xmm0
por    %xmm2,%xmm0
paddd  %xmm8,%xmm1
psubd  %xmm3,%xmm1
paddd  %xmm8,%xmm4
psubd  %xmm0,%xmm4
paddd  %xmm4,%xmm1
pshufd $0xee,%xmm1,%xmm0
paddd  %xmm1,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%ebx
cmp    %edx,%r11d
je     1750 <so3CoefLoc+0x650>
add    %esi,%r11d
mov    %r11d,%esi
neg    %esi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmp    %edi,%esi
mov    %esi,%ebp
cmovl  %edi,%ebp
add    %ecx,%ebx
sub    %ebp,%ebx
add    $0xffffffff,%esi
jne    1740 <so3CoefLoc+0x640>
movslq %r10d,%rcx
imul   $0x2aaaaaab,%rcx,%rcx
mov    %rcx,%rsi
shr    $0x3f,%rsi
shr    $0x20,%rcx
add    %esi,%ecx
imul   %r8d,%r9d
cmp    %edi,%edx
cmovl  %edi,%edx
sub    %edx,%eax
add    %ecx,%eax
add    %r9d,%eax
sub    %ebx,%eax
jmp    197c <so3CoefLoc+0x87c>
mov    %edi,%edx
not    %edx
add    %r9d,%r9d
lea    (%r9,%r9,2),%r9d
mov    %edi,%ebp
imul   %ebp,%ebp
lea    (%rdi,%rbp,2),%ebp
sub    %ebp,%r9d
imul   %edx,%r9d
mov    %esi,%r10d
neg    %r10d
xor    %ebp,%ebp
mov    %esi,%edx
cmp    $0x8,%r10d
jb     1930 <so3CoefLoc+0x830>
mov    %r10d,%edx
and    $0xfffffff8,%edx
movd   %esi,%xmm0
pshufd $0x0,%xmm0,%xmm5
paddd  0x83d(%rip),%xmm5
movd   %edi,%xmm0
pshufd $0x0,%xmm0,%xmm7
movd   %ecx,%xmm0
pshufd $0x0,%xmm0,%xmm0
lea    -0x8(%rdx),%ebp
mov    %ebp,%r11d
shr    $0x3,%r11d
add    $0x1,%r11d
test   %ebp,%ebp
je     19d3 <so3CoefLoc+0x8d3>
mov    %r11d,%ebx
and    $0xfffffffe,%ebx
pxor   %xmm1,%xmm1
movdqa 0x812(%rip),%xmm8
movdqa 0x819(%rip),%xmm9
movdqa 0x820(%rip),%xmm10
movdqa 0x827(%rip),%xmm11
pxor   %xmm4,%xmm4
nopl   (%rax)
movdqa %xmm5,%xmm3
paddd  %xmm8,%xmm3
movdqa %xmm7,%xmm2
pcmpgtd %xmm5,%xmm2
movdqa %xmm5,%xmm6
pand   %xmm2,%xmm6
pandn  %xmm7,%xmm2
por    %xmm6,%xmm2
movdqa %xmm7,%xmm6
pcmpgtd %xmm3,%xmm6
pand   %xmm6,%xmm3
pandn  %xmm7,%xmm6
por    %xmm3,%xmm6
paddd  %xmm0,%xmm1
paddd  %xmm2,%xmm1
paddd  %xmm0,%xmm4
paddd  %xmm6,%xmm4
movdqa %xmm5,%xmm2
paddd  %xmm9,%xmm2
movdqa %xmm5,%xmm3
paddd  %xmm10,%xmm3
movdqa %xmm7,%xmm6
pcmpgtd %xmm2,%xmm6
pand   %xmm6,%xmm2
pandn  %xmm7,%xmm6
por    %xmm2,%xmm6
movdqa %xmm7,%xmm2
pcmpgtd %xmm3,%xmm2
pand   %xmm2,%xmm3
pandn  %xmm7,%xmm2
por    %xmm3,%xmm2
paddd  %xmm0,%xmm1
paddd  %xmm6,%xmm1
paddd  %xmm0,%xmm4
paddd  %xmm2,%xmm4
paddd  %xmm11,%xmm5
add    $0xfffffffe,%ebx
jne    1820 <so3CoefLoc+0x720>
test   $0x1,%r11b
je     1907 <so3CoefLoc+0x807>
movdqa 0x745(%rip),%xmm2
paddd  %xmm5,%xmm2
movdqa %xmm7,%xmm3
pcmpgtd %xmm5,%xmm3
pand   %xmm3,%xmm5
pandn  %xmm7,%xmm3
por    %xmm5,%xmm3
movdqa %xmm7,%xmm5
pcmpgtd %xmm2,%xmm5
pand   %xmm5,%xmm2
pandn  %xmm7,%xmm5
por    %xmm2,%xmm5
paddd  %xmm0,%xmm1
paddd  %xmm3,%xmm1
paddd  %xmm0,%xmm4
paddd  %xmm5,%xmm4
paddd  %xmm4,%xmm1
pshufd $0xee,%xmm1,%xmm0
paddd  %xmm1,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%ebp
cmp    %r10d,%edx
je     193f <so3CoefLoc+0x83f>
add    %esi,%edx
nopl   0x0(%rax,%rax,1)
cmp    %edi,%edx
mov    %edx,%ebx
cmovg  %edi,%ebx
add    %ecx,%ebp
add    %ebx,%ebp
inc    %edx
jne    1930 <so3CoefLoc+0x830>
movslq %r8d,%rcx
imul   $0x55555556,%rcx,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
shr    $0x20,%rcx
add    %edx,%ecx
movslq %r9d,%rdx
imul   $0xffffffffd5555555,%rdx,%rdx
mov    %rdx,%rbx
shr    $0x3f,%rbx
shr    $0x20,%rdx
add    %ebx,%edx
cmp    %edi,%esi
cmovg  %edi,%esi
add    %eax,%esi
add    %ecx,%esi
add    %edx,%esi
sub    %ebp,%esi
mov    %esi,%eax
pop    %rbx
pop    %rbp
ret
movdqa 0x679(%rip),%xmm2
pxor   %xmm1,%xmm1
pxor   %xmm3,%xmm3
test   $0x1,%r9b
jne    1285 <so3CoefLoc+0x185>
jmp    12cf <so3CoefLoc+0x1cf>
pxor   %xmm1,%xmm1
pxor   %xmm4,%xmm4
test   $0x1,%bl
jne    16b4 <so3CoefLoc+0x5b4>
jmp    170c <so3CoefLoc+0x60c>
movdqa 0x644(%rip),%xmm2
pxor   %xmm1,%xmm1
pxor   %xmm3,%xmm3
test   $0x1,%bpl
jne    14b5 <so3CoefLoc+0x3b5>
jmp    14ff <so3CoefLoc+0x3ff>
pxor   %xmm1,%xmm1
pxor   %xmm4,%xmm4
test   $0x1,%r11b
jne    18c3 <so3CoefLoc+0x7c3>
jmp    1907 <so3CoefLoc+0x807>

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

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