void kEpsilon_3D_Evaluate_sd(
    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 + I] = nu_t / sigma_k + nu;
      da_k_dk[i * nSpace + I] = dnu_t_dk / sigma_k;
      da_k_de[i * nSpace + I] = dnu_t_de / sigma_k;
      a_e[i * nSpace + I] = nu_t / sigma_e + nu;
      da_e_dk[i * nSpace + I] = dnu_t_dk / sigma_e;
      da_e_de[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_sd>:
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    1a95 <kEpsilon_3D_Evaluate_sd+0x995>
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1224 <kEpsilon_3D_Evaluate_sd+0x124>
mov    0x18(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    1234 <kEpsilon_3D_Evaluate_sd+0x134>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    1234 <kEpsilon_3D_Evaluate_sd+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_sd+0x178>
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    1288 <kEpsilon_3D_Evaluate_sd+0x188>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    1288 <kEpsilon_3D_Evaluate_sd+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_sd+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_sd+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_sd+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    1640 <kEpsilon_3D_Evaluate_sd+0x540>
movsd  -0x70(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
mov    0x80(%rbp),%rax
mov    -0x64(%rbp),%ecx
imul   -0x8(%rbp),%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
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
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
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
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
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_sd+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  0x763(%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  0x710(%rip),%xmm1
addsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
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  0x6a3(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0x693(%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  0x669(%rip),%xmm1
addsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xa0(%rbp),%xmm0
ff
jbe    19da <kEpsilon_3D_Evaluate_sd+0x8da>
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_sd+0xe4>
add    $0x48,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kEpsilon_3D_Evaluate_sd>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %r9,-0x18(%rsp)
mov    %r8,-0x20(%rsp)
mov    %rcx,-0x28(%rsp)
movsd  %xmm6,-0x40(%rsp)
movapd %xmm4,0x10(%rsp)
movapd %xmm3,(%rsp)
mov    %esi,-0x74(%rsp)
test   %edi,%edi
jle    16b2 <kEpsilon_3D_Evaluate_sd+0x5b2>
mov    0x118(%rsp),%rax
mov    0x110(%rsp),%rbx
mov    0x108(%rsp),%r14
mov    0x100(%rsp),%r10
mov    0xf8(%rsp),%r11
mov    0xf0(%rsp),%rbp
mov    0xe8(%rsp),%r15
mov    0xe0(%rsp),%r12
movapd 0x10(%rsp),%xmm4
movapd %xmm4,%xmm3
addsd  %xmm4,%xmm3
movapd 0xe70(%rip),%xmm5
xorpd  %xmm5,%xmm4
movapd %xmm4,0x30(%rsp)
movapd (%rsp),%xmm4
movapd %xmm4,%xmm13
xorpd  %xmm5,%xmm13
addsd  %xmm4,%xmm4
movapd %xmm4,0x20(%rsp)
xorpd  %xmm5,%xmm2
mov    %edi,%ecx
mov    %rcx,-0x30(%rsp)
movsd  0xe49(%rip),%xmm14
mov    0xd8(%rsp),%r13
mov    0xd0(%rsp),%rdi
mov    0x88(%rsp),%rcx
movslq -0x74(%rsp),%r8
mov    %r8d,%r9d
mov    %r8,-0x70(%rsp)
lea    0x0(,%r8,8),%rsi
mov    %rsi,-0x38(%rsp)
lea    0x0(,%r9,8),%rsi
mov    %rsi,-0x48(%rsp)
xor    %r8d,%r8d
movabs $0x3ff0000000000000,%rsi
mov    %r9,-0x50(%rsp)
jmp    12dc <kEpsilon_3D_Evaluate_sd+0x1dc>
nopl   (%rax)
movapd %xmm8,%xmm4
mulsd  %xmm13,%xmm4
mulsd  %xmm8,%xmm4
movapd %xmm7,%xmm6
mulsd  %xmm7,%xmm6
addsd  %xmm14,%xmm6
divsd  %xmm6,%xmm4
xorpd  %xmm6,%xmm6
maxsd  %xmm5,%xmm6
cmpltsd %xmm15,%xmm5
andnpd %xmm4,%xmm5
mulsd  %xmm2,%xmm7
mulsd  %xmm11,%xmm7
addsd  %xmm6,%xmm7
mov    0x138(%rsp),%rax
movsd  %xmm7,(%rax,%r8,8)
mulsd  %xmm2,%xmm11
addsd  %xmm5,%xmm11
mov    0x140(%rsp),%rax
movsd  %xmm11,(%rax,%r8,8)
mov    0x148(%rsp),%rax
movsd  %xmm12,(%rax,%r8,8)
add    $0x1,%r8
mov    -0x38(%rsp),%rsi
add    %rsi,%rdx
add    %rsi,%rdi
add    %rsi,%r13
add    %rsi,%r12
add    %rsi,%r15
add    %rsi,%rbp
add    %rsi,%r11
add    %rsi,%r10
add    %rsi,%r14
mov    -0x10(%rsp),%rbx
add    %rsi,%rbx
mov    -0x8(%rsp),%rax
add    %rsi,%rax
cmp    -0x30(%rsp),%r8
movabs $0x3ff0000000000000,%rsi
je     16b2 <kEpsilon_3D_Evaluate_sd+0x5b2>
mov    %r14,-0x58(%rsp)
mov    %rbp,-0x68(%rsp)
mov    %r11,-0x60(%rsp)
mov    %r10,%r11
movsd  (%rcx,%r8,8),%xmm8
mov    0x80(%rsp),%r10
movsd  (%r10,%r8,8),%xmm11
movapd %xmm11,%xmm5
mulsd  0x10(%rsp),%xmm5
mulsd  %xmm11,%xmm5
movapd %xmm8,%xmm7
addsd  %xmm14,%xmm7
divsd  %xmm7,%xmm5
xorpd  %xmm9,%xmm9
ucomisd %xmm5,%xmm9
xorpd  %xmm6,%xmm6
mov    %rcx,%r14
ja     1352 <kEpsilon_3D_Evaluate_sd+0x252>
movapd %xmm11,%xmm6
mulsd  0x30(%rsp),%xmm6
mulsd  %xmm11,%xmm6
mulsd  %xmm8,%xmm8
addsd  %xmm14,%xmm8
divsd  %xmm8,%xmm6
movapd %xmm3,%xmm4
mulsd  %xmm11,%xmm4
divsd  %xmm7,%xmm4
movapd %xmm5,%xmm10
cmpltsd %xmm9,%xmm10
andnpd %xmm4,%xmm10
maxsd  %xmm5,%xmm9
mov    0x90(%rsp),%rcx
movsd  %xmm11,(%rcx,%r8,8)
mov    0x98(%rsp),%rcx
mov    %rsi,(%rcx,%r8,8)
movsd  (%r14,%r8,8),%xmm4
mov    0xa0(%rsp),%rcx
movsd  %xmm4,(%rcx,%r8,8)
mov    0xa8(%rsp),%rcx
mov    %rsi,(%rcx,%r8,8)
cmpl   $0x0,-0x74(%rsp)
mov    %r11,%r10
mov    %rax,-0x8(%rsp)
mov    %rbx,-0x10(%rsp)
jle    1520 <kEpsilon_3D_Evaluate_sd+0x420>
mov    0x80(%rsp),%rbp
xor    %esi,%esi
movsd  0x0(%rbp,%r8,8),%xmm4
mulsd  (%rdx,%rsi,8),%xmm4
movsd  %xmm4,(%rdi,%rsi,8)
movsd  (%rdx,%rsi,8),%xmm4
movsd  %xmm4,0x0(%r13,%rsi,8)
movsd  (%r14,%r8,8),%xmm4
mulsd  (%rdx,%rsi,8),%xmm4
movsd  %xmm4,(%r12,%rsi,8)
movsd  (%rdx,%rsi,8),%xmm4
movsd  %xmm4,(%r15,%rsi,8)
add    $0x1,%rsi
cmp    %rsi,%r9
jne    13d0 <kEpsilon_3D_Evaluate_sd+0x2d0>
movsd  0x0(%rbp,%r8,8),%xmm4
mov    0xb0(%rsp),%rcx
movsd  %xmm4,(%rcx,%r8,8)
mov    0xb8(%rsp),%rcx
movabs $0x3ff0000000000000,%rbp
mov    %rbp,(%rcx,%r8,8)
movsd  (%r14,%r8,8),%xmm4
mov    0xc0(%rsp),%rcx
movsd  %xmm4,(%rcx,%r8,8)
mov    0xc8(%rsp),%rcx
mov    %rbp,(%rcx,%r8,8)
cmpl   $0x0,-0x74(%rsp)
mov    -0x58(%rsp),%r14
mov    -0x60(%rsp),%r11
jle    1572 <kEpsilon_3D_Evaluate_sd+0x472>
movapd %xmm9,%xmm11
divsd  %xmm0,%xmm11
movsd  -0x40(%rsp),%xmm4
addsd  %xmm4,%xmm11
mov    %r8,%rsi
imul   -0x70(%rsp),%rsi
movapd %xmm10,%xmm7
divsd  %xmm0,%xmm7
movapd %xmm6,%xmm5
divsd  %xmm0,%xmm5
movapd %xmm9,%xmm12
divsd  %xmm1,%xmm12
addsd  %xmm4,%xmm12
movapd %xmm10,%xmm8
divsd  %xmm1,%xmm8
movapd %xmm6,%xmm15
divsd  %xmm1,%xmm15
xor    %ecx,%ecx
mov    %r14,%r9
mov    -0x68(%rsp),%rbp
mov    %r11,%r14
mov    %r10,%r11
mov    -0x48(%rsp),%r10
nopl   0x0(%rax)
movsd  %xmm11,0x0(%rbp,%rcx,1)
movsd  %xmm7,(%r14,%rcx,1)
movsd  %xmm5,(%r11,%rcx,1)
movsd  %xmm12,(%r9,%rcx,1)
movsd  %xmm8,(%rbx,%rcx,1)
movsd  %xmm15,(%rax,%rcx,1)
add    $0x8,%rcx
cmp    %rcx,%r10
jne    14e0 <kEpsilon_3D_Evaluate_sd+0x3e0>
mov    %r11,%r10
mov    %r14,%r11
mov    %r9,%r14
mov    -0x50(%rsp),%r9
jmp    1580 <kEpsilon_3D_Evaluate_sd+0x480>
xchg   %ax,%ax
mov    0x80(%rsp),%rcx
movsd  (%rcx,%r8,8),%xmm4
mov    0xb0(%rsp),%rcx
movsd  %xmm4,(%rcx,%r8,8)
mov    0xb8(%rsp),%rcx
mov    %rsi,(%rcx,%r8,8)
movsd  (%r14,%r8,8),%xmm4
mov    0xc0(%rsp),%rcx
movsd  %xmm4,(%rcx,%r8,8)
mov    0xc8(%rsp),%rcx
mov    %rsi,(%rcx,%r8,8)
mov    -0x60(%rsp),%r11
mov    -0x58(%rsp),%r14
mov    %r8,%rsi
imul   -0x70(%rsp),%rsi
mov    -0x68(%rsp),%rbp
mov    -0x20(%rsp),%rax
movsd  0x8(%rax,%rsi,8),%xmm4
movsd  0x10(%rax,%rsi,8),%xmm11
mulsd  %xmm4,%xmm4
mov    -0x28(%rsp),%rbx
movsd  (%rbx,%rsi,8),%xmm5
movsd  0x8(%rbx,%rsi,8),%xmm7
mulsd  %xmm5,%xmm5
addsd  %xmm4,%xmm5
mov    -0x18(%rsp),%rcx
movsd  0x10(%rcx,%rsi,8),%xmm4
mulsd  %xmm4,%xmm4
addsd  %xmm5,%xmm4
addsd  (%rax,%rsi,8),%xmm7
mulsd  %xmm7,%xmm7
addsd  %xmm4,%xmm4
addsd  %xmm7,%xmm4
movsd  0x10(%rbx,%rsi,8),%xmm5
addsd  (%rcx,%rsi,8),%xmm5
mulsd  %xmm5,%xmm5
addsd  %xmm4,%xmm5
addsd  0x8(%rcx,%rsi,8),%xmm11
mulsd  %xmm11,%xmm11
addsd  %xmm5,%xmm11
mov    0x88(%rsp),%rcx
movsd  (%rcx,%r8,8),%xmm4
mulsd  %xmm11,%xmm9
subsd  %xmm9,%xmm4
mov    0x120(%rsp),%rax
movsd  %xmm4,(%rax,%r8,8)
xorpd  0x9db(%rip),%xmm10
mulsd  %xmm11,%xmm10
mov    0x128(%rsp),%rax
movsd  %xmm10,(%rax,%r8,8)
mulsd  %xmm11,%xmm6
movsd  0x9d3(%rip),%xmm4
subsd  %xmm6,%xmm4
mov    0x130(%rsp),%rax
movsd  %xmm4,(%rax,%r8,8)
movsd  (%rcx,%r8,8),%xmm8
movapd %xmm8,%xmm5
mulsd  (%rsp),%xmm5
mulsd  %xmm8,%xmm5
mov    0x80(%rsp),%rsi
movsd  (%rsi,%r8,8),%xmm7
movapd %xmm7,%xmm6
addsd  %xmm14,%xmm6
divsd  %xmm6,%xmm5
xorpd  %xmm15,%xmm15
ucomisd %xmm5,%xmm15
xorpd  %xmm12,%xmm12
ja     1220 <kEpsilon_3D_Evaluate_sd+0x120>
movapd 0x20(%rsp),%xmm12
mulsd  %xmm8,%xmm12
divsd  %xmm6,%xmm12
jmp    1220 <kEpsilon_3D_Evaluate_sd+0x120>
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @kEpsilon_3D_Evaluate_sd(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 = %691, %39
%92 = load i32, i32* %79
%93 = load i32, i32* %40
%94 = icmp slt i32 %92, %93
br i1 %94, label %95, label %694
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 = %407, %305
%333 = load i32, i32* %80
%334 = load i32, i32* %41
%335 = icmp slt i32 %333, %334
br i1 %335, label %336, label %410
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* %80
%347 = add nsw i32 %345, %346
%348 = sext i32 %347 to i64
%349 = getelementptr inbounds double, double* %342, i64 %348
store double %341, double* %349
%350 = load double, double* %82
%351 = load double, double* %42
%352 = fdiv double %350, %351
%353 = load double*, double** %68
%354 = load i32, i32* %79
%355 = load i32, i32* %41
%356 = mul nsw i32 %354, %355
%357 = load i32, i32* %80
%358 = add nsw i32 %356, %357
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds double, double* %353, i64 %359
store double %352, double* %360
%361 = load double, double* %83
%362 = load double, double* %42
%363 = fdiv double %361, %362
%364 = load double*, double** %69
%365 = load i32, i32* %79
%366 = load i32, i32* %41
%367 = mul nsw i32 %365, %366
%368 = load i32, i32* %80
%369 = add nsw i32 %367, %368
%370 = sext i32 %369 to i64
%371 = getelementptr inbounds double, double* %364, i64 %370
store double %363, double* %371
%372 = load double, double* %81
%373 = load double, double* %43
%374 = fdiv double %372, %373
%375 = load double, double* %48
%376 = fadd double %374, %375
%377 = load double*, double** %70
%378 = load i32, i32* %79
%379 = load i32, i32* %41
%380 = mul nsw i32 %378, %379
%381 = load i32, i32* %80
%382 = add nsw i32 %380, %381
%383 = sext i32 %382 to i64
%384 = getelementptr inbounds double, double* %377, i64 %383
store double %376, double* %384
%385 = load double, double* %82
%386 = load double, double* %43
%387 = fdiv double %385, %386
%388 = load double*, double** %71
%389 = load i32, i32* %79
%390 = load i32, i32* %41
%391 = mul nsw i32 %389, %390
%392 = load i32, i32* %80
%393 = add nsw i32 %391, %392
%394 = sext i32 %393 to i64
%395 = getelementptr inbounds double, double* %388, i64 %394
store double %387, double* %395
%396 = load double, double* %83
%397 = load double, double* %43
%398 = fdiv double %396, %397
%399 = load double*, double** %72
%400 = load i32, i32* %79
%401 = load i32, i32* %41
%402 = mul nsw i32 %400, %401
%403 = load i32, i32* %80
%404 = add nsw i32 %402, %403
%405 = sext i32 %404 to i64
%406 = getelementptr inbounds double, double* %399, i64 %405
store double %398, double* %406
br label %407
407: ; preds = %336
%408 = load i32, i32* %80
%409 = add nsw i32 %408, 1
store i32 %409, i32* %80
br label %332
410: ; preds = %332
%411 = load double*, double** %50
%412 = load i32, i32* %79
%413 = load i32, i32* %41
%414 = mul nsw i32 %412, %413
%415 = add nsw i32 %414, 0
%416 = sext i32 %415 to i64
%417 = getelementptr inbounds double, double* %411, i64 %416
%418 = load double, double* %417
%419 = load double*, double** %50
%420 = load i32, i32* %79
%421 = load i32, i32* %41
%422 = mul nsw i32 %420, %421
%423 = add nsw i32 %422, 0
%424 = sext i32 %423 to i64
%425 = getelementptr inbounds double, double* %419, i64 %424
%426 = load double, double* %425
%427 = load double*, double** %51
%428 = load i32, i32* %79
%429 = load i32, i32* %41
%430 = mul nsw i32 %428, %429
%431 = add nsw i32 %430, 1
%432 = sext i32 %431 to i64
%433 = getelementptr inbounds double, double* %427, i64 %432
%434 = load double, double* %433
%435 = load double*, double** %51
%436 = load i32, i32* %79
%437 = load i32, i32* %41
%438 = mul nsw i32 %436, %437
%439 = add nsw i32 %438, 1
%440 = sext i32 %439 to i64
%441 = getelementptr inbounds double, double* %435, i64 %440
%442 = load double, double* %441
%443 = fmul double %434, %442
%444 = call double @llvm.fmuladd.f64(double %418, double %426, double %443)
%445 = load double*, double** %52
%446 = load i32, i32* %79
%447 = load i32, i32* %41
%448 = mul nsw i32 %446, %447
%449 = add nsw i32 %448, 2
%450 = sext i32 %449 to i64
%451 = getelementptr inbounds double, double* %445, i64 %450
%452 = load double, double* %451
%453 = load double*, double** %52
%454 = load i32, i32* %79
%455 = load i32, i32* %41
%456 = mul nsw i32 %454, %455
%457 = add nsw i32 %456, 2
%458 = sext i32 %457 to i64
%459 = getelementptr inbounds double, double* %453, i64 %458
%460 = load double, double* %459
%461 = call double @llvm.fmuladd.f64(double %452, double %460, double %444)
%462 = load double*, double** %50
%463 = load i32, i32* %79
%464 = load i32, i32* %41
%465 = mul nsw i32 %463, %464
%466 = add nsw i32 %465, 1
%467 = sext i32 %466 to i64
%468 = getelementptr inbounds double, double* %462, i64 %467
%469 = load double, double* %468
%470 = load double*, double** %51
%471 = load i32, i32* %79
%472 = load i32, i32* %41
%473 = mul nsw i32 %471, %472
%474 = add nsw i32 %473, 0
%475 = sext i32 %474 to i64
%476 = getelementptr inbounds double, double* %470, i64 %475
%477 = load double, double* %476
%478 = fadd double %469, %477
%479 = load double*, double** %50
%480 = load i32, i32* %79
%481 = load i32, i32* %41
%482 = mul nsw i32 %480, %481
%483 = add nsw i32 %482, 1
%484 = sext i32 %483 to i64
%485 = getelementptr inbounds double, double* %479, i64 %484
%486 = load double, double* %485
%487 = load double*, double** %51
%488 = load i32, i32* %79
%489 = load i32, i32* %41
%490 = mul nsw i32 %488, %489
%491 = add nsw i32 %490, 0
%492 = sext i32 %491 to i64
%493 = getelementptr inbounds double, double* %487, i64 %492
%494 = load double, double* %493
%495 = fadd double %486, %494
%496 = fmul double %478, %495
%497 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %461, double %496)
%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, 2
%503 = sext i32 %502 to i64
%504 = getelementptr inbounds double, double* %498, i64 %503
%505 = load double, double* %504
%506 = load double*, double** %52
%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, 2
%520 = sext i32 %519 to i64
%521 = getelementptr inbounds double, double* %515, i64 %520
%522 = load double, double* %521
%523 = load double*, double** %52
%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 = call double @llvm.fmuladd.f64(double %514, double %531, double %497)
%533 = load double*, double** %51
%534 = load i32, i32* %79
%535 = load i32, i32* %41
%536 = mul nsw i32 %534, %535
%537 = add nsw i32 %536, 2
%538 = sext i32 %537 to i64
%539 = getelementptr inbounds double, double* %533, i64 %538
%540 = load double, double* %539
%541 = load double*, double** %52
%542 = load i32, i32* %79
%543 = load i32, i32* %41
%544 = mul nsw i32 %542, %543
%545 = add nsw i32 %544, 1
%546 = sext i32 %545 to i64
%547 = getelementptr inbounds double, double* %541, i64 %546
%548 = load double, double* %547
%549 = fadd double %540, %548
%550 = load double*, double** %51
%551 = load i32, i32* %79
%552 = load i32, i32* %41
%553 = mul nsw i32 %551, %552
%554 = add nsw i32 %553, 2
%555 = sext i32 %554 to i64
%556 = getelementptr inbounds double, double* %550, i64 %555
%557 = load double, double* %556
%558 = load double*, double** %52
%559 = load i32, i32* %79
%560 = load i32, i32* %41
%561 = mul nsw i32 %559, %560
%562 = add nsw i32 %561, 1
%563 = sext i32 %562 to i64
%564 = getelementptr inbounds double, double* %558, i64 %563
%565 = load double, double* %564
%566 = fadd double %557, %565
%567 = call double @llvm.fmuladd.f64(double %549, double %566, double %532)
store double %567, double* %84
%568 = load double, double* %81
%569 = fneg double %568
%570 = load double, double* %84
%571 = load double*, double** %54
%572 = load i32, i32* %79
%573 = sext i32 %572 to i64
%574 = getelementptr inbounds double, double* %571, i64 %573
%575 = load double, double* %574
%576 = call double @llvm.fmuladd.f64(double %569, double %570, double %575)
%577 = load double*, double** %73
%578 = load i32, i32* %79
%579 = sext i32 %578 to i64
%580 = getelementptr inbounds double, double* %577, i64 %579
store double %576, double* %580
%581 = load double, double* %82
%582 = fneg double %581
%583 = load double, double* %84
%584 = fmul double %582, %583
%585 = load double*, double** %74
%586 = load i32, i32* %79
%587 = sext i32 %586 to i64
%588 = getelementptr inbounds double, double* %585, i64 %587
store double %584, double* %588
%589 = load double, double* %83
%590 = fneg double %589
%591 = load double, double* %84
%592 = call double @llvm.fmuladd.f64(double %590, double %591, double 1.000000e+00)
%593 = load double*, double** %75
%594 = load i32, i32* %79
%595 = sext i32 %594 to i64
%596 = getelementptr inbounds double, double* %593, i64 %595
store double %592, double* %596
%597 = load double, double* %45
%598 = load double*, double** %54
%599 = load i32, i32* %79
%600 = sext i32 %599 to i64
%601 = getelementptr inbounds double, double* %598, i64 %600
%602 = load double, double* %601
%603 = fmul double %597, %602
%604 = load double*, double** %54
%605 = load i32, i32* %79
%606 = sext i32 %605 to i64
%607 = getelementptr inbounds double, double* %604, i64 %606
%608 = load double, double* %607
%609 = fmul double %603, %608
%610 = load double*, double** %53
%611 = load i32, i32* %79
%612 = sext i32 %611 to i64
%613 = getelementptr inbounds double, double* %610, i64 %612
%614 = load double, double* %613
%615 = fadd double %614, 0x3EB0C6F7A0B5ED8D
%616 = fdiv double %609, %615
store double %616, double* %87
%617 = load double, double* %45
%618 = fneg double %617
%619 = load double*, double** %54
%620 = load i32, i32* %79
%621 = sext i32 %620 to i64
%622 = getelementptr inbounds double, double* %619, i64 %621
%623 = load double, double* %622
%624 = fmul double %618, %623
%625 = load double*, double** %54
%626 = load i32, i32* %79
%627 = sext i32 %626 to i64
%628 = getelementptr inbounds double, double* %625, i64 %627
%629 = load double, double* %628
%630 = fmul double %624, %629
%631 = load double*, double** %53
%632 = load i32, i32* %79
%633 = sext i32 %632 to i64
%634 = getelementptr inbounds double, double* %631, i64 %633
%635 = load double, double* %634
%636 = load double*, double** %53
%637 = load i32, i32* %79
%638 = sext i32 %637 to i64
%639 = getelementptr inbounds double, double* %636, i64 %638
%640 = load double, double* %639
%641 = call double @llvm.fmuladd.f64(double %635, double %640, double 0x3EB0C6F7A0B5ED8D)
%642 = fdiv double %630, %641
store double %642, double* %88
%643 = load double, double* %45
%644 = fmul double 2.000000e+00, %643
%645 = load double*, double** %54
%646 = load i32, i32* %79
%647 = sext i32 %646 to i64
%648 = getelementptr inbounds double, double* %645, i64 %647
%649 = load double, double* %648
%650 = fmul double %644, %649
%651 = load double*, double** %53
%652 = load i32, i32* %79
%653 = sext i32 %652 to i64
%654 = getelementptr inbounds double, double* %651, i64 %653
%655 = load double, double* %654
%656 = fadd double %655, 0x3EB0C6F7A0B5ED8D
%657 = fdiv double %650, %656
store double %657, double* %89
%658 = load double, double* %87
%659 = fcmp olt double %658, 0.000000e+00
br i1 %659, label %660, label %661
660: ; preds = %410
store double 0.000000e+00, double* %87
store double 0.000000e+00, double* %88
store double 0.000000e+00, double* %89
br label %661
661: ; preds = %660, %410
%662 = load double, double* %44
%663 = fneg double %662
%664 = load double*, double** %53
%665 = load i32, i32* %79
%666 = sext i32 %665 to i64
%667 = getelementptr inbounds double, double* %664, i64 %666
%668 = load double, double* %667
%669 = fmul double %663, %668
%670 = load double, double* %84
%671 = load double, double* %87
%672 = call double @llvm.fmuladd.f64(double %669, double %670, double %671)
%673 = load double*, double** %76
%674 = load i32, i32* %79
%675 = sext i32 %674 to i64
%676 = getelementptr inbounds double, double* %673, i64 %675
store double %672, double* %676
%677 = load double, double* %44
%678 = fneg double %677
%679 = load double, double* %84
%680 = load double, double* %88
%681 = call double @llvm.fmuladd.f64(double %678, double %679, double %680)
%682 = load double*, double** %77
%683 = load i32, i32* %79
%684 = sext i32 %683 to i64
%685 = getelementptr inbounds double, double* %682, i64 %684
store double %681, double* %685
%686 = load double, double* %89
%687 = load double*, double** %78
%688 = load i32, i32* %79
%689 = sext i32 %688 to i64
%690 = getelementptr inbounds double, double* %687, i64 %689
store double %686, double* %690
br label %691
691: ; preds = %661
%692 = load i32, i32* %79
%693 = add nsw i32 %692, 1
store i32 %693, i32* %79
br label %91
694: ; preds = %91
ret void
}

LLVM IR (-O2):
define void @kEpsilon_3D_Evaluate_sd(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 %200
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, %134
%53 = phi i64 [ 0, %41 ], [ %198, %134 ]
%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 %134
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
br label %123
123: ; preds = %113, %123
%124 = phi i64 [ 0, %113 ], [ %132, %123 ]
%125 = add nsw i64 %124, %116
%126 = getelementptr inbounds double, double* %27, i64 %125
store double %115, double* %126
%127 = getelementptr inbounds double, double* %28, i64 %125
store double %117, double* %127
%128 = getelementptr inbounds double, double* %29, i64 %125
store double %118, double* %128
%129 = getelementptr inbounds double, double* %30, i64 %125
store double %120, double* %129
%130 = getelementptr inbounds double, double* %31, i64 %125
store double %121, double* %130
%131 = getelementptr inbounds double, double* %32, i64 %125
store double %122, double* %131
%132 = add nuw nsw i64 %124, 1
%133 = icmp eq i64 %132, %51
br i1 %133, label %134, label %123
134: ; preds = %123, %111
%135 = phi i64 [ %112, %111 ], [ %116, %123 ]
%136 = getelementptr inbounds double, double* %10, i64 %135
%137 = load double, double* %136
%138 = add nsw i64 %135, 1
%139 = getelementptr inbounds double, double* %11, i64 %138
%140 = load double, double* %139
%141 = fmul double %140, %140
%142 = tail call double @llvm.fmuladd.f64(double %137, double %137, double %141)
%143 = add nsw i64 %135, 2
%144 = getelementptr inbounds double, double* %12, i64 %143
%145 = load double, double* %144
%146 = tail call double @llvm.fmuladd.f64(double %145, double %145, double %142)
%147 = getelementptr inbounds double, double* %10, i64 %138
%148 = load double, double* %147
%149 = getelementptr inbounds double, double* %11, i64 %135
%150 = load double, double* %149
%151 = fadd double %148, %150
%152 = fmul double %151, %151
%153 = tail call double @llvm.fmuladd.f64(double %146, double 2.000000e+00, double %152)
%154 = getelementptr inbounds double, double* %10, i64 %143
%155 = load double, double* %154
%156 = getelementptr inbounds double, double* %12, i64 %135
%157 = load double, double* %156
%158 = fadd double %155, %157
%159 = tail call double @llvm.fmuladd.f64(double %158, double %158, double %153)
%160 = getelementptr inbounds double, double* %11, i64 %143
%161 = load double, double* %160
%162 = getelementptr inbounds double, double* %12, i64 %138
%163 = load double, double* %162
%164 = fadd double %161, %163
%165 = tail call double @llvm.fmuladd.f64(double %164, double %164, double %159)
%166 = fneg double %71
%167 = load double, double* %54
%168 = tail call double @llvm.fmuladd.f64(double %166, double %165, double %167)
%169 = getelementptr inbounds double, double* %33, i64 %53
store double %168, double* %169
%170 = fneg double %70
%171 = fmul double %165, %170
%172 = getelementptr inbounds double, double* %34, i64 %53
store double %171, double* %172
%173 = fneg double %69
%174 = tail call double @llvm.fmuladd.f64(double %173, double %165, double 1.000000e+00)
%175 = getelementptr inbounds double, double* %35, i64 %53
store double %174, double* %175
%176 = load double, double* %54
%177 = fmul double %176, %5
%178 = fmul double %176, %177
%179 = load double, double* %56
%180 = fadd double %179, 0x3EB0C6F7A0B5ED8D
%181 = fdiv double %178, %180
%182 = fmul double %176, %45
%183 = fmul double %176, %182
%184 = tail call double @llvm.fmuladd.f64(double %179, double %179, double 0x3EB0C6F7A0B5ED8D)
%185 = fdiv double %183, %184
%186 = fmul double %46, %176
%187 = fdiv double %186, %180
%188 = fcmp olt double %181, 0.000000e+00
%189 = select i1 %188, double 0.000000e+00, double %181
%190 = select i1 %188, double 0.000000e+00, double %185
%191 = select i1 %188, double 0.000000e+00, double %187
%192 = fmul double %179, %47
%193 = tail call double @llvm.fmuladd.f64(double %192, double %165, double %189)
%194 = getelementptr inbounds double, double* %36, i64 %53
store double %193, double* %194
%195 = tail call double @llvm.fmuladd.f64(double %47, double %165, double %190)
%196 = getelementptr inbounds double, double* %37, i64 %53
store double %195, double* %196
%197 = getelementptr inbounds double, double* %38, i64 %53
store double %191, double* %197
%198 = add nuw nsw i64 %53, 1
%199 = icmp eq i64 %198, %49
br i1 %199, label %200, label %52
200: ; preds = %134, %39
ret void
}