void kEpsilon_3D_Evaluate(
    int nPoints, int nSpace, double sigma_k, double sigma_e, double c_1,
    double c_2, double c_mu, double c_e, double nu, double *velocity,
    double *gradu, double *gradv, double *gradw, double *k, double *epsilon,
    double *m_k, double *dm_k, double *m_e, double *dm_e, double *phi_k,
    double *dphi_k, double *phi_e, double *dphi_e, double *f_k, double *df_k,
    double *f_e, double *df_e, double *a_k, double *da_k_dk, double *da_k_de,
    double *a_e, double *da_e_dk, double *da_e_de, double *r_k, double *dr_k_dk,
    double *dr_k_de, double *r_e, double *dr_e_dk, double *dr_e_de) {
  int i, I;
  double nu_t, dnu_t_dk, dnu_t_de, PiD4, eval, kval, disp, ddisp_dk, ddisp_de;
  const double div_eps = 1.0e-6;
  for (i = 0; i < nPoints; i++) {
    eval = epsilon[i] >= 0.0 ? epsilon[i] : 0.0;
    kval = k[i] >= 0.0 ? k[i] : 0.0;
    nu_t = c_mu * k[i] * k[i] / (epsilon[i] + div_eps);
    dnu_t_dk = 2.0 * c_mu * k[i] / (epsilon[i] + div_eps);
    dnu_t_de = -c_mu * k[i] * k[i] / (epsilon[i] * epsilon[i] + div_eps);
    if (nu_t < 0.0) {
      nu_t = 0.0;
      dnu_t_dk = 0.0;
      dnu_t_de = 0.0;
    }
    m_k[i] = k[i];
    dm_k[i] = 1.0;
    m_e[i] = epsilon[i];
    dm_e[i] = 1.0;
    for (I = 0; I < nSpace; I++) {
      f_k[i * nSpace + I] = k[i] * velocity[i * nSpace + I];
      df_k[i * nSpace + I] = velocity[i * nSpace + I];
      f_e[i * nSpace + I] = epsilon[i] * velocity[i * nSpace + I];
      df_e[i * nSpace + I] = velocity[i * nSpace + I];
    }
    phi_k[i] = k[i];
    dphi_k[i] = 1.0;
    phi_e[i] = epsilon[i];
    dphi_e[i] = 1.0;
    for (I = 0; I < nSpace; I++) {
      a_k[i * nSpace * nSpace + I * nSpace + I] = nu_t / sigma_k + nu;
      da_k_dk[i * nSpace * nSpace + I * nSpace + I] = dnu_t_dk / sigma_k;
      da_k_de[i * nSpace * nSpace + I * nSpace + I] = dnu_t_de / sigma_k;
      a_e[i * nSpace * nSpace + I * nSpace + I] = nu_t / sigma_e + nu;
      da_e_dk[i * nSpace * nSpace + I * nSpace + I] = dnu_t_dk / sigma_e;
      da_e_de[i * nSpace * nSpace + I * nSpace + I] = dnu_t_de / sigma_e;
    }
    PiD4 = 2.0 * (gradu[i * nSpace + 0] * gradu[i * nSpace + 0] +
                  gradv[i * nSpace + 1] * gradv[i * nSpace + 1] +
                  gradw[i * nSpace + 2] * gradw[i * nSpace + 2]) +
           (gradu[i * nSpace + 1] + gradv[i * nSpace + 0]) *
               (gradu[i * nSpace + 1] + gradv[i * nSpace + 0]) +
           (gradu[i * nSpace + 2] + gradw[i * nSpace + 0]) *
               (gradu[i * nSpace + 2] + gradw[i * nSpace + 0]) +
           (gradv[i * nSpace + 2] + gradw[i * nSpace + 1]) *
               (gradv[i * nSpace + 2] + gradw[i * nSpace + 1]);
    r_k[i] = -nu_t * PiD4 + epsilon[i];
    dr_k_dk[i] = -dnu_t_dk * PiD4;
    dr_k_de[i] = -dnu_t_de * PiD4 + 1.0;
    disp = c_2 * epsilon[i] * epsilon[i] / (k[i] + div_eps);
    ddisp_dk = -c_2 * epsilon[i] * epsilon[i] / (k[i] * k[i] + div_eps);
    ddisp_de = 2.0 * c_2 * epsilon[i] / (k[i] + div_eps);
    if (disp < 0.0) {
      disp = 0.0;
      ddisp_dk = 0.0;
      ddisp_de = 0.0;
    }
    r_e[i] = -c_1 * k[i] * PiD4 + disp;
    dr_e_dk[i] = -c_1 * PiD4 + ddisp_dk;
    dr_e_de[i] = ddisp_de;
  }
}


x86 assembly (clang, -O0):
<kEpsilon_3D_Evaluate>:
push   %rbp
mov    %rsp,%rbp
sub    $0x48,%rsp
mov    0xd8(%rbp),%rax
mov    0xd0(%rbp),%rax
mov    0xc8(%rbp),%rax
mov    0xc0(%rbp),%rax
mov    0xb8(%rbp),%rax
mov    0xb0(%rbp),%rax
mov    0xa8(%rbp),%rax
mov    0xa0(%rbp),%rax
mov    0x98(%rbp),%rax
mov    0x90(%rbp),%rax
mov    0x88(%rbp),%rax
mov    0x80(%rbp),%rax
mov    0x78(%rbp),%rax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
movsd  %xmm4,-0x30(%rbp)
movsd  %xmm5,-0x38(%rbp)
movsd  %xmm6,-0x40(%rbp)
mov    %rdx,-0x48(%rbp)
mov    %rcx,-0x50(%rbp)
mov    %r8,-0x58(%rbp)
mov    %r9,-0x60(%rbp)
movsd  0xe2b(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1ae3 <kEpsilon_3D_Evaluate+0x9e3>
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1224 <kEpsilon_3D_Evaluate+0x124>
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    1234 <kEpsilon_3D_Evaluate+0x134>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    1234 <kEpsilon_3D_Evaluate+0x134>
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1278 <kEpsilon_3D_Evaluate+0x178>
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    1288 <kEpsilon_3D_Evaluate+0x188>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    1288 <kEpsilon_3D_Evaluate+0x188>
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  0xd39(%rip),%xmm1
addsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xd2b(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  0xd01(%rip),%xmm1
addsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc97(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x70(%rbp),%xmm0
jbe    139c <kEpsilon_3D_Evaluate+0x29c>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x28(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  0xc4a(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x38(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  0xc1b(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    14e5 <kEpsilon_3D_Evaluate+0x3e5>
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x60(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x68(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x70(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x78(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    1401 <kEpsilon_3D_Evaluate+0x301>
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x40(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x48(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  0xb01(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x50(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x58(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  0xad2(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    168e <kEpsilon_3D_Evaluate+0x58e>
movsd  -0x70(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
mov    0x80(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0x8(%rbp),%ecx
mov    -0x68(%rbp),%edx
imul   -0x8(%rbp),%edx
add    %edx,%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x78(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
mov    0x88(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0x8(%rbp),%ecx
mov    -0x68(%rbp),%edx
imul   -0x8(%rbp),%edx
add    %edx,%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x80(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
mov    0x90(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0x8(%rbp),%ecx
mov    -0x68(%rbp),%edx
imul   -0x8(%rbp),%edx
add    %edx,%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x70(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
mov    0x98(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0x8(%rbp),%ecx
mov    -0x68(%rbp),%edx
imul   -0x8(%rbp),%edx
add    %edx,%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x78(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
mov    0xa0(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0x8(%rbp),%ecx
mov    -0x68(%rbp),%edx
imul   -0x8(%rbp),%edx
add    %edx,%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x80(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
mov    0xa8(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0x8(%rbp),%ecx
mov    -0x68(%rbp),%edx
imul   -0x8(%rbp),%edx
add    %edx,%ecx
add    -0x68(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    154a <kEpsilon_3D_Evaluate+0x44a>
mov    -0x50(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x50(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x58(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x58(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x60(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x60(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x58(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm1
mov    -0x50(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x58(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x60(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm1
mov    -0x50(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x60(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x58(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x60(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x58(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x60(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x88(%rbp),%xmm2
ff
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0xb0(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x78(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
mov    0xb8(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x80(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x715(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    0xc0(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x28(%rbp),%xmm0
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  0x6c2(%rip),%xmm1
addsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x655(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0x645(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  0x61b(%rip),%xmm1
addsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xa0(%rbp),%xmm0
jbe    1a28 <kEpsilon_3D_Evaluate+0x928>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0xc8(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0xd0(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xb0(%rbp),%xmm0
ff
mov    0xd8(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    11e4 <kEpsilon_3D_Evaluate+0xe4>
add    $0x48,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kEpsilon_3D_Evaluate>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
movsd  %xmm6,-0x30(%rsp)
movsd  %xmm1,-0x38(%rsp)
movsd  %xmm0,-0x40(%rsp)
mov    %esi,-0x78(%rsp)
test   %edi,%edi
jle    16dd <kEpsilon_3D_Evaluate+0x5dd>
movapd %xmm3,%xmm12
mov    0x138(%rsp),%r11
movapd %xmm4,%xmm15
addsd  %xmm4,%xmm15
movapd 0xeb5(%rip),%xmm3
movapd %xmm4,%xmm0
xorpd  %xmm3,%xmm0
movapd %xmm0,0x20(%rsp)
movapd %xmm12,%xmm14
xorpd  %xmm3,%xmm14
movapd %xmm12,%xmm5
addsd  %xmm12,%xmm5
movapd %xmm5,0x10(%rsp)
xorpd  %xmm3,%xmm2
movslq -0x78(%rsp),%rsi
mov    %edi,%eax
mov    %rax,-0x20(%rsp)
mov    %esi,%ebx
imul   %esi,%ebx
mov    %ebx,-0x74(%rsp)
movsd  0xe7c(%rip),%xmm1
movapd 0xe64(%rip),%xmm0
mov    0xd8(%rsp),%r13
mov    0xd0(%rsp),%rdi
mov    0xc8(%rsp),%rax
mov    0xc0(%rsp),%r15
mov    %esi,%r10d
mov    %rsi,-0x70(%rsp)
lea    0x0(,%rsi,8),%rbx
mov    %rbx,-0x28(%rsp)
xor    %r12d,%r12d
xor    %ebx,%ebx
mov    %r10,-0x68(%rsp)
mov    %r8,-0x48(%rsp)
mov    %rcx,-0x50(%rsp)
mov    %r9,-0x58(%rsp)
movapd %xmm2,(%rsp)
jmp    12a4 <kEpsilon_3D_Evaluate+0x1a4>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movapd %xmm6,%xmm3
mulsd  %xmm14,%xmm3
mulsd  %xmm6,%xmm3
movapd %xmm7,%xmm6
mulsd  %xmm7,%xmm6
addsd  %xmm1,%xmm6
divsd  %xmm6,%xmm3
xorpd  %xmm6,%xmm6
maxsd  %xmm5,%xmm6
cmpltsd %xmm9,%xmm5
andnpd %xmm3,%xmm5
mulsd  %xmm2,%xmm7
mulsd  %xmm11,%xmm7
addsd  %xmm6,%xmm7
mov    0x128(%rsp),%rbp
movsd  %xmm7,0x0(%rbp,%rbx,8)
mulsd  %xmm2,%xmm11
addsd  %xmm5,%xmm11
mov    0x130(%rsp),%rax
movsd  %xmm11,(%rax,%rbx,8)
movsd  %xmm8,(%r11,%rbx,8)
add    $0x1,%rbx
mov    -0x28(%rsp),%rbp
add    %rbp,%rdx
add    %rbp,%r15
mov    -0x18(%rsp),%rax
add    %rbp,%rax
mov    -0x10(%rsp),%rdi
add    %rbp,%rdi
mov    -0x8(%rsp),%r13
add    %rbp,%r13
add    -0x74(%rsp),%r12d
cmp    -0x20(%rsp),%rbx
mov    -0x68(%rsp),%r10
je     16dd <kEpsilon_3D_Evaluate+0x5dd>
mov    %r9,%rsi
mov    %r11,%r9
mov    0x78(%rsp),%r14
movsd  (%r14,%rbx,8),%xmm3
mov    0x70(%rsp),%rbp
movsd  0x0(%rbp,%rbx,8),%xmm5
movapd %xmm5,%xmm7
mulsd  %xmm4,%xmm7
mulsd  %xmm5,%xmm7
movapd %xmm3,%xmm6
addsd  %xmm1,%xmm6
divsd  %xmm6,%xmm7
xorpd  %xmm9,%xmm9
ucomisd %xmm7,%xmm9
xorpd  %xmm13,%xmm13
ja     1307 <kEpsilon_3D_Evaluate+0x207>
movapd %xmm5,%xmm13
mulsd  0x20(%rsp),%xmm13
mulsd  %xmm5,%xmm13
mulsd  %xmm3,%xmm3
addsd  %xmm1,%xmm3
divsd  %xmm3,%xmm13
movapd %xmm15,%xmm3
mulsd  %xmm5,%xmm3
divsd  %xmm6,%xmm3
movapd %xmm7,%xmm10
cmpltsd %xmm9,%xmm10
andnpd %xmm3,%xmm10
maxsd  %xmm7,%xmm9
mov    0x80(%rsp),%rbp
movsd  %xmm5,0x0(%rbp,%rbx,8)
mov    0x88(%rsp),%rbp
movabs $0x3ff0000000000000,%r11
mov    %r11,0x0(%rbp,%rbx,8)
movsd  (%r14,%rbx,8),%xmm3
mov    0x90(%rsp),%rbp
movsd  %xmm3,0x0(%rbp,%rbx,8)
mov    0x98(%rsp),%rbp
mov    %r11,0x0(%rbp,%rbx,8)
cmpl   $0x0,-0x78(%rsp)
mov    %r13,-0x8(%rsp)
mov    %rdi,-0x10(%rsp)
mov    %rax,-0x18(%rsp)
jle    1570 <kEpsilon_3D_Evaluate+0x470>
mov    %r12,-0x60(%rsp)
xor    %ebp,%ebp
mov    0x70(%rsp),%r11
cs nopw 0x0(%rax,%rax,1)
nop
movsd  (%r11,%rbx,8),%xmm3
mulsd  (%rdx,%rbp,8),%xmm3
movsd  %xmm3,(%r15,%rbp,8)
movsd  (%rdx,%rbp,8),%xmm3
movsd  %xmm3,(%rax,%rbp,8)
movsd  (%r14,%rbx,8),%xmm3
mulsd  (%rdx,%rbp,8),%xmm3
movsd  %xmm3,(%rdi,%rbp,8)
movsd  (%rdx,%rbp,8),%xmm3
movsd  %xmm3,0x0(%r13,%rbp,8)
add    $0x1,%rbp
cmp    %rbp,%r10
jne    13a0 <kEpsilon_3D_Evaluate+0x2a0>
movsd  (%r11,%rbx,8),%xmm3
mov    0xa0(%rsp),%rax
movsd  %xmm3,(%rax,%rbx,8)
mov    0xa8(%rsp),%rax
movabs $0x3ff0000000000000,%rdi
mov    %rdi,(%rax,%rbx,8)
movsd  (%r14,%rbx,8),%xmm3
mov    0xb0(%rsp),%rax
movsd  %xmm3,(%rax,%rbx,8)
mov    0xb8(%rsp),%rax
mov    %rdi,(%rax,%rbx,8)
cmpl   $0x0,-0x78(%rsp)
mov    %r9,%r11
mov    -0x60(%rsp),%r12
jle    15b5 <kEpsilon_3D_Evaluate+0x4b5>
movapd %xmm1,%xmm2
movapd %xmm15,%xmm0
movapd %xmm12,%xmm6
movapd %xmm9,%xmm11
movsd  -0x40(%rsp),%xmm1
divsd  %xmm1,%xmm11
movsd  -0x30(%rsp),%xmm3
addsd  %xmm3,%xmm11
mov    %rbx,%r10
imul   -0x70(%rsp),%r10
movapd %xmm10,%xmm7
divsd  %xmm1,%xmm7
movapd %xmm13,%xmm5
divsd  %xmm1,%xmm5
movapd %xmm9,%xmm12
movsd  -0x38(%rsp),%xmm1
divsd  %xmm1,%xmm12
addsd  %xmm3,%xmm12
movapd %xmm10,%xmm8
divsd  %xmm1,%xmm8
movapd %xmm13,%xmm15
divsd  %xmm1,%xmm15
mov    -0x68(%rsp),%r8
mov    %r12d,%ecx
xor    %r14d,%r14d
mov    0x108(%rsp),%r13
mov    -0x78(%rsp),%esi
mov    0xe8(%rsp),%rdi
mov    0xf0(%rsp),%rax
mov    0xf8(%rsp),%rbp
mov    0x100(%rsp),%r9
mov    0xe0(%rsp),%r12
nopw   0x0(%rax,%rax,1)
movslq %ecx,%rcx
lea    (%r14,%rcx,1),%r11
movsd  %xmm11,(%r12,%r11,8)
movsd  %xmm7,(%rdi,%r11,8)
movsd  %xmm5,(%rax,%r11,8)
movsd  %xmm12,0x0(%rbp,%r11,8)
movsd  %xmm8,(%r9,%r11,8)
movsd  %xmm15,0x0(%r13,%r11,8)
add    $0x1,%r14
add    %esi,%ecx
add    $0xffffffffffffffff,%r8
jne    14f0 <kEpsilon_3D_Evaluate+0x3f0>
mov    -0x58(%rsp),%r9
mov    -0x48(%rsp),%r8
mov    -0x50(%rsp),%rcx
movapd %xmm6,%xmm12
mov    0x138(%rsp),%r11
movapd %xmm0,%xmm15
movapd %xmm2,%xmm1
movapd (%rsp),%xmm2
movapd 0xaa5(%rip),%xmm0
mov    -0x60(%rsp),%r12
jmp    15c1 <kEpsilon_3D_Evaluate+0x4c1>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x70(%rsp),%rax
movsd  (%rax,%rbx,8),%xmm3
mov    0xa0(%rsp),%rax
movsd  %xmm3,(%rax,%rbx,8)
mov    0xa8(%rsp),%rax
mov    %r11,(%rax,%rbx,8)
movsd  (%r14,%rbx,8),%xmm3
mov    0xb0(%rsp),%rax
movsd  %xmm3,(%rax,%rbx,8)
mov    0xb8(%rsp),%rax
mov    %r11,(%rax,%rbx,8)
mov    %r9,%r11
mov    %rbx,%r10
imul   -0x70(%rsp),%r10
mov    %rsi,%r9
movsd  0x8(%r8,%r10,8),%xmm3
movsd  0x10(%r8,%r10,8),%xmm11
mulsd  %xmm3,%xmm3
movsd  (%rcx,%r10,8),%xmm6
movsd  0x8(%rcx,%r10,8),%xmm5
mulsd  %xmm6,%xmm6
addsd  %xmm3,%xmm6
movsd  0x10(%r9,%r10,8),%xmm3
mulsd  %xmm3,%xmm3
addsd  %xmm6,%xmm3
addsd  (%r8,%r10,8),%xmm5
mulsd  %xmm5,%xmm5
addsd  %xmm3,%xmm3
addsd  %xmm5,%xmm3
movsd  0x10(%rcx,%r10,8),%xmm5
addsd  (%r9,%r10,8),%xmm5
mulsd  %xmm5,%xmm5
addsd  %xmm3,%xmm5
addsd  0x8(%r9,%r10,8),%xmm11
mulsd  %xmm11,%xmm11
addsd  %xmm5,%xmm11
mov    0x78(%rsp),%rax
movsd  (%rax,%rbx,8),%xmm3
mulsd  %xmm11,%xmm9
subsd  %xmm9,%xmm3
mov    0x110(%rsp),%rbp
movsd  %xmm3,0x0(%rbp,%rbx,8)
xorpd  %xmm0,%xmm10
mulsd  %xmm11,%xmm10
mov    0x118(%rsp),%rbp
movsd  %xmm10,0x0(%rbp,%rbx,8)
mulsd  %xmm11,%xmm13
movsd  0x9a1(%rip),%xmm3
subsd  %xmm13,%xmm3
mov    0x120(%rsp),%rbp
movsd  %xmm3,0x0(%rbp,%rbx,8)
movsd  (%rax,%rbx,8),%xmm6
movapd %xmm6,%xmm5
mulsd  %xmm12,%xmm5
mulsd  %xmm6,%xmm5
mov    0x70(%rsp),%rax
movsd  (%rax,%rbx,8),%xmm7
movapd %xmm7,%xmm3
addsd  %xmm1,%xmm3
divsd  %xmm3,%xmm5
xorpd  %xmm9,%xmm9
ucomisd %xmm5,%xmm9
xorpd  %xmm8,%xmm8
ja     1200 <kEpsilon_3D_Evaluate+0x100>
movapd 0x10(%rsp),%xmm8
mulsd  %xmm6,%xmm8
divsd  %xmm3,%xmm8
jmp    1200 <kEpsilon_3D_Evaluate+0x100>
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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