#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 */
double eri(double, double, double, double, int, int, int, double, double,
           double, double, double, int, int, int, double, double, double,
           double, double, int, int, int, double, double, double, double,
           double, int, int, int, double);
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ printf(char *);
double contr_grad_grad_eri(int lena, double *aexps, double *acoefs,
                           double *anorms, double xa, double ya, double za,
                           int la, int ma, int na, int lenb, double *bexps,
                           double *bcoefs, double *bnorms, double xb, double yb,
                           double zb, int lb, int mb, int nb, int lenc,
                           double *cexps, double *ccoefs, double *cnorms,
                           double xc, double yc, double zc, int lc, int mc,
                           int nc, int lend, double *dexps, double *dcoefs,
                           double *dnorms, double xd, double yd, double zd,
                           int ld, int md, int nd, int direction) {
  double val;
  int p, q, r, s;
  int lA, mA, nA;
  int lC, mC, nC;
  double EE = 0.0;
  switch (direction) {
  case 0:
    lA = 1;
    mA = 0;
    nA = 0;
    lC = 1;
    mC = 0;
    nC = 0;
    break;
  case 1:
    lA = 0;
    mA = 1;
    nA = 0;
    lC = 0;
    mC = 1;
    nC = 0;
    break;
  case 2:
    lA = 0;
    mA = 0;
    nA = 1;
    lC = 0;
    mC = 0;
    nC = 1;
    break;
  default:
    printf("contr_grad_grad_eri: error unrecognized direction flag\n");
    exit(-1);
  }
  if ((la * lA + ma * mA + na * nA) > 0) {
    val = 0.0;
    if ((lc * lC + mc * mC + nc * nC) > 0)
      for (p = lena - 1; p >= 0; p--)
        for (q = lenb - 1; q >= 0; q--)
          for (r = lenc - 1; r >= 0; r--)
            for (s = lend - 1; s >= 0; s--)
              val += acoefs[p] * bcoefs[q] * ccoefs[r] * dcoefs[s] *
                     eri(xa, ya, za, anorms[p], la - lA, ma - mA, na - nA,
                         aexps[p], xb, yb, zb, bnorms[q], lb, mb, nb, bexps[q],
                         xc, yc, zc, cnorms[r], lc - lC, mc - mC, nc - nC,
                         cexps[r], xd, yd, zd, dnorms[s], ld, md, nd, dexps[s]);
    ;
    val = val * (la * lA + ma * mA + na * nA) * (lc * lC + mc * mC + nc * nC);
    EE = EE + val;
    val = 0.0;
    for (p = lena - 1; p >= 0; p--)
      for (q = lenb - 1; q >= 0; q--)
        for (r = lenc - 1; r >= 0; r--)
          for (s = lend - 1; s >= 0; s--)
            val += cexps[r] * acoefs[p] * bcoefs[q] * ccoefs[r] * dcoefs[s] *
                   eri(xa, ya, za, anorms[p], la - lA, ma - mA, na - nA,
                       aexps[p], xb, yb, zb, bnorms[q], lb, mb, nb, bexps[q],
                       xc, yc, zc, cnorms[r], lc + lC, mc + mC, nc + nC,
                       cexps[r], xd, yd, zd, dnorms[s], ld, md, nd, dexps[s]);
    ;
    val = val * (la * lA + ma * mA + na * nA) * 2.0;
    EE = EE - val;
  }
  val = 0.0;
  if ((lc * lC + mc * mC + nc * nC) > 0)
    for (p = lena - 1; p >= 0; p--)
      for (q = lenb - 1; q >= 0; q--)
        for (r = lenc - 1; r >= 0; r--)
          for (s = lend - 1; s >= 0; s--)
            val += aexps[p] * acoefs[p] * bcoefs[q] * ccoefs[r] * dcoefs[s] *
                   eri(xa, ya, za, anorms[p], la + lA, ma + mA, na + nA,
                       aexps[p], xb, yb, zb, bnorms[q], lb, mb, nb, bexps[q],
                       xc, yc, zc, cnorms[r], lc - lC, mc - mC, nc - nC,
                       cexps[r], xd, yd, zd, dnorms[s], ld, md, nd, dexps[s]);
  ;
  val = val * (lc * lC + mc * mC + nc * nC) * 2.0;
  EE = EE - val;
  val = 0.0;
  for (p = lena - 1; p >= 0; p--)
    for (q = lenb - 1; q >= 0; q--)
      for (r = lenc - 1; r >= 0; r--)
        for (s = lend - 1; s >= 0; s--)
          val += aexps[p] * cexps[r] * acoefs[p] * bcoefs[q] * ccoefs[r] *
                 dcoefs[s] *
                 eri(xa, ya, za, anorms[p], la + lA, ma + mA, na + nA, aexps[p],
                     xb, yb, zb, bnorms[q], lb, mb, nb, bexps[q], xc, yc, zc,
                     cnorms[r], lc + lC, mc + mC, nc + nC, cexps[r], xd, yd, zd,
                     dnorms[s], ld, md, nd, dexps[s]);
  ;
  val = val * 4.0;
  EE = EE + val;
  return EE;
}


x86 assembly (clang, -O0):
<contr_grad_grad_eri>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x1f8,%rsp
mov    0xe0(%rbp),%eax
mov    0xd8(%rbp),%eax
mov    0xd0(%rbp),%eax
mov    0xc8(%rbp),%eax
movsd  0xc0(%rbp),%xmm8
movsd  0xb8(%rbp),%xmm8
movsd  0xb0(%rbp),%xmm8
mov    0xa8(%rbp),%rax
mov    0xa0(%rbp),%rax
mov    0x98(%rbp),%rax
mov    0x90(%rbp),%eax
mov    0x88(%rbp),%eax
mov    0x80(%rbp),%eax
mov    0x78(%rbp),%eax
movsd  0x70(%rbp),%xmm8
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%eax
mov    0x48(%rbp),%eax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x2c(%rbp)
mov    %rsi,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
movsd  %xmm0,-0x50(%rbp)
movsd  %xmm1,-0x58(%rbp)
movsd  %xmm2,-0x60(%rbp)
mov    %r8d,-0x64(%rbp)
mov    %r9d,-0x68(%rbp)
movsd  %xmm3,-0x70(%rbp)
movsd  %xmm4,-0x78(%rbp)
movsd  %xmm5,-0x80(%rbp)
movsd  %xmm6,-0x88(%rbp)
ff
movsd  %xmm7,-0x90(%rbp)
ff
movq   $0x0,-0xc8(%rbp)
mov    0xe0(%rbp),%eax
mov    %eax,-0xcc(%rbp)
test   %eax,%eax
je     1262 <contr_grad_grad_eri+0x132>
jmp    123a <contr_grad_grad_eri+0x10a>
mov    -0xcc(%rbp),%eax
sub    $0x1,%eax
je     12a3 <contr_grad_grad_eri+0x173>
jmp    124e <contr_grad_grad_eri+0x11e>
mov    -0xcc(%rbp),%eax
sub    $0x2,%eax
je     12e4 <contr_grad_grad_eri+0x1b4>
jmp    1325 <contr_grad_grad_eri+0x1f5>
movl   $0x1,-0xac(%rbp)
movl   $0x0,-0xb0(%rbp)
movl   $0x0,-0xb4(%rbp)
movl   $0x1,-0xb8(%rbp)
movl   $0x0,-0xbc(%rbp)
movl   $0x0,-0xc0(%rbp)
jmp    133b <contr_grad_grad_eri+0x20b>
movl   $0x0,-0xac(%rbp)
movl   $0x1,-0xb0(%rbp)
movl   $0x0,-0xb4(%rbp)
movl   $0x0,-0xb8(%rbp)
movl   $0x1,-0xbc(%rbp)
movl   $0x0,-0xc0(%rbp)
jmp    133b <contr_grad_grad_eri+0x20b>
movl   $0x0,-0xac(%rbp)
movl   $0x0,-0xb0(%rbp)
movl   $0x1,-0xb4(%rbp)
movl   $0x0,-0xb8(%rbp)
movl   $0x0,-0xbc(%rbp)
movl   $0x1,-0xc0(%rbp)
jmp    133b <contr_grad_grad_eri+0x20b>
lea    0x1ce4(%rip),%rdi
call   1030 <printf@plt>
mov    $0xffffffff,%edi
call   1050 <exit@plt>
mov    -0x64(%rbp),%eax
imul   -0xac(%rbp),%eax
mov    -0x68(%rbp),%ecx
imul   -0xb0(%rbp),%ecx
add    %ecx,%eax
mov    0x10(%rbp),%ecx
imul   -0xb4(%rbp),%ecx
add    %ecx,%eax
cmp    $0x0,%eax
jle    1b1a <contr_grad_grad_eri+0x9ea>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x78(%rbp),%eax
imul   -0xb8(%rbp),%eax
mov    0x80(%rbp),%ecx
imul   -0xbc(%rbp),%ecx
add    %ecx,%eax
mov    0x88(%rbp),%ecx
imul   -0xc0(%rbp),%ecx
add    %ecx,%eax
cmp    $0x0,%eax
jle    16e3 <contr_grad_grad_eri+0x5b3>
mov    -0x2c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x9c(%rbp)
cmpl   $0x0,-0x9c(%rbp)
jl     16de <contr_grad_grad_eri+0x5ae>
mov    0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa0(%rbp)
cmpl   $0x0,-0xa0(%rbp)
jl     16c5 <contr_grad_grad_eri+0x595>
mov    0x50(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa4(%rbp)
cmpl   $0x0,-0xa4(%rbp)
jl     16ac <contr_grad_grad_eri+0x57c>
mov    0x90(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa8(%rbp)
cmpl   $0x0,-0xa8(%rbp)
jl     1693 <contr_grad_grad_eri+0x563>
mov    -0x40(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0xa0(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xa0(%rbp),%rax
movslq -0xa8(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x48(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm3
mov    -0x64(%rbp),%edi
sub    -0xac(%rbp),%edi
mov    -0x68(%rbp),%esi
sub    -0xb0(%rbp),%esi
mov    0x10(%rbp),%edx
sub    -0xb4(%rbp),%edx
mov    -0x38(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm4
movsd  -0x70(%rbp),%xmm5
movsd  -0x78(%rbp),%xmm6
movsd  -0x80(%rbp),%xmm7
mov    0x30(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm8
mov    0x38(%rbp),%ecx
mov    0x40(%rbp),%r8d
mov    0x48(%rbp),%r9d
mov    0x20(%rbp),%rax
movslq -0xa0(%rbp),%r10
movsd  (%rax,%r10,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0x70(%rbp),%xmm15
mov    0x68(%rbp),%rax
movslq -0xa4(%rbp),%r10
movsd  (%rax,%r10,8),%xmm14
mov    0x78(%rbp),%r15d
sub    -0xb8(%rbp),%r15d
mov    0x80(%rbp),%r14d
sub    -0xbc(%rbp),%r14d
mov    0x88(%rbp),%ebx
sub    -0xc0(%rbp),%ebx
mov    0x58(%rbp),%rax
movslq -0xa4(%rbp),%r10
movsd  (%rax,%r10,8),%xmm13
movsd  0xb0(%rbp),%xmm12
movsd  0xb8(%rbp),%xmm11
movsd  0xc0(%rbp),%xmm10
mov    0xa8(%rbp),%rax
movslq -0xa8(%rbp),%r10
movsd  (%rax,%r10,8),%xmm9
mov    0xc8(%rbp),%r11d
mov    0xd0(%rbp),%r10d
mov    0xd8(%rbp),%eax
mov    0x98(%rbp),%r12
movslq -0xa8(%rbp),%r13
movsd  (%r12,%r13,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm8,(%rsp)
movsd  -0xf8(%rbp),%xmm8
ff ff
movsd  %xmm8,0x8(%rsp)
movsd  -0xf0(%rbp),%xmm8
ff ff
movsd  %xmm8,0x10(%rsp)
movsd  -0xe8(%rbp),%xmm8
ff ff
movsd  %xmm8,0x18(%rsp)
movsd  -0xe0(%rbp),%xmm8
ff ff
movsd  %xmm15,0x20(%rsp)
movsd  %xmm14,0x28(%rsp)
mov    %r15d,0x30(%rsp)
mov    %r14d,0x38(%rsp)
mov    %ebx,0x40(%rsp)
movsd  %xmm13,0x48(%rsp)
movsd  %xmm12,0x50(%rsp)
movsd  %xmm11,0x58(%rsp)
movsd  %xmm10,0x60(%rsp)
movsd  %xmm9,0x68(%rsp)
mov    %r11d,0x70(%rsp)
mov    %r10d,0x78(%rsp)
mov    %eax,0x80(%rsp)
movsd  %xmm8,0x88(%rsp)
call   1040 <eri@plt>
movaps %xmm0,%xmm2
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
jmp    13fc <contr_grad_grad_eri+0x2cc>
jmp    1698 <contr_grad_grad_eri+0x568>
mov    -0xa4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa4(%rbp)
jmp    13e0 <contr_grad_grad_eri+0x2b0>
jmp    16b1 <contr_grad_grad_eri+0x581>
mov    -0xa0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa0(%rbp)
jmp    13c7 <contr_grad_grad_eri+0x297>
jmp    16ca <contr_grad_grad_eri+0x59a>
mov    -0x9c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x9c(%rbp)
jmp    13ae <contr_grad_grad_eri+0x27e>
jmp    16e3 <contr_grad_grad_eri+0x5b3>
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x64(%rbp),%eax
imul   -0xac(%rbp),%eax
mov    -0x68(%rbp),%ecx
imul   -0xb0(%rbp),%ecx
add    %ecx,%eax
mov    0x10(%rbp),%ecx
imul   -0xb4(%rbp),%ecx
add    %ecx,%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
mov    0x78(%rbp),%eax
imul   -0xb8(%rbp),%eax
mov    0x80(%rbp),%ecx
imul   -0xbc(%rbp),%ecx
add    %ecx,%eax
mov    0x88(%rbp),%ecx
imul   -0xc0(%rbp),%ecx
add    %ecx,%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x2c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x9c(%rbp)
cmpl   $0x0,-0x9c(%rbp)
jl     1abc <contr_grad_grad_eri+0x98c>
mov    0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa0(%rbp)
cmpl   $0x0,-0xa0(%rbp)
jl     1aa3 <contr_grad_grad_eri+0x973>
mov    0x50(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa4(%rbp)
cmpl   $0x0,-0xa4(%rbp)
jl     1a8a <contr_grad_grad_eri+0x95a>
mov    0x90(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa8(%rbp)
cmpl   $0x0,-0xa8(%rbp)
jl     1a71 <contr_grad_grad_eri+0x941>
mov    0x58(%rbp),%rax
movslq -0xa4(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x9c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0xa0(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xa0(%rbp),%rax
movslq -0xa8(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x48(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm3
mov    -0x64(%rbp),%edi
sub    -0xac(%rbp),%edi
mov    -0x68(%rbp),%esi
sub    -0xb0(%rbp),%esi
mov    0x10(%rbp),%edx
sub    -0xb4(%rbp),%edx
mov    -0x38(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm4
movsd  -0x70(%rbp),%xmm5
movsd  -0x78(%rbp),%xmm6
movsd  -0x80(%rbp),%xmm7
mov    0x30(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm8
mov    0x38(%rbp),%ecx
mov    0x40(%rbp),%r8d
mov    0x48(%rbp),%r9d
mov    0x20(%rbp),%rax
movslq -0xa0(%rbp),%r10
movsd  (%rax,%r10,8),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  0x70(%rbp),%xmm15
mov    0x68(%rbp),%rax
movslq -0xa4(%rbp),%r10
movsd  (%rax,%r10,8),%xmm14
mov    0x78(%rbp),%r15d
add    -0xb8(%rbp),%r15d
mov    0x80(%rbp),%r14d
add    -0xbc(%rbp),%r14d
mov    0x88(%rbp),%ebx
add    -0xc0(%rbp),%ebx
mov    0x58(%rbp),%rax
movslq -0xa4(%rbp),%r10
movsd  (%rax,%r10,8),%xmm13
movsd  0xb0(%rbp),%xmm12
movsd  0xb8(%rbp),%xmm11
movsd  0xc0(%rbp),%xmm10
mov    0xa8(%rbp),%rax
movslq -0xa8(%rbp),%r10
movsd  (%rax,%r10,8),%xmm9
mov    0xc8(%rbp),%r11d
mov    0xd0(%rbp),%r10d
mov    0xd8(%rbp),%eax
mov    0x98(%rbp),%r12
movslq -0xa8(%rbp),%r13
movsd  (%r12,%r13,8),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm8,(%rsp)
movsd  -0x128(%rbp),%xmm8
ff ff
movsd  %xmm8,0x8(%rsp)
movsd  -0x120(%rbp),%xmm8
ff ff
movsd  %xmm8,0x10(%rsp)
movsd  -0x118(%rbp),%xmm8
ff ff
movsd  %xmm8,0x18(%rsp)
movsd  -0x110(%rbp),%xmm8
ff ff
movsd  %xmm15,0x20(%rsp)
movsd  %xmm14,0x28(%rsp)
mov    %r15d,0x30(%rsp)
mov    %r14d,0x38(%rsp)
mov    %ebx,0x40(%rsp)
movsd  %xmm13,0x48(%rsp)
movsd  %xmm12,0x50(%rsp)
movsd  %xmm11,0x58(%rsp)
movsd  %xmm10,0x60(%rsp)
movsd  %xmm9,0x68(%rsp)
mov    %r11d,0x70(%rsp)
mov    %r10d,0x78(%rsp)
mov    %eax,0x80(%rsp)
movsd  %xmm8,0x88(%rsp)
call   1040 <eri@plt>
movaps %xmm0,%xmm2
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
jmp    17ca <contr_grad_grad_eri+0x69a>
jmp    1a76 <contr_grad_grad_eri+0x946>
mov    -0xa4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa4(%rbp)
jmp    17ae <contr_grad_grad_eri+0x67e>
jmp    1a8f <contr_grad_grad_eri+0x95f>
mov    -0xa0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa0(%rbp)
jmp    1795 <contr_grad_grad_eri+0x665>
jmp    1aa8 <contr_grad_grad_eri+0x978>
mov    -0x9c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x9c(%rbp)
jmp    177c <contr_grad_grad_eri+0x64c>
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x64(%rbp),%eax
imul   -0xac(%rbp),%eax
mov    -0x68(%rbp),%ecx
imul   -0xb0(%rbp),%ecx
add    %ecx,%eax
mov    0x10(%rbp),%ecx
imul   -0xb4(%rbp),%ecx
add    %ecx,%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x150a(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x78(%rbp),%eax
imul   -0xb8(%rbp),%eax
mov    0x80(%rbp),%ecx
imul   -0xbc(%rbp),%ecx
add    %ecx,%eax
mov    0x88(%rbp),%ecx
imul   -0xc0(%rbp),%ecx
add    %ecx,%eax
cmp    $0x0,%eax
jle    1ea7 <contr_grad_grad_eri+0xd77>
mov    -0x2c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x9c(%rbp)
cmpl   $0x0,-0x9c(%rbp)
jl     1ea2 <contr_grad_grad_eri+0xd72>
mov    0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa0(%rbp)
cmpl   $0x0,-0xa0(%rbp)
jl     1e89 <contr_grad_grad_eri+0xd59>
mov    0x50(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa4(%rbp)
cmpl   $0x0,-0xa4(%rbp)
jl     1e70 <contr_grad_grad_eri+0xd40>
mov    0x90(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa8(%rbp)
cmpl   $0x0,-0xa8(%rbp)
jl     1e57 <contr_grad_grad_eri+0xd27>
mov    -0x38(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x9c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0xa0(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xa0(%rbp),%rax
movslq -0xa8(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x48(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm3
mov    -0x64(%rbp),%edi
add    -0xac(%rbp),%edi
mov    -0x68(%rbp),%esi
add    -0xb0(%rbp),%esi
mov    0x10(%rbp),%edx
add    -0xb4(%rbp),%edx
mov    -0x38(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm4
movsd  -0x70(%rbp),%xmm5
movsd  -0x78(%rbp),%xmm6
movsd  -0x80(%rbp),%xmm7
mov    0x30(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm8
mov    0x38(%rbp),%ecx
mov    0x40(%rbp),%r8d
mov    0x48(%rbp),%r9d
mov    0x20(%rbp),%rax
movslq -0xa0(%rbp),%r10
movsd  (%rax,%r10,8),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
movsd  0x70(%rbp),%xmm15
mov    0x68(%rbp),%rax
movslq -0xa4(%rbp),%r10
movsd  (%rax,%r10,8),%xmm14
mov    0x78(%rbp),%r15d
sub    -0xb8(%rbp),%r15d
mov    0x80(%rbp),%r14d
sub    -0xbc(%rbp),%r14d
mov    0x88(%rbp),%ebx
sub    -0xc0(%rbp),%ebx
mov    0x58(%rbp),%rax
movslq -0xa4(%rbp),%r10
movsd  (%rax,%r10,8),%xmm13
movsd  0xb0(%rbp),%xmm12
movsd  0xb8(%rbp),%xmm11
movsd  0xc0(%rbp),%xmm10
mov    0xa8(%rbp),%rax
movslq -0xa8(%rbp),%r10
movsd  (%rax,%r10,8),%xmm9
mov    0xc8(%rbp),%r11d
mov    0xd0(%rbp),%r10d
mov    0xd8(%rbp),%eax
mov    0x98(%rbp),%r12
movslq -0xa8(%rbp),%r13
movsd  (%r12,%r13,8),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm8,(%rsp)
movsd  -0x158(%rbp),%xmm8
ff ff
movsd  %xmm8,0x8(%rsp)
movsd  -0x150(%rbp),%xmm8
ff ff
movsd  %xmm8,0x10(%rsp)
movsd  -0x148(%rbp),%xmm8
ff ff
movsd  %xmm8,0x18(%rsp)
movsd  -0x140(%rbp),%xmm8
ff ff
movsd  %xmm15,0x20(%rsp)
movsd  %xmm14,0x28(%rsp)
mov    %r15d,0x30(%rsp)
mov    %r14d,0x38(%rsp)
mov    %ebx,0x40(%rsp)
movsd  %xmm13,0x48(%rsp)
movsd  %xmm12,0x50(%rsp)
movsd  %xmm11,0x58(%rsp)
movsd  %xmm10,0x60(%rsp)
movsd  %xmm9,0x68(%rsp)
mov    %r11d,0x70(%rsp)
mov    %r10d,0x78(%rsp)
mov    %eax,0x80(%rsp)
movsd  %xmm8,0x88(%rsp)
call   1040 <eri@plt>
movaps %xmm0,%xmm2
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
jmp    1bb0 <contr_grad_grad_eri+0xa80>
jmp    1e5c <contr_grad_grad_eri+0xd2c>
mov    -0xa4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa4(%rbp)
jmp    1b94 <contr_grad_grad_eri+0xa64>
jmp    1e75 <contr_grad_grad_eri+0xd45>
mov    -0xa0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa0(%rbp)
jmp    1b7b <contr_grad_grad_eri+0xa4b>
jmp    1e8e <contr_grad_grad_eri+0xd5e>
mov    -0x9c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x9c(%rbp)
jmp    1b62 <contr_grad_grad_eri+0xa32>
jmp    1ea7 <contr_grad_grad_eri+0xd77>
movsd  -0x98(%rbp),%xmm0
ff
mov    0x78(%rbp),%eax
imul   -0xb8(%rbp),%eax
mov    0x80(%rbp),%ecx
imul   -0xbc(%rbp),%ecx
add    %ecx,%eax
mov    0x88(%rbp),%ecx
imul   -0xc0(%rbp),%ecx
add    %ecx,%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x1119(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x2c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x9c(%rbp)
cmpl   $0x0,-0x9c(%rbp)
jl     2272 <contr_grad_grad_eri+0x1142>
mov    0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa0(%rbp)
cmpl   $0x0,-0xa0(%rbp)
jl     2259 <contr_grad_grad_eri+0x1129>
mov    0x50(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa4(%rbp)
cmpl   $0x0,-0xa4(%rbp)
jl     2240 <contr_grad_grad_eri+0x1110>
mov    0x90(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa8(%rbp)
cmpl   $0x0,-0xa8(%rbp)
jl     2227 <contr_grad_grad_eri+0x10f7>
mov    -0x38(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x58(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x9c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0xa0(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xa0(%rbp),%rax
movslq -0xa8(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x48(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm3
mov    -0x64(%rbp),%edi
add    -0xac(%rbp),%edi
mov    -0x68(%rbp),%esi
add    -0xb0(%rbp),%esi
mov    0x10(%rbp),%edx
add    -0xb4(%rbp),%edx
mov    -0x38(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm4
movsd  -0x70(%rbp),%xmm5
movsd  -0x78(%rbp),%xmm6
movsd  -0x80(%rbp),%xmm7
mov    0x30(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm8
mov    0x38(%rbp),%ecx
mov    0x40(%rbp),%r8d
mov    0x48(%rbp),%r9d
mov    0x20(%rbp),%rax
movslq -0xa0(%rbp),%r10
movsd  (%rax,%r10,8),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  0x70(%rbp),%xmm15
mov    0x68(%rbp),%rax
movslq -0xa4(%rbp),%r10
movsd  (%rax,%r10,8),%xmm14
mov    0x78(%rbp),%r15d
add    -0xb8(%rbp),%r15d
mov    0x80(%rbp),%r14d
add    -0xbc(%rbp),%r14d
mov    0x88(%rbp),%ebx
add    -0xc0(%rbp),%ebx
mov    0x58(%rbp),%rax
movslq -0xa4(%rbp),%r10
movsd  (%rax,%r10,8),%xmm13
movsd  0xb0(%rbp),%xmm12
movsd  0xb8(%rbp),%xmm11
movsd  0xc0(%rbp),%xmm10
mov    0xa8(%rbp),%rax
movslq -0xa8(%rbp),%r10
movsd  (%rax,%r10,8),%xmm9
mov    0xc8(%rbp),%r11d
mov    0xd0(%rbp),%r10d
mov    0xd8(%rbp),%eax
mov    0x98(%rbp),%r12
movslq -0xa8(%rbp),%r13
movsd  (%r12,%r13,8),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x190(%rbp),%xmm0
ff
movsd  %xmm8,(%rsp)
movsd  -0x188(%rbp),%xmm8
ff ff
movsd  %xmm8,0x8(%rsp)
movsd  -0x180(%rbp),%xmm8
ff ff
movsd  %xmm8,0x10(%rsp)
movsd  -0x178(%rbp),%xmm8
ff ff
movsd  %xmm8,0x18(%rsp)
movsd  -0x170(%rbp),%xmm8
ff ff
movsd  %xmm15,0x20(%rsp)
movsd  %xmm14,0x28(%rsp)
mov    %r15d,0x30(%rsp)
mov    %r14d,0x38(%rsp)
mov    %ebx,0x40(%rsp)
movsd  %xmm13,0x48(%rsp)
movsd  %xmm12,0x50(%rsp)
movsd  %xmm11,0x58(%rsp)
movsd  %xmm10,0x60(%rsp)
movsd  %xmm9,0x68(%rsp)
mov    %r11d,0x70(%rsp)
mov    %r10d,0x78(%rsp)
mov    %eax,0x80(%rsp)
movsd  %xmm8,0x88(%rsp)
call   1040 <eri@plt>
movaps %xmm0,%xmm2
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
jmp    1f70 <contr_grad_grad_eri+0xe40>
jmp    222c <contr_grad_grad_eri+0x10fc>
mov    -0xa4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa4(%rbp)
jmp    1f54 <contr_grad_grad_eri+0xe24>
jmp    2245 <contr_grad_grad_eri+0x1115>
mov    -0xa0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa0(%rbp)
jmp    1f3b <contr_grad_grad_eri+0xe0b>
jmp    225e <contr_grad_grad_eri+0x112e>
mov    -0x9c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x9c(%rbp)
jmp    1f22 <contr_grad_grad_eri+0xdf2>
movsd  0xd8e(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
add    $0x1f8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<contr_grad_grad_eri>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x1b8,%rsp
mov    %rcx,0x160(%rsp)
mov    %rdx,0x158(%rsp)
mov    %edi,0xa4(%rsp)
mov    0x2c0(%rsp),%eax
cmp    $0x3,%eax
jae    226a <contr_grad_grad_eri+0x113a>
movaps %xmm5,%xmm10
movapd %xmm4,%xmm11
movapd %xmm3,%xmm5
mov    %r9d,%r15d
movapd %xmm0,%xmm15
mov    0x2b8(%rsp),%edi
mov    0x268(%rsp),%r10d
mov    0x260(%rsp),%r11d
mov    0x258(%rsp),%ebp
mov    0x1f0(%rsp),%r13d
cltq
lea    0x1e94(%rip),%rcx
mov    (%rcx,%rax,4),%ebx
lea    0x1e96(%rip),%rcx
mov    (%rcx,%rax,4),%r9d
lea    0x1e97(%rip),%rcx
mov    (%rcx,%rax,4),%r14d
mov    %ebx,%eax
mov    %r8,%rcx
mov    %r8,0x138(%rsp)
imul   %r8d,%eax
mov    %r9d,%r12d
mov    %r15,%rdx
mov    %r15,0x140(%rsp)
imul   %r15d,%r12d
add    %eax,%r12d
mov    %rbx,0x130(%rsp)
mov    %ebx,%eax
imul   %ebp,%eax
mov    %r9,0x128(%rsp)
mov    %r9d,%edx
imul   %r11d,%edx
add    %eax,%edx
mov    %r14d,%eax
imul   %r10d,%eax
add    %edx,%eax
mov    %r14,0x120(%rsp)
mov    %r14d,%ebp
imul   %r13d,%ebp
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x1a8(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x98(%rsp)
xorpd  %xmm0,%xmm0
mov    0x248(%rsp),%rdx
mov    0x240(%rsp),%rcx
mov    0x238(%rsp),%rbx
mov    0x218(%rsp),%r8d
add    %r12d,%ebp
movsd  %xmm7,0x1a0(%rsp)
movsd  %xmm6,0x198(%rsp)
movsd  %xmm10,0x190(%rsp)
movsd  %xmm4,0x188(%rsp)
movsd  %xmm3,0x180(%rsp)
movsd  %xmm2,0x178(%rsp)
movsd  %xmm1,0x170(%rsp)
movsd  %xmm15,0x168(%rsp)
mov    %rsi,0x150(%rsp)
jle    1a80 <contr_grad_grad_eri+0x950>
mov    %ebp,0x148(%rsp)
xorpd  %xmm3,%xmm3
mov    %eax,0x10c(%rsp)
test   %eax,%eax
jle    165d <contr_grad_grad_eri+0x52d>
mov    0xa4(%rsp),%r14d
test   %r14d,%r14d
jle    1a42 <contr_grad_grad_eri+0x912>
mov    0x138(%rsp),%rax
mov    0x130(%rsp),%rbp
sub    %ebp,%eax
mov    %eax,0xf8(%rsp)
mov    0x140(%rsp),%rax
mov    0x128(%rsp),%r15
sub    %r15d,%eax
mov    %eax,0xd8(%rsp)
mov    0x1f0(%rsp),%eax
mov    0x120(%rsp),%r12
sub    %r12d,%eax
mov    %eax,0xd0(%rsp)
mov    0x258(%rsp),%eax
sub    %ebp,%eax
mov    %eax,0xc8(%rsp)
mov    0x260(%rsp),%eax
sub    %r15d,%eax
mov    %eax,0xe8(%rsp)
mov    0x268(%rsp),%eax
sub    %r12d,%eax
mov    %eax,0xe0(%rsp)
mov    0x270(%rsp),%eax
movslq 0x230(%rsp),%rbp
mov    %rbp,0xa8(%rsp)
movslq 0x1f8(%rsp),%rbp
mov    %rbp,0x110(%rsp)
mov    %r14d,%r14d
add    $0x1,%rax
mov    %rax,0xb8(%rsp)
xorpd  %xmm3,%xmm3
jmp    13af <contr_grad_grad_eri+0x27f>
nop
cmpq   $0x2,0x118(%rsp)
jl     165d <contr_grad_grad_eri+0x52d>
mov    %r14,0x118(%rsp)
add    $0xffffffffffffffff,%r14
mov    0x110(%rsp),%r12
cmpl   $0x0,0x1f8(%rsp)
jg     13db <contr_grad_grad_eri+0x2ab>
jmp    13a0 <contr_grad_grad_eri+0x270>
nop
cmpq   $0x2,0xb0(%rsp)
jl     13a0 <contr_grad_grad_eri+0x270>
mov    %r12,0xb0(%rsp)
add    $0xffffffffffffffff,%r12
mov    0xa8(%rsp),%r13
cmpl   $0x0,0x230(%rsp)
jg     140b <contr_grad_grad_eri+0x2db>
jmp    13d0 <contr_grad_grad_eri+0x2a0>
nopl   0x0(%rax,%rax,1)
cmpq   $0x2,0xc0(%rsp)
jl     13d0 <contr_grad_grad_eri+0x2a0>
mov    %r13,0xc0(%rsp)
add    $0xffffffffffffffff,%r13
cmpl   $0x0,0x270(%rsp)
jle    1400 <contr_grad_grad_eri+0x2d0>
mov    0xb8(%rsp),%r15
nopl   0x0(%rax)
movsd  %xmm3,0xf0(%rsp)
lea    -0x2(%r15),%eax
mov    0x158(%rsp),%rbp
movsd  0x0(%rbp,%r14,8),%xmm0
mov    0x208(%rsp),%rbp
mulsd  0x0(%rbp,%r12,8),%xmm0
mulsd  (%rcx,%r13,8),%xmm0
mov    0x280(%rsp),%rcx
mulsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x100(%rsp)
mov    0x288(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm14
mov    0x278(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
mov    0x160(%rsp),%rax
movsd  (%rax,%r14,8),%xmm3
movsd  (%rsi,%r14,8),%xmm4
mov    0x210(%rsp),%rax
movsd  (%rax,%r12,8),%xmm8
mov    0x200(%rsp),%rax
movsd  (%rax,%r12,8),%xmm9
movsd  (%rdx,%r13,8),%xmm12
movsd  (%rbx,%r13,8),%xmm13
movsd  %xmm0,0x88(%rsp)
mov    %edi,0x80(%rsp)
mov    0x2b0(%rsp),%eax
mov    %eax,0x78(%rsp)
mov    0x2a8(%rsp),%eax
mov    %eax,0x70(%rsp)
movsd  %xmm14,0x68(%rsp)
movsd  0x2a0(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x298(%rsp),%xmm0
movsd  %xmm0,0x58(%rsp)
movsd  0x290(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  %xmm13,0x48(%rsp)
mov    0xe0(%rsp),%eax
mov    %eax,0x40(%rsp)
mov    0xe8(%rsp),%eax
mov    %eax,0x38(%rsp)
mov    0xc8(%rsp),%eax
mov    %eax,0x30(%rsp)
movsd  %xmm12,0x28(%rsp)
movsd  0x250(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  %xmm7,0x18(%rsp)
movsd  %xmm6,0x10(%rsp)
movsd  %xmm9,0x8(%rsp)
movsd  %xmm8,(%rsp)
movapd %xmm15,%xmm0
mov    0xf8(%rsp),%edi
mov    0xd8(%rsp),%esi
mov    0xd0(%rsp),%edx
movapd %xmm11,%xmm6
movaps %xmm10,%xmm7
mov    %r8d,%ecx
mov    0x220(%rsp),%r8d
mov    0x228(%rsp),%r9d
call   1040 <eri@plt>
movsd  0xf0(%rsp),%xmm3
mov    0x218(%rsp),%r8d
mov    0x238(%rsp),%rbx
mov    0x240(%rsp),%rcx
mov    0x248(%rsp),%rdx
mov    0x2b8(%rsp),%edi
mov    0x150(%rsp),%rsi
movsd  0x168(%rsp),%xmm15
movsd  0x170(%rsp),%xmm1
movsd  0x178(%rsp),%xmm2
movsd  0x180(%rsp),%xmm5
movsd  0x188(%rsp),%xmm11
movsd  0x190(%rsp),%xmm10
movsd  0x198(%rsp),%xmm6
movsd  0x1a0(%rsp),%xmm7
mulsd  0x100(%rsp),%xmm0
addsd  %xmm0,%xmm3
add    $0xffffffffffffffff,%r15
cmp    $0x1,%r15
jg     1430 <contr_grad_grad_eri+0x300>
jmp    1400 <contr_grad_grad_eri+0x2d0>
cvtsi2sdl 0x148(%rsp),%xmm8
mulsd  %xmm8,%xmm3
mulsd  0x1a8(%rsp),%xmm3
mov    0xa4(%rsp),%r14d
test   %r14d,%r14d
jle    1a35 <contr_grad_grad_eri+0x905>
movsd  %xmm8,0x1b0(%rsp)
movsd  %xmm3,0xf0(%rsp)
mov    0x138(%rsp),%rax
mov    0x130(%rsp),%rbp
sub    %ebp,%eax
mov    %eax,0xe8(%rsp)
mov    0x140(%rsp),%rax
mov    0x128(%rsp),%r15
sub    %r15d,%eax
mov    %eax,0xe0(%rsp)
mov    0x1f0(%rsp),%eax
mov    0x120(%rsp),%r12
sub    %r12d,%eax
mov    %eax,0xd8(%rsp)
mov    0x258(%rsp),%eax
add    %ebp,%eax
mov    %eax,0xc8(%rsp)
mov    0x260(%rsp),%eax
lea    (%r15,%rax,1),%eax
mov    %eax,0xd0(%rsp)
mov    0x268(%rsp),%eax
add    %r12d,%eax
mov    %eax,0xb8(%rsp)
mov    0x270(%rsp),%eax
movslq 0x230(%rsp),%rbp
mov    %rbp,0x118(%rsp)
movslq 0x1f8(%rsp),%rbp
mov    %rbp,0x148(%rsp)
mov    %r14d,%r14d
add    $0x1,%rax
mov    %rax,0xb0(%rsp)
xorpd  %xmm4,%xmm4
mov    0xb8(%rsp),%ebp
jmp    176f <contr_grad_grad_eri+0x63f>
nopl   0x0(%rax,%rax,1)
cmpq   $0x2,0x110(%rsp)
jl     1a19 <contr_grad_grad_eri+0x8e9>
mov    %r14,0x110(%rsp)
add    $0xffffffffffffffff,%r14
mov    0x148(%rsp),%r12
cmpl   $0x0,0x1f8(%rsp)
jg     179b <contr_grad_grad_eri+0x66b>
jmp    1760 <contr_grad_grad_eri+0x630>
nop
cmpq   $0x2,0xa8(%rsp)
jl     1760 <contr_grad_grad_eri+0x630>
mov    %r12,0xa8(%rsp)
add    $0xffffffffffffffff,%r12
mov    0x118(%rsp),%r13
cmpl   $0x0,0x230(%rsp)
jg     17cb <contr_grad_grad_eri+0x69b>
jmp    1790 <contr_grad_grad_eri+0x660>
nopl   0x0(%rax,%rax,1)
cmpq   $0x2,0xc0(%rsp)
jl     1790 <contr_grad_grad_eri+0x660>
mov    %r13,0xc0(%rsp)
add    $0xffffffffffffffff,%r13
cmpl   $0x0,0x270(%rsp)
jle    17c0 <contr_grad_grad_eri+0x690>
mov    0xb0(%rsp),%r15
nopl   0x0(%rax)
movsd  %xmm4,0x100(%rsp)
lea    -0x2(%r15),%eax
movsd  (%rbx,%r13,8),%xmm13
mov    0x158(%rsp),%rbx
movsd  (%rbx,%r14,8),%xmm0
mulsd  %xmm13,%xmm0
mov    0x208(%rsp),%rbx
mulsd  (%rbx,%r12,8),%xmm0
mulsd  (%rcx,%r13,8),%xmm0
mov    0x280(%rsp),%rcx
mulsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0xf8(%rsp)
mov    0x288(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm14
mov    0x278(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
mov    0x160(%rsp),%rax
movsd  (%rax,%r14,8),%xmm3
movsd  (%rsi,%r14,8),%xmm4
mov    0x210(%rsp),%rax
movsd  (%rax,%r12,8),%xmm8
mov    0x200(%rsp),%rax
movsd  (%rax,%r12,8),%xmm9
movsd  (%rdx,%r13,8),%xmm12
movsd  %xmm0,0x88(%rsp)
mov    %edi,0x80(%rsp)
mov    0x2b0(%rsp),%eax
mov    %eax,0x78(%rsp)
mov    0x2a8(%rsp),%eax
mov    %eax,0x70(%rsp)
movsd  %xmm14,0x68(%rsp)
movsd  0x2a0(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x298(%rsp),%xmm0
movsd  %xmm0,0x58(%rsp)
movsd  0x290(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  %xmm13,0x48(%rsp)
mov    %ebp,0x40(%rsp)
mov    0xd0(%rsp),%eax
mov    %eax,0x38(%rsp)
mov    0xc8(%rsp),%eax
mov    %eax,0x30(%rsp)
movsd  %xmm12,0x28(%rsp)
movsd  0x250(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  %xmm7,0x18(%rsp)
movsd  %xmm6,0x10(%rsp)
movsd  %xmm9,0x8(%rsp)
movsd  %xmm8,(%rsp)
movapd %xmm15,%xmm0
mov    0xe8(%rsp),%edi
mov    0xe0(%rsp),%esi
mov    0xd8(%rsp),%edx
movapd %xmm11,%xmm6
movaps %xmm10,%xmm7
mov    %r8d,%ecx
mov    0x220(%rsp),%r8d
mov    0x228(%rsp),%r9d
call   1040 <eri@plt>
movsd  0x100(%rsp),%xmm4
mov    0x218(%rsp),%r8d
mov    0x238(%rsp),%rbx
mov    0x240(%rsp),%rcx
mov    0x248(%rsp),%rdx
mov    0x2b8(%rsp),%edi
mov    0x150(%rsp),%rsi
movsd  0x168(%rsp),%xmm15
movsd  0x170(%rsp),%xmm1
movsd  0x178(%rsp),%xmm2
movsd  0x180(%rsp),%xmm5
movsd  0x188(%rsp),%xmm11
movsd  0x190(%rsp),%xmm10
movsd  0x198(%rsp),%xmm6
movsd  0x1a0(%rsp),%xmm7
mulsd  0xf8(%rsp),%xmm0
addsd  %xmm0,%xmm4
add    $0xffffffffffffffff,%r15
cmp    $0x1,%r15
jg     17f0 <contr_grad_grad_eri+0x6c0>
jmp    17c0 <contr_grad_grad_eri+0x690>
mov    0x10c(%rsp),%eax
movsd  0xf0(%rsp),%xmm3
movsd  0x1b0(%rsp),%xmm8
jmp    1a69 <contr_grad_grad_eri+0x939>
mov    0x10c(%rsp),%eax
xorpd  %xmm4,%xmm4
jmp    1a69 <contr_grad_grad_eri+0x939>
cvtsi2sdl 0x148(%rsp),%xmm8
xorpd  %xmm4,%xmm4
movapd %xmm8,%xmm3
mulsd  %xmm4,%xmm3
mulsd  0x1a8(%rsp),%xmm3
mov    0x10c(%rsp),%eax
mulsd  %xmm4,%xmm8
xorpd  %xmm0,%xmm0
addsd  %xmm3,%xmm0
addsd  %xmm8,%xmm8
subsd  %xmm8,%xmm0
movsd  %xmm0,0x110(%rsp)
test   %eax,%eax
jle    1e5c <contr_grad_grad_eri+0xd2c>
mov    0xa4(%rsp),%r14d
test   %r14d,%r14d
jle    2226 <contr_grad_grad_eri+0x10f6>
mov    0x138(%rsp),%rax
mov    0x130(%rsp),%r15
add    %r15d,%eax
mov    %eax,0xf8(%rsp)
mov    0x140(%rsp),%rax
mov    0x128(%rsp),%r12
add    %r12d,%eax
mov    %eax,0xe0(%rsp)
mov    0x1f0(%rsp),%eax
mov    0x120(%rsp),%rbp
add    %ebp,%eax
mov    %eax,0xc8(%rsp)
mov    0x258(%rsp),%eax
sub    %r15d,%eax
mov    %eax,0xd8(%rsp)
mov    0x260(%rsp),%eax
sub    %r12d,%eax
mov    %eax,0xe8(%rsp)
mov    0x268(%rsp),%eax
sub    %ebp,%eax
mov    %eax,0xf0(%rsp)
mov    0x270(%rsp),%eax
movslq 0x230(%rsp),%rbp
mov    %rbp,0xb0(%rsp)
movslq 0x1f8(%rsp),%rbp
mov    %rbp,0x118(%rsp)
mov    %r14d,%ebp
mov    %r14d,%r14d
add    $0x1,%rax
mov    %rax,0xc0(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x98(%rsp)
mov    0xc8(%rsp),%r15d
jmp    1b7f <contr_grad_grad_eri+0xa4f>
cmpq   $0x2,0xa8(%rsp)
jl     1e5c <contr_grad_grad_eri+0xd2c>
mov    %r14,0xa8(%rsp)
add    $0xffffffffffffffff,%r14
mov    0x118(%rsp),%r13
cmpl   $0x0,0x1f8(%rsp)
jg     1bab <contr_grad_grad_eri+0xa7b>
jmp    1b70 <contr_grad_grad_eri+0xa40>
nop
cmpq   $0x2,0xb8(%rsp)
jl     1b70 <contr_grad_grad_eri+0xa40>
mov    %r13,0xb8(%rsp)
add    $0xffffffffffffffff,%r13
mov    0xb0(%rsp),%r12
cmpl   $0x0,0x230(%rsp)
jg     1bed <contr_grad_grad_eri+0xabd>
jmp    1ba0 <contr_grad_grad_eri+0xa70>
nopl   0x0(%rax,%rax,1)
movsd  0x98(%rsp),%xmm0
movsd  %xmm0,0x98(%rsp)
cmpq   $0x2,0xd0(%rsp)
jl     1ba0 <contr_grad_grad_eri+0xa70>
mov    %r12,0xd0(%rsp)
add    $0xffffffffffffffff,%r12
cmpl   $0x0,0x270(%rsp)
jle    1bd0 <contr_grad_grad_eri+0xaa0>
mov    0xc0(%rsp),%rbp
movsd  0x98(%rsp),%xmm0
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  %xmm0,0x98(%rsp)
lea    -0x2(%rbp),%eax
movsd  (%rsi,%r14,8),%xmm4
mov    0x158(%rsp),%rsi
movsd  (%rsi,%r14,8),%xmm0
mulsd  %xmm4,%xmm0
mov    0x208(%rsp),%rsi
mulsd  (%rsi,%r13,8),%xmm0
mulsd  (%rcx,%r12,8),%xmm0
mov    0x280(%rsp),%rcx
mulsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x100(%rsp)
mov    0x288(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm14
mov    0x278(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
mov    0x160(%rsp),%rax
movsd  (%rax,%r14,8),%xmm3
mov    0x210(%rsp),%rax
movsd  (%rax,%r13,8),%xmm8
mov    0x200(%rsp),%rax
movsd  (%rax,%r13,8),%xmm9
movsd  (%rdx,%r12,8),%xmm12
movsd  (%rbx,%r12,8),%xmm13
movsd  %xmm0,0x88(%rsp)
mov    %edi,0x80(%rsp)
mov    0x2b0(%rsp),%eax
mov    %eax,0x78(%rsp)
mov    0x2a8(%rsp),%eax
mov    %eax,0x70(%rsp)
movsd  %xmm14,0x68(%rsp)
movsd  0x2a0(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x298(%rsp),%xmm0
movsd  %xmm0,0x58(%rsp)
movsd  0x290(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  %xmm13,0x48(%rsp)
mov    0xf0(%rsp),%eax
mov    %eax,0x40(%rsp)
mov    0xe8(%rsp),%eax
mov    %eax,0x38(%rsp)
mov    0xd8(%rsp),%eax
mov    %eax,0x30(%rsp)
movsd  %xmm12,0x28(%rsp)
movsd  0x250(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  %xmm7,0x18(%rsp)
movsd  %xmm6,0x10(%rsp)
movsd  %xmm9,0x8(%rsp)
movsd  %xmm8,(%rsp)
movapd %xmm15,%xmm0
mov    0xf8(%rsp),%edi
mov    0xe0(%rsp),%esi
mov    %r15d,%edx
movapd %xmm11,%xmm6
movaps %xmm10,%xmm7
mov    %r8d,%ecx
mov    0x220(%rsp),%r8d
mov    0x228(%rsp),%r9d
call   1040 <eri@plt>
mov    0x218(%rsp),%r8d
mov    0x238(%rsp),%rbx
mov    0x240(%rsp),%rcx
mov    0x248(%rsp),%rdx
mov    0x2b8(%rsp),%edi
mov    0x150(%rsp),%rsi
movsd  0x168(%rsp),%xmm15
movsd  0x170(%rsp),%xmm1
movsd  0x178(%rsp),%xmm2
movsd  0x180(%rsp),%xmm5
movsd  0x188(%rsp),%xmm11
movsd  0x190(%rsp),%xmm10
movsd  0x198(%rsp),%xmm6
movsd  0x1a0(%rsp),%xmm7
mulsd  0x100(%rsp),%xmm0
movsd  0x98(%rsp),%xmm3
addsd  %xmm0,%xmm3
movsd  %xmm3,0x98(%rsp)
movsd  0x98(%rsp),%xmm0
add    $0xffffffffffffffff,%rbp
cmp    $0x1,%rbp
jg     1c20 <contr_grad_grad_eri+0xaf0>
jmp    1bd9 <contr_grad_grad_eri+0xaa9>
mov    0xa4(%rsp),%r15d
test   %r15d,%r15d
jle    2217 <contr_grad_grad_eri+0x10e7>
mov    0x138(%rsp),%r12
mov    0x130(%rsp),%rcx
add    %ecx,%r12d
mov    0x140(%rsp),%rsi
mov    0x128(%rsp),%rbp
add    %ebp,%esi
mov    0x1f0(%rsp),%r8d
mov    0x120(%rsp),%r14
add    %r14d,%r8d
mov    0x258(%rsp),%r9d
add    %ecx,%r9d
mov    0x260(%rsp),%r11d
add    %ebp,%r11d
mov    0x268(%rsp),%r10d
add    %r14d,%r10d
mov    0x270(%rsp),%r14d
movslq 0x230(%rsp),%rax
mov    %rax,0xb8(%rsp)
movslq 0x1f8(%rsp),%rax
mov    %rax,0xa8(%rsp)
mov    %r15d,%ebp
add    $0x1,%r14
mov    %r14,0xc8(%rsp)
xorpd  %xmm3,%xmm3
mov    %r9,0xe0(%rsp)
mov    %r11,0xd8(%rsp)
jmp    1f2f <contr_grad_grad_eri+0xdff>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmpq   $0x2,0xb0(%rsp)
jl     220c <contr_grad_grad_eri+0x10dc>
mov    %rbp,0xb0(%rsp)
add    $0xffffffffffffffff,%rbp
mov    0xa8(%rsp),%rcx
cmpl   $0x0,0x1f8(%rsp)
mov    %rbp,0xe8(%rsp)
jg     1f6b <contr_grad_grad_eri+0xe3b>
jmp    1f20 <contr_grad_grad_eri+0xdf0>
nopw   0x0(%rax,%rax,1)
cmpq   $0x2,0xc0(%rsp)
jl     1f20 <contr_grad_grad_eri+0xdf0>
mov    %rcx,0xc0(%rsp)
add    $0xffffffffffffffff,%rcx
mov    0xb8(%rsp),%rbx
cmpl   $0x0,0x230(%rsp)
mov    %rcx,0xf0(%rsp)
jg     1fab <contr_grad_grad_eri+0xe7b>
jmp    1f60 <contr_grad_grad_eri+0xe30>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmpq   $0x2,0xd0(%rsp)
jl     1f60 <contr_grad_grad_eri+0xe30>
mov    %rbx,0xd0(%rsp)
add    $0xffffffffffffffff,%rbx
cmpl   $0x0,0x270(%rsp)
jle    1fa0 <contr_grad_grad_eri+0xe70>
mov    0xc8(%rsp),%r13
nopl   0x0(%rax)
movsd  %xmm3,0x100(%rsp)
lea    -0x2(%r13),%eax
mov    0x150(%rsp),%rdx
movsd  (%rdx,%rbp,8),%xmm4
mov    0x238(%rsp),%rdx
movsd  (%rdx,%rbx,8),%xmm13
movapd %xmm4,%xmm0
mulsd  %xmm13,%xmm0
mov    0x158(%rsp),%rdx
mulsd  (%rdx,%rbp,8),%xmm0
mov    0x208(%rsp),%rdx
mulsd  (%rdx,%rcx,8),%xmm0
mov    0x240(%rsp),%rdx
mulsd  (%rdx,%rbx,8),%xmm0
mov    0x280(%rsp),%rdx
mulsd  (%rdx,%rax,8),%xmm0
movsd  %xmm0,0xf8(%rsp)
mov    0x288(%rsp),%rdx
movsd  (%rdx,%rax,8),%xmm14
mov    0x278(%rsp),%rdx
movsd  (%rdx,%rax,8),%xmm0
mov    0x160(%rsp),%rax
movsd  (%rax,%rbp,8),%xmm3
mov    0x210(%rsp),%rax
movsd  (%rax,%rcx,8),%xmm8
mov    0x200(%rsp),%rax
movsd  (%rax,%rcx,8),%xmm9
mov    0x248(%rsp),%rax
movsd  (%rax,%rbx,8),%xmm12
movsd  %xmm0,0x88(%rsp)
mov    0x2b8(%rsp),%eax
mov    %eax,0x80(%rsp)
mov    0x2b0(%rsp),%eax
mov    %eax,0x78(%rsp)
mov    0x2a8(%rsp),%eax
mov    %eax,0x70(%rsp)
movsd  %xmm14,0x68(%rsp)
movsd  0x2a0(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x298(%rsp),%xmm0
movsd  %xmm0,0x58(%rsp)
movsd  0x290(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  %xmm13,0x48(%rsp)
mov    %r10d,0x40(%rsp)
mov    %r11d,0x38(%rsp)
mov    %r9d,0x30(%rsp)
movsd  %xmm12,0x28(%rsp)
movsd  0x250(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  %xmm7,0x18(%rsp)
movsd  %xmm6,0x10(%rsp)
movsd  %xmm9,0x8(%rsp)
movsd  %xmm8,(%rsp)
movapd %xmm15,%xmm0
mov    %r12d,%edi
mov    %r8d,%edx
movapd %xmm11,%xmm6
movaps %xmm10,%xmm7
mov    %r10,%rbp
mov    0x218(%rsp),%ecx
mov    %r8,%r15
mov    0x220(%rsp),%r8d
mov    %rsi,%r14
mov    0x228(%rsp),%r9d
call   1040 <eri@plt>
movsd  0x100(%rsp),%xmm3
mov    0xd8(%rsp),%r11
mov    0xe0(%rsp),%r9
mov    %rbp,%r10
movsd  0x168(%rsp),%xmm15
movsd  0x170(%rsp),%xmm1
movsd  0x178(%rsp),%xmm2
mov    %r15,%r8
mov    %r14,%rsi
mov    0xf0(%rsp),%rcx
mov    0xe8(%rsp),%rbp
movsd  0x180(%rsp),%xmm5
movsd  0x188(%rsp),%xmm11
movsd  0x190(%rsp),%xmm10
movsd  0x198(%rsp),%xmm6
movsd  0x1a0(%rsp),%xmm7
mulsd  0xf8(%rsp),%xmm0
addsd  %xmm0,%xmm3
add    $0xffffffffffffffff,%r13
cmp    $0x1,%r13
jg     1fd0 <contr_grad_grad_eri+0xea0>
jmp    1fa0 <contr_grad_grad_eri+0xe70>
movsd  0x98(%rsp),%xmm0
jmp    222e <contr_grad_grad_eri+0x10fe>
xorpd  %xmm3,%xmm3
movsd  0x98(%rsp),%xmm0
jmp    222e <contr_grad_grad_eri+0x10fe>
xorpd  %xmm0,%xmm0
xorpd  %xmm3,%xmm3
mulsd  0x1a8(%rsp),%xmm0
addsd  %xmm0,%xmm0
movsd  0x110(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0xdb0(%rip),%xmm3
addsd  %xmm1,%xmm3
movapd %xmm3,%xmm0
add    $0x1b8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xd97(%rip),%rdi
call   1030 <puts@plt>
mov    $0xffffffff,%edi
call   1050 <exit@plt>

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

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