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, dF1, ddF1;
  double G1, dG1, ddG1, ddG1A, ddG1B, ddG1C;
  double T1, T2, T3, T4;
  double tw;
  double n;
  double agr, agr2, lap;
  double rho_onethird, rho_twothirds, rho_fourthirds, rho_fivethirds,
      rho_seventhirds, rho_eightthirds, rho3;
  double rho_eleventhirds, rho4, rho_thirteenthirds, e_c_rho, rho_fivethirds2;
  double ce, cp;
  double norm;
  int Ngrid;
  double *rgrid;
  double *ce_density;
  double *tmp;
  double *drho;
  double *ddrho;
  double *dadrho;
  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();
  dadrho = 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)
    tmp[i] = fabs(drho[i]);
  Derivative_LogGrid(tmp, dadrho);
  for (i = 0; i < Ngrid; ++i) {
    n = rho[i] / (4.0 * pi);
    if (n > 1.2e-18) {
      agr = fabs(drho[i]);
      agr2 = agr * agr;
      lap = ddrho[i] + (2.0 / rgrid[i]) * drho[i];
      rho_onethird = pow(n, -1.0 / 3.0);
      rho_twothirds = pow(n, -2.0 / 3.0);
      rho_fourthirds = pow(n, -4.0 / 3.0);
      rho_fivethirds = pow(n, -5.0 / 3.0);
      rho_seventhirds = pow(n, -7.0 / 3.0);
      rho_eightthirds = pow(n, -8.0 / 3.0);
      rho3 = 1 / (n * n * n);
      rho_eleventhirds = pow(n, -11.0 / 3.0);
      rho4 = 1 / (n * n * n * n);
      rho_thirteenthirds = pow(n, -13.0 / 3.0);
      rho_fivethirds2 = pow(n, 5.0 / 3.0);
      e_c_rho = exp(-1.0 * c * rho_onethird);
      F1 = 1.0 / (1.0 + d * rho_onethird);
      F12 = F1 * F1;
      dF1 = F12 * rho_fourthirds * d / 3.0;
      ddF1 = (d / 3.0) * (2.0 * F1 * dF1 * rho_fourthirds -
                          (4.0 / 3.0) * F12 * rho_seventhirds);
      G1 = F1 * rho_fivethirds * e_c_rho;
      dG1 = dF1 * rho_fivethirds * e_c_rho -
            (5.0 / 3.0) * F1 * rho_eightthirds * e_c_rho +
            (c / 3.0) * F1 * rho3 * e_c_rho;
      ddG1A = ddF1 * rho_fivethirds * e_c_rho;
      ddG1B = dF1 * ((2.0 * c / 3.0) * rho3 * e_c_rho -
                     (10.0 / 3.0) * rho_eightthirds * e_c_rho);
      ddG1C = F1 * ((40.0 / 9.0) * rho_eleventhirds * e_c_rho -
                    (14.0 * c / 9.0) * rho4 * e_c_rho +
                    (c * c / 9.0) * rho_thirteenthirds * e_c_rho);
      ddG1 = ddG1A + ddG1B + ddG1C;
      T1 = -1.0 * a * (dF1 * n + F1);
      T2 = -1.0 * a * b * Cf * rho_fivethirds2 * (dG1 * n + (8.0 / 3.0) * G1);
      T3 =
          -1.0 * (a * b / 4.0) *
          (ddG1 * n * agr2 + dG1 * (3.0 * agr2 + 2 * n * lap) + 4.0 * G1 * lap);
      T4 = -1.0 * (a * b / 72.0) *
           (3.0 * ddG1 * n * agr2 + dG1 * (5.0 * agr2 + 6.0 * n * lap) +
            4.0 * G1 * lap);
      cp = T1 + T2 + T3 + T4;
      tw = agr2 / (8.0 * n) - lap / 8.0;
      ce = (-1.0 * a / (1 + d * rho_onethird)) *
           (n + b * rho_twothirds *
                    (Cf * rho_fivethirds2 - 2.0 * tw + (1.0 / 9.0) * tw +
                     (1.0 / 18.0) * lap) *
                    e_c_rho);
      ce_density[i] = ce / n;
      Vc[i] = cp;
    } else {
      ce_density[i] = 0.0;
      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(dadrho);
}


x86 assembly (clang, -O0):
<R_LYP_Correlation>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1b0,%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,-0x174(%rbp)
mov    $0x0,%al
call   1050 <r_LogGrid@plt>
cltq
mov    %rax,-0x180(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x188(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x190(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x198(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x1a0(%rbp)
mov    $0x0,%al
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x1a8(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x174(%rbp),%eax
jge    12ff <R_LYP_Correlation+0x16f>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xd68(%rip),%xmm1
mulsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x190(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    12b4 <R_LYP_Correlation+0x124>
mov    -0x190(%rbp),%rdi
mov    -0x198(%rbp),%rsi
mov    $0x0,%al
call   1030 <Derivative_LogGrid@plt>
mov    -0x198(%rbp),%rdi
mov    -0x1a0(%rbp),%rsi
mov    $0x0,%al
call   1030 <Derivative_LogGrid@plt>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x174(%rbp),%eax
jge    1378 <R_LYP_Correlation+0x1e8>
mov    -0x198(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movaps 0xdba(%rip),%xmm1
pand   %xmm1,%xmm0
mov    -0x190(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1330 <R_LYP_Correlation+0x1a0>
mov    -0x190(%rbp),%rdi
mov    -0x1a8(%rbp),%rsi
mov    $0x0,%al
call   1030 <Derivative_LogGrid@plt>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x174(%rbp),%eax
jge    1c2b <R_LYP_Correlation+0xa9b>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xc88(%rip),%xmm1
mulsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xc77(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1bf5 <R_LYP_Correlation+0xa65>
mov    -0x198(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movaps 0xd16(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x1a0(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x180(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  0xc27(%rip),%xmm0
divsd  (%rax,%rcx,8),%xmm0
mov    -0x198(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xc92(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xc6d(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xc48(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xc23(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xbfe(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xbd9(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0xe0(%rbp),%xmm1
ff
movsd  0xb14(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xb88(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0xe0(%rbp),%xmm1
ff
movsd  0xac3(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xb2f(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xb02(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0xa9d(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
mulsd  -0x100(%rbp),%xmm0
ff
call   1070 <exp@plt>
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x50(%rbp),%xmm1
movsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm0,%xmm1
movsd  0xa42(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xa36(%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
mulsd  -0x110(%rbp),%xmm0
ff
mulsd  -0x50(%rbp),%xmm0
movsd  0x9cc(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  0x9b6(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xa02(%rip),%xmm1
mulsd  -0x68(%rbp),%xmm1
mulsd  -0x78(%rbp),%xmm1
movsd  -0x110(%rbp),%xmm3
ff
movsd  0xa48(%rip),%xmm2
mulsd  -0x70(%rbp),%xmm2
mulsd  -0x120(%rbp),%xmm2
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x68(%rbp),%xmm0
mulsd  -0x118(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0x118(%rbp),%xmm1
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  0x9d1(%rip),%xmm0
mulsd  -0x68(%rbp),%xmm0
mulsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x150(%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  0x8e0(%rip),%xmm2
divsd  %xmm2,%xmm0
mulsd  -0x68(%rbp),%xmm0
mulsd  -0x130(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0x118(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x8e5(%rip),%xmm1
mulsd  -0x48(%rbp),%xmm1
movsd  0x880(%rip),%xmm2
divsd  %xmm2,%xmm1
mulsd  -0x130(%rbp),%xmm1
ff
movsd  -0x150(%rbp),%xmm3
ff
movsd  0x90c(%rip),%xmm2
mulsd  -0x128(%rbp),%xmm2
ff
mulsd  -0x150(%rbp),%xmm2
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  0x8bc(%rip),%xmm2
mulsd  -0x138(%rbp),%xmm2
ff
movsd  -0x150(%rbp),%xmm3
ff
movsd  0x89c(%rip),%xmm1
mulsd  -0x48(%rbp),%xmm1
movsd  0x887(%rip),%xmm4
divsd  %xmm4,%xmm1
mulsd  -0x140(%rbp),%xmm1
ff
mulsd  -0x150(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
movsd  0x842(%rip),%xmm3
divsd  %xmm3,%xmm1
mulsd  -0x148(%rbp),%xmm1
ff
movsd  -0x150(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x7c2(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
movsd  -0xe0(%rbp),%xmm3
ff
movsd  -0x68(%rbp),%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x78f(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
mulsd  -0x158(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0xe0(%rbp),%xmm3
ff
movsd  0x788(%rip),%xmm2
mulsd  -0x88(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x38(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
movsd  0x702(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0x726(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x98(%rbp),%xmm2
ff
mulsd  -0xe0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm3
ff
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0xf0(%rbp),%xmm4
ff
movsd  0x6ea(%rip),%xmm5
mulsd  -0xe0(%rbp),%xmm5
ff
mulsd  -0xf8(%rbp),%xmm5
ff
movsd  0x67a(%rip),%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  0x68e(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movsd  -0xf8(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x38(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
movsd  0x6a8(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0x67c(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0x610(%rip),%xmm2
mulsd  -0x98(%rbp),%xmm2
ff
mulsd  -0xe0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm3
ff
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0xf0(%rbp),%xmm4
ff
movsd  0x658(%rip),%xmm5
mulsd  -0xe0(%rbp),%xmm5
ff
mulsd  -0xf8(%rbp),%xmm5
ff
movsd  0x638(%rip),%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  0x5dc(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movsd  -0xf8(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  0x5b8(%rip),%xmm1
mulsd  -0xe0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0x59c(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0x57c(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
movsd  -0x100(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
movsd  0x536(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  -0xe0(%rbp),%xmm2
ff
movsd  -0x40(%rbp),%xmm1
mulsd  -0x108(%rbp),%xmm1
ff
movsd  -0x58(%rbp),%xmm3
movsd  -0x158(%rbp),%xmm5
ff
movsd  0x524(%rip),%xmm4
mulsd  -0xd8(%rbp),%xmm4
ff
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
movsd  -0xd8(%rbp),%xmm4
ff
movsd  0x4e5(%rip),%xmm5
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
movsd  -0xf8(%rbp),%xmm3
ff
movsd  0x4c5(%rip),%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movsd  -0x150(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
divsd  -0xe0(%rbp),%xmm0
ff
mov    -0x188(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1c18 <R_LYP_Correlation+0xa88>
mov    -0x188(%rbp),%rax
movslq -0x24(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1c1d <R_LYP_Correlation+0xa8d>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1394 <R_LYP_Correlation+0x204>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x174(%rbp),%eax
jge    1c7c <R_LYP_Correlation+0xaec>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x188(%rbp),%rax
movslq -0x24(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x190(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1c32 <R_LYP_Correlation+0xaa2>
mov    -0x190(%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    -0x174(%rbp),%eax
jge    1ce4 <R_LYP_Correlation+0xb54>
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    -0x190(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1c9d <R_LYP_Correlation+0xb0d>
mov    -0x190(%rbp),%rdi
mov    $0x0,%al
call   1060 <Integrate_LogGrid@plt>
cvtsi2sd %eax,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x188(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
mov    -0x190(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
mov    -0x198(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
mov    -0x1a0(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
mov    -0x1a8(%rbp),%rdi
mov    $0x0,%al
call   1090 <dealloc_LogGrid@plt>
add    $0x1b0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<R_LYP_Correlation>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x108,%rsp
mov    %rcx,0x28(%rsp)
mov    %rdx,0x48(%rsp)
mov    %rsi,0x38(%rsp)
mov    %rdi,%rbp
movsd  0xe45(%rip),%xmm0
call   1040 <atan@plt>
xor    %eax,%eax
call   10b0 <N_LogGrid@plt>
mov    %eax,%r14d
xor    %eax,%eax
call   1050 <r_LogGrid@plt>
mov    %eax,0x10(%rsp)
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
movslq %eax,%r15
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
movslq %eax,%rbx
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
movslq %eax,%r12
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
movslq %eax,%r13
xor    %eax,%eax
call   10a0 <alloc_LogGrid@plt>
cltq
mov    %rax,0x30(%rsp)
test   %r14d,%r14d
mov    %r13,0x40(%rsp)
jle    12bd <R_LYP_Correlation+0x12d>
mov    %r14d,%r13d
cmp    $0x1,%r14d
mov    %r14d,0xc(%rsp)
je     1248 <R_LYP_Correlation+0xb8>
lea    0x0(,%r13,8),%rax
add    %rbp,%rax
cmp    %rax,%rbx
jae    12e1 <R_LYP_Correlation+0x151>
lea    (%rbx,%r13,8),%rax
cmp    %rbp,%rax
jbe    12e1 <R_LYP_Correlation+0x151>
xor    %eax,%eax
mov    0x28(%rsp),%r14
mov    %rax,%rcx
not    %rcx
test   $0x1,%r13b
je     1272 <R_LYP_Correlation+0xe2>
movsd  0x0(%rbp,%rax,8),%xmm0
divsd  0xd9f(%rip),%xmm0
movsd  %xmm0,(%rbx,%rax,8)
or     $0x1,%rax
add    %r13,%rcx
je     1363 <R_LYP_Correlation+0x1d3>
movsd  0xd85(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  0x0(%rbp,%rax,8),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx,%rax,8)
movsd  0x8(%rbp,%rax,8),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rbx,%rax,8)
add    $0x2,%rax
cmp    %rax,%r13
jne    1290 <R_LYP_Correlation+0x100>
jmp    1363 <R_LYP_Correlation+0x1d3>
mov    %rbx,%rdi
mov    %r12,%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
mov    %r12,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
mov    0x28(%rsp),%r14
jmp    1450 <R_LYP_Correlation+0x2c0>
mov    %r13d,%eax
and    $0xfffffffe,%eax
lea    -0x2(%rax),%rdx
mov    %rdx,%rcx
shr    %rcx
add    $0x1,%rcx
test   %rdx,%rdx
je     133b <R_LYP_Correlation+0x1ab>
mov    %rcx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %edx,%edx
movapd 0xdf5(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movupd 0x0(%rbp,%rdx,8),%xmm1
divpd  %xmm0,%xmm1
movupd %xmm1,(%rbx,%rdx,8)
movupd 0x10(%rbp,%rdx,8),%xmm1
divpd  %xmm0,%xmm1
movupd %xmm1,0x10(%rbx,%rdx,8)
add    $0x4,%rdx
add    $0xfffffffffffffffe,%rsi
jne    1310 <R_LYP_Correlation+0x180>
jmp    133d <R_LYP_Correlation+0x1ad>
xor    %edx,%edx
test   $0x1,%cl
mov    0x28(%rsp),%r14
je     135a <R_LYP_Correlation+0x1ca>
movupd 0x0(%rbp,%rdx,8),%xmm0
divpd  0xdab(%rip),%xmm0
movupd %xmm0,(%rbx,%rdx,8)
cmp    %r13,%rax
jne    124f <R_LYP_Correlation+0xbf>
mov    %rbx,%rdi
mov    %r12,%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
mov    %r12,%rdi
mov    0x40(%rsp),%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
mov    0xc(%rsp),%eax
test   %eax,%eax
jle    1450 <R_LYP_Correlation+0x2c0>
cmp    $0x4,%eax
jb     13aa <R_LYP_Correlation+0x21a>
lea    (%r12,%r13,8),%rax
cmp    %rax,%rbx
jae    14d6 <R_LYP_Correlation+0x346>
lea    (%rbx,%r13,8),%rax
cmp    %rax,%r12
jae    14d6 <R_LYP_Correlation+0x346>
xor    %eax,%eax
mov    %rax,%rcx
not    %rcx
add    %r13,%rcx
mov    %r13,%rdx
and    $0x3,%rdx
je     13e9 <R_LYP_Correlation+0x259>
movapd 0xd4a(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
movsd  (%r12,%rax,8),%xmm1
andpd  %xmm0,%xmm1
movlpd %xmm1,(%rbx,%rax,8)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    13d0 <R_LYP_Correlation+0x240>
cmp    $0x3,%rcx
jb     1592 <R_LYP_Correlation+0x402>
movapd 0xd15(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movsd  (%r12,%rax,8),%xmm1
andpd  %xmm0,%xmm1
movlpd %xmm1,(%rbx,%rax,8)
movsd  0x8(%r12,%rax,8),%xmm1
andpd  %xmm0,%xmm1
movlpd %xmm1,0x8(%rbx,%rax,8)
movsd  0x10(%r12,%rax,8),%xmm1
andpd  %xmm0,%xmm1
movlpd %xmm1,0x10(%rbx,%rax,8)
movsd  0x18(%r12,%rax,8),%xmm1
andpd  %xmm0,%xmm1
movlpd %xmm1,0x18(%rbx,%rax,8)
add    $0x4,%rax
cmp    %rax,%r13
jne    1400 <R_LYP_Correlation+0x270>
jmp    1592 <R_LYP_Correlation+0x402>
mov    %rbx,%rdi
mov    0x30(%rsp),%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <Integrate_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0x48(%rsp),%rax
movsd  %xmm0,(%rax)
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <Integrate_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%r14)
mov    %r15,%rdi
xor    %eax,%eax
call   1090 <dealloc_LogGrid@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1090 <dealloc_LogGrid@plt>
mov    %r12,%rdi
xor    %eax,%eax
call   1090 <dealloc_LogGrid@plt>
mov    0x40(%rsp),%rdi
xor    %eax,%eax
call   1090 <dealloc_LogGrid@plt>
mov    0x30(%rsp),%rdi
xor    %eax,%eax
add    $0x108,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1090 <dealloc_LogGrid@plt>
mov    %r13d,%eax
and    $0xfffffffc,%eax
lea    -0x4(%rax),%rcx
mov    %rcx,%rdx
shr    $0x2,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     1b76 <R_LYP_Correlation+0x9e6>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
movapd 0xc0b(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nop
movupd (%r12,%rcx,8),%xmm1
movupd 0x10(%r12,%rcx,8),%xmm2
andpd  %xmm0,%xmm1
andpd  %xmm0,%xmm2
movupd %xmm1,(%rbx,%rcx,8)
movupd %xmm2,0x10(%rbx,%rcx,8)
movupd 0x20(%r12,%rcx,8),%xmm1
movupd 0x30(%r12,%rcx,8),%xmm2
andpd  %xmm0,%xmm1
andpd  %xmm0,%xmm2
movupd %xmm1,0x20(%rbx,%rcx,8)
movupd %xmm2,0x30(%rbx,%rcx,8)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%rsi
jne    1510 <R_LYP_Correlation+0x380>
test   $0x1,%dl
je     1589 <R_LYP_Correlation+0x3f9>
movupd (%r12,%rcx,8),%xmm0
movupd 0x10(%r12,%rcx,8),%xmm1
movapd 0xb9a(%rip),%xmm2
andpd  %xmm2,%xmm0
andpd  %xmm2,%xmm1
movupd %xmm0,(%rbx,%rcx,8)
movupd %xmm1,0x10(%rbx,%rcx,8)
cmp    %r13,%rax
jne    13ac <R_LYP_Correlation+0x21c>
mov    %rbx,%rdi
mov    0x30(%rsp),%rsi
xor    %eax,%eax
call   1030 <Derivative_LogGrid@plt>
cmpl   $0x0,0xc(%rsp)
mov    0x38(%rsp),%rax
jle    145f <R_LYP_Correlation+0x2cf>
movslq 0x10(%rsp),%rcx
mov    %rcx,0x68(%rsp)
xor    %r14d,%r14d
movsd  0xa42(%rip),%xmm1
movsd  0xa42(%rip),%xmm2
jmp    15e9 <R_LYP_Correlation+0x459>
movsd  %xmm5,(%r15,%r14,8)
movsd  %xmm0,(%rax,%r14,8)
add    $0x1,%r14
cmp    %r14,%r13
je     1a85 <R_LYP_Correlation+0x8f5>
movsd  0x0(%rbp,%r14,8),%xmm3
divsd  %xmm1,%xmm3
xorpd  %xmm5,%xmm5
ucomisd %xmm2,%xmm3
xorpd  %xmm0,%xmm0
jbe    15d0 <R_LYP_Correlation+0x440>
movsd  (%r12,%r14,8),%xmm1
movsd  0xa08(%rip),%xmm0
mov    0x68(%rsp),%rax
divsd  (%rax,%r14,8),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm1
movapd %xmm1,0xe0(%rsp)
mov    0x40(%rsp),%rax
addsd  (%rax,%r14,8),%xmm0
movapd %xmm0,0xf0(%rsp)
movapd %xmm3,%xmm0
movsd  0x9d4(%rip),%xmm1
movapd %xmm3,0x10(%rsp)
call   1080 <pow@plt>
movapd %xmm0,0x50(%rsp)
movaps 0x10(%rsp),%xmm0
movsd  0x9be(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,0x98(%rsp)
movaps 0x10(%rsp),%xmm0
movsd  0x9ab(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,0x70(%rsp)
movaps 0x10(%rsp),%xmm0
movsd  0x99b(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,0x80(%rsp)
movaps 0x10(%rsp),%xmm0
movsd  0x988(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,0x78(%rsp)
movaps 0x10(%rsp),%xmm0
movsd  0x978(%rip),%xmm1
call   1080 <pow@plt>
movaps %xmm0,0xb0(%rsp)
movapd 0x10(%rsp),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,0xa0(%rsp)
movsd  0x950(%rip),%xmm1
call   1080 <pow@plt>
movapd %xmm0,0xd0(%rsp)
movapd 0x10(%rsp),%xmm0
movapd %xmm0,%xmm2
mulsd  0xa0(%rsp),%xmm2
movsd  0x8d7(%rip),%xmm1
divsd  %xmm2,%xmm1
movsd  %xmm1,0x90(%rsp)
movsd  0x91a(%rip),%xmm1
call   1080 <pow@plt>
movapd %xmm0,0xc0(%rsp)
movaps 0x10(%rsp),%xmm0
movsd  0x907(%rip),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,0x88(%rsp)
movapd 0x50(%rsp),%xmm0
mulsd  0x8f3(%rip),%xmm0
call   1070 <exp@plt>
mov    0x38(%rsp),%rax
movsd  0x8e9(%rip),%xmm2
movapd 0x50(%rsp),%xmm1
mulsd  %xmm2,%xmm1
addsd  0x867(%rip),%xmm1
movapd %xmm1,0x50(%rsp)
movapd 0xa0(%rsp),%xmm3
unpcklpd %xmm1,%xmm3
movapd 0x96c(%rip),%xmm1
divpd  %xmm3,%xmm1
movapd %xmm1,%xmm6
unpckhpd %xmm1,%xmm6
movapd %xmm6,%xmm4
mulsd  %xmm6,%xmm4
movsd  0x70(%rsp),%xmm5
movapd %xmm5,%xmm10
mulsd  %xmm4,%xmm10
mulsd  0x850(%rip),%xmm4
mulsd  0x78(%rsp),%xmm4
mulsd  %xmm2,%xmm10
movsd  0x884(%rip),%xmm12
divsd  %xmm12,%xmm10
movapd %xmm6,%xmm3
addsd  %xmm6,%xmm3
mulsd  %xmm10,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
movsd  0x80(%rsp),%xmm2
movapd %xmm2,%xmm5
mulsd  %xmm10,%xmm5
movapd %xmm6,%xmm4
mulsd  0x80c(%rip),%xmm4
movapd 0xb0(%rsp),%xmm15
mulsd  %xmm15,%xmm4
mulsd  %xmm0,%xmm4
mulsd  %xmm0,%xmm5
addsd  %xmm4,%xmm5
movapd %xmm6,%xmm13
mulsd  0x833(%rip),%xmm13
mulsd  %xmm1,%xmm13
mulsd  %xmm0,%xmm13
addsd  %xmm5,%xmm13
mulsd  0x814(%rip),%xmm3
movapd %xmm1,%xmm9
movsd  %xmm10,%xmm1
movapd 0x10(%rsp),%xmm12
mulsd  %xmm12,%xmm10
addsd  %xmm6,%xmm10
mulsd  %xmm2,%xmm6
mulsd  %xmm2,%xmm3
mulsd  %xmm0,%xmm6
mulsd  0x7f4(%rip),%xmm15
mulsd  %xmm0,%xmm15
movapd 0xd0(%rsp),%xmm2
mulsd  0x7e6(%rip),%xmm2
movsd  0x90(%rsp),%xmm5
mulsd  0x7dd(%rip),%xmm5
mulsd  %xmm0,%xmm5
mulsd  %xmm0,%xmm2
addsd  %xmm5,%xmm2
unpcklpd %xmm2,%xmm15
unpcklpd 0xc0(%rsp),%xmm9
movsd  0x88(%rsp),%xmm14
movapd %xmm14,%xmm8
movapd 0xe0(%rsp),%xmm2
movapd %xmm2,%xmm11
movapd %xmm12,%xmm5
mulsd  0x7c0(%rip),%xmm5
divsd  %xmm5,%xmm2
movapd 0xf0(%rsp),%xmm7
movapd %xmm7,%xmm5
mulsd  0x7af(%rip),%xmm5
addsd  %xmm2,%xmm5
movapd %xmm5,%xmm2
addsd  %xmm5,%xmm2
mulsd  0x7aa(%rip),%xmm14
subsd  %xmm2,%xmm14
movapd %xmm6,%xmm2
mulsd  0x779(%rip),%xmm6
mulsd  0x799(%rip),%xmm5
addsd  %xmm14,%xmm5
movapd %xmm7,%xmm4
mulsd  %xmm7,%xmm6
mulsd  0x78c(%rip),%xmm7
addsd  %xmm5,%xmm7
movsd  0x98(%rsp),%xmm5
mulsd  0x75f(%rip),%xmm5
mulsd  %xmm5,%xmm7
mulsd  %xmm0,%xmm3
mulpd  0x7a6(%rip),%xmm9
mulsd  %xmm0,%xmm7
movapd %xmm7,%xmm5
unpcklpd %xmm0,%xmm0
mulpd  %xmm9,%xmm0
addpd  %xmm15,%xmm0
mulpd  %xmm0,%xmm1
addsd  %xmm1,%xmm3
unpckhpd %xmm1,%xmm1
addsd  %xmm3,%xmm1
mulsd  0x700(%rip),%xmm2
movapd %xmm13,%xmm0
mulsd  %xmm12,%xmm0
addsd  %xmm2,%xmm0
mulsd  0x6e1(%rip),%xmm8
mulsd  %xmm8,%xmm0
movsd  0x6cc(%rip),%xmm3
mulsd  %xmm3,%xmm10
addsd  %xmm10,%xmm0
movapd %xmm1,%xmm2
mulsd  0x686(%rip),%xmm2
unpcklpd %xmm2,%xmm1
movapd %xmm12,%xmm2
unpcklpd %xmm12,%xmm2
mulpd  %xmm2,%xmm1
mulpd  0x734(%rip),%xmm2
unpcklpd %xmm4,%xmm4
mulpd  %xmm2,%xmm4
movsd  0x5f4(%rip),%xmm2
unpcklpd %xmm11,%xmm11
mulpd  %xmm11,%xmm1
mulpd  0x721(%rip),%xmm11
addpd  %xmm4,%xmm11
unpcklpd %xmm13,%xmm13
mulpd  %xmm11,%xmm13
addpd  %xmm1,%xmm13
unpcklpd %xmm6,%xmm6
addpd  %xmm13,%xmm6
mulpd  0x70c(%rip),%xmm6
subsd  %xmm6,%xmm0
unpckhpd %xmm6,%xmm6
subsd  %xmm6,%xmm0
movapd %xmm3,%xmm1
divsd  0x50(%rsp),%xmm1
addsd  %xmm12,%xmm5
mulsd  %xmm1,%xmm5
movsd  0x58d(%rip),%xmm1
divsd  %xmm12,%xmm5
jmp    15d0 <R_LYP_Correlation+0x440>
mov    0xc(%rsp),%eax
test   %eax,%eax
mov    0x28(%rsp),%r14
jle    145f <R_LYP_Correlation+0x2cf>
cmp    $0x4,%eax
jae    1aa2 <R_LYP_Correlation+0x912>
xor    %eax,%eax
jmp    1bc2 <R_LYP_Correlation+0xa32>
lea    (%rbx,%r13,8),%rax
lea    0x0(,%r13,8),%rcx
add    %rbp,%rcx
lea    (%r15,%r13,8),%rdx
cmp    %rcx,%rbx
setb   %sil
cmp    %rbp,%rax
seta   %dil
cmp    %rdx,%rbx
setb   %cl
cmp    %rax,%r15
setb   %dl
xor    %eax,%eax
test   %dil,%sil
jne    1bc2 <R_LYP_Correlation+0xa32>
and    %dl,%cl
jne    1bc2 <R_LYP_Correlation+0xa32>
mov    %r13d,%eax
and    $0xfffffffc,%eax
lea    -0x4(%rax),%rcx
mov    %rcx,%rdx
shr    $0x2,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     1b86 <R_LYP_Correlation+0x9f6>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
nopl   0x0(%rax)
movupd 0x0(%rbp,%rcx,8),%xmm0
movupd 0x10(%rbp,%rcx,8),%xmm1
movupd (%r15,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x10(%r15,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,(%rbx,%rcx,8)
movupd %xmm0,0x10(%rbx,%rcx,8)
movupd 0x20(%rbp,%rcx,8),%xmm0
movupd 0x30(%rbp,%rcx,8),%xmm1
movupd 0x20(%r15,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x30(%r15,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,0x20(%rbx,%rcx,8)
movupd %xmm0,0x30(%rbx,%rcx,8)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%rsi
jne    1b10 <R_LYP_Correlation+0x980>
jmp    1b88 <R_LYP_Correlation+0x9f8>
xor    %ecx,%ecx
test   $0x1,%dl
jne    1561 <R_LYP_Correlation+0x3d1>
jmp    1589 <R_LYP_Correlation+0x3f9>
xor    %ecx,%ecx
test   $0x1,%dl
je     1bb9 <R_LYP_Correlation+0xa29>
movupd 0x0(%rbp,%rcx,8),%xmm0
movupd 0x10(%rbp,%rcx,8),%xmm1
movupd (%r15,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x10(%r15,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,(%rbx,%rcx,8)
movupd %xmm0,0x10(%rbx,%rcx,8)
cmp    %r13,%rax
je     1c63 <R_LYP_Correlation+0xad3>
mov    %rax,%rcx
not    %rcx
add    %r13,%rcx
mov    %r13,%rdx
and    $0x3,%rdx
je     1bfb <R_LYP_Correlation+0xa6b>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  (%r15,%rax,8),%xmm0
movsd  %xmm0,(%rbx,%rax,8)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    1be0 <R_LYP_Correlation+0xa50>
cmp    $0x3,%rcx
jb     1c63 <R_LYP_Correlation+0xad3>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  (%r15,%rax,8),%xmm0
movsd  %xmm0,(%rbx,%rax,8)
movsd  0x8(%rbp,%rax,8),%xmm0
mulsd  0x8(%r15,%rax,8),%xmm0
movsd  %xmm0,0x8(%rbx,%rax,8)
movsd  0x10(%rbp,%rax,8),%xmm0
mulsd  0x10(%r15,%rax,8),%xmm0
movsd  %xmm0,0x10(%rbx,%rax,8)
movsd  0x18(%rbp,%rax,8),%xmm0
mulsd  0x18(%r15,%rax,8),%xmm0
movsd  %xmm0,0x18(%rbx,%rax,8)
add    $0x4,%rax
cmp    %rax,%r13
jne    1c10 <R_LYP_Correlation+0xa80>
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <Integrate_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0x48(%rsp),%rax
movsd  %xmm0,(%rax)
mov    0xc(%rsp),%eax
test   %eax,%eax
mov    0x38(%rsp),%rdi
jle    1479 <R_LYP_Correlation+0x2e9>
cmp    $0x4,%eax
jae    1d34 <R_LYP_Correlation+0xba4>
xor    %eax,%eax
mov    %rax,%rcx
not    %rcx
add    %r13,%rcx
mov    %r13,%rdx
and    $0x3,%rdx
je     1cca <R_LYP_Correlation+0xb3a>
nopl   0x0(%rax,%rax,1)
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  (%rdi,%rax,8),%xmm0
movsd  %xmm0,(%rbx,%rax,8)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    1cb0 <R_LYP_Correlation+0xb20>
cmp    $0x3,%rcx
jb     1479 <R_LYP_Correlation+0x2e9>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  (%rdi,%rax,8),%xmm0
movsd  %xmm0,(%rbx,%rax,8)
movsd  0x8(%rbp,%rax,8),%xmm0
mulsd  0x8(%rdi,%rax,8),%xmm0
movsd  %xmm0,0x8(%rbx,%rax,8)
movsd  0x10(%rbp,%rax,8),%xmm0
mulsd  0x10(%rdi,%rax,8),%xmm0
movsd  %xmm0,0x10(%rbx,%rax,8)
movsd  0x18(%rbp,%rax,8),%xmm0
mulsd  0x18(%rdi,%rax,8),%xmm0
movsd  %xmm0,0x18(%rbx,%rax,8)
add    $0x4,%rax
cmp    %rax,%r13
jne    1ce0 <R_LYP_Correlation+0xb50>
jmp    1479 <R_LYP_Correlation+0x2e9>
lea    (%rbx,%r13,8),%rax
lea    0x0(,%r13,8),%rcx
add    %rbp,%rcx
cmp    %rcx,%rbx
setb   %r8b
cmp    %rbp,%rax
seta   %dl
lea    (%rdi,%r13,8),%rcx
cmp    %rcx,%rbx
setb   %cl
cmp    %rdi,%rax
seta   %sil
xor    %eax,%eax
test   %dl,%r8b
jne    1c99 <R_LYP_Correlation+0xb09>
and    %sil,%cl
jne    1c99 <R_LYP_Correlation+0xb09>
mov    %r13d,%eax
and    $0xfffffffc,%eax
lea    -0x4(%rax),%rcx
mov    %rcx,%rdx
shr    $0x2,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     1e02 <R_LYP_Correlation+0xc72>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
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,(%rbx,%rcx,8)
movupd %xmm0,0x10(%rbx,%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(%rbx,%rcx,8)
movupd %xmm0,0x30(%rbx,%rcx,8)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%rsi
jne    1da0 <R_LYP_Correlation+0xc10>
jmp    1e04 <R_LYP_Correlation+0xc74>
xor    %ecx,%ecx
test   $0x1,%dl
je     1e33 <R_LYP_Correlation+0xca3>
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,(%rbx,%rcx,8)
movupd %xmm0,0x10(%rbx,%rcx,8)
cmp    %r13,%rax
je     1479 <R_LYP_Correlation+0x2e9>
jmp    1c99 <R_LYP_Correlation+0xb09>

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