int mc64rd_(int *n, int *ne, int *ip, int *irn, double *a) {
  int i__1, i__2, i__3;
  int j, k, r__, s;
  double ha;
  int hi, td, mid, len, ipj;
  double key;
  int last, todo[50], first;
  --ip;
  --a;
  --irn;
  i__1 = *n;
  for (j = 1; j <= i__1; ++j) {
    len = ip[j + 1] - ip[j];
    if (len <= 1) {
      goto L100;
    }
    ipj = ip[j];
    if (len < 15) {
      goto L400;
    }
    todo[0] = ipj;
    todo[1] = ipj + len;
    td = 2;
  L500:
    first = todo[td - 2];
    last = todo[td - 1];
    key = a[(first + last) / 2];
    i__2 = last - 1;
    for (k = first; k <= i__2; ++k) {
      ha = a[k];
      if (ha == key) {
        goto L475;
      }
      if (ha > key) {
        goto L470;
      }
      key = ha;
      goto L470;
    L475:;
    }
    td += -2;
    goto L425;
  L470:
    mid = first;
    i__2 = last - 1;
    for (k = first; k <= i__2; ++k) {
      if (a[k] <= key) {
        goto L450;
      }
      ha = a[mid];
      a[mid] = a[k];
      a[k] = ha;
      hi = irn[mid];
      irn[mid] = irn[k];
      irn[k] = hi;
      ++mid;
    L450:;
    }
    if (mid - first >= last - mid) {
      todo[td + 1] = last;
      todo[td] = mid;
      todo[td - 1] = mid;
    } else {
      todo[td + 1] = mid;
      todo[td] = first;
      todo[td - 1] = last;
      todo[td - 2] = mid;
    }
    td += 2;
  L425:
    if (td == 0) {
      goto L400;
    }
    if (todo[td - 1] - todo[td - 2] >= 15) {
      goto L500;
    }
    td += -2;
    goto L425;
  L400:
    i__2 = ipj + len - 1;
    for (r__ = ipj + 1; r__ <= i__2; ++r__) {
      if (a[r__ - 1] < a[r__]) {
        ha = a[r__];
        hi = irn[r__];
        a[r__] = a[r__ - 1];
        irn[r__] = irn[r__ - 1];
        i__3 = ipj + 1;
        for (s = r__ - 1; s >= i__3; --s) {
          if (a[s - 1] < ha) {
            a[s] = a[s - 1];
            irn[s] = irn[s - 1];
          } else {
            a[s] = ha;
            irn[s] = hi;
            goto L200;
          }
        }
        a[ipj] = ha;
        irn[ipj] = hi;
      }
    L200:;
    }
  L100:;
  }
  return 0;
}


x86 assembly (clang, -O0):
<mc64rd_>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    -0x18(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x28(%rbp)
mov    -0x20(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x2c(%rbp)
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jg     1614 <mc64rd_+0x514>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x18(%rbp),%rcx
movslq -0x38(%rbp),%rdx
sub    (%rcx,%rdx,4),%eax
mov    %eax,-0x60(%rbp)
cmpl   $0x1,-0x60(%rbp)
jg     118c <mc64rd_+0x8c>
jmp    1601 <mc64rd_+0x501>
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x64(%rbp)
cmpl   $0xf,-0x60(%rbp)
jge    11a9 <mc64rd_+0xa9>
jmp    146a <mc64rd_+0x36a>
mov    -0x64(%rbp),%eax
mov    %eax,-0x140(%rbp)
mov    -0x64(%rbp),%eax
add    -0x60(%rbp),%eax
mov    %eax,-0x13c(%rbp)
movl   $0x2,-0x58(%rbp)
mov    -0x58(%rbp),%eax
sub    $0x2,%eax
cltq
mov    -0x140(%rbp,%rax,4),%eax
mov    %eax,-0x144(%rbp)
mov    -0x58(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x140(%rbp,%rax,4),%eax
mov    %eax,-0x74(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x150(%rbp)
mov    -0x144(%rbp),%eax
add    -0x74(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x150(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x74(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x144(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x30(%rbp),%eax
jg     12a0 <mc64rd_+0x1a0>
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
ucomisd -0x70(%rbp),%xmm0
jne    1269 <mc64rd_+0x169>
jp     1269 <mc64rd_+0x169>
jmp    128d <mc64rd_+0x18d>
movsd  -0x50(%rbp),%xmm0
ucomisd -0x70(%rbp),%xmm0
jbe    127e <mc64rd_+0x17e>
jmp    12ae <mc64rd_+0x1ae>
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
jmp    12ae <mc64rd_+0x1ae>
jmp    1292 <mc64rd_+0x192>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1230 <mc64rd_+0x130>
mov    -0x58(%rbp),%eax
add    $0xfffffffe,%eax
mov    %eax,-0x58(%rbp)
jmp    1420 <mc64rd_+0x320>
mov    -0x144(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x74(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x144(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x30(%rbp),%eax
jg     1382 <mc64rd_+0x282>
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x70(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     12f6 <mc64rd_+0x1f6>
jmp    136f <mc64rd_+0x26f>
mov    -0x28(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x54(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x54(%rbp),%edx
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1374 <mc64rd_+0x274>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    12c9 <mc64rd_+0x1c9>
mov    -0x5c(%rbp),%eax
sub    -0x144(%rbp),%eax
mov    -0x74(%rbp),%ecx
sub    -0x5c(%rbp),%ecx
cmp    %ecx,%eax
jl     13d0 <mc64rd_+0x2d0>
mov    -0x74(%rbp),%ecx
mov    -0x58(%rbp),%eax
add    $0x1,%eax
cltq
mov    %ecx,-0x140(%rbp,%rax,4)
mov    -0x5c(%rbp),%ecx
movslq -0x58(%rbp),%rax
mov    %ecx,-0x140(%rbp,%rax,4)
mov    -0x5c(%rbp),%ecx
mov    -0x58(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %ecx,-0x140(%rbp,%rax,4)
jmp    1417 <mc64rd_+0x317>
mov    -0x5c(%rbp),%ecx
mov    -0x58(%rbp),%eax
add    $0x1,%eax
cltq
mov    %ecx,-0x140(%rbp,%rax,4)
mov    -0x144(%rbp),%ecx
movslq -0x58(%rbp),%rax
mov    %ecx,-0x140(%rbp,%rax,4)
mov    -0x74(%rbp),%ecx
mov    -0x58(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %ecx,-0x140(%rbp,%rax,4)
mov    -0x5c(%rbp),%ecx
mov    -0x58(%rbp),%eax
sub    $0x2,%eax
cltq
mov    %ecx,-0x140(%rbp,%rax,4)
mov    -0x58(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x58(%rbp)
cmpl   $0x0,-0x58(%rbp)
jne    142f <mc64rd_+0x32f>
jmp    146a <mc64rd_+0x36a>
mov    -0x58(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x140(%rbp,%rax,4),%eax
mov    -0x58(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
sub    -0x140(%rbp,%rcx,4),%eax
cmp    $0xf,%eax
jl     145c <mc64rd_+0x35c>
jmp    11c5 <mc64rd_+0xc5>
mov    -0x58(%rbp),%eax
add    $0xfffffffe,%eax
mov    %eax,-0x58(%rbp)
jmp    1420 <mc64rd_+0x320>
mov    -0x64(%rbp),%eax
add    -0x60(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x30(%rbp),%eax
jg     15fc <mc64rd_+0x4fc>
mov    -0x28(%rbp),%rax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x28(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    15e4 <mc64rd_+0x4e4>
mov    -0x28(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x54(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x40(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x34(%rbp),%eax
jl     15c4 <mc64rd_+0x4c4>
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x50(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    158c <mc64rd_+0x48c>
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    15b1 <mc64rd_+0x4b1>
movsd  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x54(%rbp),%edx
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    15e9 <mc64rd_+0x4e9>
jmp    15b6 <mc64rd_+0x4b6>
mov    -0x44(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x44(%rbp)
jmp    1520 <mc64rd_+0x420>
movsd  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x54(%rbp),%edx
mov    -0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    15e9 <mc64rd_+0x4e9>
jmp    15ee <mc64rd_+0x4ee>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    147f <mc64rd_+0x37f>
jmp    1601 <mc64rd_+0x501>
jmp    1606 <mc64rd_+0x506>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1153 <mc64rd_+0x53>
xor    %eax,%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mc64rd_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    (%rdi),%eax
mov    %rax,-0x78(%rsp)
test   %eax,%eax
jle    1362 <mc64rd_+0x262>
add    $0xfffffffffffffff8,%r8
addq   $0x1,-0x78(%rsp)
mov    $0x1,%r10d
movabs $0xffffffff00000000,%r9
ff ff ff
jmp    114b <mc64rd_+0x4b>
nopl   0x0(%rax)
cmp    -0x78(%rsp),%r10
je     1362 <mc64rd_+0x262>
mov    -0x4(%rdx,%r10,4),%r13d
mov    (%rdx,%r10,4),%r12d
add    $0x1,%r10
mov    %r12d,%eax
sub    %r13d,%eax
cmp    $0x2,%eax
jl     1140 <mc64rd_+0x40>
cmp    $0xf,%eax
jae    1230 <mc64rd_+0x130>
lea    0x1(%r13),%esi
cmp    %r12d,%esi
jge    1140 <mc64rd_+0x40>
movslq %r13d,%r15
lea    (%r8,%r15,8),%r11
movslq %esi,%rdi
mov    %r13d,%ebp
jmp    11a7 <mc64rd_+0xa7>
mov    %rbx,%rax
sar    $0x20,%rax
sar    $0x1d,%rbx
add    %r8,%rbx
movsd  %xmm0,(%rbx)
mov    %r14d,-0x4(%rcx,%rax,4)
add    $0x1,%rdi
add    $0x1,%ebp
cmp    %edi,%r12d
je     1140 <mc64rd_+0x40>
movslq %ebp,%rsi
movsd  (%r8,%rsi,8),%xmm1
movsd  (%r8,%rdi,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    119b <mc64rd_+0x9b>
mov    -0x4(%rcx,%rdi,4),%r14d
movsd  %xmm1,(%r8,%rdi,8)
mov    -0x4(%rcx,%rsi,4),%ebx
mov    %ebx,-0x4(%rcx,%rdi,4)
mov    %r11,%rbx
mov    %r15,%rax
cmp    %r13d,%ebp
jle    1192 <mc64rd_+0x92>
mov    %rsi,%rbx
shl    $0x20,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  -0x8(%r8,%rsi,8),%xmm1
ucomisd %xmm1,%xmm0
jbe    1184 <mc64rd_+0x84>
movsd  %xmm1,(%r8,%rsi,8)
mov    -0x8(%rcx,%rsi,4),%eax
mov    %eax,-0x4(%rcx,%rsi,4)
lea    -0x1(%rsi),%rax
add    %r9,%rbx
mov    %rax,%rsi
cmp    %r15,%rax
jg     11f0 <mc64rd_+0xf0>
mov    %r11,%rbx
mov    %r15,%rax
jmp    1192 <mc64rd_+0x92>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r13d,-0x60(%rsp)
mov    %r12d,-0x5c(%rsp)
mov    $0x2,%eax
movslq %eax,%r11
lea    -0x2(%r11),%rax
mov    -0x68(%rsp,%r11,4),%r14d
movslq -0x64(%rsp,%r11,4),%rbp
cmp    %ebp,%r14d
jge    1340 <mc64rd_+0x240>
lea    (%rsp,%r11,4),%rsi
add    $0xffffffffffffff98,%rsi
mov    %rsi,-0x70(%rsp)
movslq %r14d,%rdi
lea    -0x64(%rsp,%r11,4),%rsi
mov    %rsi,-0x68(%rsp)
lea    (%r14,%rbp,1),%esi
mov    %esi,%ebx
shr    $0x1f,%ebx
add    %esi,%ebx
sar    %ebx
movslq %ebx,%rsi
movsd  (%r8,%rsi,8),%xmm0
lea    (%r8,%rdi,8),%rsi
mov    %ebp,%ebx
sub    %r14d,%ebx
xor    %r15d,%r15d
cs nopw 0x0(%rax,%rax,1)
nop
movsd  (%rsi,%r15,8),%xmm1
ucomisd %xmm0,%xmm1
jne    12c0 <mc64rd_+0x1c0>
jp     12c0 <mc64rd_+0x1c0>
add    $0x1,%r15
cmp    %r15d,%ebx
jne    12a0 <mc64rd_+0x1a0>
jmp    1340 <mc64rd_+0x240>
nopl   0x0(%rax)
minsd  %xmm1,%xmm0
mov    %r14d,%eax
jmp    12d9 <mc64rd_+0x1d9>
nopl   0x0(%rax)
add    $0x1,%rdi
cmp    %rdi,%rbp
je     1310 <mc64rd_+0x210>
movsd  (%r8,%rdi,8),%xmm1
ucomisd %xmm1,%xmm0
jae    12d0 <mc64rd_+0x1d0>
cltq
movsd  (%r8,%rax,8),%xmm2
movsd  %xmm1,(%r8,%rax,8)
movsd  %xmm2,(%r8,%rdi,8)
mov    -0x4(%rcx,%rax,4),%esi
mov    -0x4(%rcx,%rdi,4),%ebx
mov    %ebx,-0x4(%rcx,%rax,4)
mov    %esi,-0x4(%rcx,%rdi,4)
add    $0x1,%eax
jmp    12d0 <mc64rd_+0x1d0>
xchg   %ax,%ax
mov    %eax,%esi
sub    %r14d,%esi
mov    %ebp,%edi
sub    %eax,%edi
cmp    %edi,%esi
cmovl  %eax,%ebp
cmovge %eax,%r14d
mov    -0x68(%rsp),%rsi
cmovl  -0x70(%rsp),%rsi
mov    %ebp,-0x5c(%rsp,%r11,4)
mov    %r14d,-0x60(%rsp,%r11,4)
mov    %eax,(%rsi)
add    $0x2,%r11d
movslq %r11d,%rax
test   %rax,%rax
je     116c <mc64rd_+0x6c>
mov    -0x64(%rsp,%rax,4),%esi
sub    -0x68(%rsp,%rax,4),%esi
add    $0xfffffffffffffffe,%rax
cmp    $0xe,%esi
jle    1340 <mc64rd_+0x240>
add    $0x2,%eax
jmp    123f <mc64rd_+0x13f>
xor    %eax,%eax
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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