void VolumeAveragedNavierStokesFullDevStress_2D_Evaluate(
    const int nPoints, const double rho, const double mu,
    const double *meanGrainSize, const double *g, const double *p,
    const double *grad_p, const double *u, const double *v,
    const double *porosity, double *mom_u_acc, double *dmom_u_acc_u,
    double *mom_v_acc, double *dmom_v_acc_v, double *mass_adv,
    double *dmass_adv_u, double *dmass_adv_v, double *mom_u_adv,
    double *dmom_u_adv_u, double *dmom_u_adv_v, double *mom_v_adv,
    double *dmom_v_adv_u, double *dmom_v_adv_v, double *mom_u_diff_ten,
    double *mom_v_diff_ten, double *mom_uv_diff_ten, double *mom_vu_diff_ten,
    double *mom_u_source, double *mom_v_source, double *dmom_u_source_u,
    double *dmom_u_source_v, double *dmom_v_source_u, double *dmom_v_source_v,
    double *mom_u_ham, double *dmom_u_ham_grad_p, double *mom_v_ham,
    double *dmom_v_ham_grad_p) {
  int k;
  double Ftilde, Kinv, uc;
  for (k = 0; k < nPoints; k++) {
    mom_u_acc[k] = porosity[k] * rho * u[k];
    dmom_u_acc_u[k] = porosity[k] * rho;
    mom_v_acc[k] = porosity[k] * rho * v[k];
    dmom_v_acc_v[k] = porosity[k] * rho;
    mass_adv[k * 2 + 0] = porosity[k] * u[k];
    mass_adv[k * 2 + 1] = porosity[k] * v[k];
    dmass_adv_u[k * 2 + 0] = porosity[k];
    dmass_adv_v[k * 2 + 1] = porosity[k];
    mom_u_adv[k * 2 + 0] = porosity[k] * rho * u[k] * u[k];
    mom_u_adv[k * 2 + 1] = porosity[k] * rho * u[k] * v[k];
    dmom_u_adv_u[k * 2 + 0] = 2.0 * porosity[k] * rho * u[k];
    dmom_u_adv_u[k * 2 + 1] = porosity[k] * rho * v[k];
    dmom_u_adv_v[k * 2 + 1] = porosity[k] * rho * u[k];
    mom_v_adv[k * 2 + 0] = porosity[k] * rho * v[k] * u[k];
    mom_v_adv[k * 2 + 1] = porosity[k] * rho * v[k] * v[k];
    dmom_v_adv_u[k * 2 + 0] = porosity[k] * rho * v[k];
    dmom_v_adv_v[k * 2 + 0] = porosity[k] * rho * u[k];
    dmom_v_adv_v[k * 2 + 1] = 2.0 * porosity[k] * rho * v[k];
    mom_u_diff_ten[k * 4 + 0] = 2.0 * porosity[k] * mu;
    mom_u_diff_ten[k * 4 + 3] = porosity[k] * mu;
    mom_uv_diff_ten[k * 4 + 2] = porosity[k] * mu;
    mom_v_diff_ten[k * 4 + 0] = porosity[k] * mu;
    mom_v_diff_ten[k * 4 + 3] = 2.0 * porosity[k] * mu;
    mom_vu_diff_ten[k * 4 + 1] = porosity[k] * mu;
    uc = sqrt(u[k] * u[k] + v[k] * v[k]);
    if (fabs(1.0 - porosity[k]) < 1.0e-7)
      Ftilde = 0.0;
    else
      Ftilde =
          porosity[k] * meanGrainSize[k] * 1.0e-2 / (1.0 - porosity[k]) / mu;
    if (fabs(porosity[k]) < 1.0e-7)
      Kinv = 0.0;
    else
      Kinv = 180.0 * (1.0 - porosity[k]) * (1.0 - porosity[k]) /
             (meanGrainSize[k] * meanGrainSize[k] * porosity[k] * porosity[k] *
              porosity[k]);
    mom_u_source[k] =
        -porosity[k] * rho * g[0] +
        porosity[k] * porosity[k] * mu * Kinv * (1.0 + Ftilde * uc) * u[k];
    mom_v_source[k] =
        -porosity[k] * rho * g[1] +
        porosity[k] * porosity[k] * mu * Kinv * (1.0 + Ftilde * uc) * v[k];
    dmom_u_source_u[k] = porosity[k] * porosity[k] * mu * Kinv *
                         (1.0 + Ftilde * (uc + u[k] * u[k] / (uc + 1.0e-12)));
    dmom_u_source_v[k] = porosity[k] * porosity[k] * mu * Kinv *
                         (0.0 + Ftilde * (u[k] * v[k] / (uc + 1.0e-12)));
    dmom_v_source_v[k] = porosity[k] * porosity[k] * mu * Kinv *
                         (1.0 + Ftilde * (uc + v[k] * v[k] / (uc + 1.0e-12)));
    dmom_v_source_u[k] = porosity[k] * porosity[k] * mu * Kinv *
                         (0.0 + Ftilde * (u[k] * v[k] / (uc + 1.0e-12)));
    mom_u_ham[k] = porosity[k] * grad_p[k * 2 + 0];
    dmom_u_ham_grad_p[k * 2 + 0] = porosity[k];
    mom_v_ham[k] = porosity[k] * grad_p[k * 2 + 1];
    dmom_v_ham_grad_p[k * 2 + 1] = porosity[k];
  }
}


x86 assembly (clang, -O0):
<VolumeAveragedNavierStokesFullDevStress_2D_Evaluate>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    0xf0(%rbp),%rax
mov    0xe8(%rbp),%rax
mov    0xe0(%rbp),%rax
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)
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
mov    %rsi,-0x20(%rbp)
mov    %rdx,-0x28(%rbp)
mov    %rcx,-0x30(%rbp)
mov    %r8,-0x38(%rbp)
mov    %r9,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1be1 <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0xad1>
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x40(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x40(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x48(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x50(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x58(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x58(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0xc59(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x60(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x60(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x68(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x70(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x70(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x78(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x80(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0xac8(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x80(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0xa89(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    0x88(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    0x88(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    0x98(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    0x90(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0x9d9(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    0x90(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    0xa0(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0x60(%rbp)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0x92f(%rip),%xmm1
subsd  (%rax,%rcx,8),%xmm1
movaps 0x94b(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x90f(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1708 <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0x5f8>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    1751 <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0x641>
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  0x8ee(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0x8ca(%rip),%xmm1
subsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
divsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x8cb(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x88f(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1788 <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0x678>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    180c <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0x6fc>
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0x870(%rip),%xmm1
subsd  (%rax,%rcx,8),%xmm1
movsd  0x87b(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0x84f(%rip),%xmm1
subsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm2
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  -0x18(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm3
movsd  -0x60(%rbp),%xmm4
mulsd  %xmm4,%xmm3
movsd  0x791(%rip),%xmm4
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0xa8(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x10(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  -0x18(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm3
movsd  -0x60(%rbp),%xmm4
mulsd  %xmm4,%xmm3
movsd  0x6f8(%rip),%xmm4
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0xb0(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm3
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm3
movsd  0x69b(%rip),%xmm4
addsd  -0x60(%rbp),%xmm4
divsd  %xmm4,%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
movsd  0x662(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0xb8(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm2
movsd  0x61f(%rip),%xmm3
addsd  -0x60(%rbp),%xmm3
divsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
xorps  %xmm2,%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0xc0(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm3
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm3
movsd  0x5a7(%rip),%xmm4
addsd  -0x60(%rbp),%xmm4
divsd  %xmm4,%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
movsd  0x56e(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0xd0(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm2
movsd  0x52b(%rip),%xmm3
addsd  -0x60(%rbp),%xmm3
divsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
xorps  %xmm2,%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0xc8(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xd8(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0xe0(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xe8(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0xf0(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    11e1 <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0xd1>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<VolumeAveragedNavierStokesFullDevStress_2D_Evaluate>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %rsi,0x8(%rsp)
test   %edi,%edi
jle    172c <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0x61c>
movapd %xmm0,%xmm7
mov    0x140(%rsp),%rbx
mov    0x128(%rsp),%r11
mov    0x120(%rsp),%rbp
mov    0x118(%rsp),%r15
mov    0x110(%rsp),%r13
mov    %edi,%eax
shl    $0x2,%rax
mov    %rax,0x20(%rsp)
xorpd  %xmm8,%xmm8
movsd  0xe90(%rip),%xmm9
movapd 0xea7(%rip),%xmm10
movsd  0xe86(%rip),%xmm11
movsd  0xe8d(%rip),%xmm12
mov    0x60(%rsp),%rdi
xor    %r12d,%r12d
movsd  %xmm1,0x18(%rsp)
movsd  %xmm0,0x10(%rsp)
jmp    1362 <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0x252>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movapd %xmm3,%xmm4
mulsd  %xmm7,%xmm4
mulsd  %xmm3,%xmm3
mulsd  %xmm1,%xmm3
mulsd  %xmm2,%xmm3
movapd %xmm6,%xmm5
mulsd  %xmm0,%xmm5
addsd  %xmm9,%xmm5
mulsd  %xmm5,%xmm3
mulsd  (%r9,%r12,2),%xmm3
mulsd  (%rdx),%xmm4
subsd  %xmm4,%xmm3
mov    0xf8(%rsp),%rcx
movsd  %xmm3,(%rcx,%r12,2)
movsd  (%rax),%xmm3
movapd %xmm3,%xmm4
mulsd  %xmm7,%xmm4
mulsd  %xmm3,%xmm3
mulsd  %xmm1,%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm5,%xmm3
mulsd  (%rdi,%r12,2),%xmm3
mulsd  0x8(%rdx),%xmm4
subsd  %xmm4,%xmm3
mov    0x100(%rsp),%rcx
movsd  %xmm3,(%rcx,%r12,2)
movsd  (%rax),%xmm4
mulsd  %xmm4,%xmm4
mulsd  %xmm1,%xmm4
mulsd  %xmm2,%xmm4
movsd  (%r9,%r12,2),%xmm5
mulsd  %xmm5,%xmm5
movapd %xmm0,%xmm3
addsd  %xmm12,%xmm3
divsd  %xmm3,%xmm5
addsd  %xmm0,%xmm5
mulsd  %xmm6,%xmm5
addsd  %xmm9,%xmm5
mulsd  %xmm4,%xmm5
mov    0x108(%rsp),%rcx
movsd  %xmm5,(%rcx,%r12,2)
movsd  (%rax),%xmm4
mulsd  %xmm4,%xmm4
mulsd  %xmm1,%xmm4
mulsd  %xmm2,%xmm4
movsd  (%r9,%r12,2),%xmm5
mulsd  (%rdi,%r12,2),%xmm5
divsd  %xmm3,%xmm5
mulsd  %xmm6,%xmm5
addsd  %xmm8,%xmm5
mulsd  %xmm4,%xmm5
movsd  %xmm5,0x0(%r13,%r12,2)
movsd  (%rax),%xmm4
mulsd  %xmm4,%xmm4
mulsd  %xmm1,%xmm4
mulsd  %xmm2,%xmm4
movsd  (%rdi,%r12,2),%xmm5
mulsd  %xmm5,%xmm5
divsd  %xmm3,%xmm5
addsd  %xmm0,%xmm5
mulsd  %xmm6,%xmm5
addsd  %xmm9,%xmm5
mulsd  %xmm4,%xmm5
movsd  %xmm5,0x0(%rbp,%r12,2)
movsd  (%rax),%xmm0
mulsd  %xmm0,%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm2,%xmm0
movsd  (%r9,%r12,2),%xmm2
mulsd  (%rdi,%r12,2),%xmm2
divsd  %xmm3,%xmm2
mulsd  %xmm6,%xmm2
addsd  %xmm8,%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,(%r15,%r12,2)
movsd  (%rax),%xmm0
mulsd  (%r8,%r12,4),%xmm0
movsd  %xmm0,(%r11,%r12,2)
movsd  (%rax),%xmm0
mov    0x130(%rsp),%rcx
movsd  %xmm0,(%rcx,%r12,4)
movsd  (%rax),%xmm0
mulsd  0x8(%r8,%r12,4),%xmm0
mov    0x138(%rsp),%rcx
movsd  %xmm0,(%rcx,%r12,2)
movsd  (%rax),%xmm0
movsd  %xmm0,0x8(%rbx,%r12,4)
add    $0x4,%r12
cmp    %r12,0x20(%rsp)
je     172c <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0x61c>
mov    0x68(%rsp),%rsi
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
mulsd  (%r9,%r12,2),%xmm0
mov    0x70(%rsp),%rax
movsd  %xmm0,(%rax,%r12,2)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
mov    0x78(%rsp),%rax
movsd  %xmm0,(%rax,%r12,2)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
mulsd  (%rdi,%r12,2),%xmm0
mov    0x80(%rsp),%rax
movsd  %xmm0,(%rax,%r12,2)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
mov    0x88(%rsp),%rax
movsd  %xmm0,(%rax,%r12,2)
movsd  (%rsi,%r12,2),%xmm0
mulsd  (%r9,%r12,2),%xmm0
mov    0x90(%rsp),%rax
movsd  %xmm0,(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mulsd  (%rdi,%r12,2),%xmm0
movsd  %xmm0,0x8(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mov    0x98(%rsp),%rax
movsd  %xmm0,(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mov    0xa0(%rsp),%rax
movsd  %xmm0,0x8(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
movsd  (%r9,%r12,2),%xmm2
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mov    0xa8(%rsp),%rax
movsd  %xmm0,(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
mulsd  (%r9,%r12,2),%xmm0
mulsd  (%rdi,%r12,2),%xmm0
movsd  %xmm0,0x8(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
addsd  %xmm0,%xmm0
mulsd  %xmm7,%xmm0
mulsd  (%r9,%r12,2),%xmm0
mov    0xb0(%rsp),%rax
movsd  %xmm0,(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
mulsd  (%rdi,%r12,2),%xmm0
movsd  %xmm0,0x8(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
mulsd  (%r9,%r12,2),%xmm0
mov    0xb8(%rsp),%rax
movsd  %xmm0,0x8(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
mulsd  (%rdi,%r12,2),%xmm0
mulsd  (%r9,%r12,2),%xmm0
mov    0xc0(%rsp),%rax
movsd  %xmm0,(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
movsd  (%rdi,%r12,2),%xmm2
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
movsd  %xmm0,0x8(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
mulsd  (%rdi,%r12,2),%xmm0
mov    0xc8(%rsp),%rax
movsd  %xmm0,(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm7,%xmm0
mulsd  (%r9,%r12,2),%xmm0
mov    0xd0(%rsp),%rax
movsd  %xmm0,(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
addsd  %xmm0,%xmm0
mulsd  %xmm7,%xmm0
mulsd  (%rdi,%r12,2),%xmm0
movsd  %xmm0,0x8(%rax,%r12,4)
movsd  (%rsi,%r12,2),%xmm0
addsd  %xmm0,%xmm0
mulsd  %xmm1,%xmm0
mov    %r12d,%eax
shl    $0x3,%rax
mov    0xd8(%rsp),%rcx
mov    %rdi,%r14
mov    %rcx,%rdi
movsd  %xmm0,(%rcx,%rax,1)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm1,%xmm0
lea    0x3(%r12),%ecx
movsd  %xmm0,(%rdi,%rcx,8)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm1,%xmm0
lea    0x2(%r12),%edi
mov    0xe8(%rsp),%r10
movsd  %xmm0,(%r10,%rdi,8)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm1,%xmm0
mov    0xe0(%rsp),%rdi
movsd  %xmm0,(%rdi,%rax,1)
movsd  (%rsi,%r12,2),%xmm0
addsd  %xmm0,%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rdi,%rcx,8)
movsd  (%rsi,%r12,2),%xmm0
mulsd  %xmm1,%xmm0
lea    0x1(%r12),%eax
mov    0xf0(%rsp),%rcx
movsd  %xmm0,(%rcx,%rax,8)
movsd  (%r9,%r12,2),%xmm0
movsd  (%r14,%r12,2),%xmm2
mulsd  %xmm2,%xmm2
mulsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm8,%xmm0
jb     1620 <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0x510>
mov    %r14,%rdi
sqrtsd %xmm0,%xmm0
jmp    168f <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0x57f>
nop
mov    %r8,%r15
mov    %rdx,%r13
mov    %r9,%rbp
call   1030 <sqrt@plt>
mov    %r14,%rdi
movsd  0x9de(%rip),%xmm12
movsd  0x9c5(%rip),%xmm11
movapd 0x9d4(%rip),%xmm10
movsd  0x9ab(%rip),%xmm9
xorpd  %xmm8,%xmm8
mov    0x128(%rsp),%r11
mov    %rbp,%r9
movsd  0x10(%rsp),%xmm7
movsd  0x18(%rsp),%xmm1
mov    %r13,%rdx
mov    0x110(%rsp),%r13
mov    %r15,%r8
mov    0x118(%rsp),%r15
mov    0x120(%rsp),%rbp
mov    0x68(%rsp),%rax
lea    (%rax,%r12,2),%rax
movsd  (%rax),%xmm3
movapd %xmm9,%xmm4
subsd  %xmm3,%xmm4
movapd %xmm4,%xmm5
andpd  %xmm10,%xmm5
xorpd  %xmm2,%xmm2
ucomisd %xmm5,%xmm11
xorpd  %xmm6,%xmm6
ja     16dc <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0x5cc>
mov    0x8(%rsp),%rcx
movsd  (%rcx,%r12,2),%xmm6
mulsd  %xmm3,%xmm6
mulsd  0x93c(%rip),%xmm6
divsd  %xmm4,%xmm6
divsd  %xmm1,%xmm6
movapd %xmm3,%xmm5
andpd  %xmm10,%xmm5
ucomisd %xmm5,%xmm11
ja     11b0 <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0xa0>
mov    0x8(%rsp),%rcx
movsd  (%rcx,%r12,2),%xmm5
mulsd  %xmm5,%xmm5
mulsd  %xmm3,%xmm5
movapd 0x925(%rip),%xmm2
unpcklpd %xmm5,%xmm2
unpcklpd %xmm3,%xmm4
mulpd  %xmm4,%xmm2
mulpd  %xmm4,%xmm2
movapd %xmm2,%xmm4
unpckhpd %xmm2,%xmm4
divsd  %xmm4,%xmm2
jmp    11b0 <VolumeAveragedNavierStokesFullDevStress_2D_Evaluate+0xa0>
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @VolumeAveragedNavierStokesFullDevStress_2D_Evaluate(i32 %0, double %1, double %2, double* nocapture %3, double* nocapture %4, double* nocapture readnone %5, double* nocapture %6, double* nocapture %7, double* nocapture %8, double* %9, double* nocapture writeonly %10, double* nocapture writeonly %11, double* nocapture writeonly %12, double* nocapture writeonly %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, 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) {
%38 = icmp sgt i32 %0, 0
br i1 %38, label %39, label %284
39: ; preds = %37
%40 = getelementptr inbounds double, double* %4, i64 1
%41 = zext i32 %0 to i64
br label %42
42: ; preds = %39, %197
%43 = phi i64 [ 0, %39 ], [ %282, %197 ]
%44 = getelementptr inbounds double, double* %9, i64 %43
%45 = load double, double* %44
%46 = fmul double %45, %1
%47 = getelementptr inbounds double, double* %7, i64 %43
%48 = load double, double* %47
%49 = fmul double %46, %48
%50 = getelementptr inbounds double, double* %10, i64 %43
store double %49, double* %50
%51 = load double, double* %44
%52 = fmul double %51, %1
%53 = getelementptr inbounds double, double* %11, i64 %43
store double %52, double* %53
%54 = load double, double* %44
%55 = fmul double %54, %1
%56 = getelementptr inbounds double, double* %8, i64 %43
%57 = load double, double* %56
%58 = fmul double %55, %57
%59 = getelementptr inbounds double, double* %12, i64 %43
store double %58, double* %59
%60 = load double, double* %44
%61 = fmul double %60, %1
%62 = getelementptr inbounds double, double* %13, i64 %43
store double %61, double* %62
%63 = load double, double* %44
%64 = load double, double* %47
%65 = fmul double %63, %64
%66 = shl nuw nsw i64 %43, 1
%67 = getelementptr inbounds double, double* %14, i64 %66
store double %65, double* %67
%68 = load double, double* %44
%69 = load double, double* %56
%70 = fmul double %68, %69
%71 = or i64 %66, 1
%72 = getelementptr inbounds double, double* %14, i64 %71
store double %70, double* %72
%73 = load double, double* %44
%74 = getelementptr inbounds double, double* %15, i64 %66
store double %73, double* %74
%75 = load double, double* %44
%76 = getelementptr inbounds double, double* %16, i64 %71
store double %75, double* %76
%77 = load double, double* %44
%78 = fmul double %77, %1
%79 = load double, double* %47
%80 = fmul double %78, %79
%81 = fmul double %79, %80
%82 = getelementptr inbounds double, double* %17, i64 %66
store double %81, double* %82
%83 = load double, double* %44
%84 = fmul double %83, %1
%85 = load double, double* %47
%86 = fmul double %84, %85
%87 = load double, double* %56
%88 = fmul double %86, %87
%89 = getelementptr inbounds double, double* %17, i64 %71
store double %88, double* %89
%90 = load double, double* %44
%91 = fmul double %90, 2.000000e+00
%92 = fmul double %91, %1
%93 = load double, double* %47
%94 = fmul double %93, %92
%95 = getelementptr inbounds double, double* %18, i64 %66
store double %94, double* %95
%96 = load double, double* %44
%97 = fmul double %96, %1
%98 = load double, double* %56
%99 = fmul double %97, %98
%100 = getelementptr inbounds double, double* %18, i64 %71
store double %99, double* %100
%101 = load double, double* %44
%102 = fmul double %101, %1
%103 = load double, double* %47
%104 = fmul double %102, %103
%105 = getelementptr inbounds double, double* %19, i64 %71
store double %104, double* %105
%106 = load double, double* %44
%107 = fmul double %106, %1
%108 = load double, double* %56
%109 = fmul double %107, %108
%110 = load double, double* %47
%111 = fmul double %109, %110
%112 = getelementptr inbounds double, double* %20, i64 %66
store double %111, double* %112
%113 = load double, double* %44
%114 = fmul double %113, %1
%115 = load double, double* %56
%116 = fmul double %114, %115
%117 = fmul double %115, %116
%118 = getelementptr inbounds double, double* %20, i64 %71
store double %117, double* %118
%119 = load double, double* %44
%120 = fmul double %119, %1
%121 = load double, double* %56
%122 = fmul double %120, %121
%123 = getelementptr inbounds double, double* %21, i64 %66
store double %122, double* %123
%124 = load double, double* %44
%125 = fmul double %124, %1
%126 = load double, double* %47
%127 = fmul double %125, %126
%128 = getelementptr inbounds double, double* %22, i64 %66
store double %127, double* %128
%129 = load double, double* %44
%130 = fmul double %129, 2.000000e+00
%131 = fmul double %130, %1
%132 = load double, double* %56
%133 = fmul double %132, %131
%134 = getelementptr inbounds double, double* %22, i64 %71
store double %133, double* %134
%135 = load double, double* %44
%136 = fmul double %135, 2.000000e+00
%137 = fmul double %136, %2
%138 = trunc i64 %43 to i32
%139 = shl nsw i32 %138, 2
%140 = zext i32 %139 to i64
%141 = getelementptr inbounds double, double* %23, i64 %140
store double %137, double* %141
%142 = load double, double* %44
%143 = fmul double %142, %2
%144 = or i32 %139, 3
%145 = zext i32 %144 to i64
%146 = getelementptr inbounds double, double* %23, i64 %145
store double %143, double* %146
%147 = load double, double* %44
%148 = fmul double %147, %2
%149 = or i32 %139, 2
%150 = zext i32 %149 to i64
%151 = getelementptr inbounds double, double* %25, i64 %150
store double %148, double* %151
%152 = load double, double* %44
%153 = fmul double %152, %2
%154 = getelementptr inbounds double, double* %24, i64 %140
store double %153, double* %154
%155 = load double, double* %44
%156 = fmul double %155, 2.000000e+00
%157 = fmul double %156, %2
%158 = getelementptr inbounds double, double* %24, i64 %145
store double %157, double* %158
%159 = load double, double* %44
%160 = fmul double %159, %2
%161 = or i32 %139, 1
%162 = zext i32 %161 to i64
%163 = getelementptr inbounds double, double* %26, i64 %162
store double %160, double* %163
%164 = load double, double* %47
%165 = load double, double* %56
%166 = fmul double %165, %165
%167 = tail call double @llvm.fmuladd.f64(double %164, double %164, double %166)
%168 = tail call double @sqrt(double %167)
%169 = load double, double* %44
%170 = fsub double 1.000000e+00, %169
%171 = tail call double @llvm.fabs.f64(double %170)
%172 = fcmp olt double %171, 0x3E7AD7F29ABCAF48
br i1 %172, label %180, label %173
173: ; preds = %42
%174 = getelementptr inbounds double, double* %3, i64 %43
%175 = load double, double* %174
%176 = fmul double %169, %175
%177 = fmul double %176, 1.000000e-02
%178 = fdiv double %177, %170
%179 = fdiv double %178, %2
br label %180
180: ; preds = %42, %173
%181 = phi double [ %179, %173 ], [ 0.000000e+00, %42 ]
%182 = tail call double @llvm.fabs.f64(double %169)
%183 = fcmp olt double %182, 0x3E7AD7F29ABCAF48
br i1 %183, label %197, label %184
184: ; preds = %180
%185 = getelementptr inbounds double, double* %3, i64 %43
%186 = load double, double* %185
%187 = fmul double %186, %186
%188 = fmul double %169, %187
%189 = insertelement <2 x double> poison, double %170, i64 0
%190 = insertelement <2 x double> %189, double %169, i64 1
%191 = insertelement <2 x double> <double 1.800000e+02, double poison>, double %188, i64 1
%192 = fmul <2 x double> %190, %191
%193 = fmul <2 x double> %190, %192
%194 = extractelement <2 x double> %193, i64 0
%195 = extractelement <2 x double> %193, i64 1
%196 = fdiv double %194, %195
br label %197
197: ; preds = %180, %184
%198 = phi double [ %196, %184 ], [ 0.000000e+00, %180 ]
%199 = fneg double %169
%200 = fmul double %199, %1
%201 = load double, double* %4
%202 = fmul double %169, %169
%203 = fmul double %202, %2
%204 = fmul double %203, %198
%205 = tail call double @llvm.fmuladd.f64(double %181, double %168, double 1.000000e+00)
%206 = fmul double %205, %204
%207 = load double, double* %47
%208 = fmul double %206, %207
%209 = tail call double @llvm.fmuladd.f64(double %200, double %201, double %208)
%210 = getelementptr inbounds double, double* %27, i64 %43
store double %209, double* %210
%211 = load double, double* %44
%212 = fneg double %211
%213 = fmul double %212, %1
%214 = load double, double* %40
%215 = fmul double %211, %211
%216 = fmul double %215, %2
%217 = fmul double %198, %216
%218 = fmul double %205, %217
%219 = load double, double* %56
%220 = fmul double %219, %218
%221 = tail call double @llvm.fmuladd.f64(double %213, double %214, double %220)
%222 = getelementptr inbounds double, double* %28, i64 %43
store double %221, double* %222
%223 = load double, double* %44
%224 = fmul double %223, %223
%225 = fmul double %224, %2
%226 = fmul double %198, %225
%227 = load double, double* %47
%228 = fmul double %227, %227
%229 = fadd double %168, 0x3D719799812DEA11
%230 = fdiv double %228, %229
%231 = fadd double %168, %230
%232 = tail call double @llvm.fmuladd.f64(double %181, double %231, double 1.000000e+00)
%233 = fmul double %226, %232
%234 = getelementptr inbounds double, double* %29, i64 %43
store double %233, double* %234
%235 = load double, double* %44
%236 = fmul double %235, %235
%237 = fmul double %236, %2
%238 = fmul double %198, %237
%239 = load double, double* %47
%240 = load double, double* %56
%241 = fmul double %239, %240
%242 = fdiv double %241, %229
%243 = tail call double @llvm.fmuladd.f64(double %181, double %242, double 0.000000e+00)
%244 = fmul double %238, %243
%245 = getelementptr inbounds double, double* %30, i64 %43
store double %244, double* %245
%246 = load double, double* %44
%247 = fmul double %246, %246
%248 = fmul double %247, %2
%249 = fmul double %198, %248
%250 = load double, double* %56
%251 = fmul double %250, %250
%252 = fdiv double %251, %229
%253 = fadd double %168, %252
%254 = tail call double @llvm.fmuladd.f64(double %181, double %253, double 1.000000e+00)
%255 = fmul double %249, %254
%256 = getelementptr inbounds double, double* %32, i64 %43
store double %255, double* %256
%257 = load double, double* %44
%258 = fmul double %257, %257
%259 = fmul double %258, %2
%260 = fmul double %198, %259
%261 = load double, double* %47
%262 = load double, double* %56
%263 = fmul double %261, %262
%264 = fdiv double %263, %229
%265 = tail call double @llvm.fmuladd.f64(double %181, double %264, double 0.000000e+00)
%266 = fmul double %260, %265
%267 = getelementptr inbounds double, double* %31, i64 %43
store double %266, double* %267
%268 = load double, double* %44
%269 = getelementptr inbounds double, double* %6, i64 %66
%270 = load double, double* %269
%271 = fmul double %268, %270
%272 = getelementptr inbounds double, double* %33, i64 %43
store double %271, double* %272
%273 = load double, double* %44
%274 = getelementptr inbounds double, double* %34, i64 %66
store double %273, double* %274
%275 = load double, double* %44
%276 = getelementptr inbounds double, double* %6, i64 %71
%277 = load double, double* %276
%278 = fmul double %275, %277
%279 = getelementptr inbounds double, double* %35, i64 %43
store double %278, double* %279
%280 = load double, double* %44
%281 = getelementptr inbounds double, double* %36, i64 %71
store double %280, double* %281
%282 = add nuw nsw i64 %43, 1
%283 = icmp eq i64 %282, %41
br i1 %283, label %284, label %42
284: ; preds = %197, %37
ret void
}