#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 exp(double);
double fabs(double);
double slaterei_0_0(double a, double b, double Na, double Za, double Nb,
                    double Zb, double d, double *g) {
  double pot1, pot2, pot3, pot_tmp;
  double g1, g2, g3;
  double da = d / a;
  double db = d / b;
  double expa = exp(-da);
  double expb = exp(-db);
  double a2 = a * a;
  double a3 = a2 * a;
  double a4 = a2 * a2;
  double b2 = b * b;
  double b3 = b2 * b;
  double b4 = b2 * b2;
  pot1 = -(1.0 + 0.5 * da) * expa / d;
  if (g != NULL)
    g1 = -(1.0 / a + 1.0 / d) * pot1 - 0.5 * expa / d / a;
  pot2 = -(1.0 + 0.5 * db) * expb / d;
  if (g != NULL)
    g2 = -(1.0 / b + 1.0 / d) * pot2 - 0.5 * expb / d / b;
  if (fabs(a - b) > 0.025) {
    double diff = 1.0 / (a2 - b2);
    double diff2 = diff * diff;
    double diff3 = diff2 * diff;
    pot3 = -((a2 - 3.0 * b2) * diff3 + 0.5 * diff2 * da) * a4 * expa / d;
    if (g != NULL)
      g3 = -(1.0 / a + 1.0 / d) * pot3 - 0.5 * diff2 * a3 * expa / d;
    pot_tmp = -((3.0 * a2 - b2) * diff3 + 0.5 * diff2 * db) * b4 * expb / d;
    if (g != NULL)
      g3 += -(1.0 / b + 1.0 / d) * pot_tmp - 0.5 * diff2 * b3 * expb / d;
    pot3 += pot_tmp;
  } else {
    double da2 = da * da;
    double da3 = da2 * da;
    double da4 = da2 * da2;
    double delta = a - b;
    double delta2 = delta * delta;
    pot3 = -(48.0 + 33.0 * da + 9.0 * da2 + da3) / 48.0 / d * expa;
    if (g != NULL)
      g3 = -(1.0 / d + 1.0 / a) * pot3 -
           (33.0 + 18.0 * da + 3.0 * da2) * expa / 48.0 / d / a;
    pot_tmp = (15.0 + 15.0 * da + 6.0 * da2 + da3) / 96.0 / a2 * expa * delta;
    if (g != NULL)
      g3 += -1.0 / a * pot_tmp +
            (15.0 + 12.0 * da + 3.0 * da2) / 96.0 / a3 * expa * delta;
    pot3 += pot_tmp;
    pot_tmp = (60.0 + 60.0 * da + 15.0 * da2 - 5.0 * da3 - 3.0 * da4) / 480.0 /
              a3 * expa * delta2 / 2.0;
    if (g != NULL)
      g3 += -1.0 / a * pot_tmp + (60.0 + 30.0 * da - 15.0 * da2 - 12.0 * da3) /
                                     480.0 / a4 * expa * delta2 / 2.0;
    pot3 += pot_tmp;
  }
  double pot = Na * Zb * pot1 + Za * Nb * pot2 + Na * Nb * pot3;
  if (g != NULL)
    *g = (Na * Zb * g1 + Za * Nb * g2 + Na * Nb * g3) / d;
  return pot;
}


x86 assembly (clang, -O0):
<slaterei_0_0>:
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
movsd  %xmm5,-0x30(%rbp)
movsd  %xmm6,-0x38(%rbp)
mov    %rdi,-0x40(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <exp@plt>
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <exp@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  0xdbd(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdb9(%rip),%xmm1
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
cmpq   $0x0,-0x40(%rbp)
je     12ff <slaterei_0_0+0x1ef>
movsd  0xd79(%rip),%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  0xd6c(%rip),%xmm1
divsd  -0x38(%rbp),%xmm1
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0xd37(%rip),%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
divsd  -0x38(%rbp),%xmm1
divsd  -0x8(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xcf1(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xced(%rip),%xmm1
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
cmpq   $0x0,-0x40(%rbp)
je     13cb <slaterei_0_0+0x2bb>
movsd  0xcad(%rip),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  0xca0(%rip),%xmm1
divsd  -0x38(%rbp),%xmm1
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  0xc6b(%rip),%xmm1
mulsd  -0x98(%rbp),%xmm1
ff
divsd  -0x38(%rbp),%xmm1
divsd  -0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x8(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movaps 0xcd4(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xc28(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1681 <slaterei_0_0+0x571>
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0xb8(%rbp),%xmm1
ff
movsd  0xbfe(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0xc1a(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xe0(%rbp),%xmm2
ff
movsd  0xb8a(%rip),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
cmpq   $0x0,-0x40(%rbp)
je     154a <slaterei_0_0+0x43a>
movsd  0xb39(%rip),%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  0xb2c(%rip),%xmm1
divsd  -0x38(%rbp),%xmm1
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  0xaf7(%rip),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0x90(%rbp),%xmm1
ff
divsd  -0x38(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xab7(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xe0(%rbp),%xmm2
ff
movsd  0xa6f(%rip),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
cmpq   $0x0,-0x40(%rbp)
je     166d <slaterei_0_0+0x55d>
movsd  0xa1b(%rip),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  0xa0e(%rip),%xmm1
divsd  -0x38(%rbp),%xmm1
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  0x9d9(%rip),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0xc0(%rbp),%xmm1
ff
mulsd  -0x98(%rbp),%xmm1
ff
divsd  -0x38(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1a5a <slaterei_0_0+0x94a>
movsd  -0x80(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x80(%rbp),%xmm1
movsd  0x931(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0x915(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x909(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x8d2(%rip),%xmm1
divsd  %xmm1,%xmm0
divsd  -0x38(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
cmpq   $0x0,-0x40(%rbp)
je     1818 <slaterei_0_0+0x708>
movsd  0x899(%rip),%xmm0
divsd  -0x38(%rbp),%xmm0
movsd  0x88c(%rip),%xmm1
divsd  -0x8(%rbp),%xmm1
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm3
movsd  0x88a(%rip),%xmm1
mulsd  %xmm1,%xmm3
movsd  0x86e(%rip),%xmm1
addsd  %xmm1,%xmm3
movsd  -0xe8(%rbp),%xmm1
ff
movsd  0x862(%rip),%xmm4
mulsd  %xmm4,%xmm1
addsd  %xmm3,%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
movsd  0x832(%rip),%xmm3
divsd  %xmm3,%xmm1
divsd  -0x38(%rbp),%xmm1
divsd  -0x8(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x80(%rbp),%xmm1
movsd  0x82b(%rip),%xmm0
mulsd  %xmm0,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x80b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movsd  0x7eb(%rip),%xmm1
divsd  %xmm1,%xmm0
divsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
cmpq   $0x0,-0x40(%rbp)
je     18fe <slaterei_0_0+0x7ee>
movsd  0x7d7(%rip),%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm3
movsd  0x7b8(%rip),%xmm1
mulsd  %xmm1,%xmm3
movsd  0x7a4(%rip),%xmm1
addsd  %xmm1,%xmm3
movsd  -0xe8(%rbp),%xmm1
ff
movsd  0x770(%rip),%xmm4
mulsd  %xmm4,%xmm1
addsd  %xmm3,%xmm1
movsd  0x770(%rip),%xmm3
divsd  %xmm3,%xmm1
divsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0x90(%rbp),%xmm1
ff
mulsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x80(%rbp),%xmm1
movsd  0x76e(%rip),%xmm0
mulsd  %xmm0,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x71e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xf0(%rbp),%xmm1
ff
movsd  0x736(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
movsd  0x716(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x6fe(%rip),%xmm1
divsd  %xmm1,%xmm0
divsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x108(%rbp),%xmm0
ff
movsd  0x6d2(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
cmpq   $0x0,-0x40(%rbp)
je     1a4b <slaterei_0_0+0x93b>
movsd  0x6ae(%rip),%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movsd  0x6d7(%rip),%xmm3
mulsd  %xmm3,%xmm1
movsd  0x6b3(%rip),%xmm3
addsd  %xmm3,%xmm1
movsd  -0xe8(%rbp),%xmm3
ff
movsd  0x6af(%rip),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm1,%xmm3
movsd  -0xf0(%rbp),%xmm1
ff
movsd  0x68f(%rip),%xmm4
mulsd  %xmm4,%xmm1
addsd  %xmm3,%xmm1
movsd  0x65f(%rip),%xmm3
divsd  %xmm3,%xmm1
divsd  -0xb0(%rbp),%xmm1
ff
mulsd  -0x90(%rbp),%xmm1
ff
mulsd  -0x108(%rbp),%xmm1
ff
movsd  0x633(%rip),%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm1
mulsd  -0x30(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x18(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
cmpq   $0x0,-0x40(%rbp)
je     1af4 <slaterei_0_0+0x9e4>
movsd  -0x18(%rbp),%xmm1
mulsd  -0x30(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x18(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x38(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x110(%rbp),%xmm0
ff
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<slaterei_0_0>:
push   %rbx
sub    $0x90,%rsp
mov    %rdi,%rbx
movsd  %xmm5,0x18(%rsp)
movsd  %xmm4,0x78(%rsp)
movsd  %xmm3,0x8(%rsp)
movsd  %xmm2,0x10(%rsp)
movapd %xmm0,0x50(%rsp)
movapd %xmm6,0x80(%rsp)
movapd %xmm6,%xmm2
divsd  %xmm0,%xmm2
movapd %xmm2,0x60(%rsp)
movapd %xmm1,0x40(%rsp)
divsd  %xmm1,%xmm6
movapd %xmm6,0x30(%rsp)
movapd %xmm2,%xmm0
xorpd  0xe94(%rip),%xmm0
call   1030 <exp@plt>
movapd %xmm0,0x20(%rsp)
movapd 0x30(%rsp),%xmm0
xorpd  0xe7b(%rip),%xmm0
call   1030 <exp@plt>
movapd 0x20(%rsp),%xmm14
movapd 0x50(%rsp),%xmm7
movapd 0x80(%rsp),%xmm9
movapd %xmm7,%xmm6
mulsd  %xmm7,%xmm6
movsd  0xe8e(%rip),%xmm10
movapd 0x60(%rsp),%xmm1
movapd %xmm1,%xmm15
mulsd  %xmm1,%xmm10
addsd  0xe7d(%rip),%xmm10
xorpd  0xe2c(%rip),%xmm10
mulsd  %xmm14,%xmm10
divsd  %xmm9,%xmm10
test   %rbx,%rbx
je     1282 <slaterei_0_0+0x172>
movsd  0xe59(%rip),%xmm1
movsd  0xe48(%rip),%xmm11
movapd 0x30(%rsp),%xmm5
mulsd  %xmm5,%xmm11
addsd  %xmm1,%xmm11
divsd  %xmm9,%xmm1
xorpd  0xdea(%rip),%xmm11
mulsd  %xmm0,%xmm11
divsd  %xmm9,%xmm11
movapd %xmm7,%xmm2
movapd 0x40(%rsp),%xmm4
unpcklpd %xmm4,%xmm2
movapd 0xdda(%rip),%xmm3
divpd  %xmm2,%xmm3
unpcklpd %xmm1,%xmm1
addpd  %xmm3,%xmm1
movapd %xmm14,%xmm13
unpcklpd %xmm0,%xmm13
mulpd  0xdcb(%rip),%xmm13
movapd %xmm9,%xmm3
unpcklpd %xmm9,%xmm3
divpd  %xmm3,%xmm13
divpd  %xmm2,%xmm13
movapd %xmm10,%xmm2
unpcklpd %xmm11,%xmm2
mulpd  %xmm1,%xmm2
subpd  %xmm2,%xmm13
movapd %xmm4,%xmm3
jmp    12b8 <slaterei_0_0+0x1a8>
movsd  0xdb5(%rip),%xmm11
movapd 0x30(%rsp),%xmm4
mulsd  %xmm4,%xmm11
addsd  0xda9(%rip),%xmm11
xorpd  0xd58(%rip),%xmm11
mulsd  %xmm0,%xmm11
divsd  %xmm9,%xmm11
movapd 0x40(%rsp),%xmm3
movapd %xmm6,%xmm8
mulsd  %xmm7,%xmm8
movapd %xmm6,%xmm12
mulsd  %xmm6,%xmm12
movapd %xmm7,%xmm2
subsd  %xmm3,%xmm2
movapd 0xd54(%rip),%xmm1
andpd  %xmm2,%xmm1
ucomisd 0xd68(%rip),%xmm1
jbe    13ad <slaterei_0_0+0x29d>
movapd %xmm3,%xmm2
mulsd  %xmm3,%xmm2
movapd %xmm2,%xmm1
mulsd  %xmm2,%xmm1
movapd %xmm6,%xmm3
subsd  %xmm2,%xmm3
movsd  0xd3a(%rip),%xmm7
divsd  %xmm3,%xmm7
movapd %xmm7,%xmm4
mulsd  %xmm7,%xmm4
mulsd  %xmm4,%xmm7
movsd  0xd9a(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm6,%xmm3
mulsd  0xd0a(%rip),%xmm4
mulsd  %xmm4,%xmm15
mulsd  %xmm7,%xmm3
addsd  %xmm15,%xmm3
xorpd  0xcb4(%rip),%xmm3
mulsd  %xmm3,%xmm12
mulsd  %xmm14,%xmm12
divsd  %xmm9,%xmm12
test   %rbx,%rbx
je     147c <slaterei_0_0+0x36c>
movapd 0x50(%rsp),%xmm5
unpcklpd %xmm9,%xmm5
movapd 0xc99(%rip),%xmm3
divpd  %xmm5,%xmm3
movapd %xmm3,%xmm5
unpckhpd %xmm3,%xmm5
addsd  %xmm3,%xmm5
xorpd  0xc71(%rip),%xmm5
mulsd  %xmm4,%xmm8
mulsd  %xmm14,%xmm8
divsd  %xmm9,%xmm8
mulsd  %xmm12,%xmm5
subsd  %xmm8,%xmm5
jmp    147c <slaterei_0_0+0x36c>
movapd %xmm14,%xmm4
movapd %xmm15,%xmm1
movapd %xmm15,%xmm14
mulsd  %xmm15,%xmm14
mulsd  %xmm14,%xmm15
movsd  0xc8a(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xc86(%rip),%xmm3
movapd %xmm9,%xmm0
movsd  0xc80(%rip),%xmm9
mulsd  %xmm14,%xmm9
addsd  %xmm3,%xmm9
addsd  %xmm15,%xmm9
divsd  0xc70(%rip),%xmm9
divsd  %xmm0,%xmm9
mulsd  %xmm4,%xmm9
test   %rbx,%rbx
je     1518 <slaterei_0_0+0x408>
movapd %xmm7,%xmm3
unpcklpd %xmm0,%xmm3
movapd 0xbed(%rip),%xmm4
divpd  %xmm3,%xmm4
movapd %xmm4,%xmm3
unpckhpd %xmm4,%xmm3
addsd  %xmm4,%xmm3
movsd  0xc3d(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xc11(%rip),%xmm4
movsd  0xc31(%rip),%xmm5
mulsd  %xmm14,%xmm5
addsd  %xmm4,%xmm5
mulsd  0x20(%rsp),%xmm5
divsd  0xc0a(%rip),%xmm5
divsd  %xmm0,%xmm5
divsd  %xmm7,%xmm5
mulsd  %xmm9,%xmm3
subsd  %xmm3,%xmm5
jmp    1518 <slaterei_0_0+0x408>
mulsd  0xbfc(%rip),%xmm6
subsd  %xmm2,%xmm6
movapd 0x30(%rsp),%xmm3
mulsd  %xmm4,%xmm3
mulsd  %xmm7,%xmm6
addsd  %xmm3,%xmm6
xorpd  0xb5e(%rip),%xmm6
mulsd  %xmm6,%xmm1
mulsd  %xmm0,%xmm1
divsd  %xmm9,%xmm1
test   %rbx,%rbx
je     14fc <slaterei_0_0+0x3ec>
movapd 0x40(%rsp),%xmm6
mulsd  %xmm6,%xmm2
unpcklpd %xmm9,%xmm6
movapd 0xb45(%rip),%xmm3
divpd  %xmm6,%xmm3
movapd %xmm3,%xmm6
unpckhpd %xmm3,%xmm6
addsd  %xmm3,%xmm6
xorpd  0xb1d(%rip),%xmm6
mulsd  %xmm4,%xmm2
mulsd  %xmm0,%xmm2
divsd  %xmm9,%xmm2
mulsd  %xmm1,%xmm6
subsd  %xmm2,%xmm6
addsd  %xmm6,%xmm5
movsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm3
addsd  %xmm1,%xmm12
movsd  0x18(%rsp),%xmm1
jmp    16c8 <slaterei_0_0+0x5b8>
movapd %xmm14,%xmm4
mulsd  %xmm14,%xmm4
movapd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
movsd  0xb56(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm3,%xmm1
movsd  0xb4e(%rip),%xmm3
mulsd  %xmm14,%xmm3
addsd  %xmm1,%xmm3
addsd  %xmm15,%xmm3
divsd  0xb40(%rip),%xmm3
divsd  %xmm6,%xmm3
movapd 0x20(%rsp),%xmm6
mulsd  %xmm6,%xmm3
mulsd  %xmm2,%xmm3
test   %rbx,%rbx
je     15c9 <slaterei_0_0+0x4b9>
movsd  0xb29(%rip),%xmm1
movsd  0xb29(%rip),%xmm6
mulsd  0x60(%rsp),%xmm6
addsd  0xafb(%rip),%xmm6
divsd  %xmm7,%xmm1
movsd  0xae7(%rip),%xmm7
mulsd  %xmm14,%xmm7
addsd  %xmm6,%xmm7
movapd 0x20(%rsp),%xmm6
divsd  0xae8(%rip),%xmm7
divsd  %xmm8,%xmm7
mulsd  %xmm6,%xmm7
mulsd  %xmm7,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
addsd  %xmm1,%xmm5
addsd  %xmm3,%xmm9
movsd  0xada(%rip),%xmm1
movapd 0x60(%rsp),%xmm3
movapd %xmm3,%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm1,%xmm2
movsd  0xa98(%rip),%xmm1
mulsd  %xmm14,%xmm1
addsd  %xmm2,%xmm1
movsd  0xab7(%rip),%xmm2
mulsd  %xmm15,%xmm2
addsd  %xmm1,%xmm2
mulsd  0xaae(%rip),%xmm4
addsd  %xmm2,%xmm4
divsd  0xaaa(%rip),%xmm4
divsd  %xmm8,%xmm4
mulsd  %xmm6,%xmm4
mulsd  %xmm0,%xmm4
mulsd  0xa0d(%rip),%xmm4
test   %rbx,%rbx
je     16a2 <slaterei_0_0+0x592>
movapd %xmm3,%xmm2
mulsd  0xa8c(%rip),%xmm2
addsd  0xa64(%rip),%xmm2
mulsd  0xa83(%rip),%xmm14
movsd  0xa43(%rip),%xmm1
addsd  %xmm2,%xmm14
mulsd  0xa75(%rip),%xmm15
addsd  %xmm14,%xmm15
divsd  0xa4f(%rip),%xmm15
divsd  %xmm12,%xmm15
mulsd  %xmm6,%xmm15
mulsd  %xmm15,%xmm0
mulsd  0x9b0(%rip),%xmm0
divsd  0x50(%rsp),%xmm1
mulsd  %xmm4,%xmm1
addsd  %xmm0,%xmm1
addsd  %xmm1,%xmm5
movsd  0x18(%rsp),%xmm1
movsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm3
addsd  %xmm4,%xmm9
movapd %xmm9,%xmm12
movapd 0x80(%rsp),%xmm9
mulsd  %xmm0,%xmm1
movsd  0x78(%rsp),%xmm2
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm0
test   %rbx,%rbx
je     1709 <slaterei_0_0+0x5f9>
movapd %xmm1,%xmm2
mulsd  %xmm13,%xmm2
unpckhpd %xmm13,%xmm13
mulsd  %xmm3,%xmm13
addsd  %xmm2,%xmm13
mulsd  %xmm0,%xmm5
addsd  %xmm13,%xmm5
divsd  %xmm9,%xmm5
movsd  %xmm5,(%rbx)
mulsd  %xmm11,%xmm3
mulsd  %xmm10,%xmm1
addsd  %xmm3,%xmm1
mulsd  %xmm12,%xmm0
addsd  %xmm1,%xmm0
add    $0x90,%rsp
pop    %rbx
ret

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

LLVM IR (-O2):
define double @slaterei_0_0(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double* writeonly %7) {
%9 = fdiv double %6, %0
%10 = fdiv double %6, %1
%11 = fneg double %9
%12 = tail call double @exp(double %11)
%13 = fneg double %10
%14 = tail call double @exp(double %13)
%15 = fmul double %0, %0
%16 = fmul double %15, %0
%17 = fmul double %15, %15
%18 = fmul double %1, %1
%19 = fmul double %18, %1
%20 = fmul double %18, %18
%21 = tail call double @llvm.fmuladd.f64(double %9, double 5.000000e-01, double 1.000000e+00)
%22 = fneg double %21
%23 = fmul double %12, %22
%24 = fdiv double %23, %6
%25 = icmp eq double* %7, null
br i1 %25, label %26, label %31
26: ; preds = %8
%27 = tail call double @llvm.fmuladd.f64(double %10, double 5.000000e-01, double 1.000000e+00)
%28 = fneg double %27
%29 = fmul double %14, %28
%30 = fdiv double %29, %6
br label %54
31: ; preds = %8
%32 = fdiv double 1.000000e+00, %6
%33 = tail call double @llvm.fmuladd.f64(double %10, double 5.000000e-01, double 1.000000e+00)
%34 = fneg double %33
%35 = fmul double %14, %34
%36 = fdiv double %35, %6
%37 = insertelement <2 x double> poison, double %0, i64 0
%38 = insertelement <2 x double> %37, double %1, i64 1
%39 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %38
%40 = insertelement <2 x double> poison, double %32, i64 0
%41 = shufflevector <2 x double> %40, <2 x double> poison, <2 x i32> zeroinitializer
%42 = fadd <2 x double> %39, %41
%43 = fneg <2 x double> %42
%44 = insertelement <2 x double> poison, double %12, i64 0
%45 = insertelement <2 x double> %44, double %14, i64 1
%46 = fmul <2 x double> %45, <double -5.000000e-01, double -5.000000e-01>
%47 = insertelement <2 x double> poison, double %6, i64 0
%48 = shufflevector <2 x double> %47, <2 x double> poison, <2 x i32> zeroinitializer
%49 = fdiv <2 x double> %46, %48
%50 = fdiv <2 x double> %49, %38
%51 = insertelement <2 x double> poison, double %24, i64 0
%52 = insertelement <2 x double> %51, double %36, i64 1
%53 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %43, <2 x double> %52, <2 x double> %50)
br label %54
54: ; preds = %26, %31
%55 = phi double [ %36, %31 ], [ %30, %26 ]
%56 = phi <2 x double> [ %53, %31 ], [ undef, %26 ]
%57 = fsub double %0, %1
%58 = tail call double @llvm.fabs.f64(double %57)
%59 = fcmp ogt double %58, 2.500000e-02
br i1 %59, label %60, label %113
60: ; preds = %54
%61 = fsub double %15, %18
%62 = fdiv double 1.000000e+00, %61
%63 = fmul double %62, %62
%64 = fmul double %62, %63
%65 = tail call double @llvm.fmuladd.f64(double %18, double -3.000000e+00, double %15)
%66 = fmul double %63, 5.000000e-01
%67 = fmul double %66, %9
%68 = tail call double @llvm.fmuladd.f64(double %65, double %64, double %67)
%69 = fneg double %68
%70 = fmul double %17, %69
%71 = fmul double %70, %12
%72 = fdiv double %71, %6
br i1 %25, label %86, label %73
73: ; preds = %60
%74 = insertelement <2 x double> poison, double %0, i64 0
%75 = insertelement <2 x double> %74, double %6, i64 1
%76 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %75
%77 = shufflevector <2 x double> %76, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%78 = fadd <2 x double> %76, %77
%79 = extractelement <2 x double> %78, i64 0
%80 = fneg double %79
%81 = fneg double %66
%82 = fmul double %16, %81
%83 = fmul double %82, %12
%84 = fdiv double %83, %6
%85 = tail call double @llvm.fmuladd.f64(double %80, double %72, double %84)
br label %86
86: ; preds = %73, %60
%87 = phi double [ %85, %73 ], [ undef, %60 ]
%88 = fneg double %18
%89 = tail call double @llvm.fmuladd.f64(double %15, double 3.000000e+00, double %88)
%90 = fmul double %66, %10
%91 = tail call double @llvm.fmuladd.f64(double %89, double %64, double %90)
%92 = fneg double %91
%93 = fmul double %20, %92
%94 = fmul double %93, %14
%95 = fdiv double %94, %6
br i1 %25, label %110, label %96
96: ; preds = %86
%97 = insertelement <2 x double> poison, double %1, i64 0
%98 = insertelement <2 x double> %97, double %6, i64 1
%99 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %98
%100 = shufflevector <2 x double> %99, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%101 = fadd <2 x double> %99, %100
%102 = extractelement <2 x double> %101, i64 0
%103 = fneg double %102
%104 = fneg double %66
%105 = fmul double %19, %104
%106 = fmul double %105, %14
%107 = fdiv double %106, %6
%108 = tail call double @llvm.fmuladd.f64(double %103, double %95, double %107)
%109 = fadd double %108, %87
br label %110
110: ; preds = %96, %86
%111 = phi double [ %109, %96 ], [ %87, %86 ]
%112 = fadd double %72, %95
br label %185
113: ; preds = %54
%114 = fmul double %9, %9
%115 = fmul double %9, %114
%116 = fmul double %114, %114
%117 = fmul double %57, %57
%118 = tail call double @llvm.fmuladd.f64(double %9, double 3.300000e+01, double 4.800000e+01)
%119 = tail call double @llvm.fmuladd.f64(double %114, double 9.000000e+00, double %118)
%120 = fadd double %119, %115
%121 = fdiv double %120, -4.800000e+01
%122 = fdiv double %121, %6
%123 = fmul double %122, %12
br i1 %25, label %139, label %124
124: ; preds = %113
%125 = insertelement <2 x double> poison, double %0, i64 0
%126 = insertelement <2 x double> %125, double %6, i64 1
%127 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %126
%128 = shufflevector <2 x double> %127, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%129 = fadd <2 x double> %127, %128
%130 = extractelement <2 x double> %129, i64 0
%131 = fneg double %130
%132 = tail call double @llvm.fmuladd.f64(double %9, double 1.800000e+01, double 3.300000e+01)
%133 = tail call double @llvm.fmuladd.f64(double %114, double 3.000000e+00, double %132)
%134 = fmul double %133, %12
%135 = fdiv double %134, -4.800000e+01
%136 = fdiv double %135, %6
%137 = fdiv double %136, %0
%138 = tail call double @llvm.fmuladd.f64(double %131, double %123, double %137)
br label %139
139: ; preds = %124, %113
%140 = phi double [ %138, %124 ], [ undef, %113 ]
%141 = tail call double @llvm.fmuladd.f64(double %9, double 1.500000e+01, double 1.500000e+01)
%142 = tail call double @llvm.fmuladd.f64(double %114, double 6.000000e+00, double %141)
%143 = fadd double %142, %115
%144 = fdiv double %143, 9.600000e+01
%145 = fdiv double %144, %15
%146 = fmul double %145, %12
%147 = fmul double %57, %146
br i1 %25, label %158, label %148
148: ; preds = %139
%149 = fdiv double -1.000000e+00, %0
%150 = tail call double @llvm.fmuladd.f64(double %9, double 1.200000e+01, double 1.500000e+01)
%151 = tail call double @llvm.fmuladd.f64(double %114, double 3.000000e+00, double %150)
%152 = fdiv double %151, 9.600000e+01
%153 = fdiv double %152, %16
%154 = fmul double %153, %12
%155 = fmul double %57, %154
%156 = tail call double @llvm.fmuladd.f64(double %149, double %147, double %155)
%157 = fadd double %156, %140
br label %158
158: ; preds = %148, %139
%159 = phi double [ %157, %148 ], [ %140, %139 ]
%160 = fadd double %123, %147
%161 = tail call double @llvm.fmuladd.f64(double %9, double 6.000000e+01, double 6.000000e+01)
%162 = tail call double @llvm.fmuladd.f64(double %114, double 1.500000e+01, double %161)
%163 = tail call double @llvm.fmuladd.f64(double %115, double -5.000000e+00, double %162)
%164 = tail call double @llvm.fmuladd.f64(double %116, double -3.000000e+00, double %163)
%165 = fdiv double %164, 4.800000e+02
%166 = fdiv double %165, %16
%167 = fmul double %166, %12
%168 = fmul double %117, %167
%169 = fmul double %168, 5.000000e-01
br i1 %25, label %182, label %170
170: ; preds = %158
%171 = fdiv double -1.000000e+00, %0
%172 = tail call double @llvm.fmuladd.f64(double %9, double 3.000000e+01, double 6.000000e+01)
%173 = tail call double @llvm.fmuladd.f64(double %114, double -1.500000e+01, double %172)
%174 = tail call double @llvm.fmuladd.f64(double %115, double -1.200000e+01, double %173)
%175 = fdiv double %174, 4.800000e+02
%176 = fdiv double %175, %17
%177 = fmul double %176, %12
%178 = fmul double %117, %177
%179 = fmul double %178, 5.000000e-01
%180 = tail call double @llvm.fmuladd.f64(double %171, double %169, double %179)
%181 = fadd double %180, %159
br label %182
182: ; preds = %170, %158
%183 = phi double [ %181, %170 ], [ %159, %158 ]
%184 = fadd double %160, %169
br label %185
185: ; preds = %182, %110
%186 = phi double [ %111, %110 ], [ %183, %182 ]
%187 = phi double [ %112, %110 ], [ %184, %182 ]
%188 = fmul double %2, %5
%189 = fmul double %3, %4
%190 = fmul double %2, %4
br i1 %25, label %198, label %191
191: ; preds = %185
%192 = extractelement <2 x double> %56, i64 1
%193 = fmul double %189, %192
%194 = extractelement <2 x double> %56, i64 0
%195 = tail call double @llvm.fmuladd.f64(double %188, double %194, double %193)
%196 = tail call double @llvm.fmuladd.f64(double %190, double %186, double %195)
%197 = fdiv double %196, %6
store double %197, double* %7
br label %198
198: ; preds = %191, %185
%199 = fmul double %189, %55
%200 = tail call double @llvm.fmuladd.f64(double %188, double %24, double %199)
%201 = tail call double @llvm.fmuladd.f64(double %190, double %187, double %200)
ret double %201
}