void f4xact(int *nrow, int *irow, int *ncol, int *icol, double *dsp,
            double *fact, int *icstk, int *ncstk, int *lstk, int *mstk,
            int *nstk, int *nrstk, int *irstk, double *ystk,
            const double *tol) {
  int ikh;
  int i, j, k, l, m, n, mn, ic1, ir1, ict, irt, istk, nco, nro;
  double y, amx;
  irstk -= *nrow + 1;
  --irow;
  icstk -= *ncol + 1;
  --icol;
  --ncstk;
  --lstk;
  --mstk;
  --nstk;
  --nrstk;
  --ystk;
  if (*nrow == 1) {
    for (i = 1; i <= *ncol; ++i) {
      *dsp -= fact[icol[i]];
    }
    return;
  }
  if (*ncol == 1) {
    for (i = 1; i <= *nrow; ++i) {
      *dsp -= fact[irow[i]];
    }
    return;
  }
  if (*nrow * *ncol == 4) {
    if (irow[2] <= icol[2]) {
      *dsp = *dsp - fact[irow[2]] - fact[icol[1]] - fact[icol[2] - irow[2]];
    } else {
      *dsp = *dsp - fact[icol[2]] - fact[irow[1]] - fact[irow[2] - icol[2]];
    }
    return;
  }
  for (i = 1; i <= *nrow; ++i) {
    irstk[i + *nrow] = irow[*nrow - i + 1];
  }
  for (j = 1; j <= *ncol; ++j) {
    icstk[j + *ncol] = icol[*ncol - j + 1];
  }
  nro = *nrow;
  nco = *ncol;
  nrstk[1] = nro;
  ncstk[1] = nco;
  ystk[1] = 0.;
  y = 0.;
  istk = 1;
  l = 1;
  amx = 0.;
  do {
    ir1 = irstk[istk * *nrow + 1];
    ic1 = icstk[istk * *ncol + 1];
    if (ir1 > ic1) {
      if (nro >= nco) {
        m = nco - 1;
        n = 2;
      } else {
        m = nro;
        n = 1;
      }
    } else if (ir1 < ic1) {
      if (nro <= nco) {
        m = nro - 1;
        n = 1;
      } else {
        m = nco;
        n = 2;
      }
    } else {
      if (nro <= nco) {
        m = nro - 1;
        n = 1;
      } else {
        m = nco - 1;
        n = 2;
      }
    }
  L60:
    if (n == 1) {
      i = l;
      j = 1;
    } else {
      i = 1;
      j = l;
    }
    irt = irstk[i + istk * *nrow];
    ict = icstk[j + istk * *ncol];
    mn = irt;
    if (mn > ict) {
      mn = ict;
    }
    y += fact[mn];
    if (irt == ict) {
      --nro;
      --nco;
      f11act(&irstk[istk * *nrow + 1], &i, &nro,
             &irstk[(istk + 1) * *nrow + 1]);
      f11act(&icstk[istk * *ncol + 1], &j, &nco,
             &icstk[(istk + 1) * *ncol + 1]);
    } else if (irt > ict) {
      --nco;
      f11act(&icstk[istk * *ncol + 1], &j, &nco,
             &icstk[(istk + 1) * *ncol + 1]);
      ikh = irt - ict;
      f8xact(&irstk[istk * *nrow + 1], &ikh, &i, &nro,
             &irstk[(istk + 1) * *nrow + 1]);
    } else {
      --nro;
      f11act(&irstk[istk * *nrow + 1], &i, &nro,
             &irstk[(istk + 1) * *nrow + 1]);
      ikh = ict - irt;
      f8xact(&icstk[istk * *ncol + 1], &ikh, &j, &nco,
             &icstk[(istk + 1) * *ncol + 1]);
    }
    if (nro == 1) {
      for (k = 1; k <= nco; ++k) {
        y += fact[icstk[k + (istk + 1) * *ncol]];
      }
      break;
    }
    if (nco == 1) {
      for (k = 1; k <= nro; ++k) {
        y += fact[irstk[k + (istk + 1) * *nrow]];
      }
      break;
    }
    lstk[istk] = l;
    mstk[istk] = m;
    nstk[istk] = n;
    ++istk;
    nrstk[istk] = nro;
    ncstk[istk] = nco;
    ystk[istk] = y;
    l = 1;
  } while (1);
  if (y > amx) {
    amx = y;
    if (*dsp - amx <= *tol) {
      *dsp = 0.;
      return;
    }
  }
L100:
  --istk;
  if (istk == 0) {
    *dsp -= amx;
    if (*dsp - amx <= *tol) {
      *dsp = 0.;
    }
    return;
  }
  l = lstk[istk] + 1;
  for (;; ++l) {
    if (l > mstk[istk])
      goto L100;
    n = nstk[istk];
    nro = nrstk[istk];
    nco = ncstk[istk];
    y = ystk[istk];
    if (n == 1) {
      if (irstk[l + istk * *nrow] < irstk[l - 1 + istk * *nrow])
        goto L60;
    } else if (n == 2) {
      if (icstk[l + istk * *ncol] < icstk[l - 1 + istk * *ncol])
        goto L60;
    }
  }
}


x86 assembly (clang, -O0):
<f4xact>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%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    -0x8(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    0x40(%rbp),%rax
movslq %ecx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,0x40(%rbp)
mov    -0x10(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    0x10(%rbp),%rax
movslq %ecx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,0x10(%rbp)
mov    -0x20(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x20(%rbp)
mov    0x18(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x18(%rbp)
mov    0x20(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x20(%rbp)
mov    0x28(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x28(%rbp)
mov    0x30(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x30(%rbp)
mov    0x38(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x38(%rbp)
mov    0x48(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,0x48(%rbp)
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    1262 <f4xact+0x142>
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%eax
jg     125d <f4xact+0x13d>
mov    -0x30(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq -0x38(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    121b <f4xact+0xfb>
jmp    1afb <f4xact+0x9db>
mov    -0x18(%rbp),%rax
cmpl   $0x1,(%rax)
jne    12bd <f4xact+0x19d>
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x8(%rbp),%rcx
cmp    (%rcx),%eax
jg     12b8 <f4xact+0x198>
mov    -0x30(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x38(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1276 <f4xact+0x156>
jmp    1afb <f4xact+0x9db>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rcx
imul   (%rcx),%eax
cmp    $0x4,%eax
jne    1389 <f4xact+0x269>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x20(%rbp),%rcx
cmp    0x8(%rcx),%eax
jg     1338 <f4xact+0x218>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq 0x8(%rcx),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq 0x4(%rcx),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    0x8(%rcx),%ecx
mov    -0x10(%rbp),%rdx
sub    0x8(%rdx),%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1384 <f4xact+0x264>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq 0x8(%rcx),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    0x8(%rcx),%ecx
mov    -0x20(%rbp),%rdx
sub    0x8(%rdx),%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1afb <f4xact+0x9db>
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x8(%rbp),%rcx
cmp    (%rcx),%eax
jg     13d6 <f4xact+0x2b6>
mov    -0x10(%rbp),%rax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%ecx
sub    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    0x40(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%rsi
add    (%rsi),%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1390 <f4xact+0x270>
movl   $0x1,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%eax
jg     1423 <f4xact+0x303>
mov    -0x20(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    (%rcx),%ecx
sub    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    -0x18(%rbp),%rsi
add    (%rsi),%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    13dd <f4xact+0x2bd>
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x68(%rbp)
mov    -0x6c(%rbp),%ecx
mov    0x38(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x68(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    0x48(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
movl   $0x1,-0x64(%rbp)
movl   $0x1,-0x44(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x40(%rbp),%rax
mov    -0x64(%rbp),%ecx
mov    -0x8(%rbp),%rdx
imul   (%rdx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x58(%rbp)
mov    0x10(%rbp),%rax
mov    -0x64(%rbp),%ecx
mov    -0x18(%rbp),%rdx
imul   (%rdx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x54(%rbp)
mov    -0x58(%rbp),%eax
cmp    -0x54(%rbp),%eax
jle    14e6 <f4xact+0x3c6>
mov    -0x6c(%rbp),%eax
cmp    -0x68(%rbp),%eax
jl     14d4 <f4xact+0x3b4>
mov    -0x68(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x48(%rbp)
movl   $0x2,-0x4c(%rbp)
jmp    14e1 <f4xact+0x3c1>
mov    -0x6c(%rbp),%eax
mov    %eax,-0x48(%rbp)
movl   $0x1,-0x4c(%rbp)
jmp    1560 <f4xact+0x440>
mov    -0x58(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    1525 <f4xact+0x405>
mov    -0x6c(%rbp),%eax
cmp    -0x68(%rbp),%eax
jg     1513 <f4xact+0x3f3>
mov    -0x6c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x48(%rbp)
movl   $0x1,-0x4c(%rbp)
jmp    1520 <f4xact+0x400>
mov    -0x68(%rbp),%eax
mov    %eax,-0x48(%rbp)
movl   $0x2,-0x4c(%rbp)
jmp    155b <f4xact+0x43b>
mov    -0x6c(%rbp),%eax
cmp    -0x68(%rbp),%eax
jg     1546 <f4xact+0x426>
mov    -0x6c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x48(%rbp)
movl   $0x1,-0x4c(%rbp)
jmp    1556 <f4xact+0x436>
mov    -0x68(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x48(%rbp)
movl   $0x2,-0x4c(%rbp)
jmp    155b <f4xact+0x43b>
jmp    1560 <f4xact+0x440>
jmp    1565 <f4xact+0x445>
cmpl   $0x1,-0x4c(%rbp)
jne    1581 <f4xact+0x461>
mov    -0x44(%rbp),%eax
mov    %eax,-0x38(%rbp)
movl   $0x1,-0x3c(%rbp)
jmp    158e <f4xact+0x46e>
movl   $0x1,-0x38(%rbp)
mov    -0x44(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    0x40(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x64(%rbp),%edx
mov    -0x8(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x60(%rbp)
mov    0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
mov    -0x64(%rbp),%edx
mov    -0x18(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jle    15de <f4xact+0x4be>
mov    -0x5c(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x30(%rbp),%rax
movslq -0x50(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jne    16a4 <f4xact+0x584>
mov    -0x6c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x6c(%rbp)
mov    -0x68(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    0x40(%rbp),%rdi
mov    -0x64(%rbp),%eax
mov    -0x8(%rbp),%rcx
imul   (%rcx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
mov    0x40(%rbp),%rcx
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    -0x8(%rbp),%rdx
imul   (%rdx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rcx
lea    -0x38(%rbp),%rsi
lea    -0x6c(%rbp),%rdx
mov    $0x0,%al
call   1040 <f11act@plt>
mov    0x10(%rbp),%rdi
mov    -0x64(%rbp),%eax
mov    -0x18(%rbp),%rcx
imul   (%rcx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
mov    0x10(%rbp),%rcx
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rcx
lea    -0x3c(%rbp),%rsi
lea    -0x68(%rbp),%rdx
mov    $0x0,%al
call   1040 <f11act@plt>
jmp    17fe <f4xact+0x6de>
mov    -0x60(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jle    1757 <f4xact+0x637>
mov    -0x68(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    0x10(%rbp),%rdi
mov    -0x64(%rbp),%eax
mov    -0x18(%rbp),%rcx
imul   (%rcx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
mov    0x10(%rbp),%rcx
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rcx
lea    -0x3c(%rbp),%rsi
lea    -0x68(%rbp),%rdx
mov    $0x0,%al
call   1040 <f11act@plt>
mov    -0x60(%rbp),%eax
sub    -0x5c(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    0x40(%rbp),%rdi
mov    -0x64(%rbp),%eax
mov    -0x8(%rbp),%rcx
imul   (%rcx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
mov    0x40(%rbp),%r8
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    -0x8(%rbp),%rcx
imul   (%rcx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%r8
lea    -0x34(%rbp),%rsi
lea    -0x38(%rbp),%rdx
lea    -0x6c(%rbp),%rcx
mov    $0x0,%al
call   1030 <f8xact@plt>
jmp    17f9 <f4xact+0x6d9>
mov    -0x6c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x6c(%rbp)
mov    0x40(%rbp),%rdi
mov    -0x64(%rbp),%eax
mov    -0x8(%rbp),%rcx
imul   (%rcx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
mov    0x40(%rbp),%rcx
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    -0x8(%rbp),%rdx
imul   (%rdx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rcx
lea    -0x38(%rbp),%rsi
lea    -0x6c(%rbp),%rdx
mov    $0x0,%al
call   1040 <f11act@plt>
mov    -0x5c(%rbp),%eax
sub    -0x60(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    0x10(%rbp),%rdi
mov    -0x64(%rbp),%eax
mov    -0x18(%rbp),%rcx
imul   (%rcx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%rdi
mov    0x10(%rbp),%r8
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    -0x18(%rbp),%rcx
imul   (%rcx),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
add    %rax,%r8
lea    -0x34(%rbp),%rsi
lea    -0x3c(%rbp),%rdx
lea    -0x68(%rbp),%rcx
mov    $0x0,%al
call   1030 <f8xact@plt>
jmp    17fe <f4xact+0x6de>
cmpl   $0x1,-0x6c(%rbp)
jne    185e <f4xact+0x73e>
movl   $0x1,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x68(%rbp),%eax
jg     1859 <f4xact+0x739>
mov    -0x30(%rbp),%rax
mov    0x10(%rbp),%rcx
mov    -0x40(%rbp),%edx
mov    -0x64(%rbp),%esi
add    $0x1,%esi
mov    -0x18(%rbp),%rdi
imul   (%rdi),%esi
add    %esi,%edx
movslq %edx,%rdx
movslq (%rcx,%rdx,4),%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    180f <f4xact+0x6ef>
jmp    1935 <f4xact+0x815>
cmpl   $0x1,-0x68(%rbp)
jne    18be <f4xact+0x79e>
movl   $0x1,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jg     18b9 <f4xact+0x799>
mov    -0x30(%rbp),%rax
mov    0x40(%rbp),%rcx
mov    -0x40(%rbp),%edx
mov    -0x64(%rbp),%esi
add    $0x1,%esi
mov    -0x8(%rbp),%rdi
imul   (%rdi),%esi
add    %esi,%edx
movslq %edx,%rdx
movslq (%rcx,%rdx,4),%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    186f <f4xact+0x74f>
jmp    1935 <f4xact+0x815>
mov    -0x44(%rbp),%edx
mov    0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x48(%rbp),%edx
mov    0x28(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x4c(%rbp),%edx
mov    0x30(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
mov    -0x6c(%rbp),%edx
mov    0x38(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x68(%rbp),%edx
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movsd  -0x78(%rbp),%xmm0
mov    0x48(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x1,-0x44(%rbp)
mov    $0x1,%al
test   $0x1,%al
jne    1473 <f4xact+0x353>
jmp    1935 <f4xact+0x815>
movsd  -0x78(%rbp),%xmm0
ucomisd -0x80(%rbp),%xmm0
jbe    1983 <f4xact+0x863>
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm1
subsd  -0x80(%rbp),%xmm1
mov    0x50(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jb     197e <f4xact+0x85e>
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1afb <f4xact+0x9db>
jmp    1983 <f4xact+0x863>
jmp    1988 <f4xact+0x868>
mov    -0x64(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x64(%rbp)
cmpl   $0x0,-0x64(%rbp)
jne    19df <f4xact+0x8bf>
movsd  -0x80(%rbp),%xmm1
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm1
subsd  -0x80(%rbp),%xmm1
mov    0x50(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jb     19da <f4xact+0x8ba>
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1afb <f4xact+0x9db>
mov    0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    0x28(%rbp),%rcx
movslq -0x64(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jle    1a09 <f4xact+0x8e9>
jmp    1988 <f4xact+0x868>
mov    0x30(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x4c(%rbp)
mov    0x38(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x6c(%rbp)
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x68(%rbp)
mov    0x48(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
cmpl   $0x1,-0x4c(%rbp)
jne    1a94 <f4xact+0x974>
mov    0x40(%rbp),%rax
mov    -0x44(%rbp),%ecx
mov    -0x64(%rbp),%edx
mov    -0x8(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    0x40(%rbp),%rcx
mov    -0x44(%rbp),%edx
sub    $0x1,%edx
mov    -0x64(%rbp),%esi
mov    -0x8(%rbp),%rdi
imul   (%rdi),%esi
add    %esi,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    1a8f <f4xact+0x96f>
jmp    1565 <f4xact+0x445>
jmp    1ae8 <f4xact+0x9c8>
cmpl   $0x2,-0x4c(%rbp)
jne    1ae3 <f4xact+0x9c3>
mov    0x10(%rbp),%rax
mov    -0x44(%rbp),%ecx
mov    -0x64(%rbp),%edx
mov    -0x18(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    0x10(%rbp),%rcx
mov    -0x44(%rbp),%edx
sub    $0x1,%edx
mov    -0x64(%rbp),%esi
mov    -0x18(%rbp),%rdi
imul   (%rdi),%esi
add    %esi,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    1ade <f4xact+0x9be>
jmp    1565 <f4xact+0x445>
jmp    1ae3 <f4xact+0x9c3>
jmp    1ae8 <f4xact+0x9c8>
jmp    1aed <f4xact+0x9cd>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    19f0 <f4xact+0x8d0>
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<f4xact>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %r9,%rbx
movslq (%rdi),%rax
movslq (%rdx),%r14
mov    %r14d,%r11d
cmp    $0x1,%rax
jne    11fc <f4xact+0xdc>
test   %r11d,%r11d
jle    1a26 <f4xact+0x906>
mov    %r11d,%edx
movsd  (%r8),%xmm0
lea    -0x1(%rdx),%rdi
mov    %edx,%eax
and    $0x3,%eax
mov    $0x1,%esi
cmp    $0x3,%rdi
jb     11cd <f4xact+0xad>
and    $0xfffffffc,%edx
neg    %rdx
mov    $0x1,%esi
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movslq -0x4(%rcx,%rsi,4),%rdi
subsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%r8)
movslq (%rcx,%rsi,4),%rdi
subsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%r8)
movslq 0x4(%rcx,%rsi,4),%rdi
subsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%r8)
movslq 0x8(%rcx,%rsi,4),%rdi
subsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%r8)
lea    (%rdx,%rsi,1),%rdi
add    $0x4,%rdi
add    $0x4,%rsi
cmp    $0x1,%rdi
jne    1180 <f4xact+0x60>
test   %rax,%rax
je     1a26 <f4xact+0x906>
lea    (%rcx,%rsi,4),%rcx
add    $0xfffffffffffffffc,%rcx
xor    %edx,%edx
movslq (%rcx,%rdx,4),%rsi
subsd  (%rbx,%rsi,8),%xmm0
movsd  %xmm0,(%r8)
add    $0x1,%rdx
cmp    %rdx,%rax
jne    11e0 <f4xact+0xc0>
jmp    1a26 <f4xact+0x906>
cmp    $0x1,%r11d
jne    12bc <f4xact+0x19c>
test   %eax,%eax
jle    1a26 <f4xact+0x906>
mov    %eax,%ecx
movsd  (%r8),%xmm0
lea    -0x1(%rcx),%rdi
mov    %ecx,%eax
and    $0x3,%eax
mov    $0x1,%edx
cmp    $0x3,%rdi
jb     128d <f4xact+0x16d>
and    $0xfffffffc,%ecx
neg    %rcx
mov    $0x1,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movslq -0x4(%rsi,%rdx,4),%rdi
subsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%r8)
movslq (%rsi,%rdx,4),%rdi
subsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%r8)
movslq 0x4(%rsi,%rdx,4),%rdi
subsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%r8)
movslq 0x8(%rsi,%rdx,4),%rdi
subsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%r8)
lea    (%rcx,%rdx,1),%rdi
add    $0x4,%rdi
add    $0x4,%rdx
cmp    $0x1,%rdi
jne    1240 <f4xact+0x120>
test   %rax,%rax
je     1a26 <f4xact+0x906>
lea    (%rsi,%rdx,4),%rcx
add    $0xfffffffffffffffc,%rcx
xor    %edx,%edx
movslq (%rcx,%rdx,4),%rsi
subsd  (%rbx,%rsi,8),%xmm0
movsd  %xmm0,(%r8)
add    $0x1,%rdx
cmp    %rdx,%rax
jne    12a0 <f4xact+0x180>
jmp    1a26 <f4xact+0x906>
mov    %r11d,%ebp
imul   %eax,%ebp
cmp    $0x4,%ebp
jne    12f2 <f4xact+0x1d2>
movslq 0x4(%rsi),%rdx
movslq 0x4(%rcx),%rax
movsd  (%r8),%xmm0
cmp    %eax,%edx
jle    1a0b <f4xact+0x8eb>
subsd  (%rbx,%rax,8),%xmm0
movslq (%rsi),%rcx
subsd  (%rbx,%rcx,8),%xmm0
sub    %eax,%edx
mov    %edx,%eax
jmp    1a1a <f4xact+0x8fa>
mov    %rdx,%r13
mov    %rdi,0x18(%rsp)
mov    0xd0(%rsp),%r9
mov    0xa0(%rsp),%r15
mov    %rax,%r10
not    %r10
lea    (%r9,%r10,4),%rdx
mov    %rdx,0x28(%rsp)
not    %r14
test   %eax,%eax
jle    1356 <f4xact+0x236>
xor    %edx,%edx
xor    %ebp,%ebp
mov    0x18(%rsp),%r11
mov    0x28(%rsp),%r12
xchg   %ax,%ax
lea    (%rax,%rdx,1),%edi
movslq %edi,%rdi
mov    -0x4(%rsi,%rdi,4),%edi
cltq
add    %rbp,%rax
mov    %edi,0x4(%r12,%rax,4)
mov    (%r11),%eax
add    $0x1,%rbp
add    $0xffffffff,%edx
cmp    %ebp,%eax
jg     1330 <f4xact+0x210>
mov    0x0(%r13),%r11d
lea    (%r15,%r14,4),%rbp
test   %r11d,%r11d
mov    %rbp,0x20(%rsp)
mov    %r8,0x30(%rsp)
jle    139c <f4xact+0x27c>
xor    %eax,%eax
xor    %esi,%esi
nopl   (%rax)
lea    (%r11,%rax,1),%edi
movslq %edi,%rdi
mov    -0x4(%rcx,%rdi,4),%edi
movslq %r11d,%rdx
add    %rsi,%rdx
mov    %edi,0x4(%rbp,%rdx,4)
mov    0x0(%r13),%r11d
add    $0x1,%rsi
add    $0xffffffff,%eax
cmp    %esi,%r11d
jg     1370 <f4xact+0x250>
mov    0x18(%rsp),%rax
mov    (%rax),%eax
mov    %eax,(%rsp)
mov    %r11d,0x4(%rsp)
mov    0xc8(%rsp),%rcx
mov    %eax,(%rcx)
mov    0xa8(%rsp),%rcx
mov    %r11d,(%rcx)
mov    0xd8(%rsp),%rcx
movq   $0x0,(%rcx)
lea    0x10(%r9,%r10,4),%rcx
mov    %rcx,0x50(%rsp)
lea    0x10(%r15,%r14,4),%rcx
mov    %rcx,0x58(%rsp)
xorpd  %xmm2,%xmm2
mov    $0x1,%r12d
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x40(%rsp)
mov    %r13,0x38(%rsp)
mov    0x18(%rsp),%r8
mov    0x28(%rsp),%r9
mov    (%r8),%ecx
mov    %ecx,%esi
imul   %r12d,%esi
movslq %esi,%rdi
mov    0x0(%r13),%edx
mov    %edx,%esi
imul   %r12d,%esi
movslq %esi,%rsi
mov    0x20(%rsp),%rbp
mov    0x4(%rbp,%rsi,4),%esi
cmp    %esi,0x4(%r9,%rdi,4)
jle    144b <f4xact+0x32b>
lea    -0x1(%r11),%edi
xor    %esi,%esi
cmp    %r11d,%eax
cmovl  %eax,%edi
mov    %edi,0x8(%rsp)
setl   %sil
mov    $0x2,%ebp
sub    %esi,%ebp
mov    $0x1,%r15d
jmp    14bf <f4xact+0x39f>
jge    146c <f4xact+0x34c>
lea    -0x1(%rax),%esi
xor    %ebp,%ebp
cmp    %r11d,%eax
setg   %bpl
cmovg  %r11d,%esi
mov    %esi,0x8(%rsp)
add    $0x1,%ebp
mov    $0x1,%r15d
jmp    14bf <f4xact+0x39f>
cmp    %r11d,%eax
jle    1486 <f4xact+0x366>
lea    -0x1(%r11),%esi
mov    %esi,0x8(%rsp)
mov    $0x2,%ebp
mov    $0x1,%r15d
jmp    14bf <f4xact+0x39f>
lea    -0x1(%rax),%esi
mov    %esi,0x8(%rsp)
mov    $0x1,%ebp
mov    $0x1,%r15d
jmp    14bf <f4xact+0x39f>
nopw   0x0(%rax,%rax,1)
mov    (%r8),%ecx
mov    $0x2,%ebp
mov    %eax,(%rsp)
mov    %r11d,0x4(%rsp)
mov    0xd8(%rsp),%rsi
movsd  -0x8(%rsi,%r12,8),%xmm2
cmp    $0x1,%ebp
mov    $0x1,%esi
cmove  %r15d,%esi
mov    %r15d,%edi
mov    %ebp,0x4c(%rsp)
cmove  %ebp,%edi
mov    %esi,0x10(%rsp)
mov    %edi,0xc(%rsp)
mov    %ecx,%r8d
imul   %r12d,%r8d
add    %r8d,%esi
movslq %esi,%rsi
mov    (%r9,%rsi,4),%r14d
mov    %edx,%ebp
imul   %r12d,%ebp
add    %ebp,%edi
movslq %edi,%rsi
mov    0x20(%rsp),%rdi
mov    (%rdi,%rsi,4),%r13d
mov    %r14d,%esi
cmp    %r13d,%r14d
cmovg  %r13d,%esi
movslq %esi,%rsi
addsd  (%rbx,%rsi,8),%xmm2
movsd  %xmm2,0x60(%rsp)
jne    15a0 <f4xact+0x480>
add    $0xffffffff,%eax
mov    %eax,(%rsp)
add    $0xffffffff,%r11d
mov    %r11d,0x4(%rsp)
movslq %r8d,%rax
mov    %rdi,%r14
lea    (%r9,%rax,4),%rdi
add    $0x4,%rdi
lea    0x1(%r12),%ebp
imul   %ebp,%ecx
movslq %ecx,%rax
lea    (%r9,%rax,4),%rcx
add    $0x4,%rcx
lea    0x10(%rsp),%rsi
mov    %rsp,%rdx
xor    %eax,%eax
call   1040 <f11act@plt>
mov    0x38(%rsp),%r13
mov    0x0(%r13),%eax
mov    %eax,%ecx
imul   %r12d,%ecx
movslq %ecx,%rcx
lea    (%r14,%rcx,4),%rdi
add    $0x4,%rdi
imul   %ebp,%eax
cltq
lea    (%r14,%rax,4),%rcx
add    $0x4,%rcx
lea    0xc(%rsp),%rsi
lea    0x4(%rsp),%rdx
xor    %eax,%eax
call   1040 <f11act@plt>
jmp    16bd <f4xact+0x59d>
nopl   0x0(%rax)
mov    %r14d,%esi
sub    %r13d,%esi
jle    1640 <f4xact+0x520>
add    $0xffffffff,%r11d
mov    %r11d,0x4(%rsp)
movslq %ebp,%rax
mov    0x20(%rsp),%rcx
lea    (%rcx,%rax,4),%rdi
add    $0x4,%rdi
lea    0x1(%r12),%r14d
imul   %r14d,%edx
movslq %edx,%rax
lea    (%rcx,%rax,4),%rcx
add    $0x4,%rcx
mov    %esi,%r13d
lea    0xc(%rsp),%rsi
lea    0x4(%rsp),%rdx
xor    %eax,%eax
mov    %r9,%rbp
call   1040 <f11act@plt>
mov    %r13d,0x14(%rsp)
mov    0x18(%rsp),%rax
mov    (%rax),%eax
mov    %eax,%ecx
imul   %r12d,%ecx
movslq %ecx,%rcx
lea    0x4(,%rcx,4),%rdi
add    %rbp,%rdi
imul   %r14d,%eax
cltq
lea    0x4(,%rax,4),%r8
add    %rbp,%r8
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
mov    %rsp,%rcx
xor    %eax,%eax
call   1030 <f8xact@plt>
mov    0x38(%rsp),%r13
jmp    16bd <f4xact+0x59d>
nop
add    $0xffffffff,%eax
mov    %eax,(%rsp)
movslq %r8d,%rax
lea    (%r9,%rax,4),%rdi
add    $0x4,%rdi
lea    0x1(%r12),%ebp
imul   %ebp,%ecx
movslq %ecx,%rax
lea    (%r9,%rax,4),%rcx
add    $0x4,%rcx
lea    0x10(%rsp),%rsi
mov    %rsp,%rdx
xor    %eax,%eax
call   1040 <f11act@plt>
sub    %r14d,%r13d
mov    %r13d,0x14(%rsp)
mov    0x38(%rsp),%r13
mov    0x0(%r13),%eax
mov    %eax,%ecx
imul   %r12d,%ecx
movslq %ecx,%rcx
mov    0x20(%rsp),%rdx
lea    (%rdx,%rcx,4),%rdi
add    $0x4,%rdi
imul   %ebp,%eax
cltq
lea    (%rdx,%rax,4),%r8
add    $0x4,%r8
lea    0x14(%rsp),%rsi
lea    0xc(%rsp),%rdx
lea    0x4(%rsp),%rcx
xor    %eax,%eax
call   1030 <f8xact@plt>
mov    (%rsp),%eax
mov    0x4(%rsp),%r11d
cmp    $0x1,%rax
mov    0xa8(%rsp),%r14
movsd  0x60(%rsp),%xmm2
jne    17a0 <f4xact+0x680>
test   %r11d,%r11d
mov    0x18(%rsp),%r8
mov    0x28(%rsp),%r9
jle    1860 <f4xact+0x740>
movslq %r12d,%rax
add    $0x1,%rax
movslq 0x0(%r13),%rcx
imul   %rax,%rcx
lea    -0x1(%r11),%rdx
mov    %r11d,%eax
and    $0x3,%eax
mov    $0x1,%esi
cmp    $0x3,%rdx
jb     1764 <f4xact+0x644>
and    $0xfffffffc,%r11d
mov    0x58(%rsp),%rdx
lea    (%rdx,%rcx,4),%rdi
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movslq -0xc(%rdi,%rsi,4),%rdx
addsd  (%rbx,%rdx,8),%xmm2
movslq -0x8(%rdi,%rsi,4),%rdx
addsd  (%rbx,%rdx,8),%xmm2
movslq -0x4(%rdi,%rsi,4),%rdx
addsd  (%rbx,%rdx,8),%xmm2
movslq (%rdi,%rsi,4),%rdx
addsd  (%rbx,%rdx,8),%xmm2
add    $0x4,%rsi
cmp    %rsi,%r11
jne    1730 <f4xact+0x610>
add    $0x1,%rsi
test   %rax,%rax
je     1860 <f4xact+0x740>
add    %rcx,%rsi
mov    0x20(%rsp),%rcx
lea    (%rcx,%rsi,4),%rcx
xor    %edx,%edx
nopl   0x0(%rax,%rax,1)
movslq (%rcx,%rdx,4),%rsi
addsd  (%rbx,%rsi,8),%xmm2
add    $0x1,%rdx
cmp    %rdx,%rax
jne    1780 <f4xact+0x660>
jmp    1860 <f4xact+0x740>
nopw   0x0(%rax,%rax,1)
cmp    $0x1,%r11d
mov    0x18(%rsp),%r8
mov    0x28(%rsp),%r9
jne    1981 <f4xact+0x861>
test   %eax,%eax
jle    1860 <f4xact+0x740>
movslq %r12d,%rcx
add    $0x1,%rcx
movslq (%r8),%rdx
imul   %rcx,%rdx
lea    -0x1(%rax),%rdi
mov    %eax,%ecx
and    $0x3,%ecx
mov    $0x1,%esi
cmp    $0x3,%rdi
jb     1824 <f4xact+0x704>
and    $0xfffffffc,%eax
mov    0x50(%rsp),%rsi
lea    (%rsi,%rdx,4),%rdi
xor    %esi,%esi
nopl   0x0(%rax)
movslq -0xc(%rdi,%rsi,4),%rbp
addsd  (%rbx,%rbp,8),%xmm2
movslq -0x8(%rdi,%rsi,4),%rbp
addsd  (%rbx,%rbp,8),%xmm2
movslq -0x4(%rdi,%rsi,4),%rbp
addsd  (%rbx,%rbp,8),%xmm2
movslq (%rdi,%rsi,4),%rbp
addsd  (%rbx,%rbp,8),%xmm2
add    $0x4,%rsi
cmp    %rsi,%rax
jne    17f0 <f4xact+0x6d0>
add    $0x1,%rsi
test   %rcx,%rcx
je     1860 <f4xact+0x740>
add    %rdx,%rsi
lea    (%r9,%rsi,4),%rax
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movslq (%rax,%rdx,4),%rsi
addsd  (%rbx,%rsi,8),%xmm2
add    $0x1,%rdx
cmp    %rdx,%rcx
jne    1840 <f4xact+0x720>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
ucomisd 0x40(%rsp),%xmm2
jbe    1891 <f4xact+0x771>
mov    0x30(%rsp),%rax
movsd  (%rax),%xmm0
subsd  %xmm2,%xmm0
mov    0xe0(%rsp),%rax
movsd  (%rax),%xmm1
ucomisd %xmm0,%xmm1
movsd  %xmm2,0x40(%rsp)
jae    1a35 <f4xact+0x915>
add    $0xffffffff,%r12d
je     19d6 <f4xact+0x8b6>
movslq %r12d,%r12
jmp    18b5 <f4xact+0x795>
mov    %eax,(%rsp)
mov    %r11d,0x4(%rsp)
add    $0xffffffffffffffff,%r12
test   %r12d,%r12d
je     19d6 <f4xact+0x8b6>
mov    0xb0(%rsp),%rax
mov    -0x4(%rax,%r12,4),%r15d
mov    0xb8(%rsp),%rax
mov    -0x4(%rax,%r12,4),%edi
cmp    %edi,%r15d
jge    18a8 <f4xact+0x788>
mov    0xc0(%rsp),%rax
mov    -0x4(%rax,%r12,4),%ebp
mov    0xc8(%rsp),%rax
mov    -0x4(%rax,%r12,4),%eax
mov    -0x4(%r14,%r12,4),%r11d
add    $0x1,%r15d
neg    %edi
jmp    1946 <f4xact+0x826>
nopl   0x0(%rax,%rax,1)
mov    0x0(%r13),%edx
mov    %r12d,%ecx
imul   %edx,%ecx
lea    (%r15,%rcx,1),%esi
movslq %esi,%rsi
mov    0x20(%rsp),%r10
mov    (%r10,%rsi,4),%esi
add    %r15d,%ecx
add    $0xffffffff,%ecx
movslq %ecx,%rcx
cmp    (%r10,%rcx,4),%esi
jl     14a0 <f4xact+0x380>
lea    (%rdi,%r15,1),%ecx
add    $0x1,%ecx
mov    %r15d,%edx
add    $0x1,%edx
mov    %edx,%r15d
cmp    $0x1,%ecx
je     18a0 <f4xact+0x780>
cmp    $0x2,%ebp
je     1900 <f4xact+0x7e0>
cmp    $0x1,%ebp
jne    192d <f4xact+0x80d>
mov    (%r8),%ecx
mov    %r12d,%edx
imul   %ecx,%edx
lea    (%r15,%rdx,1),%esi
movslq %esi,%rsi
mov    (%r9,%rsi,4),%esi
add    %r15d,%edx
add    $0xffffffff,%edx
movslq %edx,%rdx
cmp    (%r9,%rdx,4),%esi
jge    192d <f4xact+0x80d>
mov    0x0(%r13),%edx
mov    $0x1,%ebp
jmp    14a8 <f4xact+0x388>
movslq %r12d,%rcx
mov    0xb0(%rsp),%rdx
mov    %r15d,-0x4(%rdx,%rcx,4)
mov    0xb8(%rsp),%rdx
mov    0x8(%rsp),%esi
mov    %esi,-0x4(%rdx,%rcx,4)
mov    0xc0(%rsp),%rdx
mov    0x4c(%rsp),%esi
mov    %esi,-0x4(%rdx,%rcx,4)
add    $0x1,%r12d
mov    0xc8(%rsp),%rdx
mov    %eax,(%rdx,%rcx,4)
mov    %r11d,(%r14,%rcx,4)
mov    0xd8(%rsp),%rdx
movsd  %xmm2,(%rdx,%rcx,8)
jmp    13ff <f4xact+0x2df>
mov    0x30(%rsp),%r8
movsd  (%r8),%xmm1
movsd  0x40(%rsp),%xmm0
subsd  %xmm0,%xmm1
movsd  %xmm1,(%r8)
subsd  %xmm0,%xmm1
mov    0xe0(%rsp),%rax
movsd  (%rax),%xmm2
xorpd  %xmm0,%xmm0
ucomisd %xmm1,%xmm2
jae    1a21 <f4xact+0x901>
jmp    1a26 <f4xact+0x906>
subsd  (%rbx,%rdx,8),%xmm0
movslq (%rcx),%rcx
subsd  (%rbx,%rcx,8),%xmm0
sub    %edx,%eax
cltq
subsd  (%rbx,%rax,8),%xmm0
movsd  %xmm0,(%r8)
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xorpd  %xmm0,%xmm0
mov    0x30(%rsp),%r8
jmp    1a21 <f4xact+0x901>

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

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