#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 exp(int);
double const pow(int, int);
void derivs_three(const double *y, double *dxdt, const double *p,
                  const double *kij) {
  double coupling =
      kij[0] * (-0.0625 - y[0]) / (1. + exp(-1000. * (y[3] - p[11]))) +
      kij[1] * (-0.0625 - y[0]) / (1. + exp(-1000. * (y[6] - p[11])));
  dxdt[0] = (-p[5] * pow(1. / (1. + exp(-150. * (y[0] - -0.0305))), 3.) * y[1] *
                 (y[0] - p[2]) -
             p[4] * y[2] * y[2] * (y[0] - p[1]) - p[3] * (y[0] - p[0]) - p[9] +
             coupling) /
            p[6];
  dxdt[1] = (1. / (1. + exp(500. * (y[0] - -0.0325))) - y[1]) / p[7];
  dxdt[2] = (1. / (1. + exp(-83. * (y[0] - -0.018 + p[10]))) - y[2]) / p[8];
  coupling = kij[2] * (-0.0625 - y[3]) / (1. + exp(-1000. * (y[0] - p[11]))) +
             kij[3] * (-0.0625 - y[3]) / (1. + exp(-1000. * (y[6] - p[11])));
  dxdt[3] = (-p[5] * pow(1. / (1. + exp(-150. * (y[3] - -0.0305))), 3.) * y[4] *
                 (y[3] - p[2]) -
             p[4] * y[5] * y[5] * (y[3] - p[1]) - p[3] * (y[3] - p[0]) - p[9] +
             coupling) /
            p[6];
  dxdt[4] = (1. / (1. + exp(500. * (y[3] - -0.0325))) - y[4]) / p[7];
  dxdt[5] = (1. / (1. + exp(-83. * (y[3] - -0.018 + p[10]))) - y[5]) / p[8];
  coupling = kij[4] * (-0.0625 - y[6]) / (1. + exp(-1000. * (y[0] - p[11]))) +
             kij[5] * (-0.0625 - y[6]) / (1. + exp(-1000. * (y[3] - p[11])));
  dxdt[6] = (-p[5] * pow(1. / (1. + exp(-150. * (y[6] - -0.0305))), 3.) * y[7] *
                 (y[6] - p[2]) -
             p[4] * y[8] * y[8] * (y[6] - p[1]) - p[3] * (y[6] - p[0]) - p[9] +
             coupling) /
            p[6];
  dxdt[7] = (1. / (1. + exp(500. * (y[6] - -0.0325))) - y[7]) / p[7];
  dxdt[8] = (1. / (1. + exp(-83. * (y[6] - -0.018 + p[10]))) - y[8]) / p[8];
}


x86 assembly (clang, -O0):
<derivs_three>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0xef1(%rip),%xmm1
subsd  (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm1
mov    -0x18(%rbp),%rax
subsd  0x58(%rax),%xmm1
movsd  0xebf(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
movsd  -0x88(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
movsd  0xe66(%rip),%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0xe84(%rip),%xmm1
subsd  (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm1
mov    -0x18(%rbp),%rax
subsd  0x58(%rax),%xmm1
movsd  0xe55(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
movsd  -0x80(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
cvtsi2sd %eax,%xmm3
movsd  0xdfa(%rip),%xmm2
addsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0xde4(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xdd0(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  0xd8f(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0xd83(%rip),%xmm0
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
mov    $0x3,%esi
call   1040 <pow@plt>
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x18(%rbp),%rax
subsd  0x10(%rax),%xmm2
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm3
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm3
mulsd  %xmm3,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
subsd  0x48(%rax),%xmm0
addsd  -0x28(%rbp),%xmm0
mov    -0x18(%rbp),%rax
divsd  0x30(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0xcb8(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xca4(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  0xc73(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0xc67(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0xc48(%rip),%xmm0
subsd  %xmm0,%xmm1
mov    -0x18(%rbp),%rax
addsd  0x50(%rax),%xmm1
movsd  0xc2b(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  0xc0a(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0xbfe(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
subsd  0x10(%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0xc0a(%rip),%xmm1
subsd  0x18(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
subsd  0x58(%rax),%xmm1
movsd  0xbdb(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
movsd  -0x68(%rbp),%xmm0
cvtsi2sd %eax,%xmm2
movsd  0xb85(%rip),%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0xba3(%rip),%xmm1
subsd  0x18(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm1
mov    -0x18(%rbp),%rax
subsd  0x58(%rax),%xmm1
movsd  0xb73(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
movsd  -0x60(%rbp),%xmm1
movsd  -0x58(%rbp),%xmm0
cvtsi2sd %eax,%xmm3
movsd  0xb18(%rip),%xmm2
addsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm1
movsd  0xb01(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xaed(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  0xaac(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0xaa0(%rip),%xmm0
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
mov    $0x3,%esi
call   1040 <pow@plt>
movsd  -0x50(%rbp),%xmm1
mulsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x20(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm2
mov    -0x18(%rbp),%rax
subsd  0x10(%rax),%xmm2
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm3
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm3
mulsd  %xmm3,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm2
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
subsd  0x48(%rax),%xmm0
addsd  -0x28(%rbp),%xmm0
mov    -0x18(%rbp),%rax
divsd  0x30(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm1
movsd  0x9d0(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x9bc(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  0x98b(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0x97f(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
subsd  0x20(%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm1
movsd  0x95f(%rip),%xmm0
subsd  %xmm0,%xmm1
mov    -0x18(%rbp),%rax
addsd  0x50(%rax),%xmm1
movsd  0x942(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  0x921(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0x915(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
subsd  0x28(%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x921(%rip),%xmm1
subsd  0x30(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
subsd  0x58(%rax),%xmm1
movsd  0x8f2(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
movsd  -0x48(%rbp),%xmm0
cvtsi2sd %eax,%xmm2
movsd  0x89c(%rip),%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x8ba(%rip),%xmm1
subsd  0x30(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm1
mov    -0x18(%rbp),%rax
subsd  0x58(%rax),%xmm1
movsd  0x88a(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
movsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
cvtsi2sd %eax,%xmm3
movsd  0x82f(%rip),%xmm2
addsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm1
movsd  0x818(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x804(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  0x7c3(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0x7b7(%rip),%xmm0
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
mov    $0x3,%esi
call   1040 <pow@plt>
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x38(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm2
mov    -0x18(%rbp),%rax
subsd  0x10(%rax),%xmm2
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm3
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm3
mulsd  %xmm3,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm2
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
subsd  0x48(%rax),%xmm0
addsd  -0x28(%rbp),%xmm0
mov    -0x18(%rbp),%rax
divsd  0x30(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm1
movsd  0x6e7(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x6d3(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  0x6a2(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0x696(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
subsd  0x38(%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm1
movsd  0x676(%rip),%xmm0
subsd  %xmm0,%xmm1
mov    -0x18(%rbp),%rax
addsd  0x50(%rax),%xmm1
movsd  0x659(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  0x638(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0x62c(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
subsd  0x40(%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x40(%rax)
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<derivs_three>:
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %rcx,%r12
mov    %rdi,%r15
movsd  0xec7(%rip),%xmm0
subsd  (%rdi),%xmm0
mulsd  (%rcx),%xmm0
movsd  %xmm0,0x10(%rsp)
mov    %rdx,%rbx
mov    %rsi,%r14
movsd  0x18(%rdi),%xmm0
subsd  0x58(%rdx),%xmm0
mulsd  0xea9(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xe89(%rip),%xmm1
subsd  (%r15),%xmm1
mulsd  0x8(%r12),%xmm1
movsd  %xmm1,0x8(%rsp)
addsd  0xe7f(%rip),%xmm0
movsd  0x30(%r15),%xmm1
subsd  0x58(%rbx),%xmm1
movsd  0x10(%rsp),%xmm2
divsd  %xmm0,%xmm2
movsd  %xmm2,0x10(%rsp)
mulsd  0xe54(%rip),%xmm1
cvttsd2si %xmm1,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0xe44(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
addsd  0x10(%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  0x28(%rbx),%xmm0
xorps  0xe62(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movsd  (%r15),%xmm0
addsd  0xe18(%rip),%xmm0
mulsd  0xe18(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xdf0(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm0,%xmm1
cvttsd2si %xmm1,%edi
mov    $0x3,%esi
call   1040 <pow@plt>
mulsd  0x10(%rsp),%xmm0
mulsd  0x8(%r15),%xmm0
movsd  (%r15),%xmm1
movapd %xmm1,%xmm2
subsd  0x10(%rbx),%xmm2
movsd  0x10(%r15),%xmm3
mulsd  %xmm0,%xmm2
movapd %xmm1,%xmm0
subsd  0x8(%rbx),%xmm0
movsd  0x20(%rbx),%xmm4
mulsd  %xmm3,%xmm4
mulsd  %xmm3,%xmm4
mulsd  %xmm0,%xmm4
subsd  (%rbx),%xmm1
mulsd  0x18(%rbx),%xmm1
subsd  %xmm4,%xmm2
subsd  %xmm1,%xmm2
subsd  0x48(%rbx),%xmm2
addsd  0x8(%rsp),%xmm2
divsd  0x30(%rbx),%xmm2
movsd  %xmm2,(%r14)
movsd  (%r15),%xmm0
addsd  0xd81(%rip),%xmm0
mulsd  0xd81(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xd49(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm0,%xmm1
subsd  0x8(%r15),%xmm1
divsd  0x38(%rbx),%xmm1
movsd  %xmm1,0x8(%r14)
movsd  (%r15),%xmm0
addsd  0xd4b(%rip),%xmm0
addsd  0x50(%rbx),%xmm0
mulsd  0xd46(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xcfe(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm0,%xmm1
subsd  0x10(%r15),%xmm1
divsd  0x40(%rbx),%xmm1
movsd  %xmm1,0x10(%r14)
movsd  0xccd(%rip),%xmm0
subsd  0x18(%r15),%xmm0
mulsd  0x10(%r12),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%r15),%xmm0
subsd  0x58(%rbx),%xmm0
mulsd  0xcb0(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xc90(%rip),%xmm1
subsd  0x18(%r15),%xmm1
mulsd  0x18(%r12),%xmm1
movsd  %xmm1,0x8(%rsp)
addsd  0xc85(%rip),%xmm0
movsd  0x30(%r15),%xmm1
subsd  0x58(%rbx),%xmm1
movsd  0x10(%rsp),%xmm2
divsd  %xmm0,%xmm2
movsd  %xmm2,0x10(%rsp)
mulsd  0xc5a(%rip),%xmm1
cvttsd2si %xmm1,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0xc4a(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
addsd  0x10(%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  0x28(%rbx),%xmm0
xorps  0xc68(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movsd  0x18(%r15),%xmm0
addsd  0xc1d(%rip),%xmm0
mulsd  0xc1d(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xbf5(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm0,%xmm1
cvttsd2si %xmm1,%edi
mov    $0x3,%esi
call   1040 <pow@plt>
mulsd  0x10(%rsp),%xmm0
mulsd  0x20(%r15),%xmm0
movsd  0x18(%r15),%xmm1
movsd  0x28(%r15),%xmm2
movapd %xmm1,%xmm3
subsd  0x10(%rbx),%xmm3
mulsd  %xmm0,%xmm3
movapd %xmm1,%xmm0
subsd  0x8(%rbx),%xmm0
movsd  0x20(%rbx),%xmm4
mulsd  %xmm2,%xmm4
mulsd  %xmm2,%xmm4
mulsd  %xmm0,%xmm4
subsd  %xmm4,%xmm3
subsd  (%rbx),%xmm1
mulsd  0x18(%rbx),%xmm1
subsd  %xmm1,%xmm3
subsd  0x48(%rbx),%xmm3
addsd  0x8(%rsp),%xmm3
divsd  0x30(%rbx),%xmm3
movsd  %xmm3,0x18(%r14)
movsd  0x18(%r15),%xmm0
addsd  0xb83(%rip),%xmm0
mulsd  0xb83(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xb4b(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm0,%xmm1
subsd  0x20(%r15),%xmm1
divsd  0x38(%rbx),%xmm1
movsd  %xmm1,0x20(%r14)
movsd  0x18(%r15),%xmm0
addsd  0xb4c(%rip),%xmm0
addsd  0x50(%rbx),%xmm0
mulsd  0xb47(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xaff(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm0,%xmm1
subsd  0x28(%r15),%xmm1
divsd  0x40(%rbx),%xmm1
movsd  %xmm1,0x28(%r14)
movsd  0xace(%rip),%xmm0
subsd  0x30(%r15),%xmm0
mulsd  0x20(%r12),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%r15),%xmm0
subsd  0x58(%rbx),%xmm0
mulsd  0xab1(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xa91(%rip),%xmm1
subsd  0x30(%r15),%xmm1
mulsd  0x28(%r12),%xmm1
movsd  %xmm1,0x8(%rsp)
addsd  0xa86(%rip),%xmm0
movsd  0x18(%r15),%xmm1
subsd  0x58(%rbx),%xmm1
movsd  0x10(%rsp),%xmm2
divsd  %xmm0,%xmm2
movsd  %xmm2,0x10(%rsp)
mulsd  0xa5b(%rip),%xmm1
cvttsd2si %xmm1,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0xa4b(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
addsd  0x10(%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  0x28(%rbx),%xmm1
movsd  0xa30(%rip),%xmm0
addsd  0x30(%r15),%xmm0
xorps  0xa5b(%rip),%xmm1
movaps %xmm1,0x10(%rsp)
mulsd  0xa1e(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x9f6(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm0,%xmm1
cvttsd2si %xmm1,%edi
mov    $0x3,%esi
call   1040 <pow@plt>
mulsd  0x10(%rsp),%xmm0
mulsd  0x38(%r15),%xmm0
movsd  0x30(%r15),%xmm1
movapd %xmm1,%xmm2
subsd  0x10(%rbx),%xmm2
movsd  0x40(%r15),%xmm3
mulsd  %xmm0,%xmm2
movapd %xmm1,%xmm0
subsd  0x8(%rbx),%xmm0
movsd  0x20(%rbx),%xmm4
mulsd  %xmm3,%xmm4
mulsd  %xmm3,%xmm4
mulsd  %xmm0,%xmm4
subsd  (%rbx),%xmm1
mulsd  0x18(%rbx),%xmm1
subsd  %xmm4,%xmm2
subsd  %xmm1,%xmm2
subsd  0x48(%rbx),%xmm2
addsd  0x8(%rsp),%xmm2
divsd  0x30(%rbx),%xmm2
movsd  %xmm2,0x30(%r14)
movsd  0x98a(%rip),%xmm0
addsd  0x30(%r15),%xmm0
mulsd  0x984(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x94c(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm0,%xmm1
subsd  0x38(%r15),%xmm1
divsd  0x38(%rbx),%xmm1
movsd  %xmm1,0x38(%r14)
movsd  0x953(%rip),%xmm0
addsd  0x30(%r15),%xmm0
addsd  0x50(%rbx),%xmm0
mulsd  0x948(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x900(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  %xmm0,%xmm1
subsd  0x40(%r15),%xmm1
divsd  0x40(%rbx),%xmm1
movsd  %xmm1,0x40(%r14)
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define void @derivs_three(double* %0, double* %1, double* %2, double* %3) {
%5 = alloca double*
%6 = alloca double*
%7 = alloca double*
%8 = alloca double*
%9 = alloca double
store double* %0, double** %5
store double* %1, double** %6
store double* %2, double** %7
store double* %3, double** %8
%10 = load double*, double** %8
%11 = getelementptr inbounds double, double* %10, i64 0
%12 = load double, double* %11
%13 = load double*, double** %5
%14 = getelementptr inbounds double, double* %13, i64 0
%15 = load double, double* %14
%16 = fsub double -6.250000e-02, %15
%17 = fmul double %12, %16
%18 = load double*, double** %5
%19 = getelementptr inbounds double, double* %18, i64 3
%20 = load double, double* %19
%21 = load double*, double** %7
%22 = getelementptr inbounds double, double* %21, i64 11
%23 = load double, double* %22
%24 = fsub double %20, %23
%25 = fmul double -1.000000e+03, %24
%26 = fptosi double %25 to i32
%27 = call i32 @exp(i32 %26)
%28 = sitofp i32 %27 to double
%29 = fadd double 1.000000e+00, %28
%30 = fdiv double %17, %29
%31 = load double*, double** %8
%32 = getelementptr inbounds double, double* %31, i64 1
%33 = load double, double* %32
%34 = load double*, double** %5
%35 = getelementptr inbounds double, double* %34, i64 0
%36 = load double, double* %35
%37 = fsub double -6.250000e-02, %36
%38 = fmul double %33, %37
%39 = load double*, double** %5
%40 = getelementptr inbounds double, double* %39, i64 6
%41 = load double, double* %40
%42 = load double*, double** %7
%43 = getelementptr inbounds double, double* %42, i64 11
%44 = load double, double* %43
%45 = fsub double %41, %44
%46 = fmul double -1.000000e+03, %45
%47 = fptosi double %46 to i32
%48 = call i32 @exp(i32 %47)
%49 = sitofp i32 %48 to double
%50 = fadd double 1.000000e+00, %49
%51 = fdiv double %38, %50
%52 = fadd double %30, %51
store double %52, double* %9
%53 = load double*, double** %7
%54 = getelementptr inbounds double, double* %53, i64 5
%55 = load double, double* %54
%56 = fneg double %55
%57 = load double*, double** %5
%58 = getelementptr inbounds double, double* %57, i64 0
%59 = load double, double* %58
%60 = fsub double %59, -3.050000e-02
%61 = fmul double -1.500000e+02, %60
%62 = fptosi double %61 to i32
%63 = call i32 @exp(i32 %62)
%64 = sitofp i32 %63 to double
%65 = fadd double 1.000000e+00, %64
%66 = fdiv double 1.000000e+00, %65
%67 = fptosi double %66 to i32
%68 = call double @pow(i32 %67, i32 3)
%69 = fmul double %56, %68
%70 = load double*, double** %5
%71 = getelementptr inbounds double, double* %70, i64 1
%72 = load double, double* %71
%73 = fmul double %69, %72
%74 = load double*, double** %5
%75 = getelementptr inbounds double, double* %74, i64 0
%76 = load double, double* %75
%77 = load double*, double** %7
%78 = getelementptr inbounds double, double* %77, i64 2
%79 = load double, double* %78
%80 = fsub double %76, %79
%81 = load double*, double** %7
%82 = getelementptr inbounds double, double* %81, i64 4
%83 = load double, double* %82
%84 = load double*, double** %5
%85 = getelementptr inbounds double, double* %84, i64 2
%86 = load double, double* %85
%87 = fmul double %83, %86
%88 = load double*, double** %5
%89 = getelementptr inbounds double, double* %88, i64 2
%90 = load double, double* %89
%91 = fmul double %87, %90
%92 = load double*, double** %5
%93 = getelementptr inbounds double, double* %92, i64 0
%94 = load double, double* %93
%95 = load double*, double** %7
%96 = getelementptr inbounds double, double* %95, i64 1
%97 = load double, double* %96
%98 = fsub double %94, %97
%99 = fmul double %91, %98
%100 = fneg double %99
%101 = call double @llvm.fmuladd.f64(double %73, double %80, double %100)
%102 = load double*, double** %7
%103 = getelementptr inbounds double, double* %102, i64 3
%104 = load double, double* %103
%105 = load double*, double** %5
%106 = getelementptr inbounds double, double* %105, i64 0
%107 = load double, double* %106
%108 = load double*, double** %7
%109 = getelementptr inbounds double, double* %108, i64 0
%110 = load double, double* %109
%111 = fsub double %107, %110
%112 = fneg double %104
%113 = call double @llvm.fmuladd.f64(double %112, double %111, double %101)
%114 = load double*, double** %7
%115 = getelementptr inbounds double, double* %114, i64 9
%116 = load double, double* %115
%117 = fsub double %113, %116
%118 = load double, double* %9
%119 = fadd double %117, %118
%120 = load double*, double** %7
%121 = getelementptr inbounds double, double* %120, i64 6
%122 = load double, double* %121
%123 = fdiv double %119, %122
%124 = load double*, double** %6
%125 = getelementptr inbounds double, double* %124, i64 0
store double %123, double* %125
%126 = load double*, double** %5
%127 = getelementptr inbounds double, double* %126, i64 0
%128 = load double, double* %127
%129 = fsub double %128, -3.250000e-02
%130 = fmul double 5.000000e+02, %129
%131 = fptosi double %130 to i32
%132 = call i32 @exp(i32 %131)
%133 = sitofp i32 %132 to double
%134 = fadd double 1.000000e+00, %133
%135 = fdiv double 1.000000e+00, %134
%136 = load double*, double** %5
%137 = getelementptr inbounds double, double* %136, i64 1
%138 = load double, double* %137
%139 = fsub double %135, %138
%140 = load double*, double** %7
%141 = getelementptr inbounds double, double* %140, i64 7
%142 = load double, double* %141
%143 = fdiv double %139, %142
%144 = load double*, double** %6
%145 = getelementptr inbounds double, double* %144, i64 1
store double %143, double* %145
%146 = load double*, double** %5
%147 = getelementptr inbounds double, double* %146, i64 0
%148 = load double, double* %147
%149 = fsub double %148, -1.800000e-02
%150 = load double*, double** %7
%151 = getelementptr inbounds double, double* %150, i64 10
%152 = load double, double* %151
%153 = fadd double %149, %152
%154 = fmul double -8.300000e+01, %153
%155 = fptosi double %154 to i32
%156 = call i32 @exp(i32 %155)
%157 = sitofp i32 %156 to double
%158 = fadd double 1.000000e+00, %157
%159 = fdiv double 1.000000e+00, %158
%160 = load double*, double** %5
%161 = getelementptr inbounds double, double* %160, i64 2
%162 = load double, double* %161
%163 = fsub double %159, %162
%164 = load double*, double** %7
%165 = getelementptr inbounds double, double* %164, i64 8
%166 = load double, double* %165
%167 = fdiv double %163, %166
%168 = load double*, double** %6
%169 = getelementptr inbounds double, double* %168, i64 2
store double %167, double* %169
%170 = load double*, double** %8
%171 = getelementptr inbounds double, double* %170, i64 2
%172 = load double, double* %171
%173 = load double*, double** %5
%174 = getelementptr inbounds double, double* %173, i64 3
%175 = load double, double* %174
%176 = fsub double -6.250000e-02, %175
%177 = fmul double %172, %176
%178 = load double*, double** %5
%179 = getelementptr inbounds double, double* %178, i64 0
%180 = load double, double* %179
%181 = load double*, double** %7
%182 = getelementptr inbounds double, double* %181, i64 11
%183 = load double, double* %182
%184 = fsub double %180, %183
%185 = fmul double -1.000000e+03, %184
%186 = fptosi double %185 to i32
%187 = call i32 @exp(i32 %186)
%188 = sitofp i32 %187 to double
%189 = fadd double 1.000000e+00, %188
%190 = fdiv double %177, %189
%191 = load double*, double** %8
%192 = getelementptr inbounds double, double* %191, i64 3
%193 = load double, double* %192
%194 = load double*, double** %5
%195 = getelementptr inbounds double, double* %194, i64 3
%196 = load double, double* %195
%197 = fsub double -6.250000e-02, %196
%198 = fmul double %193, %197
%199 = load double*, double** %5
%200 = getelementptr inbounds double, double* %199, i64 6
%201 = load double, double* %200
%202 = load double*, double** %7
%203 = getelementptr inbounds double, double* %202, i64 11
%204 = load double, double* %203
%205 = fsub double %201, %204
%206 = fmul double -1.000000e+03, %205
%207 = fptosi double %206 to i32
%208 = call i32 @exp(i32 %207)
%209 = sitofp i32 %208 to double
%210 = fadd double 1.000000e+00, %209
%211 = fdiv double %198, %210
%212 = fadd double %190, %211
store double %212, double* %9
%213 = load double*, double** %7
%214 = getelementptr inbounds double, double* %213, i64 5
%215 = load double, double* %214
%216 = fneg double %215
%217 = load double*, double** %5
%218 = getelementptr inbounds double, double* %217, i64 3
%219 = load double, double* %218
%220 = fsub double %219, -3.050000e-02
%221 = fmul double -1.500000e+02, %220
%222 = fptosi double %221 to i32
%223 = call i32 @exp(i32 %222)
%224 = sitofp i32 %223 to double
%225 = fadd double 1.000000e+00, %224
%226 = fdiv double 1.000000e+00, %225
%227 = fptosi double %226 to i32
%228 = call double @pow(i32 %227, i32 3)
%229 = fmul double %216, %228
%230 = load double*, double** %5
%231 = getelementptr inbounds double, double* %230, i64 4
%232 = load double, double* %231
%233 = fmul double %229, %232
%234 = load double*, double** %5
%235 = getelementptr inbounds double, double* %234, i64 3
%236 = load double, double* %235
%237 = load double*, double** %7
%238 = getelementptr inbounds double, double* %237, i64 2
%239 = load double, double* %238
%240 = fsub double %236, %239
%241 = load double*, double** %7
%242 = getelementptr inbounds double, double* %241, i64 4
%243 = load double, double* %242
%244 = load double*, double** %5
%245 = getelementptr inbounds double, double* %244, i64 5
%246 = load double, double* %245
%247 = fmul double %243, %246
%248 = load double*, double** %5
%249 = getelementptr inbounds double, double* %248, i64 5
%250 = load double, double* %249
%251 = fmul double %247, %250
%252 = load double*, double** %5
%253 = getelementptr inbounds double, double* %252, i64 3
%254 = load double, double* %253
%255 = load double*, double** %7
%256 = getelementptr inbounds double, double* %255, i64 1
%257 = load double, double* %256
%258 = fsub double %254, %257
%259 = fmul double %251, %258
%260 = fneg double %259
%261 = call double @llvm.fmuladd.f64(double %233, double %240, double %260)
%262 = load double*, double** %7
%263 = getelementptr inbounds double, double* %262, i64 3
%264 = load double, double* %263
%265 = load double*, double** %5
%266 = getelementptr inbounds double, double* %265, i64 3
%267 = load double, double* %266
%268 = load double*, double** %7
%269 = getelementptr inbounds double, double* %268, i64 0
%270 = load double, double* %269
%271 = fsub double %267, %270
%272 = fneg double %264
%273 = call double @llvm.fmuladd.f64(double %272, double %271, double %261)
%274 = load double*, double** %7
%275 = getelementptr inbounds double, double* %274, i64 9
%276 = load double, double* %275
%277 = fsub double %273, %276
%278 = load double, double* %9
%279 = fadd double %277, %278
%280 = load double*, double** %7
%281 = getelementptr inbounds double, double* %280, i64 6
%282 = load double, double* %281
%283 = fdiv double %279, %282
%284 = load double*, double** %6
%285 = getelementptr inbounds double, double* %284, i64 3
store double %283, double* %285
%286 = load double*, double** %5
%287 = getelementptr inbounds double, double* %286, i64 3
%288 = load double, double* %287
%289 = fsub double %288, -3.250000e-02
%290 = fmul double 5.000000e+02, %289
%291 = fptosi double %290 to i32
%292 = call i32 @exp(i32 %291)
%293 = sitofp i32 %292 to double
%294 = fadd double 1.000000e+00, %293
%295 = fdiv double 1.000000e+00, %294
%296 = load double*, double** %5
%297 = getelementptr inbounds double, double* %296, i64 4
%298 = load double, double* %297
%299 = fsub double %295, %298
%300 = load double*, double** %7
%301 = getelementptr inbounds double, double* %300, i64 7
%302 = load double, double* %301
%303 = fdiv double %299, %302
%304 = load double*, double** %6
%305 = getelementptr inbounds double, double* %304, i64 4
store double %303, double* %305
%306 = load double*, double** %5
%307 = getelementptr inbounds double, double* %306, i64 3
%308 = load double, double* %307
%309 = fsub double %308, -1.800000e-02
%310 = load double*, double** %7
%311 = getelementptr inbounds double, double* %310, i64 10
%312 = load double, double* %311
%313 = fadd double %309, %312
%314 = fmul double -8.300000e+01, %313
%315 = fptosi double %314 to i32
%316 = call i32 @exp(i32 %315)
%317 = sitofp i32 %316 to double
%318 = fadd double 1.000000e+00, %317
%319 = fdiv double 1.000000e+00, %318
%320 = load double*, double** %5
%321 = getelementptr inbounds double, double* %320, i64 5
%322 = load double, double* %321
%323 = fsub double %319, %322
%324 = load double*, double** %7
%325 = getelementptr inbounds double, double* %324, i64 8
%326 = load double, double* %325
%327 = fdiv double %323, %326
%328 = load double*, double** %6
%329 = getelementptr inbounds double, double* %328, i64 5
store double %327, double* %329
%330 = load double*, double** %8
%331 = getelementptr inbounds double, double* %330, i64 4
%332 = load double, double* %331
%333 = load double*, double** %5
%334 = getelementptr inbounds double, double* %333, i64 6
%335 = load double, double* %334
%336 = fsub double -6.250000e-02, %335
%337 = fmul double %332, %336
%338 = load double*, double** %5
%339 = getelementptr inbounds double, double* %338, i64 0
%340 = load double, double* %339
%341 = load double*, double** %7
%342 = getelementptr inbounds double, double* %341, i64 11
%343 = load double, double* %342
%344 = fsub double %340, %343
%345 = fmul double -1.000000e+03, %344
%346 = fptosi double %345 to i32
%347 = call i32 @exp(i32 %346)
%348 = sitofp i32 %347 to double
%349 = fadd double 1.000000e+00, %348
%350 = fdiv double %337, %349
%351 = load double*, double** %8
%352 = getelementptr inbounds double, double* %351, i64 5
%353 = load double, double* %352
%354 = load double*, double** %5
%355 = getelementptr inbounds double, double* %354, i64 6
%356 = load double, double* %355
%357 = fsub double -6.250000e-02, %356
%358 = fmul double %353, %357
%359 = load double*, double** %5
%360 = getelementptr inbounds double, double* %359, i64 3
%361 = load double, double* %360
%362 = load double*, double** %7
%363 = getelementptr inbounds double, double* %362, i64 11
%364 = load double, double* %363
%365 = fsub double %361, %364
%366 = fmul double -1.000000e+03, %365
%367 = fptosi double %366 to i32
%368 = call i32 @exp(i32 %367)
%369 = sitofp i32 %368 to double
%370 = fadd double 1.000000e+00, %369
%371 = fdiv double %358, %370
%372 = fadd double %350, %371
store double %372, double* %9
%373 = load double*, double** %7
%374 = getelementptr inbounds double, double* %373, i64 5
%375 = load double, double* %374
%376 = fneg double %375
%377 = load double*, double** %5
%378 = getelementptr inbounds double, double* %377, i64 6
%379 = load double, double* %378
%380 = fsub double %379, -3.050000e-02
%381 = fmul double -1.500000e+02, %380
%382 = fptosi double %381 to i32
%383 = call i32 @exp(i32 %382)
%384 = sitofp i32 %383 to double
%385 = fadd double 1.000000e+00, %384
%386 = fdiv double 1.000000e+00, %385
%387 = fptosi double %386 to i32
%388 = call double @pow(i32 %387, i32 3)
%389 = fmul double %376, %388
%390 = load double*, double** %5
%391 = getelementptr inbounds double, double* %390, i64 7
%392 = load double, double* %391
%393 = fmul double %389, %392
%394 = load double*, double** %5
%395 = getelementptr inbounds double, double* %394, i64 6
%396 = load double, double* %395
%397 = load double*, double** %7
%398 = getelementptr inbounds double, double* %397, i64 2
%399 = load double, double* %398
%400 = fsub double %396, %399
%401 = load double*, double** %7
%402 = getelementptr inbounds double, double* %401, i64 4
%403 = load double, double* %402
%404 = load double*, double** %5
%405 = getelementptr inbounds double, double* %404, i64 8
%406 = load double, double* %405
%407 = fmul double %403, %406
%408 = load double*, double** %5
%409 = getelementptr inbounds double, double* %408, i64 8
%410 = load double, double* %409
%411 = fmul double %407, %410
%412 = load double*, double** %5
%413 = getelementptr inbounds double, double* %412, i64 6
%414 = load double, double* %413
%415 = load double*, double** %7
%416 = getelementptr inbounds double, double* %415, i64 1
%417 = load double, double* %416
%418 = fsub double %414, %417
%419 = fmul double %411, %418
%420 = fneg double %419
%421 = call double @llvm.fmuladd.f64(double %393, double %400, double %420)
%422 = load double*, double** %7
%423 = getelementptr inbounds double, double* %422, i64 3
%424 = load double, double* %423
%425 = load double*, double** %5
%426 = getelementptr inbounds double, double* %425, i64 6
%427 = load double, double* %426
%428 = load double*, double** %7
%429 = getelementptr inbounds double, double* %428, i64 0
%430 = load double, double* %429
%431 = fsub double %427, %430
%432 = fneg double %424
%433 = call double @llvm.fmuladd.f64(double %432, double %431, double %421)
%434 = load double*, double** %7
%435 = getelementptr inbounds double, double* %434, i64 9
%436 = load double, double* %435
%437 = fsub double %433, %436
%438 = load double, double* %9
%439 = fadd double %437, %438
%440 = load double*, double** %7
%441 = getelementptr inbounds double, double* %440, i64 6
%442 = load double, double* %441
%443 = fdiv double %439, %442
%444 = load double*, double** %6
%445 = getelementptr inbounds double, double* %444, i64 6
store double %443, double* %445
%446 = load double*, double** %5
%447 = getelementptr inbounds double, double* %446, i64 6
%448 = load double, double* %447
%449 = fsub double %448, -3.250000e-02
%450 = fmul double 5.000000e+02, %449
%451 = fptosi double %450 to i32
%452 = call i32 @exp(i32 %451)
%453 = sitofp i32 %452 to double
%454 = fadd double 1.000000e+00, %453
%455 = fdiv double 1.000000e+00, %454
%456 = load double*, double** %5
%457 = getelementptr inbounds double, double* %456, i64 7
%458 = load double, double* %457
%459 = fsub double %455, %458
%460 = load double*, double** %7
%461 = getelementptr inbounds double, double* %460, i64 7
%462 = load double, double* %461
%463 = fdiv double %459, %462
%464 = load double*, double** %6
%465 = getelementptr inbounds double, double* %464, i64 7
store double %463, double* %465
%466 = load double*, double** %5
%467 = getelementptr inbounds double, double* %466, i64 6
%468 = load double, double* %467
%469 = fsub double %468, -1.800000e-02
%470 = load double*, double** %7
%471 = getelementptr inbounds double, double* %470, i64 10
%472 = load double, double* %471
%473 = fadd double %469, %472
%474 = fmul double -8.300000e+01, %473
%475 = fptosi double %474 to i32
%476 = call i32 @exp(i32 %475)
%477 = sitofp i32 %476 to double
%478 = fadd double 1.000000e+00, %477
%479 = fdiv double 1.000000e+00, %478
%480 = load double*, double** %5
%481 = getelementptr inbounds double, double* %480, i64 8
%482 = load double, double* %481
%483 = fsub double %479, %482
%484 = load double*, double** %7
%485 = getelementptr inbounds double, double* %484, i64 8
%486 = load double, double* %485
%487 = fdiv double %483, %486
%488 = load double*, double** %6
%489 = getelementptr inbounds double, double* %488, i64 8
store double %487, double* %489
ret void
}

LLVM IR (-O2):
define void @derivs_three(double* nocapture %0, double* nocapture writeonly %1, double* nocapture %2, double* nocapture %3) {
%5 = load double, double* %3
%6 = load double, double* %0
%7 = fsub double -6.250000e-02, %6
%8 = fmul double %5, %7
%9 = getelementptr inbounds double, double* %0, i64 3
%10 = load double, double* %9
%11 = getelementptr inbounds double, double* %2, i64 11
%12 = load double, double* %11
%13 = fsub double %10, %12
%14 = fmul double %13, -1.000000e+03
%15 = fptosi double %14 to i32
%16 = tail call i32 @exp(i32 %15)
%17 = sitofp i32 %16 to double
%18 = fadd double %17, 1.000000e+00
%19 = fdiv double %8, %18
%20 = getelementptr inbounds double, double* %3, i64 1
%21 = load double, double* %20
%22 = load double, double* %0
%23 = fsub double -6.250000e-02, %22
%24 = fmul double %21, %23
%25 = getelementptr inbounds double, double* %0, i64 6
%26 = load double, double* %25
%27 = load double, double* %11
%28 = fsub double %26, %27
%29 = fmul double %28, -1.000000e+03
%30 = fptosi double %29 to i32
%31 = tail call i32 @exp(i32 %30)
%32 = sitofp i32 %31 to double
%33 = fadd double %32, 1.000000e+00
%34 = fdiv double %24, %33
%35 = fadd double %19, %34
%36 = getelementptr inbounds double, double* %2, i64 5
%37 = load double, double* %36
%38 = fneg double %37
%39 = load double, double* %0
%40 = fadd double %39, 3.050000e-02
%41 = fmul double %40, -1.500000e+02
%42 = fptosi double %41 to i32
%43 = tail call i32 @exp(i32 %42)
%44 = sitofp i32 %43 to double
%45 = fadd double %44, 1.000000e+00
%46 = fdiv double 1.000000e+00, %45
%47 = fptosi double %46 to i32
%48 = tail call double @pow(i32 %47, i32 3)
%49 = fmul double %48, %38
%50 = getelementptr inbounds double, double* %0, i64 1
%51 = load double, double* %50
%52 = fmul double %49, %51
%53 = load double, double* %0
%54 = getelementptr inbounds double, double* %2, i64 2
%55 = load double, double* %54
%56 = fsub double %53, %55
%57 = getelementptr inbounds double, double* %2, i64 4
%58 = load double, double* %57
%59 = getelementptr inbounds double, double* %0, i64 2
%60 = load double, double* %59
%61 = getelementptr inbounds double, double* %2, i64 1
%62 = load double, double* %61
%63 = fsub double %53, %62
%64 = fneg double %58
%65 = fmul double %60, %64
%66 = fmul double %60, %65
%67 = fmul double %66, %63
%68 = tail call double @llvm.fmuladd.f64(double %52, double %56, double %67)
%69 = getelementptr inbounds double, double* %2, i64 3
%70 = load double, double* %69
%71 = load double, double* %2
%72 = fsub double %53, %71
%73 = fneg double %70
%74 = tail call double @llvm.fmuladd.f64(double %73, double %72, double %68)
%75 = getelementptr inbounds double, double* %2, i64 9
%76 = load double, double* %75
%77 = fsub double %74, %76
%78 = fadd double %35, %77
%79 = getelementptr inbounds double, double* %2, i64 6
%80 = load double, double* %79
%81 = fdiv double %78, %80
store double %81, double* %1
%82 = load double, double* %0
%83 = fadd double %82, 3.250000e-02
%84 = fmul double %83, 5.000000e+02
%85 = fptosi double %84 to i32
%86 = tail call i32 @exp(i32 %85)
%87 = sitofp i32 %86 to double
%88 = fadd double %87, 1.000000e+00
%89 = fdiv double 1.000000e+00, %88
%90 = load double, double* %50
%91 = fsub double %89, %90
%92 = getelementptr inbounds double, double* %2, i64 7
%93 = load double, double* %92
%94 = fdiv double %91, %93
%95 = getelementptr inbounds double, double* %1, i64 1
store double %94, double* %95
%96 = load double, double* %0
%97 = fadd double %96, 1.800000e-02
%98 = getelementptr inbounds double, double* %2, i64 10
%99 = load double, double* %98
%100 = fadd double %97, %99
%101 = fmul double %100, -8.300000e+01
%102 = fptosi double %101 to i32
%103 = tail call i32 @exp(i32 %102)
%104 = sitofp i32 %103 to double
%105 = fadd double %104, 1.000000e+00
%106 = fdiv double 1.000000e+00, %105
%107 = load double, double* %59
%108 = fsub double %106, %107
%109 = getelementptr inbounds double, double* %2, i64 8
%110 = load double, double* %109
%111 = fdiv double %108, %110
%112 = getelementptr inbounds double, double* %1, i64 2
store double %111, double* %112
%113 = getelementptr inbounds double, double* %3, i64 2
%114 = load double, double* %113
%115 = load double, double* %9
%116 = fsub double -6.250000e-02, %115
%117 = fmul double %114, %116
%118 = load double, double* %0
%119 = load double, double* %11
%120 = fsub double %118, %119
%121 = fmul double %120, -1.000000e+03
%122 = fptosi double %121 to i32
%123 = tail call i32 @exp(i32 %122)
%124 = sitofp i32 %123 to double
%125 = fadd double %124, 1.000000e+00
%126 = fdiv double %117, %125
%127 = getelementptr inbounds double, double* %3, i64 3
%128 = load double, double* %127
%129 = load double, double* %9
%130 = fsub double -6.250000e-02, %129
%131 = fmul double %128, %130
%132 = load double, double* %25
%133 = load double, double* %11
%134 = fsub double %132, %133
%135 = fmul double %134, -1.000000e+03
%136 = fptosi double %135 to i32
%137 = tail call i32 @exp(i32 %136)
%138 = sitofp i32 %137 to double
%139 = fadd double %138, 1.000000e+00
%140 = fdiv double %131, %139
%141 = fadd double %126, %140
%142 = load double, double* %36
%143 = fneg double %142
%144 = load double, double* %9
%145 = fadd double %144, 3.050000e-02
%146 = fmul double %145, -1.500000e+02
%147 = fptosi double %146 to i32
%148 = tail call i32 @exp(i32 %147)
%149 = sitofp i32 %148 to double
%150 = fadd double %149, 1.000000e+00
%151 = fdiv double 1.000000e+00, %150
%152 = fptosi double %151 to i32
%153 = tail call double @pow(i32 %152, i32 3)
%154 = fmul double %153, %143
%155 = getelementptr inbounds double, double* %0, i64 4
%156 = load double, double* %155
%157 = fmul double %154, %156
%158 = load double, double* %9
%159 = load double, double* %54
%160 = fsub double %158, %159
%161 = load double, double* %57
%162 = getelementptr inbounds double, double* %0, i64 5
%163 = load double, double* %162
%164 = load double, double* %61
%165 = fsub double %158, %164
%166 = fneg double %161
%167 = fmul double %163, %166
%168 = fmul double %163, %167
%169 = fmul double %168, %165
%170 = tail call double @llvm.fmuladd.f64(double %157, double %160, double %169)
%171 = load double, double* %69
%172 = load double, double* %2
%173 = fsub double %158, %172
%174 = fneg double %171
%175 = tail call double @llvm.fmuladd.f64(double %174, double %173, double %170)
%176 = load double, double* %75
%177 = fsub double %175, %176
%178 = fadd double %141, %177
%179 = load double, double* %79
%180 = fdiv double %178, %179
%181 = getelementptr inbounds double, double* %1, i64 3
store double %180, double* %181
%182 = load double, double* %9
%183 = fadd double %182, 3.250000e-02
%184 = fmul double %183, 5.000000e+02
%185 = fptosi double %184 to i32
%186 = tail call i32 @exp(i32 %185)
%187 = sitofp i32 %186 to double
%188 = fadd double %187, 1.000000e+00
%189 = fdiv double 1.000000e+00, %188
%190 = load double, double* %155
%191 = fsub double %189, %190
%192 = load double, double* %92
%193 = fdiv double %191, %192
%194 = getelementptr inbounds double, double* %1, i64 4
store double %193, double* %194
%195 = load double, double* %9
%196 = fadd double %195, 1.800000e-02
%197 = load double, double* %98
%198 = fadd double %196, %197
%199 = fmul double %198, -8.300000e+01
%200 = fptosi double %199 to i32
%201 = tail call i32 @exp(i32 %200)
%202 = sitofp i32 %201 to double
%203 = fadd double %202, 1.000000e+00
%204 = fdiv double 1.000000e+00, %203
%205 = load double, double* %162
%206 = fsub double %204, %205
%207 = load double, double* %109
%208 = fdiv double %206, %207
%209 = getelementptr inbounds double, double* %1, i64 5
store double %208, double* %209
%210 = getelementptr inbounds double, double* %3, i64 4
%211 = load double, double* %210
%212 = load double, double* %25
%213 = fsub double -6.250000e-02, %212
%214 = fmul double %211, %213
%215 = load double, double* %0
%216 = load double, double* %11
%217 = fsub double %215, %216
%218 = fmul double %217, -1.000000e+03
%219 = fptosi double %218 to i32
%220 = tail call i32 @exp(i32 %219)
%221 = sitofp i32 %220 to double
%222 = fadd double %221, 1.000000e+00
%223 = fdiv double %214, %222
%224 = getelementptr inbounds double, double* %3, i64 5
%225 = load double, double* %224
%226 = load double, double* %25
%227 = fsub double -6.250000e-02, %226
%228 = fmul double %225, %227
%229 = load double, double* %9
%230 = load double, double* %11
%231 = fsub double %229, %230
%232 = fmul double %231, -1.000000e+03
%233 = fptosi double %232 to i32
%234 = tail call i32 @exp(i32 %233)
%235 = sitofp i32 %234 to double
%236 = fadd double %235, 1.000000e+00
%237 = fdiv double %228, %236
%238 = fadd double %223, %237
%239 = load double, double* %36
%240 = fneg double %239
%241 = load double, double* %25
%242 = fadd double %241, 3.050000e-02
%243 = fmul double %242, -1.500000e+02
%244 = fptosi double %243 to i32
%245 = tail call i32 @exp(i32 %244)
%246 = sitofp i32 %245 to double
%247 = fadd double %246, 1.000000e+00
%248 = fdiv double 1.000000e+00, %247
%249 = fptosi double %248 to i32
%250 = tail call double @pow(i32 %249, i32 3)
%251 = fmul double %250, %240
%252 = getelementptr inbounds double, double* %0, i64 7
%253 = load double, double* %252
%254 = fmul double %251, %253
%255 = load double, double* %25
%256 = load double, double* %54
%257 = fsub double %255, %256
%258 = load double, double* %57
%259 = getelementptr inbounds double, double* %0, i64 8
%260 = load double, double* %259
%261 = load double, double* %61
%262 = fsub double %255, %261
%263 = fneg double %258
%264 = fmul double %260, %263
%265 = fmul double %260, %264
%266 = fmul double %265, %262
%267 = tail call double @llvm.fmuladd.f64(double %254, double %257, double %266)
%268 = load double, double* %69
%269 = load double, double* %2
%270 = fsub double %255, %269
%271 = fneg double %268
%272 = tail call double @llvm.fmuladd.f64(double %271, double %270, double %267)
%273 = load double, double* %75
%274 = fsub double %272, %273
%275 = fadd double %238, %274
%276 = load double, double* %79
%277 = fdiv double %275, %276
%278 = getelementptr inbounds double, double* %1, i64 6
store double %277, double* %278
%279 = load double, double* %25
%280 = fadd double %279, 3.250000e-02
%281 = fmul double %280, 5.000000e+02
%282 = fptosi double %281 to i32
%283 = tail call i32 @exp(i32 %282)
%284 = sitofp i32 %283 to double
%285 = fadd double %284, 1.000000e+00
%286 = fdiv double 1.000000e+00, %285
%287 = load double, double* %252
%288 = fsub double %286, %287
%289 = load double, double* %92
%290 = fdiv double %288, %289
%291 = getelementptr inbounds double, double* %1, i64 7
store double %290, double* %291
%292 = load double, double* %25
%293 = fadd double %292, 1.800000e-02
%294 = load double, double* %98
%295 = fadd double %293, %294
%296 = fmul double %295, -8.300000e+01
%297 = fptosi double %296 to i32
%298 = tail call i32 @exp(i32 %297)
%299 = sitofp i32 %298 to double
%300 = fadd double %299, 1.000000e+00
%301 = fdiv double 1.000000e+00, %300
%302 = load double, double* %259
%303 = fsub double %301, %302
%304 = load double, double* %109
%305 = fdiv double %303, %304
%306 = getelementptr inbounds double, double* %1, i64 8
store double %305, double* %306
ret void
}