#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ sortd(double *, int);
int /*<<< orphan*/ sortxyd(double *, double *, int);
int /*<<< orphan*/ sortxyzd(double *, double *, double *, int);
int /*<<< orphan*/ sortxyzwd(double *, double *, double *, double *, int);
int /*<<< orphan*/ sortxyzwvd(double *, double *, double *, double *, double *,
                              int);
void sort9d(double *x, double *y, double *z, double *a, double *b, double *c,
            double *e, double *f, double *g, int n) {
  int top, n1;
  double x0, y0, z0, a0, b0, c0, e0, f0, g0;
  x0 = y0 = z0 = a0 = b0 = c0 = e0 = f0 = g0 = 0.;
  if (n < 2)
    return;
  if (x == NULL)
    return;
  if (y == NULL && z == NULL && a == NULL && b == NULL && c == NULL &&
      e == NULL && f == NULL && g == NULL) {
    sortd(x, n);
    return;
  }
  if (y != NULL && z == NULL && a == NULL && b == NULL && c == NULL &&
      e == NULL && f == NULL && g == NULL) {
    sortxyd(x, y, n);
    return;
  }
  if (y != NULL && z != NULL && a == NULL && b == NULL && c == NULL &&
      e == NULL && f == NULL && g == NULL) {
    sortxyzd(x, y, z, n);
    return;
  }
  if (y != NULL && z != NULL && a != NULL && b == NULL && c == NULL &&
      e == NULL && f == NULL && g == NULL) {
    sortxyzwd(x, y, z, a, n);
    return;
  }
  if (y != NULL && z != NULL && a != NULL && b != NULL && c == NULL &&
      e == NULL && f == NULL && g == NULL) {
    sortxyzwvd(x, y, z, a, b, n);
    return;
  }
  top = n / 2;
  n1 = n - 1;
  while (1) {
    if (top > 0) {
      top--;
      x0 = x[top];
      if (y != NULL)
        y0 = y[top];
      if (z != NULL)
        z0 = z[top];
      if (a != NULL)
        a0 = a[top];
      if (b != NULL)
        b0 = b[top];
      if (c != NULL)
        c0 = c[top];
      if (e != NULL)
        e0 = e[top];
      if (f != NULL)
        f0 = f[top];
      if (g != NULL)
        g0 = g[top];
    } else {
      x0 = x[n1];
      if (y != NULL)
        y0 = y[n1];
      if (z != NULL)
        z0 = z[n1];
      if (a != NULL)
        a0 = a[n1];
      if (b != NULL)
        b0 = b[n1];
      if (c != NULL)
        c0 = c[n1];
      if (e != NULL)
        e0 = e[n1];
      if (f != NULL)
        f0 = f[n1];
      if (g != NULL)
        g0 = g[n1];
      x[n1] = x[0];
      if (y != NULL)
        y[n1] = y[0];
      if (z != NULL)
        z[n1] = z[0];
      if (a != NULL)
        a[n1] = a[0];
      if (b != NULL)
        b[n1] = b[0];
      if (c != NULL)
        c[n1] = c[0];
      if (e != NULL)
        e[n1] = e[0];
      if (f != NULL)
        f[n1] = f[0];
      if (g != NULL)
        g[n1] = g[0];
      n1--;
      if (!n1) {
        x[0] = x0;
        if (y != NULL)
          y[0] = y0;
        if (z != NULL)
          z[0] = z0;
        if (a != NULL)
          a[0] = a0;
        if (b != NULL)
          b[0] = b0;
        if (c != NULL)
          c[0] = c0;
        if (e != NULL)
          e[0] = e0;
        if (f != NULL)
          f[0] = f0;
        if (g != NULL)
          g[0] = g0;
        return;
      }
    }
    {
      int parent, child;
      parent = top;
      child = top * 2 + 1;
      while (child <= n1) {
        if (child < n1 && x[child] < x[child + 1])
          child++;
        if (x0 < x[child]) {
          x[parent] = x[child];
          if (y != NULL)
            y[parent] = y[child];
          if (z != NULL)
            z[parent] = z[child];
          if (a != NULL)
            a[parent] = a[child];
          if (b != NULL)
            b[parent] = b[child];
          if (c != NULL)
            c[parent] = c[child];
          if (e != NULL)
            e[parent] = e[child];
          if (f != NULL)
            f[parent] = f[child];
          if (g != NULL)
            g[parent] = g[child];
          parent = child;
          child += (parent + 1);
        } else
          break;
      }
      x[parent] = x0;
      if (y != NULL)
        y[parent] = y0;
      if (z != NULL)
        z[parent] = z0;
      if (a != NULL)
        a[parent] = a0;
      if (b != NULL)
        b[parent] = b0;
      if (c != NULL)
        c[parent] = c0;
      if (e != NULL)
        e[parent] = e0;
      if (f != NULL)
        f[parent] = f0;
      if (g != NULL)
        g[parent] = g0;
    }
  }
}


x86 assembly (clang, -O0):
<sort9d>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
cmpl   $0x2,0x28(%rbp)
jge    11d9 <sort9d+0x89>
jmp    1b97 <sort9d+0xa47>
cmpq   $0x0,-0x8(%rbp)
jne    11e9 <sort9d+0x99>
jmp    1b97 <sort9d+0xa47>
cmpq   $0x0,-0x10(%rbp)
jne    1252 <sort9d+0x102>
cmpq   $0x0,-0x18(%rbp)
jne    1252 <sort9d+0x102>
cmpq   $0x0,-0x20(%rbp)
jne    1252 <sort9d+0x102>
cmpq   $0x0,-0x28(%rbp)
jne    1252 <sort9d+0x102>
cmpq   $0x0,-0x30(%rbp)
jne    1252 <sort9d+0x102>
cmpq   $0x0,0x10(%rbp)
jne    1252 <sort9d+0x102>
cmpq   $0x0,0x18(%rbp)
jne    1252 <sort9d+0x102>
cmpq   $0x0,0x20(%rbp)
jne    1252 <sort9d+0x102>
mov    -0x8(%rbp),%rdi
mov    0x28(%rbp),%esi
call   1070 <sortd@plt>
jmp    1b97 <sort9d+0xa47>
cmpq   $0x0,-0x10(%rbp)
je     12bf <sort9d+0x16f>
cmpq   $0x0,-0x18(%rbp)
jne    12bf <sort9d+0x16f>
cmpq   $0x0,-0x20(%rbp)
jne    12bf <sort9d+0x16f>
cmpq   $0x0,-0x28(%rbp)
jne    12bf <sort9d+0x16f>
cmpq   $0x0,-0x30(%rbp)
jne    12bf <sort9d+0x16f>
cmpq   $0x0,0x10(%rbp)
jne    12bf <sort9d+0x16f>
cmpq   $0x0,0x18(%rbp)
jne    12bf <sort9d+0x16f>
cmpq   $0x0,0x20(%rbp)
jne    12bf <sort9d+0x16f>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    0x28(%rbp),%edx
call   1030 <sortxyd@plt>
jmp    1b97 <sort9d+0xa47>
cmpq   $0x0,-0x10(%rbp)
je     1330 <sort9d+0x1e0>
cmpq   $0x0,-0x18(%rbp)
je     1330 <sort9d+0x1e0>
cmpq   $0x0,-0x20(%rbp)
jne    1330 <sort9d+0x1e0>
cmpq   $0x0,-0x28(%rbp)
jne    1330 <sort9d+0x1e0>
cmpq   $0x0,-0x30(%rbp)
jne    1330 <sort9d+0x1e0>
cmpq   $0x0,0x10(%rbp)
jne    1330 <sort9d+0x1e0>
cmpq   $0x0,0x18(%rbp)
jne    1330 <sort9d+0x1e0>
cmpq   $0x0,0x20(%rbp)
jne    1330 <sort9d+0x1e0>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x18(%rbp),%rdx
mov    0x28(%rbp),%ecx
call   1040 <sortxyzd@plt>
jmp    1b97 <sort9d+0xa47>
cmpq   $0x0,-0x10(%rbp)
je     13a6 <sort9d+0x256>
cmpq   $0x0,-0x18(%rbp)
je     13a6 <sort9d+0x256>
cmpq   $0x0,-0x20(%rbp)
je     13a6 <sort9d+0x256>
cmpq   $0x0,-0x28(%rbp)
jne    13a6 <sort9d+0x256>
cmpq   $0x0,-0x30(%rbp)
jne    13a6 <sort9d+0x256>
cmpq   $0x0,0x10(%rbp)
jne    13a6 <sort9d+0x256>
cmpq   $0x0,0x18(%rbp)
jne    13a6 <sort9d+0x256>
cmpq   $0x0,0x20(%rbp)
jne    13a6 <sort9d+0x256>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x18(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    0x28(%rbp),%r8d
call   1060 <sortxyzwd@plt>
jmp    1b97 <sort9d+0xa47>
cmpq   $0x0,-0x10(%rbp)
je     1420 <sort9d+0x2d0>
cmpq   $0x0,-0x18(%rbp)
je     1420 <sort9d+0x2d0>
cmpq   $0x0,-0x20(%rbp)
je     1420 <sort9d+0x2d0>
cmpq   $0x0,-0x28(%rbp)
je     1420 <sort9d+0x2d0>
cmpq   $0x0,-0x30(%rbp)
jne    1420 <sort9d+0x2d0>
cmpq   $0x0,0x10(%rbp)
jne    1420 <sort9d+0x2d0>
cmpq   $0x0,0x18(%rbp)
jne    1420 <sort9d+0x2d0>
cmpq   $0x0,0x20(%rbp)
jne    1420 <sort9d+0x2d0>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x18(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    -0x28(%rbp),%r8
mov    0x28(%rbp),%r9d
call   1050 <sortxyzwvd@plt>
jmp    1b97 <sort9d+0xa47>
mov    0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x34(%rbp)
mov    0x28(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x34(%rbp)
jle    1549 <sort9d+0x3f9>
mov    -0x34(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x34(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
cmpq   $0x0,-0x10(%rbp)
je     1479 <sort9d+0x329>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
cmpq   $0x0,-0x18(%rbp)
je     1496 <sort9d+0x346>
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
cmpq   $0x0,-0x20(%rbp)
je     14b3 <sort9d+0x363>
mov    -0x20(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
cmpq   $0x0,-0x28(%rbp)
je     14d0 <sort9d+0x380>
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x60(%rbp)
cmpq   $0x0,-0x30(%rbp)
je     14ed <sort9d+0x39d>
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
cmpq   $0x0,0x10(%rbp)
je     150a <sort9d+0x3ba>
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
cmpq   $0x0,0x18(%rbp)
je     1527 <sort9d+0x3d7>
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
cmpq   $0x0,0x20(%rbp)
je     1544 <sort9d+0x3f4>
mov    0x20(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    1842 <sort9d+0x6f2>
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
cmpq   $0x0,-0x10(%rbp)
je     1578 <sort9d+0x428>
mov    -0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
cmpq   $0x0,-0x18(%rbp)
je     1595 <sort9d+0x445>
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
cmpq   $0x0,-0x20(%rbp)
je     15b2 <sort9d+0x462>
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
cmpq   $0x0,-0x28(%rbp)
je     15cf <sort9d+0x47f>
mov    -0x28(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x60(%rbp)
cmpq   $0x0,-0x30(%rbp)
je     15ec <sort9d+0x49c>
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
cmpq   $0x0,0x10(%rbp)
je     1609 <sort9d+0x4b9>
mov    0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
cmpq   $0x0,0x18(%rbp)
je     1626 <sort9d+0x4d6>
mov    0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
cmpq   $0x0,0x20(%rbp)
je     1643 <sort9d+0x4f3>
mov    0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x10(%rbp)
je     1678 <sort9d+0x528>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x18(%rbp)
je     1698 <sort9d+0x548>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x20(%rbp)
je     16b8 <sort9d+0x568>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x28(%rbp)
je     16d8 <sort9d+0x588>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x30(%rbp)
je     16f8 <sort9d+0x5a8>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,0x10(%rbp)
je     1718 <sort9d+0x5c8>
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,0x18(%rbp)
je     1738 <sort9d+0x5e8>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,0x20(%rbp)
je     1758 <sort9d+0x608>
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x38(%rbp)
jne    183d <sort9d+0x6ed>
movsd  -0x40(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
cmpq   $0x0,-0x10(%rbp)
je     1790 <sort9d+0x640>
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
cmpq   $0x0,-0x18(%rbp)
je     17a8 <sort9d+0x658>
movsd  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
cmpq   $0x0,-0x20(%rbp)
je     17c0 <sort9d+0x670>
movsd  -0x58(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
cmpq   $0x0,-0x28(%rbp)
je     17d8 <sort9d+0x688>
movsd  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
cmpq   $0x0,-0x30(%rbp)
je     17f0 <sort9d+0x6a0>
movsd  -0x68(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
cmpq   $0x0,0x10(%rbp)
je     1808 <sort9d+0x6b8>
movsd  -0x70(%rbp),%xmm0
mov    0x10(%rbp),%rax
movsd  %xmm0,(%rax)
cmpq   $0x0,0x18(%rbp)
je     1820 <sort9d+0x6d0>
movsd  -0x78(%rbp),%xmm0
mov    0x18(%rbp),%rax
movsd  %xmm0,(%rax)
cmpq   $0x0,0x20(%rbp)
je     1838 <sort9d+0x6e8>
movsd  -0x80(%rbp),%xmm0
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b97 <sort9d+0xa47>
jmp    1842 <sort9d+0x6f2>
mov    -0x34(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x34(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
mov    -0x88(%rbp),%eax
cmp    -0x38(%rbp),%eax
jg     1a7d <sort9d+0x92d>
mov    -0x88(%rbp),%eax
cmp    -0x38(%rbp),%eax
jge    18b6 <sort9d+0x766>
mov    -0x8(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x88(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    18b6 <sort9d+0x766>
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
movsd  -0x40(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    1a73 <sort9d+0x923>
mov    -0x8(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x10(%rbp)
je     1920 <sort9d+0x7d0>
mov    -0x10(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x18(%rbp)
je     194b <sort9d+0x7fb>
mov    -0x18(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x20(%rbp)
je     1976 <sort9d+0x826>
mov    -0x20(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x28(%rbp)
je     19a1 <sort9d+0x851>
mov    -0x28(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x30(%rbp)
je     19cc <sort9d+0x87c>
mov    -0x30(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,0x10(%rbp)
je     19f7 <sort9d+0x8a7>
mov    0x10(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,0x18(%rbp)
je     1a22 <sort9d+0x8d2>
mov    0x18(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,0x20(%rbp)
je     1a4d <sort9d+0x8fd>
mov    0x20(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x88(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
add    -0x88(%rbp),%eax
mov    %eax,-0x88(%rbp)
jmp    1a78 <sort9d+0x928>
jmp    1a7d <sort9d+0x92d>
jmp    185a <sort9d+0x70a>
movsd  -0x40(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x10(%rbp)
je     1ab2 <sort9d+0x962>
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x18(%rbp)
je     1ad2 <sort9d+0x982>
movsd  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x20(%rbp)
je     1af2 <sort9d+0x9a2>
movsd  -0x58(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x28(%rbp)
je     1b12 <sort9d+0x9c2>
movsd  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,-0x30(%rbp)
je     1b32 <sort9d+0x9e2>
movsd  -0x68(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,0x10(%rbp)
je     1b52 <sort9d+0xa02>
movsd  -0x70(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,0x18(%rbp)
je     1b72 <sort9d+0xa22>
movsd  -0x78(%rbp),%xmm0
mov    0x18(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpq   $0x0,0x20(%rbp)
je     1b92 <sort9d+0xa42>
movsd  -0x80(%rbp),%xmm0
mov    0x20(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1437 <sort9d+0x2e7>
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sort9d>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
test   %rdi,%rdi
je     1648 <sort9d+0x4f8>
mov    0x50(%rsp),%r10d
cmp    $0x2,%r10d
jl     1648 <sort9d+0x4f8>
mov    0x48(%rsp),%r11
mov    0x40(%rsp),%r15
mov    0x38(%rsp),%r12
test   %rsi,%rsi
jne    11bb <sort9d+0x6b>
test   %rdx,%rdx
jne    11bb <sort9d+0x6b>
test   %rcx,%rcx
jne    11bb <sort9d+0x6b>
test   %r8,%r8
jne    11bb <sort9d+0x6b>
test   %r9,%r9
jne    11bb <sort9d+0x6b>
test   %r12,%r12
jne    11bb <sort9d+0x6b>
test   %r15,%r15
jne    11bb <sort9d+0x6b>
test   %r11,%r11
jne    11bb <sort9d+0x6b>
mov    %r10d,%esi
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1070 <sortd@plt>
test   %rsi,%rsi
je     11f5 <sort9d+0xa5>
test   %rdx,%rdx
jne    11f5 <sort9d+0xa5>
test   %rcx,%rcx
jne    11f5 <sort9d+0xa5>
test   %r8,%r8
jne    11f5 <sort9d+0xa5>
test   %r9,%r9
jne    11f5 <sort9d+0xa5>
test   %r12,%r12
jne    11f5 <sort9d+0xa5>
test   %r15,%r15
jne    11f5 <sort9d+0xa5>
test   %r11,%r11
jne    11f5 <sort9d+0xa5>
mov    %r10d,%edx
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <sortxyd@plt>
test   %rsi,%rsi
setne  %bl
test   %rdx,%rdx
setne  %al
and    %bl,%al
cmp    $0x1,%al
jne    1237 <sort9d+0xe7>
test   %rcx,%rcx
jne    1237 <sort9d+0xe7>
test   %r8,%r8
jne    1237 <sort9d+0xe7>
test   %r9,%r9
jne    1237 <sort9d+0xe7>
test   %r12,%r12
jne    1237 <sort9d+0xe7>
test   %r15,%r15
jne    1237 <sort9d+0xe7>
test   %r11,%r11
jne    1237 <sort9d+0xe7>
mov    %r10d,%ecx
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <sortxyzd@plt>
test   %rcx,%rcx
setne  %bl
and    %bl,%al
cmp    $0x1,%al
jne    126e <sort9d+0x11e>
test   %r8,%r8
jne    126e <sort9d+0x11e>
test   %r9,%r9
jne    126e <sort9d+0x11e>
test   %r12,%r12
jne    126e <sort9d+0x11e>
test   %r15,%r15
jne    126e <sort9d+0x11e>
test   %r11,%r11
jne    126e <sort9d+0x11e>
mov    %r10d,%r8d
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1060 <sortxyzwd@plt>
test   %r8,%r8
sete   %bl
xor    $0x1,%al
or     %bl,%al
jne    12a0 <sort9d+0x150>
test   %r9,%r9
jne    12a0 <sort9d+0x150>
test   %r12,%r12
jne    12a0 <sort9d+0x150>
test   %r15,%r15
jne    12a0 <sort9d+0x150>
test   %r11,%r11
jne    12a0 <sort9d+0x150>
mov    %r10d,%r9d
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1050 <sortxyzwvd@plt>
mov    %r10d,%r13d
shr    %r13d
add    $0xffffffff,%r10d
xorps  %xmm7,%xmm7
xorps  %xmm6,%xmm6
xorps  %xmm5,%xmm5
xorps  %xmm4,%xmm4
xorps  %xmm3,%xmm3
xorps  %xmm2,%xmm2
xorps  %xmm9,%xmm9
xorps  %xmm8,%xmm8
mov    %r8,-0x10(%rsp)
nopl   0x0(%rax)
test   %r13d,%r13d
jle    1340 <sort9d+0x1f0>
add    $0xffffffff,%r13d
test   %rsi,%rsi
je     12e4 <sort9d+0x194>
movsd  (%rsi,%r13,8),%xmm7
test   %rdx,%rdx
je     12ef <sort9d+0x19f>
movsd  (%rdx,%r13,8),%xmm6
test   %rcx,%rcx
je     12fa <sort9d+0x1aa>
movsd  (%rcx,%r13,8),%xmm5
test   %r8,%r8
je     1305 <sort9d+0x1b5>
movsd  (%r8,%r13,8),%xmm4
test   %r9,%r9
je     1310 <sort9d+0x1c0>
movsd  (%r9,%r13,8),%xmm3
test   %r12,%r12
je     131b <sort9d+0x1cb>
movsd  (%r12,%r13,8),%xmm2
test   %r15,%r15
je     1326 <sort9d+0x1d6>
movsd  (%r15,%r13,8),%xmm9
movsd  (%rdi,%r13,8),%xmm0
test   %r11,%r11
je     1436 <sort9d+0x2e6>
movsd  (%r11,%r13,8),%xmm8
jmp    1436 <sort9d+0x2e6>
movslq %r10d,%r14
movsd  (%rdi,%r14,8),%xmm0
test   %rsi,%rsi
je     1354 <sort9d+0x204>
movsd  (%rsi,%r14,8),%xmm7
test   %rdx,%rdx
je     135f <sort9d+0x20f>
movsd  (%rdx,%r14,8),%xmm6
test   %rcx,%rcx
je     136a <sort9d+0x21a>
movsd  (%rcx,%r14,8),%xmm5
test   %r8,%r8
je     1375 <sort9d+0x225>
movsd  (%r8,%r14,8),%xmm4
test   %r9,%r9
je     1380 <sort9d+0x230>
movsd  (%r9,%r14,8),%xmm3
test   %r12,%r12
je     138b <sort9d+0x23b>
movsd  (%r12,%r14,8),%xmm2
test   %r15,%r15
je     1396 <sort9d+0x246>
movsd  (%r15,%r14,8),%xmm9
test   %r11,%r11
je     13a1 <sort9d+0x251>
movsd  (%r11,%r14,8),%xmm8
movsd  (%rdi),%xmm1
movsd  %xmm1,(%rdi,%r14,8)
test   %rsi,%rsi
je     13ba <sort9d+0x26a>
movsd  (%rsi),%xmm1
movsd  %xmm1,(%rsi,%r14,8)
test   %rdx,%rdx
je     13c9 <sort9d+0x279>
movsd  (%rdx),%xmm1
movsd  %xmm1,(%rdx,%r14,8)
test   %rcx,%rcx
je     13d8 <sort9d+0x288>
movsd  (%rcx),%xmm1
movsd  %xmm1,(%rcx,%r14,8)
test   %r8,%r8
je     13e8 <sort9d+0x298>
movsd  (%r8),%xmm1
movsd  %xmm1,(%r8,%r14,8)
test   %r9,%r9
je     13f8 <sort9d+0x2a8>
movsd  (%r9),%xmm1
movsd  %xmm1,(%r9,%r14,8)
test   %r12,%r12
je     1409 <sort9d+0x2b9>
movsd  (%r12),%xmm1
movsd  %xmm1,(%r12,%r14,8)
test   %r15,%r15
je     1419 <sort9d+0x2c9>
movsd  (%r15),%xmm1
movsd  %xmm1,(%r15,%r14,8)
test   %r11,%r11
je     1429 <sort9d+0x2d9>
movsd  (%r11),%xmm1
movsd  %xmm1,(%r11,%r14,8)
xor    %r13d,%r13d
add    $0xffffffff,%r10d
je     15f2 <sort9d+0x4a2>
lea    0x1(%r13,%r13,1),%ebp
mov    %r13,-0x8(%rsp)
cmp    %r10d,%ebp
jg     1582 <sort9d+0x432>
mov    -0x8(%rsp),%rax
lea    (%rax,%rax,1),%r14d
jmp    1476 <sort9d+0x326>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    0x0(%r13,%r13,1),%r14d
lea    0x1(%r13,%r13,1),%ebp
mov    %r13d,%eax
cmp    %r10d,%ebp
jg     1582 <sort9d+0x432>
mov    %r9,%r8
mov    %r12,%r9
mov    %r15,%r12
mov    %r11,%r15
movslq %ebp,%rbx
mov    %r10d,%r11d
cmp    %r10d,%ebp
jge    14b0 <sort9d+0x360>
add    $0x2,%r14d
movslq %r14d,%r10
movsd  (%rdi,%r10,8),%xmm1
ucomisd (%rdi,%rbx,8),%xmm1
mov    %ebp,%r13d
jbe    14b3 <sort9d+0x363>
mov    %r10,%rbx
mov    %r14d,%r13d
jmp    14b3 <sort9d+0x363>
nopl   0x0(%rax)
mov    %ebp,%r13d
movsd  (%rdi,%rbx,8),%xmm1
ucomisd %xmm0,%xmm1
mov    -0x10(%rsp),%rbp
jbe    1570 <sort9d+0x420>
cltq
movsd  %xmm1,(%rdi,%rax,8)
test   %rsi,%rsi
mov    %r11d,%r10d
je     14e0 <sort9d+0x390>
movsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rax,8)
test   %rdx,%rdx
mov    %r15,%r11
je     14f2 <sort9d+0x3a2>
movsd  (%rdx,%rbx,8),%xmm1
movsd  %xmm1,(%rdx,%rax,8)
test   %rcx,%rcx
mov    %r12,%r15
je     1504 <sort9d+0x3b4>
movsd  (%rcx,%rbx,8),%xmm1
movsd  %xmm1,(%rcx,%rax,8)
test   %rbp,%rbp
mov    %r9,%r12
je     1518 <sort9d+0x3c8>
movsd  0x0(%rbp,%rbx,8),%xmm1
movsd  %xmm1,0x0(%rbp,%rax,8)
mov    %r8,%r9
test   %r8,%r8
je     152c <sort9d+0x3dc>
movsd  (%r9,%rbx,8),%xmm1
movsd  %xmm1,(%r9,%rax,8)
test   %r12,%r12
je     153d <sort9d+0x3ed>
movsd  (%r12,%rbx,8),%xmm1
movsd  %xmm1,(%r12,%rax,8)
test   %r15,%r15
je     154e <sort9d+0x3fe>
movsd  (%r15,%rbx,8),%xmm1
movsd  %xmm1,(%r15,%rax,8)
test   %r11,%r11
je     1460 <sort9d+0x310>
movsd  (%r11,%rbx,8),%xmm1
movsd  %xmm1,(%r11,%rax,8)
jmp    1460 <sort9d+0x310>
nopl   0x0(%rax,%rax,1)
mov    %eax,%r13d
mov    %r11d,%r10d
mov    %r15,%r11
mov    %r12,%r15
mov    %r9,%r12
mov    %r8,%r9
movslq %r13d,%rax
movsd  %xmm0,(%rdi,%rax,8)
test   %rsi,%rsi
je     1594 <sort9d+0x444>
movsd  %xmm7,(%rsi,%rax,8)
test   %rdx,%rdx
mov    -0x10(%rsp),%r8
mov    -0x8(%rsp),%r13
je     15a8 <sort9d+0x458>
movsd  %xmm6,(%rdx,%rax,8)
test   %rcx,%rcx
je     15b2 <sort9d+0x462>
movsd  %xmm5,(%rcx,%rax,8)
test   %r8,%r8
je     15bd <sort9d+0x46d>
movsd  %xmm4,(%r8,%rax,8)
test   %r9,%r9
je     15c8 <sort9d+0x478>
movsd  %xmm3,(%r9,%rax,8)
test   %r12,%r12
je     15d3 <sort9d+0x483>
movsd  %xmm2,(%r12,%rax,8)
test   %r15,%r15
je     15de <sort9d+0x48e>
movsd  %xmm9,(%r15,%rax,8)
test   %r11,%r11
je     12d0 <sort9d+0x180>
movsd  %xmm8,(%r11,%rax,8)
jmp    12d0 <sort9d+0x180>
movsd  %xmm0,(%rdi)
test   %rsi,%rsi
je     15ff <sort9d+0x4af>
movsd  %xmm7,(%rsi)
test   %rdx,%rdx
mov    -0x10(%rsp),%rax
je     160d <sort9d+0x4bd>
movsd  %xmm6,(%rdx)
test   %rcx,%rcx
je     1616 <sort9d+0x4c6>
movsd  %xmm5,(%rcx)
test   %rax,%rax
je     161f <sort9d+0x4cf>
movsd  %xmm4,(%rax)
test   %r9,%r9
je     1629 <sort9d+0x4d9>
movsd  %xmm3,(%r9)
test   %r12,%r12
je     1634 <sort9d+0x4e4>
movsd  %xmm2,(%r12)
test   %r15,%r15
je     163e <sort9d+0x4ee>
movsd  %xmm9,(%r15)
test   %r11,%r11
je     1648 <sort9d+0x4f8>
movsd  %xmm8,(%r11)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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