double median(int n, double x[]) {
  int i, j;
  int nr = n / 2;
  int nl = nr - 1;
  int even = 0;
  int lo = 0;
  int hi = n - 1;
  if (n == 2 * nr)
    even = 1;
  if (n < 3) {
    if (n < 1)
      return 0.;
    if (n == 1)
      return x[0];
    return 0.5 * (x[0] + x[1]);
  }
  do {
    int loop;
    int mid = (lo + hi) / 2;
    double result = x[mid];
    double xlo = x[lo];
    double xhi = x[hi];
    if (xhi < xlo) {
      double temp = xlo;
      xlo = xhi;
      xhi = temp;
    }
    if (result > xhi)
      result = xhi;
    else if (result < xlo)
      result = xlo;
    i = lo;
    j = hi;
    do {
      while (x[i] < result)
        i++;
      while (x[j] > result)
        j--;
      loop = 0;
      if (i < j) {
        double temp = x[i];
        x[i] = x[j];
        x[j] = temp;
        i++;
        j--;
        if (i <= j)
          loop = 1;
      }
    } while (loop);
    if (even) {
      if (j == nl && i == nr) {
        int k;
        double xmax = x[0];
        double xmin = x[n - 1];
        for (k = lo; k <= j; k++)
          xmax = ((xmax) > (x[k]) ? (xmax) : (x[k]));
        for (k = i; k <= hi; k++)
          xmin = ((xmin) < (x[k]) ? (xmin) : (x[k]));
        return 0.5 * (xmin + xmax);
      }
      if (j < nl)
        lo = i;
      if (i > nr)
        hi = j;
      if (i == j) {
        if (i == nl)
          lo = nl;
        if (j == nr)
          hi = nr;
      }
    } else {
      if (j < nr)
        lo = i;
      if (i > nr)
        hi = j;
      if (i == j && i == nr)
        return result;
    }
  } while (lo < hi - 1);
  if (even)
    return (0.5 * (x[nl] + x[nr]));
  if (x[lo] > x[hi]) {
    double temp = x[lo];
    x[lo] = x[hi];
    x[hi] = temp;
  }
  return x[nr];
}


x86 assembly (clang, -O0):
<median>:
push   %rbp
mov    %rsp,%rbp
sub    $0x18,%rsp
mov    %edi,-0xc(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0xc(%rbp),%eax
mov    -0x24(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
jne    1155 <median+0x55>
movl   $0x1,-0x2c(%rbp)
cmpl   $0x3,-0xc(%rbp)
jge    11b9 <median+0xb9>
cmpl   $0x1,-0xc(%rbp)
jge    1176 <median+0x76>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    161f <median+0x51f>
cmpl   $0x1,-0xc(%rbp)
jne    1192 <median+0x92>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    161f <median+0x51f>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
addsd  0x8(%rax),%xmm1
movsd  0xe55(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    161f <median+0x51f>
jmp    11be <median+0xbe>
mov    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1237 <median+0x137>
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x48(%rbp),%xmm0
ucomisd -0x58(%rbp),%xmm0
jbe    1256 <median+0x156>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    1279 <median+0x179>
movsd  -0x48(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1274 <median+0x174>
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    1279 <median+0x179>
mov    -0x30(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x20(%rbp)
jmp    128a <median+0x18a>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    12b4 <median+0x1b4>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    128a <median+0x18a>
jmp    12b9 <median+0x1b9>
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x48(%rbp),%xmm0
jbe    12df <median+0x1df>
mov    -0x20(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x20(%rbp)
jmp    12b9 <median+0x1b9>
movl   $0x0,-0x38(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    135a <median+0x25a>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x68(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x20(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     1355 <median+0x255>
movl   $0x1,-0x38(%rbp)
jmp    135a <median+0x25a>
jmp    135f <median+0x25f>
cmpl   $0x0,-0x38(%rbp)
jne    1285 <median+0x185>
cmpl   $0x0,-0x2c(%rbp)
je     1509 <median+0x409>
mov    -0x20(%rbp),%eax
cmp    -0x28(%rbp),%eax
jne    14ab <median+0x3ab>
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jne    14ab <median+0x3ab>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x18(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     141b <median+0x31b>
movsd  -0x78(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x6c(%rbp),%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    13eb <median+0x2eb>
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
jmp    1400 <median+0x300>
mov    -0x18(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    13b5 <median+0x2b5>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x34(%rbp),%eax
jg     148b <median+0x38b>
movsd  -0x80(%rbp),%xmm1
mov    -0x18(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    145b <median+0x35b>
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
jmp    1470 <median+0x370>
mov    -0x18(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    1421 <median+0x321>
movsd  -0x80(%rbp),%xmm1
addsd  -0x78(%rbp),%xmm1
movsd  0xb63(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    161f <median+0x51f>
mov    -0x20(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    14bd <median+0x3bd>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jle    14cf <median+0x3cf>
mov    -0x20(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jne    1504 <median+0x404>
mov    -0x1c(%rbp),%eax
cmp    -0x28(%rbp),%eax
jne    14ed <median+0x3ed>
mov    -0x28(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x24(%rbp),%eax
jne    14ff <median+0x3ff>
mov    -0x24(%rbp),%eax
mov    %eax,-0x34(%rbp)
jmp    1504 <median+0x404>
jmp    1559 <median+0x459>
mov    -0x20(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    151b <median+0x41b>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jle    152d <median+0x42d>
mov    -0x20(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jne    1554 <median+0x454>
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jne    1554 <median+0x454>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    161f <median+0x51f>
jmp    1559 <median+0x459>
jmp    155e <median+0x45e>
mov    -0x30(%rbp),%eax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jl     11be <median+0xbe>
cmpl   $0x0,-0x2c(%rbp)
je     15a9 <median+0x4a9>
mov    -0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm1
movsd  0xa65(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    161f <median+0x51f>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    160d <median+0x50d>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x18,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<median>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
cmp    $0x3,%edi
jge    112e <median+0x2e>
test   %edi,%edi
jle    12ae <median+0x1ae>
movsd  (%rsi),%xmm0
cmp    $0x1,%edi
je     13d7 <median+0x2d7>
addsd  0x8(%rsi),%xmm0
jmp    13a5 <median+0x2a5>
mov    %edi,%r8d
shr    $0x1f,%r8d
add    %edi,%r8d
mov    %r8d,%r9d
sar    %r9d
lea    -0x1(%r9),%r10d
lea    -0x1(%rdi),%eax
and    $0xfffffffe,%r8d
lea    0x8(%rsi),%r13
xor    %r12d,%r12d
mov    %eax,-0x4(%rsp)
mov    %eax,%r15d
jmp    116d <median+0x6d>
nopl   0x0(%rax)
lea    -0x1(%r15),%eax
cmp    %eax,%r12d
jge    13af <median+0x2af>
lea    (%r15,%r12,1),%eax
mov    %eax,%ecx
shr    $0x1f,%ecx
add    %eax,%ecx
sar    %ecx
movslq %ecx,%rax
movsd  (%rsi,%rax,8),%xmm1
movslq %r12d,%r14
movsd  (%rsi,%r14,8),%xmm3
movslq %r15d,%rax
movsd  (%rsi,%rax,8),%xmm2
movapd %xmm3,%xmm0
maxsd  %xmm2,%xmm0
ucomisd %xmm0,%xmm1
ja     11b3 <median+0xb3>
minsd  %xmm3,%xmm2
ucomisd %xmm1,%xmm2
movapd %xmm1,%xmm0
jbe    11b3 <median+0xb3>
movapd %xmm2,%xmm0
mov    %r15d,%eax
mov    %r12d,%edx
nopl   0x0(%rax)
movslq %edx,%rcx
lea    (%rsi,%rcx,8),%rcx
nopw   0x0(%rax,%rax,1)
movsd  (%rcx),%xmm1
add    $0x1,%edx
add    $0x8,%rcx
ucomisd %xmm1,%xmm0
ja     11d0 <median+0xd0>
lea    -0x1(%rdx),%ebp
movslq %eax,%rbx
lea    0x0(,%rbx,8),%rbx
add    %r13,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  -0x8(%rbx),%xmm2
add    $0xfffffffffffffff8,%rbx
add    $0xffffffff,%eax
ucomisd %xmm0,%xmm2
ja     1200 <median+0x100>
lea    0x1(%rax),%r11d
cmp    %r11d,%ebp
jge    1280 <median+0x180>
movsd  %xmm2,-0x8(%rcx)
movsd  %xmm1,(%rbx)
cmp    %ebp,%eax
jg     11c0 <median+0xc0>
cmp    %edi,%r8d
jne    128a <median+0x18a>
cmp    %r10d,%eax
jne    123b <median+0x13b>
cmp    %r9d,%edx
je     12b7 <median+0x1b7>
cmp    %r10d,%eax
cmovl  %edx,%r12d
cmp    %r9d,%edx
cmovg  %eax,%r15d
cmp    %r10d,%edx
mov    %r12d,%ecx
cmove  %r10d,%ecx
cmp    %eax,%edx
cmovne %r12d,%ecx
mov    %r15d,%edx
cmove  %r9d,%edx
cmp    %r9d,%eax
cmovne %r15d,%edx
lea    -0x1(%rdx),%eax
mov    %ecx,%r12d
mov    %edx,%r15d
cmp    %eax,%ecx
jl     116d <median+0x6d>
jmp    1395 <median+0x295>
nopl   (%rax)
mov    %r11d,%eax
mov    %ebp,%edx
cmp    %edi,%r8d
je     122d <median+0x12d>
cmp    %r9d,%eax
cmovl  %edx,%r12d
cmp    %r9d,%edx
cmovg  %eax,%r15d
cmp    %eax,%edx
jne    1160 <median+0x60>
cmp    %r9d,%edx
jne    1160 <median+0x60>
jmp    13d7 <median+0x2d7>
xorpd  %xmm0,%xmm0
jmp    13d7 <median+0x2d7>
movsd  (%rsi),%xmm0
movslq -0x4(%rsp),%rax
mov    %r9d,%ecx
sub    %r12d,%ecx
jle    1324 <median+0x224>
not    %r12d
add    %r9d,%r12d
and    $0x3,%ecx
je     12ef <median+0x1ef>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
maxsd  (%rsi,%r14,8),%xmm0
add    $0x1,%r14
add    $0xffffffff,%ecx
jne    12e0 <median+0x1e0>
cmp    $0x3,%r12d
jb     1324 <median+0x224>
mov    %r9d,%ecx
nopl   0x0(%rax,%rax,1)
maxsd  (%rsi,%r14,8),%xmm0
maxsd  0x8(%rsi,%r14,8),%xmm0
maxsd  0x10(%rsi,%r14,8),%xmm0
maxsd  0x18(%rsi,%r14,8),%xmm0
add    $0x4,%r14
cmp    %r14d,%ecx
jne    1300 <median+0x200>
movsd  (%rsi,%rax,8),%xmm1
mov    %r15d,%ecx
sub    %r9d,%ecx
jl     138f <median+0x28f>
movslq %r9d,%rax
add    $0x1,%r15d
mov    %r15d,%edx
sub    %r9d,%edx
and    $0x3,%edx
je     135e <median+0x25e>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
minsd  (%rsi,%rax,8),%xmm1
add    $0x1,%rax
add    $0xffffffff,%edx
jne    1350 <median+0x250>
cmp    $0x3,%ecx
jb     138f <median+0x28f>
mov    %r15d,%ecx
cs nopw 0x0(%rax,%rax,1)
minsd  (%rsi,%rax,8),%xmm1
minsd  0x8(%rsi,%rax,8),%xmm1
minsd  0x10(%rsi,%rax,8),%xmm1
minsd  0x18(%rsi,%rax,8),%xmm1
add    $0x4,%rax
cmp    %eax,%ecx
jne    1370 <median+0x270>
addsd  %xmm1,%xmm0
jmp    13a5 <median+0x2a5>
movslq %r10d,%rax
movsd  (%rsi,%rax,8),%xmm0
movslq %r9d,%rax
addsd  (%rsi,%rax,8),%xmm0
mulsd  0xc53(%rip),%xmm0
jmp    13d7 <median+0x2d7>
movslq %r12d,%rax
movslq %r15d,%rcx
movsd  (%rsi,%rax,8),%xmm0
movsd  (%rsi,%rcx,8),%xmm1
ucomisd %xmm1,%xmm0
jbe    13cf <median+0x2cf>
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm0,(%rsi,%rcx,8)
movslq %r9d,%rax
movsd  (%rsi,%rax,8),%xmm0
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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