#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ gint2_nai_cD_pD(double *, double, double *, double, double *,
                                   double *);
void gint2_nai_pD_pD(double *a, double a_a, double *b, double b_a, double *c,
                     double *out) {
  double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
  gint2_nai_cD_pD(a, a_a, b, b_a, c, out);
  tmp0 = out[10];
  out[10] = out[20];
  tmp1 = out[11];
  out[11] = out[21];
  tmp2 = out[12];
  out[12] = out[22];
  tmp3 = out[13];
  out[13] = out[23];
  tmp4 = out[14];
  out[14] = out[24];
  tmp5 = out[25] - 0.5 * out[0] - 0.5 * out[15];
  out[15] = 0.866025403784439 * out[0] - 0.866025403784439 * out[15];
  out[0] = tmp5;
  tmp5 = out[26] - 0.5 * out[1] - 0.5 * out[16];
  out[16] = 0.866025403784439 * out[1] - 0.866025403784439 * out[16];
  out[1] = tmp5;
  tmp5 = out[27] - 0.5 * out[17] - 0.5 * out[2];
  out[17] = 0.866025403784439 * out[2] - 0.866025403784439 * out[17];
  out[2] = tmp5;
  tmp5 = out[28] - 0.5 * out[18] - 0.5 * out[3];
  out[18] = 0.866025403784439 * out[3] - 0.866025403784439 * out[18];
  out[3] = tmp5;
  tmp5 = out[29] - 0.5 * out[19] - 0.5 * out[4];
  out[19] = 0.866025403784439 * out[4] - 0.866025403784439 * out[19];
  out[4] = tmp5;
  out[20] = out[5];
  out[5] = tmp0;
  out[21] = out[6];
  out[6] = tmp1;
  out[22] = out[7];
  out[7] = tmp2;
  out[23] = out[8];
  out[8] = tmp3;
  out[24] = out[9];
  out[9] = tmp4;
}


x86 assembly (clang, -O0):
<gint2_nai_pD_pD>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
movsd  %xmm0,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
movsd  %xmm1,-0x20(%rbp)
mov    %rdx,-0x28(%rbp)
mov    %rcx,-0x30(%rbp)
mov    -0x8(%rbp),%rdi
movsd  -0x10(%rbp),%xmm0
mov    -0x18(%rbp),%rsi
movsd  -0x20(%rbp),%xmm1
mov    -0x28(%rbp),%rdx
mov    -0x30(%rbp),%rcx
call   1030 <gint2_nai_cD_pD@plt>
mov    -0x30(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  0xa0(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x30(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x30(%rbp),%rax
movsd  0xa8(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x30(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x30(%rbp),%rax
movsd  0xb0(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x30(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x30(%rbp),%rax
movsd  0xb8(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x30(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x30(%rbp),%rax
movsd  0xc0(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x30(%rbp),%rax
movsd  0xc8(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0xdec(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  0xdd3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xdaa(%rip),%xmm1
mulsd  0x78(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xd86(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x78(%rax)
movsd  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  0xd0(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  0xd53(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  0xd37(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xd0d(%rip),%xmm1
mulsd  0x80(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xce6(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x80(%rax)
movsd  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x30(%rbp),%rax
movsd  0xd8(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x88(%rax),%xmm1
movsd  0xcac(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  0xc93(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xc69(%rip),%xmm1
mulsd  0x88(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xc42(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x88(%rax)
movsd  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x30(%rbp),%rax
movsd  0xe0(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x90(%rax),%xmm1
movsd  0xc08(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  0xbef(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xbc5(%rip),%xmm1
mulsd  0x90(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xb9e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x90(%rax)
movsd  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x30(%rbp),%rax
movsd  0xe8(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x98(%rax),%xmm1
movsd  0xb64(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  0xb4b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xb21(%rip),%xmm1
mulsd  0x98(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xafa(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x98(%rax)
movsd  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x30(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x30(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xa8(%rax)
movsd  -0x40(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x30(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xb0(%rax)
movsd  -0x48(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x30(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xb8(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x30(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xc0(%rax)
movsd  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x48(%rax)
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gint2_nai_pD_pD>:
push   %rbx
mov    %rcx,%rbx
call   1030 <gint2_nai_cD_pD@plt>
movups 0xa0(%rbx),%xmm1
movupd (%rbx),%xmm0
movupd 0x10(%rbx),%xmm3
movups 0x50(%rbx),%xmm2
movups 0x60(%rbx),%xmm8
movups %xmm1,0x50(%rbx)
movups 0xb0(%rbx),%xmm1
movups %xmm1,0x60(%rbx)
movsd  0x70(%rbx),%xmm9
movsd  0xc0(%rbx),%xmm4
movsd  %xmm4,0x70(%rbx)
movupd 0x78(%rbx),%xmm6
movupd 0xc8(%rbx),%xmm7
movapd 0xe97(%rip),%xmm4
movapd %xmm0,%xmm5
mulpd  %xmm4,%xmm5
addpd  %xmm7,%xmm5
movapd %xmm6,%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm5,%xmm7
movapd 0xe87(%rip),%xmm5
mulpd  %xmm5,%xmm6
movapd 0xe8b(%rip),%xmm1
mulpd  %xmm1,%xmm0
addpd  %xmm6,%xmm0
movupd %xmm0,0x78(%rbx)
movupd %xmm7,(%rbx)
movupd 0x88(%rbx),%xmm0
movupd 0xd8(%rbx),%xmm6
movapd %xmm0,%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm6,%xmm7
mulpd  %xmm3,%xmm4
addpd  %xmm7,%xmm4
mulpd  %xmm5,%xmm0
mulpd  %xmm1,%xmm3
addpd  %xmm0,%xmm3
movupd %xmm3,0x88(%rbx)
movupd %xmm4,0x10(%rbx)
movsd  0x20(%rbx),%xmm0
movsd  0x98(%rbx),%xmm1
movsd  0xe38(%rip),%xmm3
movapd %xmm1,%xmm4
mulsd  %xmm3,%xmm4
addsd  0xe8(%rbx),%xmm4
mulsd  %xmm0,%xmm3
addsd  %xmm4,%xmm3
mulsd  0xe20(%rip),%xmm1
mulsd  0xe20(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x98(%rbx)
movsd  %xmm3,0x20(%rbx)
movups 0x28(%rbx),%xmm0
movups %xmm0,0xa0(%rbx)
movups %xmm2,0x28(%rbx)
movups 0x38(%rbx),%xmm0
movups %xmm0,0xb0(%rbx)
movups %xmm8,0x38(%rbx)
movsd  0x48(%rbx),%xmm0
movsd  %xmm0,0xc0(%rbx)
movsd  %xmm9,0x48(%rbx)
pop    %rbx
ret

LLVM IR (-O0):
define void @gint2_nai_pD_pD(double* %0, double %1, double* %2, double %3, double* %4, double* %5) {
%7 = alloca double*
%8 = alloca double
%9 = alloca double*
%10 = alloca double
%11 = alloca double*
%12 = alloca double*
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
store double* %0, double** %7
store double %1, double* %8
store double* %2, double** %9
store double %3, double* %10
store double* %4, double** %11
store double* %5, double** %12
%19 = load double*, double** %7
%20 = load double, double* %8
%21 = load double*, double** %9
%22 = load double, double* %10
%23 = load double*, double** %11
%24 = load double*, double** %12
%25 = call i32 @gint2_nai_cD_pD(double* %19, double %20, double* %21, double %22, double* %23, double* %24)
%26 = load double*, double** %12
%27 = getelementptr inbounds double, double* %26, i64 10
%28 = load double, double* %27
store double %28, double* %13
%29 = load double*, double** %12
%30 = getelementptr inbounds double, double* %29, i64 20
%31 = load double, double* %30
%32 = load double*, double** %12
%33 = getelementptr inbounds double, double* %32, i64 10
store double %31, double* %33
%34 = load double*, double** %12
%35 = getelementptr inbounds double, double* %34, i64 11
%36 = load double, double* %35
store double %36, double* %14
%37 = load double*, double** %12
%38 = getelementptr inbounds double, double* %37, i64 21
%39 = load double, double* %38
%40 = load double*, double** %12
%41 = getelementptr inbounds double, double* %40, i64 11
store double %39, double* %41
%42 = load double*, double** %12
%43 = getelementptr inbounds double, double* %42, i64 12
%44 = load double, double* %43
store double %44, double* %15
%45 = load double*, double** %12
%46 = getelementptr inbounds double, double* %45, i64 22
%47 = load double, double* %46
%48 = load double*, double** %12
%49 = getelementptr inbounds double, double* %48, i64 12
store double %47, double* %49
%50 = load double*, double** %12
%51 = getelementptr inbounds double, double* %50, i64 13
%52 = load double, double* %51
store double %52, double* %16
%53 = load double*, double** %12
%54 = getelementptr inbounds double, double* %53, i64 23
%55 = load double, double* %54
%56 = load double*, double** %12
%57 = getelementptr inbounds double, double* %56, i64 13
store double %55, double* %57
%58 = load double*, double** %12
%59 = getelementptr inbounds double, double* %58, i64 14
%60 = load double, double* %59
store double %60, double* %17
%61 = load double*, double** %12
%62 = getelementptr inbounds double, double* %61, i64 24
%63 = load double, double* %62
%64 = load double*, double** %12
%65 = getelementptr inbounds double, double* %64, i64 14
store double %63, double* %65
%66 = load double*, double** %12
%67 = getelementptr inbounds double, double* %66, i64 25
%68 = load double, double* %67
%69 = load double*, double** %12
%70 = getelementptr inbounds double, double* %69, i64 0
%71 = load double, double* %70
%72 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %71, double %68)
%73 = load double*, double** %12
%74 = getelementptr inbounds double, double* %73, i64 15
%75 = load double, double* %74
%76 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %75, double %72)
store double %76, double* %18
%77 = load double*, double** %12
%78 = getelementptr inbounds double, double* %77, i64 0
%79 = load double, double* %78
%80 = load double*, double** %12
%81 = getelementptr inbounds double, double* %80, i64 15
%82 = load double, double* %81
%83 = fmul double 0x3FEBB67AE8584CAE, %82
%84 = fneg double %83
%85 = call double @llvm.fmuladd.f64(double 0x3FEBB67AE8584CAE, double %79, double %84)
%86 = load double*, double** %12
%87 = getelementptr inbounds double, double* %86, i64 15
store double %85, double* %87
%88 = load double, double* %18
%89 = load double*, double** %12
%90 = getelementptr inbounds double, double* %89, i64 0
store double %88, double* %90
%91 = load double*, double** %12
%92 = getelementptr inbounds double, double* %91, i64 26
%93 = load double, double* %92
%94 = load double*, double** %12
%95 = getelementptr inbounds double, double* %94, i64 1
%96 = load double, double* %95
%97 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %96, double %93)
%98 = load double*, double** %12
%99 = getelementptr inbounds double, double* %98, i64 16
%100 = load double, double* %99
%101 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %100, double %97)
store double %101, double* %18
%102 = load double*, double** %12
%103 = getelementptr inbounds double, double* %102, i64 1
%104 = load double, double* %103
%105 = load double*, double** %12
%106 = getelementptr inbounds double, double* %105, i64 16
%107 = load double, double* %106
%108 = fmul double 0x3FEBB67AE8584CAE, %107
%109 = fneg double %108
%110 = call double @llvm.fmuladd.f64(double 0x3FEBB67AE8584CAE, double %104, double %109)
%111 = load double*, double** %12
%112 = getelementptr inbounds double, double* %111, i64 16
store double %110, double* %112
%113 = load double, double* %18
%114 = load double*, double** %12
%115 = getelementptr inbounds double, double* %114, i64 1
store double %113, double* %115
%116 = load double*, double** %12
%117 = getelementptr inbounds double, double* %116, i64 27
%118 = load double, double* %117
%119 = load double*, double** %12
%120 = getelementptr inbounds double, double* %119, i64 17
%121 = load double, double* %120
%122 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %121, double %118)
%123 = load double*, double** %12
%124 = getelementptr inbounds double, double* %123, i64 2
%125 = load double, double* %124
%126 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %125, double %122)
store double %126, double* %18
%127 = load double*, double** %12
%128 = getelementptr inbounds double, double* %127, i64 2
%129 = load double, double* %128
%130 = load double*, double** %12
%131 = getelementptr inbounds double, double* %130, i64 17
%132 = load double, double* %131
%133 = fmul double 0x3FEBB67AE8584CAE, %132
%134 = fneg double %133
%135 = call double @llvm.fmuladd.f64(double 0x3FEBB67AE8584CAE, double %129, double %134)
%136 = load double*, double** %12
%137 = getelementptr inbounds double, double* %136, i64 17
store double %135, double* %137
%138 = load double, double* %18
%139 = load double*, double** %12
%140 = getelementptr inbounds double, double* %139, i64 2
store double %138, double* %140
%141 = load double*, double** %12
%142 = getelementptr inbounds double, double* %141, i64 28
%143 = load double, double* %142
%144 = load double*, double** %12
%145 = getelementptr inbounds double, double* %144, i64 18
%146 = load double, double* %145
%147 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %146, double %143)
%148 = load double*, double** %12
%149 = getelementptr inbounds double, double* %148, i64 3
%150 = load double, double* %149
%151 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %150, double %147)
store double %151, double* %18
%152 = load double*, double** %12
%153 = getelementptr inbounds double, double* %152, i64 3
%154 = load double, double* %153
%155 = load double*, double** %12
%156 = getelementptr inbounds double, double* %155, i64 18
%157 = load double, double* %156
%158 = fmul double 0x3FEBB67AE8584CAE, %157
%159 = fneg double %158
%160 = call double @llvm.fmuladd.f64(double 0x3FEBB67AE8584CAE, double %154, double %159)
%161 = load double*, double** %12
%162 = getelementptr inbounds double, double* %161, i64 18
store double %160, double* %162
%163 = load double, double* %18
%164 = load double*, double** %12
%165 = getelementptr inbounds double, double* %164, i64 3
store double %163, double* %165
%166 = load double*, double** %12
%167 = getelementptr inbounds double, double* %166, i64 29
%168 = load double, double* %167
%169 = load double*, double** %12
%170 = getelementptr inbounds double, double* %169, i64 19
%171 = load double, double* %170
%172 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %171, double %168)
%173 = load double*, double** %12
%174 = getelementptr inbounds double, double* %173, i64 4
%175 = load double, double* %174
%176 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %175, double %172)
store double %176, double* %18
%177 = load double*, double** %12
%178 = getelementptr inbounds double, double* %177, i64 4
%179 = load double, double* %178
%180 = load double*, double** %12
%181 = getelementptr inbounds double, double* %180, i64 19
%182 = load double, double* %181
%183 = fmul double 0x3FEBB67AE8584CAE, %182
%184 = fneg double %183
%185 = call double @llvm.fmuladd.f64(double 0x3FEBB67AE8584CAE, double %179, double %184)
%186 = load double*, double** %12
%187 = getelementptr inbounds double, double* %186, i64 19
store double %185, double* %187
%188 = load double, double* %18
%189 = load double*, double** %12
%190 = getelementptr inbounds double, double* %189, i64 4
store double %188, double* %190
%191 = load double*, double** %12
%192 = getelementptr inbounds double, double* %191, i64 5
%193 = load double, double* %192
%194 = load double*, double** %12
%195 = getelementptr inbounds double, double* %194, i64 20
store double %193, double* %195
%196 = load double, double* %13
%197 = load double*, double** %12
%198 = getelementptr inbounds double, double* %197, i64 5
store double %196, double* %198
%199 = load double*, double** %12
%200 = getelementptr inbounds double, double* %199, i64 6
%201 = load double, double* %200
%202 = load double*, double** %12
%203 = getelementptr inbounds double, double* %202, i64 21
store double %201, double* %203
%204 = load double, double* %14
%205 = load double*, double** %12
%206 = getelementptr inbounds double, double* %205, i64 6
store double %204, double* %206
%207 = load double*, double** %12
%208 = getelementptr inbounds double, double* %207, i64 7
%209 = load double, double* %208
%210 = load double*, double** %12
%211 = getelementptr inbounds double, double* %210, i64 22
store double %209, double* %211
%212 = load double, double* %15
%213 = load double*, double** %12
%214 = getelementptr inbounds double, double* %213, i64 7
store double %212, double* %214
%215 = load double*, double** %12
%216 = getelementptr inbounds double, double* %215, i64 8
%217 = load double, double* %216
%218 = load double*, double** %12
%219 = getelementptr inbounds double, double* %218, i64 23
store double %217, double* %219
%220 = load double, double* %16
%221 = load double*, double** %12
%222 = getelementptr inbounds double, double* %221, i64 8
store double %220, double* %222
%223 = load double*, double** %12
%224 = getelementptr inbounds double, double* %223, i64 9
%225 = load double, double* %224
%226 = load double*, double** %12
%227 = getelementptr inbounds double, double* %226, i64 24
store double %225, double* %227
%228 = load double, double* %17
%229 = load double*, double** %12
%230 = getelementptr inbounds double, double* %229, i64 9
store double %228, double* %230
ret void
}

LLVM IR (-O2):
define void @gint2_nai_pD_pD(double* %0, double %1, double* %2, double %3, double* %4, double* %5) {
%7 = tail call i32 @gint2_nai_cD_pD(double* %0, double %1, double* %2, double %3, double* %4, double* %5)
%8 = getelementptr inbounds double, double* %5, i64 10
%9 = getelementptr inbounds double, double* %5, i64 20
%10 = bitcast double* %8 to <2 x double>*
%11 = load <2 x double>, <2 x double>* %10
%12 = bitcast double* %9 to <2 x double>*
%13 = load <2 x double>, <2 x double>* %12
%14 = bitcast double* %8 to <2 x double>*
store <2 x double> %13, <2 x double>* %14
%15 = getelementptr inbounds double, double* %5, i64 12
%16 = getelementptr inbounds double, double* %5, i64 22
%17 = bitcast double* %15 to <2 x double>*
%18 = load <2 x double>, <2 x double>* %17
%19 = bitcast double* %16 to <2 x double>*
%20 = load <2 x double>, <2 x double>* %19
%21 = bitcast double* %15 to <2 x double>*
store <2 x double> %20, <2 x double>* %21
%22 = getelementptr inbounds double, double* %5, i64 14
%23 = load double, double* %22
%24 = getelementptr inbounds double, double* %5, i64 24
%25 = load double, double* %24
store double %25, double* %22
%26 = getelementptr inbounds double, double* %5, i64 25
%27 = getelementptr inbounds double, double* %5, i64 15
%28 = bitcast double* %27 to <2 x double>*
%29 = load <2 x double>, <2 x double>* %28
%30 = bitcast double* %5 to <2 x double>*
%31 = load <2 x double>, <2 x double>* %30
%32 = bitcast double* %26 to <2 x double>*
%33 = load <2 x double>, <2 x double>* %32
%34 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %31, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %33)
%35 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %29, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %34)
%36 = fmul <2 x double> %29, <double 0xBFEBB67AE8584CAE, double 0xBFEBB67AE8584CAE>
%37 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %31, <2 x double> <double 0x3FEBB67AE8584CAE, double 0x3FEBB67AE8584CAE>, <2 x double> %36)
%38 = bitcast double* %27 to <2 x double>*
store <2 x double> %37, <2 x double>* %38
%39 = bitcast double* %5 to <2 x double>*
store <2 x double> %35, <2 x double>* %39
%40 = getelementptr inbounds double, double* %5, i64 27
%41 = getelementptr inbounds double, double* %5, i64 17
%42 = getelementptr inbounds double, double* %5, i64 2
%43 = bitcast double* %41 to <2 x double>*
%44 = load <2 x double>, <2 x double>* %43
%45 = bitcast double* %42 to <2 x double>*
%46 = load <2 x double>, <2 x double>* %45
%47 = bitcast double* %40 to <2 x double>*
%48 = load <2 x double>, <2 x double>* %47
%49 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %44, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %48)
%50 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %46, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %49)
%51 = fmul <2 x double> %44, <double 0xBFEBB67AE8584CAE, double 0xBFEBB67AE8584CAE>
%52 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %46, <2 x double> <double 0x3FEBB67AE8584CAE, double 0x3FEBB67AE8584CAE>, <2 x double> %51)
%53 = bitcast double* %41 to <2 x double>*
store <2 x double> %52, <2 x double>* %53
%54 = bitcast double* %42 to <2 x double>*
store <2 x double> %50, <2 x double>* %54
%55 = getelementptr inbounds double, double* %5, i64 29
%56 = load double, double* %55
%57 = getelementptr inbounds double, double* %5, i64 19
%58 = load double, double* %57
%59 = tail call double @llvm.fmuladd.f64(double %58, double -5.000000e-01, double %56)
%60 = getelementptr inbounds double, double* %5, i64 4
%61 = load double, double* %60
%62 = tail call double @llvm.fmuladd.f64(double %61, double -5.000000e-01, double %59)
%63 = fmul double %58, 0xBFEBB67AE8584CAE
%64 = tail call double @llvm.fmuladd.f64(double %61, double 0x3FEBB67AE8584CAE, double %63)
store double %64, double* %57
store double %62, double* %60
%65 = getelementptr inbounds double, double* %5, i64 5
%66 = bitcast double* %65 to <2 x double>*
%67 = load <2 x double>, <2 x double>* %66
%68 = bitcast double* %9 to <2 x double>*
store <2 x double> %67, <2 x double>* %68
%69 = bitcast double* %65 to <2 x double>*
store <2 x double> %11, <2 x double>* %69
%70 = getelementptr inbounds double, double* %5, i64 7
%71 = bitcast double* %70 to <2 x double>*
%72 = load <2 x double>, <2 x double>* %71
%73 = bitcast double* %16 to <2 x double>*
store <2 x double> %72, <2 x double>* %73
%74 = bitcast double* %70 to <2 x double>*
store <2 x double> %18, <2 x double>* %74
%75 = getelementptr inbounds double, double* %5, i64 9
%76 = load double, double* %75
store double %76, double* %24
store double %23, double* %75
ret void
}