void calculateSubgridErrorStokes3D_GLS_tauRes(
    int nElements_global, int nQuadraturePoints_element, int nDOF_trial_element,
    int nSpace, double *tau0, double *tau1, double *pdeResidualP,
    double *dpdeResidualP_du, double *dpdeResidualP_dv,
    double *dpdeResidualP_dw, double *pdeResidualU, double *dpdeResidualU_dp,
    double *dpdeResidualU_du, double *pdeResidualV, double *dpdeResidualV_dp,
    double *dpdeResidualV_dv, double *pdeResidualW, double *dpdeResidualW_dp,
    double *dpdeResidualW_dw, double *subgridErrorP, double *dsubgridErrorP_du,
    double *dsubgridErrorP_dv, double *dsubgridErrorP_dw, double *subgridErrorU,
    double *dsubgridErrorU_dp, double *dsubgridErrorU_du, double *subgridErrorV,
    double *dsubgridErrorV_dp, double *dsubgridErrorV_dv, double *subgridErrorW,
    double *dsubgridErrorW_dp, double *dsubgridErrorW_dw) {
  int eN, k, j;
  for (eN = 0; eN < nElements_global; eN++) {
    for (k = 0; k < nQuadraturePoints_element; k++) {
      subgridErrorU[eN * nQuadraturePoints_element + k] =
          -tau0[eN * nQuadraturePoints_element + k] *
          pdeResidualU[eN * nQuadraturePoints_element + k];
      subgridErrorV[eN * nQuadraturePoints_element + k] =
          -tau0[eN * nQuadraturePoints_element + k] *
          pdeResidualV[eN * nQuadraturePoints_element + k];
      subgridErrorW[eN * nQuadraturePoints_element + k] =
          -tau0[eN * nQuadraturePoints_element + k] *
          pdeResidualW[eN * nQuadraturePoints_element + k];
      subgridErrorP[eN * nQuadraturePoints_element + k] =
          -tau1[eN * nQuadraturePoints_element + k] *
          pdeResidualP[eN * nQuadraturePoints_element + k];
      for (j = 0; j < nDOF_trial_element; j++) {
        dsubgridErrorU_dp[eN * nQuadraturePoints_element * nDOF_trial_element +
                          k * nDOF_trial_element + j] =
            -tau0[eN * nQuadraturePoints_element + k] *
            dpdeResidualU_dp[eN * nQuadraturePoints_element *
                                 nDOF_trial_element +
                             k * nDOF_trial_element + j];
        dsubgridErrorU_du[eN * nQuadraturePoints_element * nDOF_trial_element +
                          k * nDOF_trial_element + j] =
            -tau0[eN * nQuadraturePoints_element + k] *
            dpdeResidualU_du[eN * nQuadraturePoints_element *
                                 nDOF_trial_element +
                             k * nDOF_trial_element + j];
        dsubgridErrorV_dp[eN * nQuadraturePoints_element * nDOF_trial_element +
                          k * nDOF_trial_element + j] =
            -tau0[eN * nQuadraturePoints_element + k] *
            dpdeResidualV_dp[eN * nQuadraturePoints_element *
                                 nDOF_trial_element +
                             k * nDOF_trial_element + j];
        dsubgridErrorV_dv[eN * nQuadraturePoints_element * nDOF_trial_element +
                          k * nDOF_trial_element + j] =
            -tau0[eN * nQuadraturePoints_element + k] *
            dpdeResidualV_dv[eN * nQuadraturePoints_element *
                                 nDOF_trial_element +
                             k * nDOF_trial_element + j];
        dsubgridErrorW_dp[eN * nQuadraturePoints_element * nDOF_trial_element +
                          k * nDOF_trial_element + j] =
            -tau0[eN * nQuadraturePoints_element + k] *
            dpdeResidualW_dp[eN * nQuadraturePoints_element *
                                 nDOF_trial_element +
                             k * nDOF_trial_element + j];
        dsubgridErrorW_dw[eN * nQuadraturePoints_element * nDOF_trial_element +
                          k * nDOF_trial_element + j] =
            -tau0[eN * nQuadraturePoints_element + k] *
            dpdeResidualW_dw[eN * nQuadraturePoints_element *
                                 nDOF_trial_element +
                             k * nDOF_trial_element + j];
        dsubgridErrorP_du[eN * nQuadraturePoints_element * nDOF_trial_element +
                          k * nDOF_trial_element + j] =
            -tau1[eN * nQuadraturePoints_element + k] *
            dpdeResidualP_du[eN * nQuadraturePoints_element *
                                 nDOF_trial_element +
                             k * nDOF_trial_element + j];
        dsubgridErrorP_dv[eN * nQuadraturePoints_element * nDOF_trial_element +
                          k * nDOF_trial_element + j] =
            -tau1[eN * nQuadraturePoints_element + k] *
            dpdeResidualP_dv[eN * nQuadraturePoints_element *
                                 nDOF_trial_element +
                             k * nDOF_trial_element + j];
        dsubgridErrorP_dw[eN * nQuadraturePoints_element * nDOF_trial_element +
                          k * nDOF_trial_element + j] =
            -tau1[eN * nQuadraturePoints_element + k] *
            dpdeResidualP_dw[eN * nQuadraturePoints_element *
                                 nDOF_trial_element +
                             k * nDOF_trial_element + j];
      }
    }
  }
}


x86 assembly (clang, -O0):
<calculateSubgridErrorStokes3D_GLS_tauRes>:
push   %rbp
mov    %rsp,%rbp
mov    0xd8(%rbp),%rax
mov    0xd0(%rbp),%rax
mov    0xc8(%rbp),%rax
mov    0xc0(%rbp),%rax
mov    0xb8(%rbp),%rax
mov    0xb0(%rbp),%rax
mov    0xa8(%rbp),%rax
mov    0xa0(%rbp),%rax
mov    0x98(%rbp),%rax
mov    0x90(%rbp),%rax
mov    0x88(%rbp),%rax
mov    0x80(%rbp),%rax
mov    0x78(%rbp),%rax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8,-0x18(%rbp)
mov    %r9,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    17a4 <calculateSubgridErrorStokes3D_GLS_tauRes+0x6a4>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1791 <calculateSubgridErrorStokes3D_GLS_tauRes+0x691>
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x30(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x98(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x48(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xb0(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x60(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xc8(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x78(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    177e <calculateSubgridErrorStokes3D_GLS_tauRes+0x67e>
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x38(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xa0(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x40(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xa8(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x50(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xb8(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x58(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xc0(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x68(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xd0(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x70(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0xd8(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x80(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x20(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x88(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x28(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    0x90(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x8(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x28(%rbp),%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    133e <calculateSubgridErrorStokes3D_GLS_tauRes+0x23e>
jmp    1783 <calculateSubgridErrorStokes3D_GLS_tauRes+0x683>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    11be <calculateSubgridErrorStokes3D_GLS_tauRes+0xbe>
jmp    1796 <calculateSubgridErrorStokes3D_GLS_tauRes+0x696>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11ab <calculateSubgridErrorStokes3D_GLS_tauRes+0xab>
pop    %rbp
ret

x86 assembly (clang, -O2):
<calculateSubgridErrorStokes3D_GLS_tauRes>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %edx,-0x7c(%rsp)
mov    %esi,-0x78(%rsp)
test   %edi,%edi
jle    1484 <calculateSubgridErrorStokes3D_GLS_tauRes+0x384>
mov    %edi,%eax
mov    %rax,-0x50(%rsp)
mov    -0x7c(%rsp),%ecx
mov    %ecx,%ebp
mov    -0x78(%rsp),%eax
imul   %eax,%ecx
mov    %ecx,-0x5c(%rsp)
shl    $0x3,%rbp
movapd 0xebe(%rip),%xmm0
cltq
mov    %rax,-0x58(%rsp)
mov    %eax,%eax
mov    %rax,-0x48(%rsp)
xor    %eax,%eax
mov    %rax,-0x68(%rsp)
xor    %eax,%eax
mov    %rax,-0x70(%rsp)
jmp    118a <calculateSubgridErrorStokes3D_GLS_tauRes+0x8a>
mov    -0x70(%rsp),%rcx
add    $0x1,%rcx
mov    -0x68(%rsp),%rax
add    -0x5c(%rsp),%eax
mov    %rax,-0x68(%rsp)
mov    %rcx,%rax
mov    %rcx,-0x70(%rsp)
cmp    -0x50(%rsp),%rcx
je     1484 <calculateSubgridErrorStokes3D_GLS_tauRes+0x384>
cmpl   $0x0,-0x78(%rsp)
jle    1160 <calculateSubgridErrorStokes3D_GLS_tauRes+0x60>
mov    -0x70(%rsp),%rax
imul   -0x58(%rsp),%rax
mov    %rax,-0x40(%rsp)
mov    -0x68(%rsp),%rax
mov    %eax,-0x74(%rsp)
xor    %ecx,%ecx
jmp    11c8 <calculateSubgridErrorStokes3D_GLS_tauRes+0xc8>
xchg   %ax,%ax
mov    -0x38(%rsp),%rcx
add    $0x1,%rcx
mov    -0x7c(%rsp),%eax
add    %eax,-0x74(%rsp)
cmp    -0x48(%rsp),%rcx
je     1160 <calculateSubgridErrorStokes3D_GLS_tauRes+0x60>
mov    -0x40(%rsp),%rax
mov    %rcx,-0x38(%rsp)
add    %rax,%rcx
movsd  (%r8,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mov    0x70(%rsp),%rax
mulsd  (%rax,%rcx,8),%xmm1
mov    0xd8(%rsp),%rax
movsd  %xmm1,(%rax,%rcx,8)
movsd  (%r8,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mov    0x88(%rsp),%rax
mulsd  (%rax,%rcx,8),%xmm1
mov    0xf0(%rsp),%rax
movsd  %xmm1,(%rax,%rcx,8)
movsd  (%r8,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mov    0xa0(%rsp),%rax
mulsd  (%rax,%rcx,8),%xmm1
mov    0x108(%rsp),%rax
movsd  %xmm1,(%rax,%rcx,8)
movsd  (%r9,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mov    0x50(%rsp),%rax
mulsd  (%rax,%rcx,8),%xmm1
mov    0xb8(%rsp),%rax
movsd  %xmm1,(%rax,%rcx,8)
cmpl   $0x0,-0x7c(%rsp)
jle    11b0 <calculateSubgridErrorStokes3D_GLS_tauRes+0xb0>
movslq -0x74(%rsp),%rdi
mov    0x78(%rsp),%rax
lea    (%rax,%rdi,8),%rax
mov    %rax,0x10(%rsp)
mov    0xe0(%rsp),%rax
lea    (%rax,%rdi,8),%rax
mov    %rax,0x8(%rsp)
mov    0x80(%rsp),%rax
lea    (%rax,%rdi,8),%rax
mov    %rax,(%rsp)
mov    0xe8(%rsp),%rax
lea    (%rax,%rdi,8),%rax
mov    %rax,-0x8(%rsp)
mov    0x90(%rsp),%rax
lea    (%rax,%rdi,8),%rax
mov    %rax,-0x10(%rsp)
mov    0xf8(%rsp),%rax
lea    (%rax,%rdi,8),%rax
mov    %rax,-0x18(%rsp)
mov    0x98(%rsp),%rax
lea    (%rax,%rdi,8),%rax
mov    %rax,-0x20(%rsp)
mov    0x100(%rsp),%rax
lea    (%rax,%rdi,8),%rax
mov    %rax,-0x28(%rsp)
mov    0xa8(%rsp),%rax
lea    (%rax,%rdi,8),%rax
mov    %rax,-0x30(%rsp)
mov    0x110(%rsp),%rax
lea    (%rax,%rdi,8),%rdx
mov    0xb0(%rsp),%rax
lea    (%rax,%rdi,8),%rax
mov    0x118(%rsp),%rsi
lea    (%rsi,%rdi,8),%rsi
mov    0x58(%rsp),%rbx
lea    (%rbx,%rdi,8),%rbx
mov    %rbp,%r13
mov    0xc0(%rsp),%rbp
lea    0x0(%rbp,%rdi,8),%r11
mov    0x60(%rsp),%rbp
lea    0x0(%rbp,%rdi,8),%r12
mov    0xc8(%rsp),%rbp
lea    0x0(%rbp,%rdi,8),%r10
mov    0x68(%rsp),%rbp
lea    0x0(%rbp,%rdi,8),%r15
mov    0xd0(%rsp),%rbp
lea    0x0(,%rdi,8),%r14
add    %rbp,%r14
mov    %r13,%rbp
xor    %r13d,%r13d
nopl   0x0(%rax,%rax,1)
movsd  (%r8,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mov    0x10(%rsp),%rdi
mulsd  (%rdi,%r13,1),%xmm1
mov    0x8(%rsp),%rdi
movsd  %xmm1,(%rdi,%r13,1)
movsd  (%r8,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mov    (%rsp),%rdi
mulsd  (%rdi,%r13,1),%xmm1
mov    -0x8(%rsp),%rdi
movsd  %xmm1,(%rdi,%r13,1)
movsd  (%r8,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mov    -0x10(%rsp),%rdi
mulsd  (%rdi,%r13,1),%xmm1
mov    -0x18(%rsp),%rdi
movsd  %xmm1,(%rdi,%r13,1)
movsd  (%r8,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mov    -0x20(%rsp),%rdi
mulsd  (%rdi,%r13,1),%xmm1
mov    -0x28(%rsp),%rdi
movsd  %xmm1,(%rdi,%r13,1)
movsd  (%r8,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mov    -0x30(%rsp),%rdi
mulsd  (%rdi,%r13,1),%xmm1
movsd  %xmm1,(%rdx,%r13,1)
movsd  (%r8,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mulsd  (%rax,%r13,1),%xmm1
movsd  %xmm1,(%rsi,%r13,1)
movsd  (%r9,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mulsd  (%rbx,%r13,1),%xmm1
movsd  %xmm1,(%r11,%r13,1)
movsd  (%r9,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mulsd  (%r12,%r13,1),%xmm1
movsd  %xmm1,(%r10,%r13,1)
movsd  (%r9,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
mulsd  (%r15,%r13,1),%xmm1
movsd  %xmm1,(%r14,%r13,1)
add    $0x8,%r13
cmp    %r13,%rbp
jne    1380 <calculateSubgridErrorStokes3D_GLS_tauRes+0x280>
jmp    11b0 <calculateSubgridErrorStokes3D_GLS_tauRes+0xb0>
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @calculateSubgridErrorStokes3D_GLS_tauRes(i32 %0, i32 %1, i32 %2, i32 %3, double* nocapture %4, double* nocapture %5, double* nocapture %6, double* nocapture %7, double* nocapture %8, double* nocapture %9, double* nocapture %10, double* nocapture %11, double* nocapture %12, double* nocapture %13, double* nocapture %14, double* nocapture %15, double* nocapture %16, double* nocapture %17, double* nocapture %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) {
%33 = icmp sgt i32 %0, 0
br i1 %33, label %34, label %143
34: ; preds = %32
%35 = icmp sgt i32 %1, 0
%36 = icmp sgt i32 %2, 0
%37 = sext i32 %1 to i64
%38 = zext i32 %0 to i64
%39 = zext i32 %1 to i64
%40 = zext i32 %2 to i64
br label %41
41: ; preds = %34, %140
%42 = phi i64 [ 0, %34 ], [ %141, %140 ]
br i1 %35, label %43, label %140
43: ; preds = %41
%44 = mul nsw i64 %42, %37
br label %45
45: ; preds = %43, %137
%46 = phi i64 [ 0, %43 ], [ %138, %137 ]
%47 = add nsw i64 %46, %44
%48 = getelementptr inbounds double, double* %4, i64 %47
%49 = load double, double* %48
%50 = fneg double %49
%51 = getelementptr inbounds double, double* %10, i64 %47
%52 = load double, double* %51
%53 = fmul double %52, %50
%54 = getelementptr inbounds double, double* %23, i64 %47
store double %53, double* %54
%55 = load double, double* %48
%56 = fneg double %55
%57 = getelementptr inbounds double, double* %13, i64 %47
%58 = load double, double* %57
%59 = fmul double %58, %56
%60 = getelementptr inbounds double, double* %26, i64 %47
store double %59, double* %60
%61 = load double, double* %48
%62 = fneg double %61
%63 = getelementptr inbounds double, double* %16, i64 %47
%64 = load double, double* %63
%65 = fmul double %64, %62
%66 = getelementptr inbounds double, double* %29, i64 %47
store double %65, double* %66
%67 = getelementptr inbounds double, double* %5, i64 %47
%68 = load double, double* %67
%69 = fneg double %68
%70 = getelementptr inbounds double, double* %6, i64 %47
%71 = load double, double* %70
%72 = fmul double %71, %69
%73 = getelementptr inbounds double, double* %19, i64 %47
store double %72, double* %73
br i1 %36, label %74, label %137
74: ; preds = %45
%75 = trunc i64 %47 to i32
%76 = mul i32 %75, %2
%77 = sext i32 %76 to i64
br label %78
78: ; preds = %74, %78
%79 = phi i64 [ 0, %74 ], [ %135, %78 ]
%80 = load double, double* %48
%81 = fneg double %80
%82 = add nsw i64 %79, %77
%83 = getelementptr inbounds double, double* %11, i64 %82
%84 = load double, double* %83
%85 = fmul double %84, %81
%86 = getelementptr inbounds double, double* %24, i64 %82
store double %85, double* %86
%87 = load double, double* %48
%88 = fneg double %87
%89 = getelementptr inbounds double, double* %12, i64 %82
%90 = load double, double* %89
%91 = fmul double %90, %88
%92 = getelementptr inbounds double, double* %25, i64 %82
store double %91, double* %92
%93 = load double, double* %48
%94 = fneg double %93
%95 = getelementptr inbounds double, double* %14, i64 %82
%96 = load double, double* %95
%97 = fmul double %96, %94
%98 = getelementptr inbounds double, double* %27, i64 %82
store double %97, double* %98
%99 = load double, double* %48
%100 = fneg double %99
%101 = getelementptr inbounds double, double* %15, i64 %82
%102 = load double, double* %101
%103 = fmul double %102, %100
%104 = getelementptr inbounds double, double* %28, i64 %82
store double %103, double* %104
%105 = load double, double* %48
%106 = fneg double %105
%107 = getelementptr inbounds double, double* %17, i64 %82
%108 = load double, double* %107
%109 = fmul double %108, %106
%110 = getelementptr inbounds double, double* %30, i64 %82
store double %109, double* %110
%111 = load double, double* %48
%112 = fneg double %111
%113 = getelementptr inbounds double, double* %18, i64 %82
%114 = load double, double* %113
%115 = fmul double %114, %112
%116 = getelementptr inbounds double, double* %31, i64 %82
store double %115, double* %116
%117 = load double, double* %67
%118 = fneg double %117
%119 = getelementptr inbounds double, double* %7, i64 %82
%120 = load double, double* %119
%121 = fmul double %120, %118
%122 = getelementptr inbounds double, double* %20, i64 %82
store double %121, double* %122
%123 = load double, double* %67
%124 = fneg double %123
%125 = getelementptr inbounds double, double* %8, i64 %82
%126 = load double, double* %125
%127 = fmul double %126, %124
%128 = getelementptr inbounds double, double* %21, i64 %82
store double %127, double* %128
%129 = load double, double* %67
%130 = fneg double %129
%131 = getelementptr inbounds double, double* %9, i64 %82
%132 = load double, double* %131
%133 = fmul double %132, %130
%134 = getelementptr inbounds double, double* %22, i64 %82
store double %133, double* %134
%135 = add nuw nsw i64 %79, 1
%136 = icmp eq i64 %135, %40
br i1 %136, label %137, label %78
137: ; preds = %78, %45
%138 = add nuw nsw i64 %46, 1
%139 = icmp eq i64 %138, %39
br i1 %139, label %140, label %45
140: ; preds = %137, %41
%141 = add nuw nsw i64 %42, 1
%142 = icmp eq i64 %141, %38
br i1 %142, label %143, label %41
143: ; preds = %140, %32
ret void
}