void kEpsilon_epsilon_3D_Evaluate_sd(
    int nPoints, int nSpace, 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_e,
    double *dm_e, double *phi_e, double *dphi_e, double *f_e, double *df_e,
    double *a_e, double *da_e_de, double *r_e, double *dr_e_de) {
  int i, I;
  double nu_t, dnu_t_de, PiD4, eval, kval, disp, 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_de = -c_mu * k[i] * k[i] / (epsilon[i] * epsilon[i] + div_eps);
    if (nu_t < 0.0) {
      nu_t = 0.0;
      dnu_t_de = 0.0;
    }
    m_e[i] = epsilon[i];
    dm_e[i] = 1.0;
    for (I = 0; I < nSpace; I++) {
      f_e[i * nSpace + I] = epsilon[i] * velocity[i * nSpace + I];
      df_e[i * nSpace + I] = velocity[i * nSpace + I];
    }
    phi_e[i] = epsilon[i];
    dphi_e[i] = 1.0;
    for (I = 0; I < nSpace; I++) {
      a_e[i * nSpace + I] = nu_t / sigma_e + nu;
      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]);
    disp = c_2 * epsilon[i] * epsilon[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_de = 0.0;
    }
    r_e[i] = -c_1 * k[i] * PiD4 + disp;
    dr_e_de[i] = ddisp_de;
  }
}


x86 assembly (clang, -O0):
<kEpsilon_epsilon_3D_Evaluate_sd>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
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)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
mov    %r8,-0x50(%rbp)
mov    %r9,-0x58(%rbp)
movsd  0xe8c(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    170f <kEpsilon_epsilon_3D_Evaluate_sd+0x60f>
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     11c3 <kEpsilon_epsilon_3D_Evaluate_sd+0xc3>
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
jmp    11d3 <kEpsilon_epsilon_3D_Evaluate_sd+0xd3>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
jmp    11d3 <kEpsilon_epsilon_3D_Evaluate_sd+0xd3>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1214 <kEpsilon_epsilon_3D_Evaluate_sd+0x114>
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1224 <kEpsilon_epsilon_3D_Evaluate_sd+0x124>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1224 <kEpsilon_epsilon_3D_Evaluate_sd+0x124>
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  0xd9d(%rip),%xmm1
addsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd33(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x68(%rbp),%xmm0
jbe    12f8 <kEpsilon_epsilon_3D_Evaluate_sd+0x1f8>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x28(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  0xce6(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    13ad <kEpsilon_epsilon_3D_Evaluate_sd+0x2ad>
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x40(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x60(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x40(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x60(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x60(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x48(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x60(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    132e <kEpsilon_epsilon_3D_Evaluate_sd+0x22e>
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x38(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  0xc31(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1442 <kEpsilon_epsilon_3D_Evaluate_sd+0x342>
movsd  -0x68(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
mov    0x50(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x60(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x70(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
mov    0x58(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x60(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    13e3 <kEpsilon_epsilon_3D_Evaluate_sd+0x2e3>
mov    -0x48(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x48(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x50(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x50(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x58(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x58(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x48(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x50(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm1
mov    -0x48(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x50(%rbp),%rax
mov    -0x5c(%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    -0x48(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x58(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm1
mov    -0x48(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x58(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x50(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x58(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x50(%rbp),%rax
mov    -0x5c(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x58(%rbp),%rax
mov    -0x5c(%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,-0x78(%rbp)
movsd  -0x20(%rbp),%xmm0
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  0x9d2(%rip),%xmm1
addsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0x9c9(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
mov    0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  0x997(%rip),%xmm1
addsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jbe    16a1 <kEpsilon_epsilon_3D_Evaluate_sd+0x5a1>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x60(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x98(%rbp),%xmm0
ff
mov    0x68(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1183 <kEpsilon_epsilon_3D_Evaluate_sd+0x83>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kEpsilon_epsilon_3D_Evaluate_sd>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %r9,0x60(%rsp)
mov    %r8,0x58(%rsp)
mov    %rcx,0x50(%rsp)
mov    %rdx,-0x50(%rsp)
mov    %esi,-0x6c(%rsp)
test   %edi,%edi
jle    1909 <kEpsilon_epsilon_3D_Evaluate_sd+0x809>
mov    0xe8(%rsp),%rdx
mov    0xe0(%rsp),%r11
movapd 0xeba(%rip),%xmm4
movapd %xmm3,%xmm8
xorpd  %xmm4,%xmm8
movapd %xmm2,%xmm11
addsd  %xmm2,%xmm11
xorpd  %xmm4,%xmm1
movslq -0x6c(%rsp),%r10
mov    %edi,%eax
mov    %rax,0x40(%rsp)
mov    %r10d,%ebx
mov    %ebx,%eax
and    $0xfffffffc,%eax
mov    %rax,-0x40(%rsp)
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x8(%rsp)
shr    $0x2,%rax
add    $0x1,%rax
mov    %rbx,%rcx
neg    %rcx
mov    %rcx,0x10(%rsp)
mov    %eax,%ecx
and    $0x3,%ecx
and    $0xfffffffffffffffc,%rax
mov    %rax,-0x18(%rsp)
mov    %ebx,%eax
and    $0x3,%eax
mov    %rax,0x8(%rsp)
lea    0x0(,%rbx,8),%rax
and    $0xffffffffffffffe0,%rax
mov    %rax,(%rsp)
mov    %rcx,-0x10(%rsp)
shl    $0x5,%rcx
mov    %rcx,-0x48(%rsp)
movsd  0xe3e(%rip),%xmm10
xorpd  %xmm9,%xmm9
mov    0xd8(%rsp),%rcx
mov    0xd0(%rsp),%rbp
mov    0xa8(%rsp),%rsi
mov    0xa0(%rsp),%r8
lea    0x10(%rcx),%rax
mov    %rax,-0x20(%rsp)
lea    0x0(,%r10,8),%rax
mov    %rax,0x38(%rsp)
lea    0x10(%rbp),%rax
mov    %rax,-0x28(%rsp)
mov    -0x50(%rsp),%rax
lea    0x10(%rax),%rdi
lea    0x8(%rax),%r15
lea    0x8(%rbp),%r14
lea    0x8(%rcx),%r13
lea    0x70(%rdx),%rax
mov    %rax,-0x38(%rsp)
lea    0x70(%r11),%r12
lea    0x10(%rdx),%r9
lea    0x10(%r11),%rax
mov    %rax,-0x30(%rsp)
xor    %ecx,%ecx
mov    %rdx,%rbp
mov    %rsi,%rdx
mov    %r10,0x48(%rsp)
mov    %rbx,-0x78(%rsp)
jmp    13c5 <kEpsilon_epsilon_3D_Evaluate_sd+0x2c5>
nopl   0x0(%rax)
movsd  (%rdx,%rcx,8),%xmm4
mov    0xc0(%rsp),%rax
movsd  %xmm4,(%rax,%rcx,8)
mov    0xc8(%rsp),%rax
mov    %rbp,(%rax,%rcx,8)
mov    -0x68(%rsp),%rbp
mov    -0x78(%rsp),%rbx
mov    0x58(%rsp),%rax
movsd  0x8(%rax,%r10,8),%xmm12
movsd  0x10(%rax,%r10,8),%xmm13
mov    0x50(%rsp),%rdx
movsd  (%rdx,%r10,8),%xmm7
movsd  0x8(%rdx,%r10,8),%xmm14
addsd  (%rax,%r10,8),%xmm14
movsd  0x10(%rdx,%r10,8),%xmm4
mov    0x60(%rsp),%rax
addsd  (%rax,%r10,8),%xmm4
addsd  0x8(%rax,%r10,8),%xmm13
movsd  0x10(%rax,%r10,8),%xmm6
mulsd  %xmm12,%xmm12
mulsd  %xmm7,%xmm7
addsd  %xmm12,%xmm7
mulsd  %xmm6,%xmm6
addsd  %xmm7,%xmm6
mulsd  %xmm14,%xmm14
addsd  %xmm6,%xmm6
addsd  %xmm14,%xmm6
mulsd  %xmm4,%xmm4
addsd  %xmm6,%xmm4
mulsd  %xmm13,%xmm13
addsd  %xmm4,%xmm13
mov    0xa8(%rsp),%rdx
movsd  (%rdx,%rcx,8),%xmm4
movapd %xmm4,%xmm6
mulsd  %xmm2,%xmm6
mulsd  %xmm4,%xmm6
mov    0xa0(%rsp),%r8
movsd  (%r8,%rcx,8),%xmm7
movapd %xmm7,%xmm12
addsd  %xmm10,%xmm12
divsd  %xmm12,%xmm6
mulsd  %xmm11,%xmm4
divsd  %xmm12,%xmm4
xorpd  %xmm12,%xmm12
maxsd  %xmm6,%xmm12
cmpltsd %xmm9,%xmm6
andnpd %xmm4,%xmm6
mulsd  %xmm1,%xmm7
mulsd  %xmm13,%xmm7
addsd  %xmm12,%xmm7
mov    0xf0(%rsp),%rax
movsd  %xmm7,(%rax,%rcx,8)
mov    0xf8(%rsp),%rax
movlpd %xmm6,(%rax,%rcx,8)
add    $0x1,%rcx
mov    0x38(%rsp),%rax
add    %rax,-0x20(%rsp)
add    %rax,-0x28(%rsp)
add    %rax,%rdi
add    %rax,%r15
add    %rax,%r14
add    %rax,%r13
add    %rax,-0x38(%rsp)
add    %rax,%r12
add    %rax,%r9
add    %rax,-0x30(%rsp)
add    %rax,%rbp
add    %rax,%r11
cmp    0x40(%rsp),%rcx
je     1909 <kEpsilon_epsilon_3D_Evaluate_sd+0x809>
mov    %rbp,-0x68(%rsp)
mov    %rcx,%r10
mov    0x48(%rsp),%rsi
imul   %rsi,%r10
movsd  (%rdx,%rcx,8),%xmm14
movsd  (%r8,%rcx,8),%xmm13
mov    0xb0(%rsp),%rax
movsd  %xmm14,(%rax,%rcx,8)
mov    0xb8(%rsp),%rax
movabs $0x3ff0000000000000,%rbp
mov    %rbp,(%rax,%rcx,8)
test   %esi,%esi
jle    1260 <kEpsilon_epsilon_3D_Evaluate_sd+0x160>
lea    (%r10,%rbx,1),%rbp
mov    %rcx,%rax
imul   %rsi,%rax
mov    %rax,-0x58(%rsp)
cmp    $0x4,%esi
mov    %rbp,0x30(%rsp)
jae    14e0 <kEpsilon_epsilon_3D_Evaluate_sd+0x3e0>
xor    %r8d,%r8d
mov    -0x68(%rsp),%rbp
mov    %r8,%rax
test   $0x1,%bl
je     1481 <kEpsilon_epsilon_3D_Evaluate_sd+0x381>
movsd  (%rdx,%rcx,8),%xmm4
mov    -0x58(%rsp),%rax
add    %r8,%rax
mov    -0x50(%rsp),%rsi
mulsd  (%rsi,%rax,8),%xmm4
mov    0xd0(%rsp),%rdx
movsd  %xmm4,(%rdx,%rax,8)
movsd  (%rsi,%rax,8),%xmm4
mov    0xd8(%rsp),%rdx
movsd  %xmm4,(%rdx,%rax,8)
mov    0xa8(%rsp),%rdx
mov    %r8,%rax
or     $0x1,%rax
not    %r8
cmp    0x10(%rsp),%r8
je     1670 <kEpsilon_epsilon_3D_Evaluate_sd+0x570>
nop
movsd  (%rdx,%rcx,8),%xmm4
mulsd  -0x8(%r15,%rax,8),%xmm4
movsd  %xmm4,-0x8(%r14,%rax,8)
movsd  -0x8(%r15,%rax,8),%xmm4
movsd  %xmm4,-0x8(%r13,%rax,8)
movsd  (%rdx,%rcx,8),%xmm4
mulsd  (%r15,%rax,8),%xmm4
movsd  %xmm4,(%r14,%rax,8)
movsd  (%r15,%rax,8),%xmm4
movsd  %xmm4,0x0(%r13,%rax,8)
add    $0x2,%rax
cmp    %rax,%rbx
jne    1490 <kEpsilon_epsilon_3D_Evaluate_sd+0x390>
jmp    1670 <kEpsilon_epsilon_3D_Evaluate_sd+0x570>
nopl   (%rax)
mov    0xd0(%rsp),%rax
mov    %rdx,%r8
mov    %rax,%rdx
lea    (%rax,%r10,8),%rsi
lea    (%rax,%rbp,8),%rbx
mov    0xd8(%rsp),%rdx
lea    (%rdx,%r10,8),%rax
mov    %rax,0x18(%rsp)
lea    (%rdx,%rbp,8),%rdx
mov    %rdx,0x28(%rsp)
lea    (%r8,%rcx,8),%rax
mov    %rax,0x20(%rsp)
lea    0x8(%r8,%rcx,8),%r8
mov    -0x50(%rsp),%rax
lea    (%rax,%rbp,8),%rbp
mov    %rbp,-0x60(%rsp)
cmp    %rdx,%rsi
setb   -0x7e(%rsp)
mov    0x18(%rsp),%rbp
cmp    %rbx,%rbp
setb   -0x79(%rsp)
cmp    %r8,%rsi
setb   -0x7a(%rsp)
mov    0x20(%rsp),%rdx
cmp    %rbx,%rdx
setb   -0x7b(%rsp)
cmp    -0x60(%rsp),%rsi
lea    (%rax,%r10,8),%rax
setb   -0x7c(%rsp)
cmp    %rbx,%rax
setb   -0x7d(%rsp)
cmp    %r8,%rbp
setb   %bl
mov    0x28(%rsp),%r8
cmp    %r8,%rdx
setb   %sil
cmp    -0x60(%rsp),%rbp
setb   -0x60(%rsp)
cmp    %r8,%rax
setb   %dl
mov    -0x79(%rsp),%al
test   %al,-0x7e(%rsp)
mov    -0x68(%rsp),%rbp
jne    18f4 <kEpsilon_epsilon_3D_Evaluate_sd+0x7f4>
mov    %dl,-0x7e(%rsp)
mov    -0x7c(%rsp),%al
mov    -0x7b(%rsp),%dl
and    %dl,-0x7a(%rsp)
mov    0xa8(%rsp),%rdx
jne    17fa <kEpsilon_epsilon_3D_Evaluate_sd+0x6fa>
and    -0x7d(%rsp),%al
jne    17fa <kEpsilon_epsilon_3D_Evaluate_sd+0x6fa>
and    %sil,%bl
jne    17fa <kEpsilon_epsilon_3D_Evaluate_sd+0x6fa>
mov    $0x0,%r8d
mov    -0x7e(%rsp),%al
and    %al,-0x60(%rsp)
mov    -0x78(%rsp),%rbx
jne    1434 <kEpsilon_epsilon_3D_Evaluate_sd+0x334>
movsd  (%rdx,%rcx,8),%xmm7
unpcklpd %xmm7,%xmm7
xor    %eax,%eax
mov    (%rsp),%rdx
mov    -0x20(%rsp),%rsi
mov    -0x28(%rsp),%rbp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movupd -0x10(%rdi,%rax,1),%xmm6
movupd (%rdi,%rax,1),%xmm4
mulpd  %xmm7,%xmm6
mulpd  %xmm7,%xmm4
movupd %xmm6,-0x10(%rbp,%rax,1)
movupd %xmm4,0x0(%rbp,%rax,1)
movupd -0x10(%rdi,%rax,1),%xmm4
movupd (%rdi,%rax,1),%xmm6
movupd %xmm4,-0x10(%rsi,%rax,1)
movupd %xmm6,(%rsi,%rax,1)
add    $0x20,%rax
cmp    %rax,%rdx
jne    1610 <kEpsilon_epsilon_3D_Evaluate_sd+0x510>
mov    -0x40(%rsp),%rax
mov    %rax,%r8
cmp    %rbx,%rax
mov    0xa8(%rsp),%rdx
mov    -0x68(%rsp),%rbp
jne    1434 <kEpsilon_epsilon_3D_Evaluate_sd+0x334>
nopl   0x0(%rax)
movsd  (%rdx,%rcx,8),%xmm4
mov    0xc0(%rsp),%rax
movsd  %xmm4,(%rax,%rcx,8)
mov    0xc8(%rsp),%rax
movabs $0x3ff0000000000000,%rdx
mov    %rdx,(%rax,%rcx,8)
cmpl   $0x0,-0x6c(%rsp)
mov    0xe8(%rsp),%rbx
mov    0xe0(%rsp),%r8
jle    1283 <kEpsilon_epsilon_3D_Evaluate_sd+0x183>
movapd %xmm13,%xmm12
mulsd  %xmm3,%xmm12
mulsd  %xmm13,%xmm12
movapd %xmm14,%xmm4
addsd  %xmm10,%xmm4
divsd  %xmm4,%xmm12
movapd %xmm13,%xmm6
mulsd  %xmm8,%xmm6
mulsd  %xmm13,%xmm6
mulsd  %xmm14,%xmm14
addsd  %xmm10,%xmm14
divsd  %xmm14,%xmm6
xorpd  %xmm4,%xmm4
maxsd  %xmm12,%xmm4
cmpltsd %xmm9,%xmm12
andnpd %xmm6,%xmm12
divsd  %xmm0,%xmm4
addsd  %xmm5,%xmm4
divsd  %xmm0,%xmm12
cmpl   $0x4,-0x6c(%rsp)
jb     173e <kEpsilon_epsilon_3D_Evaluate_sd+0x63e>
lea    (%r8,%r10,8),%rax
mov    0x30(%rsp),%rsi
lea    (%rbx,%rsi,8),%rdx
cmp    %rdx,%rax
jae    17d4 <kEpsilon_epsilon_3D_Evaluate_sd+0x6d4>
lea    (%r8,%rsi,8),%rax
lea    (%rbx,%r10,8),%rdx
cmp    %rax,%rdx
jae    17d4 <kEpsilon_epsilon_3D_Evaluate_sd+0x6d4>
xor    %eax,%eax
mov    -0x78(%rsp),%rbx
mov    %rax,%rdx
not    %rdx
add    %rbx,%rdx
mov    0x8(%rsp),%rbx
test   %rbx,%rbx
je     1777 <kEpsilon_epsilon_3D_Evaluate_sd+0x677>
nopl   0x0(%rax,%rax,1)
movsd  %xmm4,(%r11,%rax,8)
movsd  %xmm12,0x0(%rbp,%rax,8)
add    $0x1,%rax
add    $0xffffffffffffffff,%rbx
jne    1760 <kEpsilon_epsilon_3D_Evaluate_sd+0x660>
cmp    $0x3,%rdx
jae    1787 <kEpsilon_epsilon_3D_Evaluate_sd+0x687>
mov    -0x58(%rsp),%r10
jmp    1283 <kEpsilon_epsilon_3D_Evaluate_sd+0x183>
mov    -0x78(%rsp),%rbx
nopl   0x0(%rax)
movsd  %xmm4,(%r11,%rax,8)
movsd  %xmm12,-0x10(%r9,%rax,8)
movsd  %xmm4,0x8(%r11,%rax,8)
movsd  %xmm12,-0x8(%r9,%rax,8)
movsd  %xmm4,0x10(%r11,%rax,8)
movsd  %xmm12,(%r9,%rax,8)
movsd  %xmm4,0x18(%r11,%rax,8)
movsd  %xmm12,0x8(%r9,%rax,8)
add    $0x4,%rax
cmp    %rax,%rbx
jne    1790 <kEpsilon_epsilon_3D_Evaluate_sd+0x690>
jmp    18ea <kEpsilon_epsilon_3D_Evaluate_sd+0x7ea>
movapd %xmm4,%xmm6
unpcklpd %xmm4,%xmm6
movapd %xmm12,%xmm7
unpcklpd %xmm12,%xmm7
cmpq   $0xc,-0x8(%rsp)
jae    1807 <kEpsilon_epsilon_3D_Evaluate_sd+0x707>
xor    %eax,%eax
mov    -0x48(%rsp),%r10
jmp    1891 <kEpsilon_epsilon_3D_Evaluate_sd+0x791>
xor    %r8d,%r8d
mov    -0x78(%rsp),%rbx
jmp    1434 <kEpsilon_epsilon_3D_Evaluate_sd+0x334>
mov    -0x18(%rsp),%rdx
xor    %eax,%eax
mov    -0x48(%rsp),%r10
mov    -0x38(%rsp),%rbp
nopl   0x0(%rax,%rax,1)
movupd %xmm6,-0x70(%r12,%rax,8)
movupd %xmm6,-0x60(%r12,%rax,8)
movupd %xmm7,-0x70(%rbp,%rax,8)
movupd %xmm7,-0x60(%rbp,%rax,8)
movupd %xmm6,-0x50(%r12,%rax,8)
movupd %xmm6,-0x40(%r12,%rax,8)
movupd %xmm7,-0x50(%rbp,%rax,8)
movupd %xmm7,-0x40(%rbp,%rax,8)
movupd %xmm6,-0x30(%r12,%rax,8)
movupd %xmm6,-0x20(%r12,%rax,8)
movupd %xmm7,-0x30(%rbp,%rax,8)
movupd %xmm7,-0x20(%rbp,%rax,8)
movupd %xmm6,-0x10(%r12,%rax,8)
movupd %xmm6,(%r12,%rax,8)
movupd %xmm7,-0x10(%rbp,%rax,8)
movupd %xmm7,0x0(%rbp,%rax,8)
add    $0x10,%rax
add    $0xfffffffffffffffc,%rdx
jne    1820 <kEpsilon_epsilon_3D_Evaluate_sd+0x720>
cmpq   $0x0,-0x10(%rsp)
je     18cf <kEpsilon_epsilon_3D_Evaluate_sd+0x7cf>
lea    (%r9,%rax,8),%rdx
mov    -0x30(%rsp),%rbp
lea    0x0(,%rax,8),%rax
add    %rbp,%rax
xor    %ebx,%ebx
nop
movupd %xmm6,-0x10(%rax,%rbx,1)
movupd %xmm6,(%rax,%rbx,1)
movupd %xmm7,-0x10(%rdx,%rbx,1)
movupd %xmm7,(%rdx,%rbx,1)
add    $0x20,%rbx
cmp    %rbx,%r10
jne    18b0 <kEpsilon_epsilon_3D_Evaluate_sd+0x7b0>
mov    -0x40(%rsp),%rdx
mov    %rdx,%rax
mov    -0x78(%rsp),%rbx
cmp    %rbx,%rdx
mov    -0x68(%rsp),%rbp
jne    1745 <kEpsilon_epsilon_3D_Evaluate_sd+0x645>
mov    -0x58(%rsp),%r10
jmp    1288 <kEpsilon_epsilon_3D_Evaluate_sd+0x188>
xor    %r8d,%r8d
mov    -0x78(%rsp),%rbx
mov    0xa8(%rsp),%rdx
jmp    1434 <kEpsilon_epsilon_3D_Evaluate_sd+0x334>
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @kEpsilon_epsilon_3D_Evaluate_sd(i32 %0, i32 %1, double %2, double %3, double %4, double %5, double %6, double %7, double* nocapture %8, double* nocapture %9, double* nocapture %10, double* nocapture %11, double* nocapture %12, double* nocapture %13, double* nocapture writeonly %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) {
%25 = icmp sgt i32 %0, 0
br i1 %25, label %26, label %356
26: ; preds = %24
%27 = fneg double %5
%28 = icmp sgt i32 %1, 0
%29 = fmul double %4, 2.000000e+00
%30 = fneg double %3
%31 = sext i32 %1 to i64
%32 = zext i32 %0 to i64
%33 = zext i32 %1 to i64
%34 = zext i32 %1 to i64
%35 = and i64 %33, 4294967292
%36 = add nsw i64 %35, -4
%37 = lshr exact i64 %36, 2
%38 = add nuw nsw i64 %37, 1
%39 = icmp ult i32 %1, 4
%40 = and i64 %33, 4294967292
%41 = icmp eq i64 %40, %33
%42 = and i64 %33, 1
%43 = icmp eq i64 %42, 0
%44 = sub nsw i64 0, %33
%45 = icmp ult i32 %1, 4
%46 = and i64 %33, 4294967292
%47 = and i64 %38, 3
%48 = icmp ult i64 %36, 12
%49 = and i64 %38, 9223372036854775804
%50 = icmp eq i64 %47, 0
%51 = icmp eq i64 %46, %33
%52 = and i64 %33, 3
%53 = icmp eq i64 %52, 0
br label %54
54: ; preds = %26, %307
%55 = phi i64 [ 0, %26 ], [ %354, %307 ]
%56 = mul i64 %55, %31
%57 = getelementptr double, double* %18, i64 %56
%58 = add i64 %56, %33
%59 = getelementptr double, double* %18, i64 %58
%60 = getelementptr double, double* %19, i64 %56
%61 = getelementptr double, double* %19, i64 %58
%62 = getelementptr double, double* %13, i64 %55
%63 = add nuw i64 %55, 1
%64 = getelementptr double, double* %13, i64 %63
%65 = getelementptr double, double* %8, i64 %56
%66 = getelementptr double, double* %8, i64 %58
%67 = mul i64 %55, %31
%68 = getelementptr double, double* %20, i64 %67
%69 = add i64 %67, %33
%70 = getelementptr double, double* %20, i64 %69
%71 = getelementptr double, double* %21, i64 %67
%72 = getelementptr double, double* %21, i64 %69
%73 = getelementptr inbounds double, double* %13, i64 %55
%74 = load double, double* %73
%75 = getelementptr inbounds double, double* %12, i64 %55
%76 = load double, double* %75
%77 = fmul double %76, %5
%78 = fmul double %76, %77
%79 = fadd double %74, 0x3EB0C6F7A0B5ED8D
%80 = fdiv double %78, %79
%81 = fmul double %76, %27
%82 = fmul double %76, %81
%83 = tail call double @llvm.fmuladd.f64(double %74, double %74, double 0x3EB0C6F7A0B5ED8D)
%84 = fdiv double %82, %83
%85 = fcmp olt double %80, 0.000000e+00
%86 = select i1 %85, double 0.000000e+00, double %84
%87 = select i1 %85, double 0.000000e+00, double %80
%88 = getelementptr inbounds double, double* %14, i64 %55
store double %74, double* %88
%89 = getelementptr inbounds double, double* %15, i64 %55
store double 1.000000e+00, double* %89
br i1 %28, label %94, label %90
90: ; preds = %54
%91 = load double, double* %73
%92 = getelementptr inbounds double, double* %16, i64 %55
store double %91, double* %92
%93 = getelementptr inbounds double, double* %17, i64 %55
store double 1.000000e+00, double* %93
br label %189
94: ; preds = %54
%95 = mul nsw i64 %55, %31
br i1 %39, label %148, label %96
96: ; preds = %94
%97 = icmp ult double* %57, %61
%98 = icmp ult double* %60, %59
%99 = and i1 %97, %98
%100 = icmp ult double* %57, %64
%101 = icmp ult double* %62, %59
%102 = and i1 %100, %101
%103 = or i1 %99, %102
%104 = icmp ult double* %57, %66
%105 = icmp ult double* %65, %59
%106 = and i1 %104, %105
%107 = or i1 %103, %106
%108 = icmp ult double* %60, %64
%109 = icmp ult double* %62, %61
%110 = and i1 %108, %109
%111 = or i1 %107, %110
%112 = icmp ult double* %60, %66
%113 = icmp ult double* %65, %61
%114 = and i1 %112, %113
%115 = or i1 %111, %114
br i1 %115, label %148, label %116
116: ; preds = %96
%117 = load double, double* %73
%118 = insertelement <2 x double> poison, double %117, i64 0
%119 = shufflevector <2 x double> %118, <2 x double> poison, <2 x i32> zeroinitializer
%120 = insertelement <2 x double> poison, double %117, i64 0
%121 = shufflevector <2 x double> %120, <2 x double> poison, <2 x i32> zeroinitializer
br label %122
122: ; preds = %122, %116
%123 = phi i64 [ 0, %116 ], [ %145, %122 ]
%124 = add nsw i64 %123, %95
%125 = getelementptr inbounds double, double* %8, i64 %124
%126 = bitcast double* %125 to <2 x double>*
%127 = load <2 x double>, <2 x double>* %126
%128 = getelementptr inbounds double, double* %125, i64 2
%129 = bitcast double* %128 to <2 x double>*
%130 = load <2 x double>, <2 x double>* %129
%131 = fmul <2 x double> %119, %127
%132 = fmul <2 x double> %121, %130
%133 = getelementptr inbounds double, double* %18, i64 %124
%134 = bitcast double* %133 to <2 x double>*
store <2 x double> %131, <2 x double>* %134
%135 = getelementptr inbounds double, double* %133, i64 2
%136 = bitcast double* %135 to <2 x double>*
store <2 x double> %132, <2 x double>* %136
%137 = bitcast double* %125 to <2 x double>*
%138 = load <2 x double>, <2 x double>* %137
%139 = bitcast double* %128 to <2 x double>*
%140 = load <2 x double>, <2 x double>* %139
%141 = getelementptr inbounds double, double* %19, i64 %124
%142 = bitcast double* %141 to <2 x double>*
store <2 x double> %138, <2 x double>* %142
%143 = getelementptr inbounds double, double* %141, i64 2
%144 = bitcast double* %143 to <2 x double>*
store <2 x double> %140, <2 x double>* %144
%145 = add nuw i64 %123, 4
%146 = icmp eq i64 %145, %40
br i1 %146, label %147, label %122
147: ; preds = %122
br i1 %41, label %185, label %148
148: ; preds = %96, %94, %147
%149 = phi i64 [ 0, %96 ], [ 0, %94 ], [ %40, %147 ]
%150 = xor i64 %149, -1
br i1 %43, label %161, label %151
151: ; preds = %148
%152 = load double, double* %73
%153 = add nsw i64 %149, %95
%154 = getelementptr inbounds double, double* %8, i64 %153
%155 = load double, double* %154
%156 = fmul double %152, %155
%157 = getelementptr inbounds double, double* %18, i64 %153
store double %156, double* %157
%158 = load double, double* %154
%159 = getelementptr inbounds double, double* %19, i64 %153
store double %158, double* %159
%160 = or i64 %149, 1
br label %161
161: ; preds = %151, %148
%162 = phi i64 [ %149, %148 ], [ %160, %151 ]
%163 = icmp eq i64 %150, %44
br i1 %163, label %185, label %164
164: ; preds = %161, %164
%165 = phi i64 [ %183, %164 ], [ %162, %161 ]
%166 = load double, double* %73
%167 = add nsw i64 %165, %95
%168 = getelementptr inbounds double, double* %8, i64 %167
%169 = load double, double* %168
%170 = fmul double %166, %169
%171 = getelementptr inbounds double, double* %18, i64 %167
store double %170, double* %171
%172 = load double, double* %168
%173 = getelementptr inbounds double, double* %19, i64 %167
store double %172, double* %173
%174 = add nuw nsw i64 %165, 1
%175 = load double, double* %73
%176 = add nsw i64 %174, %95
%177 = getelementptr inbounds double, double* %8, i64 %176
%178 = load double, double* %177
%179 = fmul double %175, %178
%180 = getelementptr inbounds double, double* %18, i64 %176
store double %179, double* %180
%181 = load double, double* %177
%182 = getelementptr inbounds double, double* %19, i64 %176
store double %181, double* %182
%183 = add nuw nsw i64 %165, 2
%184 = icmp eq i64 %183, %33
br i1 %184, label %185, label %164
185: ; preds = %161, %164, %147
%186 = load double, double* %73
%187 = getelementptr inbounds double, double* %16, i64 %55
store double %186, double* %187
%188 = getelementptr inbounds double, double* %17, i64 %55
store double 1.000000e+00, double* %188
br i1 %28, label %191, label %189
189: ; preds = %90, %185
%190 = mul nsw i64 %55, %31
br label %307
191: ; preds = %185
%192 = fdiv double %87, %2
%193 = fadd double %192, %7
%194 = mul nsw i64 %55, %31
%195 = fdiv double %86, %2
br i1 %45, label %272, label %196
196: ; preds = %191
%197 = icmp ult double* %68, %72
%198 = icmp ult double* %71, %70
%199 = and i1 %197, %198
br i1 %199, label %272, label %200
200: ; preds = %196
%201 = insertelement <2 x double> poison, double %193, i64 0
%202 = shufflevector <2 x double> %201, <2 x double> poison, <2 x i32> zeroinitializer
%203 = insertelement <2 x double> poison, double %193, i64 0
%204 = shufflevector <2 x double> %203, <2 x double> poison, <2 x i32> zeroinitializer
%205 = insertelement <2 x double> poison, double %195, i64 0
%206 = shufflevector <2 x double> %205, <2 x double> poison, <2 x i32> zeroinitializer
%207 = insertelement <2 x double> poison, double %195, i64 0
%208 = shufflevector <2 x double> %207, <2 x double> poison, <2 x i32> zeroinitializer
br i1 %48, label %254, label %209
209: ; preds = %200, %209
%210 = phi i64 [ %251, %209 ], [ 0, %200 ]
%211 = phi i64 [ %252, %209 ], [ 0, %200 ]
%212 = add nsw i64 %210, %194
%213 = getelementptr inbounds double, double* %20, i64 %212
%214 = bitcast double* %213 to <2 x double>*
store <2 x double> %202, <2 x double>* %214
%215 = getelementptr inbounds double, double* %213, i64 2
%216 = bitcast double* %215 to <2 x double>*
store <2 x double> %204, <2 x double>* %216
%217 = getelementptr inbounds double, double* %21, i64 %212
%218 = bitcast double* %217 to <2 x double>*
store <2 x double> %206, <2 x double>* %218
%219 = getelementptr inbounds double, double* %217, i64 2
%220 = bitcast double* %219 to <2 x double>*
store <2 x double> %208, <2 x double>* %220
%221 = or i64 %210, 4
%222 = add nsw i64 %221, %194
%223 = getelementptr inbounds double, double* %20, i64 %222
%224 = bitcast double* %223 to <2 x double>*
store <2 x double> %202, <2 x double>* %224
%225 = getelementptr inbounds double, double* %223, i64 2
%226 = bitcast double* %225 to <2 x double>*
store <2 x double> %204, <2 x double>* %226
%227 = getelementptr inbounds double, double* %21, i64 %222
%228 = bitcast double* %227 to <2 x double>*
store <2 x double> %206, <2 x double>* %228
%229 = getelementptr inbounds double, double* %227, i64 2
%230 = bitcast double* %229 to <2 x double>*
store <2 x double> %208, <2 x double>* %230
%231 = or i64 %210, 8
%232 = add nsw i64 %231, %194
%233 = getelementptr inbounds double, double* %20, i64 %232
%234 = bitcast double* %233 to <2 x double>*
store <2 x double> %202, <2 x double>* %234
%235 = getelementptr inbounds double, double* %233, i64 2
%236 = bitcast double* %235 to <2 x double>*
store <2 x double> %204, <2 x double>* %236
%237 = getelementptr inbounds double, double* %21, i64 %232
%238 = bitcast double* %237 to <2 x double>*
store <2 x double> %206, <2 x double>* %238
%239 = getelementptr inbounds double, double* %237, i64 2
%240 = bitcast double* %239 to <2 x double>*
store <2 x double> %208, <2 x double>* %240
%241 = or i64 %210, 12
%242 = add nsw i64 %241, %194
%243 = getelementptr inbounds double, double* %20, i64 %242
%244 = bitcast double* %243 to <2 x double>*
store <2 x double> %202, <2 x double>* %244
%245 = getelementptr inbounds double, double* %243, i64 2
%246 = bitcast double* %245 to <2 x double>*
store <2 x double> %204, <2 x double>* %246
%247 = getelementptr inbounds double, double* %21, i64 %242
%248 = bitcast double* %247 to <2 x double>*
store <2 x double> %206, <2 x double>* %248
%249 = getelementptr inbounds double, double* %247, i64 2
%250 = bitcast double* %249 to <2 x double>*
store <2 x double> %208, <2 x double>* %250
%251 = add nuw i64 %210, 16
%252 = add nuw i64 %211, 4
%253 = icmp eq i64 %252, %49
br i1 %253, label %254, label %209
254: ; preds = %209, %200
%255 = phi i64 [ 0, %200 ], [ %251, %209 ]
br i1 %50, label %271, label %256
256: ; preds = %254, %256
%257 = phi i64 [ %268, %256 ], [ %255, %254 ]
%258 = phi i64 [ %269, %256 ], [ 0, %254 ]
%259 = add nsw i64 %257, %194
%260 = getelementptr inbounds double, double* %20, i64 %259
%261 = bitcast double* %260 to <2 x double>*
store <2 x double> %202, <2 x double>* %261
%262 = getelementptr inbounds double, double* %260, i64 2
%263 = bitcast double* %262 to <2 x double>*
store <2 x double> %204, <2 x double>* %263
%264 = getelementptr inbounds double, double* %21, i64 %259
%265 = bitcast double* %264 to <2 x double>*
store <2 x double> %206, <2 x double>* %265
%266 = getelementptr inbounds double, double* %264, i64 2
%267 = bitcast double* %266 to <2 x double>*
store <2 x double> %208, <2 x double>* %267
%268 = add nuw i64 %257, 4
%269 = add i64 %258, 1
%270 = icmp eq i64 %269, %47
br i1 %270, label %271, label %256
271: ; preds = %256, %254
br i1 %51, label %307, label %272
272: ; preds = %196, %191, %271
%273 = phi i64 [ 0, %196 ], [ 0, %191 ], [ %46, %271 ]
%274 = xor i64 %273, -1
%275 = add nsw i64 %274, %33
br i1 %53, label %285, label %276
276: ; preds = %272, %276
%277 = phi i64 [ %282, %276 ], [ %273, %272 ]
%278 = phi i64 [ %283, %276 ], [ 0, %272 ]
%279 = add nsw i64 %277, %194
%280 = getelementptr inbounds double, double* %20, i64 %279
store double %193, double* %280
%281 = getelementptr inbounds double, double* %21, i64 %279
store double %195, double* %281
%282 = add nuw nsw i64 %277, 1
%283 = add i64 %278, 1
%284 = icmp eq i64 %283, %52
br i1 %284, label %285, label %276
285: ; preds = %276, %272
%286 = phi i64 [ %273, %272 ], [ %282, %276 ]
%287 = icmp ult i64 %275, 3
br i1 %287, label %307, label %288
288: ; preds = %285, %288
%289 = phi i64 [ %305, %288 ], [ %286, %285 ]
%290 = add nsw i64 %289, %194
%291 = getelementptr inbounds double, double* %20, i64 %290
store double %193, double* %291
%292 = getelementptr inbounds double, double* %21, i64 %290
store double %195, double* %292
%293 = add nuw nsw i64 %289, 1
%294 = add nsw i64 %293, %194
%295 = getelementptr inbounds double, double* %20, i64 %294
store double %193, double* %295
%296 = getelementptr inbounds double, double* %21, i64 %294
store double %195, double* %296
%297 = add nuw nsw i64 %289, 2
%298 = add nsw i64 %297, %194
%299 = getelementptr inbounds double, double* %20, i64 %298
store double %193, double* %299
%300 = getelementptr inbounds double, double* %21, i64 %298
store double %195, double* %300
%301 = add nuw nsw i64 %289, 3
%302 = add nsw i64 %301, %194
%303 = getelementptr inbounds double, double* %20, i64 %302
store double %193, double* %303
%304 = getelementptr inbounds double, double* %21, i64 %302
store double %195, double* %304
%305 = add nuw nsw i64 %289, 4
%306 = icmp eq i64 %305, %34
br i1 %306, label %307, label %288
307: ; preds = %285, %288, %271, %189
%308 = phi i64 [ %190, %189 ], [ %194, %271 ], [ %194, %288 ], [ %194, %285 ]
%309 = getelementptr inbounds double, double* %9, i64 %308
%310 = load double, double* %309
%311 = add nsw i64 %308, 1
%312 = getelementptr inbounds double, double* %10, i64 %311
%313 = load double, double* %312
%314 = fmul double %313, %313
%315 = tail call double @llvm.fmuladd.f64(double %310, double %310, double %314)
%316 = add nsw i64 %308, 2
%317 = getelementptr inbounds double, double* %11, i64 %316
%318 = load double, double* %317
%319 = tail call double @llvm.fmuladd.f64(double %318, double %318, double %315)
%320 = getelementptr inbounds double, double* %9, i64 %311
%321 = load double, double* %320
%322 = getelementptr inbounds double, double* %10, i64 %308
%323 = load double, double* %322
%324 = fadd double %321, %323
%325 = fmul double %324, %324
%326 = tail call double @llvm.fmuladd.f64(double %319, double 2.000000e+00, double %325)
%327 = getelementptr inbounds double, double* %9, i64 %316
%328 = load double, double* %327
%329 = getelementptr inbounds double, double* %11, i64 %308
%330 = load double, double* %329
%331 = fadd double %328, %330
%332 = tail call double @llvm.fmuladd.f64(double %331, double %331, double %326)
%333 = getelementptr inbounds double, double* %10, i64 %316
%334 = load double, double* %333
%335 = getelementptr inbounds double, double* %11, i64 %311
%336 = load double, double* %335
%337 = fadd double %334, %336
%338 = tail call double @llvm.fmuladd.f64(double %337, double %337, double %332)
%339 = load double, double* %73
%340 = fmul double %339, %4
%341 = fmul double %339, %340
%342 = load double, double* %75
%343 = fadd double %342, 0x3EB0C6F7A0B5ED8D
%344 = fdiv double %341, %343
%345 = fmul double %29, %339
%346 = fdiv double %345, %343
%347 = fcmp olt double %344, 0.000000e+00
%348 = select i1 %347, double 0.000000e+00, double %344
%349 = select i1 %347, double 0.000000e+00, double %346
%350 = fmul double %342, %30
%351 = tail call double @llvm.fmuladd.f64(double %350, double %338, double %348)
%352 = getelementptr inbounds double, double* %22, i64 %55
store double %351, double* %352
%353 = getelementptr inbounds double, double* %23, i64 %55
store double %349, double* %353
%354 = add nuw nsw i64 %55, 1
%355 = icmp eq i64 %354, %32
br i1 %355, label %356, label %54
356: ; preds = %307, %24
ret void
}