#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_pF(double *, double, double *, double, double *,
                                   double *);
void gint2_nai_pD_pF(double *a, double a_a, double *b, double b_a, double *c,
                     double *out) {
  double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
  gint2_nai_cD_pF(a, a_a, b, b_a, c, out);
  tmp0 = out[14];
  out[14] = out[28];
  tmp1 = out[15];
  out[15] = out[29];
  tmp2 = out[16];
  out[16] = out[30];
  tmp3 = out[17];
  out[17] = out[31];
  tmp4 = out[18];
  out[18] = out[32];
  tmp5 = out[19];
  out[19] = out[33];
  tmp6 = out[20];
  out[20] = out[34];
  tmp7 = out[35] - 0.5 * out[0] - 0.5 * out[21];
  out[21] = 0.866025403784439 * out[0] - 0.866025403784439 * out[21];
  out[0] = tmp7;
  tmp7 = out[36] - 0.5 * out[1] - 0.5 * out[22];
  out[22] = 0.866025403784439 * out[1] - 0.866025403784439 * out[22];
  out[1] = tmp7;
  tmp7 = out[37] - 0.5 * out[2] - 0.5 * out[23];
  out[23] = 0.866025403784439 * out[2] - 0.866025403784439 * out[23];
  out[2] = tmp7;
  tmp7 = out[38] - 0.5 * out[24] - 0.5 * out[3];
  out[24] = 0.866025403784439 * out[3] - 0.866025403784439 * out[24];
  out[3] = tmp7;
  tmp7 = out[39] - 0.5 * out[25] - 0.5 * out[4];
  out[25] = 0.866025403784439 * out[4] - 0.866025403784439 * out[25];
  out[4] = tmp7;
  tmp7 = out[40] - 0.5 * out[26] - 0.5 * out[5];
  out[26] = 0.866025403784439 * out[5] - 0.866025403784439 * out[26];
  out[5] = tmp7;
  tmp7 = out[41] - 0.5 * out[27] - 0.5 * out[6];
  out[27] = 0.866025403784439 * out[6] - 0.866025403784439 * out[27];
  out[6] = tmp7;
  out[28] = out[7];
  out[7] = tmp0;
  out[29] = out[8];
  out[8] = tmp1;
  out[30] = out[9];
  out[9] = tmp2;
  out[31] = out[10];
  out[10] = tmp3;
  out[32] = out[11];
  out[11] = tmp4;
  out[33] = out[12];
  out[12] = tmp5;
  out[34] = out[13];
  out[13] = tmp6;
}


x86 assembly (clang, -O0):
<gint2_nai_pD_pF>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%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_pF@plt>
mov    -0x30(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x30(%rbp),%rax
movsd  0xe0(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x30(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x30(%rbp),%rax
movsd  0xe8(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x30(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x30(%rbp),%rax
movsd  0xf0(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x80(%rax)
mov    -0x30(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x30(%rbp),%rax
movsd  0xf8(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x88(%rax)
mov    -0x30(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x100(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x90(%rax)
mov    -0x30(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x108(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x98(%rax)
mov    -0x30(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x110(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
mov    -0x30(%rbp),%rax
movsd  0x118(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0xd88(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  0xd6c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xd43(%rip),%xmm1
mulsd  0xa8(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xd1c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xa8(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  0x120(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  0xce6(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  0xcca(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xca0(%rip),%xmm1
mulsd  0xb0(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xc79(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xb0(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x30(%rbp),%rax
movsd  0x128(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm1
movsd  0xc42(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  0xc26(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xbfc(%rip),%xmm1
mulsd  0xb8(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xbd5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xb8(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x30(%rbp),%rax
movsd  0x130(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xc0(%rax),%xmm1
movsd  0xb9b(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  0xb82(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xb58(%rip),%xmm1
mulsd  0xc0(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xb31(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xc0(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x30(%rbp),%rax
movsd  0x138(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xc8(%rax),%xmm1
movsd  0xaf7(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  0xade(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xab4(%rip),%xmm1
mulsd  0xc8(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xa8d(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xc8(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x30(%rbp),%rax
movsd  0x140(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xd0(%rax),%xmm1
movsd  0xa53(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  0xa3a(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xa10(%rip),%xmm1
mulsd  0xd0(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x9e9(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xd0(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x30(%rbp),%rax
movsd  0x148(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0xd8(%rax),%xmm1
movsd  0x9af(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x30(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  0x996(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x96c(%rip),%xmm1
mulsd  0xd8(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x945(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xd8(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x30(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xe0(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x30(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xe8(%rax)
movsd  -0x40(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x30(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xf0(%rax)
movsd  -0x48(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x30(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0xf8(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x30(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x100(%rax)
movsd  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x30(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x108(%rax)
movsd  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x30(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x110(%rax)
movsd  -0x68(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x68(%rax)
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gint2_nai_pD_pF>:
push   %rbx
mov    %rcx,%rbx
call   1030 <gint2_nai_cD_pF@plt>
movups 0xe0(%rbx),%xmm1
movupd (%rbx),%xmm0
movupd 0x10(%rbx),%xmm5
movups 0x70(%rbx),%xmm3
movups 0x80(%rbx),%xmm8
movups %xmm1,0x70(%rbx)
movups 0xf0(%rbx),%xmm1
movups %xmm1,0x80(%rbx)
movups 0x90(%rbx),%xmm9
movups 0x100(%rbx),%xmm2
movups %xmm2,0x90(%rbx)
movsd  0xa0(%rbx),%xmm10
movsd  0x110(%rbx),%xmm4
movsd  %xmm4,0xa0(%rbx)
movupd 0xa8(%rbx),%xmm2
movupd 0x118(%rbx),%xmm6
movapd 0xe72(%rip),%xmm4
movapd %xmm0,%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm6,%xmm7
movapd %xmm2,%xmm1
mulpd  %xmm4,%xmm1
addpd  %xmm7,%xmm1
movapd 0xe62(%rip),%xmm6
mulpd  %xmm6,%xmm2
movapd 0xe66(%rip),%xmm7
mulpd  %xmm7,%xmm0
addpd  %xmm2,%xmm0
movupd %xmm0,0xa8(%rbx)
movupd %xmm1,(%rbx)
movupd 0x128(%rbx),%xmm0
movupd 0xb8(%rbx),%xmm1
movapd %xmm1,%xmm2
movsd  %xmm5,%xmm2
mulpd  %xmm4,%xmm2
addpd  %xmm0,%xmm2
movapd %xmm5,%xmm0
movsd  %xmm1,%xmm0
mulpd  %xmm4,%xmm0
addpd  %xmm2,%xmm0
mulpd  %xmm6,%xmm1
mulpd  %xmm7,%xmm5
addpd  %xmm1,%xmm5
movupd %xmm5,0xb8(%rbx)
movupd %xmm0,0x10(%rbx)
movupd 0x20(%rbx),%xmm0
movupd 0xc8(%rbx),%xmm1
movupd 0x138(%rbx),%xmm2
movapd %xmm1,%xmm5
mulpd  %xmm4,%xmm5
addpd  %xmm2,%xmm5
mulpd  %xmm0,%xmm4
addpd  %xmm5,%xmm4
mulpd  %xmm6,%xmm1
mulpd  %xmm7,%xmm0
addpd  %xmm1,%xmm0
movupd %xmm0,0xc8(%rbx)
movupd %xmm4,0x20(%rbx)
movsd  0x30(%rbx),%xmm0
movsd  0xd8(%rbx),%xmm1
movsd  0xdc2(%rip),%xmm2
movapd %xmm1,%xmm4
mulsd  %xmm2,%xmm4
addsd  0x148(%rbx),%xmm4
mulsd  %xmm0,%xmm2
mulsd  0xdae(%rip),%xmm1
mulsd  0xdae(%rip),%xmm0
addsd  %xmm4,%xmm2
addsd  %xmm1,%xmm0
movsd  %xmm0,0xd8(%rbx)
movsd  %xmm2,0x30(%rbx)
movups 0x38(%rbx),%xmm0
movups %xmm0,0xe0(%rbx)
movups %xmm3,0x38(%rbx)
movups 0x48(%rbx),%xmm0
movups %xmm0,0xf0(%rbx)
movups %xmm8,0x48(%rbx)
movups 0x58(%rbx),%xmm0
movups %xmm0,0x100(%rbx)
movups %xmm9,0x58(%rbx)
movsd  0x68(%rbx),%xmm0
movsd  %xmm0,0x110(%rbx)
movsd  %xmm10,0x68(%rbx)
pop    %rbx
ret

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

LLVM IR (-O2):
define void @gint2_nai_pD_pF(double* %0, double %1, double* %2, double %3, double* %4, double* %5) {
%7 = tail call i32 @gint2_nai_cD_pF(double* %0, double %1, double* %2, double %3, double* %4, double* %5)
%8 = getelementptr inbounds double, double* %5, i64 14
%9 = getelementptr inbounds double, double* %5, i64 28
%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 16
%16 = getelementptr inbounds double, double* %5, i64 30
%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 18
%23 = getelementptr inbounds double, double* %5, i64 32
%24 = bitcast double* %22 to <2 x double>*
%25 = load <2 x double>, <2 x double>* %24
%26 = bitcast double* %23 to <2 x double>*
%27 = load <2 x double>, <2 x double>* %26
%28 = bitcast double* %22 to <2 x double>*
store <2 x double> %27, <2 x double>* %28
%29 = getelementptr inbounds double, double* %5, i64 20
%30 = load double, double* %29
%31 = getelementptr inbounds double, double* %5, i64 34
%32 = load double, double* %31
store double %32, double* %29
%33 = getelementptr inbounds double, double* %5, i64 35
%34 = getelementptr inbounds double, double* %5, i64 21
%35 = bitcast double* %34 to <2 x double>*
%36 = load <2 x double>, <2 x double>* %35
%37 = bitcast double* %5 to <2 x double>*
%38 = load <2 x double>, <2 x double>* %37
%39 = bitcast double* %33 to <2 x double>*
%40 = load <2 x double>, <2 x double>* %39
%41 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %38, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %40)
%42 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %36, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %41)
%43 = fmul <2 x double> %36, <double 0xBFEBB67AE8584CAE, double 0xBFEBB67AE8584CAE>
%44 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %38, <2 x double> <double 0x3FEBB67AE8584CAE, double 0x3FEBB67AE8584CAE>, <2 x double> %43)
%45 = bitcast double* %34 to <2 x double>*
store <2 x double> %44, <2 x double>* %45
%46 = bitcast double* %5 to <2 x double>*
store <2 x double> %42, <2 x double>* %46
%47 = getelementptr inbounds double, double* %5, i64 37
%48 = getelementptr inbounds double, double* %5, i64 2
%49 = getelementptr inbounds double, double* %5, i64 23
%50 = bitcast double* %47 to <2 x double>*
%51 = load <2 x double>, <2 x double>* %50
%52 = bitcast double* %49 to <2 x double>*
%53 = load <2 x double>, <2 x double>* %52
%54 = bitcast double* %48 to <2 x double>*
%55 = load <2 x double>, <2 x double>* %54
%56 = shufflevector <2 x double> %55, <2 x double> %53, <2 x i32> <i32 0, i32 3>
%57 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %56, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %51)
%58 = shufflevector <2 x double> %53, <2 x double> %55, <2 x i32> <i32 0, i32 3>
%59 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %58, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %57)
%60 = fmul <2 x double> %53, <double 0xBFEBB67AE8584CAE, double 0xBFEBB67AE8584CAE>
%61 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %55, <2 x double> <double 0x3FEBB67AE8584CAE, double 0x3FEBB67AE8584CAE>, <2 x double> %60)
%62 = bitcast double* %49 to <2 x double>*
store <2 x double> %61, <2 x double>* %62
%63 = bitcast double* %48 to <2 x double>*
store <2 x double> %59, <2 x double>* %63
%64 = getelementptr inbounds double, double* %5, i64 39
%65 = getelementptr inbounds double, double* %5, i64 25
%66 = getelementptr inbounds double, double* %5, i64 4
%67 = bitcast double* %65 to <2 x double>*
%68 = load <2 x double>, <2 x double>* %67
%69 = bitcast double* %66 to <2 x double>*
%70 = load <2 x double>, <2 x double>* %69
%71 = bitcast double* %64 to <2 x double>*
%72 = load <2 x double>, <2 x double>* %71
%73 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %68, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %72)
%74 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %70, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %73)
%75 = fmul <2 x double> %68, <double 0xBFEBB67AE8584CAE, double 0xBFEBB67AE8584CAE>
%76 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %70, <2 x double> <double 0x3FEBB67AE8584CAE, double 0x3FEBB67AE8584CAE>, <2 x double> %75)
%77 = bitcast double* %65 to <2 x double>*
store <2 x double> %76, <2 x double>* %77
%78 = bitcast double* %66 to <2 x double>*
store <2 x double> %74, <2 x double>* %78
%79 = getelementptr inbounds double, double* %5, i64 41
%80 = load double, double* %79
%81 = getelementptr inbounds double, double* %5, i64 27
%82 = load double, double* %81
%83 = tail call double @llvm.fmuladd.f64(double %82, double -5.000000e-01, double %80)
%84 = getelementptr inbounds double, double* %5, i64 6
%85 = load double, double* %84
%86 = tail call double @llvm.fmuladd.f64(double %85, double -5.000000e-01, double %83)
%87 = fmul double %82, 0xBFEBB67AE8584CAE
%88 = tail call double @llvm.fmuladd.f64(double %85, double 0x3FEBB67AE8584CAE, double %87)
store double %88, double* %81
store double %86, double* %84
%89 = getelementptr inbounds double, double* %5, i64 7
%90 = bitcast double* %89 to <2 x double>*
%91 = load <2 x double>, <2 x double>* %90
%92 = bitcast double* %9 to <2 x double>*
store <2 x double> %91, <2 x double>* %92
%93 = bitcast double* %89 to <2 x double>*
store <2 x double> %11, <2 x double>* %93
%94 = getelementptr inbounds double, double* %5, i64 9
%95 = bitcast double* %94 to <2 x double>*
%96 = load <2 x double>, <2 x double>* %95
%97 = bitcast double* %16 to <2 x double>*
store <2 x double> %96, <2 x double>* %97
%98 = bitcast double* %94 to <2 x double>*
store <2 x double> %18, <2 x double>* %98
%99 = getelementptr inbounds double, double* %5, i64 11
%100 = bitcast double* %99 to <2 x double>*
%101 = load <2 x double>, <2 x double>* %100
%102 = bitcast double* %23 to <2 x double>*
store <2 x double> %101, <2 x double>* %102
%103 = bitcast double* %99 to <2 x double>*
store <2 x double> %25, <2 x double>* %103
%104 = getelementptr inbounds double, double* %5, i64 13
%105 = load double, double* %104
store double %105, double* %31
store double %30, double* %104
ret void
}