#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*/ prterr(int, char *);
void f5xact(double *pastp, const double *tol, int *kval, int *key, int *ldkey,
            int *ipoin, double *stp, int *ldstp, int *ifrq, int *npoin, int *nr,
            int *nl, int *ifreq, int *itop, int *ipsh) {
  static int itmp, ird, ipn, itp;
  double test1, test2;
  --nl;
  --nr;
  --npoin;
  --ifrq;
  --stp;
  --ipoin;
  --key;
  if (*ipsh) {
    ird = *kval % *ldkey + 1;
    for (itp = ird; itp <= *ldkey; ++itp) {
      if (key[itp] == *kval) {
        goto L40;
      }
      if (key[itp] < 0) {
        goto L30;
      }
    }
    for (itp = 1; itp <= ird - 1; ++itp) {
      if (key[itp] == *kval) {
        goto L40;
      }
      if (key[itp] < 0) {
        goto L30;
      }
    }
    prterr(6, "LDKEY is too small for this problem.\n"
              "Try increasing the size of the workspace.");
  L30:
    key[itp] = *kval;
    ++(*itop);
    ipoin[itp] = *itop;
    if (*itop > *ldstp) {
      prterr(7, "LDSTP is too small for this problem.\n"
                "Try increasing the size of the workspace.");
    }
    npoin[*itop] = -1;
    nr[*itop] = -1;
    nl[*itop] = -1;
    stp[*itop] = *pastp;
    ifrq[*itop] = *ifreq;
    return;
  }
L40:
  ipn = ipoin[itp];
  test1 = *pastp - *tol;
  test2 = *pastp + *tol;
L50:
  if (stp[ipn] < test1) {
    ipn = nl[ipn];
    if (ipn > 0) {
      goto L50;
    }
  } else if (stp[ipn] > test2) {
    ipn = nr[ipn];
    if (ipn > 0) {
      goto L50;
    }
  } else {
    ifrq[ipn] += *ifreq;
    return;
  }
  ++(*itop);
  if (*itop > *ldstp) {
    prterr(7, "LDSTP is too small for this problem.\n"
              "Try increasing the size of the workspace.");
    return;
  }
  ipn = ipoin[itp];
  itmp = ipn;
L60:
  if (stp[ipn] < test1) {
    itmp = ipn;
    ipn = nl[ipn];
    if (ipn > 0) {
      goto L60;
    } else {
      nl[itmp] = *itop;
    }
  } else if (stp[ipn] > test2) {
    itmp = ipn;
    ipn = nr[ipn];
    if (ipn > 0) {
      goto L60;
    } else {
      nr[itmp] = *itop;
    }
  }
  npoin[*itop] = npoin[itmp];
  npoin[itmp] = *itop;
  stp[*itop] = *pastp;
  ifrq[*itop] = *ifreq;
  nl[*itop] = -1;
  nr[*itop] = -1;
}


x86 assembly (clang, -O0):
<f5xact>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
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)
mov    0x38(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x38(%rbp)
mov    0x30(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x30(%rbp)
mov    0x28(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x28(%rbp)
mov    0x20(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x20(%rbp)
mov    0x10(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,0x10(%rbp)
mov    -0x30(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x20(%rbp)
mov    0x50(%rbp),%rax
cmpl   $0x0,(%rax)
je     137c <f5xact+0x26c>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x28(%rbp),%rcx
cltd
idivl  (%rcx)
add    $0x1,%edx
mov    %edx,0x2e65(%rip)
mov    0x2e5f(%rip),%eax
mov    %eax,0x2e61(%rip)
mov    0x2e5b(%rip),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jg     123b <f5xact+0x12b>
mov    -0x20(%rbp),%rax
movslq 0x2e44(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%eax
jne    1208 <f5xact+0xf8>
jmp    1381 <f5xact+0x271>
mov    -0x20(%rbp),%rax
movslq 0x2e25(%rip),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jge    1222 <f5xact+0x112>
jmp    12bf <f5xact+0x1af>
jmp    1227 <f5xact+0x117>
mov    0x2e0b(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2e02(%rip)
jmp    11d7 <f5xact+0xc7>
movl   $0x1,0x2df3(%rip)
mov    0x2ded(%rip),%eax
mov    0x2ddf(%rip),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     12ae <f5xact+0x19e>
mov    -0x20(%rbp),%rax
movslq 0x2dd1(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%eax
jne    127b <f5xact+0x16b>
jmp    1381 <f5xact+0x271>
mov    -0x20(%rbp),%rax
movslq 0x2db2(%rip),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jge    1295 <f5xact+0x185>
jmp    12bf <f5xact+0x1af>
jmp    129a <f5xact+0x18a>
mov    0x2d98(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2d8f(%rip)
jmp    1245 <f5xact+0x135>
mov    $0x6,%edi
lea    0xd46(%rip),%rsi
call   1030 <prterr@plt>
mov    -0x18(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
movslq 0x2d68(%rip),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x48(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    0x48(%rbp),%rax
mov    (%rax),%edx
mov    -0x30(%rbp),%rax
movslq 0x2d49(%rip),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x48(%rbp),%rax
mov    (%rax),%eax
mov    0x18(%rbp),%rcx
cmp    (%rcx),%eax
jle    1315 <f5xact+0x205>
mov    $0x7,%edi
lea    0xd3f(%rip),%rsi
call   1030 <prterr@plt>
mov    0x28(%rbp),%rax
mov    0x48(%rbp),%rcx
movslq (%rcx),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
mov    0x30(%rbp),%rax
mov    0x48(%rbp),%rcx
movslq (%rcx),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
mov    0x38(%rbp),%rax
mov    0x48(%rbp),%rcx
movslq (%rcx),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x10(%rbp),%rax
mov    0x48(%rbp),%rcx
movslq (%rcx),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x40(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rax
mov    0x48(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1618 <f5xact+0x508>
jmp    1381 <f5xact+0x271>
mov    -0x30(%rbp),%rax
movslq 0x2cac(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2c9f(%rip)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x10(%rbp),%rax
movslq 0x2c6a(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x38(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1409 <f5xact+0x2f9>
mov    0x38(%rbp),%rax
movslq 0x2c4b(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2c42(%rip)
cmpl   $0x0,0x2c3b(%rip)
jle    1404 <f5xact+0x2f4>
jmp    13bf <f5xact+0x2af>
jmp    1470 <f5xact+0x360>
mov    0x10(%rbp),%rax
movslq 0x2c20(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x40(%rbp),%xmm0
jbe    144f <f5xact+0x33f>
mov    0x30(%rbp),%rax
movslq 0x2c05(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2bfc(%rip)
cmpl   $0x0,0x2bf5(%rip)
jle    144a <f5xact+0x33a>
jmp    13bf <f5xact+0x2af>
jmp    146b <f5xact+0x35b>
mov    0x40(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rax
movslq 0x2bd4(%rip),%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
jmp    1618 <f5xact+0x508>
jmp    1470 <f5xact+0x360>
mov    0x48(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    0x48(%rbp),%rax
mov    (%rax),%eax
mov    0x18(%rbp),%rcx
cmp    (%rcx),%eax
jle    14a3 <f5xact+0x393>
mov    $0x7,%edi
lea    0xbb6(%rip),%rsi
call   1030 <prterr@plt>
jmp    1618 <f5xact+0x508>
mov    -0x30(%rbp),%rax
movslq 0x2b8a(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2b7d(%rip)
mov    0x2b77(%rip),%eax
mov    %eax,0x2b69(%rip)
mov    0x10(%rbp),%rax
movslq 0x2b66(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x38(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    152d <f5xact+0x41d>
mov    0x2b4c(%rip),%eax
mov    %eax,0x2b3e(%rip)
mov    0x38(%rbp),%rax
movslq 0x2b3b(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2b32(%rip)
cmpl   $0x0,0x2b2b(%rip)
jle    1514 <f5xact+0x404>
jmp    14c3 <f5xact+0x3b3>
mov    0x48(%rbp),%rax
mov    (%rax),%edx
mov    0x38(%rbp),%rax
movslq 0x2b07(%rip),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1598 <f5xact+0x488>
mov    0x10(%rbp),%rax
movslq 0x2afc(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x40(%rbp),%xmm0
jbe    1593 <f5xact+0x483>
mov    0x2ae6(%rip),%eax
mov    %eax,0x2ad8(%rip)
mov    0x30(%rbp),%rax
movslq 0x2ad5(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2acc(%rip)
cmpl   $0x0,0x2ac5(%rip)
jle    157a <f5xact+0x46a>
jmp    14c3 <f5xact+0x3b3>
mov    0x48(%rbp),%rax
mov    (%rax),%edx
mov    0x30(%rbp),%rax
movslq 0x2aa1(%rip),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1593 <f5xact+0x483>
jmp    1598 <f5xact+0x488>
mov    0x28(%rbp),%rax
movslq 0x2a89(%rip),%rcx
mov    (%rax,%rcx,4),%edx
mov    0x28(%rbp),%rax
mov    0x48(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x48(%rbp),%rax
mov    (%rax),%edx
mov    0x28(%rbp),%rax
movslq 0x2a67(%rip),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x10(%rbp),%rax
mov    0x48(%rbp),%rcx
movslq (%rcx),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x40(%rbp),%rax
mov    (%rax),%edx
mov    0x20(%rbp),%rax
mov    0x48(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x38(%rbp),%rax
mov    0x48(%rbp),%rcx
movslq (%rcx),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
mov    0x30(%rbp),%rax
mov    0x48(%rbp),%rcx
movslq (%rcx),%rcx
movl   $0xffffffff,(%rax,%rcx,4)
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<f5xact>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    0xa8(%rsp),%r10
mov    0xa0(%rsp),%rax
mov    %rax,0x18(%rsp)
mov    0x98(%rsp),%r12
mov    0x90(%rsp),%r14
mov    0x88(%rsp),%rax
mov    %rax,0x28(%rsp)
mov    0x80(%rsp),%r11
mov    0x78(%rsp),%rbx
mov    0x70(%rsp),%r15
mov    0xb0(%rsp),%rax
cmpl   $0x0,(%rax)
je     1208 <f5xact+0xf8>
mov    %rcx,%r13
mov    %rdi,0x10(%rsp)
mov    %rbx,(%rsp)
mov    %r9,0x8(%rsp)
mov    %rdx,0x30(%rsp)
mov    (%rdx),%ecx
mov    (%r8),%edi
mov    %ecx,%eax
cltd
idiv   %edi
lea    0x1(%rdx),%r8d
test   %edi,%edi
js     11cd <f5xact+0xbd>
movslq %r8d,%rbp
add    $0xffffffffffffffff,%rbp
mov    %r8d,%eax
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x0(%r13,%rbp,4),%ebx
cmp    %ecx,%ebx
je     1213 <f5xact+0x103>
test   %ebx,%ebx
js     1260 <f5xact+0x150>
add    $0x1,%eax
add    $0x1,%rbp
cmp    %rdi,%rbp
jl     11b0 <f5xact+0xa0>
test   %edx,%edx
jle    1223 <f5xact+0x113>
mov    %r8d,%edx
mov    $0x1,%eax
mov    0x8(%rsp),%r9
xchg   %ax,%ax
mov    -0x4(%r13,%rax,4),%edi
cmp    %ecx,%edi
je     12f5 <f5xact+0x1e5>
test   %edi,%edi
js     13d4 <f5xact+0x2c4>
add    $0x1,%rax
cmp    %rax,%rdx
jne    11e0 <f5xact+0xd0>
mov    %r11,0x20(%rsp)
mov    %r10,%rbx
jmp    1231 <f5xact+0x121>
mov    0x2e1e(%rip),%eax
jmp    1304 <f5xact+0x1f4>
mov    %eax,0x2e13(%rip)
mov    0x8(%rsp),%r9
jmp    12fb <f5xact+0x1eb>
mov    %r11,0x20(%rsp)
mov    %r10,%rbx
mov    $0x1,%r8d
mov    %r8d,0x2df4(%rip)
lea    0xdc1(%rip),%rsi
mov    $0x6,%edi
call   1030 <prterr@plt>
mov    0x30(%rsp),%rax
mov    (%rax),%ecx
mov    0x2dd6(%rip),%eax
mov    %rbx,%r10
mov    0x20(%rsp),%r11
jmp    1266 <f5xact+0x156>
mov    %eax,0x2dc6(%rip)
mov    0x8(%rsp),%r9
mov    (%rsp),%rdx
cltq
mov    %ecx,-0x4(%r13,%rax,4)
mov    (%r10),%ecx
add    $0x1,%ecx
mov    %ecx,(%r10)
mov    %ecx,-0x4(%r9,%rax,4)
mov    (%r10),%eax
cmp    (%rdx),%eax
jle    12aa <f5xact+0x19a>
lea    0xdbd(%rip),%rsi
mov    $0x7,%edi
mov    %r10,%rbx
mov    %r11,%r13
call   1030 <prterr@plt>
mov    %r13,%r11
mov    %rbx,%r10
mov    (%rbx),%eax
cltq
mov    0x28(%rsp),%rcx
movl   $0xffffffff,-0x4(%rcx,%rax,4)
ff
movslq (%r10),%rax
movl   $0xffffffff,-0x4(%r14,%rax,4)
ff ff
movslq (%r10),%rax
movl   $0xffffffff,-0x4(%r12,%rax,4)
ff ff
mov    0x10(%rsp),%rax
movsd  (%rax),%xmm0
movslq (%r10),%rax
movsd  %xmm0,-0x8(%r15,%rax,8)
mov    0x18(%rsp),%rcx
mov    (%rcx),%ecx
mov    %ecx,-0x4(%r11,%rax,4)
jmp    142e <f5xact+0x31e>
mov    %eax,0x2d31(%rip)
mov    (%rsp),%rbx
mov    0x10(%rsp),%rdi
cltq
mov    -0x4(%r9,%rax,4),%ecx
movsd  (%rdi),%xmm0
movsd  (%rsi),%xmm1
movapd %xmm0,%xmm2
subsd  %xmm1,%xmm2
addsd  %xmm0,%xmm1
jmp    1339 <f5xact+0x229>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    -0x4(%r12,%rcx,4),%ecx
test   %ecx,%ecx
jle    1358 <f5xact+0x248>
movslq %ecx,%rcx
movsd  -0x8(%r15,%rcx,8),%xmm3
ucomisd %xmm3,%xmm2
ja     1330 <f5xact+0x220>
ucomisd %xmm1,%xmm3
jbe    13a7 <f5xact+0x297>
mov    -0x4(%r14,%rcx,4),%ecx
test   %ecx,%ecx
jg     1339 <f5xact+0x229>
mov    (%r10),%edx
lea    0x1(%rdx),%ecx
mov    %ecx,(%r10)
cmp    (%rbx),%edx
jge    13b5 <f5xact+0x2a5>
mov    -0x4(%r9,%rax,4),%esi
mov    %esi,%edx
jmp    137d <f5xact+0x26d>
xchg   %ax,%ax
mov    %edx,%esi
mov    -0x4(%r12,%rax,4),%edi
mov    %edi,%edx
test   %edi,%edi
jle    13df <f5xact+0x2cf>
movslq %edx,%rax
movsd  -0x8(%r15,%rax,8),%xmm3
ucomisd %xmm3,%xmm2
ja     1370 <f5xact+0x260>
ucomisd %xmm1,%xmm3
jbe    13e6 <f5xact+0x2d6>
mov    %edx,%esi
mov    -0x4(%r14,%rax,4),%edi
mov    %edi,%edx
test   %edi,%edi
jg     137d <f5xact+0x26d>
mov    %ecx,-0x4(%r14,%rax,4)
jmp    13e9 <f5xact+0x2d9>
mov    0x18(%rsp),%rax
mov    (%rax),%eax
add    %eax,-0x4(%r11,%rcx,4)
jmp    142e <f5xact+0x31e>
lea    0xc93(%rip),%rsi
mov    $0x7,%edi
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <prterr@plt>
mov    %eax,0x2c52(%rip)
jmp    126b <f5xact+0x15b>
mov    %ecx,-0x4(%r12,%rax,4)
jmp    13e9 <f5xact+0x2d9>
movslq %esi,%rax
mov    0x28(%rsp),%rsi
mov    -0x4(%rsi,%rax,4),%ecx
movslq (%r10),%rdx
mov    %ecx,-0x4(%rsi,%rdx,4)
mov    (%r10),%ecx
mov    %ecx,-0x4(%rsi,%rax,4)
movslq (%r10),%rax
movsd  %xmm0,-0x8(%r15,%rax,8)
mov    0x18(%rsp),%rcx
mov    (%rcx),%ecx
mov    %ecx,-0x4(%r11,%rax,4)
movslq (%r10),%rax
movl   $0xffffffff,-0x4(%r12,%rax,4)
ff ff
movslq (%r10),%rax
movl   $0xffffffff,-0x4(%r14,%rax,4)
ff ff
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@f5xact.itp = internal unnamed_addr global i32 0
@.str = [79 x i8] c"LDKEY is too small for this problem.\0ATry increasing the size of the workspace.\00"
@.str.1 = [79 x i8] c"LDSTP is too small for this problem.\0ATry increasing the size of the workspace.\00"
define void @f5xact(double* nocapture %0, double* nocapture %1, i32* nocapture %2, i32* nocapture %3, i32* nocapture %4, i32* nocapture %5, double* nocapture %6, i32* nocapture %7, i32* nocapture %8, i32* nocapture %9, i32* nocapture %10, i32* nocapture %11, i32* nocapture %12, i32* nocapture %13, i32* nocapture %14) {
%16 = getelementptr inbounds i32, i32* %11, i64 -1
%17 = getelementptr inbounds i32, i32* %10, i64 -1
%18 = getelementptr inbounds i32, i32* %9, i64 -1
%19 = getelementptr inbounds i32, i32* %8, i64 -1
%20 = getelementptr inbounds double, double* %6, i64 -1
%21 = getelementptr inbounds i32, i32* %5, i64 -1
%22 = getelementptr inbounds i32, i32* %3, i64 -1
%23 = load i32, i32* %14
%24 = icmp eq i32 %23, 0
br i1 %24, label %25, label %27
25: ; preds = %15
%26 = load i32, i32* @f5xact.itp
br label %104
27: ; preds = %15
%28 = load i32, i32* %2
%29 = load i32, i32* %4
%30 = srem i32 %28, %29
%31 = add i32 %30, 1
%32 = icmp sgt i32 %29, -1
br i1 %32, label %33, label %36
33: ; preds = %27
%34 = sext i32 %31 to i64
%35 = zext i32 %29 to i64
br label %41
36: ; preds = %48, %27
%37 = icmp slt i32 %30, 1
br i1 %37, label %61, label %38
38: ; preds = %36
%39 = add nuw i32 %30, 1
%40 = zext i32 %31 to i64
br label %51
41: ; preds = %33, %48
%42 = phi i64 [ %34, %33 ], [ %49, %48 ]
%43 = getelementptr inbounds i32, i32* %22, i64 %42
%44 = load i32, i32* %43
%45 = icmp eq i32 %44, %28
br i1 %45, label %102, label %46
46: ; preds = %41
%47 = icmp slt i32 %44, 0
br i1 %47, label %68, label %48
48: ; preds = %46
%49 = add nsw i64 %42, 1
%50 = icmp slt i64 %42, %35
br i1 %50, label %41, label %36
51: ; preds = %38, %58
%52 = phi i64 [ 1, %38 ], [ %59, %58 ]
%53 = getelementptr inbounds i32, i32* %22, i64 %52
%54 = load i32, i32* %53
%55 = icmp eq i32 %54, %28
br i1 %55, label %100, label %56
56: ; preds = %51
%57 = icmp slt i32 %54, 0
br i1 %57, label %66, label %58
58: ; preds = %56
%59 = add nuw nsw i64 %52, 1
%60 = icmp eq i64 %59, %40
br i1 %60, label %61, label %51
61: ; preds = %58, %36
%62 = phi i32 [ 1, %36 ], [ %39, %58 ]
store i32 %62, i32* @f5xact.itp
%63 = tail call i32 @prterr(i32 6, i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str, i64 0, i64 0))
%64 = load i32, i32* %2
%65 = load i32, i32* @f5xact.itp
br label %70
66: ; preds = %56
%67 = trunc i64 %52 to i32
store i32 %67, i32* @f5xact.itp
br label %70
68: ; preds = %46
%69 = trunc i64 %42 to i32
store i32 %69, i32* @f5xact.itp
br label %70
70: ; preds = %68, %66, %61
%71 = phi i32 [ %69, %68 ], [ %67, %66 ], [ %65, %61 ]
%72 = phi i32 [ %28, %68 ], [ %28, %66 ], [ %64, %61 ]
%73 = sext i32 %71 to i64
%74 = getelementptr inbounds i32, i32* %22, i64 %73
store i32 %72, i32* %74
%75 = load i32, i32* %13
%76 = add nsw i32 %75, 1
store i32 %76, i32* %13
%77 = getelementptr inbounds i32, i32* %21, i64 %73
store i32 %76, i32* %77
%78 = load i32, i32* %13
%79 = load i32, i32* %7
%80 = icmp sgt i32 %78, %79
br i1 %80, label %81, label %84
81: ; preds = %70
%82 = tail call i32 @prterr(i32 7, i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.1, i64 0, i64 0))
%83 = load i32, i32* %13
br label %84
84: ; preds = %81, %70
%85 = phi i32 [ %83, %81 ], [ %78, %70 ]
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds i32, i32* %18, i64 %86
store i32 -1, i32* %87
%88 = load i32, i32* %13
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds i32, i32* %17, i64 %89
store i32 -1, i32* %90
%91 = load i32, i32* %13
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds i32, i32* %16, i64 %92
store i32 -1, i32* %93
%94 = load double, double* %0
%95 = load i32, i32* %13
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds double, double* %20, i64 %96
store double %94, double* %97
%98 = load i32, i32* %12
%99 = getelementptr inbounds i32, i32* %19, i64 %96
store i32 %98, i32* %99
br label %189
100: ; preds = %51
%101 = trunc i64 %52 to i32
store i32 %101, i32* @f5xact.itp
br label %104
102: ; preds = %41
%103 = trunc i64 %42 to i32
store i32 %103, i32* @f5xact.itp
br label %104
104: ; preds = %25, %102, %100
%105 = phi i32 [ %26, %25 ], [ %103, %102 ], [ %101, %100 ]
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds i32, i32* %21, i64 %106
%108 = load i32, i32* %107
%109 = load double, double* %0
%110 = load double, double* %1
%111 = fsub double %109, %110
%112 = fadd double %109, %110
br label %113
113: ; preds = %123, %104
%114 = phi i32 [ %108, %104 ], [ %124, %123 ]
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds double, double* %20, i64 %115
%117 = load double, double* %116
%118 = fcmp olt double %117, %111
br i1 %118, label %119, label %125
119: ; preds = %113
%120 = getelementptr inbounds i32, i32* %16, i64 %115
%121 = load i32, i32* %120
%122 = icmp sgt i32 %121, 0
br i1 %122, label %123, label %136
123: ; preds = %119, %127
%124 = phi i32 [ %121, %119 ], [ %129, %127 ]
br label %113
125: ; preds = %113
%126 = fcmp ogt double %117, %112
br i1 %126, label %127, label %131
127: ; preds = %125
%128 = getelementptr inbounds i32, i32* %17, i64 %115
%129 = load i32, i32* %128
%130 = icmp sgt i32 %129, 0
br i1 %130, label %123, label %136
131: ; preds = %125
%132 = load i32, i32* %12
%133 = getelementptr inbounds i32, i32* %19, i64 %115
%134 = load i32, i32* %133
%135 = add nsw i32 %134, %132
store i32 %135, i32* %133
br label %189
136: ; preds = %127, %119
%137 = load i32, i32* %13
%138 = add nsw i32 %137, 1
store i32 %138, i32* %13
%139 = load i32, i32* %7
%140 = icmp slt i32 %137, %139
br i1 %140, label %143, label %141
141: ; preds = %136
%142 = tail call i32 @prterr(i32 7, i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.1, i64 0, i64 0))
br label %189
143: ; preds = %136
%144 = load i32, i32* %107
br label %145
145: ; preds = %156, %143
%146 = phi i32 [ %144, %143 ], [ %147, %156 ]
%147 = phi i32 [ %144, %143 ], [ %157, %156 ]
%148 = sext i32 %147 to i64
%149 = getelementptr inbounds double, double* %20, i64 %148
%150 = load double, double* %149
%151 = fcmp olt double %150, %111
br i1 %151, label %152, label %160
152: ; preds = %145
%153 = getelementptr inbounds i32, i32* %16, i64 %148
%154 = load i32, i32* %153
%155 = icmp sgt i32 %154, 0
br i1 %155, label %156, label %158
156: ; preds = %152, %162
%157 = phi i32 [ %154, %152 ], [ %164, %162 ]
br label %145
158: ; preds = %152
%159 = getelementptr inbounds i32, i32* %16, i64 %148
store i32 %138, i32* %159
br label %170
160: ; preds = %145
%161 = fcmp ogt double %150, %112
br i1 %161, label %162, label %168
162: ; preds = %160
%163 = getelementptr inbounds i32, i32* %17, i64 %148
%164 = load i32, i32* %163
%165 = icmp sgt i32 %164, 0
br i1 %165, label %156, label %166
166: ; preds = %162
%167 = getelementptr inbounds i32, i32* %17, i64 %148
store i32 %138, i32* %167
br label %170
168: ; preds = %160
%169 = sext i32 %146 to i64
br label %170
170: ; preds = %168, %166, %158
%171 = phi i64 [ %169, %168 ], [ %148, %166 ], [ %148, %158 ]
%172 = getelementptr inbounds i32, i32* %18, i64 %171
%173 = load i32, i32* %172
%174 = load i32, i32* %13
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds i32, i32* %18, i64 %175
store i32 %173, i32* %176
%177 = load i32, i32* %13
store i32 %177, i32* %172
%178 = load i32, i32* %13
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds double, double* %20, i64 %179
store double %109, double* %180
%181 = load i32, i32* %12
%182 = getelementptr inbounds i32, i32* %19, i64 %179
store i32 %181, i32* %182
%183 = load i32, i32* %13
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds i32, i32* %16, i64 %184
store i32 -1, i32* %185
%186 = load i32, i32* %13
%187 = sext i32 %186 to i64
%188 = getelementptr inbounds i32, i32* %17, i64 %187
store i32 -1, i32* %188
br label %189
189: ; preds = %170, %141, %131, %84
ret void
}