#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 */
double pow(double, double);
void gss3tar(double r, double g, double alpha, double *a, double *f, double *fr,
             double *fg, double *frr, double *frg, double *fgg) {
  double r83, r113, r143, s2, s2p1, u;
  r83 = pow(r, 8.0 / 3.0);
  r113 = r83 * r;
  r143 = r113 * r;
  s2 = g / r83;
  s2p1 = 1.0 + alpha * s2;
  u = alpha * s2 / s2p1;
  double D1uDs21 = alpha / (s2p1 * s2p1);
  double D2uDs22 = -2.0 * alpha * alpha / (s2p1 * s2p1 * s2p1);
  double D1s2Dr1 = (-8.0 / 3.0) * g / r113;
  double D2s2Dr2 = (+88.0 / 9.0) * g / r143;
  double D1s2Dg1 = 1.0 / r83;
  double D2s2Dr1g1 = (-8.0 / 3.0) / r113;
  double D1uDr1 = D1uDs21 * D1s2Dr1;
  double D1uDg1 = D1uDs21 * D1s2Dg1;
  double D2uDr2 = D2uDs22 * D1s2Dr1 * D1s2Dr1 + D1uDs21 * D2s2Dr2;
  double D2uDg2 = D2uDs22 * D1s2Dg1 * D1s2Dg1;
  double D2uDr1g1 = D2uDs22 * D1s2Dr1 * D1s2Dg1 + D1uDs21 * D2s2Dr1g1;
  *f = a[0] + a[1] * u + a[2] * u * u;
  *fr = 0.0 + a[1] * D1uDr1 + a[2] * 2.0 * u * D1uDr1;
  *fg = 0.0 + a[1] * D1uDg1 + a[2] * 2.0 * u * D1uDg1;
  *frr =
      0.0 + a[1] * D2uDr2 + a[2] * (2.0 * D1uDr1 * D1uDr1 + 2.0 * u * D2uDr2);
  *fgg =
      0.0 + a[1] * D2uDg2 + a[2] * (2.0 * D1uDg1 * D1uDg1 + 2.0 * u * D2uDg2);
  *frg = 0.0 + a[1] * D2uDr1g1 +
         a[2] * (2.0 * D1uDr1 * D1uDg1 + 2.0 * u * D2uDr1g1);
  return;
}


x86 assembly (clang, -O0):
<gss3tar>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    0x10(%rbp),%rax
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
mov    %rdi,-0x20(%rbp)
mov    %rsi,-0x28(%rbp)
mov    %rdx,-0x30(%rbp)
mov    %rcx,-0x38(%rbp)
mov    %r8,-0x40(%rbp)
mov    %r9,-0x48(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xed5(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x10(%rbp),%xmm0
divsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe70(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xe43(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xdfe(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
divsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xdf4(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
divsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xdd2(%rip),%xmm0
divsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xdb5(%rip),%xmm0
divsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x80(%rbp),%xmm1
mulsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x80(%rbp),%xmm1
mulsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0x78(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
addsd  %xmm0,%xmm1
mov    -0x20(%rbp),%rax
movsd  0xc83(%rip),%xmm0
mulsd  0x10(%rax),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
addsd  %xmm0,%xmm1
mov    -0x20(%rbp),%rax
movsd  0xc39(%rip),%xmm0
mulsd  0x10(%rax),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
addsd  %xmm0,%xmm1
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  0xbea(%rip),%xmm2
mulsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm4
ff
movsd  0xbd2(%rip),%xmm3
mulsd  -0x78(%rbp),%xmm3
mulsd  -0xc0(%rbp),%xmm3
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
addsd  %xmm0,%xmm1
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  0xb80(%rip),%xmm2
mulsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm4
ff
movsd  0xb68(%rip),%xmm3
mulsd  -0x78(%rbp),%xmm3
mulsd  -0xc8(%rbp),%xmm3
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
addsd  %xmm0,%xmm1
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  0xb16(%rip),%xmm2
mulsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm4
ff
movsd  0xafe(%rip),%xmm3
mulsd  -0x78(%rbp),%xmm3
mulsd  -0xd0(%rbp),%xmm3
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x48(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gss3tar>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %r9,%r14
mov    %r8,%r15
mov    %rcx,%r12
mov    %rdx,%r13
mov    %rsi,%rbp
mov    %rdi,%rbx
movsd  %xmm2,0x8(%rsp)
movsd  %xmm1,(%rsp)
movsd  %xmm0,0x10(%rsp)
movsd  0xeb7(%rip),%xmm1
call   1030 <pow@plt>
movsd  (%rsp),%xmm8
movapd %xmm8,%xmm1
divsd  %xmm0,%xmm1
movsd  0x8(%rsp),%xmm7
mulsd  %xmm7,%xmm1
movsd  0xe99(%rip),%xmm3
movapd %xmm1,%xmm6
addsd  %xmm3,%xmm6
divsd  %xmm0,%xmm3
movsd  0x10(%rsp),%xmm2
mulsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm2
movapd %xmm2,%xmm10
divsd  %xmm6,%xmm1
movapd %xmm6,%xmm5
mulsd  %xmm6,%xmm5
movapd %xmm7,%xmm4
divsd  %xmm5,%xmm4
movsd  0xe66(%rip),%xmm2
mulsd  %xmm7,%xmm2
mulsd  %xmm7,%xmm2
mulsd  %xmm6,%xmm5
divsd  %xmm5,%xmm2
movsd  0xe55(%rip),%xmm9
movapd %xmm8,%xmm5
movapd %xmm8,%xmm6
mulsd  %xmm9,%xmm6
mulsd  0xe46(%rip),%xmm5
divsd  %xmm0,%xmm6
divsd  %xmm10,%xmm5
divsd  %xmm0,%xmm9
movapd %xmm6,%xmm7
mulsd  %xmm4,%xmm7
movapd %xmm6,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm6
mulsd  %xmm3,%xmm2
mulsd  %xmm3,%xmm2
mulsd  %xmm3,%xmm0
mulsd  %xmm4,%xmm3
mulsd  %xmm4,%xmm5
addsd  %xmm5,%xmm6
movsd  0x8(%rbx),%xmm5
mulsd  %xmm1,%xmm5
addsd  (%rbx),%xmm5
mulsd  %xmm4,%xmm9
movsd  0x10(%rbx),%xmm4
mulsd  %xmm1,%xmm4
mulsd  %xmm1,%xmm4
addsd  %xmm5,%xmm4
movsd  %xmm4,0x0(%rbp)
movsd  0x8(%rbx),%xmm4
mulsd  %xmm7,%xmm4
xorpd  %xmm8,%xmm8
addsd  %xmm8,%xmm4
movsd  0x10(%rbx),%xmm5
addsd  %xmm5,%xmm5
mulsd  %xmm1,%xmm5
mulsd  %xmm7,%xmm5
addsd  %xmm4,%xmm5
movsd  %xmm5,0x0(%r13)
movsd  0x8(%rbx),%xmm4
mulsd  %xmm3,%xmm4
addsd  %xmm8,%xmm4
movsd  0x10(%rbx),%xmm5
addsd  %xmm5,%xmm5
mulsd  %xmm1,%xmm5
mulsd  %xmm3,%xmm5
addsd  %xmm4,%xmm5
movsd  %xmm5,(%r12)
movsd  0x8(%rbx),%xmm4
mulsd  %xmm6,%xmm4
addsd  %xmm8,%xmm4
movapd %xmm7,%xmm5
addsd  %xmm7,%xmm5
addsd  %xmm1,%xmm1
mulsd  %xmm1,%xmm6
mulsd  %xmm5,%xmm7
addsd  %xmm6,%xmm7
mulsd  0x10(%rbx),%xmm7
addsd  %xmm4,%xmm7
movsd  %xmm7,(%r15)
movapd %xmm1,%xmm4
mulsd  %xmm2,%xmm4
mulsd  0x8(%rbx),%xmm2
addsd  %xmm9,%xmm0
addsd  %xmm8,%xmm2
movapd %xmm3,%xmm6
addsd  %xmm3,%xmm6
mulsd  %xmm3,%xmm6
addsd  %xmm4,%xmm6
mulsd  0x10(%rbx),%xmm6
addsd  %xmm2,%xmm6
mov    0x50(%rsp),%rax
movsd  %xmm6,(%rax)
mulsd  %xmm0,%xmm1
mulsd  0x8(%rbx),%xmm0
addsd  %xmm8,%xmm0
mulsd  %xmm3,%xmm5
addsd  %xmm1,%xmm5
mulsd  0x10(%rbx),%xmm5
addsd  %xmm0,%xmm5
movsd  %xmm5,(%r14)
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @gss3tar(double %0, double %1, double %2, double* nocapture %3, double* nocapture writeonly %4, double* nocapture writeonly %5, double* nocapture writeonly %6, double* nocapture writeonly %7, double* nocapture writeonly %8, double* nocapture writeonly %9) {
%11 = tail call double @pow(double %0, double 0x4005555555555555)
%12 = fmul double %11, %0
%13 = fmul double %12, %0
%14 = fdiv double %1, %11
%15 = tail call double @llvm.fmuladd.f64(double %2, double %14, double 1.000000e+00)
%16 = fmul double %14, %2
%17 = fdiv double %16, %15
%18 = fmul double %15, %15
%19 = fdiv double %2, %18
%20 = fmul double %2, -2.000000e+00
%21 = fmul double %20, %2
%22 = fmul double %15, %18
%23 = fdiv double %21, %22
%24 = fmul double %1, 0xC005555555555555
%25 = fdiv double %24, %12
%26 = fmul double %1, 0x40238E38E38E38E4
%27 = fdiv double %26, %13
%28 = fdiv double 1.000000e+00, %11
%29 = fdiv double 0xC005555555555555, %12
%30 = fmul double %25, %19
%31 = fmul double %28, %19
%32 = fmul double %25, %23
%33 = fmul double %27, %19
%34 = tail call double @llvm.fmuladd.f64(double %32, double %25, double %33)
%35 = fmul double %28, %23
%36 = fmul double %28, %35
%37 = fmul double %29, %19
%38 = tail call double @llvm.fmuladd.f64(double %32, double %28, double %37)
%39 = load double, double* %3
%40 = getelementptr inbounds double, double* %3, i64 1
%41 = load double, double* %40
%42 = tail call double @llvm.fmuladd.f64(double %41, double %17, double %39)
%43 = getelementptr inbounds double, double* %3, i64 2
%44 = load double, double* %43
%45 = fmul double %44, %17
%46 = tail call double @llvm.fmuladd.f64(double %45, double %17, double %42)
store double %46, double* %4
%47 = load double, double* %40
%48 = tail call double @llvm.fmuladd.f64(double %47, double %30, double 0.000000e+00)
%49 = load double, double* %43
%50 = fmul double %49, 2.000000e+00
%51 = fmul double %17, %50
%52 = tail call double @llvm.fmuladd.f64(double %51, double %30, double %48)
store double %52, double* %5
%53 = load double, double* %40
%54 = tail call double @llvm.fmuladd.f64(double %53, double %31, double 0.000000e+00)
%55 = load double, double* %43
%56 = fmul double %55, 2.000000e+00
%57 = fmul double %17, %56
%58 = tail call double @llvm.fmuladd.f64(double %57, double %31, double %54)
store double %58, double* %6
%59 = load double, double* %40
%60 = tail call double @llvm.fmuladd.f64(double %59, double %34, double 0.000000e+00)
%61 = load double, double* %43
%62 = fmul double %30, 2.000000e+00
%63 = fmul double %17, 2.000000e+00
%64 = fmul double %63, %34
%65 = tail call double @llvm.fmuladd.f64(double %62, double %30, double %64)
%66 = tail call double @llvm.fmuladd.f64(double %61, double %65, double %60)
store double %66, double* %7
%67 = load double, double* %40
%68 = tail call double @llvm.fmuladd.f64(double %67, double %36, double 0.000000e+00)
%69 = load double, double* %43
%70 = fmul double %31, 2.000000e+00
%71 = fmul double %63, %36
%72 = tail call double @llvm.fmuladd.f64(double %70, double %31, double %71)
%73 = tail call double @llvm.fmuladd.f64(double %69, double %72, double %68)
store double %73, double* %9
%74 = load double, double* %40
%75 = tail call double @llvm.fmuladd.f64(double %74, double %38, double 0.000000e+00)
%76 = load double, double* %43
%77 = fmul double %63, %38
%78 = tail call double @llvm.fmuladd.f64(double %62, double %31, double %77)
%79 = tail call double @llvm.fmuladd.f64(double %76, double %78, double %75)
store double %79, double* %8
ret void
}