void MovingMesh_3D_Evaluate(const int nPoints, const double E0, const double nu,
                            const double *g, const double *det_J,
                            const double *u, const double *v, const double *w,
                            double *uu_diff_ten, double *uv_diff_ten,
                            double *uw_diff_ten, double *vu_diff_ten,
                            double *vv_diff_ten, double *vw_diff_ten,
                            double *wu_diff_ten, double *wv_diff_ten,
                            double *ww_diff_ten, double *u_force,
                            double *v_force, double *w_force) {
  double E;
  int k;
  for (k = 0; k < nPoints; k++) {
    E = E0 / det_J[k];
    uu_diff_ten[k * 9 + 0] = (E / (1.0 + nu)) * (1.0 + nu / (1.0 - 2.0 * nu));
    uu_diff_ten[k * 9 + 4] = (E / (1.0 + nu)) * 0.5;
    uu_diff_ten[k * 9 + 8] = (E / (1.0 + nu)) * 0.5;
    uv_diff_ten[k * 9 + 1] = (E / (1.0 + nu)) * (nu / (1.0 - 2.0 * nu));
    uv_diff_ten[k * 9 + 3] = (E / (1.0 + nu)) * 0.5;
    uw_diff_ten[k * 9 + 2] = (E / (1.0 + nu)) * (nu / (1.0 - 2.0 * nu));
    uw_diff_ten[k * 9 + 6] = (E / (1.0 + nu)) * 0.5;
    vu_diff_ten[k * 9 + 1] = (E / (1.0 + nu)) * 0.5;
    vu_diff_ten[k * 9 + 3] = (E / (1.0 + nu)) * (nu / (1.0 - 2.0 * nu));
    vv_diff_ten[k * 9 + 0] = (E / (1.0 + nu)) * 0.5;
    vv_diff_ten[k * 9 + 4] = (E / (1.0 + nu)) * (1.0 + nu / (1.0 - 2.0 * nu));
    vv_diff_ten[k * 9 + 8] = (E / (1.0 + nu)) * 0.5;
    vw_diff_ten[k * 9 + 5] = (E / (1.0 + nu)) * (nu / (1.0 - 2.0 * nu));
    vw_diff_ten[k * 9 + 7] = (E / (1.0 + nu)) * 0.5;
    wu_diff_ten[k * 9 + 2] = (E / (1.0 + nu)) * 0.5;
    wu_diff_ten[k * 9 + 6] = (E / (1.0 + nu)) * (nu / (1.0 - 2.0 * nu));
    wv_diff_ten[k * 9 + 5] = (E / (1.0 + nu)) * 0.5;
    wv_diff_ten[k * 9 + 7] = (E / (1.0 + nu)) * (nu / (1.0 - 2.0 * nu));
    ww_diff_ten[k * 9 + 0] = (E / (1.0 + nu)) * 0.5;
    ww_diff_ten[k * 9 + 4] = (E / (1.0 + nu)) * 0.5;
    ww_diff_ten[k * 9 + 8] = (E / (1.0 + nu)) * (1.0 + nu / (1.0 - 2.0 * nu));
    u_force[k] = -g[0];
    v_force[k] = -g[1];
    w_force[k] = -g[2];
  }
}


x86 assembly (clang, -O0):
<MovingMesh_3D_Evaluate>:
push   %rbp
mov    %rsp,%rbp
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,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1756 <MovingMesh_3D_Evaluate+0x656>
movsd  -0x10(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  0xe74(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
addsd  %xmm3,%xmm3
movsd  0xe55(%rip),%xmm1
subsd  %xmm3,%xmm1
divsd  %xmm1,%xmm2
movsd  0xe45(%rip),%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x10(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xe1d(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xe14(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x10(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xde8(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xddf(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x10(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xdb3(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm3
addsd  %xmm3,%xmm3
movsd  0xd94(%rip),%xmm2
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x18(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xd68(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xd5f(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x18(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xd33(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm3
addsd  %xmm3,%xmm3
movsd  0xd14(%rip),%xmm2
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x20(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xce8(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xcdf(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x20(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xcb3(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xcaa(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xc7e(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm3
addsd  %xmm3,%xmm3
movsd  0xc5f(%rip),%xmm2
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xc33(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xc2a(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x30(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xbfe(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
addsd  %xmm3,%xmm3
movsd  0xbdf(%rip),%xmm1
subsd  %xmm3,%xmm1
divsd  %xmm1,%xmm2
movsd  0xbcf(%rip),%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x30(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xba7(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xb9e(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x30(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xb72(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm3
addsd  %xmm3,%xmm3
movsd  0xb53(%rip),%xmm2
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x38(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xb27(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xb1e(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x38(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xaf2(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xae9(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x40(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xabd(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm3
addsd  %xmm3,%xmm3
movsd  0xa9e(%rip),%xmm2
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x40(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xa72(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xa69(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x48(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0xa3d(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm3
addsd  %xmm3,%xmm3
movsd  0xa1e(%rip),%xmm2
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x48(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0x9f2(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0x9e9(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x50(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0x9bd(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0x9b4(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    0x50(%rbp),%rax
imul   $0x9,-0x4c(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  0x988(%rip),%xmm1
addsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
addsd  %xmm3,%xmm3
movsd  0x969(%rip),%xmm1
subsd  %xmm3,%xmm1
divsd  %xmm1,%xmm2
movsd  0x959(%rip),%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x50(%rbp),%rax
imul   $0x9,-0x4c(%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    0x58(%rbp),%rax
movslq -0x4c(%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    0x60(%rbp),%rax
movslq -0x4c(%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    0x68(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    115c <MovingMesh_3D_Evaluate+0x5c>
pop    %rbp
ret

x86 assembly (clang, -O2):
<MovingMesh_3D_Evaluate>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
test   %edi,%edi
jle    129e <MovingMesh_3D_Evaluate+0x19e>
mov    0x78(%rsp),%rcx
mov    0x68(%rsp),%r14
mov    0x60(%rsp),%r15
mov    0x58(%rsp),%rax
mov    0x50(%rsp),%r12
mov    0x48(%rsp),%r13
mov    0x40(%rsp),%r11
mov    0x38(%rsp),%rbp
movsd  0xebe(%rip),%xmm2
movapd %xmm1,%xmm3
addsd  %xmm2,%xmm3
movapd %xmm1,%xmm4
addsd  %xmm1,%xmm4
movapd %xmm2,%xmm5
subsd  %xmm4,%xmm5
divsd  %xmm5,%xmm1
addsd  %xmm1,%xmm2
mov    %edi,%edi
shl    $0x3,%rdi
lea    (%rdi,%rdi,8),%rdi
xor    %r8d,%r8d
movsd  0xe90(%rip),%xmm8
movapd 0xe90(%rip),%xmm5
xor    %r9d,%r9d
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movapd %xmm0,%xmm6
divsd  (%rdx,%r8,1),%xmm6
divsd  %xmm3,%xmm6
movapd %xmm2,%xmm7
mulsd  %xmm6,%xmm7
movsd  %xmm7,0x0(%rbp,%r9,1)
movapd %xmm1,%xmm4
mulsd  %xmm6,%xmm4
mulsd  %xmm8,%xmm6
movsd  %xmm6,0x20(%rbp,%r9,1)
movsd  %xmm6,0x40(%rbp,%r9,1)
movsd  %xmm4,0x8(%r11,%r9,1)
movsd  %xmm6,0x18(%r11,%r9,1)
movsd  %xmm4,0x10(%r13,%r9,1)
movsd  %xmm6,0x30(%r13,%r9,1)
movsd  %xmm6,0x8(%r12,%r9,1)
movsd  %xmm4,0x18(%r12,%r9,1)
movsd  %xmm6,(%rax,%r9,1)
movsd  %xmm7,0x20(%rax,%r9,1)
movsd  %xmm6,0x40(%rax,%r9,1)
movsd  %xmm4,0x28(%r15,%r9,1)
movsd  %xmm6,0x38(%r15,%r9,1)
movsd  %xmm6,0x10(%r14,%r9,1)
movsd  %xmm4,0x30(%r14,%r9,1)
mov    0x70(%rsp),%rbx
movsd  %xmm6,0x28(%rbx,%r9,1)
movsd  %xmm4,0x38(%rbx,%r9,1)
movsd  %xmm6,(%rcx,%r9,1)
movsd  %xmm6,0x20(%rcx,%r9,1)
movsd  %xmm7,0x40(%rcx,%r9,1)
movsd  (%rsi),%xmm4
xorpd  %xmm5,%xmm4
mov    0x80(%rsp),%rbx
movlpd %xmm4,(%rbx,%r8,1)
movsd  0x8(%rsi),%xmm4
xorpd  %xmm5,%xmm4
mov    0x88(%rsp),%rbx
movlpd %xmm4,(%rbx,%r8,1)
movsd  0x10(%rsi),%xmm4
xorpd  %xmm5,%xmm4
mov    0x90(%rsp),%r10
movlpd %xmm4,(%r10,%r8,1)
add    $0x48,%r9
add    $0x8,%r8
cmp    %r9,%rdi
jne    1190 <MovingMesh_3D_Evaluate+0x90>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @MovingMesh_3D_Evaluate(i32 %0, double %1, double %2, double* nocapture %3, double* nocapture %4, double* nocapture readnone %5, double* nocapture readnone %6, double* nocapture readnone %7, double* nocapture writeonly %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) {
%21 = icmp sgt i32 %0, 0
br i1 %21, label %22, label %80
22: ; preds = %20
%23 = fadd double %2, 1.000000e+00
%24 = tail call double @llvm.fmuladd.f64(double %2, double -2.000000e+00, double 1.000000e+00)
%25 = fdiv double %2, %24
%26 = fadd double %25, 1.000000e+00
%27 = getelementptr inbounds double, double* %3, i64 1
%28 = getelementptr inbounds double, double* %3, i64 2
%29 = zext i32 %0 to i64
br label %30
30: ; preds = %22, %30
%31 = phi i64 [ 0, %22 ], [ %78, %30 ]
%32 = getelementptr inbounds double, double* %4, i64 %31
%33 = load double, double* %32
%34 = fdiv double %1, %33
%35 = fdiv double %34, %23
%36 = fmul double %26, %35
%37 = mul nuw nsw i64 %31, 9
%38 = getelementptr inbounds double, double* %8, i64 %37
store double %36, double* %38
%39 = fmul double %35, 5.000000e-01
%40 = add nuw nsw i64 %37, 4
%41 = getelementptr inbounds double, double* %8, i64 %40
store double %39, double* %41
%42 = add nuw nsw i64 %37, 8
%43 = getelementptr inbounds double, double* %8, i64 %42
store double %39, double* %43
%44 = fmul double %25, %35
%45 = add nuw nsw i64 %37, 1
%46 = getelementptr inbounds double, double* %9, i64 %45
store double %44, double* %46
%47 = add nuw nsw i64 %37, 3
%48 = getelementptr inbounds double, double* %9, i64 %47
store double %39, double* %48
%49 = add nuw nsw i64 %37, 2
%50 = getelementptr inbounds double, double* %10, i64 %49
store double %44, double* %50
%51 = add nuw nsw i64 %37, 6
%52 = getelementptr inbounds double, double* %10, i64 %51
store double %39, double* %52
%53 = getelementptr inbounds double, double* %11, i64 %45
store double %39, double* %53
%54 = getelementptr inbounds double, double* %11, i64 %47
store double %44, double* %54
%55 = getelementptr inbounds double, double* %12, i64 %37
store double %39, double* %55
%56 = getelementptr inbounds double, double* %12, i64 %40
store double %36, double* %56
%57 = getelementptr inbounds double, double* %12, i64 %42
store double %39, double* %57
%58 = add nuw nsw i64 %37, 5
%59 = getelementptr inbounds double, double* %13, i64 %58
store double %44, double* %59
%60 = add nuw nsw i64 %37, 7
%61 = getelementptr inbounds double, double* %13, i64 %60
store double %39, double* %61
%62 = getelementptr inbounds double, double* %14, i64 %49
store double %39, double* %62
%63 = getelementptr inbounds double, double* %14, i64 %51
store double %44, double* %63
%64 = getelementptr inbounds double, double* %15, i64 %58
store double %39, double* %64
%65 = getelementptr inbounds double, double* %15, i64 %60
store double %44, double* %65
%66 = getelementptr inbounds double, double* %16, i64 %37
store double %39, double* %66
%67 = getelementptr inbounds double, double* %16, i64 %40
store double %39, double* %67
%68 = getelementptr inbounds double, double* %16, i64 %42
store double %36, double* %68
%69 = load double, double* %3
%70 = fneg double %69
%71 = getelementptr inbounds double, double* %17, i64 %31
store double %70, double* %71
%72 = load double, double* %27
%73 = fneg double %72
%74 = getelementptr inbounds double, double* %18, i64 %31
store double %73, double* %74
%75 = load double, double* %28
%76 = fneg double %75
%77 = getelementptr inbounds double, double* %19, i64 %31
store double %76, double* %77
%78 = add nuw nsw i64 %31, 1
%79 = icmp eq i64 %78, %29
br i1 %79, label %80, label %30
80: ; preds = %30, %20
ret void
}