void R_LYP_Correlation(rho, Vc, Ec, Pc) double rho[], Vc[], *Ec, *Pc;
{
  int i;
  double pi;
  double a, b, c, d, Cf;
  double smallnumber;
  double F1, F12, F14, dF1, ddF1, dF1dn;
  double G1, dG1, ddG1;
  double n;
  double agr, agr2, lap;
  double e_c_rho;
  double ce, cp;
  int Ngrid;
  double *rgrid;
  double *ce_density;
  double *tmp;
  double *drho;
  double *ddrho;
  double *fn;
  double *fdn;
  double *dfdn;
  pi = 4.0 * atan(1.0);
  a = 0.04918;
  b = 0.132;
  c = 0.2533;
  d = 0.349;
  smallnumber = 1.0e-80;
  Cf = (3.0 / 10.0) * pow((3.0 * pi * pi), 2.0 / 3.0);
  Ngrid = N_LogGrid();
  rgrid = r_LogGrid();
  ce_density = alloc_LogGrid();
  tmp = alloc_LogGrid();
  drho = alloc_LogGrid();
  ddrho = alloc_LogGrid();
  fn = alloc_LogGrid();
  fdn = alloc_LogGrid();
  dfdn = alloc_LogGrid();
  for (i = 0; i < Ngrid; ++i)
    tmp[i] = rho[i] / (4.0 * pi);
  ;
  Derivative_LogGrid(tmp, drho);
  Derivative_LogGrid(drho, ddrho);
  for (i = 0; i < Ngrid; ++i) {
    n = rho[i] / (4.0 * pi);
    if (n > 1.2e-18) {
      agr = fabs(drho[i]);
      agr2 = agr * agr;
      e_c_rho = exp(-1.0 * c * pow(n, -1.0 / 3.0));
      F1 = 1.0 / (1.0 + d * pow(n, -1.0 / 3.0));
      F12 = F1 * F1;
      dF1 = F12 * pow(n, -4.0 / 3.0) * d / 3.0;
      ddF1 = (d / 3.0) * (2.0 * F1 * dF1 * pow(n, -4.0 / 3.0) -
                          (4.0 / 3.0) * F12 * pow(n, -7.0 / 3.0));
      G1 = F1 * pow(n, -5.0 / 3.0) * e_c_rho;
      dG1 = dF1 * pow(n, -5.0 / 3.0) * e_c_rho -
            (5.0 / 3.0) * F1 * pow(n, -8.0 / 3.0) * e_c_rho +
            (c / 3.0) * F1 * (1 / (n * n * n)) * e_c_rho;
      ddG1 = ddF1 * pow(n, -5.0 / 3.0) * e_c_rho +
             dF1 * ((2.0 * c / 3.0) * (1 / (n * n * n)) * e_c_rho -
                    (10.0 / 3.0) * pow(n, -8.0 / 3.0) * e_c_rho) +
             F1 * ((40.0 / 9.0) * pow(n, -11.0 / 3.0) * e_c_rho -
                   (14.0 * c / 9.0) * (1 / (n * n * n * n)) * e_c_rho +
                   (c * c / 9.0) * pow(n, -13.0 / 3.0) * e_c_rho);
      fn[i] = -1.0 * a * (dF1 * n + F1) -
              a * b * Cf * pow(n, 5.0 / 3.0) * (dG1 * n + (8.0 / 3.0) * G1) +
              (a * b / 4.0) * (ddG1 * n * agr2 + 3.0 * dG1 * agr2) +
              (a * b / 72.0) * (3.0 * ddG1 * n * agr2 + 5.0 * dG1 * agr2);
      fdn[i] = (a * b / 4.0) * (2.0 * dG1 * n + 4.0 * G1) +
               (a * b / 72.0) * (6.0 * dG1 * n + 4.0 * G1);
      ce = -1.0 * a * F1 * n - a * b * Cf * G1 * pow(n, 8.0 / 3.0) +
           (a * b / 4.0) * (dG1 * n * agr2 + 2.0 * G1 * agr2) +
           (a * b / 72.0) * (3.0 * dG1 * n * agr2 + 2.0 * G1 * agr2);
      ce_density[i] = ce / n;
    } else {
      ce_density[i] = 0.0;
    }
  }
  Derivative_LogGrid(fdn, dfdn);
  for (i = 0; i < Ngrid; ++i) {
    n = rho[i] / (4.0 * pi);
    if (n > 1.2e-18) {
      lap = ddrho[i] + (2.0 / rgrid[i]) * drho[i];
      cp = fn[i] - (dfdn[i] * drho[i] + fdn[i] * lap);
      Vc[i] = cp;
    } else {
      Vc[i] = 0.0;
    }
  }
  for (i = 0; i < Ngrid; ++i)
    tmp[i] = (rho[i]) * ce_density[i];
  *Ec = Integrate_LogGrid(tmp);
  for (i = 0; i < Ngrid; ++i)
    tmp[i] = (rho[i]) * Vc[i];
  *Pc = Integrate_LogGrid(tmp);
  dealloc_LogGrid(ce_density);
  dealloc_LogGrid(tmp);
  dealloc_LogGrid(drho);
  dealloc_LogGrid(ddrho);
  dealloc_LogGrid(fn);
  dealloc_LogGrid(fdn);
  dealloc_LogGrid(dfdn);
}


x86 assembly (clang, -O0):
<R_LYP_Correlation>:
push   %rbp
mov    %rsp,%rbp
sub    $0x210,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
movsd  0xe95(%rip),%xmm0
call   1040 <atan@plt>
movaps %xmm0,%xmm1
movsd  0xe7d(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe64(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe4f(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe3a(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xe25(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xe10(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xdfb(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  0xde1(%rip),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xdc9(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    $0x0,%al
call   10b0 <N_LogGrid@plt>
mov    %eax,-0xe4(%rbp)
mov    $0x0,%al
call   1050 <r_LogGrid@plt>
cltq
mov    %rax,-0xf0(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0xf8(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x100(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x108(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x110(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x118(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x120(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x128(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0xe4(%rbp),%eax
jge    131f <R_LYP_Correlation+0x18f>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xd48(%rip),%xmm1
mulsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x100(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    12d4 <R_LYP_Correlation+0x144>
mov    -0x100(%rbp),%rdi
mov    -0x108(%rbp),%rsi
mov    $0x0,%al
call   1030 <Derivative_LogGrid@plt>
mov    -0x108(%rbp),%rdi
mov    -0x110(%rbp),%rsi
mov    $0x0,%al
call   1030 <Derivative_LogGrid@plt>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0xe4(%rbp),%eax
jge    1d1d <R_LYP_Correlation+0xb8d>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xccc(%rip),%xmm1
mulsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xcbb(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1cf7 <R_LYP_Correlation+0xb67>
mov    -0x108(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movaps 0xd3a(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xc8e(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xce9(%rip),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x208(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
call   1070 <exp@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xcab(%rip),%xmm1
call   1080 <pow@plt>
movsd  -0x200(%rbp),%xmm1
ff
mulsd  %xmm0,%xmm1
movsd  0xbf2(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xbe6(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xc49(%rip),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1f8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xb58(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  0xb42(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  0xb76(%rip),%xmm0
mulsd  -0x68(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xbdc(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  0xbbf(%rip),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xb9a(%rip),%xmm1
call   1080 <pow@plt>
movsd  -0x1f0(%rbp),%xmm2
ff
movsd  -0x1e8(%rbp),%xmm1
ff
movsd  -0x1e0(%rbp),%xmm3
ff
movaps %xmm0,%xmm4
movsd  -0x1d8(%rbp),%xmm0
ff
mulsd  %xmm4,%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xb1e(%rip),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1d0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xadd(%rip),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1c8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  0xa69(%rip),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xa84(%rip),%xmm1
call   1080 <pow@plt>
movsd  -0x1c0(%rbp),%xmm1
ff
movsd  -0x1b8(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x1b0(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
movsd  0x97c(%rip),%xmm2
divsd  %xmm2,%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm3
ff
mulsd  -0xb0(%rbp),%xmm3
ff
mulsd  -0xb0(%rbp),%xmm3
ff
movsd  0x98b(%rip),%xmm2
divsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x9cb(%rip),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1a8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  0x91a(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  0x8c5(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
mulsd  -0xb0(%rbp),%xmm2
ff
mulsd  -0xb0(%rbp),%xmm2
ff
movsd  0x8d9(%rip),%xmm1
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x921(%rip),%xmm1
call   1080 <pow@plt>
movsd  -0x1a0(%rbp),%xmm3
ff
movsd  -0x198(%rbp),%xmm5
ff
movsd  -0x190(%rbp),%xmm1
ff
movsd  -0x188(%rbp),%xmm2
ff
movaps %xmm0,%xmm6
movsd  -0x180(%rbp),%xmm0
ff
movsd  0x8e1(%rip),%xmm4
mulsd  %xmm6,%xmm4
mulsd  -0xd0(%rbp),%xmm4
ff
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x87d(%rip),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x865(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
movsd  0x849(%rip),%xmm1
mulsd  -0x48(%rbp),%xmm1
movsd  0x834(%rip),%xmm3
divsd  %xmm3,%xmm1
movsd  -0xb0(%rbp),%xmm4
ff
mulsd  -0xb0(%rbp),%xmm4
ff
mulsd  -0xb0(%rbp),%xmm4
ff
mulsd  -0xb0(%rbp),%xmm4
ff
movsd  0x7b8(%rip),%xmm3
divsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  0x7bf(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x79b(%rip),%xmm1
call   1080 <pow@plt>
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0x170(%rbp),%xmm3
ff
movsd  -0x168(%rbp),%xmm1
ff
movaps %xmm0,%xmm4
movsd  -0x160(%rbp),%xmm0
ff
mulsd  %xmm4,%xmm2
movsd  -0xd0(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0x727(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x6e9(%rip),%xmm1
call   1080 <pow@plt>
movsd  -0x158(%rbp),%xmm1
ff
movsd  -0x150(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x148(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
movsd  -0xa0(%rbp),%xmm3
ff
movsd  -0xb0(%rbp),%xmm5
ff
movsd  0x68d(%rip),%xmm4
mulsd  -0x98(%rbp),%xmm4
ff
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
movsd  0x620(%rip),%xmm2
divsd  %xmm2,%xmm1
movsd  -0xa8(%rbp),%xmm2
ff
mulsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm4
ff
movsd  0x5cc(%rip),%xmm3
mulsd  -0xa0(%rbp),%xmm3
ff
mulsd  -0xc0(%rbp),%xmm3
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x38(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  0x5ea(%rip),%xmm2
divsd  %xmm2,%xmm0
movsd  0x58e(%rip),%xmm2
mulsd  -0xa8(%rbp),%xmm2
ff
mulsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm4
ff
movsd  0x5de(%rip),%xmm3
mulsd  -0xa0(%rbp),%xmm3
ff
mulsd  -0xc0(%rbp),%xmm3
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x118(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x38(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  0x55c(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x568(%rip),%xmm2
mulsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm3
ff
movsd  0x538(%rip),%xmm1
mulsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
movsd  0x536(%rip),%xmm3
divsd  %xmm3,%xmm1
movsd  0x542(%rip),%xmm3
mulsd  -0xa0(%rbp),%xmm3
ff
movsd  -0xb0(%rbp),%xmm5
ff
movsd  0x4f2(%rip),%xmm4
mulsd  -0x98(%rbp),%xmm4
ff
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x120(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x4ee(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x495(%rip),%xmm1
call   1080 <pow@plt>
movsd  -0x140(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x130(%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  -0x38(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
movsd  0x418(%rip),%xmm2
divsd  %xmm2,%xmm1
movsd  -0xa0(%rbp),%xmm2
ff
mulsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm4
ff
movsd  0x40c(%rip),%xmm3
mulsd  -0x98(%rbp),%xmm3
ff
mulsd  -0xc0(%rbp),%xmm3
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x38(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  0x3e2(%rip),%xmm2
divsd  %xmm2,%xmm0
movsd  0x386(%rip),%xmm2
mulsd  -0xa0(%rbp),%xmm2
ff
mulsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm4
ff
movsd  0x3ae(%rip),%xmm3
mulsd  -0x98(%rbp),%xmm3
ff
mulsd  -0xc0(%rbp),%xmm3
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
divsd  -0xb0(%rbp),%xmm0
ff
mov    -0xf8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1d0a <R_LYP_Correlation+0xb7a>
mov    -0xf8(%rbp),%rax
movslq -0x24(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1d0f <R_LYP_Correlation+0xb7f>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1350 <R_LYP_Correlation+0x1c0>
mov    -0x120(%rbp),%rdi
mov    -0x128(%rbp),%rsi
mov    $0x0,%al
call   1030 <Derivative_LogGrid@plt>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0xe4(%rbp),%eax
jge    1e69 <R_LYP_Correlation+0xcd9>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x2e3(%rip),%xmm1
mulsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x2d2(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1e46 <R_LYP_Correlation+0xcb6>
mov    -0x110(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0xf0(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  0x2ad(%rip),%xmm0
divsd  (%rax,%rcx,8),%xmm0
mov    -0x108(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x118(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x128(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x108(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm3
mov    -0x120(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  -0xc8(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e56 <R_LYP_Correlation+0xcc6>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e5b <R_LYP_Correlation+0xccb>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1d39 <R_LYP_Correlation+0xba9>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0xe4(%rbp),%eax
jge    1eba <R_LYP_Correlation+0xd2a>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0xf8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x100(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1e70 <R_LYP_Correlation+0xce0>
mov    -0x100(%rbp),%rdi
mov    $0x0,%al
call   1060 <Integrate_LogGrid@plt>
cvtsi2sd %eax,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0xe4(%rbp),%eax
jge    1f22 <R_LYP_Correlation+0xd92>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x100(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1edb <R_LYP_Correlation+0xd4b>
mov    -0x100(%rbp),%rdi
mov    $0x0,%al
call   1060 <Integrate_LogGrid@plt>
cvtsi2sd %eax,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0xf8(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
mov    -0x100(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
mov    -0x108(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
mov    -0x110(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
mov    -0x118(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
mov    -0x120(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
mov    -0x128(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
add    $0x210,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<R_LYP_Correlation>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xd8,%rsp
mov    %rcx,0xb0(%rsp)
mov    %rdx,0xa0(%rsp)
mov    %rsi,0x90(%rsp)
mov    %rdi,%rbp
movsd  0xe3c(%rip),%xmm0
call   1040 <atan@plt>
xor    %eax,%eax
call   10b0 <N_LogGrid@plt>
mov    %eax,%r12d
xor    %eax,%eax
call   1050 <r_LogGrid@plt>
mov    %eax,(%rsp)
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
movslq %eax,%rbx
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
movslq %eax,%r15
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
movslq %eax,%r14
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
movslq %eax,%r13
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,0x68(%rsp)
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,0x28(%rsp)
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
movslq %eax,%rdi
test   %r12d,%r12d
mov    %r14,0x38(%rsp)
mov    %rdi,0x30(%rsp)
jle    12df <R_LYP_Correlation+0x14f>
mov    %r12d,%r14d
cmp    $0x1,%r12d
mov    %r12d,0x24(%rsp)
mov    %r13,0x98(%rsp)
je     1275 <R_LYP_Correlation+0xe5>
lea    0x0(,%r14,8),%rax
add    %rbp,%rax
cmp    %rax,%r15
jae    1301 <R_LYP_Correlation+0x171>
lea    (%r15,%r14,8),%rax
cmp    %rbp,%rax
jbe    1301 <R_LYP_Correlation+0x171>
xor    %eax,%eax
mov    %rax,%rcx
not    %rcx
test   $0x1,%r14b
je     129b <R_LYP_Correlation+0x10b>
movsd  0x0(%rbp,%rax,8),%xmm0
divsd  0xd77(%rip),%xmm0
movsd  %xmm0,(%r15,%rax,8)
or     $0x1,%rax
add    %r14,%rcx
je     137d <R_LYP_Correlation+0x1ed>
movsd  0xd5c(%rip),%xmm0
nopl   0x0(%rax)
movsd  0x0(%rbp,%rax,8),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,(%r15,%rax,8)
movsd  0x8(%rbp,%rax,8),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r15,%rax,8)
add    $0x2,%rax
cmp    %rax,%r14
jne    12b0 <R_LYP_Correlation+0x120>
jmp    137d <R_LYP_Correlation+0x1ed>
mov    %r15,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
mov    %r14,%rdi
mov    %r13,%r12
mov    %r13,%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
jmp    192e <R_LYP_Correlation+0x79e>
mov    %r14d,%eax
and    $0xfffffffe,%eax
lea    -0x2(%rax),%rdx
mov    %rdx,%rcx
shr    %rcx
add    $0x1,%rcx
test   %rdx,%rdx
je     1b96 <R_LYP_Correlation+0xa06>
mov    %rcx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %edx,%edx
movapd 0xdc1(%rip),%xmm0
nop
movupd 0x0(%rbp,%rdx,8),%xmm1
divpd  %xmm0,%xmm1
movupd %xmm1,(%r15,%rdx,8)
movupd 0x10(%rbp,%rdx,8),%xmm1
divpd  %xmm0,%xmm1
movupd %xmm1,0x10(%r15,%rdx,8)
add    $0x4,%rdx
add    $0xfffffffffffffffe,%rsi
jne    1330 <R_LYP_Correlation+0x1a0>
test   $0x1,%cl
je     1374 <R_LYP_Correlation+0x1e4>
movupd 0x0(%rbp,%rdx,8),%xmm0
divpd  0xd82(%rip),%xmm0
movupd %xmm0,(%r15,%rdx,8)
cmp    %r14,%rax
jne    1277 <R_LYP_Correlation+0xe7>
mov    %r15,%rdi
mov    0x38(%rsp),%r12
mov    %r12,%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
mov    %r12,%rdi
mov    0x98(%rsp),%rsi
mov    %rsi,%r12
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
cmpl   $0x0,0x24(%rsp)
jle    192e <R_LYP_Correlation+0x79e>
movslq (%rsp),%rax
mov    %rax,0xb8(%rsp)
xor    %r12d,%r12d
movsd  0xc42(%rip),%xmm2
movsd  0xc42(%rip),%xmm3
jmp    13e3 <R_LYP_Correlation+0x253>
movsd  %xmm1,(%rbx,%r12,8)
add    $0x1,%r12
cmp    %r12,%r14
je     19de <R_LYP_Correlation+0x84e>
movsd  0x0(%rbp,%r12,8),%xmm0
divsd  %xmm2,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm3,%xmm0
jbe    13d0 <R_LYP_Correlation+0x240>
mov    0x38(%rsp),%rax
movsd  (%rax,%r12,8),%xmm1
mulsd  %xmm1,%xmm1
movsd  %xmm1,0xa8(%rsp)
movsd  %xmm0,(%rsp)
movsd  0xbfb(%rip),%xmm1
call   1080 <pow@plt>
mulsd  0xbf6(%rip),%xmm0
call   1070 <exp@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
movsd  0xbd6(%rip),%xmm1
call   1080 <pow@plt>
movsd  0xbd9(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xba5(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  (%rsp),%xmm3
movapd %xmm3,%xmm2
mulsd  %xmm3,%xmm2
mulsd  %xmm3,%xmm2
movapd %xmm2,0xc0(%rsp)
movapd %xmm2,%xmm1
unpcklpd %xmm0,%xmm1
movapd 0xc77(%rip),%xmm0
divpd  %xmm1,%xmm0
movapd %xmm0,0x40(%rsp)
unpckhpd %xmm0,%xmm0
movapd %xmm0,0x50(%rsp)
mulsd  %xmm0,%xmm0
movapd %xmm0,0x80(%rsp)
movapd %xmm3,%xmm0
movsd  0xb7a(%rip),%xmm1
call   1080 <pow@plt>
movapd %xmm0,%xmm1
mulsd  0x80(%rsp),%xmm1
mulsd  0xb58(%rip),%xmm1
movsd  0xb60(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
movapd 0x50(%rsp),%xmm0
addsd  %xmm0,%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm0,0x70(%rsp)
movsd  (%rsp),%xmm0
movsd  0xb2d(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
movsd  0xb25(%rip),%xmm1
call   1080 <pow@plt>
movapd 0x80(%rsp),%xmm1
mulsd  0xaff(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x8(%rsp),%xmm0
mulsd  0x70(%rsp),%xmm0
addsd  %xmm1,%xmm0
mulsd  0xafb(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
movsd  0xaf0(%rip),%xmm1
call   1080 <pow@plt>
mulsd  0x50(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x80(%rsp)
movsd  (%rsp),%xmm0
movsd  0xac9(%rip),%xmm1
call   1080 <pow@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x70(%rsp)
movsd  (%rsp),%xmm0
movsd  0xab3(%rip),%xmm1
call   1080 <pow@plt>
movapd 0x50(%rsp),%xmm2
movapd %xmm2,%xmm3
movsd  0xa94(%rip),%xmm1
mulsd  %xmm1,%xmm3
mulsd  %xmm0,%xmm3
movsd  0x10(%rsp),%xmm0
mulsd  %xmm0,%xmm3
movsd  0x70(%rsp),%xmm5
mulsd  %xmm0,%xmm5
movapd %xmm0,%xmm4
addsd  %xmm3,%xmm5
movapd %xmm2,%xmm0
mulsd  0xa74(%rip),%xmm0
mulsd  0x40(%rsp),%xmm0
mulsd  %xmm4,%xmm0
addsd  %xmm5,%xmm0
movsd  %xmm0,0x70(%rsp)
movsd  (%rsp),%xmm0
call   1080 <pow@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movapd 0x40(%rsp),%xmm0
mulsd  0xa44(%rip),%xmm0
movapd %xmm0,0x40(%rsp)
movsd  (%rsp),%xmm0
movsd  0xa21(%rip),%xmm1
call   1080 <pow@plt>
mulsd  0xa2c(%rip),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movapd 0x40(%rsp),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
mulsd  0x18(%rsp),%xmm2
movsd  0x8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
movsd  0x9f5(%rip),%xmm1
call   1080 <pow@plt>
movapd %xmm0,%xmm3
mulsd  0x9ec(%rip),%xmm3
movsd  (%rsp),%xmm0
movapd 0xc0(%rsp),%xmm2
mulsd  %xmm0,%xmm2
movsd  0x952(%rip),%xmm1
divsd  %xmm2,%xmm1
mulsd  0x9ce(%rip),%xmm1
movsd  0x10(%rsp),%xmm2
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm3
addsd  %xmm1,%xmm3
movsd  %xmm3,0x40(%rsp)
movsd  0x9b6(%rip),%xmm1
call   1080 <pow@plt>
mulsd  0x9b1(%rip),%xmm0
mulsd  0x10(%rsp),%xmm0
addsd  0x40(%rsp),%xmm0
movapd 0x50(%rsp),%xmm1
mulsd  %xmm1,%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  (%rsp),%xmm0
movsd  0x18(%rsp),%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,0x18(%rsp)
movsd  0x976(%rip),%xmm1
call   1080 <pow@plt>
movsd  0x80(%rsp),%xmm5
movapd %xmm5,%xmm2
movsd  0x964(%rip),%xmm1
mulsd  %xmm1,%xmm2
movsd  0x70(%rsp),%xmm6
movapd %xmm6,%xmm3
movsd  (%rsp),%xmm4
mulsd  %xmm4,%xmm3
movsd  %xmm3,0x10(%rsp)
addsd  %xmm3,%xmm2
movsd  0x943(%rip),%xmm3
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm0
movsd  0x93a(%rip),%xmm8
movsd  0x18(%rsp),%xmm2
mulsd  %xmm8,%xmm2
addsd  %xmm0,%xmm2
movapd %xmm2,%xmm12
movapd %xmm4,%xmm0
movapd %xmm4,%xmm9
movsd  0x40(%rsp),%xmm7
mulsd  %xmm7,%xmm0
movapd %xmm6,%xmm3
movapd %xmm6,%xmm10
movsd  0x882(%rip),%xmm6
mulsd  %xmm6,%xmm3
movsd  %xmm3,0x18(%rsp)
movsd  0xa8(%rsp),%xmm4
movapd %xmm4,%xmm2
mulsd  %xmm3,%xmm2
mulsd  %xmm4,%xmm0
movapd %xmm4,%xmm3
addsd  %xmm2,%xmm0
movsd  0x8db(%rip),%xmm2
mulsd  %xmm2,%xmm0
movapd %xmm2,%xmm11
addsd  %xmm12,%xmm0
mulsd  %xmm6,%xmm7
mulsd  %xmm9,%xmm7
movapd %xmm10,%xmm4
movapd %xmm10,%xmm2
mulsd  0x8ba(%rip),%xmm2
mulsd  %xmm3,%xmm2
mulsd  %xmm3,%xmm7
addsd  %xmm2,%xmm7
movsd  0x8ae(%rip),%xmm2
mulsd  %xmm2,%xmm7
movapd %xmm2,%xmm3
addsd  %xmm0,%xmm7
mov    0x68(%rsp),%rax
movsd  %xmm7,(%rax,%r12,8)
movapd %xmm10,%xmm0
addsd  %xmm10,%xmm0
movapd %xmm5,%xmm2
mulsd  0x889(%rip),%xmm2
mulsd  %xmm9,%xmm0
addsd  %xmm2,%xmm0
mulsd  0x880(%rip),%xmm4
mulsd  %xmm9,%xmm4
addsd  %xmm2,%xmm4
mulsd  %xmm3,%xmm4
mulsd  %xmm11,%xmm0
addsd  %xmm4,%xmm0
mov    0x28(%rsp),%rax
movsd  %xmm0,(%rax,%r12,8)
movapd 0x50(%rsp),%xmm0
mulsd  %xmm8,%xmm0
movapd %xmm0,0x50(%rsp)
movapd %xmm9,%xmm0
call   1080 <pow@plt>
movsd  0x76c(%rip),%xmm3
movsd  0x75c(%rip),%xmm2
movsd  0x80(%rsp),%xmm4
movapd %xmm4,%xmm1
mulsd  0x7ef(%rip),%xmm1
mulsd  %xmm0,%xmm1
movapd 0x50(%rsp),%xmm0
movsd  (%rsp),%xmm6
mulsd  %xmm6,%xmm0
addsd  %xmm1,%xmm0
movapd %xmm0,%xmm1
addsd  %xmm4,%xmm4
movsd  0xa8(%rsp),%xmm0
mulsd  %xmm0,%xmm4
movsd  0x10(%rsp),%xmm5
mulsd  %xmm0,%xmm5
addsd  %xmm4,%xmm5
mulsd  0x7bd(%rip),%xmm5
addsd  %xmm1,%xmm5
movsd  0x18(%rsp),%xmm1
mulsd  %xmm6,%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm4,%xmm1
mulsd  0x7af(%rip),%xmm1
addsd  %xmm5,%xmm1
divsd  %xmm6,%xmm1
jmp    13d0 <R_LYP_Correlation+0x240>
mov    %rbx,%r13
mov    0x28(%rsp),%rdi
mov    0x30(%rsp),%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1060 <Integrate_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0xa0(%rsp),%rax
movsd  %xmm0,(%rax)
mov    %r13,%rbx
mov    %r15,%rdi
xor    %eax,%eax
call   1060 <Integrate_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0xb0(%rsp),%rax
movsd  %xmm0,(%rax)
mov    %rbx,%rdi
xor    %eax,%eax
call   1090 <dealloc_LogGrid@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1090 <dealloc_LogGrid@plt>
mov    0x38(%rsp),%rdi
xor    %eax,%eax
call   1090 <dealloc_LogGrid@plt>
mov    %r12,%rdi
xor    %eax,%eax
call   1090 <dealloc_LogGrid@plt>
mov    0x68(%rsp),%rdi
xor    %eax,%eax
call   1090 <dealloc_LogGrid@plt>
mov    0x28(%rsp),%rdi
xor    %eax,%eax
call   1090 <dealloc_LogGrid@plt>
mov    0x30(%rsp),%rdi
xor    %eax,%eax
add    $0xd8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1090 <dealloc_LogGrid@plt>
mov    %rbx,%r13
mov    0x28(%rsp),%rdi
mov    0x30(%rsp),%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
mov    0x24(%rsp),%r8d
test   %r8d,%r8d
mov    0x98(%rsp),%r12
mov    0x90(%rsp),%rbx
jle    1942 <R_LYP_Correlation+0x7b2>
xor    %eax,%eax
movsd  0x6ce(%rip),%xmm0
mov    0x38(%rsp),%rcx
mov    0x30(%rsp),%rsi
mov    %r12,%rdi
movsd  0x5d9(%rip),%xmm4
movsd  0x5d9(%rip),%xmm5
jmp    1a4e <R_LYP_Correlation+0x8be>
nopl   0x0(%rax)
movsd  %xmm1,(%rbx,%rax,8)
add    $0x1,%rax
cmp    %rax,%r14
je     1aa4 <R_LYP_Correlation+0x914>
movsd  0x0(%rbp,%rax,8),%xmm2
divsd  %xmm4,%xmm2
xorpd  %xmm1,%xmm1
ucomisd %xmm5,%xmm2
jbe    1a40 <R_LYP_Correlation+0x8b0>
movapd %xmm0,%xmm2
mov    0xb8(%rsp),%rdx
divsd  (%rdx,%rax,8),%xmm2
movsd  (%rcx,%rax,8),%xmm3
mulsd  %xmm3,%xmm2
addsd  (%rdi,%rax,8),%xmm2
mov    0x68(%rsp),%rdx
movsd  (%rdx,%rax,8),%xmm1
mov    0x28(%rsp),%rdx
mulsd  (%rdx,%rax,8),%xmm2
mulsd  (%rsi,%rax,8),%xmm3
addsd  %xmm2,%xmm3
subsd  %xmm3,%xmm1
jmp    1a40 <R_LYP_Correlation+0x8b0>
test   %r8d,%r8d
jle    1942 <R_LYP_Correlation+0x7b2>
cmp    $0x4,%r8d
jae    1abd <R_LYP_Correlation+0x92d>
xor    %eax,%eax
mov    %r13,%rbx
jmp    1be2 <R_LYP_Correlation+0xa52>
lea    (%r15,%r14,8),%rax
lea    0x0(,%r14,8),%rcx
add    %rbp,%rcx
mov    %r13,%rbx
lea    0x0(,%r14,8),%rdx
add    %r13,%rdx
cmp    %rcx,%r15
setb   %sil
cmp    %rbp,%rax
seta   %dil
cmp    %rdx,%r15
setb   %cl
cmp    %rax,%r13
setb   %dl
xor    %eax,%eax
test   %dil,%sil
jne    1be2 <R_LYP_Correlation+0xa52>
and    %dl,%cl
jne    1be2 <R_LYP_Correlation+0xa52>
mov    %r14d,%eax
and    $0xfffffffc,%eax
lea    -0x4(%rax),%rcx
mov    %rcx,%rdx
shr    $0x2,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     1ba6 <R_LYP_Correlation+0xa16>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
xchg   %ax,%ax
movupd 0x0(%rbp,%rcx,8),%xmm0
movupd 0x10(%rbp,%rcx,8),%xmm1
movupd (%rbx,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x10(%rbx,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,(%r15,%rcx,8)
movupd %xmm0,0x10(%r15,%rcx,8)
movupd 0x20(%rbp,%rcx,8),%xmm0
movupd 0x30(%rbp,%rcx,8),%xmm1
movupd 0x20(%rbx,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x30(%rbx,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,0x20(%r15,%rcx,8)
movupd %xmm0,0x30(%r15,%rcx,8)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%rsi
jne    1b30 <R_LYP_Correlation+0x9a0>
jmp    1ba8 <R_LYP_Correlation+0xa18>
xor    %edx,%edx
test   $0x1,%cl
jne    1360 <R_LYP_Correlation+0x1d0>
jmp    1374 <R_LYP_Correlation+0x1e4>
xor    %ecx,%ecx
test   $0x1,%dl
je     1bd9 <R_LYP_Correlation+0xa49>
movupd 0x0(%rbp,%rcx,8),%xmm0
movupd 0x10(%rbp,%rcx,8),%xmm1
movupd (%rbx,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x10(%rbx,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,(%r15,%rcx,8)
movupd %xmm0,0x10(%r15,%rcx,8)
cmp    %r14,%rax
je     1c83 <R_LYP_Correlation+0xaf3>
mov    %rax,%rcx
not    %rcx
add    %r14,%rcx
mov    %r14,%rdx
and    $0x3,%rdx
je     1c1b <R_LYP_Correlation+0xa8b>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  (%rbx,%rax,8),%xmm0
movsd  %xmm0,(%r15,%rax,8)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    1c00 <R_LYP_Correlation+0xa70>
cmp    $0x3,%rcx
jb     1c83 <R_LYP_Correlation+0xaf3>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  (%rbx,%rax,8),%xmm0
movsd  %xmm0,(%r15,%rax,8)
movsd  0x8(%rbp,%rax,8),%xmm0
mulsd  0x8(%rbx,%rax,8),%xmm0
movsd  %xmm0,0x8(%r15,%rax,8)
movsd  0x10(%rbp,%rax,8),%xmm0
mulsd  0x10(%rbx,%rax,8),%xmm0
movsd  %xmm0,0x10(%r15,%rax,8)
movsd  0x18(%rbp,%rax,8),%xmm0
mulsd  0x18(%rbx,%rax,8),%xmm0
movsd  %xmm0,0x18(%r15,%rax,8)
add    $0x4,%rax
cmp    %rax,%r14
jne    1c30 <R_LYP_Correlation+0xaa0>
mov    %r15,%rdi
xor    %eax,%eax
call   1060 <Integrate_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0xa0(%rsp),%rax
movsd  %xmm0,(%rax)
mov    0x24(%rsp),%eax
test   %eax,%eax
mov    0x90(%rsp),%rdi
jle    1962 <R_LYP_Correlation+0x7d2>
cmp    $0x4,%eax
jae    1d68 <R_LYP_Correlation+0xbd8>
xor    %eax,%eax
mov    %rax,%rcx
not    %rcx
add    %r14,%rcx
mov    %r14,%rdx
and    $0x3,%rdx
je     1cfb <R_LYP_Correlation+0xb6b>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  (%rdi,%rax,8),%xmm0
movsd  %xmm0,(%r15,%rax,8)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    1ce0 <R_LYP_Correlation+0xb50>
cmp    $0x3,%rcx
jb     1962 <R_LYP_Correlation+0x7d2>
cs nopw 0x0(%rax,%rax,1)
nop
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  (%rdi,%rax,8),%xmm0
movsd  %xmm0,(%r15,%rax,8)
movsd  0x8(%rbp,%rax,8),%xmm0
mulsd  0x8(%rdi,%rax,8),%xmm0
movsd  %xmm0,0x8(%r15,%rax,8)
movsd  0x10(%rbp,%rax,8),%xmm0
mulsd  0x10(%rdi,%rax,8),%xmm0
movsd  %xmm0,0x10(%r15,%rax,8)
movsd  0x18(%rbp,%rax,8),%xmm0
mulsd  0x18(%rdi,%rax,8),%xmm0
movsd  %xmm0,0x18(%r15,%rax,8)
add    $0x4,%rax
cmp    %rax,%r14
jne    1d10 <R_LYP_Correlation+0xb80>
jmp    1962 <R_LYP_Correlation+0x7d2>
lea    (%r15,%r14,8),%rax
lea    0x0(,%r14,8),%rcx
add    %rbp,%rcx
cmp    %rcx,%r15
setb   %bl
cmp    %rbp,%rax
seta   %dl
lea    (%rdi,%r14,8),%rcx
cmp    %rcx,%r15
setb   %cl
cmp    %rdi,%rax
seta   %sil
xor    %eax,%eax
test   %dl,%bl
jne    1e46 <R_LYP_Correlation+0xcb6>
and    %sil,%cl
mov    %r13,%rbx
jne    1cbf <R_LYP_Correlation+0xb2f>
mov    %r14d,%eax
and    $0xfffffffc,%eax
lea    -0x4(%rax),%rcx
mov    %rcx,%rdx
shr    $0x2,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     1e4e <R_LYP_Correlation+0xcbe>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movupd 0x0(%rbp,%rcx,8),%xmm0
movupd 0x10(%rbp,%rcx,8),%xmm1
movupd (%rdi,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x10(%rdi,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,(%r15,%rcx,8)
movupd %xmm0,0x10(%r15,%rcx,8)
movupd 0x20(%rbp,%rcx,8),%xmm0
movupd 0x30(%rbp,%rcx,8),%xmm1
movupd 0x20(%rdi,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x30(%rdi,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,0x20(%r15,%rcx,8)
movupd %xmm0,0x30(%r15,%rcx,8)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%rsi
jne    1de0 <R_LYP_Correlation+0xc50>
jmp    1e50 <R_LYP_Correlation+0xcc0>
mov    %r13,%rbx
jmp    1cbf <R_LYP_Correlation+0xb2f>
xor    %ecx,%ecx
test   $0x1,%dl
je     1e81 <R_LYP_Correlation+0xcf1>
movupd 0x0(%rbp,%rcx,8),%xmm0
movupd 0x10(%rbp,%rcx,8),%xmm1
movupd (%rdi,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x10(%rdi,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,(%r15,%rcx,8)
movupd %xmm0,0x10(%r15,%rcx,8)
cmp    %r14,%rax
je     1962 <R_LYP_Correlation+0x7d2>
jmp    1cbf <R_LYP_Correlation+0xb2f>

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

LLVM IR (-O2):
define void @R_LYP_Correlation(double* nocapture %0, double* nocapture %1, double* nocapture writeonly %2, double* nocapture writeonly %3) {
%5 = tail call double @atan(double 1.000000e+00)
%6 = tail call i32 (...) @N_LogGrid()
%7 = tail call i32 (...) @r_LogGrid()
%8 = sext i32 %7 to i64
%9 = inttoptr i64 %8 to double*
%10 = tail call i32 (...) @alloc_LogGrid()
%11 = sext i32 %10 to i64
%12 = inttoptr i64 %11 to double*
%13 = inttoptr i64 %11 to i8*
%14 = tail call i32 (...) @alloc_LogGrid()
%15 = sext i32 %14 to i64
%16 = inttoptr i64 %15 to double*
%17 = inttoptr i64 %15 to i8*
%18 = tail call i32 (...) @alloc_LogGrid()
%19 = sext i32 %18 to i64
%20 = inttoptr i64 %19 to double*
%21 = tail call i32 (...) @alloc_LogGrid()
%22 = sext i32 %21 to i64
%23 = inttoptr i64 %22 to double*
%24 = tail call i32 (...) @alloc_LogGrid()
%25 = sext i32 %24 to i64
%26 = inttoptr i64 %25 to double*
%27 = tail call i32 (...) @alloc_LogGrid()
%28 = sext i32 %27 to i64
%29 = inttoptr i64 %28 to double*
%30 = tail call i32 (...) @alloc_LogGrid()
%31 = sext i32 %30 to i64
%32 = inttoptr i64 %31 to double*
%33 = icmp sgt i32 %6, 0
br i1 %33, label %34, label %115
34: ; preds = %4
%35 = zext i32 %6 to i64
%36 = icmp eq i32 %6, 1
br i1 %36, label %84, label %37
37: ; preds = %34
%38 = getelementptr double, double* %16, i64 %35
%39 = getelementptr double, double* %0, i64 %35
%40 = bitcast double* %39 to i8*
%41 = icmp ult i8* %17, %40
%42 = icmp ugt double* %38, %0
%43 = and i1 %41, %42
br i1 %43, label %84, label %44
44: ; preds = %37
%45 = and i64 %35, 4294967294
%46 = add nsw i64 %45, -2
%47 = lshr exact i64 %46, 1
%48 = add nuw i64 %47, 1
%49 = and i64 %48, 1
%50 = icmp eq i64 %46, 0
br i1 %50, label %72, label %51
51: ; preds = %44
%52 = and i64 %48, -2
br label %53
53: ; preds = %53, %51
%54 = phi i64 [ 0, %51 ], [ %69, %53 ]
%55 = phi i64 [ 0, %51 ], [ %70, %53 ]
%56 = getelementptr inbounds double, double* %0, i64 %54
%57 = bitcast double* %56 to <2 x double>*
%58 = load <2 x double>, <2 x double>* %57
%59 = fdiv <2 x double> %58, <double 0x402921FB54442D18, double 0x402921FB54442D18>
%60 = getelementptr inbounds double, double* %16, i64 %54
%61 = bitcast double* %60 to <2 x double>*
store <2 x double> %59, <2 x double>* %61
%62 = or i64 %54, 2
%63 = getelementptr inbounds double, double* %0, i64 %62
%64 = bitcast double* %63 to <2 x double>*
%65 = load <2 x double>, <2 x double>* %64
%66 = fdiv <2 x double> %65, <double 0x402921FB54442D18, double 0x402921FB54442D18>
%67 = getelementptr inbounds double, double* %16, i64 %62
%68 = bitcast double* %67 to <2 x double>*
store <2 x double> %66, <2 x double>* %68
%69 = add nuw i64 %54, 4
%70 = add nuw i64 %55, 2
%71 = icmp eq i64 %70, %52
br i1 %71, label %72, label %53
72: ; preds = %53, %44
%73 = phi i64 [ 0, %44 ], [ %69, %53 ]
%74 = icmp eq i64 %49, 0
br i1 %74, label %82, label %75
75: ; preds = %72
%76 = getelementptr inbounds double, double* %0, i64 %73
%77 = bitcast double* %76 to <2 x double>*
%78 = load <2 x double>, <2 x double>* %77
%79 = fdiv <2 x double> %78, <double 0x402921FB54442D18, double 0x402921FB54442D18>
%80 = getelementptr inbounds double, double* %16, i64 %73
%81 = bitcast double* %80 to <2 x double>*
store <2 x double> %79, <2 x double>* %81
br label %82
82: ; preds = %72, %75
%83 = icmp eq i64 %45, %35
br i1 %83, label %112, label %84
84: ; preds = %37, %34, %82
%85 = phi i64 [ 0, %37 ], [ 0, %34 ], [ %45, %82 ]
%86 = xor i64 %85, -1
%87 = and i64 %35, 1
%88 = icmp eq i64 %87, 0
br i1 %88, label %95, label %89
89: ; preds = %84
%90 = getelementptr inbounds double, double* %0, i64 %85
%91 = load double, double* %90
%92 = fdiv double %91, 0x402921FB54442D18
%93 = getelementptr inbounds double, double* %16, i64 %85
store double %92, double* %93
%94 = or i64 %85, 1
br label %95
95: ; preds = %89, %84
%96 = phi i64 [ %85, %84 ], [ %94, %89 ]
%97 = sub nsw i64 0, %35
%98 = icmp eq i64 %86, %97
br i1 %98, label %112, label %99
99: ; preds = %95, %99
%100 = phi i64 [ %110, %99 ], [ %96, %95 ]
%101 = getelementptr inbounds double, double* %0, i64 %100
%102 = load double, double* %101
%103 = fdiv double %102, 0x402921FB54442D18
%104 = getelementptr inbounds double, double* %16, i64 %100
store double %103, double* %104
%105 = add nuw nsw i64 %100, 1
%106 = getelementptr inbounds double, double* %0, i64 %105
%107 = load double, double* %106
%108 = fdiv double %107, 0x402921FB54442D18
%109 = getelementptr inbounds double, double* %16, i64 %105
store double %108, double* %109
%110 = add nuw nsw i64 %100, 2
%111 = icmp eq i64 %110, %35
br i1 %111, label %112, label %99
112: ; preds = %95, %99, %82
%113 = tail call i32 (double*, double*, ...) bitcast (i32 (...)* @Derivative_LogGrid to i32 (double*, double*, ...)*)(double* %16, double* %20)
%114 = tail call i32 (double*, double*, ...) bitcast (i32 (...)* @Derivative_LogGrid to i32 (double*, double*, ...)*)(double* %20, double* %23)
br i1 %33, label %120, label %118
115: ; preds = %4
%116 = tail call i32 (double*, double*, ...) bitcast (i32 (...)* @Derivative_LogGrid to i32 (double*, double*, ...)*)(double* %16, double* %20)
%117 = tail call i32 (double*, double*, ...) bitcast (i32 (...)* @Derivative_LogGrid to i32 (double*, double*, ...)*)(double* %20, double* %23)
br label %118
118: ; preds = %115, %112
%119 = tail call i32 (double*, double*, ...) bitcast (i32 (...)* @Derivative_LogGrid to i32 (double*, double*, ...)*)(double* %29, double* %32)
br label %415
120: ; preds = %112
%121 = zext i32 %6 to i64
br label %122
122: ; preds = %120, %231
%123 = phi i64 [ 0, %120 ], [ %234, %231 ]
%124 = getelementptr inbounds double, double* %0, i64 %123
%125 = load double, double* %124
%126 = fdiv double %125, 0x402921FB54442D18
%127 = fcmp ogt double %126, 1.200000e-18
br i1 %127, label %128, label %231
128: ; preds = %122
%129 = getelementptr inbounds double, double* %20, i64 %123
%130 = load double, double* %129
%131 = fmul double %130, %130
%132 = tail call double @pow(double %126, double 0xBFD5555555555555)
%133 = fmul double %132, -2.533000e-01
%134 = tail call double @exp(double %133)
%135 = tail call double @pow(double %126, double 0xBFD5555555555555)
%136 = tail call double @llvm.fmuladd.f64(double %135, double 3.490000e-01, double 1.000000e+00)
%137 = fmul double %126, %126
%138 = fmul double %126, %137
%139 = insertelement <2 x double> poison, double %138, i64 0
%140 = insertelement <2 x double> %139, double %136, i64 1
%141 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %140
%142 = extractelement <2 x double> %141, i64 1
%143 = fmul double %142, %142
%144 = tail call double @pow(double %126, double 0xBFF5555555555555)
%145 = fmul double %144, %143
%146 = fmul double %145, 3.490000e-01
%147 = fdiv double %146, 3.000000e+00
%148 = fmul double %142, 2.000000e+00
%149 = fmul double %148, %147
%150 = tail call double @pow(double %126, double 0xBFF5555555555555)
%151 = tail call double @pow(double %126, double 0xC002AAAAAAAAAAAB)
%152 = fmul double %143, 0xBFF5555555555555
%153 = fmul double %151, %152
%154 = tail call double @llvm.fmuladd.f64(double %149, double %150, double %153)
%155 = fmul double %154, 0x3FBDC8057619F0FB
%156 = tail call double @pow(double %126, double 0xBFFAAAAAAAAAAAAB)
%157 = fmul double %142, %156
%158 = fmul double %134, %157
%159 = tail call double @pow(double %126, double 0xBFFAAAAAAAAAAAAB)
%160 = fmul double %159, %147
%161 = tail call double @pow(double %126, double 0xC005555555555555)
%162 = fmul double %142, 0xBFFAAAAAAAAAAAAB
%163 = fmul double %162, %161
%164 = fmul double %134, %163
%165 = tail call double @llvm.fmuladd.f64(double %160, double %134, double %164)
%166 = fmul double %142, 0x3FB59D6C455BE30F
%167 = extractelement <2 x double> %141, i64 0
%168 = fmul double %167, %166
%169 = tail call double @llvm.fmuladd.f64(double %168, double %134, double %165)
%170 = tail call double @pow(double %126, double 0xBFFAAAAAAAAAAAAB)
%171 = fmul double %170, %155
%172 = fmul double %167, 0x3FC59D6C455BE30F
%173 = tail call double @pow(double %126, double 0xC005555555555555)
%174 = fmul double %173, 0xC00AAAAAAAAAAAAB
%175 = fmul double %134, %174
%176 = tail call double @llvm.fmuladd.f64(double %172, double %134, double %175)
%177 = fmul double %147, %176
%178 = tail call double @llvm.fmuladd.f64(double %171, double %134, double %177)
%179 = tail call double @pow(double %126, double 0xC00D555555555555)
%180 = fmul double %179, 0x4011C71C71C71C72
%181 = fmul double %126, %138
%182 = fdiv double 1.000000e+00, %181
%183 = fmul double %182, 0xBFD937A8FB95DE3C
%184 = fmul double %183, %134
%185 = tail call double @llvm.fmuladd.f64(double %180, double %134, double %184)
%186 = tail call double @pow(double %126, double 0xC011555555555555)
%187 = fmul double %186, 0x3F7D334915BF08D4
%188 = tail call double @llvm.fmuladd.f64(double %187, double %134, double %185)
%189 = tail call double @llvm.fmuladd.f64(double %142, double %188, double %178)
%190 = tail call double @llvm.fmuladd.f64(double %147, double %126, double %142)
%191 = tail call double @pow(double %126, double 0x3FFAAAAAAAAAAAAB)
%192 = fmul double %158, 0x4005555555555555
%193 = tail call double @llvm.fmuladd.f64(double %169, double %126, double %192)
%194 = fmul double %191, 0xBF9316326966B61B
%195 = fmul double %193, %194
%196 = tail call double @llvm.fmuladd.f64(double %190, double -4.918000e-02, double %195)
%197 = fmul double %126, %189
%198 = fmul double %169, 3.000000e+00
%199 = fmul double %131, %198
%200 = tail call double @llvm.fmuladd.f64(double %197, double %131, double %199)
%201 = tail call double @llvm.fmuladd.f64(double %200, double 0x3F5A971A8E4BB2B2, double %196)
%202 = fmul double %189, 3.000000e+00
%203 = fmul double %126, %202
%204 = fmul double %169, 5.000000e+00
%205 = fmul double %131, %204
%206 = tail call double @llvm.fmuladd.f64(double %203, double %131, double %205)
%207 = tail call double @llvm.fmuladd.f64(double %206, double 0x3F17A2C245989ED7, double %201)
%208 = getelementptr inbounds double, double* %26, i64 %123
store double %207, double* %208
%209 = fmul double %169, 2.000000e+00
%210 = fmul double %158, 4.000000e+00
%211 = tail call double @llvm.fmuladd.f64(double %209, double %126, double %210)
%212 = fmul double %169, 6.000000e+00
%213 = tail call double @llvm.fmuladd.f64(double %212, double %126, double %210)
%214 = fmul double %213, 0x3F17A2C245989ED7
%215 = tail call double @llvm.fmuladd.f64(double %211, double 0x3F5A971A8E4BB2B2, double %214)
%216 = getelementptr inbounds double, double* %29, i64 %123
store double %215, double* %216
%217 = fmul double %142, -4.918000e-02
%218 = tail call double @pow(double %126, double 0x4005555555555555)
%219 = fmul double %158, 0xBF9316326966B61B
%220 = fmul double %219, %218
%221 = tail call double @llvm.fmuladd.f64(double %217, double %126, double %220)
%222 = fmul double %126, %169
%223 = fmul double %158, 2.000000e+00
%224 = fmul double %131, %223
%225 = tail call double @llvm.fmuladd.f64(double %222, double %131, double %224)
%226 = tail call double @llvm.fmuladd.f64(double %225, double 0x3F5A971A8E4BB2B2, double %221)
%227 = fmul double %126, %198
%228 = tail call double @llvm.fmuladd.f64(double %227, double %131, double %224)
%229 = tail call double @llvm.fmuladd.f64(double %228, double 0x3F17A2C245989ED7, double %226)
%230 = fdiv double %229, %126
br label %231
231: ; preds = %122, %128
%232 = phi double [ %230, %128 ], [ 0.000000e+00, %122 ]
%233 = getelementptr inbounds double, double* %12, i64 %123
store double %232, double* %233
%234 = add nuw nsw i64 %123, 1
%235 = icmp eq i64 %234, %121
br i1 %235, label %236, label %122
236: ; preds = %231
%237 = tail call i32 (double*, double*, ...) bitcast (i32 (...)* @Derivative_LogGrid to i32 (double*, double*, ...)*)(double* %29, double* %32)
br i1 %33, label %238, label %415
238: ; preds = %236
%239 = zext i32 %6 to i64
br label %355
240: ; preds = %379
br i1 %33, label %241, label %415
241: ; preds = %240
%242 = zext i32 %6 to i64
%243 = icmp ult i32 %6, 4
br i1 %243, label %334, label %244
244: ; preds = %241
%245 = getelementptr double, double* %16, i64 %35
%246 = bitcast double* %245 to i8*
%247 = getelementptr double, double* %0, i64 %35
%248 = bitcast double* %247 to i8*
%249 = getelementptr double, double* %12, i64 %35
%250 = bitcast double* %249 to i8*
%251 = icmp ult i8* %17, %248
%252 = icmp ugt double* %245, %0
%253 = and i1 %251, %252
%254 = icmp ult i8* %17, %250
%255 = icmp ult i8* %13, %246
%256 = and i1 %254, %255
%257 = or i1 %253, %256
br i1 %257, label %334, label %258
258: ; preds = %244
%259 = and i64 %35, 4294967292
%260 = add nsw i64 %259, -4
%261 = lshr exact i64 %260, 2
%262 = add nuw nsw i64 %261, 1
%263 = and i64 %262, 1
%264 = icmp eq i64 %260, 0
br i1 %264, label %310, label %265
265: ; preds = %258
%266 = and i64 %262, 9223372036854775806
br label %267
267: ; preds = %267, %265
%268 = phi i64 [ 0, %265 ], [ %307, %267 ]
%269 = phi i64 [ 0, %265 ], [ %308, %267 ]
%270 = getelementptr inbounds double, double* %0, i64 %268
%271 = bitcast double* %270 to <2 x double>*
%272 = load <2 x double>, <2 x double>* %271
%273 = getelementptr inbounds double, double* %270, i64 2
%274 = bitcast double* %273 to <2 x double>*
%275 = load <2 x double>, <2 x double>* %274
%276 = getelementptr inbounds double, double* %12, i64 %268
%277 = bitcast double* %276 to <2 x double>*
%278 = load <2 x double>, <2 x double>* %277
%279 = getelementptr inbounds double, double* %276, i64 2
%280 = bitcast double* %279 to <2 x double>*
%281 = load <2 x double>, <2 x double>* %280
%282 = fmul <2 x double> %272, %278
%283 = fmul <2 x double> %275, %281
%284 = getelementptr inbounds double, double* %16, i64 %268
%285 = bitcast double* %284 to <2 x double>*
store <2 x double> %282, <2 x double>* %285
%286 = getelementptr inbounds double, double* %284, i64 2
%287 = bitcast double* %286 to <2 x double>*
store <2 x double> %283, <2 x double>* %287
%288 = or i64 %268, 4
%289 = getelementptr inbounds double, double* %0, i64 %288
%290 = bitcast double* %289 to <2 x double>*
%291 = load <2 x double>, <2 x double>* %290
%292 = getelementptr inbounds double, double* %289, i64 2
%293 = bitcast double* %292 to <2 x double>*
%294 = load <2 x double>, <2 x double>* %293
%295 = getelementptr inbounds double, double* %12, i64 %288
%296 = bitcast double* %295 to <2 x double>*
%297 = load <2 x double>, <2 x double>* %296
%298 = getelementptr inbounds double, double* %295, i64 2
%299 = bitcast double* %298 to <2 x double>*
%300 = load <2 x double>, <2 x double>* %299
%301 = fmul <2 x double> %291, %297
%302 = fmul <2 x double> %294, %300
%303 = getelementptr inbounds double, double* %16, i64 %288
%304 = bitcast double* %303 to <2 x double>*
store <2 x double> %301, <2 x double>* %304
%305 = getelementptr inbounds double, double* %303, i64 2
%306 = bitcast double* %305 to <2 x double>*
store <2 x double> %302, <2 x double>* %306
%307 = add nuw i64 %268, 8
%308 = add i64 %269, 2
%309 = icmp eq i64 %308, %266
br i1 %309, label %310, label %267
310: ; preds = %267, %258
%311 = phi i64 [ 0, %258 ], [ %307, %267 ]
%312 = icmp eq i64 %263, 0
br i1 %312, label %332, label %313
313: ; preds = %310
%314 = getelementptr inbounds double, double* %0, i64 %311
%315 = bitcast double* %314 to <2 x double>*
%316 = load <2 x double>, <2 x double>* %315
%317 = getelementptr inbounds double, double* %314, i64 2
%318 = bitcast double* %317 to <2 x double>*
%319 = load <2 x double>, <2 x double>* %318
%320 = getelementptr inbounds double, double* %12, i64 %311
%321 = bitcast double* %320 to <2 x double>*
%322 = load <2 x double>, <2 x double>* %321
%323 = getelementptr inbounds double, double* %320, i64 2
%324 = bitcast double* %323 to <2 x double>*
%325 = load <2 x double>, <2 x double>* %324
%326 = fmul <2 x double> %316, %322
%327 = fmul <2 x double> %319, %325
%328 = getelementptr inbounds double, double* %16, i64 %311
%329 = bitcast double* %328 to <2 x double>*
store <2 x double> %326, <2 x double>* %329
%330 = getelementptr inbounds double, double* %328, i64 2
%331 = bitcast double* %330 to <2 x double>*
store <2 x double> %327, <2 x double>* %331
br label %332
332: ; preds = %310, %313
%333 = icmp eq i64 %259, %35
br i1 %333, label %418, label %334
334: ; preds = %244, %241, %332
%335 = phi i64 [ 0, %244 ], [ 0, %241 ], [ %259, %332 ]
%336 = xor i64 %335, -1
%337 = add nsw i64 %336, %35
%338 = and i64 %35, 3
%339 = icmp eq i64 %338, 0
br i1 %339, label %352, label %340
340: ; preds = %334, %340
%341 = phi i64 [ %349, %340 ], [ %335, %334 ]
%342 = phi i64 [ %350, %340 ], [ 0, %334 ]
%343 = getelementptr inbounds double, double* %0, i64 %341
%344 = load double, double* %343
%345 = getelementptr inbounds double, double* %12, i64 %341
%346 = load double, double* %345
%347 = fmul double %344, %346
%348 = getelementptr inbounds double, double* %16, i64 %341
store double %347, double* %348
%349 = add nuw nsw i64 %341, 1
%350 = add i64 %342, 1
%351 = icmp eq i64 %350, %338
br i1 %351, label %352, label %340
352: ; preds = %340, %334
%353 = phi i64 [ %335, %334 ], [ %349, %340 ]
%354 = icmp ult i64 %337, 3
br i1 %354, label %418, label %384
355: ; preds = %238, %379
%356 = phi i64 [ 0, %238 ], [ %382, %379 ]
%357 = getelementptr inbounds double, double* %0, i64 %356
%358 = load double, double* %357
%359 = fdiv double %358, 0x402921FB54442D18
%360 = fcmp ogt double %359, 1.200000e-18
br i1 %360, label %361, label %379
361: ; preds = %355
%362 = getelementptr inbounds double, double* %23, i64 %356
%363 = load double, double* %362
%364 = getelementptr inbounds double, double* %9, i64 %356
%365 = load double, double* %364
%366 = fdiv double 2.000000e+00, %365
%367 = getelementptr inbounds double, double* %20, i64 %356
%368 = load double, double* %367
%369 = tail call double @llvm.fmuladd.f64(double %366, double %368, double %363)
%370 = getelementptr inbounds double, double* %26, i64 %356
%371 = load double, double* %370
%372 = getelementptr inbounds double, double* %32, i64 %356
%373 = load double, double* %372
%374 = getelementptr inbounds double, double* %29, i64 %356
%375 = load double, double* %374
%376 = fmul double %369, %375
%377 = tail call double @llvm.fmuladd.f64(double %373, double %368, double %376)
%378 = fsub double %371, %377
br label %379
379: ; preds = %355, %361
%380 = phi double [ %378, %361 ], [ 0.000000e+00, %355 ]
%381 = getelementptr inbounds double, double* %1, i64 %356
store double %380, double* %381
%382 = add nuw nsw i64 %356, 1
%383 = icmp eq i64 %382, %239
br i1 %383, label %240, label %355
384: ; preds = %352, %384
%385 = phi i64 [ %413, %384 ], [ %353, %352 ]
%386 = getelementptr inbounds double, double* %0, i64 %385
%387 = load double, double* %386
%388 = getelementptr inbounds double, double* %12, i64 %385
%389 = load double, double* %388
%390 = fmul double %387, %389
%391 = getelementptr inbounds double, double* %16, i64 %385
store double %390, double* %391
%392 = add nuw nsw i64 %385, 1
%393 = getelementptr inbounds double, double* %0, i64 %392
%394 = load double, double* %393
%395 = getelementptr inbounds double, double* %12, i64 %392
%396 = load double, double* %395
%397 = fmul double %394, %396
%398 = getelementptr inbounds double, double* %16, i64 %392
store double %397, double* %398
%399 = add nuw nsw i64 %385, 2
%400 = getelementptr inbounds double, double* %0, i64 %399
%401 = load double, double* %400
%402 = getelementptr inbounds double, double* %12, i64 %399
%403 = load double, double* %402
%404 = fmul double %401, %403
%405 = getelementptr inbounds double, double* %16, i64 %399
store double %404, double* %405
%406 = add nuw nsw i64 %385, 3
%407 = getelementptr inbounds double, double* %0, i64 %406
%408 = load double, double* %407
%409 = getelementptr inbounds double, double* %12, i64 %406
%410 = load double, double* %409
%411 = fmul double %408, %410
%412 = getelementptr inbounds double, double* %16, i64 %406
store double %411, double* %412
%413 = add nuw nsw i64 %385, 4
%414 = icmp eq i64 %413, %242
br i1 %414, label %418, label %384
415: ; preds = %240, %118, %236
%416 = tail call i32 (double*, ...) bitcast (i32 (...)* @Integrate_LogGrid to i32 (double*, ...)*)(double* %16)
%417 = sitofp i32 %416 to double
store double %417, double* %2
br label %565
418: ; preds = %352, %384, %332
%419 = tail call i32 (double*, ...) bitcast (i32 (...)* @Integrate_LogGrid to i32 (double*, ...)*)(double* %16)
%420 = sitofp i32 %419 to double
store double %420, double* %2
br i1 %33, label %421, label %565
421: ; preds = %418
%422 = zext i32 %6 to i64
%423 = icmp ult i32 %6, 4
br i1 %423, label %513, label %424
424: ; preds = %421
%425 = getelementptr double, double* %16, i64 %35
%426 = getelementptr double, double* %0, i64 %35
%427 = bitcast double* %426 to i8*
%428 = getelementptr double, double* %1, i64 %35
%429 = bitcast double* %428 to i8*
%430 = icmp ult i8* %17, %427
%431 = icmp ugt double* %425, %0
%432 = and i1 %430, %431
%433 = icmp ult i8* %17, %429
%434 = icmp ugt double* %425, %1
%435 = and i1 %433, %434
%436 = or i1 %432, %435
br i1 %436, label %513, label %437
437: ; preds = %424
%438 = and i64 %35, 4294967292
%439 = add nsw i64 %438, -4
%440 = lshr exact i64 %439, 2
%441 = add nuw nsw i64 %440, 1
%442 = and i64 %441, 1
%443 = icmp eq i64 %439, 0
br i1 %443, label %489, label %444
444: ; preds = %437
%445 = and i64 %441, 9223372036854775806
br label %446
446: ; preds = %446, %444
%447 = phi i64 [ 0, %444 ], [ %486, %446 ]
%448 = phi i64 [ 0, %444 ], [ %487, %446 ]
%449 = getelementptr inbounds double, double* %0, i64 %447
%450 = bitcast double* %449 to <2 x double>*
%451 = load <2 x double>, <2 x double>* %450
%452 = getelementptr inbounds double, double* %449, i64 2
%453 = bitcast double* %452 to <2 x double>*
%454 = load <2 x double>, <2 x double>* %453
%455 = getelementptr inbounds double, double* %1, i64 %447
%456 = bitcast double* %455 to <2 x double>*
%457 = load <2 x double>, <2 x double>* %456
%458 = getelementptr inbounds double, double* %455, i64 2
%459 = bitcast double* %458 to <2 x double>*
%460 = load <2 x double>, <2 x double>* %459
%461 = fmul <2 x double> %451, %457
%462 = fmul <2 x double> %454, %460
%463 = getelementptr inbounds double, double* %16, i64 %447
%464 = bitcast double* %463 to <2 x double>*
store <2 x double> %461, <2 x double>* %464
%465 = getelementptr inbounds double, double* %463, i64 2
%466 = bitcast double* %465 to <2 x double>*
store <2 x double> %462, <2 x double>* %466
%467 = or i64 %447, 4
%468 = getelementptr inbounds double, double* %0, i64 %467
%469 = bitcast double* %468 to <2 x double>*
%470 = load <2 x double>, <2 x double>* %469
%471 = getelementptr inbounds double, double* %468, i64 2
%472 = bitcast double* %471 to <2 x double>*
%473 = load <2 x double>, <2 x double>* %472
%474 = getelementptr inbounds double, double* %1, i64 %467
%475 = bitcast double* %474 to <2 x double>*
%476 = load <2 x double>, <2 x double>* %475
%477 = getelementptr inbounds double, double* %474, i64 2
%478 = bitcast double* %477 to <2 x double>*
%479 = load <2 x double>, <2 x double>* %478
%480 = fmul <2 x double> %470, %476
%481 = fmul <2 x double> %473, %479
%482 = getelementptr inbounds double, double* %16, i64 %467
%483 = bitcast double* %482 to <2 x double>*
store <2 x double> %480, <2 x double>* %483
%484 = getelementptr inbounds double, double* %482, i64 2
%485 = bitcast double* %484 to <2 x double>*
store <2 x double> %481, <2 x double>* %485
%486 = add nuw i64 %447, 8
%487 = add i64 %448, 2
%488 = icmp eq i64 %487, %445
br i1 %488, label %489, label %446
489: ; preds = %446, %437
%490 = phi i64 [ 0, %437 ], [ %486, %446 ]
%491 = icmp eq i64 %442, 0
br i1 %491, label %511, label %492
492: ; preds = %489
%493 = getelementptr inbounds double, double* %0, i64 %490
%494 = bitcast double* %493 to <2 x double>*
%495 = load <2 x double>, <2 x double>* %494
%496 = getelementptr inbounds double, double* %493, i64 2
%497 = bitcast double* %496 to <2 x double>*
%498 = load <2 x double>, <2 x double>* %497
%499 = getelementptr inbounds double, double* %1, i64 %490
%500 = bitcast double* %499 to <2 x double>*
%501 = load <2 x double>, <2 x double>* %500
%502 = getelementptr inbounds double, double* %499, i64 2
%503 = bitcast double* %502 to <2 x double>*
%504 = load <2 x double>, <2 x double>* %503
%505 = fmul <2 x double> %495, %501
%506 = fmul <2 x double> %498, %504
%507 = getelementptr inbounds double, double* %16, i64 %490
%508 = bitcast double* %507 to <2 x double>*
store <2 x double> %505, <2 x double>* %508
%509 = getelementptr inbounds double, double* %507, i64 2
%510 = bitcast double* %509 to <2 x double>*
store <2 x double> %506, <2 x double>* %510
br label %511
511: ; preds = %489, %492
%512 = icmp eq i64 %438, %35
br i1 %512, label %565, label %513
513: ; preds = %424, %421, %511
%514 = phi i64 [ 0, %424 ], [ 0, %421 ], [ %438, %511 ]
%515 = xor i64 %514, -1
%516 = add nsw i64 %515, %35
%517 = and i64 %35, 3
%518 = icmp eq i64 %517, 0
br i1 %518, label %531, label %519
519: ; preds = %513, %519
%520 = phi i64 [ %528, %519 ], [ %514, %513 ]
%521 = phi i64 [ %529, %519 ], [ 0, %513 ]
%522 = getelementptr inbounds double, double* %0, i64 %520
%523 = load double, double* %522
%524 = getelementptr inbounds double, double* %1, i64 %520
%525 = load double, double* %524
%526 = fmul double %523, %525
%527 = getelementptr inbounds double, double* %16, i64 %520
store double %526, double* %527
%528 = add nuw nsw i64 %520, 1
%529 = add i64 %521, 1
%530 = icmp eq i64 %529, %517
br i1 %530, label %531, label %519
531: ; preds = %519, %513
%532 = phi i64 [ %514, %513 ], [ %528, %519 ]
%533 = icmp ult i64 %516, 3
br i1 %533, label %565, label %534
534: ; preds = %531, %534
%535 = phi i64 [ %563, %534 ], [ %532, %531 ]
%536 = getelementptr inbounds double, double* %0, i64 %535
%537 = load double, double* %536
%538 = getelementptr inbounds double, double* %1, i64 %535
%539 = load double, double* %538
%540 = fmul double %537, %539
%541 = getelementptr inbounds double, double* %16, i64 %535
store double %540, double* %541
%542 = add nuw nsw i64 %535, 1
%543 = getelementptr inbounds double, double* %0, i64 %542
%544 = load double, double* %543
%545 = getelementptr inbounds double, double* %1, i64 %542
%546 = load double, double* %545
%547 = fmul double %544, %546
%548 = getelementptr inbounds double, double* %16, i64 %542
store double %547, double* %548
%549 = add nuw nsw i64 %535, 2
%550 = getelementptr inbounds double, double* %0, i64 %549
%551 = load double, double* %550
%552 = getelementptr inbounds double, double* %1, i64 %549
%553 = load double, double* %552
%554 = fmul double %551, %553
%555 = getelementptr inbounds double, double* %16, i64 %549
store double %554, double* %555
%556 = add nuw nsw i64 %535, 3
%557 = getelementptr inbounds double, double* %0, i64 %556
%558 = load double, double* %557
%559 = getelementptr inbounds double, double* %1, i64 %556
%560 = load double, double* %559
%561 = fmul double %558, %560
%562 = getelementptr inbounds double, double* %16, i64 %556
store double %561, double* %562
%563 = add nuw nsw i64 %535, 4
%564 = icmp eq i64 %563, %422
br i1 %564, label %565, label %534
565: ; preds = %531, %534, %511, %415, %418
%566 = tail call i32 (double*, ...) bitcast (i32 (...)* @Integrate_LogGrid to i32 (double*, ...)*)(double* %16)
%567 = sitofp i32 %566 to double
store double %567, double* %3
%568 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %12)
%569 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %16)
%570 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %20)
%571 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %23)
%572 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %26)
%573 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %29)
%574 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %32)
ret void
}