void NavierStokes_3D_Evaluate(
    const int nPoints, const double rho, const double nu, const double *g,
    const double *p, const double *grad_p, const double *u, const double *v,
    const double *w, double *mom_u_acc, double *dmom_u_acc_u, double *mom_v_acc,
    double *dmom_v_acc_v, double *mom_w_acc, double *dmom_w_acc_w,
    double *mass_adv, double *dmass_adv_u, double *dmass_adv_v,
    double *dmass_adv_w, double *mom_u_adv, double *dmom_u_adv_u,
    double *dmom_u_adv_v, double *dmom_u_adv_w, double *mom_v_adv,
    double *dmom_v_adv_u, double *dmom_v_adv_v, double *dmom_v_adv_w,
    double *mom_w_adv, double *dmom_w_adv_u, double *dmom_w_adv_v,
    double *dmom_w_adv_w, double *mom_u_diff_ten, double *mom_v_diff_ten,
    double *mom_w_diff_ten, double *mom_u_source, double *mom_v_source,
    double *mom_w_source, double *mom_u_ham, double *dmom_u_ham_grad_p,
    double *mom_v_ham, double *dmom_v_ham_grad_p, double *mom_w_ham,
    double *dmom_w_ham_grad_p) {
  int k;
  for (k = 0; k < nPoints; k++) {
    mom_u_acc[k] = u[k];
    dmom_u_acc_u[k] = 1.0;
    mom_v_acc[k] = v[k];
    dmom_v_acc_v[k] = 1.0;
    mom_w_acc[k] = w[k];
    dmom_w_acc_w[k] = 1.0;
    mass_adv[k * 3 + 0] = u[k];
    mass_adv[k * 3 + 1] = v[k];
    mass_adv[k * 3 + 2] = w[k];
    dmass_adv_u[k * 3 + 0] = 1.0;
    dmass_adv_v[k * 3 + 1] = 1.0;
    dmass_adv_w[k * 3 + 2] = 1.0;
    mom_u_adv[k * 3 + 0] = u[k] * u[k];
    mom_u_adv[k * 3 + 1] = u[k] * v[k];
    mom_u_adv[k * 3 + 2] = u[k] * w[k];
    dmom_u_adv_u[k * 3 + 0] = 2.0 * u[k];
    dmom_u_adv_u[k * 3 + 1] = v[k];
    dmom_u_adv_u[k * 3 + 2] = w[k];
    dmom_u_adv_v[k * 3 + 1] = u[k];
    dmom_u_adv_w[k * 3 + 2] = u[k];
    mom_v_adv[k * 3 + 0] = v[k] * u[k];
    mom_v_adv[k * 3 + 1] = v[k] * v[k];
    mom_v_adv[k * 3 + 2] = v[k] * w[k];
    dmom_v_adv_u[k * 3 + 0] = v[k];
    dmom_v_adv_v[k * 3 + 0] = u[k];
    dmom_v_adv_v[k * 3 + 1] = 2.0 * v[k];
    dmom_v_adv_v[k * 3 + 2] = w[k];
    dmom_v_adv_w[k * 3 + 2] = v[k];
    mom_w_adv[k * 3 + 0] = w[k] * u[k];
    mom_w_adv[k * 3 + 1] = w[k] * v[k];
    mom_w_adv[k * 3 + 2] = w[k] * w[k];
    dmom_w_adv_u[k * 3 + 0] = w[k];
    dmom_w_adv_v[k * 3 + 0] = w[k];
    dmom_w_adv_w[k * 3 + 0] = u[k];
    dmom_w_adv_w[k * 3 + 1] = v[k];
    dmom_w_adv_w[k * 3 + 2] = 2.0 * w[k];
    mom_u_diff_ten[k * 9 + 0] = nu;
    mom_u_diff_ten[k * 9 + 4] = nu;
    mom_u_diff_ten[k * 9 + 8] = nu;
    mom_v_diff_ten[k * 9 + 0] = nu;
    mom_v_diff_ten[k * 9 + 4] = nu;
    mom_v_diff_ten[k * 9 + 8] = nu;
    mom_w_diff_ten[k * 9 + 0] = nu;
    mom_w_diff_ten[k * 9 + 4] = nu;
    mom_w_diff_ten[k * 9 + 8] = nu;
    mom_u_source[k] = -g[0];
    mom_v_source[k] = -g[1];
    mom_w_source[k] = -g[2];
    mom_u_ham[k] = grad_p[k * 3 + 0] / rho;
    dmom_u_ham_grad_p[k * 3 + 0] = 1.0 / rho;
    mom_v_ham[k] = grad_p[k * 3 + 1] / rho;
    dmom_v_ham_grad_p[k * 3 + 1] = 1.0 / rho;
    mom_w_ham[k] = grad_p[k * 3 + 2] / rho;
    dmom_w_ham_grad_p[k * 3 + 2] = 1.0 / rho;
  }
}


x86 assembly (clang, -O0):
<NavierStokes_3D_Evaluate>:
push   %rbp
mov    %rsp,%rbp
mov    0x120(%rbp),%rax
mov    0x118(%rbp),%rax
mov    0x110(%rbp),%rax
mov    0x108(%rbp),%rax
mov    0x100(%rbp),%rax
mov    0xf8(%rbp),%rax
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    1972 <NavierStokes_3D_Evaluate+0x872>
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0xdd3(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0xda4(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0xd75(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x48(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x48(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x48(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x50(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  0xcfa(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x58(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  0xcdf(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x60(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  0xcc4(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x68(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%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    0x68(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%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    0x68(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0xc30(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
mov    0x70(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x70(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x70(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x78(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x80(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x88(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%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
mulsd  (%rax,%rcx,8),%xmm0
mov    0x88(%rbp),%rax
imul   $0x3,-0x44(%rbp),%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    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x88(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x90(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x98(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0xaaf(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
mov    0x98(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x98(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0xa0(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xa8(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%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    0xa8(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%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    0xa8(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0xb0(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0xb8(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0xc0(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0xc0(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0x922(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
mov    0xc0(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x18(%rbp),%xmm0
mov    0xc8(%rbp),%rax
imul   $0x9,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x18(%rbp),%xmm0
mov    0xc8(%rbp),%rax
imul   $0x9,-0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x18(%rbp),%xmm0
mov    0xc8(%rbp),%rax
imul   $0x9,-0x44(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x18(%rbp),%xmm0
mov    0xd0(%rbp),%rax
imul   $0x9,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x18(%rbp),%xmm0
mov    0xd0(%rbp),%rax
imul   $0x9,-0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x18(%rbp),%xmm0
mov    0xd0(%rbp),%rax
imul   $0x9,-0x44(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x18(%rbp),%xmm0
mov    0xd8(%rbp),%rax
imul   $0x9,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x18(%rbp),%xmm0
mov    0xd8(%rbp),%rax
imul   $0x9,-0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x18(%rbp),%xmm0
mov    0xd8(%rbp),%rax
imul   $0x9,-0x44(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0xe0(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0xe8(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0xf0(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  -0x10(%rbp),%xmm0
mov    0xf8(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x74d(%rip),%xmm0
divsd  -0x10(%rbp),%xmm0
mov    0x100(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  -0x10(%rbp),%xmm0
mov    0x108(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x702(%rip),%xmm0
divsd  -0x10(%rbp),%xmm0
mov    0x110(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  -0x10(%rbp),%xmm0
mov    0x118(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x6b7(%rip),%xmm0
divsd  -0x10(%rbp),%xmm0
mov    0x120(%rbp),%rax
imul   $0x3,-0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    11f7 <NavierStokes_3D_Evaluate+0xf7>
pop    %rbp
ret

x86 assembly (clang, -O2):
<NavierStokes_3D_Evaluate>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
test   %edi,%edi
jle    14b4 <NavierStokes_3D_Evaluate+0x3b4>
movsd  0xee6(%rip),%xmm2
divsd  %xmm0,%xmm2
mov    %edi,%eax
shl    $0x3,%rax
lea    (%rax,%rax,2),%rax
mov    %rax,-0x8(%rsp)
movaps 0xedc(%rip),%xmm3
mov    0x90(%rsp),%r12
mov    0x70(%rsp),%rdx
mov    0x38(%rsp),%r15
xor    %ebp,%ebp
movabs $0x3ff0000000000000,%r10
xor    %edi,%edi
xor    %r11d,%r11d
nopw   0x0(%rax,%rax,1)
movsd  (%r8,%rbp,1),%xmm4
mov    0x40(%rsp),%rax
movsd  %xmm4,(%rax,%rbp,1)
mov    0x48(%rsp),%rax
mov    %r10,(%rax,%rbp,1)
movsd  (%r9,%rbp,1),%xmm4
mov    0x50(%rsp),%rax
movsd  %xmm4,(%rax,%rbp,1)
mov    0x58(%rsp),%rax
mov    %r10,(%rax,%rbp,1)
movsd  (%r15,%rbp,1),%xmm4
mov    0x60(%rsp),%rax
movsd  %xmm4,(%rax,%rbp,1)
mov    0x68(%rsp),%rax
mov    %r10,(%rax,%rbp,1)
movsd  (%r8,%rbp,1),%xmm4
movsd  %xmm4,(%rdx,%rdi,1)
movsd  (%r9,%rbp,1),%xmm4
movsd  %xmm4,0x8(%rdx,%rdi,1)
movsd  (%r15,%rbp,1),%xmm4
movsd  %xmm4,0x10(%rdx,%rdi,1)
mov    0x78(%rsp),%rax
mov    %r10,(%rax,%rdi,1)
mov    0x80(%rsp),%rax
mov    %r10,0x8(%rax,%rdi,1)
mov    0x88(%rsp),%rax
mov    %r10,0x10(%rax,%rdi,1)
movsd  (%r8,%rbp,1),%xmm4
mulsd  %xmm4,%xmm4
movsd  %xmm4,(%r12,%rdi,1)
movsd  (%r8,%rbp,1),%xmm4
mulsd  (%r9,%rbp,1),%xmm4
movsd  %xmm4,0x8(%r12,%rdi,1)
movsd  (%r8,%rbp,1),%xmm4
mulsd  (%r15,%rbp,1),%xmm4
movsd  %xmm4,0x10(%r12,%rdi,1)
movsd  (%r8,%rbp,1),%xmm4
addsd  %xmm4,%xmm4
mov    0x98(%rsp),%rax
movsd  %xmm4,(%rax,%rdi,1)
movsd  (%r9,%rbp,1),%xmm4
movsd  %xmm4,0x8(%rax,%rdi,1)
movsd  (%r15,%rbp,1),%xmm4
movsd  %xmm4,0x10(%rax,%rdi,1)
movsd  (%r8,%rbp,1),%xmm4
mov    0xa0(%rsp),%rax
movsd  %xmm4,0x8(%rax,%rdi,1)
movsd  (%r8,%rbp,1),%xmm4
mov    0xa8(%rsp),%rax
movsd  %xmm4,0x10(%rax,%rdi,1)
movsd  (%r9,%rbp,1),%xmm4
mulsd  (%r8,%rbp,1),%xmm4
mov    0xb0(%rsp),%rax
movsd  %xmm4,(%rax,%rdi,1)
movsd  (%r9,%rbp,1),%xmm4
mulsd  %xmm4,%xmm4
movsd  %xmm4,0x8(%rax,%rdi,1)
movsd  (%r9,%rbp,1),%xmm4
mulsd  (%r15,%rbp,1),%xmm4
movsd  %xmm4,0x10(%rax,%rdi,1)
movsd  (%r9,%rbp,1),%xmm4
mov    0xb8(%rsp),%rax
movsd  %xmm4,(%rax,%rdi,1)
movsd  (%r8,%rbp,1),%xmm4
mov    0xc0(%rsp),%rax
movsd  %xmm4,(%rax,%rdi,1)
movsd  (%r9,%rbp,1),%xmm4
addsd  %xmm4,%xmm4
movsd  %xmm4,0x8(%rax,%rdi,1)
movsd  (%r15,%rbp,1),%xmm4
movsd  %xmm4,0x10(%rax,%rdi,1)
movsd  (%r9,%rbp,1),%xmm4
mov    0xc8(%rsp),%rax
movsd  %xmm4,0x10(%rax,%rdi,1)
movsd  (%r15,%rbp,1),%xmm4
mulsd  (%r8,%rbp,1),%xmm4
mov    0xd0(%rsp),%rax
movsd  %xmm4,(%rax,%rdi,1)
movsd  (%r15,%rbp,1),%xmm4
mulsd  (%r9,%rbp,1),%xmm4
movsd  %xmm4,0x8(%rax,%rdi,1)
movsd  (%r15,%rbp,1),%xmm4
mulsd  %xmm4,%xmm4
movsd  %xmm4,0x10(%rax,%rdi,1)
movsd  (%r15,%rbp,1),%xmm4
mov    0xd8(%rsp),%rax
movsd  %xmm4,(%rax,%rdi,1)
movsd  (%r15,%rbp,1),%xmm4
mov    0xe0(%rsp),%rax
movsd  %xmm4,(%rax,%rdi,1)
movsd  (%r8,%rbp,1),%xmm4
mov    0xe8(%rsp),%rax
movsd  %xmm4,(%rax,%rdi,1)
movsd  (%r9,%rbp,1),%xmm4
movsd  %xmm4,0x8(%rax,%rdi,1)
movsd  (%r15,%rbp,1),%xmm4
addsd  %xmm4,%xmm4
movsd  %xmm4,0x10(%rax,%rdi,1)
mov    %r11d,%r13d
mov    0xf0(%rsp),%rax
movsd  %xmm1,(%rax,%r13,8)
lea    0x4(%r11),%ebx
movsd  %xmm1,(%rax,%rbx,8)
lea    0x8(%r11),%r14d
movsd  %xmm1,(%rax,%r14,8)
mov    0xf8(%rsp),%rax
movsd  %xmm1,(%rax,%r13,8)
movsd  %xmm1,(%rax,%rbx,8)
movsd  %xmm1,(%rax,%r14,8)
mov    0x100(%rsp),%rax
movsd  %xmm1,(%rax,%r13,8)
movsd  %xmm1,(%rax,%rbx,8)
movsd  %xmm1,(%rax,%r14,8)
movsd  (%rsi),%xmm4
xorps  %xmm3,%xmm4
mov    0x108(%rsp),%rbx
movlps %xmm4,(%rbx,%rbp,1)
movsd  0x8(%rsi),%xmm4
xorps  %xmm3,%xmm4
mov    0x110(%rsp),%rbx
movlps %xmm4,(%rbx,%rbp,1)
movsd  0x10(%rsi),%xmm4
xorps  %xmm3,%xmm4
mov    0x118(%rsp),%rbx
movlps %xmm4,(%rbx,%rbp,1)
movsd  (%rcx,%rdi,1),%xmm4
divsd  %xmm0,%xmm4
mov    0x120(%rsp),%rbx
movsd  %xmm4,(%rbx,%rbp,1)
mov    0x128(%rsp),%rbx
movsd  %xmm2,(%rbx,%rdi,1)
movsd  0x8(%rcx,%rdi,1),%xmm4
divsd  %xmm0,%xmm4
mov    0x130(%rsp),%rbx
movsd  %xmm4,(%rbx,%rbp,1)
mov    0x138(%rsp),%rbx
movsd  %xmm2,0x8(%rbx,%rdi,1)
movsd  0x10(%rcx,%rdi,1),%xmm4
divsd  %xmm0,%xmm4
mov    0x140(%rsp),%rbx
movsd  %xmm4,(%rbx,%rbp,1)
mov    0x148(%rsp),%rbx
movsd  %xmm2,0x10(%rbx,%rdi,1)
add    $0x9,%r11d
add    $0x18,%rdi
add    $0x8,%rbp
cmp    %rdi,-0x8(%rsp)
jne    1160 <NavierStokes_3D_Evaluate+0x60>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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