#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ eriB_1d(double *, int, int, int, int, double, double, double,
                           double, double, double, double, double, double);
double exp(double);
int /*<<< orphan*/ fgamma_set(int, double, double *);
double sqrt(double);
double eri(double xa, double ya, double za, double norma, int la, int ma,
           int na, double alphaa, double xb, double yb, double zb, double normb,
           int lb, int mb, int nb, double alphab, double xc, double yc,
           double zc, double normc, int lc, int mc, int nc, double alphac,
           double xd, double yd, double zd, double normd, int ld, int md,
           int nd, double alphad) {
  double Bx[4 * 8 + 1], By[4 * 8 + 1], Bz[4 * 8 + 1], F[4 * 8 + 1];
  double rab2, rcd2, rpq2, xp, yp, zp, xq, yq, zq, sum;
  double eta1, eta2, zeta;
  int kX, kY, kZ;
  double t;
  double result;
  eta1 = 1.0 / (alphaa + alphab);
  eta2 = 1.0 / (alphac + alphad);
  zeta = 4.0 * (alphaa + alphab) * (alphac + alphad) /
         (alphaa + alphab + alphac + alphad);
  xp = (alphaa * xa + alphab * xb) * eta1;
  yp = (alphaa * ya + alphab * yb) * eta1;
  zp = (alphaa * za + alphab * zb) * eta1;
  xq = (alphac * xc + alphad * xd) * eta2;
  yq = (alphac * yc + alphad * yd) * eta2;
  zq = (alphac * zc + alphad * zd) * eta2;
  rab2 =
      ((xa - xb) * (xa - xb) + (ya - yb) * (ya - yb) + (za - zb) * (za - zb));
  rcd2 =
      ((xc - xd) * (xc - xd) + (yc - yd) * (yc - yd) + (zc - zd) * (zc - zd));
  rpq2 =
      ((xp - xq) * (xp - xq) + (yp - yq) * (yp - yq) + (zp - zq) * (zp - zq));
  t = 0.25 * rpq2 * zeta;
  fgamma_set(la + lb + lc + ld + ma + mb + mc + md + na + nb + nc + nd, t, F);
  eriB_1d(Bx, la, lb, lc, ld, xp, xa, xb, xq, xc, xd, eta1, eta2, zeta);
  eriB_1d(By, ma, mb, mc, md, yp, ya, yb, yq, yc, yd, eta1, eta2, zeta);
  eriB_1d(Bz, na, nb, nc, nd, zp, za, zb, zq, zc, zd, eta1, eta2, zeta);
  sum = 0.0;
  for (kX = 0; kX < la + lb + lc + ld + 1; kX++) {
    for (kY = 0; kY < ma + mb + mc + md + 1; kY++) {
      for (kZ = 0; kZ < na + nb + nc + nd + 1; kZ++) {
        sum += Bx[kX] * By[kY] * Bz[kZ] * F[kX + kY + kZ];
      }
    }
  }
  result = 34.986836655249725 * eta1 * eta2 /
           sqrt(alphaa + alphab + alphac + alphad) *
           exp(-alphaa * alphab * rab2 * eta1 - alphac * alphad * rcd2 * eta2) *
           sum * norma * normb * normc * normd;
  return (result);
}


x86 assembly (clang, -O0):
<eri>:
push   %rbp
mov    %rsp,%rbp
sub    $0x540,%rsp
movsd  0x98(%rbp),%xmm8
mov    0x90(%rbp),%eax
mov    0x88(%rbp),%eax
mov    0x80(%rbp),%eax
movsd  0x78(%rbp),%xmm8
movsd  0x70(%rbp),%xmm8
movsd  0x68(%rbp),%xmm8
movsd  0x60(%rbp),%xmm8
movsd  0x58(%rbp),%xmm8
mov    0x50(%rbp),%eax
mov    0x48(%rbp),%eax
mov    0x40(%rbp),%eax
movsd  0x38(%rbp),%xmm8
movsd  0x30(%rbp),%xmm8
movsd  0x28(%rbp),%xmm8
movsd  0x20(%rbp),%xmm8
movsd  0x18(%rbp),%xmm8
movsd  0x10(%rbp),%xmm8
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
mov    %edi,-0x24(%rbp)
mov    %esi,-0x28(%rbp)
mov    %edx,-0x2c(%rbp)
movsd  %xmm4,-0x38(%rbp)
movsd  %xmm5,-0x40(%rbp)
movsd  %xmm6,-0x48(%rbp)
movsd  %xmm7,-0x50(%rbp)
mov    %ecx,-0x54(%rbp)
mov    %r8d,-0x58(%rbp)
mov    %r9d,-0x5c(%rbp)
movsd  -0x38(%rbp),%xmm1
addsd  0x18(%rbp),%xmm1
movsd  0xe11(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x4f8(%rbp)
ff
movsd  0x58(%rbp),%xmm1
addsd  0x98(%rbp),%xmm1
movsd  0xdf0(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x500(%rbp)
ff
movsd  -0x38(%rbp),%xmm1
addsd  0x18(%rbp),%xmm1
movsd  0xdca(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0x58(%rbp),%xmm1
addsd  0x98(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
addsd  0x18(%rbp),%xmm1
addsd  0x58(%rbp),%xmm1
addsd  0x98(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x508(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm2
movsd  0x18(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x4f8(%rbp),%xmm0
ff
movsd  %xmm0,-0x4c0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  0x18(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x4f8(%rbp),%xmm0
ff
movsd  %xmm0,-0x4c8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0x18(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x4f8(%rbp),%xmm0
ff
movsd  %xmm0,-0x4d0(%rbp)
ff
movsd  0x58(%rbp),%xmm0
movsd  0x20(%rbp),%xmm2
movsd  0x98(%rbp),%xmm1
mulsd  0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x500(%rbp),%xmm0
ff
movsd  %xmm0,-0x4d8(%rbp)
ff
movsd  0x58(%rbp),%xmm0
movsd  0x28(%rbp),%xmm2
movsd  0x98(%rbp),%xmm1
mulsd  0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x500(%rbp),%xmm0
ff
movsd  %xmm0,-0x4e0(%rbp)
ff
movsd  0x58(%rbp),%xmm0
movsd  0x30(%rbp),%xmm2
movsd  0x98(%rbp),%xmm1
mulsd  0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x500(%rbp),%xmm0
ff
movsd  %xmm0,-0x4e8(%rbp)
ff
movsd  -0x8(%rbp),%xmm1
subsd  -0x40(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
movsd  -0x10(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm3
subsd  -0x48(%rbp),%xmm3
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x18(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x50(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x4a8(%rbp)
ff
movsd  0x20(%rbp),%xmm1
subsd  0x60(%rbp),%xmm1
movsd  0x20(%rbp),%xmm2
subsd  0x60(%rbp),%xmm2
movsd  0x28(%rbp),%xmm0
subsd  0x68(%rbp),%xmm0
movsd  0x28(%rbp),%xmm3
subsd  0x68(%rbp),%xmm3
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x30(%rbp),%xmm0
subsd  0x70(%rbp),%xmm0
movsd  0x30(%rbp),%xmm2
subsd  0x70(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x4b0(%rbp)
ff
movsd  -0x4c0(%rbp),%xmm1
ff
subsd  -0x4d8(%rbp),%xmm1
ff
movsd  -0x4c0(%rbp),%xmm2
ff
subsd  -0x4d8(%rbp),%xmm2
ff
movsd  -0x4c8(%rbp),%xmm0
ff
subsd  -0x4e0(%rbp),%xmm0
ff
movsd  -0x4c8(%rbp),%xmm3
ff
subsd  -0x4e0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x4d0(%rbp),%xmm0
ff
subsd  -0x4e8(%rbp),%xmm0
ff
movsd  -0x4d0(%rbp),%xmm2
ff
subsd  -0x4e8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x4b8(%rbp)
ff
movsd  0xb45(%rip),%xmm0
mulsd  -0x4b8(%rbp),%xmm0
ff
mulsd  -0x508(%rbp),%xmm0
ff
movsd  %xmm0,-0x520(%rbp)
ff
mov    -0x24(%rbp),%edi
add    -0x54(%rbp),%edi
add    0x40(%rbp),%edi
add    0x80(%rbp),%edi
add    -0x28(%rbp),%edi
add    -0x58(%rbp),%edi
add    0x48(%rbp),%edi
add    0x88(%rbp),%edi
add    -0x2c(%rbp),%edi
add    -0x5c(%rbp),%edi
add    0x50(%rbp),%edi
add    0x90(%rbp),%edi
movsd  -0x520(%rbp),%xmm0
ff
lea    -0x4a0(%rbp),%rsi
call   1030 <fgamma_set@plt>
lea    -0x170(%rbp),%rdi
mov    -0x24(%rbp),%esi
mov    -0x54(%rbp),%edx
mov    0x40(%rbp),%ecx
mov    0x80(%rbp),%r8d
movsd  -0x4c0(%rbp),%xmm0
ff
movsd  -0x8(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm2
movsd  -0x4d8(%rbp),%xmm3
ff
movsd  0x20(%rbp),%xmm4
movsd  0x60(%rbp),%xmm5
movsd  -0x4f8(%rbp),%xmm6
ff
movsd  -0x500(%rbp),%xmm7
ff
movsd  -0x508(%rbp),%xmm8
ff ff
movsd  %xmm8,(%rsp)
call   1060 <eriB_1d@plt>
lea    -0x280(%rbp),%rdi
mov    -0x28(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    0x48(%rbp),%ecx
mov    0x88(%rbp),%r8d
movsd  -0x4c8(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm2
movsd  -0x4e0(%rbp),%xmm3
ff
movsd  0x28(%rbp),%xmm4
movsd  0x68(%rbp),%xmm5
movsd  -0x4f8(%rbp),%xmm6
ff
movsd  -0x500(%rbp),%xmm7
ff
movsd  -0x508(%rbp),%xmm8
ff ff
movsd  %xmm8,(%rsp)
call   1060 <eriB_1d@plt>
lea    -0x390(%rbp),%rdi
mov    -0x2c(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    0x50(%rbp),%ecx
mov    0x90(%rbp),%r8d
movsd  -0x4d0(%rbp),%xmm0
ff
movsd  -0x18(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm2
movsd  -0x4e8(%rbp),%xmm3
ff
movsd  0x30(%rbp),%xmm4
movsd  0x70(%rbp),%xmm5
movsd  -0x4f8(%rbp),%xmm6
ff
movsd  -0x500(%rbp),%xmm7
ff
movsd  -0x508(%rbp),%xmm8
ff ff
movsd  %xmm8,(%rsp)
call   1060 <eriB_1d@plt>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x4f0(%rbp)
ff
movl   $0x0,-0x50c(%rbp)
mov    -0x50c(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    -0x54(%rbp),%ecx
add    0x40(%rbp),%ecx
add    0x80(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    1765 <eri+0x625>
movl   $0x0,-0x510(%rbp)
mov    -0x510(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    -0x58(%rbp),%ecx
add    0x48(%rbp),%ecx
add    0x88(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    174c <eri+0x60c>
movl   $0x0,-0x514(%rbp)
mov    -0x514(%rbp),%eax
mov    -0x2c(%rbp),%ecx
add    -0x5c(%rbp),%ecx
add    0x50(%rbp),%ecx
add    0x90(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    1733 <eri+0x5f3>
movslq -0x50c(%rbp),%rax
movsd  -0x170(%rbp,%rax,8),%xmm0
ff ff
movslq -0x510(%rbp),%rax
mulsd  -0x280(%rbp,%rax,8),%xmm0
ff ff
movslq -0x514(%rbp),%rax
mulsd  -0x390(%rbp,%rax,8),%xmm0
ff ff
mov    -0x50c(%rbp),%eax
add    -0x510(%rbp),%eax
add    -0x514(%rbp),%eax
cltq
movsd  -0x4a0(%rbp,%rax,8),%xmm2
ff ff
movsd  -0x4f0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x4f0(%rbp)
ff
mov    -0x514(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x514(%rbp)
jmp    169a <eri+0x55a>
jmp    1738 <eri+0x5f8>
mov    -0x510(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x510(%rbp)
jmp    1670 <eri+0x530>
jmp    1751 <eri+0x611>
mov    -0x50c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50c(%rbp)
jmp    1646 <eri+0x506>
movsd  0x8ab(%rip),%xmm0
mulsd  -0x4f8(%rbp),%xmm0
ff
mulsd  -0x500(%rbp),%xmm0
ff
movsd  %xmm0,-0x538(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
addsd  0x18(%rbp),%xmm0
addsd  0x58(%rbp),%xmm0
addsd  0x98(%rbp),%xmm0
call   1050 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x538(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x530(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x18(%rbp),%xmm0
mulsd  -0x4a8(%rbp),%xmm0
ff
movsd  -0x4f8(%rbp),%xmm2
ff
movsd  0x58(%rbp),%xmm1
mulsd  0x98(%rbp),%xmm1
mulsd  -0x4b0(%rbp),%xmm1
ff
mulsd  -0x500(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x530(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x4f0(%rbp),%xmm0
ff
mulsd  -0x20(%rbp),%xmm0
mulsd  0x10(%rbp),%xmm0
mulsd  0x38(%rbp),%xmm0
mulsd  0x78(%rbp),%xmm0
movsd  %xmm0,-0x528(%rbp)
ff
movsd  -0x528(%rbp),%xmm0
ff
add    $0x540,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<eri>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x598,%rsp
mov    %r9,0x90(%rsp)
mov    %r8,0x8(%rsp)
mov    %rcx,0x40(%rsp)
movapd %xmm7,0xa0(%rsp)
movapd %xmm6,0xd0(%rsp)
movapd %xmm5,0xb0(%rsp)
mov    %rdx,0x38(%rsp)
mov    %rsi,0x48(%rsp)
mov    %edi,%r14d
movsd  %xmm3,0x98(%rsp)
movapd %xmm2,0x60(%rsp)
movapd %xmm1,0xc0(%rsp)
movapd %xmm0,%xmm3
movapd %xmm0,0x50(%rsp)
movsd  0x658(%rsp),%xmm8
movsd  0x618(%rsp),%xmm9
movsd  0x5e8(%rsp),%xmm10
movsd  0x5e0(%rsp),%xmm11
movsd  0x5d8(%rsp),%xmm0
movapd %xmm4,0x150(%rsp)
unpcklpd %xmm9,%xmm4
unpcklpd %xmm8,%xmm0
unpcklpd %xmm11,%xmm3
mulpd  %xmm4,%xmm3
movapd %xmm3,%xmm12
movapd %xmm1,%xmm3
unpcklpd %xmm10,%xmm3
mulpd  %xmm4,%xmm3
movapd %xmm3,%xmm10
movsd  0x5f0(%rsp),%xmm1
movapd %xmm2,%xmm3
unpcklpd %xmm1,%xmm3
mulpd  %xmm4,%xmm3
addpd  %xmm0,%xmm4
movsd  0xdee(%rip),%xmm1
mulsd  %xmm4,%xmm1
movapd %xmm4,%xmm2
unpckhpd %xmm4,%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm2,%xmm11
movsd  0x620(%rsp),%xmm2
movapd %xmm5,%xmm1
unpcklpd %xmm2,%xmm1
mulpd  %xmm0,%xmm1
addpd  %xmm1,%xmm12
movsd  0x628(%rsp),%xmm2
movapd %xmm6,%xmm1
unpcklpd %xmm2,%xmm1
mulpd  %xmm0,%xmm1
addpd  %xmm1,%xmm10
movsd  0x630(%rsp),%xmm2
movapd %xmm7,%xmm1
unpcklpd %xmm2,%xmm1
mulpd  %xmm0,%xmm1
addpd  %xmm1,%xmm3
movapd 0xd64(%rip),%xmm0
divpd  %xmm4,%xmm0
mulpd  %xmm0,%xmm12
mulpd  %xmm0,%xmm10
movapd %xmm10,0x100(%rsp)
movapd %xmm0,%xmm5
movapd %xmm0,0x20(%rsp)
movapd %xmm12,%xmm1
movapd %xmm12,0xe0(%rsp)
movapd %xmm12,%xmm0
unpckhpd %xmm12,%xmm0
movapd %xmm0,0xf0(%rsp)
subsd  %xmm0,%xmm1
movapd %xmm10,%xmm2
unpckhpd %xmm10,%xmm2
movapd %xmm2,0x110(%rsp)
movapd %xmm10,%xmm0
subsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm0
mulsd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
mulpd  %xmm5,%xmm3
movapd %xmm3,0x120(%rsp)
movapd %xmm3,%xmm2
unpckhpd %xmm3,%xmm2
movapd %xmm2,0x130(%rsp)
movapd %xmm3,%xmm0
subsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
mov    0x650(%rsp),%r13d
mov    0x648(%rsp),%r15d
mov    0x640(%rsp),%ebp
addsd  %xmm9,%xmm4
addsd  %xmm8,%xmm4
movapd %xmm4,0x140(%rsp)
divsd  %xmm4,%xmm11
movapd %xmm11,0x10(%rsp)
mulsd  0xcb0(%rip),%xmm0
mulsd  %xmm11,%xmm0
lea    (%rcx,%r14,1),%ebx
add    0x600(%rsp),%ebx
add    %ebp,%ebx
lea    (%r8,%rsi,1),%r12d
lea    (%r12,%rdx,1),%edi
add    %r9d,%edi
add    0x608(%rsp),%edi
add    0x610(%rsp),%edi
add    %ebx,%edi
add    %r15d,%edi
add    %r13d,%edi
lea    0x270(%rsp),%rsi
call   1030 <fgamma_set@plt>
movaps 0x20(%rsp),%xmm6
movaps %xmm6,%xmm0
unpckhpd %xmm6,%xmm0
movaps %xmm0,%xmm7
movaps %xmm0,0x70(%rsp)
movaps 0x10(%rsp),%xmm0
movsd  %xmm0,(%rsp)
lea    0x490(%rsp),%rdi
mov    %r14,0x88(%rsp)
mov    %r14d,%esi
mov    0x40(%rsp),%rdx
mov    0x600(%rsp),%ecx
mov    %ebp,%r8d
movaps 0xe0(%rsp),%xmm0
movaps 0x50(%rsp),%xmm1
movaps 0xb0(%rsp),%xmm2
movaps 0xf0(%rsp),%xmm3
movsd  0x5e0(%rsp),%xmm4
movsd  0x620(%rsp),%xmm5
call   1060 <eriB_1d@plt>
movaps 0x10(%rsp),%xmm0
movsd  %xmm0,(%rsp)
lea    0x380(%rsp),%rdi
mov    0x48(%rsp),%rsi
mov    0x8(%rsp),%rdx
mov    0x608(%rsp),%ecx
mov    %r15d,%r8d
movaps 0x100(%rsp),%xmm0
movaps 0xc0(%rsp),%xmm1
movaps 0xd0(%rsp),%xmm2
movaps 0x110(%rsp),%xmm3
movsd  0x5e8(%rsp),%xmm4
movsd  0x628(%rsp),%xmm5
movaps 0x20(%rsp),%xmm6
movaps 0x70(%rsp),%xmm7
call   1060 <eriB_1d@plt>
movaps 0x10(%rsp),%xmm0
movsd  %xmm0,(%rsp)
lea    0x160(%rsp),%rdi
mov    0x38(%rsp),%rsi
mov    0x90(%rsp),%rdx
mov    %rdx,%r14
mov    0x610(%rsp),%ecx
mov    %r13d,%r8d
movapd 0x120(%rsp),%xmm0
movapd 0x60(%rsp),%xmm1
movapd 0xa0(%rsp),%xmm2
movapd 0x130(%rsp),%xmm3
movsd  0x5f0(%rsp),%xmm4
movsd  0x630(%rsp),%xmm5
movaps 0x20(%rsp),%xmm6
movaps 0x70(%rsp),%xmm7
call   1060 <eriB_1d@plt>
xorpd  %xmm0,%xmm0
xorpd  %xmm3,%xmm3
test   %ebx,%ebx
js     163e <eri+0x4fe>
mov    0x608(%rsp),%edx
add    %edx,%r12d
add    %r15d,%r12d
mov    %r14,%rax
mov    0x38(%rsp),%rcx
add    %ecx,%r14d
mov    0x610(%rsp),%esi
add    %esi,%r14d
add    %r13d,%r14d
add    %esi,%r13d
add    %eax,%r13d
lea    (%rcx,%r13,1),%r10d
lea    (%rcx,%r13,1),%r11d
add    $0x1,%r11d
add    %edx,%r15d
add    0x8(%rsp),%r15d
mov    0x48(%rsp),%rcx
lea    (%rcx,%r15,1),%esi
add    $0x1,%esi
add    0x600(%rsp),%ebp
add    0x40(%rsp),%ebp
mov    0x88(%rsp),%rax
lea    (%rax,%rbp,1),%r8d
add    $0x1,%r8d
mov    %r11d,%edx
and    $0xfffffffe,%edx
lea    0x278(%rsp),%r9
xorpd  %xmm3,%xmm3
xor    %edi,%edi
jmp    15a1 <eri+0x461>
nopl   (%rax)
add    $0x1,%rdi
add    $0x8,%r9
cmp    %r8,%rdi
je     163e <eri+0x4fe>
test   %r12d,%r12d
js     1590 <eri+0x450>
mov    %r9,%rbx
xor    %ecx,%ecx
jmp    15bd <eri+0x47d>
nopl   (%rax)
add    $0x1,%rcx
add    $0x8,%rbx
cmp    %rsi,%rcx
je     1590 <eri+0x450>
test   %r14d,%r14d
js     15b0 <eri+0x470>
movsd  0x490(%rsp,%rdi,8),%xmm1
mulsd  0x380(%rsp,%rcx,8),%xmm1
xor    %ebp,%ebp
test   %r10d,%r10d
je     1616 <eri+0x4d6>
nopl   0x0(%rax,%rax,1)
movsd  0x160(%rsp,%rbp,8),%xmm2
mulsd  %xmm1,%xmm2
mulsd  -0x8(%rbx,%rbp,8),%xmm2
addsd  %xmm3,%xmm2
movsd  0x168(%rsp,%rbp,8),%xmm3
mulsd  %xmm1,%xmm3
mulsd  (%rbx,%rbp,8),%xmm3
addsd  %xmm2,%xmm3
add    $0x2,%rbp
cmp    %rbp,%rdx
jne    15e0 <eri+0x4a0>
test   $0x1,%r11b
je     15b0 <eri+0x470>
lea    (%rcx,%rdi,1),%rax
mulsd  0x160(%rsp,%rbp,8),%xmm1
add    %rbp,%rax
mulsd  0x270(%rsp,%rax,8),%xmm1
addsd  %xmm1,%xmm3
jmp    15b0 <eri+0x470>
movsd  %xmm3,0x8(%rsp)
movsd  0x5f0(%rsp),%xmm4
movsd  0x630(%rsp),%xmm1
subsd  %xmm1,%xmm4
movsd  0x5e0(%rsp),%xmm1
movsd  0x620(%rsp),%xmm2
subsd  %xmm2,%xmm1
movsd  0x5e8(%rsp),%xmm2
movsd  0x628(%rsp),%xmm3
subsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm2
mulsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm4,%xmm4
addsd  %xmm1,%xmm4
movapd 0x60(%rsp),%xmm1
subsd  0xa0(%rsp),%xmm1
movapd 0x50(%rsp),%xmm2
subsd  0xb0(%rsp),%xmm2
movapd 0xc0(%rsp),%xmm3
subsd  0xd0(%rsp),%xmm3
mulsd  %xmm3,%xmm3
mulsd  %xmm2,%xmm2
addsd  %xmm3,%xmm2
movapd 0x140(%rsp),%xmm3
ucomisd %xmm0,%xmm3
movapd %xmm3,%xmm0
mulsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
movsd  0x939(%rip),%xmm2
mulsd  0x20(%rsp),%xmm2
mulsd  0x70(%rsp),%xmm2
movsd  %xmm2,0x10(%rsp)
jb     1711 <eri+0x5d1>
sqrtsd %xmm0,%xmm0
jmp    172e <eri+0x5ee>
movapd %xmm1,0x60(%rsp)
movapd %xmm4,0x50(%rsp)
call   1050 <sqrt@plt>
movapd 0x50(%rsp),%xmm4
movapd 0x60(%rsp),%xmm1
movapd 0x150(%rsp),%xmm2
xorpd  0x8d1(%rip),%xmm2
movsd  0x10(%rsp),%xmm3
divsd  %xmm0,%xmm3
movsd  %xmm3,0x10(%rsp)
movsd  0x5d8(%rsp),%xmm0
mulsd  %xmm0,%xmm2
mulsd  %xmm2,%xmm1
movsd  0x658(%rsp),%xmm0
movsd  0x618(%rsp),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm2,%xmm4
mulsd  0x70(%rsp),%xmm4
mulsd  0x20(%rsp),%xmm1
subsd  %xmm4,%xmm1
movapd %xmm1,%xmm0
call   1040 <exp@plt>
mulsd  0x10(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
mulsd  0x98(%rsp),%xmm0
mulsd  0x5d0(%rsp),%xmm0
mulsd  0x5f8(%rsp),%xmm0
mulsd  0x638(%rsp),%xmm0
add    $0x598,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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