#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 pow(double, double);
double DSlater_1S_1S(double rij, double xij, double xii) {
  double S;
  if (xii == xij) {
    S = (-6.0 +
         6.0 * (pow((double)(2.71828182845904523536029),
                    (double)(2.0 * rij * xii))) -
         12.0 * rij * xii -
         12.0 * (pow((double)(rij), (double)(2.0))) *
             (pow((double)(xii), (double)(2.0))) -
         7.0 * (pow((double)(rij), (double)(3.0))) *
             (pow((double)(xii), (double)(3.0))) -
         2.0 * (pow((double)(rij), (double)(4.0))) *
             (pow((double)(xii), (double)(4.0)))) /
        (6. *
         (pow((double)(2.71828182845904523536029), (double)(2.0 * rij * xii))) *
         (pow((double)(rij), (double)(2.0))));
  } else {
    S = ((pow((double)(2.71828182845904523536029),
              (double)(2.0 * rij * (xii + xij)))) *
             (pow((double)((pow((double)(xii), (double)(2.0))) -
                           (pow((double)(xij), (double)(2.0)))),
                  (double)(3.0))) +
         (pow((double)(2.71828182845904523536029), (double)(2.0 * rij * xij))) *
             (pow((double)(xij), (double)(4.0))) *
             (-6.0 * rij * (pow((double)(xii), (double)(3.0))) -
              2.0 * (pow((double)(rij), (double)(2.0))) *
                  (pow((double)(xii), (double)(4.0))) +
              (pow((double)(xij), (double)(2.0))) +
              2.0 * rij * xii * (pow((double)(xij), (double)(2.0))) +
              (pow((double)(xii), (double)(2.0))) *
                  (-3.0 + 2.0 * (pow((double)(rij), (double)(2.0))) *
                              (pow((double)(xij), (double)(2.0))))) -
         (pow((double)(2.71828182845904523536029), (double)(2.0 * rij * xii))) *
             (pow((double)(xii), (double)(4.0))) *
             ((pow((double)(xii), (double)(2.0))) *
                  (1.0 + 2.0 * rij * xij +
                   2.0 * (pow((double)(rij), (double)(2.0))) *
                       (pow((double)(xij), (double)(2.0)))) -
              (pow((double)(xij), (double)(2.0))) *
                  (3.0 + 6.0 * rij * xij +
                   2.0 * (pow((double)(rij), (double)(2.0))) *
                       (pow((double)(xij), (double)(2.0)))))) /
        ((pow((double)(2.71828182845904523536029),
              (double)(2.0 * rij * (xii + xij)))) *
         (pow((double)(rij), (double)(2.0))) *
         (pow((double)((pow((double)(xii), (double)(2.0))) -
                       (pow((double)(xij), (double)(2.0)))),
              (double)(3.0))));
  }
  return S;
}


x86 assembly (clang, -O0):
<DSlater_1S_1S>:
push   %rbp
mov    %rsp,%rbp
sub    $0x140,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jne    134f <DSlater_1S_1S+0x23f>
jp     134f <DSlater_1S_1S+0x23f>
movsd  0xec0(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  0xeb6(%rip),%xmm0
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xeae(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xec2(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xec6(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xe4b(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xe7b(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xe25(%rip),%xmm1
call   1030 <pow@plt>
movsd  -0x60(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x58(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xdda(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xe0a(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xdb4(%rip),%xmm1
call   1030 <pow@plt>
movsd  -0x50(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd99(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xd69(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xd73(%rip),%xmm1
call   1030 <pow@plt>
movsd  -0x40(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xd15(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  0xd0b(%rip),%xmm0
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xd03(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xcdd(%rip),%xmm1
call   1030 <pow@plt>
movsd  -0x30(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x28(%rbp),%xmm0
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    18a2 <DSlater_1S_1S+0x792>
movsd  0xcb1(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
addsd  -0x10(%rbp),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xc9e(%rip),%xmm0
call   1030 <pow@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  0xc7c(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  0xc62(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x140(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  0xc3e(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0xc31(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  0xc27(%rip),%xmm0
call   1030 <pow@plt>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  0xc25(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0xc11(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  0xbbf(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  0xbad(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xb9d(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  0xba4(%rip),%xmm1
call   1030 <pow@plt>
movsd  -0x130(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x120(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  0xb2c(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  0xb08(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  0xae9(%rip),%xmm1
call   1030 <pow@plt>
movsd  -0x110(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x108(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  0xab4(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  0xa9a(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xa8a(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  0xa71(%rip),%xmm1
call   1030 <pow@plt>
movsd  -0x100(%rbp),%xmm5
ff
movsd  -0xf8(%rbp),%xmm3
ff
movsd  -0xf0(%rbp),%xmm4
ff
movsd  -0xe8(%rbp),%xmm1
ff
movsd  -0xe0(%rbp),%xmm2
ff
movaps %xmm0,%xmm6
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  %xmm6,%xmm5
movsd  0xa55(%rip),%xmm6
addsd  %xmm6,%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xa05(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  0x9fb(%rip),%xmm0
call   1030 <pow@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  0x9f9(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  0x9b0(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x99b(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x99d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  0x96c(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x95c(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  0x943(%rip),%xmm1
call   1030 <pow@plt>
movsd  -0xc8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  0x90e(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0x909(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8db(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  0x8ca(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x8ba(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  0x8a1(%rip),%xmm1
call   1030 <pow@plt>
movsd  -0xb8(%rbp),%xmm5
ff
movsd  -0xb0(%rbp),%xmm6
ff
movsd  -0xa8(%rbp),%xmm3
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm4
ff
movsd  -0x90(%rbp),%xmm1
ff
movaps %xmm0,%xmm7
movsd  -0x88(%rbp),%xmm0
ff
mulsd  %xmm7,%xmm5
addsd  %xmm6,%xmm5
mulsd  %xmm5,%xmm3
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0x80a(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
addsd  -0x10(%rbp),%xmm0
mulsd  %xmm0,%xmm1
movsd  0x7f7(%rip),%xmm0
call   1030 <pow@plt>
movsd  %xmm0,-0x80(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0x7d8(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0x7b5(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  0x79e(%rip),%xmm1
call   1030 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  0x77d(%rip),%xmm1
call   1030 <pow@plt>
movsd  -0x70(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x68(%rbp),%xmm0
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
add    $0x140,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<DSlater_1S_1S>:
sub    $0x78,%rsp
ucomisd %xmm1,%xmm2
movsd  %xmm0,0x20(%rsp)
movapd %xmm0,%xmm3
addsd  %xmm0,%xmm3
movsd  %xmm2,0x8(%rsp)
jne    1262 <DSlater_1S_1S+0x152>
jp     1262 <DSlater_1S_1S+0x152>
mulsd  %xmm2,%xmm3
movsd  0xebc(%rip),%xmm0
movapd %xmm3,%xmm1
movsd  %xmm3,0x18(%rsp)
call   1030 <pow@plt>
mulsd  0xedd(%rip),%xmm0
addsd  0xeb5(%rip),%xmm0
movsd  0xed5(%rip),%xmm5
movsd  0x20(%rsp),%xmm4
movapd %xmm4,%xmm1
mulsd  %xmm5,%xmm1
movsd  0x8(%rsp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm4,%xmm2
mulsd  %xmm4,%xmm2
movsd  %xmm2,0x30(%rsp)
movapd %xmm3,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm5
mulsd  %xmm0,%xmm5
addsd  %xmm1,%xmm5
movsd  %xmm5,(%rsp)
movsd  0xe52(%rip),%xmm1
movapd %xmm4,%xmm0
call   1030 <pow@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0xe35(%rip),%xmm1
call   1030 <pow@plt>
movsd  0x10(%rsp),%xmm1
mulsd  0xe62(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0xe13(%rip),%xmm1
movsd  0x20(%rsp),%xmm0
call   1030 <pow@plt>
movsd  %xmm0,(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0xdf5(%rip),%xmm1
call   1030 <pow@plt>
movsd  (%rsp),%xmm1
mulsd  0xdf3(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0x10(%rsp),%xmm1
movsd  %xmm1,(%rsp)
movsd  0xdbc(%rip),%xmm0
movsd  0x18(%rsp),%xmm1
call   1030 <pow@plt>
mulsd  0xde1(%rip),%xmm0
mulsd  0x30(%rsp),%xmm0
jmp    14ab <DSlater_1S_1S+0x39b>
movsd  %xmm1,0x10(%rsp)
addsd  %xmm2,%xmm1
mulsd  %xmm3,%xmm1
movsd  %xmm1,0x70(%rsp)
movsd  0xd82(%rip),%xmm0
movsd  %xmm3,0x18(%rsp)
call   1030 <pow@plt>
movsd  %xmm0,0x60(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  %xmm0,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x10(%rsp),%xmm1
mulsd  %xmm1,%xmm1
movsd  %xmm1,0x40(%rsp)
subsd  %xmm1,%xmm0
movsd  %xmm0,0x68(%rsp)
movsd  0xd47(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm1
mulsd  0x10(%rsp),%xmm1
movsd  %xmm1,0x58(%rsp)
movsd  0xd1b(%rip),%xmm0
call   1030 <pow@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0xd18(%rip),%xmm1
movsd  0x10(%rsp),%xmm0
call   1030 <pow@plt>
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  0xd01(%rip),%xmm0
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0xcd7(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,0x48(%rsp)
movsd  0x20(%rsp),%xmm0
mulsd  %xmm0,%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0xcb6(%rip),%xmm1
call   1030 <pow@plt>
movsd  0xcb9(%rip),%xmm1
movsd  0x28(%rsp),%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x48(%rsp),%xmm0
mulsd  0x38(%rsp),%xmm0
addsd  %xmm1,%xmm0
movsd  0x40(%rsp),%xmm1
addsd  %xmm1,%xmm0
movapd %xmm0,%xmm4
movsd  0x18(%rsp),%xmm2
mulsd  0x8(%rsp),%xmm2
movapd %xmm2,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm4,%xmm0
addsd  %xmm3,%xmm3
mulsd  %xmm1,%xmm3
movsd  %xmm3,0x38(%rsp)
movsd  0xc67(%rip),%xmm1
addsd  %xmm3,%xmm1
mulsd  0x30(%rsp),%xmm1
addsd  %xmm0,%xmm1
mulsd  0x50(%rsp),%xmm1
movsd  (%rsp),%xmm0
mulsd  0x60(%rsp),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rsp)
movsd  0xc0f(%rip),%xmm0
movapd %xmm2,%xmm1
call   1030 <pow@plt>
movsd  %xmm0,0x18(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0xc02(%rip),%xmm1
call   1030 <pow@plt>
movsd  0x58(%rsp),%xmm1
addsd  0xc0f(%rip),%xmm1
movsd  0x38(%rsp),%xmm3
addsd  %xmm3,%xmm1
movsd  0x20(%rsp),%xmm2
mulsd  0xbff(%rip),%xmm2
mulsd  0x10(%rsp),%xmm2
addsd  0xbc1(%rip),%xmm2
addsd  %xmm3,%xmm2
mulsd  0x40(%rsp),%xmm2
mulsd  0x30(%rsp),%xmm1
subsd  %xmm2,%xmm1
mulsd  0x18(%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  0xb85(%rip),%xmm0
movsd  0x70(%rsp),%xmm1
call   1030 <pow@plt>
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x68(%rsp),%xmm0
movsd  0xb68(%rip),%xmm1
call   1030 <pow@plt>
mulsd  0x8(%rsp),%xmm0
movsd  (%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
add    $0x78,%rsp
ret

LLVM IR (-O0):
define double @DSlater_1S_1S(double %0, double %1, double %2) {
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
store double %0, double* %4
store double %1, double* %5
store double %2, double* %6
%8 = load double, double* %6
%9 = load double, double* %5
%10 = fcmp oeq double %8, %9
br i1 %10, label %11, label %54
11: ; preds = %3
%12 = load double, double* %4
%13 = fmul double 2.000000e+00, %12
%14 = load double, double* %6
%15 = fmul double %13, %14
%16 = call double @pow(double 0x4005BF0A8B145769, double %15)
%17 = call double @llvm.fmuladd.f64(double 6.000000e+00, double %16, double -6.000000e+00)
%18 = load double, double* %4
%19 = fmul double 1.200000e+01, %18
%20 = load double, double* %6
%21 = fneg double %19
%22 = call double @llvm.fmuladd.f64(double %21, double %20, double %17)
%23 = load double, double* %4
%24 = call double @pow(double %23, double 2.000000e+00)
%25 = fmul double 1.200000e+01, %24
%26 = load double, double* %6
%27 = call double @pow(double %26, double 2.000000e+00)
%28 = fneg double %25
%29 = call double @llvm.fmuladd.f64(double %28, double %27, double %22)
%30 = load double, double* %4
%31 = call double @pow(double %30, double 3.000000e+00)
%32 = fmul double 7.000000e+00, %31
%33 = load double, double* %6
%34 = call double @pow(double %33, double 3.000000e+00)
%35 = fneg double %32
%36 = call double @llvm.fmuladd.f64(double %35, double %34, double %29)
%37 = load double, double* %4
%38 = call double @pow(double %37, double 4.000000e+00)
%39 = fmul double 2.000000e+00, %38
%40 = load double, double* %6
%41 = call double @pow(double %40, double 4.000000e+00)
%42 = fneg double %39
%43 = call double @llvm.fmuladd.f64(double %42, double %41, double %36)
%44 = load double, double* %4
%45 = fmul double 2.000000e+00, %44
%46 = load double, double* %6
%47 = fmul double %45, %46
%48 = call double @pow(double 0x4005BF0A8B145769, double %47)
%49 = fmul double 6.000000e+00, %48
%50 = load double, double* %4
%51 = call double @pow(double %50, double 2.000000e+00)
%52 = fmul double %49, %51
%53 = fdiv double %43, %52
store double %53, double* %7
br label %164
54: ; preds = %3
%55 = load double, double* %4
%56 = fmul double 2.000000e+00, %55
%57 = load double, double* %6
%58 = load double, double* %5
%59 = fadd double %57, %58
%60 = fmul double %56, %59
%61 = call double @pow(double 0x4005BF0A8B145769, double %60)
%62 = load double, double* %6
%63 = call double @pow(double %62, double 2.000000e+00)
%64 = load double, double* %5
%65 = call double @pow(double %64, double 2.000000e+00)
%66 = fsub double %63, %65
%67 = call double @pow(double %66, double 3.000000e+00)
%68 = load double, double* %4
%69 = fmul double 2.000000e+00, %68
%70 = load double, double* %5
%71 = fmul double %69, %70
%72 = call double @pow(double 0x4005BF0A8B145769, double %71)
%73 = load double, double* %5
%74 = call double @pow(double %73, double 4.000000e+00)
%75 = fmul double %72, %74
%76 = load double, double* %4
%77 = fmul double -6.000000e+00, %76
%78 = load double, double* %6
%79 = call double @pow(double %78, double 3.000000e+00)
%80 = load double, double* %4
%81 = call double @pow(double %80, double 2.000000e+00)
%82 = fmul double 2.000000e+00, %81
%83 = load double, double* %6
%84 = call double @pow(double %83, double 4.000000e+00)
%85 = fmul double %82, %84
%86 = fneg double %85
%87 = call double @llvm.fmuladd.f64(double %77, double %79, double %86)
%88 = load double, double* %5
%89 = call double @pow(double %88, double 2.000000e+00)
%90 = fadd double %87, %89
%91 = load double, double* %4
%92 = fmul double 2.000000e+00, %91
%93 = load double, double* %6
%94 = fmul double %92, %93
%95 = load double, double* %5
%96 = call double @pow(double %95, double 2.000000e+00)
%97 = call double @llvm.fmuladd.f64(double %94, double %96, double %90)
%98 = load double, double* %6
%99 = call double @pow(double %98, double 2.000000e+00)
%100 = load double, double* %4
%101 = call double @pow(double %100, double 2.000000e+00)
%102 = fmul double 2.000000e+00, %101
%103 = load double, double* %5
%104 = call double @pow(double %103, double 2.000000e+00)
%105 = call double @llvm.fmuladd.f64(double %102, double %104, double -3.000000e+00)
%106 = call double @llvm.fmuladd.f64(double %99, double %105, double %97)
%107 = fmul double %75, %106
%108 = call double @llvm.fmuladd.f64(double %61, double %67, double %107)
%109 = load double, double* %4
%110 = fmul double 2.000000e+00, %109
%111 = load double, double* %6
%112 = fmul double %110, %111
%113 = call double @pow(double 0x4005BF0A8B145769, double %112)
%114 = load double, double* %6
%115 = call double @pow(double %114, double 4.000000e+00)
%116 = fmul double %113, %115
%117 = load double, double* %6
%118 = call double @pow(double %117, double 2.000000e+00)
%119 = load double, double* %4
%120 = fmul double 2.000000e+00, %119
%121 = load double, double* %5
%122 = call double @llvm.fmuladd.f64(double %120, double %121, double 1.000000e+00)
%123 = load double, double* %4
%124 = call double @pow(double %123, double 2.000000e+00)
%125 = fmul double 2.000000e+00, %124
%126 = load double, double* %5
%127 = call double @pow(double %126, double 2.000000e+00)
%128 = call double @llvm.fmuladd.f64(double %125, double %127, double %122)
%129 = load double, double* %5
%130 = call double @pow(double %129, double 2.000000e+00)
%131 = load double, double* %4
%132 = fmul double 6.000000e+00, %131
%133 = load double, double* %5
%134 = call double @llvm.fmuladd.f64(double %132, double %133, double 3.000000e+00)
%135 = load double, double* %4
%136 = call double @pow(double %135, double 2.000000e+00)
%137 = fmul double 2.000000e+00, %136
%138 = load double, double* %5
%139 = call double @pow(double %138, double 2.000000e+00)
%140 = call double @llvm.fmuladd.f64(double %137, double %139, double %134)
%141 = fmul double %130, %140
%142 = fneg double %141
%143 = call double @llvm.fmuladd.f64(double %118, double %128, double %142)
%144 = fneg double %116
%145 = call double @llvm.fmuladd.f64(double %144, double %143, double %108)
%146 = load double, double* %4
%147 = fmul double 2.000000e+00, %146
%148 = load double, double* %6
%149 = load double, double* %5
%150 = fadd double %148, %149
%151 = fmul double %147, %150
%152 = call double @pow(double 0x4005BF0A8B145769, double %151)
%153 = load double, double* %4
%154 = call double @pow(double %153, double 2.000000e+00)
%155 = fmul double %152, %154
%156 = load double, double* %6
%157 = call double @pow(double %156, double 2.000000e+00)
%158 = load double, double* %5
%159 = call double @pow(double %158, double 2.000000e+00)
%160 = fsub double %157, %159
%161 = call double @pow(double %160, double 3.000000e+00)
%162 = fmul double %155, %161
%163 = fdiv double %145, %162
store double %163, double* %7
br label %164
164: ; preds = %54, %11
%165 = load double, double* %7
ret double %165
}

LLVM IR (-O2):
define double @DSlater_1S_1S(double %0, double %1, double %2) {
%4 = fcmp oeq double %2, %1
%5 = fmul double %0, 2.000000e+00
br i1 %4, label %6, label %28
6: ; preds = %3
%7 = fmul double %5, %2
%8 = tail call double @pow(double 0x4005BF0A8B145769, double %7)
%9 = tail call double @llvm.fmuladd.f64(double %8, double 6.000000e+00, double -6.000000e+00)
%10 = fmul double %0, -1.200000e+01
%11 = tail call double @llvm.fmuladd.f64(double %10, double %2, double %9)
%12 = fmul double %0, %0
%13 = fmul double %2, %2
%14 = fmul double %12, -1.200000e+01
%15 = tail call double @llvm.fmuladd.f64(double %14, double %13, double %11)
%16 = tail call double @pow(double %0, double 3.000000e+00)
%17 = tail call double @pow(double %2, double 3.000000e+00)
%18 = fmul double %16, -7.000000e+00
%19 = tail call double @llvm.fmuladd.f64(double %18, double %17, double %15)
%20 = tail call double @pow(double %0, double 4.000000e+00)
%21 = tail call double @pow(double %2, double 4.000000e+00)
%22 = fmul double %20, -2.000000e+00
%23 = tail call double @llvm.fmuladd.f64(double %22, double %21, double %19)
%24 = tail call double @pow(double 0x4005BF0A8B145769, double %7)
%25 = fmul double %24, 6.000000e+00
%26 = fmul double %12, %25
%27 = fdiv double %23, %26
br label %74
28: ; preds = %3
%29 = fadd double %1, %2
%30 = fmul double %5, %29
%31 = tail call double @pow(double 0x4005BF0A8B145769, double %30)
%32 = fmul double %2, %2
%33 = fmul double %1, %1
%34 = fsub double %32, %33
%35 = tail call double @pow(double %34, double 3.000000e+00)
%36 = fmul double %5, %1
%37 = tail call double @pow(double 0x4005BF0A8B145769, double %36)
%38 = tail call double @pow(double %1, double 4.000000e+00)
%39 = fmul double %37, %38
%40 = fmul double %0, -6.000000e+00
%41 = tail call double @pow(double %2, double 3.000000e+00)
%42 = fmul double %0, %0
%43 = tail call double @pow(double %2, double 4.000000e+00)
%44 = fmul double %42, -2.000000e+00
%45 = fmul double %44, %43
%46 = tail call double @llvm.fmuladd.f64(double %40, double %41, double %45)
%47 = fadd double %33, %46
%48 = fmul double %5, %2
%49 = tail call double @llvm.fmuladd.f64(double %48, double %33, double %47)
%50 = fmul double %42, 2.000000e+00
%51 = tail call double @llvm.fmuladd.f64(double %50, double %33, double -3.000000e+00)
%52 = tail call double @llvm.fmuladd.f64(double %32, double %51, double %49)
%53 = fmul double %39, %52
%54 = tail call double @llvm.fmuladd.f64(double %31, double %35, double %53)
%55 = tail call double @pow(double 0x4005BF0A8B145769, double %48)
%56 = tail call double @pow(double %2, double 4.000000e+00)
%57 = tail call double @llvm.fmuladd.f64(double %5, double %1, double 1.000000e+00)
%58 = tail call double @llvm.fmuladd.f64(double %50, double %33, double %57)
%59 = fmul double %0, 6.000000e+00
%60 = tail call double @llvm.fmuladd.f64(double %59, double %1, double 3.000000e+00)
%61 = tail call double @llvm.fmuladd.f64(double %50, double %33, double %60)
%62 = fneg double %1
%63 = fmul double %62, %1
%64 = fmul double %63, %61
%65 = tail call double @llvm.fmuladd.f64(double %32, double %58, double %64)
%66 = fneg double %55
%67 = fmul double %56, %66
%68 = tail call double @llvm.fmuladd.f64(double %67, double %65, double %54)
%69 = tail call double @pow(double 0x4005BF0A8B145769, double %30)
%70 = fmul double %42, %69
%71 = tail call double @pow(double %34, double 3.000000e+00)
%72 = fmul double %70, %71
%73 = fdiv double %68, %72
br label %74
74: ; preds = %28, %6
%75 = phi double [ %27, %6 ], [ %73, %28 ]
ret double %75
}