void indexx(n, arr, indx) float arr[];
int indx[], n;
{
  unsigned long i, indxt, ir = n, itemp, j, k, l = 1;
  int jstack = 0, *istack;
  float a;
  istack = ivector(1, 100000);
  for (j = 1; j <= n; j++)
    indx[j] = j;
  for (;;) {
    if (ir - l < 7) {
      for (j = l + 1; j <= ir; j++) {
        indxt = indx[j];
        a = arr[indxt];
        for (i = j - 1; i >= 1; i--) {
          if (arr[indx[i]] <= a)
            break;
          indx[i + 1] = indx[i];
        }
        indx[i + 1] = indxt;
      }
      if (jstack == 0)
        break;
      ir = istack[jstack--];
      l = istack[jstack--];
    } else {
      k = (l + ir) >> 1;
      itemp = (indx[k]);
      (indx[k]) = (indx[l + 1]);
      (indx[l + 1]) = itemp;
      ;
      if (arr[indx[l + 1]] > arr[indx[ir]]) {
        itemp = (indx[l + 1]);
        (indx[l + 1]) = (indx[ir]);
        (indx[ir]) = itemp;
      }
      if (arr[indx[l]] > arr[indx[ir]]) {
        itemp = (indx[l]);
        (indx[l]) = (indx[ir]);
        (indx[ir]) = itemp;
      }
      if (arr[indx[l + 1]] > arr[indx[l]]) {
        itemp = (indx[l + 1]);
        (indx[l + 1]) = (indx[l]);
        (indx[l]) = itemp;
      }
      i = l + 1;
      j = ir;
      indxt = indx[l];
      a = arr[indxt];
      for (;;) {
        do
          i++;
        while (arr[indx[i]] < a);
        do
          j--;
        while (arr[indx[j]] > a);
        if (j < i)
          break;
        itemp = (indx[i]);
        (indx[i]) = (indx[j]);
        (indx[j]) = itemp;
      }
      indx[l] = indx[j];
      indx[j] = indxt;
      jstack += 2;
      if (ir - i + 1 >= j - l) {
        istack[jstack] = ir;
        istack[jstack - 1] = i;
        ir = j - 1;
      } else {
        istack[jstack] = j - 1;
        istack[jstack - 1] = l;
        l = i;
      }
    }
  }
  free_ivector(istack, 1, 100000);
}


x86 assembly (clang, -O0):
<indexx>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
movslq -0x4(%rbp),%rax
mov    %rax,-0x30(%rbp)
movq   $0x1,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
mov    $0x1,%edi
mov    $0x186a0,%esi
mov    $0x0,%al
call   1040 <ivector@plt>
cltq
mov    %rax,-0x60(%rbp)
movq   $0x1,-0x40(%rbp)
mov    -0x40(%rbp),%rax
movslq -0x4(%rbp),%rcx
cmp    %rcx,%rax
ja     119c <indexx+0x7c>
mov    -0x40(%rbp),%rax
mov    %eax,%edx
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
jmp    1169 <indexx+0x49>
jmp    11a1 <indexx+0x81>
mov    -0x30(%rbp),%rax
sub    -0x50(%rbp),%rax
cmp    $0x7,%rax
jae    12c1 <indexx+0x1a1>
mov    -0x50(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x30(%rbp),%rax
ja     1279 <indexx+0x159>
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x40(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x20(%rbp)
cmpq   $0x1,-0x20(%rbp)
jb     1256 <indexx+0x136>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x64(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     122e <indexx+0x10e>
jmp    1256 <indexx+0x136>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x20(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x20(%rbp)
jmp    11fb <indexx+0xdb>
mov    -0x28(%rbp),%rax
mov    %eax,%edx
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
jmp    11bf <indexx+0x9f>
cmpl   $0x0,-0x54(%rbp)
jne    1288 <indexx+0x168>
jmp    15ed <indexx+0x4cd>
mov    -0x60(%rbp),%rax
mov    -0x54(%rbp),%ecx
mov    %ecx,%edx
add    $0xffffffff,%edx
mov    %edx,-0x54(%rbp)
movslq %ecx,%rcx
movslq (%rax,%rcx,4),%rax
mov    %rax,-0x30(%rbp)
mov    -0x60(%rbp),%rax
mov    -0x54(%rbp),%ecx
mov    %ecx,%edx
add    $0xffffffff,%edx
mov    %edx,-0x54(%rbp)
movslq %ecx,%rcx
movslq (%rax,%rcx,4),%rax
mov    %rax,-0x50(%rbp)
jmp    15e8 <indexx+0x4c8>
mov    -0x50(%rbp),%rax
add    -0x30(%rbp),%rax
shr    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x48(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    0x4(%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
mov    -0x48(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x38(%rbp),%rax
mov    %eax,%edx
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x50(%rbp),%rdx
movslq 0x4(%rcx,%rdx,4),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x30(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
ucomiss (%rax,%rcx,4),%xmm0
jbe    1373 <indexx+0x253>
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
movslq 0x4(%rax,%rcx,4),%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x38(%rbp),%rax
mov    %eax,%edx
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x50(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x30(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
ucomiss (%rax,%rcx,4),%xmm0
jbe    13d9 <indexx+0x2b9>
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x38(%rbp),%rax
mov    %eax,%edx
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x50(%rbp),%rdx
movslq 0x4(%rcx,%rdx,4),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x50(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
ucomiss (%rax,%rcx,4),%xmm0
jbe    1442 <indexx+0x322>
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
movslq 0x4(%rax,%rcx,4),%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    %edx,0x4(%rax,%rcx,4)
mov    -0x38(%rbp),%rax
mov    %eax,%edx
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x50(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x64(%rbp)
jmp    147d <indexx+0x35d>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x64(%rbp),%xmm0
ucomiss %xmm1,%xmm0
ja     147d <indexx+0x35d>
jmp    14b1 <indexx+0x391>
mov    -0x40(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x40(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movss  (%rax,%rcx,4),%xmm0
ucomiss -0x64(%rbp),%xmm0
ja     14b1 <indexx+0x391>
mov    -0x40(%rbp),%rax
cmp    -0x20(%rbp),%rax
jae    14ef <indexx+0x3cf>
jmp    152b <indexx+0x40b>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x38(%rbp),%rax
mov    %eax,%edx
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1478 <indexx+0x358>
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
mov    %eax,%edx
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x54(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x54(%rbp)
mov    -0x30(%rbp),%rax
sub    -0x20(%rbp),%rax
add    $0x1,%rax
mov    -0x40(%rbp),%rcx
sub    -0x50(%rbp),%rcx
cmp    %rcx,%rax
jb     15b0 <indexx+0x490>
mov    -0x30(%rbp),%rax
mov    %eax,%edx
mov    -0x60(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%rax
mov    %eax,%edx
mov    -0x60(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x40(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    15e3 <indexx+0x4c3>
mov    -0x40(%rbp),%rax
sub    $0x1,%rax
mov    %eax,%edx
mov    -0x60(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x50(%rbp),%rax
mov    %eax,%edx
mov    -0x60(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%rax
mov    %rax,-0x50(%rbp)
jmp    15e8 <indexx+0x4c8>
jmp    11a1 <indexx+0x81>
mov    -0x60(%rbp),%rdi
mov    $0x1,%esi
mov    $0x186a0,%edx
mov    $0x0,%al
call   1030 <free_ivector@plt>
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<indexx>:
push   %r15
push   %r14
push   %r12
push   %rbx
push   %rax
mov    %rdx,%rbx
mov    %rsi,%r14
movslq %edi,%r15
xor    %r12d,%r12d
mov    $0x1,%edi
mov    $0x186a0,%esi
xor    %eax,%eax
call   1040 <ivector@plt>
test   %r15d,%r15d
je     12cc <indexx+0x1ac>
cmp    $0x2,%r15
mov    $0x1,%edx
mov    $0x1,%r8d
cmovae %r15,%r8
cmp    $0x8,%r8
jb     12b6 <indexx+0x196>
mov    %r8,%rdx
and    $0xfffffffffffffff8,%rdx
lea    -0x8(%rdx),%rdi
mov    %rdi,%rsi
shr    $0x3,%rsi
add    $0x1,%rsi
mov    %esi,%ecx
and    $0x3,%ecx
cmp    $0x18,%rdi
jae    119b <indexx+0x7b>
movdqa 0xe6c(%rip),%xmm0
xor    %edi,%edi
jmp    1269 <indexx+0x149>
and    $0xfffffffffffffffc,%rsi
movdqa 0xe59(%rip),%xmm0
xor    %edi,%edi
movdqa 0xe5e(%rip),%xmm8
movdqa 0xe65(%rip),%xmm9
movdqa 0xe6c(%rip),%xmm10
movdqa 0xe74(%rip),%xmm4
movdqa 0xe7c(%rip),%xmm5
movdqa 0xe84(%rip),%xmm6
movdqa 0xe8c(%rip),%xmm7
movdqa 0xe94(%rip),%xmm1
nopl   0x0(%rax)
movdqa %xmm0,%xmm2
paddd  %xmm8,%xmm2
movdqu %xmm0,0x4(%rbx,%rdi,4)
movdqu %xmm2,0x14(%rbx,%rdi,4)
movdqa %xmm0,%xmm2
paddd  %xmm9,%xmm2
movdqa %xmm0,%xmm3
paddd  %xmm10,%xmm3
movdqu %xmm2,0x24(%rbx,%rdi,4)
movdqu %xmm3,0x34(%rbx,%rdi,4)
movdqa %xmm0,%xmm2
paddd  %xmm4,%xmm2
movdqa %xmm0,%xmm3
paddd  %xmm5,%xmm3
movdqu %xmm2,0x44(%rbx,%rdi,4)
movdqu %xmm3,0x54(%rbx,%rdi,4)
movdqa %xmm0,%xmm2
paddd  %xmm6,%xmm2
movdqa %xmm0,%xmm3
paddd  %xmm7,%xmm3
movdqu %xmm2,0x64(%rbx,%rdi,4)
movdqu %xmm3,0x74(%rbx,%rdi,4)
add    $0x20,%rdi
paddd  %xmm1,%xmm0
add    $0xfffffffffffffffc,%rsi
jne    11f0 <indexx+0xd0>
test   %rcx,%rcx
je     12ad <indexx+0x18d>
movdqa 0xd9a(%rip),%xmm1
movdqa 0xda2(%rip),%xmm2
xchg   %ax,%ax
lea    0x0(,%rdi,4),%rsi
movdqa %xmm0,%xmm3
paddd  %xmm1,%xmm3
or     $0x4,%rsi
movdqu %xmm0,(%rbx,%rsi,1)
movdqu %xmm3,0x10(%rbx,%rsi,1)
add    $0x8,%rdi
paddd  %xmm2,%xmm0
add    $0xffffffffffffffff,%rcx
jne    1280 <indexx+0x160>
cmp    %rdx,%r8
je     12cc <indexx+0x1ac>
or     $0x1,%rdx
add    $0x1,%r8
nopw   0x0(%rax,%rax,1)
mov    %edx,(%rbx,%rdx,4)
add    $0x1,%rdx
cmp    %rdx,%r8
jne    12c0 <indexx+0x1a0>
movslq %eax,%rdi
mov    $0x1,%r11d
jmp    12f0 <indexx+0x1d0>
nopw   0x0(%rax,%rax,1)
mov    %r15d,(%rdi,%r10,4)
mov    %eax,0x4(%rdi,%r9,4)
add    $0xffffffffffffffff,%rcx
mov    %rcx,%r15
lea    0x1(%r15),%r8
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %r12d,%r9d
mov    %r15,%rax
sub    %r11,%rax
cmp    $0x6,%rax
jbe    1436 <indexx+0x316>
lea    (%r11,%r15,1),%rcx
and    $0xfffffffffffffffe,%rcx
movslq (%rbx,%rcx,2),%rax
mov    0x4(%rbx,%r11,4),%edx
mov    %edx,(%rbx,%rcx,2)
mov    %eax,0x4(%rbx,%r11,4)
movss  (%r14,%rax,4),%xmm0
movslq (%rbx,%r15,4),%rcx
movss  (%r14,%rcx,4),%xmm1
ucomiss %xmm1,%xmm0
jbe    1350 <indexx+0x230>
mov    %ecx,0x4(%rbx,%r11,4)
mov    %eax,(%rbx,%r15,4)
jmp    1355 <indexx+0x235>
nopl   0x0(%rax)
movaps %xmm1,%xmm0
mov    %ecx,%eax
movslq (%rbx,%r11,4),%r10
movss  (%r14,%r10,4),%xmm1
ucomiss %xmm0,%xmm1
jbe    1376 <indexx+0x256>
mov    %eax,(%rbx,%r11,4)
mov    %r10d,(%rbx,%r15,4)
movslq (%rbx,%r11,4),%r10
movss  (%r14,%r10,4),%xmm1
movslq 0x4(%rbx,%r11,4),%rax
movss  (%r14,%rax,4),%xmm0
ucomiss %xmm1,%xmm0
jbe    13a0 <indexx+0x280>
mov    %r10d,0x4(%rbx,%r11,4)
mov    %eax,(%rbx,%r11,4)
mov    %eax,%r10d
jmp    13a3 <indexx+0x283>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movaps %xmm1,%xmm0
lea    0x1(%r11),%rax
mov    %r15,%rcx
nopw   0x0(%rax,%rax,1)
movslq 0x4(%rbx,%rax,4),%rsi
add    $0x1,%rax
ucomiss (%r14,%rsi,4),%xmm0
ja     13b0 <indexx+0x290>
movslq -0x4(%rbx,%rcx,4),%rdx
add    $0xffffffffffffffff,%rcx
movss  (%r14,%rdx,4),%xmm1
ucomiss %xmm0,%xmm1
ja     13c0 <indexx+0x2a0>
cmp    %rax,%rcx
jb     13f0 <indexx+0x2d0>
mov    %edx,(%rbx,%rax,4)
mov    %esi,(%rbx,%rcx,4)
jmp    13b0 <indexx+0x290>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %edx,(%rbx,%r11,4)
mov    %r10d,(%rbx,%rcx,4)
lea    0x2(%r9),%r12d
mov    %r8,%rdx
sub    %rax,%rdx
mov    %rcx,%rsi
sub    %r11,%rsi
movslq %r12d,%r10
movslq %r9d,%r9
cmp    %rsi,%rdx
jae    12e0 <indexx+0x1c0>
add    $0xffffffff,%ecx
mov    %ecx,(%rdi,%r10,4)
mov    %r11d,0x4(%rdi,%r9,4)
mov    %rax,%r11
jmp    1300 <indexx+0x1e0>
nopl   0x0(%rax,%rax,1)
xor    %ecx,%ecx
mov    %eax,0x4(%rbx,%rcx,4)
lea    0x1(%r11),%rax
cmp    %r15,%rax
ja     1480 <indexx+0x360>
mov    %r11,%rcx
mov    %rax,%r11
movslq (%rbx,%rax,4),%rax
test   %rcx,%rcx
je     1430 <indexx+0x310>
movss  (%r14,%rax,4),%xmm0
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movslq (%rbx,%rcx,4),%rdx
ucomiss (%r14,%rdx,4),%xmm0
jae    1432 <indexx+0x312>
mov    %edx,0x4(%rbx,%rcx,4)
add    $0xffffffffffffffff,%rcx
jne    1460 <indexx+0x340>
jmp    1430 <indexx+0x310>
nopw   0x0(%rax,%rax,1)
test   %r9d,%r9d
je     149d <indexx+0x37d>
movslq %r9d,%rax
movslq (%rdi,%rax,4),%r15
add    $0xfffffffe,%r9d
movslq -0x4(%rdi,%rax,4),%r11
mov    %r9d,%r12d
jmp    12f0 <indexx+0x1d0>
mov    $0x1,%esi
mov    $0x186a0,%edx
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
jmp    1030 <free_ivector@plt>

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

LLVM IR (-O2):
define void @indexx(i32 %0, float* nocapture %1, i32* nocapture %2) {
%4 = sext i32 %0 to i64
%5 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @ivector to i32 (i32, i32, ...)*)(i32 1, i32 100000)
%6 = sext i32 %5 to i64
%7 = inttoptr i64 %6 to i32*
%8 = icmp eq i32 %0, 0
br i1 %8, label %85, label %9
9: ; preds = %3
%10 = call i64 @llvm.umax.i64(i64 %4, i64 1)
%11 = icmp ult i64 %10, 8
br i1 %11, label %77, label %12
12: ; preds = %9
%13 = and i64 %10, -8
%14 = or i64 %13, 1
%15 = add i64 %13, -8
%16 = lshr exact i64 %15, 3
%17 = add nuw nsw i64 %16, 1
%18 = and i64 %17, 3
%19 = icmp ult i64 %15, 24
br i1 %19, label %57, label %20
20: ; preds = %12
%21 = and i64 %17, 4611686018427387900
br label %22
22: ; preds = %22, %20
%23 = phi i64 [ 0, %20 ], [ %53, %22 ]
%24 = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %20 ], [ %54, %22 ]
%25 = phi i64 [ 0, %20 ], [ %55, %22 ]
%26 = or i64 %23, 1
%27 = add <4 x i32> %24, <i32 4, i32 4, i32 4, i32 4>
%28 = getelementptr inbounds i32, i32* %2, i64 %26
%29 = bitcast i32* %28 to <4 x i32>*
store <4 x i32> %24, <4 x i32>* %29
%30 = getelementptr inbounds i32, i32* %28, i64 4
%31 = bitcast i32* %30 to <4 x i32>*
store <4 x i32> %27, <4 x i32>* %31
%32 = add <4 x i32> %24, <i32 8, i32 8, i32 8, i32 8>
%33 = or i64 %23, 9
%34 = add <4 x i32> %24, <i32 12, i32 12, i32 12, i32 12>
%35 = getelementptr inbounds i32, i32* %2, i64 %33
%36 = bitcast i32* %35 to <4 x i32>*
store <4 x i32> %32, <4 x i32>* %36
%37 = getelementptr inbounds i32, i32* %35, i64 4
%38 = bitcast i32* %37 to <4 x i32>*
store <4 x i32> %34, <4 x i32>* %38
%39 = add <4 x i32> %24, <i32 16, i32 16, i32 16, i32 16>
%40 = or i64 %23, 17
%41 = add <4 x i32> %24, <i32 20, i32 20, i32 20, i32 20>
%42 = getelementptr inbounds i32, i32* %2, i64 %40
%43 = bitcast i32* %42 to <4 x i32>*
store <4 x i32> %39, <4 x i32>* %43
%44 = getelementptr inbounds i32, i32* %42, i64 4
%45 = bitcast i32* %44 to <4 x i32>*
store <4 x i32> %41, <4 x i32>* %45
%46 = add <4 x i32> %24, <i32 24, i32 24, i32 24, i32 24>
%47 = or i64 %23, 25
%48 = add <4 x i32> %24, <i32 28, i32 28, i32 28, i32 28>
%49 = getelementptr inbounds i32, i32* %2, i64 %47
%50 = bitcast i32* %49 to <4 x i32>*
store <4 x i32> %46, <4 x i32>* %50
%51 = getelementptr inbounds i32, i32* %49, i64 4
%52 = bitcast i32* %51 to <4 x i32>*
store <4 x i32> %48, <4 x i32>* %52
%53 = add nuw i64 %23, 32
%54 = add <4 x i32> %24, <i32 32, i32 32, i32 32, i32 32>
%55 = add i64 %25, 4
%56 = icmp eq i64 %55, %21
br i1 %56, label %57, label %22
57: ; preds = %22, %12
%58 = phi i64 [ 0, %12 ], [ %53, %22 ]
%59 = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %12 ], [ %54, %22 ]
%60 = icmp eq i64 %18, 0
br i1 %60, label %75, label %61
61: ; preds = %57, %61
%62 = phi i64 [ %71, %61 ], [ %58, %57 ]
%63 = phi <4 x i32> [ %72, %61 ], [ %59, %57 ]
%64 = phi i64 [ %73, %61 ], [ 0, %57 ]
%65 = or i64 %62, 1
%66 = add <4 x i32> %63, <i32 4, i32 4, i32 4, i32 4>
%67 = getelementptr inbounds i32, i32* %2, i64 %65
%68 = bitcast i32* %67 to <4 x i32>*
store <4 x i32> %63, <4 x i32>* %68
%69 = getelementptr inbounds i32, i32* %67, i64 4
%70 = bitcast i32* %69 to <4 x i32>*
store <4 x i32> %66, <4 x i32>* %70
%71 = add nuw i64 %62, 8
%72 = add <4 x i32> %63, <i32 8, i32 8, i32 8, i32 8>
%73 = add i64 %64, 1
%74 = icmp eq i64 %73, %18
br i1 %74, label %75, label %61
75: ; preds = %61, %57
%76 = icmp eq i64 %10, %13
br i1 %76, label %85, label %77
77: ; preds = %9, %75
%78 = phi i64 [ 1, %9 ], [ %14, %75 ]
br label %79
79: ; preds = %77, %79
%80 = phi i64 [ %83, %79 ], [ %78, %77 ]
%81 = trunc i64 %80 to i32
%82 = getelementptr inbounds i32, i32* %2, i64 %80
store i32 %81, i32* %82
%83 = add nuw i64 %80, 1
%84 = icmp eq i64 %80, %10
br i1 %84, label %85, label %79
85: ; preds = %79, %75, %3
br label %86
86: ; preds = %140, %85
%87 = phi i64 [ %4, %85 ], [ %141, %140 ]
%88 = phi i64 [ 1, %85 ], [ %142, %140 ]
%89 = phi i32 [ 0, %85 ], [ %143, %140 ]
%90 = getelementptr inbounds i32, i32* %2, i64 %87
br label %91
91: ; preds = %86, %228
%92 = phi i64 [ %192, %228 ], [ %88, %86 ]
%93 = phi i32 [ %215, %228 ], [ %89, %86 ]
%94 = sub i64 %87, %92
%95 = icmp ult i64 %94, 7
br i1 %95, label %96, label %144
96: ; preds = %91
%97 = add i64 %92, 1
%98 = icmp ugt i64 %97, %87
br i1 %98, label %127, label %99
99: ; preds = %96, %121
%100 = phi i64 [ %125, %121 ], [ %97, %96 ]
%101 = phi i64 [ %100, %121 ], [ %92, %96 ]
%102 = getelementptr inbounds i32, i32* %2, i64 %100
%103 = load i32, i32* %102
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds float, float* %1, i64 %104
%106 = load float, float* %105
%107 = icmp eq i64 %101, 0
br i1 %107, label %121, label %108
108: ; preds = %99, %116
%109 = phi i64 [ %119, %116 ], [ %101, %99 ]
%110 = getelementptr inbounds i32, i32* %2, i64 %109
%111 = load i32, i32* %110
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds float, float* %1, i64 %112
%114 = load float, float* %113
%115 = fcmp ugt float %114, %106
br i1 %115, label %116, label %121
116: ; preds = %108
%117 = add i64 %109, 1
%118 = getelementptr inbounds i32, i32* %2, i64 %117
store i32 %111, i32* %118
%119 = add i64 %109, -1
%120 = icmp eq i64 %119, 0
br i1 %120, label %121, label %108
121: ; preds = %116, %108, %99
%122 = phi i64 [ 0, %99 ], [ %109, %108 ], [ 0, %116 ]
%123 = add i64 %122, 1
%124 = getelementptr inbounds i32, i32* %2, i64 %123
store i32 %103, i32* %124
%125 = add i64 %100, 1
%126 = icmp ugt i64 %125, %87
br i1 %126, label %127, label %99
127: ; preds = %121, %96
%128 = icmp eq i32 %93, 0
br i1 %128, label %237, label %129
129: ; preds = %127
%130 = add nsw i32 %93, -1
%131 = sext i32 %93 to i64
%132 = getelementptr inbounds i32, i32* %7, i64 %131
%133 = load i32, i32* %132
%134 = sext i32 %133 to i64
%135 = add nsw i32 %93, -2
%136 = sext i32 %130 to i64
%137 = getelementptr inbounds i32, i32* %7, i64 %136
%138 = load i32, i32* %137
%139 = sext i32 %138 to i64
br label %140
140: ; preds = %129, %219
%141 = phi i64 [ %227, %219 ], [ %134, %129 ]
%142 = phi i64 [ %92, %219 ], [ %139, %129 ]
%143 = phi i32 [ %215, %219 ], [ %135, %129 ]
br label %86
144: ; preds = %91
%145 = add i64 %92, %87
%146 = lshr i64 %145, 1
%147 = getelementptr inbounds i32, i32* %2, i64 %146
%148 = load i32, i32* %147
%149 = sext i32 %148 to i64
%150 = add i64 %92, 1
%151 = getelementptr inbounds i32, i32* %2, i64 %150
%152 = load i32, i32* %151
store i32 %152, i32* %147
store i32 %148, i32* %151
%153 = getelementptr inbounds float, float* %1, i64 %149
%154 = load float, float* %153
%155 = load i32, i32* %90
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds float, float* %1, i64 %156
%158 = load float, float* %157
%159 = fcmp ogt float %154, %158
br i1 %159, label %160, label %161
160: ; preds = %144
store i32 %155, i32* %151
store i32 %148, i32* %90
br label %161
161: ; preds = %160, %144
%162 = phi float [ %154, %160 ], [ %158, %144 ]
%163 = phi i32 [ %148, %160 ], [ %155, %144 ]
%164 = getelementptr inbounds i32, i32* %2, i64 %92
%165 = load i32, i32* %164
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds float, float* %1, i64 %166
%168 = load float, float* %167
%169 = fcmp ogt float %168, %162
br i1 %169, label %170, label %175
170: ; preds = %161
store i32 %163, i32* %164
store i32 %165, i32* %90
%171 = load i32, i32* %164
%172 = sext i32 %171 to i64
%173 = getelementptr inbounds float, float* %1, i64 %172
%174 = load float, float* %173
br label %175
175: ; preds = %170, %161
%176 = phi float [ %174, %170 ], [ %168, %161 ]
%177 = phi i32 [ %171, %170 ], [ %165, %161 ]
%178 = load i32, i32* %151
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds float, float* %1, i64 %179
%181 = load float, float* %180
%182 = fcmp ogt float %181, %176
br i1 %182, label %183, label %184
183: ; preds = %175
store i32 %177, i32* %151
store i32 %178, i32* %164
br label %184
184: ; preds = %183, %175
%185 = phi float [ %181, %183 ], [ %176, %175 ]
%186 = phi i32 [ %178, %183 ], [ %177, %175 ]
br label %187
187: ; preds = %213, %184
%188 = phi i64 [ %87, %184 ], [ %203, %213 ]
%189 = phi i64 [ %150, %184 ], [ %192, %213 ]
br label %190
190: ; preds = %190, %187
%191 = phi i64 [ %189, %187 ], [ %192, %190 ]
%192 = add i64 %191, 1
%193 = getelementptr inbounds i32, i32* %2, i64 %192
%194 = load i32, i32* %193
%195 = sext i32 %194 to i64
%196 = getelementptr inbounds float, float* %1, i64 %195
%197 = load float, float* %196
%198 = fcmp olt float %197, %185
br i1 %198, label %190, label %199
199: ; preds = %190
%200 = getelementptr inbounds i32, i32* %2, i64 %192
br label %201
201: ; preds = %199, %201
%202 = phi i64 [ %203, %201 ], [ %188, %199 ]
%203 = add i64 %202, -1
%204 = getelementptr inbounds i32, i32* %2, i64 %203
%205 = load i32, i32* %204
%206 = sext i32 %205 to i64
%207 = getelementptr inbounds float, float* %1, i64 %206
%208 = load float, float* %207
%209 = fcmp ogt float %208, %185
br i1 %209, label %201, label %210
210: ; preds = %201
%211 = getelementptr inbounds i32, i32* %2, i64 %203
%212 = icmp ult i64 %203, %192
br i1 %212, label %214, label %213
213: ; preds = %210
store i32 %205, i32* %200
store i32 %194, i32* %211
br label %187
214: ; preds = %210
store i32 %205, i32* %164
store i32 %186, i32* %211
%215 = add nsw i32 %93, 2
%216 = sub i64 %87, %191
%217 = sub i64 %203, %92
%218 = icmp ult i64 %216, %217
br i1 %218, label %228, label %219
219: ; preds = %214
%220 = trunc i64 %87 to i32
%221 = sext i32 %215 to i64
%222 = getelementptr inbounds i32, i32* %7, i64 %221
store i32 %220, i32* %222
%223 = trunc i64 %192 to i32
%224 = add nsw i32 %93, 1
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds i32, i32* %7, i64 %225
store i32 %223, i32* %226
%227 = add i64 %202, -2
br label %140
228: ; preds = %214
%229 = trunc i64 %202 to i32
%230 = add i32 %229, -2
%231 = sext i32 %215 to i64
%232 = getelementptr inbounds i32, i32* %7, i64 %231
store i32 %230, i32* %232
%233 = trunc i64 %92 to i32
%234 = add nsw i32 %93, 1
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds i32, i32* %7, i64 %235
store i32 %233, i32* %236
br label %91
237: ; preds = %127
%238 = tail call i32 (i32*, i32, i32, ...) bitcast (i32 (...)* @free_ivector to i32 (i32*, i32, i32, ...)*)(i32* %7, i32 1, i32 100000)
ret void
}