void tce_sort_4_scalar(double *unsorted, double *sorted, int a, int b, int c,
                       int d, int i, int j, int k, int l, double factor) {
  int id[4], jd[4], ia, ib, j1, j2, j3, j4;
  int l1, l2, l3, l4;
  int ia1, ia2, ia3, ia4;
  int ib1, ib2, ib3, ib4;
  int rangea1, rangea2, rangea3, rangea4;
  int rangeb1, rangeb2, rangeb3, rangeb4;
  int range[4], order[4], order_r[4];
  int jj1, jj2, jj3, jj4;
  int jj1_bound, jj2_bound, jj3_bound, jj4_bound;
  int count, ir, jr, kr, lr, N1, N2;
  double *pA, *pB;
  jd[0] = a;
  jd[1] = b;
  jd[2] = c;
  jd[3] = d;
  range[0] = b * c * d;
  range[1] = c * d;
  range[2] = d;
  range[3] = 1;
  l1 = jd[i];
  l2 = jd[j];
  l3 = jd[k];
  l4 = jd[l];
  rangea1 = range[i];
  rangea2 = range[j];
  rangea3 = range[k];
  rangea4 = range[l];
  rangeb1 = l2 * l3 * l4;
  rangeb2 = l3 * l4;
  rangeb3 = l4;
  rangeb4 = 1;
  if (l == 3) {
    for (j1 = 0; j1 < l1; j1++) {
      ia1 = j1 * rangea1;
      ib1 = j1 * rangeb1;
      for (j2 = 0; j2 < l2; j2++) {
        ia2 = ia1 + j2 * rangea2;
        ib2 = ib1 + j2 * rangeb2;
        for (j3 = 0; j3 < l3; j3++) {
          ia3 = ia2 + j3 * rangea3;
          ib3 = ib2 + j3 * rangeb3;
          for (j4 = 0; j4 < l4; j4++) {
            ia = ia3 + j4 * rangea4;
            ib = ib3 + j4 * rangeb4;
            sorted[ib] = unsorted[ia] * factor;
          }
        }
      }
    }
  }
  if (k == 3) {
    for (j1 = 0; j1 < l1; j1++) {
      ia1 = j1 * rangea1;
      ib1 = j1 * rangeb1;
      for (j2 = 0; j2 < l2; j2++) {
        ia2 = ia1 + j2 * rangea2;
        ib2 = ib1 + j2 * rangeb2;
        for (j3 = 0; j3 < l3; j3 += 8) {
          for (j4 = 0; j4 < l4; j4 += 8) {
            jj3_bound = (j3 + 8 > l3) ? l3 : j3 + 8;
            for (jj3 = j3; jj3 < jj3_bound; jj3++) {
              ia3 = ia2 + jj3 * rangea3;
              ib3 = ib2 + jj3 * rangeb3;
              jj4_bound = (j4 + 8 > l4) ? l4 : j4 + 8;
              for (jj4 = j4; jj4 < jj4_bound; jj4++) {
                ia = ia3 + jj4 * rangea4;
                ib = ib3 + jj4 * rangeb4;
                sorted[ib] = unsorted[ia] * factor;
              }
            }
          }
        }
      }
    }
  }
  if (j == 3) {
    for (j1 = 0; j1 < l1; j1++) {
      ia1 = j1 * rangea1;
      ib1 = j1 * rangeb1;
      for (j2 = 0; j2 < l2; j2 += 8) {
        for (j3 = 0; j3 < l3; j3++) {
          ia3 = ia1 + j3 * rangea3;
          ib3 = ib1 + j3 * rangeb3;
          for (j4 = 0; j4 < l4; j4 += 8) {
            jj2_bound = (j2 + 8 > l2) ? l2 : j2 + 8;
            for (jj2 = j2; jj2 < jj2_bound; jj2++) {
              ia2 = ia3 + jj2 * rangea2;
              ib2 = ib3 + jj2 * rangeb2;
              jj4_bound = (j4 + 8 > l4) ? l4 : j4 + 8;
              for (jj4 = j4; jj4 < jj4_bound; jj4++) {
                ia = ia2 + jj4 * rangea4;
                ib = ib2 + jj4 * rangeb4;
                sorted[ib] = unsorted[ia] * factor;
              }
            }
          }
        }
      }
    }
  }
  if (i == 3) {
    for (j1 = 0; j1 < l1; j1 += 8) {
      for (j2 = 0; j2 < l2; j2++) {
        ia2 = j2 * rangea2;
        ib2 = j2 * rangeb2;
        for (j3 = 0; j3 < l3; j3++) {
          ia3 = ia2 + j3 * rangea3;
          ib3 = ib2 + j3 * rangeb3;
          for (j4 = 0; j4 < l4; j4 += 8) {
            jj1_bound = (j1 + 8 > l1) ? l1 : j1 + 8;
            for (jj1 = j1; jj1 < jj1_bound; jj1++) {
              ia1 = ia3 + jj1 * rangea1;
              ib1 = ib3 + jj1 * rangeb1;
              jj4_bound = (j4 + 8 > l4) ? l4 : j4 + 8;
              for (jj4 = j4; jj4 < jj4_bound; jj4++) {
                ia = ia1 + jj4 * rangea4;
                ib = ib1 + jj4 * rangeb4;
                sorted[ib] = unsorted[ia] * factor;
              }
            }
          }
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<tce_sort_4_scalar>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9d,-0x20(%rbp)
movsd  %xmm0,-0x28(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x18(%rbp),%eax
imul   -0x1c(%rbp),%eax
imul   -0x20(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0x1c(%rbp),%eax
imul   -0x20(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0xc8(%rbp)
movl   $0x1,-0xc4(%rbp)
movslq 0x10(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%eax
mov    %eax,-0x6c(%rbp)
movslq 0x18(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%eax
mov    %eax,-0x70(%rbp)
movslq 0x20(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%eax
mov    %eax,-0x74(%rbp)
movslq 0x28(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%eax
mov    %eax,-0x78(%rbp)
movslq 0x10(%rbp),%rax
mov    -0xd0(%rbp,%rax,4),%eax
mov    %eax,-0x9c(%rbp)
movslq 0x18(%rbp),%rax
mov    -0xd0(%rbp,%rax,4),%eax
mov    %eax,-0xa0(%rbp)
movslq 0x20(%rbp),%rax
mov    -0xd0(%rbp,%rax,4),%eax
mov    %eax,-0xa4(%rbp)
movslq 0x28(%rbp),%rax
mov    -0xd0(%rbp,%rax,4),%eax
mov    %eax,-0xa8(%rbp)
mov    -0x70(%rbp),%eax
imul   -0x74(%rbp),%eax
imul   -0x78(%rbp),%eax
mov    %eax,-0xac(%rbp)
mov    -0x74(%rbp),%eax
imul   -0x78(%rbp),%eax
mov    %eax,-0xb0(%rbp)
mov    -0x78(%rbp),%eax
mov    %eax,-0xb4(%rbp)
movl   $0x1,-0xb8(%rbp)
cmpl   $0x3,0x28(%rbp)
jne    137b <tce_sort_4_scalar+0x27b>
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jge    1376 <tce_sort_4_scalar+0x276>
mov    -0x5c(%rbp),%eax
imul   -0x9c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x5c(%rbp),%eax
imul   -0xac(%rbp),%eax
mov    %eax,-0x8c(%rbp)
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x70(%rbp),%eax
jge    1363 <tce_sort_4_scalar+0x263>
mov    -0x7c(%rbp),%eax
mov    -0x60(%rbp),%ecx
imul   -0xa0(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x80(%rbp)
mov    -0x8c(%rbp),%eax
mov    -0x60(%rbp),%ecx
imul   -0xb0(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x90(%rbp)
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x74(%rbp),%eax
jge    1350 <tce_sort_4_scalar+0x250>
mov    -0x80(%rbp),%eax
mov    -0x64(%rbp),%ecx
imul   -0xa4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x84(%rbp)
mov    -0x90(%rbp),%eax
mov    -0x64(%rbp),%ecx
imul   -0xb4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x94(%rbp)
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x78(%rbp),%eax
jge    133d <tce_sort_4_scalar+0x23d>
mov    -0x84(%rbp),%eax
mov    -0x68(%rbp),%ecx
imul   -0xa8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x54(%rbp)
mov    -0x94(%rbp),%eax
mov    -0x68(%rbp),%ecx
imul   -0xb8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    12da <tce_sort_4_scalar+0x1da>
jmp    1342 <tce_sort_4_scalar+0x242>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    129a <tce_sort_4_scalar+0x19a>
jmp    1355 <tce_sort_4_scalar+0x255>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    125d <tce_sort_4_scalar+0x15d>
jmp    1368 <tce_sort_4_scalar+0x268>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    122d <tce_sort_4_scalar+0x12d>
jmp    137b <tce_sort_4_scalar+0x27b>
cmpl   $0x3,0x20(%rbp)
jne    15b8 <tce_sort_4_scalar+0x4b8>
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jge    15b3 <tce_sort_4_scalar+0x4b3>
mov    -0x5c(%rbp),%eax
imul   -0x9c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x5c(%rbp),%eax
imul   -0xac(%rbp),%eax
mov    %eax,-0x8c(%rbp)
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x70(%rbp),%eax
jge    15a0 <tce_sort_4_scalar+0x4a0>
mov    -0x7c(%rbp),%eax
mov    -0x60(%rbp),%ecx
imul   -0xa0(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x80(%rbp)
mov    -0x8c(%rbp),%eax
mov    -0x60(%rbp),%ecx
imul   -0xb0(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x90(%rbp)
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x74(%rbp),%eax
jge    158d <tce_sort_4_scalar+0x48d>
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x78(%rbp),%eax
jge    157a <tce_sort_4_scalar+0x47a>
mov    -0x64(%rbp),%eax
add    $0x8,%eax
cmp    -0x74(%rbp),%eax
jle    1435 <tce_sort_4_scalar+0x335>
mov    -0x74(%rbp),%eax
mov    %eax,-0x144(%rbp)
jmp    1441 <tce_sort_4_scalar+0x341>
mov    -0x64(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x144(%rbp)
mov    -0x144(%rbp),%eax
mov    %eax,-0x10c(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
cmp    -0x10c(%rbp),%eax
jge    1567 <tce_sort_4_scalar+0x467>
mov    -0x80(%rbp),%eax
mov    -0xfc(%rbp),%ecx
imul   -0xa4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x84(%rbp)
mov    -0x90(%rbp),%eax
mov    -0xfc(%rbp),%ecx
imul   -0xb4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x94(%rbp)
mov    -0x68(%rbp),%eax
add    $0x8,%eax
cmp    -0x78(%rbp),%eax
jle    14b8 <tce_sort_4_scalar+0x3b8>
mov    -0x78(%rbp),%eax
mov    %eax,-0x148(%rbp)
jmp    14c4 <tce_sort_4_scalar+0x3c4>
mov    -0x68(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x148(%rbp)
mov    -0x148(%rbp),%eax
mov    %eax,-0x110(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
cmp    -0x110(%rbp),%eax
jge    154e <tce_sort_4_scalar+0x44e>
mov    -0x84(%rbp),%eax
mov    -0x100(%rbp),%ecx
imul   -0xa8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x54(%rbp)
mov    -0x94(%rbp),%eax
mov    -0x100(%rbp),%ecx
imul   -0xb8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x100(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x100(%rbp)
jmp    14d9 <tce_sort_4_scalar+0x3d9>
jmp    1553 <tce_sort_4_scalar+0x453>
mov    -0xfc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xfc(%rbp)
jmp    1456 <tce_sort_4_scalar+0x356>
jmp    156c <tce_sort_4_scalar+0x46c>
mov    -0x68(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x68(%rbp)
jmp    140c <tce_sort_4_scalar+0x30c>
jmp    157f <tce_sort_4_scalar+0x47f>
mov    -0x64(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x64(%rbp)
jmp    13f9 <tce_sort_4_scalar+0x2f9>
jmp    1592 <tce_sort_4_scalar+0x492>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    13bc <tce_sort_4_scalar+0x2bc>
jmp    15a5 <tce_sort_4_scalar+0x4a5>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    138c <tce_sort_4_scalar+0x28c>
jmp    15b8 <tce_sort_4_scalar+0x4b8>
cmpl   $0x3,0x18(%rbp)
jne    17f5 <tce_sort_4_scalar+0x6f5>
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jge    17f0 <tce_sort_4_scalar+0x6f0>
mov    -0x5c(%rbp),%eax
imul   -0x9c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x5c(%rbp),%eax
imul   -0xac(%rbp),%eax
mov    %eax,-0x8c(%rbp)
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x70(%rbp),%eax
jge    17dd <tce_sort_4_scalar+0x6dd>
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x74(%rbp),%eax
jge    17ca <tce_sort_4_scalar+0x6ca>
mov    -0x7c(%rbp),%eax
mov    -0x64(%rbp),%ecx
imul   -0xa4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x84(%rbp)
mov    -0x8c(%rbp),%eax
mov    -0x64(%rbp),%ecx
imul   -0xb4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x94(%rbp)
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x78(%rbp),%eax
jge    17b7 <tce_sort_4_scalar+0x6b7>
mov    -0x60(%rbp),%eax
add    $0x8,%eax
cmp    -0x70(%rbp),%eax
jle    1675 <tce_sort_4_scalar+0x575>
mov    -0x70(%rbp),%eax
mov    %eax,-0x14c(%rbp)
jmp    1681 <tce_sort_4_scalar+0x581>
mov    -0x60(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x14c(%rbp)
mov    -0x14c(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
cmp    -0x108(%rbp),%eax
jge    17a4 <tce_sort_4_scalar+0x6a4>
mov    -0x84(%rbp),%eax
mov    -0xf8(%rbp),%ecx
imul   -0xa0(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x80(%rbp)
mov    -0x94(%rbp),%eax
mov    -0xf8(%rbp),%ecx
imul   -0xb0(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x90(%rbp)
mov    -0x68(%rbp),%eax
add    $0x8,%eax
cmp    -0x78(%rbp),%eax
jle    16f8 <tce_sort_4_scalar+0x5f8>
mov    -0x78(%rbp),%eax
mov    %eax,-0x150(%rbp)
jmp    1704 <tce_sort_4_scalar+0x604>
mov    -0x68(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x150(%rbp)
mov    -0x150(%rbp),%eax
mov    %eax,-0x110(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
cmp    -0x110(%rbp),%eax
jge    178b <tce_sort_4_scalar+0x68b>
mov    -0x80(%rbp),%eax
mov    -0x100(%rbp),%ecx
imul   -0xa8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x54(%rbp)
mov    -0x90(%rbp),%eax
mov    -0x100(%rbp),%ecx
imul   -0xb8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x100(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x100(%rbp)
jmp    1719 <tce_sort_4_scalar+0x619>
jmp    1790 <tce_sort_4_scalar+0x690>
mov    -0xf8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf8(%rbp)
jmp    1696 <tce_sort_4_scalar+0x596>
jmp    17a9 <tce_sort_4_scalar+0x6a9>
mov    -0x68(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x68(%rbp)
jmp    164c <tce_sort_4_scalar+0x54c>
jmp    17bc <tce_sort_4_scalar+0x6bc>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    160c <tce_sort_4_scalar+0x50c>
jmp    17cf <tce_sort_4_scalar+0x6cf>
mov    -0x60(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x60(%rbp)
jmp    15f9 <tce_sort_4_scalar+0x4f9>
jmp    17e2 <tce_sort_4_scalar+0x6e2>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    15c9 <tce_sort_4_scalar+0x4c9>
jmp    17f5 <tce_sort_4_scalar+0x6f5>
cmpl   $0x3,0x10(%rbp)
jne    1a32 <tce_sort_4_scalar+0x932>
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jge    1a2d <tce_sort_4_scalar+0x92d>
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x70(%rbp),%eax
jge    1a1a <tce_sort_4_scalar+0x91a>
mov    -0x60(%rbp),%eax
imul   -0xa0(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x60(%rbp),%eax
imul   -0xb0(%rbp),%eax
mov    %eax,-0x90(%rbp)
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x74(%rbp),%eax
jge    1a07 <tce_sort_4_scalar+0x907>
mov    -0x80(%rbp),%eax
mov    -0x64(%rbp),%ecx
imul   -0xa4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x84(%rbp)
mov    -0x90(%rbp),%eax
mov    -0x64(%rbp),%ecx
imul   -0xb4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x94(%rbp)
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x78(%rbp),%eax
jge    19f4 <tce_sort_4_scalar+0x8f4>
mov    -0x5c(%rbp),%eax
add    $0x8,%eax
cmp    -0x6c(%rbp),%eax
jle    18b2 <tce_sort_4_scalar+0x7b2>
mov    -0x6c(%rbp),%eax
mov    %eax,-0x154(%rbp)
jmp    18be <tce_sort_4_scalar+0x7be>
mov    -0x5c(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x154(%rbp)
mov    -0x154(%rbp),%eax
mov    %eax,-0x104(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
cmp    -0x104(%rbp),%eax
jge    19e1 <tce_sort_4_scalar+0x8e1>
mov    -0x84(%rbp),%eax
mov    -0xf4(%rbp),%ecx
imul   -0x9c(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x94(%rbp),%eax
mov    -0xf4(%rbp),%ecx
imul   -0xac(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x68(%rbp),%eax
add    $0x8,%eax
cmp    -0x78(%rbp),%eax
jle    1935 <tce_sort_4_scalar+0x835>
mov    -0x78(%rbp),%eax
mov    %eax,-0x158(%rbp)
jmp    1941 <tce_sort_4_scalar+0x841>
mov    -0x68(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x158(%rbp)
mov    -0x158(%rbp),%eax
mov    %eax,-0x110(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
cmp    -0x110(%rbp),%eax
jge    19c8 <tce_sort_4_scalar+0x8c8>
mov    -0x7c(%rbp),%eax
mov    -0x100(%rbp),%ecx
imul   -0xa8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x54(%rbp)
mov    -0x8c(%rbp),%eax
mov    -0x100(%rbp),%ecx
imul   -0xb8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x100(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x100(%rbp)
jmp    1956 <tce_sort_4_scalar+0x856>
jmp    19cd <tce_sort_4_scalar+0x8cd>
mov    -0xf4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4(%rbp)
jmp    18d3 <tce_sort_4_scalar+0x7d3>
jmp    19e6 <tce_sort_4_scalar+0x8e6>
mov    -0x68(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x68(%rbp)
jmp    1889 <tce_sort_4_scalar+0x789>
jmp    19f9 <tce_sort_4_scalar+0x8f9>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1849 <tce_sort_4_scalar+0x749>
jmp    1a0c <tce_sort_4_scalar+0x90c>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    1819 <tce_sort_4_scalar+0x719>
jmp    1a1f <tce_sort_4_scalar+0x91f>
mov    -0x5c(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x5c(%rbp)
jmp    1806 <tce_sort_4_scalar+0x706>
jmp    1a32 <tce_sort_4_scalar+0x932>
add    $0xe0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<tce_sort_4_scalar>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xf8,%rsp
mov    %rsi,0x50(%rsp)
mov    %rdi,0x48(%rsp)
movslq 0x140(%rsp),%r11
movslq 0x138(%rsp),%rax
movslq 0x130(%rsp),%rbx
movslq 0x148(%rsp),%r10
mov    %edx,0xd0(%rsp)
mov    %ecx,0xd4(%rsp)
mov    %r8d,0xd8(%rsp)
mov    %r9d,0xdc(%rsp)
imul   %r9d,%r8d
imul   %r8d,%ecx
mov    0xd0(%rsp,%rax,4),%edi
mov    0xd0(%rsp,%r11,4),%esi
mov    0xd0(%rsp,%r10,4),%ebp
mov    %ebp,%edx
mov    %rsi,-0x8(%rsp)
imul   %esi,%edx
mov    %edx,%esi
mov    %rdi,-0x10(%rsp)
imul   %edi,%esi
mov    %ecx,0xc0(%rsp)
mov    %r8d,0xc4(%rsp)
mov    %r9d,0xc8(%rsp)
movl   $0x1,0xcc(%rsp)
mov    0xd0(%rsp,%rbx,4),%ecx
mov    %rcx,-0x20(%rsp)
mov    %rbp,0x8(%rsp)
movslq %ebp,%rcx
mov    %rcx,-0x70(%rsp)
mov    %rbx,0xe8(%rsp)
movslq 0xc0(%rsp,%rbx,4),%rcx
mov    %rcx,0x20(%rsp)
mov    %rax,0xe0(%rsp)
movslq 0xc0(%rsp,%rax,4),%rcx
mov    %rcx,0x30(%rsp)
movslq %esi,%rcx
mov    %rcx,0x18(%rsp)
mov    %r11,0x80(%rsp)
movslq 0xc0(%rsp,%r11,4),%rcx
mov    %rcx,0x38(%rsp)
movslq 0xc0(%rsp,%r10,4),%rcx
mov    %rcx,-0x38(%rsp)
cmp    $0x3,%r10
movslq %edx,%rax
mov    %rax,0x28(%rsp)
jne    1498 <tce_sort_4_scalar+0x398>
cmpl   $0x0,-0x20(%rsp)
jle    1498 <tce_sort_4_scalar+0x398>
mov    0x8(%rsp),%r14
and    $0xfffffffe,%r14d
mov    0x48(%rsp),%rdx
mov    -0x38(%rsp),%rcx
lea    (%rdx,%rcx,8),%rax
mov    %rax,-0x78(%rsp)
mov    0x20(%rsp),%rax
lea    0x0(,%rax,8),%rax
mov    %rax,-0x60(%rsp)
mov    0x30(%rsp),%rax
lea    0x0(,%rax,8),%rax
mov    %rax,0x40(%rsp)
mov    0x38(%rsp),%rax
lea    0x0(,%rax,8),%r9
mov    %rcx,%rax
shl    $0x4,%rax
mov    0x50(%rsp),%rcx
add    $0x8,%rcx
mov    %rcx,(%rsp)
mov    0x18(%rsp),%rcx
lea    0x0(,%rcx,8),%rcx
mov    %rcx,-0x68(%rsp)
mov    0x28(%rsp),%rcx
lea    0x0(,%rcx,8),%rcx
mov    %rcx,0x98(%rsp)
mov    -0x70(%rsp),%rcx
lea    0x0(,%rcx,8),%r8
xor    %ecx,%ecx
mov    %rcx,-0x40(%rsp)
mov    %rdx,-0x58(%rsp)
jmp    1314 <tce_sort_4_scalar+0x214>
nopl   0x0(%rax,%rax,1)
mov    -0x40(%rsp),%rsi
add    $0x1,%rsi
mov    -0x60(%rsp),%rcx
add    %rcx,-0x78(%rsp)
mov    -0x68(%rsp),%rdx
add    %rdx,(%rsp)
add    %rcx,-0x58(%rsp)
mov    %rsi,%rcx
mov    %rsi,-0x40(%rsp)
cmp    -0x20(%rsp),%rsi
je     1498 <tce_sort_4_scalar+0x398>
cmpl   $0x0,-0x10(%rsp)
jle    12e0 <tce_sort_4_scalar+0x1e0>
mov    -0x40(%rsp),%rcx
mov    %rcx,%rdx
imul   0x20(%rsp),%rdx
mov    %rdx,0x90(%rsp)
imul   0x18(%rsp),%rcx
mov    %rcx,0x88(%rsp)
mov    -0x58(%rsp),%rcx
mov    %rcx,0x58(%rsp)
mov    (%rsp),%rcx
mov    %rcx,0x10(%rsp)
mov    -0x78(%rsp),%rcx
mov    %rcx,-0x30(%rsp)
xor    %r10d,%r10d
jmp    13a0 <tce_sort_4_scalar+0x2a0>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r10
mov    0x40(%rsp),%rcx
add    %rcx,-0x30(%rsp)
mov    0x10(%rsp),%rdx
add    0x98(%rsp),%rdx
mov    %rdx,0x10(%rsp)
add    %rcx,0x58(%rsp)
cmp    -0x10(%rsp),%r10
je     12e0 <tce_sort_4_scalar+0x1e0>
cmpl   $0x0,-0x8(%rsp)
jle    1370 <tce_sort_4_scalar+0x270>
mov    %r10,%r11
imul   0x30(%rsp),%r11
add    0x90(%rsp),%r11
mov    %r10,%r12
imul   0x28(%rsp),%r12
add    0x88(%rsp),%r12
mov    0x58(%rsp),%rsi
mov    0x10(%rsp),%rdi
mov    -0x30(%rsp),%rbx
xor    %ecx,%ecx
jmp    13f8 <tce_sort_4_scalar+0x2f8>
nopl   0x0(%rax)
add    $0x1,%rcx
add    %r9,%rbx
add    %r8,%rdi
add    %r9,%rsi
cmp    -0x8(%rsp),%rcx
je     1370 <tce_sort_4_scalar+0x270>
cmpl   $0x0,-0x70(%rsp)
jle    13e0 <tce_sort_4_scalar+0x2e0>
cmpl   $0x1,0x8(%rsp)
jne    1410 <tce_sort_4_scalar+0x310>
xor    %r15d,%r15d
jmp    144d <tce_sort_4_scalar+0x34d>
nopl   0x0(%rax,%rax,1)
xor    %r13d,%r13d
xor    %r15d,%r15d
cs nopw 0x0(%rax,%rax,1)
movsd  (%rsi,%r13,1),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,-0x8(%rdi,%r15,8)
movsd  (%rbx,%r13,1),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%rdi,%r15,8)
add    $0x2,%r15
add    %rax,%r13
cmp    %r15,%r14
jne    1420 <tce_sort_4_scalar+0x320>
testb  $0x1,0x8(%rsp)
je     13e0 <tce_sort_4_scalar+0x2e0>
mov    %rcx,%r13
imul   0x38(%rsp),%r13
add    %r11,%r13
mov    %rcx,%rdx
imul   -0x70(%rsp),%rdx
add    %r12,%rdx
add    %r15,%rdx
imul   -0x38(%rsp),%r15
add    %r13,%r15
mov    0x48(%rsp),%rbp
movsd  0x0(%rbp,%r15,8),%xmm1
mulsd  %xmm0,%xmm1
mov    0x50(%rsp),%rbp
movsd  %xmm1,0x0(%rbp,%rdx,8)
jmp    13e0 <tce_sort_4_scalar+0x2e0>
cmpl   $0x3,0x80(%rsp)
03
mov    -0x70(%rsp),%rcx
jne    1862 <tce_sort_4_scalar+0x762>
cmpl   $0x0,-0x20(%rsp)
jle    1862 <tce_sort_4_scalar+0x762>
mov    0x20(%rsp),%rax
lea    0x0(,%rax,8),%rax
mov    %rax,0xa8(%rsp)
mov    0x30(%rsp),%rax
lea    0x0(,%rax,8),%rax
mov    %rax,-0x18(%rsp)
mov    0x38(%rsp),%rax
mov    %rax,%rdx
shl    $0x6,%rdx
mov    %rdx,0x80(%rsp)
lea    0x0(,%rax,8),%rbx
mov    -0x38(%rsp),%rax
lea    (%rax,%rax,1),%rbp
mov    0x50(%rsp),%rax
add    $0x8,%rax
mov    %rax,0xa0(%rsp)
mov    0x18(%rsp),%rax
lea    0x0(,%rax,8),%rax
mov    %rax,0xf0(%rsp)
mov    0x28(%rsp),%rax
lea    0x0(,%rax,8),%rax
mov    %rax,0x68(%rsp)
mov    %rcx,%rax
shl    $0x6,%rax
mov    %rax,0xb8(%rsp)
lea    0x0(,%rcx,8),%rax
mov    %rax,0x10(%rsp)
xor    %eax,%eax
mov    %rax,-0x50(%rsp)
mov    0x48(%rsp),%rax
mov    %rax,-0x28(%rsp)
mov    %rbx,0x40(%rsp)
jmp    15ae <tce_sort_4_scalar+0x4ae>
xchg   %ax,%ax
mov    -0x50(%rsp),%rdx
add    $0x1,%rdx
mov    -0x28(%rsp),%rax
add    0xa8(%rsp),%rax
mov    %rax,-0x28(%rsp)
mov    0xf0(%rsp),%rax
add    %rax,0xa0(%rsp)
mov    %rdx,%rax
mov    %rdx,-0x50(%rsp)
cmp    -0x20(%rsp),%rdx
je     1862 <tce_sort_4_scalar+0x762>
cmpl   $0x0,-0x10(%rsp)
jle    1570 <tce_sort_4_scalar+0x470>
mov    -0x50(%rsp),%rax
mov    %rax,%rdx
imul   0x20(%rsp),%rdx
mov    %rdx,0xb0(%rsp)
imul   0x18(%rsp),%rax
mov    %rax,0x60(%rsp)
mov    0xa0(%rsp),%rax
mov    %rax,0x78(%rsp)
mov    -0x28(%rsp),%rax
mov    %rax,0x70(%rsp)
xor    %eax,%eax
mov    %rax,-0x48(%rsp)
jmp    163a <tce_sort_4_scalar+0x53a>
cs nopw 0x0(%rax,%rax,1)
mov    -0x48(%rsp),%rdx
add    $0x1,%rdx
mov    0x70(%rsp),%rax
add    -0x18(%rsp),%rax
mov    %rax,0x70(%rsp)
mov    0x78(%rsp),%rax
add    0x68(%rsp),%rax
mov    %rax,0x78(%rsp)
mov    %rdx,%rax
mov    %rdx,-0x48(%rsp)
cmp    -0x10(%rsp),%rdx
je     1570 <tce_sort_4_scalar+0x470>
cmpl   $0x0,-0x8(%rsp)
jle    1600 <tce_sort_4_scalar+0x500>
mov    -0x48(%rsp),%rax
mov    %rax,%rdx
imul   0x30(%rsp),%rdx
add    0xb0(%rsp),%rdx
mov    %rdx,0x88(%rsp)
imul   0x28(%rsp),%rax
add    0x60(%rsp),%rax
mov    %rax,-0x40(%rsp)
mov    0x78(%rsp),%rax
mov    %rax,-0x60(%rsp)
mov    0x70(%rsp),%rax
mov    %rax,-0x68(%rsp)
xor    %eax,%eax
mov    %rax,-0x78(%rsp)
jmp    16cc <tce_sort_4_scalar+0x5cc>
nopl   0x0(%rax)
mov    -0x78(%rsp),%rdx
add    $0x8,%rdx
mov    -0x68(%rsp),%rax
add    0x80(%rsp),%rax
mov    %rax,-0x68(%rsp)
mov    -0x60(%rsp),%rax
add    0xb8(%rsp),%rax
mov    %rax,-0x60(%rsp)
mov    %rdx,-0x78(%rsp)
cmp    %edx,-0x8(%rsp)
jle    1600 <tce_sort_4_scalar+0x500>
test   %ecx,%ecx
jle    1690 <tce_sort_4_scalar+0x590>
mov    -0x78(%rsp),%rax
add    $0x8,%eax
mov    -0x8(%rsp),%rcx
cmp    %ecx,%eax
mov    %ecx,%edx
mov    -0x70(%rsp),%rcx
cmovle %eax,%edx
mov    %edx,-0x58(%rsp)
movslq %edx,%r15
xor    %eax,%eax
mov    %rax,(%rsp)
xor    %esi,%esi
jmp    170d <tce_sort_4_scalar+0x60d>
nopw   0x0(%rax,%rax,1)
add    $0x8,%rsi
addq   $0x1,(%rsp)
cmp    %esi,%ecx
jle    1690 <tce_sort_4_scalar+0x590>
lea    0x8(%rsi),%eax
cmp    %eax,%ecx
mov    %eax,%edx
cmovl  %ecx,%edx
mov    -0x58(%rsp),%edi
cmp    -0x78(%rsp),%edi
jle    1700 <tce_sort_4_scalar+0x600>
mov    (%rsp),%rdi
lea    0x0(,%rdi,8),%rdi
movslq %edx,%r14
not    %rdi
mov    %rdi,0x58(%rsp)
cmp    %ecx,%eax
mov    0x8(%rsp),%rcx
mov    %ecx,%r10d
mov    -0x70(%rsp),%rcx
cmovle %eax,%r10d
movslq %r10d,%r11
mov    %rsi,%rax
imul   -0x38(%rsp),%rax
mov    %rax,0x98(%rsp)
mov    %rsi,%rax
or     $0x1,%rax
mov    %rax,0x90(%rsp)
mov    %r14,%rax
mov    %r14,-0x30(%rsp)
neg    %r14
mov    -0x60(%rsp),%rdx
mov    -0x68(%rsp),%rax
mov    -0x78(%rsp),%r9
jmp    17a5 <tce_sort_4_scalar+0x6a5>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r9
add    %rbx,%rax
add    0x10(%rsp),%rdx
cmp    %r15,%r9
jge    1700 <tce_sort_4_scalar+0x600>
cmp    %esi,%r10d
jle    1790 <tce_sort_4_scalar+0x690>
mov    %rsi,%r12
testb  $0x1,-0x30(%rsp)
je     1806 <tce_sort_4_scalar+0x706>
mov    %r9,%rdi
imul   0x38(%rsp),%rdi
add    0x88(%rsp),%rdi
mov    %r9,%rbx
imul   %rcx,%rbx
add    -0x40(%rsp),%rbx
add    0x98(%rsp),%rdi
add    %rsi,%rbx
mov    0x48(%rsp),%rcx
movsd  (%rcx,%rdi,8),%xmm1
mov    -0x70(%rsp),%rcx
mulsd  %xmm0,%xmm1
mov    0x50(%rsp),%rdi
movsd  %xmm1,(%rdi,%rbx,8)
mov    0x40(%rsp),%rbx
mov    0x90(%rsp),%r12
cmp    %r14,0x58(%rsp)
je     1790 <tce_sort_4_scalar+0x690>
lea    0x1(%r12),%rdi
mov    -0x38(%rsp),%rbx
imul   %rbx,%rdi
lea    (%rax,%rdi,8),%rdi
imul   %r12,%rbx
lea    (%rax,%rbx,8),%r8
mov    0x40(%rsp),%rbx
xor    %r13d,%r13d
nop
movsd  (%r8,%r13,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,-0x8(%rdx,%r12,8)
movsd  (%rdi,%r13,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%rdx,%r12,8)
add    $0x2,%r12
add    %rbp,%r13
cmp    %r11,%r12
jl     1830 <tce_sort_4_scalar+0x730>
jmp    1790 <tce_sort_4_scalar+0x690>
cmpl   $0x3,0xe0(%rsp)
03
jne    1c42 <tce_sort_4_scalar+0xb42>
cmpl   $0x0,-0x20(%rsp)
jle    1c42 <tce_sort_4_scalar+0xb42>
mov    0x20(%rsp),%rax
lea    0x0(,%rax,8),%rax
mov    %rax,0xa0(%rsp)
mov    0x30(%rsp),%rax
mov    %rax,%rdx
shl    $0x6,%rdx
mov    %rdx,0x68(%rsp)
mov    0x38(%rsp),%rdx
lea    0x0(,%rdx,8),%rdx
mov    %rdx,0x80(%rsp)
lea    0x0(,%rax,8),%rax
mov    %rax,-0x30(%rsp)
mov    -0x38(%rsp),%rax
lea    (%rax,%rax,1),%r8
mov    0x50(%rsp),%rax
add    $0x8,%rax
mov    %rax,-0x28(%rsp)
mov    0x18(%rsp),%rax
lea    0x0(,%rax,8),%rax
mov    %rax,0xa8(%rsp)
mov    0x28(%rsp),%rax
mov    %rax,%rdx
shl    $0x6,%rdx
mov    %rdx,0xb0(%rsp)
lea    0x0(,%rcx,8),%rdx
mov    %rdx,0xb8(%rsp)
lea    0x0(,%rax,8),%rax
mov    %rax,0x10(%rsp)
xor    %eax,%eax
mov    %rax,0x60(%rsp)
mov    0x48(%rsp),%rax
mov    %rax,-0x50(%rsp)
jmp    197b <tce_sort_4_scalar+0x87b>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x60(%rsp),%rdx
add    $0x1,%rdx
mov    -0x50(%rsp),%rax
add    0xa0(%rsp),%rax
mov    %rax,-0x50(%rsp)
mov    0xa8(%rsp),%rax
add    %rax,-0x28(%rsp)
mov    %rdx,%rax
mov    %rdx,0x60(%rsp)
cmp    -0x20(%rsp),%rdx
je     1c42 <tce_sort_4_scalar+0xb42>
cmpl   $0x0,-0x10(%rsp)
jle    1940 <tce_sort_4_scalar+0x840>
mov    0x60(%rsp),%rax
mov    %rax,%rdx
imul   0x20(%rsp),%rdx
mov    %rdx,0x78(%rsp)
imul   0x18(%rsp),%rax
mov    %rax,0x70(%rsp)
mov    -0x28(%rsp),%rax
mov    %rax,-0x48(%rsp)
mov    -0x50(%rsp),%rax
mov    %rax,-0x18(%rsp)
xor    %eax,%eax
mov    %rax,-0x78(%rsp)
jmp    19f9 <tce_sort_4_scalar+0x8f9>
nopl   (%rax)
mov    -0x78(%rsp),%rdx
add    $0x8,%rdx
mov    -0x18(%rsp),%rax
add    0x68(%rsp),%rax
mov    %rax,-0x18(%rsp)
mov    -0x48(%rsp),%rax
add    0xb0(%rsp),%rax
mov    %rax,-0x48(%rsp)
mov    %rdx,-0x78(%rsp)
cmp    %edx,-0x10(%rsp)
jle    1940 <tce_sort_4_scalar+0x840>
cmpl   $0x0,-0x8(%rsp)
jle    19c0 <tce_sort_4_scalar+0x8c0>
mov    -0x78(%rsp),%rax
add    $0x8,%eax
mov    -0x10(%rsp),%rcx
cmp    %ecx,%eax
mov    %ecx,%edx
mov    -0x70(%rsp),%rcx
cmovle %eax,%edx
mov    %edx,(%rsp)
movslq %edx,%rdx
mov    -0x48(%rsp),%rax
mov    %rax,-0x58(%rsp)
mov    -0x18(%rsp),%rax
mov    %rax,-0x60(%rsp)
xor    %eax,%eax
mov    %rax,-0x68(%rsp)
jmp    1a85 <tce_sort_4_scalar+0x985>
nopl   0x0(%rax)
mov    -0x68(%rsp),%rcx
add    $0x1,%rcx
mov    -0x60(%rsp),%rax
add    0x80(%rsp),%rax
mov    %rax,-0x60(%rsp)
mov    -0x58(%rsp),%rax
add    0xb8(%rsp),%rax
mov    %rax,-0x58(%rsp)
mov    %rcx,%rax
mov    %rcx,-0x68(%rsp)
cmp    -0x8(%rsp),%rcx
mov    -0x70(%rsp),%rcx
je     19c0 <tce_sort_4_scalar+0x8c0>
test   %ecx,%ecx
jle    1a40 <tce_sort_4_scalar+0x940>
mov    -0x68(%rsp),%rax
mov    %rax,%rcx
imul   0x38(%rsp),%rcx
add    0x78(%rsp),%rcx
mov    %rcx,0x90(%rsp)
imul   -0x70(%rsp),%rax
add    0x70(%rsp),%rax
mov    %rax,0x88(%rsp)
xor    %eax,%eax
mov    %rax,-0x40(%rsp)
xor    %edi,%edi
jmp    1ae4 <tce_sort_4_scalar+0x9e4>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x8,%rdi
addq   $0x1,-0x40(%rsp)
cmp    %edi,0x8(%rsp)
jle    1a40 <tce_sort_4_scalar+0x940>
lea    0x8(%rdi),%ecx
mov    -0x70(%rsp),%rax
cmp    %ecx,%eax
mov    %ecx,%esi
cmovl  %eax,%esi
mov    (%rsp),%eax
cmp    -0x78(%rsp),%eax
jle    1ad0 <tce_sort_4_scalar+0x9d0>
mov    -0x40(%rsp),%rax
lea    0x0(,%rax,8),%rax
movslq %esi,%rbp
not    %rax
mov    %rax,0x58(%rsp)
cmp    0x8(%rsp),%ecx
mov    -0x70(%rsp),%rax
mov    %eax,%r10d
mov    -0x30(%rsp),%rax
cmovle %ecx,%r10d
movslq %r10d,%rsi
mov    %rdi,%rcx
imul   -0x38(%rsp),%rcx
mov    %rcx,0x40(%rsp)
mov    %rdi,%rcx
or     $0x1,%rcx
mov    %rcx,0x98(%rsp)
mov    %rbp,%r12
mov    %rbp,%rcx
neg    %rcx
mov    -0x58(%rsp),%r15
mov    -0x60(%rsp),%r11
mov    -0x78(%rsp),%r9
jmp    1b85 <tce_sort_4_scalar+0xa85>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%r9
add    %rax,%r11
add    0x10(%rsp),%r15
cmp    %rdx,%r9
jge    1ad0 <tce_sort_4_scalar+0x9d0>
cmp    %edi,%r10d
jle    1b70 <tce_sort_4_scalar+0xa70>
mov    %rdi,%r14
test   $0x1,%r12b
je     1be2 <tce_sort_4_scalar+0xae2>
mov    %r9,%rbx
imul   0x30(%rsp),%rbx
add    0x90(%rsp),%rbx
mov    %r9,%rbp
imul   0x28(%rsp),%rbp
add    0x88(%rsp),%rbp
add    0x40(%rsp),%rbx
add    %rdi,%rbp
mov    0x48(%rsp),%rax
movsd  (%rax,%rbx,8),%xmm1
mov    -0x30(%rsp),%rax
mulsd  %xmm0,%xmm1
mov    0x50(%rsp),%rbx
movsd  %xmm1,(%rbx,%rbp,8)
mov    0x98(%rsp),%r14
cmp    %rcx,0x58(%rsp)
je     1b70 <tce_sort_4_scalar+0xa70>
lea    0x1(%r14),%rbx
mov    -0x38(%rsp),%rbp
imul   %rbp,%rbx
lea    (%r11,%rbx,8),%rbx
imul   %r14,%rbp
lea    (%r11,%rbp,8),%r13
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  0x0(%r13,%rbp,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,-0x8(%r15,%r14,8)
movsd  (%rbx,%rbp,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%r15,%r14,8)
add    $0x2,%r14
add    %r8,%rbp
cmp    %rsi,%r14
jl     1c10 <tce_sort_4_scalar+0xb10>
jmp    1b70 <tce_sort_4_scalar+0xa70>
cmpl   $0x3,0xe8(%rsp)
03
jne    2011 <tce_sort_4_scalar+0xf11>
cmpl   $0x0,-0x20(%rsp)
jle    2011 <tce_sort_4_scalar+0xf11>
mov    0x20(%rsp),%rax
mov    %rax,%rdx
shl    $0x6,%rdx
mov    %rdx,0xa0(%rsp)
mov    0x30(%rsp),%rdx
lea    0x0(,%rdx,8),%rdx
mov    %rdx,0xb0(%rsp)
mov    0x38(%rsp),%rdx
lea    0x0(,%rdx,8),%rdx
mov    %rdx,0x80(%rsp)
lea    0x0(,%rax,8),%rax
mov    %rax,-0x30(%rsp)
mov    -0x38(%rsp),%rax
lea    (%rax,%rax,1),%r13
mov    0x50(%rsp),%rax
add    $0x8,%rax
mov    %rax,-0x28(%rsp)
mov    0x18(%rsp),%rax
mov    %rax,%rdx
shl    $0x6,%rdx
mov    %rdx,0xa8(%rsp)
mov    0x28(%rsp),%rdx
lea    0x0(,%rdx,8),%rdx
mov    %rdx,0x60(%rsp)
lea    0x0(,%rcx,8),%rcx
mov    %rcx,0xb8(%rsp)
lea    0x0(,%rax,8),%rax
mov    %rax,0x58(%rsp)
xor    %eax,%eax
mov    %rax,-0x78(%rsp)
mov    0x48(%rsp),%rax
mov    %rax,-0x50(%rsp)
jmp    1d57 <tce_sort_4_scalar+0xc57>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    -0x78(%rsp),%rcx
add    $0x8,%rcx
mov    -0x50(%rsp),%rax
add    0xa0(%rsp),%rax
mov    %rax,-0x50(%rsp)
mov    0xa8(%rsp),%rax
add    %rax,-0x28(%rsp)
mov    %rcx,-0x78(%rsp)
cmp    %ecx,-0x20(%rsp)
jle    2011 <tce_sort_4_scalar+0xf11>
cmpl   $0x0,-0x10(%rsp)
jle    1d20 <tce_sort_4_scalar+0xc20>
mov    -0x78(%rsp),%rax
add    $0x8,%eax
mov    -0x20(%rsp),%rcx
cmp    %ecx,%eax
mov    %ecx,%edx
mov    -0x70(%rsp),%rcx
cmovle %eax,%edx
mov    %edx,(%rsp)
movslq %edx,%rax
mov    %rax,0x10(%rsp)
mov    -0x28(%rsp),%rax
mov    %rax,-0x48(%rsp)
mov    -0x50(%rsp),%rax
mov    %rax,-0x18(%rsp)
xor    %eax,%eax
mov    %rax,0x68(%rsp)
jmp    1ddd <tce_sort_4_scalar+0xcdd>
nop
mov    0x68(%rsp),%rdx
add    $0x1,%rdx
mov    -0x18(%rsp),%rax
add    0xb0(%rsp),%rax
mov    %rax,-0x18(%rsp)
mov    -0x48(%rsp),%rax
add    0x60(%rsp),%rax
mov    %rax,-0x48(%rsp)
mov    %rdx,%rax
mov    %rdx,0x68(%rsp)
cmp    -0x10(%rsp),%rdx
je     1d20 <tce_sort_4_scalar+0xc20>
cmpl   $0x0,-0x8(%rsp)
jle    1da0 <tce_sort_4_scalar+0xca0>
mov    0x68(%rsp),%rax
mov    %rax,%rdx
imul   0x30(%rsp),%rdx
mov    %rdx,0x78(%rsp)
imul   0x28(%rsp),%rax
mov    %rax,0x70(%rsp)
mov    -0x48(%rsp),%rax
mov    %rax,-0x58(%rsp)
mov    -0x18(%rsp),%rax
mov    %rax,-0x60(%rsp)
xor    %eax,%eax
mov    %rax,-0x68(%rsp)
jmp    1e60 <tce_sort_4_scalar+0xd60>
nop
mov    -0x68(%rsp),%rdx
add    $0x1,%rdx
mov    -0x60(%rsp),%rax
add    0x80(%rsp),%rax
mov    %rax,-0x60(%rsp)
mov    -0x58(%rsp),%rax
add    0xb8(%rsp),%rax
mov    %rax,-0x58(%rsp)
mov    %rdx,%rax
mov    %rdx,-0x68(%rsp)
cmp    -0x8(%rsp),%rdx
je     1da0 <tce_sort_4_scalar+0xca0>
cmpl   $0x0,0x8(%rsp)
jle    1e20 <tce_sort_4_scalar+0xd20>
mov    -0x68(%rsp),%rax
mov    %rax,%rdx
imul   0x38(%rsp),%rdx
add    0x78(%rsp),%rdx
mov    %rdx,0x90(%rsp)
imul   %rcx,%rax
add    0x70(%rsp),%rax
mov    %rax,0x88(%rsp)
xor    %eax,%eax
mov    %rax,-0x40(%rsp)
xor    %edi,%edi
jmp    1eb7 <tce_sort_4_scalar+0xdb7>
xchg   %ax,%ax
add    $0x8,%rdi
addq   $0x1,-0x40(%rsp)
mov    -0x70(%rsp),%rcx
cmp    %edi,%ecx
jle    1e20 <tce_sort_4_scalar+0xd20>
lea    0x8(%rdi),%eax
mov    0x8(%rsp),%rcx
cmp    %eax,%ecx
mov    %eax,%edx
cmovl  %ecx,%edx
mov    (%rsp),%ecx
cmp    -0x78(%rsp),%ecx
mov    -0x30(%rsp),%rcx
jle    1ea0 <tce_sort_4_scalar+0xda0>
mov    -0x40(%rsp),%rsi
lea    0x0(,%rsi,8),%r15
movslq %edx,%rbp
not    %r15
cmp    0x8(%rsp),%eax
mov    -0x70(%rsp),%rdx
mov    %edx,%r10d
cmovle %eax,%r10d
movslq %r10d,%rsi
mov    %rdi,%rax
imul   -0x38(%rsp),%rax
mov    %rax,0x40(%rsp)
mov    %rdi,%rax
or     $0x1,%rax
mov    %rax,0x98(%rsp)
mov    %rbp,%r9
mov    %rbp,%rax
neg    %rax
mov    -0x58(%rsp),%r12
mov    -0x60(%rsp),%r14
mov    -0x78(%rsp),%r11
jmp    1f57 <tce_sort_4_scalar+0xe57>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r11
add    %rcx,%r14
add    0x58(%rsp),%r12
cmp    0x10(%rsp),%r11
jge    1ea0 <tce_sort_4_scalar+0xda0>
cmp    %edi,%r10d
jle    1f40 <tce_sort_4_scalar+0xe40>
mov    %rdi,%rdx
test   $0x1,%r9b
je     1faf <tce_sort_4_scalar+0xeaf>
mov    %r11,%rdx
imul   0x20(%rsp),%rdx
add    0x90(%rsp),%rdx
mov    %r11,%rbp
imul   0x18(%rsp),%rbp
add    0x88(%rsp),%rbp
add    0x40(%rsp),%rdx
add    %rdi,%rbp
mov    0x48(%rsp),%rbx
movsd  (%rbx,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
mov    0x50(%rsp),%rdx
movsd  %xmm1,(%rdx,%rbp,8)
mov    0x98(%rsp),%rdx
cmp    %rax,%r15
je     1f40 <tce_sort_4_scalar+0xe40>
lea    0x1(%rdx),%rbp
mov    -0x38(%rsp),%rcx
imul   %rcx,%rbp
lea    (%r14,%rbp,8),%rbx
mov    %rcx,%rbp
mov    -0x30(%rsp),%rcx
imul   %rdx,%rbp
lea    (%r14,%rbp,8),%r8
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
movsd  (%r8,%rbp,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,-0x8(%r12,%rdx,8)
movsd  (%rbx,%rbp,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%r12,%rdx,8)
add    $0x2,%rdx
add    %r13,%rbp
cmp    %rsi,%rdx
jl     1fe0 <tce_sort_4_scalar+0xee0>
jmp    1f40 <tce_sort_4_scalar+0xe40>
add    $0xf8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @tce_sort_4_scalar(double* %0, double* %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32 %7, i32 %8, i32 %9, double %10) {
%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
%21 = alloca i32
%22 = alloca double
%23 = alloca [4 x i32]
%24 = alloca [4 x i32]
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
%45 = alloca i32
%46 = alloca i32
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca [4 x i32]
%52 = alloca [4 x i32]
%53 = alloca [4 x i32]
%54 = alloca i32
%55 = alloca i32
%56 = alloca i32
%57 = alloca i32
%58 = alloca i32
%59 = alloca i32
%60 = alloca i32
%61 = alloca i32
%62 = alloca i32
%63 = alloca i32
%64 = alloca i32
%65 = alloca i32
%66 = alloca i32
%67 = alloca i32
%68 = alloca i32
%69 = alloca double*
%70 = alloca double*
store double* %0, double** %12
store double* %1, double** %13
store i32 %2, i32* %14
store i32 %3, i32* %15
store i32 %4, i32* %16
store i32 %5, i32* %17
store i32 %6, i32* %18
store i32 %7, i32* %19
store i32 %8, i32* %20
store i32 %9, i32* %21
store double %10, double* %22
%71 = load i32, i32* %14
%72 = getelementptr inbounds [4 x i32], [4 x i32]* %24, i64 0, i64 0
store i32 %71, i32* %72
%73 = load i32, i32* %15
%74 = getelementptr inbounds [4 x i32], [4 x i32]* %24, i64 0, i64 1
store i32 %73, i32* %74
%75 = load i32, i32* %16
%76 = getelementptr inbounds [4 x i32], [4 x i32]* %24, i64 0, i64 2
store i32 %75, i32* %76
%77 = load i32, i32* %17
%78 = getelementptr inbounds [4 x i32], [4 x i32]* %24, i64 0, i64 3
store i32 %77, i32* %78
%79 = load i32, i32* %15
%80 = load i32, i32* %16
%81 = mul nsw i32 %79, %80
%82 = load i32, i32* %17
%83 = mul nsw i32 %81, %82
%84 = getelementptr inbounds [4 x i32], [4 x i32]* %51, i64 0, i64 0
store i32 %83, i32* %84
%85 = load i32, i32* %16
%86 = load i32, i32* %17
%87 = mul nsw i32 %85, %86
%88 = getelementptr inbounds [4 x i32], [4 x i32]* %51, i64 0, i64 1
store i32 %87, i32* %88
%89 = load i32, i32* %17
%90 = getelementptr inbounds [4 x i32], [4 x i32]* %51, i64 0, i64 2
store i32 %89, i32* %90
%91 = getelementptr inbounds [4 x i32], [4 x i32]* %51, i64 0, i64 3
store i32 1, i32* %91
%92 = load i32, i32* %18
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds [4 x i32], [4 x i32]* %24, i64 0, i64 %93
%95 = load i32, i32* %94
store i32 %95, i32* %31
%96 = load i32, i32* %19
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [4 x i32], [4 x i32]* %24, i64 0, i64 %97
%99 = load i32, i32* %98
store i32 %99, i32* %32
%100 = load i32, i32* %20
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds [4 x i32], [4 x i32]* %24, i64 0, i64 %101
%103 = load i32, i32* %102
store i32 %103, i32* %33
%104 = load i32, i32* %21
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds [4 x i32], [4 x i32]* %24, i64 0, i64 %105
%107 = load i32, i32* %106
store i32 %107, i32* %34
%108 = load i32, i32* %18
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds [4 x i32], [4 x i32]* %51, i64 0, i64 %109
%111 = load i32, i32* %110
store i32 %111, i32* %43
%112 = load i32, i32* %19
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [4 x i32], [4 x i32]* %51, i64 0, i64 %113
%115 = load i32, i32* %114
store i32 %115, i32* %44
%116 = load i32, i32* %20
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds [4 x i32], [4 x i32]* %51, i64 0, i64 %117
%119 = load i32, i32* %118
store i32 %119, i32* %45
%120 = load i32, i32* %21
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds [4 x i32], [4 x i32]* %51, i64 0, i64 %121
%123 = load i32, i32* %122
store i32 %123, i32* %46
%124 = load i32, i32* %32
%125 = load i32, i32* %33
%126 = mul nsw i32 %124, %125
%127 = load i32, i32* %34
%128 = mul nsw i32 %126, %127
store i32 %128, i32* %47
%129 = load i32, i32* %33
%130 = load i32, i32* %34
%131 = mul nsw i32 %129, %130
store i32 %131, i32* %48
%132 = load i32, i32* %34
store i32 %132, i32* %49
store i32 1, i32* %50
%133 = load i32, i32* %21
%134 = icmp eq i32 %133, 3
br i1 %134, label %135, label %219
135: ; preds = %11
store i32 0, i32* %27
br label %136
136: ; preds = %215, %135
%137 = load i32, i32* %27
%138 = load i32, i32* %31
%139 = icmp slt i32 %137, %138
br i1 %139, label %140, label %218
140: ; preds = %136
%141 = load i32, i32* %27
%142 = load i32, i32* %43
%143 = mul nsw i32 %141, %142
store i32 %143, i32* %35
%144 = load i32, i32* %27
%145 = load i32, i32* %47
%146 = mul nsw i32 %144, %145
store i32 %146, i32* %39
store i32 0, i32* %28
br label %147
147: ; preds = %211, %140
%148 = load i32, i32* %28
%149 = load i32, i32* %32
%150 = icmp slt i32 %148, %149
br i1 %150, label %151, label %214
151: ; preds = %147
%152 = load i32, i32* %35
%153 = load i32, i32* %28
%154 = load i32, i32* %44
%155 = mul nsw i32 %153, %154
%156 = add nsw i32 %152, %155
store i32 %156, i32* %36
%157 = load i32, i32* %39
%158 = load i32, i32* %28
%159 = load i32, i32* %48
%160 = mul nsw i32 %158, %159
%161 = add nsw i32 %157, %160
store i32 %161, i32* %40
store i32 0, i32* %29
br label %162
162: ; preds = %207, %151
%163 = load i32, i32* %29
%164 = load i32, i32* %33
%165 = icmp slt i32 %163, %164
br i1 %165, label %166, label %210
166: ; preds = %162
%167 = load i32, i32* %36
%168 = load i32, i32* %29
%169 = load i32, i32* %45
%170 = mul nsw i32 %168, %169
%171 = add nsw i32 %167, %170
store i32 %171, i32* %37
%172 = load i32, i32* %40
%173 = load i32, i32* %29
%174 = load i32, i32* %49
%175 = mul nsw i32 %173, %174
%176 = add nsw i32 %172, %175
store i32 %176, i32* %41
store i32 0, i32* %30
br label %177
177: ; preds = %203, %166
%178 = load i32, i32* %30
%179 = load i32, i32* %34
%180 = icmp slt i32 %178, %179
br i1 %180, label %181, label %206
181: ; preds = %177
%182 = load i32, i32* %37
%183 = load i32, i32* %30
%184 = load i32, i32* %46
%185 = mul nsw i32 %183, %184
%186 = add nsw i32 %182, %185
store i32 %186, i32* %25
%187 = load i32, i32* %41
%188 = load i32, i32* %30
%189 = load i32, i32* %50
%190 = mul nsw i32 %188, %189
%191 = add nsw i32 %187, %190
store i32 %191, i32* %26
%192 = load double*, double** %12
%193 = load i32, i32* %25
%194 = sext i32 %193 to i64
%195 = getelementptr inbounds double, double* %192, i64 %194
%196 = load double, double* %195
%197 = load double, double* %22
%198 = fmul double %196, %197
%199 = load double*, double** %13
%200 = load i32, i32* %26
%201 = sext i32 %200 to i64
%202 = getelementptr inbounds double, double* %199, i64 %201
store double %198, double* %202
br label %203
203: ; preds = %181
%204 = load i32, i32* %30
%205 = add nsw i32 %204, 1
store i32 %205, i32* %30
br label %177
206: ; preds = %177
br label %207
207: ; preds = %206
%208 = load i32, i32* %29
%209 = add nsw i32 %208, 1
store i32 %209, i32* %29
br label %162
210: ; preds = %162
br label %211
211: ; preds = %210
%212 = load i32, i32* %28
%213 = add nsw i32 %212, 1
store i32 %213, i32* %28
br label %147
214: ; preds = %147
br label %215
215: ; preds = %214
%216 = load i32, i32* %27
%217 = add nsw i32 %216, 1
store i32 %217, i32* %27
br label %136
218: ; preds = %136
br label %219
219: ; preds = %218, %11
%220 = load i32, i32* %20
%221 = icmp eq i32 %220, 3
br i1 %221, label %222, label %348
222: ; preds = %219
store i32 0, i32* %27
br label %223
223: ; preds = %344, %222
%224 = load i32, i32* %27
%225 = load i32, i32* %31
%226 = icmp slt i32 %224, %225
br i1 %226, label %227, label %347
227: ; preds = %223
%228 = load i32, i32* %27
%229 = load i32, i32* %43
%230 = mul nsw i32 %228, %229
store i32 %230, i32* %35
%231 = load i32, i32* %27
%232 = load i32, i32* %47
%233 = mul nsw i32 %231, %232
store i32 %233, i32* %39
store i32 0, i32* %28
br label %234
234: ; preds = %340, %227
%235 = load i32, i32* %28
%236 = load i32, i32* %32
%237 = icmp slt i32 %235, %236
br i1 %237, label %238, label %343
238: ; preds = %234
%239 = load i32, i32* %35
%240 = load i32, i32* %28
%241 = load i32, i32* %44
%242 = mul nsw i32 %240, %241
%243 = add nsw i32 %239, %242
store i32 %243, i32* %36
%244 = load i32, i32* %39
%245 = load i32, i32* %28
%246 = load i32, i32* %48
%247 = mul nsw i32 %245, %246
%248 = add nsw i32 %244, %247
store i32 %248, i32* %40
store i32 0, i32* %29
br label %249
249: ; preds = %336, %238
%250 = load i32, i32* %29
%251 = load i32, i32* %33
%252 = icmp slt i32 %250, %251
br i1 %252, label %253, label %339
253: ; preds = %249
store i32 0, i32* %30
br label %254
254: ; preds = %332, %253
%255 = load i32, i32* %30
%256 = load i32, i32* %34
%257 = icmp slt i32 %255, %256
br i1 %257, label %258, label %335
258: ; preds = %254
%259 = load i32, i32* %29
%260 = add nsw i32 %259, 8
%261 = load i32, i32* %33
%262 = icmp sgt i32 %260, %261
br i1 %262, label %263, label %265
263: ; preds = %258
%264 = load i32, i32* %33
br label %268
265: ; preds = %258
%266 = load i32, i32* %29
%267 = add nsw i32 %266, 8
br label %268
268: ; preds = %265, %263
%269 = phi i32 [ %264, %263 ], [ %267, %265 ]
store i32 %269, i32* %60
%270 = load i32, i32* %29
store i32 %270, i32* %56
br label %271
271: ; preds = %328, %268
%272 = load i32, i32* %56
%273 = load i32, i32* %60
%274 = icmp slt i32 %272, %273
br i1 %274, label %275, label %331
275: ; preds = %271
%276 = load i32, i32* %36
%277 = load i32, i32* %56
%278 = load i32, i32* %45
%279 = mul nsw i32 %277, %278
%280 = add nsw i32 %276, %279
store i32 %280, i32* %37
%281 = load i32, i32* %40
%282 = load i32, i32* %56
%283 = load i32, i32* %49
%284 = mul nsw i32 %282, %283
%285 = add nsw i32 %281, %284
store i32 %285, i32* %41
%286 = load i32, i32* %30
%287 = add nsw i32 %286, 8
%288 = load i32, i32* %34
%289 = icmp sgt i32 %287, %288
br i1 %289, label %290, label %292
290: ; preds = %275
%291 = load i32, i32* %34
br label %295
292: ; preds = %275
%293 = load i32, i32* %30
%294 = add nsw i32 %293, 8
br label %295
295: ; preds = %292, %290
%296 = phi i32 [ %291, %290 ], [ %294, %292 ]
store i32 %296, i32* %61
%297 = load i32, i32* %30
store i32 %297, i32* %57
br label %298
298: ; preds = %324, %295
%299 = load i32, i32* %57
%300 = load i32, i32* %61
%301 = icmp slt i32 %299, %300
br i1 %301, label %302, label %327
302: ; preds = %298
%303 = load i32, i32* %37
%304 = load i32, i32* %57
%305 = load i32, i32* %46
%306 = mul nsw i32 %304, %305
%307 = add nsw i32 %303, %306
store i32 %307, i32* %25
%308 = load i32, i32* %41
%309 = load i32, i32* %57
%310 = load i32, i32* %50
%311 = mul nsw i32 %309, %310
%312 = add nsw i32 %308, %311
store i32 %312, i32* %26
%313 = load double*, double** %12
%314 = load i32, i32* %25
%315 = sext i32 %314 to i64
%316 = getelementptr inbounds double, double* %313, i64 %315
%317 = load double, double* %316
%318 = load double, double* %22
%319 = fmul double %317, %318
%320 = load double*, double** %13
%321 = load i32, i32* %26
%322 = sext i32 %321 to i64
%323 = getelementptr inbounds double, double* %320, i64 %322
store double %319, double* %323
br label %324
324: ; preds = %302
%325 = load i32, i32* %57
%326 = add nsw i32 %325, 1
store i32 %326, i32* %57
br label %298
327: ; preds = %298
br label %328
328: ; preds = %327
%329 = load i32, i32* %56
%330 = add nsw i32 %329, 1
store i32 %330, i32* %56
br label %271
331: ; preds = %271
br label %332
332: ; preds = %331
%333 = load i32, i32* %30
%334 = add nsw i32 %333, 8
store i32 %334, i32* %30
br label %254
335: ; preds = %254
br label %336
336: ; preds = %335
%337 = load i32, i32* %29
%338 = add nsw i32 %337, 8
store i32 %338, i32* %29
br label %249
339: ; preds = %249
br label %340
340: ; preds = %339
%341 = load i32, i32* %28
%342 = add nsw i32 %341, 1
store i32 %342, i32* %28
br label %234
343: ; preds = %234
br label %344
344: ; preds = %343
%345 = load i32, i32* %27
%346 = add nsw i32 %345, 1
store i32 %346, i32* %27
br label %223
347: ; preds = %223
br label %348
348: ; preds = %347, %219
%349 = load i32, i32* %19
%350 = icmp eq i32 %349, 3
br i1 %350, label %351, label %477
351: ; preds = %348
store i32 0, i32* %27
br label %352
352: ; preds = %473, %351
%353 = load i32, i32* %27
%354 = load i32, i32* %31
%355 = icmp slt i32 %353, %354
br i1 %355, label %356, label %476
356: ; preds = %352
%357 = load i32, i32* %27
%358 = load i32, i32* %43
%359 = mul nsw i32 %357, %358
store i32 %359, i32* %35
%360 = load i32, i32* %27
%361 = load i32, i32* %47
%362 = mul nsw i32 %360, %361
store i32 %362, i32* %39
store i32 0, i32* %28
br label %363
363: ; preds = %469, %356
%364 = load i32, i32* %28
%365 = load i32, i32* %32
%366 = icmp slt i32 %364, %365
br i1 %366, label %367, label %472
367: ; preds = %363
store i32 0, i32* %29
br label %368
368: ; preds = %465, %367
%369 = load i32, i32* %29
%370 = load i32, i32* %33
%371 = icmp slt i32 %369, %370
br i1 %371, label %372, label %468
372: ; preds = %368
%373 = load i32, i32* %35
%374 = load i32, i32* %29
%375 = load i32, i32* %45
%376 = mul nsw i32 %374, %375
%377 = add nsw i32 %373, %376
store i32 %377, i32* %37
%378 = load i32, i32* %39
%379 = load i32, i32* %29
%380 = load i32, i32* %49
%381 = mul nsw i32 %379, %380
%382 = add nsw i32 %378, %381
store i32 %382, i32* %41
store i32 0, i32* %30
br label %383
383: ; preds = %461, %372
%384 = load i32, i32* %30
%385 = load i32, i32* %34
%386 = icmp slt i32 %384, %385
br i1 %386, label %387, label %464
387: ; preds = %383
%388 = load i32, i32* %28
%389 = add nsw i32 %388, 8
%390 = load i32, i32* %32
%391 = icmp sgt i32 %389, %390
br i1 %391, label %392, label %394
392: ; preds = %387
%393 = load i32, i32* %32
br label %397
394: ; preds = %387
%395 = load i32, i32* %28
%396 = add nsw i32 %395, 8
br label %397
397: ; preds = %394, %392
%398 = phi i32 [ %393, %392 ], [ %396, %394 ]
store i32 %398, i32* %59
%399 = load i32, i32* %28
store i32 %399, i32* %55
br label %400
400: ; preds = %457, %397
%401 = load i32, i32* %55
%402 = load i32, i32* %59
%403 = icmp slt i32 %401, %402
br i1 %403, label %404, label %460
404: ; preds = %400
%405 = load i32, i32* %37
%406 = load i32, i32* %55
%407 = load i32, i32* %44
%408 = mul nsw i32 %406, %407
%409 = add nsw i32 %405, %408
store i32 %409, i32* %36
%410 = load i32, i32* %41
%411 = load i32, i32* %55
%412 = load i32, i32* %48
%413 = mul nsw i32 %411, %412
%414 = add nsw i32 %410, %413
store i32 %414, i32* %40
%415 = load i32, i32* %30
%416 = add nsw i32 %415, 8
%417 = load i32, i32* %34
%418 = icmp sgt i32 %416, %417
br i1 %418, label %419, label %421
419: ; preds = %404
%420 = load i32, i32* %34
br label %424
421: ; preds = %404
%422 = load i32, i32* %30
%423 = add nsw i32 %422, 8
br label %424
424: ; preds = %421, %419
%425 = phi i32 [ %420, %419 ], [ %423, %421 ]
store i32 %425, i32* %61
%426 = load i32, i32* %30
store i32 %426, i32* %57
br label %427
427: ; preds = %453, %424
%428 = load i32, i32* %57
%429 = load i32, i32* %61
%430 = icmp slt i32 %428, %429
br i1 %430, label %431, label %456
431: ; preds = %427
%432 = load i32, i32* %36
%433 = load i32, i32* %57
%434 = load i32, i32* %46
%435 = mul nsw i32 %433, %434
%436 = add nsw i32 %432, %435
store i32 %436, i32* %25
%437 = load i32, i32* %40
%438 = load i32, i32* %57
%439 = load i32, i32* %50
%440 = mul nsw i32 %438, %439
%441 = add nsw i32 %437, %440
store i32 %441, i32* %26
%442 = load double*, double** %12
%443 = load i32, i32* %25
%444 = sext i32 %443 to i64
%445 = getelementptr inbounds double, double* %442, i64 %444
%446 = load double, double* %445
%447 = load double, double* %22
%448 = fmul double %446, %447
%449 = load double*, double** %13
%450 = load i32, i32* %26
%451 = sext i32 %450 to i64
%452 = getelementptr inbounds double, double* %449, i64 %451
store double %448, double* %452
br label %453
453: ; preds = %431
%454 = load i32, i32* %57
%455 = add nsw i32 %454, 1
store i32 %455, i32* %57
br label %427
456: ; preds = %427
br label %457
457: ; preds = %456
%458 = load i32, i32* %55
%459 = add nsw i32 %458, 1
store i32 %459, i32* %55
br label %400
460: ; preds = %400
br label %461
461: ; preds = %460
%462 = load i32, i32* %30
%463 = add nsw i32 %462, 8
store i32 %463, i32* %30
br label %383
464: ; preds = %383
br label %465
465: ; preds = %464
%466 = load i32, i32* %29
%467 = add nsw i32 %466, 1
store i32 %467, i32* %29
br label %368
468: ; preds = %368
br label %469
469: ; preds = %468
%470 = load i32, i32* %28
%471 = add nsw i32 %470, 8
store i32 %471, i32* %28
br label %363
472: ; preds = %363
br label %473
473: ; preds = %472
%474 = load i32, i32* %27
%475 = add nsw i32 %474, 1
store i32 %475, i32* %27
br label %352
476: ; preds = %352
br label %477
477: ; preds = %476, %348
%478 = load i32, i32* %18
%479 = icmp eq i32 %478, 3
br i1 %479, label %480, label %606
480: ; preds = %477
store i32 0, i32* %27
br label %481
481: ; preds = %602, %480
%482 = load i32, i32* %27
%483 = load i32, i32* %31
%484 = icmp slt i32 %482, %483
br i1 %484, label %485, label %605
485: ; preds = %481
store i32 0, i32* %28
br label %486
486: ; preds = %598, %485
%487 = load i32, i32* %28
%488 = load i32, i32* %32
%489 = icmp slt i32 %487, %488
br i1 %489, label %490, label %601
490: ; preds = %486
%491 = load i32, i32* %28
%492 = load i32, i32* %44
%493 = mul nsw i32 %491, %492
store i32 %493, i32* %36
%494 = load i32, i32* %28
%495 = load i32, i32* %48
%496 = mul nsw i32 %494, %495
store i32 %496, i32* %40
store i32 0, i32* %29
br label %497
497: ; preds = %594, %490
%498 = load i32, i32* %29
%499 = load i32, i32* %33
%500 = icmp slt i32 %498, %499
br i1 %500, label %501, label %597
501: ; preds = %497
%502 = load i32, i32* %36
%503 = load i32, i32* %29
%504 = load i32, i32* %45
%505 = mul nsw i32 %503, %504
%506 = add nsw i32 %502, %505
store i32 %506, i32* %37
%507 = load i32, i32* %40
%508 = load i32, i32* %29
%509 = load i32, i32* %49
%510 = mul nsw i32 %508, %509
%511 = add nsw i32 %507, %510
store i32 %511, i32* %41
store i32 0, i32* %30
br label %512
512: ; preds = %590, %501
%513 = load i32, i32* %30
%514 = load i32, i32* %34
%515 = icmp slt i32 %513, %514
br i1 %515, label %516, label %593
516: ; preds = %512
%517 = load i32, i32* %27
%518 = add nsw i32 %517, 8
%519 = load i32, i32* %31
%520 = icmp sgt i32 %518, %519
br i1 %520, label %521, label %523
521: ; preds = %516
%522 = load i32, i32* %31
br label %526
523: ; preds = %516
%524 = load i32, i32* %27
%525 = add nsw i32 %524, 8
br label %526
526: ; preds = %523, %521
%527 = phi i32 [ %522, %521 ], [ %525, %523 ]
store i32 %527, i32* %58
%528 = load i32, i32* %27
store i32 %528, i32* %54
br label %529
529: ; preds = %586, %526
%530 = load i32, i32* %54
%531 = load i32, i32* %58
%532 = icmp slt i32 %530, %531
br i1 %532, label %533, label %589
533: ; preds = %529
%534 = load i32, i32* %37
%535 = load i32, i32* %54
%536 = load i32, i32* %43
%537 = mul nsw i32 %535, %536
%538 = add nsw i32 %534, %537
store i32 %538, i32* %35
%539 = load i32, i32* %41
%540 = load i32, i32* %54
%541 = load i32, i32* %47
%542 = mul nsw i32 %540, %541
%543 = add nsw i32 %539, %542
store i32 %543, i32* %39
%544 = load i32, i32* %30
%545 = add nsw i32 %544, 8
%546 = load i32, i32* %34
%547 = icmp sgt i32 %545, %546
br i1 %547, label %548, label %550
548: ; preds = %533
%549 = load i32, i32* %34
br label %553
550: ; preds = %533
%551 = load i32, i32* %30
%552 = add nsw i32 %551, 8
br label %553
553: ; preds = %550, %548
%554 = phi i32 [ %549, %548 ], [ %552, %550 ]
store i32 %554, i32* %61
%555 = load i32, i32* %30
store i32 %555, i32* %57
br label %556
556: ; preds = %582, %553
%557 = load i32, i32* %57
%558 = load i32, i32* %61
%559 = icmp slt i32 %557, %558
br i1 %559, label %560, label %585
560: ; preds = %556
%561 = load i32, i32* %35
%562 = load i32, i32* %57
%563 = load i32, i32* %46
%564 = mul nsw i32 %562, %563
%565 = add nsw i32 %561, %564
store i32 %565, i32* %25
%566 = load i32, i32* %39
%567 = load i32, i32* %57
%568 = load i32, i32* %50
%569 = mul nsw i32 %567, %568
%570 = add nsw i32 %566, %569
store i32 %570, i32* %26
%571 = load double*, double** %12
%572 = load i32, i32* %25
%573 = sext i32 %572 to i64
%574 = getelementptr inbounds double, double* %571, i64 %573
%575 = load double, double* %574
%576 = load double, double* %22
%577 = fmul double %575, %576
%578 = load double*, double** %13
%579 = load i32, i32* %26
%580 = sext i32 %579 to i64
%581 = getelementptr inbounds double, double* %578, i64 %580
store double %577, double* %581
br label %582
582: ; preds = %560
%583 = load i32, i32* %57
%584 = add nsw i32 %583, 1
store i32 %584, i32* %57
br label %556
585: ; preds = %556
br label %586
586: ; preds = %585
%587 = load i32, i32* %54
%588 = add nsw i32 %587, 1
store i32 %588, i32* %54
br label %529
589: ; preds = %529
br label %590
590: ; preds = %589
%591 = load i32, i32* %30
%592 = add nsw i32 %591, 8
store i32 %592, i32* %30
br label %512
593: ; preds = %512
br label %594
594: ; preds = %593
%595 = load i32, i32* %29
%596 = add nsw i32 %595, 1
store i32 %596, i32* %29
br label %497
597: ; preds = %497
br label %598
598: ; preds = %597
%599 = load i32, i32* %28
%600 = add nsw i32 %599, 1
store i32 %600, i32* %28
br label %486
601: ; preds = %486
br label %602
602: ; preds = %601
%603 = load i32, i32* %27
%604 = add nsw i32 %603, 8
store i32 %604, i32* %27
br label %481
605: ; preds = %481
br label %606
606: ; preds = %605, %477
ret void
}

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