void R_qsort_I(double *v, int *I, int i, int j) {
  int il[31], iu[31];
  double vt, vtt;
  double R = 0.375;
  int ii, ij, k, l, m;
  int it, tt;
  --v;
  --I;
  ii = i;
  m = 1;
L10:
  if (i < j) {
    if (R < 0.5898437)
      R += 0.0390625;
    else
      R -= 0.21875;
  L20:
    k = i;
    ij = i + (int)((j - i) * R);
    it = I[ij];
    vt = v[ij];
    if (v[i] > vt) {
      I[ij] = I[i];
      I[i] = it;
      it = I[ij];
      v[ij] = v[i];
      v[i] = vt;
      vt = v[ij];
    }
    l = j;
    if (v[j] < vt) {
      I[ij] = I[j];
      I[j] = it;
      it = I[ij];
      v[ij] = v[j];
      v[j] = vt;
      vt = v[ij];
      if (v[i] > vt) {
        I[ij] = I[i];
        I[i] = it;
        it = I[ij];
        v[ij] = v[i];
        v[i] = vt;
        vt = v[ij];
      }
    }
    for (;;) {
      l--;
      for (; v[l] > vt; l--)
        ;
      tt = I[l];
      vtt = v[l];
      k = k + 1;
      for (; v[k] < vt; k++)
        ;
      if (k > l)
        break;
      I[l] = I[k];
      I[k] = tt;
      v[l] = v[k];
      v[k] = vtt;
    }
    m++;
    if (l - i <= j - k) {
      il[m] = k;
      iu[m] = j;
      j = l;
    } else {
      il[m] = i;
      iu[m] = l;
      i = k;
    }
  } else {
  L80:
    if (m == 1)
      return;
    i = il[m];
    j = iu[m];
    m--;
  }
  if (j - i > 10)
    goto L20;
  if (i == ii)
    goto L10;
  --i;
L100:
  do {
    ++i;
    if (i == j) {
      goto L80;
    }
    it = I[i + 1];
    vt = v[i + 1];
  } while (v[i] <= vt);
  k = i;
  do {
    I[k + 1] = I[k];
    v[k + 1] = v[k];
    --k;
  } while (vt < v[k]);
  I[k + 1] = it;
  v[k + 1] = vt;
  goto L100;
}


x86 assembly (clang, -O0):
<R_qsort_I>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
movsd  0xedf(%rip),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x8(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x10(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x13c(%rbp)
movl   $0x1,-0x14c(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    15d9 <R_qsort_I+0x4d9>
movsd  0xea0(%rip),%xmm0
ucomisd -0x138(%rbp),%xmm0
ff
jbe    1193 <R_qsort_I+0x93>
movsd  0xe9a(%rip),%xmm0
addsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
jmp    11af <R_qsort_I+0xaf>
movsd  -0x138(%rbp),%xmm0
ff
movsd  0xe6d(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
jmp    11b4 <R_qsort_I+0xb4>
mov    -0x14(%rbp),%eax
mov    %eax,-0x144(%rbp)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    -0x14(%rbp),%ecx
cvtsi2sd %ecx,%xmm0
mulsd  -0x138(%rbp),%xmm0
ff
cvttsd2si %xmm0,%ecx
add    %ecx,%eax
mov    %eax,-0x140(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x140(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x150(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x140(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x128(%rbp),%xmm0
ff
jbe    12ad <R_qsort_I+0x1ad>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
movslq -0x140(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x150(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
movslq -0x140(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x150(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x140(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
movslq -0x140(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x18(%rbp),%eax
mov    %eax,-0x148(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x128(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1405 <R_qsort_I+0x305>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
movslq -0x140(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x150(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
movslq -0x140(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x150(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x140(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
movslq -0x140(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x128(%rbp),%xmm0
ff
jbe    1400 <R_qsort_I+0x300>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
movslq -0x140(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x150(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
movslq -0x140(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x150(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x140(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
movslq -0x140(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
jmp    1405 <R_qsort_I+0x305>
jmp    140a <R_qsort_I+0x30a>
mov    -0x148(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x148(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x148(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x128(%rbp),%xmm0
ff
jbe    1450 <R_qsort_I+0x350>
jmp    143c <R_qsort_I+0x33c>
mov    -0x148(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x148(%rbp)
jmp    1419 <R_qsort_I+0x319>
mov    -0x10(%rbp),%rax
movslq -0x148(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x154(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x148(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x144(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x144(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x144(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x128(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    14c6 <R_qsort_I+0x3c6>
jmp    14b2 <R_qsort_I+0x3b2>
mov    -0x144(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x144(%rbp)
jmp    148b <R_qsort_I+0x38b>
mov    -0x144(%rbp),%eax
cmp    -0x148(%rbp),%eax
jle    14dd <R_qsort_I+0x3dd>
jmp    154a <R_qsort_I+0x44a>
mov    -0x10(%rbp),%rax
movslq -0x144(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
movslq -0x148(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x154(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x144(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movslq -0x144(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x148(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movslq -0x144(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    140a <R_qsort_I+0x30a>
mov    -0x14c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14c(%rbp)
mov    -0x148(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    -0x144(%rbp),%ecx
cmp    %ecx,%eax
jg     15a6 <R_qsort_I+0x4a6>
mov    -0x144(%rbp),%ecx
movslq -0x14c(%rbp),%rax
mov    %ecx,-0xa0(%rbp,%rax,4)
mov    -0x18(%rbp),%ecx
movslq -0x14c(%rbp),%rax
mov    %ecx,-0x120(%rbp,%rax,4)
mov    -0x148(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    15d4 <R_qsort_I+0x4d4>
mov    -0x14(%rbp),%ecx
movslq -0x14c(%rbp),%rax
mov    %ecx,-0xa0(%rbp,%rax,4)
mov    -0x148(%rbp),%ecx
movslq -0x14c(%rbp),%rax
mov    %ecx,-0x120(%rbp,%rax,4)
mov    -0x144(%rbp),%eax
mov    %eax,-0x14(%rbp)
jmp    1625 <R_qsort_I+0x525>
jmp    15de <R_qsort_I+0x4de>
cmpl   $0x1,-0x14c(%rbp)
jne    15f4 <R_qsort_I+0x4f4>
add    $0xe0,%rsp
pop    %rbp
ret
movslq -0x14c(%rbp),%rax
mov    -0xa0(%rbp,%rax,4),%eax
mov    %eax,-0x14(%rbp)
movslq -0x14c(%rbp),%rax
mov    -0x120(%rbp,%rax,4),%eax
mov    %eax,-0x18(%rbp)
mov    -0x14c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x14c(%rbp)
mov    -0x18(%rbp),%eax
sub    -0x14(%rbp),%eax
cmp    $0xa,%eax
jle    1639 <R_qsort_I+0x539>
jmp    11b4 <R_qsort_I+0xb4>
mov    -0x14(%rbp),%eax
cmp    -0x13c(%rbp),%eax
jne    164d <R_qsort_I+0x54d>
jmp    1154 <R_qsort_I+0x54>
mov    -0x14(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x14(%rbp)
jmp    165b <R_qsort_I+0x55b>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jne    1675 <R_qsort_I+0x575>
jmp    15de <R_qsort_I+0x4de>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x150(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x128(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    165b <R_qsort_I+0x55b>
mov    -0x14(%rbp),%eax
mov    %eax,-0x144(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x144(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
mov    -0x144(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movslq -0x144(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x144(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x144(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x144(%rbp)
movsd  -0x128(%rbp),%xmm1
ff
mov    -0x8(%rbp),%rax
movslq -0x144(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
ja     16cd <R_qsort_I+0x5cd>
mov    -0x150(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x144(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
mov    -0x144(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1656 <R_qsort_I+0x556>

x86 assembly (clang, -O2):
<R_qsort_I>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xa8,%rsp
mov    %ecx,%r11d
lea    -0x4(%rsi),%r15
lea    0x8(%rdi),%rax
mov    %rax,-0x68(%rsp)
mov    $0x1,%r10d
movsd  0xed1(%rip),%xmm0
movsd  0xed1(%rip),%xmm1
mov    %edx,-0x74(%rsp)
nopl   0x0(%rax,%rax,1)
cmp    %edx,%r11d
jle    12f0 <R_qsort_I+0x1f0>
xor    %eax,%eax
ucomisd %xmm0,%xmm1
seta   %al
lea    0xeb7(%rip),%rcx
addsd  (%rcx,%rax,8),%xmm0
mov    %edx,%r14d
mov    %r11d,%eax
sub    %r14d,%eax
xorps  %xmm2,%xmm2
cvtsi2sd %eax,%xmm2
mulsd  %xmm0,%xmm2
cvttsd2si %xmm2,%eax
add    %r14d,%eax
cltq
mov    -0x4(%rsi,%rax,4),%r8d
movsd  -0x8(%rdi,%rax,8),%xmm2
movslq %r14d,%r9
movsd  -0x8(%rdi,%r9,8),%xmm3
ucomisd %xmm2,%xmm3
jbe    11bc <R_qsort_I+0xbc>
mov    -0x4(%rsi,%r9,4),%ebp
mov    %ebp,-0x4(%rsi,%rax,4)
mov    %r8d,-0x4(%rsi,%r9,4)
mov    -0x4(%rsi,%rax,4),%r8d
movsd  %xmm3,-0x8(%rdi,%rax,8)
movsd  %xmm2,-0x8(%rdi,%r9,8)
movsd  -0x8(%rdi,%rax,8),%xmm2
movslq %r11d,%rbx
movsd  -0x8(%rdi,%rbx,8),%xmm3
ucomisd %xmm3,%xmm2
jbe    121c <R_qsort_I+0x11c>
mov    -0x4(%rsi,%rbx,4),%ebp
mov    %ebp,-0x4(%rsi,%rax,4)
mov    %r8d,-0x4(%rsi,%rbx,4)
mov    -0x4(%rsi,%rax,4),%ebp
movsd  %xmm3,-0x8(%rdi,%rax,8)
movsd  %xmm2,-0x8(%rdi,%rbx,8)
movsd  -0x8(%rdi,%rax,8),%xmm2
movsd  -0x8(%rdi,%r9,8),%xmm3
ucomisd %xmm2,%xmm3
jbe    121c <R_qsort_I+0x11c>
mov    -0x4(%rsi,%r9,4),%ebx
mov    %ebx,-0x4(%rsi,%rax,4)
mov    %ebp,-0x4(%rsi,%r9,4)
movsd  %xmm3,-0x8(%rdi,%rax,8)
movsd  %xmm2,-0x8(%rdi,%r9,8)
movsd  -0x8(%rdi,%rax,8),%xmm2
mov    %r14d,%r12d
mov    %r11d,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movslq %ecx,%rax
add    $0xffffffffffffffff,%rax
nopw   0x0(%rax,%rax,1)
movsd  -0x8(%rdi,%rax,8),%xmm3
add    $0xffffffff,%ecx
add    $0xffffffffffffffff,%rax
ucomisd %xmm2,%xmm3
ja     1240 <R_qsort_I+0x140>
mov    (%rsi,%rax,4),%r13d
movslq %r12d,%r8
lea    (%rdi,%r8,8),%r9
xor    %ebx,%ebx
movsd  (%r9,%rbx,8),%xmm4
add    $0x1,%rbx
ucomisd %xmm4,%xmm2
ja     1260 <R_qsort_I+0x160>
lea    (%r12,%rbx,1),%ebp
add    $0xffffffff,%ebp
cmp    %ecx,%ebp
jge    12a0 <R_qsort_I+0x1a0>
add    %ebx,%r12d
lea    (%r15,%r8,4),%r8
mov    (%r8,%rbx,4),%ebp
mov    %ebp,(%rsi,%rax,4)
mov    %r13d,(%r8,%rbx,4)
movsd  %xmm4,(%rdi,%rax,8)
movsd  %xmm3,-0x8(%r9,%rbx,8)
jmp    1230 <R_qsort_I+0x130>
nopl   0x0(%rax,%rax,1)
movslq %r10d,%r9
lea    0x1(%r10),%r8d
mov    %ecx,%r10d
sub    %r14d,%r10d
mov    %r11d,%eax
sub    %r12d,%eax
add    %ebx,%r12d
sub    %ebx,%eax
cmp    %eax,%r10d
mov    %r12d,%eax
cmovg  %r14d,%eax
mov    %r11d,%ebx
cmovg  %ecx,%ebx
cmovle %ecx,%r11d
cmovle %r14d,%r12d
mov    %eax,0x24(%rsp,%r9,4)
mov    %ebx,-0x5c(%rsp,%r9,4)
mov    %r12d,%r14d
mov    %r8d,%r10d
jmp    130b <R_qsort_I+0x20b>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmp    $0x1,%r10d
je     13ee <R_qsort_I+0x2ee>
movslq %r10d,%rax
mov    0x20(%rsp,%rax,4),%r14d
mov    -0x60(%rsp,%rax,4),%r11d
add    $0xffffffff,%r10d
mov    %r11d,%eax
sub    %r14d,%eax
cmp    $0xa,%eax
jg     1161 <R_qsort_I+0x61>
cmp    %edx,%r14d
je     1140 <R_qsort_I+0x40>
mov    %r10,-0x70(%rsp)
add    $0xffffffff,%r14d
mov    $0x1,%r9d
sub    %r11d,%r9d
movabs $0x100000000,%r11
movslq %r14d,%r12
mov    -0x68(%rsp),%rax
lea    (%rax,%r12,8),%r13
mov    %r12,%rax
shl    $0x20,%rax
mov    %r12d,%r14d
lea    (%r9,%r14,1),%r8
lea    0x1(%r12),%r10d
xor    %ebx,%ebx
mov    %r8d,%edx
add    %ebx,%edx
je     13e0 <R_qsort_I+0x2e0>
mov    %r10d,%ecx
movsd  0x0(%r13,%rbx,8),%xmm2
lea    0x1(%rbx),%rbp
add    %r11,%rax
lea    0x1(%rcx),%r10d
ucomisd -0x8(%r13,%rbx,8),%xmm2
mov    %rbp,%rbx
jae    1360 <R_qsort_I+0x260>
add    %rbp,%r14
lea    (%rsi,%r12,4),%rdx
mov    (%rdx,%rbp,4),%ebp
sar    $0x1d,%rax
movsd  -0x8(%rdi,%rax,1),%xmm3
movslq %ecx,%rax
shl    $0x2,%rax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    -0x4(%rsi,%rax,1),%ecx
mov    %ecx,(%rsi,%rax,1)
movsd  %xmm3,(%rdi,%rax,2)
movsd  -0x10(%rdi,%rax,2),%xmm3
add    $0xfffffffffffffffc,%rax
ucomisd %xmm2,%xmm3
ja     13b0 <R_qsort_I+0x2b0>
mov    %ebp,(%rsi,%rax,1)
movsd  %xmm2,(%rdi,%rax,2)
jmp    133f <R_qsort_I+0x23f>
nopl   0x0(%rax)
mov    -0x74(%rsp),%edx
mov    -0x70(%rsp),%r10
jmp    12f0 <R_qsort_I+0x1f0>
add    $0xa8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @R_qsort_I(double* nocapture %0, i32* nocapture %1, i32 %2, i32 %3) {
%5 = alloca [31 x i32]
%6 = alloca [31 x i32]
%7 = bitcast [31 x i32]* %5 to i8*
%8 = bitcast [31 x i32]* %6 to i8*
%9 = getelementptr inbounds double, double* %0, i64 -1
%10 = getelementptr inbounds i32, i32* %1, i64 -1
br label %11
11: ; preds = %127, %4
%12 = phi i32 [ %3, %4 ], [ %121, %127 ]
%13 = phi double [ 3.750000e-01, %4 ], [ %122, %127 ]
%14 = phi i32 [ 1, %4 ], [ %124, %127 ]
%15 = icmp sgt i32 %12, %2
br i1 %15, label %16, label %108
16: ; preds = %11
%17 = fcmp olt double %13, 0x3FE2DFFFE5280D65
%18 = select i1 %17, double 3.906250e-02, double -2.187500e-01
%19 = fadd double %13, %18
br label %20
20: ; preds = %120, %16
%21 = phi i32 [ %12, %16 ], [ %121, %120 ]
%22 = phi double [ %19, %16 ], [ %122, %120 ]
%23 = phi i32 [ %2, %16 ], [ %123, %120 ]
%24 = phi i32 [ %14, %16 ], [ %124, %120 ]
%25 = sub nsw i32 %21, %23
%26 = sitofp i32 %25 to double
%27 = fmul double %22, %26
%28 = fptosi double %27 to i32
%29 = add nsw i32 %23, %28
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds i32, i32* %10, i64 %30
%32 = load i32, i32* %31
%33 = getelementptr inbounds double, double* %9, i64 %30
%34 = load double, double* %33
%35 = sext i32 %23 to i64
%36 = getelementptr inbounds double, double* %9, i64 %35
%37 = load double, double* %36
%38 = fcmp ogt double %37, %34
br i1 %38, label %39, label %44
39: ; preds = %20
%40 = getelementptr inbounds i32, i32* %10, i64 %35
%41 = load i32, i32* %40
store i32 %41, i32* %31
store i32 %32, i32* %40
%42 = load i32, i32* %31
store double %37, double* %33
store double %34, double* %36
%43 = load double, double* %33
br label %44
44: ; preds = %39, %20
%45 = phi double [ %43, %39 ], [ %34, %20 ]
%46 = phi i32 [ %42, %39 ], [ %32, %20 ]
%47 = sext i32 %21 to i64
%48 = getelementptr inbounds double, double* %9, i64 %47
%49 = load double, double* %48
%50 = fcmp olt double %49, %45
br i1 %50, label %51, label %62
51: ; preds = %44
%52 = getelementptr inbounds i32, i32* %10, i64 %47
%53 = load i32, i32* %52
store i32 %53, i32* %31
store i32 %46, i32* %52
%54 = load i32, i32* %31
store double %49, double* %33
store double %45, double* %48
%55 = load double, double* %33
%56 = load double, double* %36
%57 = fcmp ogt double %56, %55
br i1 %57, label %58, label %62
58: ; preds = %51
%59 = getelementptr inbounds i32, i32* %10, i64 %35
%60 = load i32, i32* %59
store i32 %60, i32* %31
store i32 %54, i32* %59
store double %56, double* %33
store double %55, double* %36
%61 = load double, double* %33
br label %62
62: ; preds = %51, %58, %44
%63 = phi double [ %61, %58 ], [ %55, %51 ], [ %45, %44 ]
br label %64
64: ; preds = %89, %62
%65 = phi i32 [ %23, %62 ], [ %90, %89 ]
%66 = phi i32 [ %21, %62 ], [ %76, %89 ]
%67 = sext i32 %66 to i64
br label %68
68: ; preds = %68, %64
%69 = phi i64 [ %70, %68 ], [ %67, %64 ]
%70 = add nsw i64 %69, -1
%71 = getelementptr inbounds double, double* %9, i64 %70
%72 = load double, double* %71
%73 = fcmp ogt double %72, %63
br i1 %73, label %68, label %74
74: ; preds = %68
%75 = getelementptr inbounds double, double* %9, i64 %70
%76 = trunc i64 %70 to i32
%77 = getelementptr inbounds i32, i32* %10, i64 %70
%78 = load i32, i32* %77
%79 = sext i32 %65 to i64
br label %80
80: ; preds = %80, %74
%81 = phi i64 [ %82, %80 ], [ %79, %74 ]
%82 = add i64 %81, 1
%83 = getelementptr inbounds double, double* %0, i64 %81
%84 = load double, double* %83
%85 = fcmp olt double %84, %63
br i1 %85, label %80, label %86
86: ; preds = %80
%87 = trunc i64 %81 to i32
%88 = icmp slt i32 %87, %76
br i1 %88, label %89, label %94
89: ; preds = %86
%90 = trunc i64 %82 to i32
%91 = getelementptr inbounds double, double* %0, i64 %81
%92 = getelementptr inbounds i32, i32* %1, i64 %81
%93 = load i32, i32* %92
store i32 %93, i32* %77
store i32 %78, i32* %92
store double %84, double* %75
store double %72, double* %91
br label %64
94: ; preds = %86
%95 = trunc i64 %70 to i32
%96 = trunc i64 %82 to i32
%97 = add nsw i32 %24, 1
%98 = sub nsw i32 %95, %23
%99 = sub nsw i32 %21, %96
%100 = icmp sgt i32 %98, %99
%101 = sext i32 %97 to i64
%102 = getelementptr inbounds [31 x i32], [31 x i32]* %5, i64 0, i64 %101
%103 = select i1 %100, i32 %23, i32 %96
%104 = select i1 %100, i32 %95, i32 %21
%105 = select i1 %100, i32 %21, i32 %95
%106 = select i1 %100, i32 %96, i32 %23
store i32 %103, i32* %102
%107 = getelementptr inbounds [31 x i32], [31 x i32]* %6, i64 0, i64 %101
store i32 %104, i32* %107
br label %120
108: ; preds = %134, %11
%109 = phi double [ %13, %11 ], [ %122, %134 ]
%110 = phi i32 [ %14, %11 ], [ %124, %134 ]
%111 = icmp eq i32 %110, 1
br i1 %111, label %112, label %113
112: ; preds = %108
ret void
113: ; preds = %108
%114 = sext i32 %110 to i64
%115 = getelementptr inbounds [31 x i32], [31 x i32]* %5, i64 0, i64 %114
%116 = load i32, i32* %115
%117 = getelementptr inbounds [31 x i32], [31 x i32]* %6, i64 0, i64 %114
%118 = load i32, i32* %117
%119 = add nsw i32 %110, -1
br label %120
120: ; preds = %113, %94
%121 = phi i32 [ %105, %94 ], [ %118, %113 ]
%122 = phi double [ %22, %94 ], [ %109, %113 ]
%123 = phi i32 [ %106, %94 ], [ %116, %113 ]
%124 = phi i32 [ %97, %94 ], [ %119, %113 ]
%125 = sub nsw i32 %121, %123
%126 = icmp sgt i32 %125, 10
br i1 %126, label %20, label %127
127: ; preds = %120
%128 = icmp eq i32 %123, %2
br i1 %128, label %11, label %129
129: ; preds = %127
%130 = add nsw i32 %123, -1
br label %131
131: ; preds = %165, %129
%132 = phi i32 [ %130, %129 ], [ %147, %165 ]
%133 = sext i32 %132 to i64
br label %134
134: ; preds = %139, %131
%135 = phi i64 [ %136, %139 ], [ %133, %131 ]
%136 = add nsw i64 %135, 1
%137 = trunc i64 %136 to i32
%138 = icmp eq i32 %121, %137
br i1 %138, label %108, label %139
139: ; preds = %134
%140 = add nsw i64 %135, 2
%141 = getelementptr inbounds double, double* %9, i64 %140
%142 = load double, double* %141
%143 = getelementptr inbounds double, double* %0, i64 %135
%144 = load double, double* %143
%145 = fcmp ugt double %144, %142
br i1 %145, label %146, label %134
146: ; preds = %139
%147 = trunc i64 %136 to i32
%148 = getelementptr inbounds i32, i32* %10, i64 %140
%149 = load i32, i32* %148
%150 = shl i64 %136, 32
%151 = ashr exact i64 %150, 32
%152 = getelementptr inbounds double, double* %9, i64 %151
%153 = load double, double* %152
br label %154
154: ; preds = %146, %154
%155 = phi double [ %153, %146 ], [ %163, %154 ]
%156 = phi i64 [ %151, %146 ], [ %161, %154 ]
%157 = getelementptr inbounds i32, i32* %10, i64 %156
%158 = load i32, i32* %157
%159 = getelementptr inbounds i32, i32* %1, i64 %156
store i32 %158, i32* %159
%160 = getelementptr inbounds double, double* %0, i64 %156
store double %155, double* %160
%161 = add nsw i64 %156, -1
%162 = getelementptr inbounds double, double* %9, i64 %161
%163 = load double, double* %162
%164 = fcmp olt double %142, %163
br i1 %164, label %154, label %165
165: ; preds = %154
%166 = getelementptr inbounds i32, i32* %10, i64 %156
%167 = getelementptr inbounds double, double* %9, i64 %156
store i32 %149, i32* %166
store double %142, double* %167
br label %131
}