double gam1(double *a) {
  static double s1 = .273076135303957e+00;
  static double s2 = .559398236957378e-01;
  static double p[7] = {.577215664901533e+00,  -.409078193005776e+00,
                        -.230975380857675e+00, .597275330452234e-01,
                        .766968181649490e-02,  -.514889771323592e-02,
                        .589597428611429e-03};
  static double q[5] = {.100000000000000e+01, .427569613095214e+00,
                        .158451672430138e+00, .261132021441447e-01,
                        .423244297896961e-02};
  static double r[9] = {
      -.422784335098468e+00, -.771330383816272e+00, -.244757765222226e+00,
      .118378989872749e+00,  .930357293360349e-03,  -.118290993445146e-01,
      .223047661158249e-02,  .266505979058923e-03,  -.132674909766242e-03};
  static double gam1, bot, d, t, top, w, T1;
  t = *a;
  d = *a - 0.5e0;
  if (d > 0.0e0)
    t = d - 0.5e0;
  T1 = t;
  if (T1 < 0)
    goto S40;
  else if (T1 == 0)
    goto S10;
  else
    goto S20;
S10:
  gam1 = 0.0e0;
  return gam1;
S20:
  top = (((((p[6] * t + p[5]) * t + p[4]) * t + p[3]) * t + p[2]) * t + p[1]) *
            t +
        p[0];
  bot = (((q[4] * t + q[3]) * t + q[2]) * t + q[1]) * t + 1.0e0;
  w = top / bot;
  if (d > 0.0e0)
    goto S30;
  gam1 = *a * w;
  return gam1;
S30:
  gam1 = t / *a * (w - 0.5e0 - 0.5e0);
  return gam1;
S40:
  top =
      (((((((r[8] * t + r[7]) * t + r[6]) * t + r[5]) * t + r[4]) * t + r[3]) *
            t +
        r[2]) *
           t +
       r[1]) *
          t +
      r[0];
  bot = (s2 * t + s1) * t + 1.0e0;
  w = top / bot;
  if (d > 0.0e0)
    goto S50;
  gam1 = *a * (w + 0.5e0 + 0.5e0);
  return gam1;
S50:
  gam1 = t * w / *a;
  return gam1;
}


x86 assembly (clang, -O0):
<gam1>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x3000(%rip)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xed8(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x2fdc(%rip)
movsd  0x2fd4(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1165 <gam1+0x65>
movsd  0x2fbf(%rip),%xmm0
movsd  0xea7(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x2fb3(%rip)
movsd  0x2fab(%rip),%xmm0
movsd  %xmm0,0x2fbb(%rip)
xorps  %xmm0,%xmm0
ucomisd 0x2fb0(%rip),%xmm0
jbe    118b <gam1+0x8b>
jmp    1387 <gam1+0x287>
movsd  0x2f9d(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11ab <gam1+0xab>
jp     11ab <gam1+0xab>
jmp    11b0 <gam1+0xb0>
jmp    11cd <gam1+0xcd>
xorps  %xmm0,%xmm0
movsd  %xmm0,0x2f45(%rip)
movsd  0x2f3d(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1538 <gam1+0x438>
movsd  0x2e9b(%rip),%xmm0
movsd  0x2f3b(%rip),%xmm2
movsd  0x2e83(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2f23(%rip),%xmm2
movsd  0x2e63(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2f0b(%rip),%xmm2
movsd  0x2e43(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2ef3(%rip),%xmm2
movsd  0x2e23(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2edb(%rip),%xmm2
movsd  0x2e03(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2ec3(%rip),%xmm2
movsd  0x2de3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2eb3(%rip)
movsd  0x2e2b(%rip),%xmm0
movsd  0x2e9b(%rip),%xmm2
movsd  0x2e13(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2e83(%rip),%xmm2
movsd  0x2df3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2e6b(%rip),%xmm2
movsd  0x2dd3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2e53(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd37(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2e2b(%rip)
movsd  0x2e3b(%rip),%xmm0
divsd  0x2e1b(%rip),%xmm0
movsd  %xmm0,0x2e33(%rip)
movsd  0x2e13(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    130f <gam1+0x20f>
jmp    1339 <gam1+0x239>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  0x2e09(%rip),%xmm0
movsd  %xmm0,0x2dd9(%rip)
movsd  0x2dd1(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1538 <gam1+0x438>
movsd  0x2dd7(%rip),%xmm0
mov    -0x10(%rbp),%rax
divsd  (%rax),%xmm0
movsd  0x2dd7(%rip),%xmm1
movsd  0xca7(%rip),%xmm2
subsd  %xmm2,%xmm1
movsd  0xc9b(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2d8b(%rip)
movsd  0x2d83(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1538 <gam1+0x438>
movsd  0x2d61(%rip),%xmm0
movsd  0x2d81(%rip),%xmm2
movsd  0x2d49(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2d69(%rip),%xmm2
movsd  0x2d29(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2d51(%rip),%xmm2
movsd  0x2d09(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2d39(%rip),%xmm2
movsd  0x2ce9(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2d21(%rip),%xmm2
movsd  0x2cc9(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2d09(%rip),%xmm2
movsd  0x2ca9(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2cf1(%rip),%xmm2
movsd  0x2c89(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2cd9(%rip),%xmm2
movsd  0x2c69(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2cc9(%rip)
movsd  0x2bd9(%rip),%xmm0
movsd  0x2cb1(%rip),%xmm2
movsd  0x2bc1(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2c99(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb7d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2c71(%rip)
movsd  0x2c81(%rip),%xmm0
divsd  0x2c61(%rip),%xmm0
movsd  %xmm0,0x2c79(%rip)
movsd  0x2c59(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    14c9 <gam1+0x3c9>
jmp    150b <gam1+0x40b>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xb27(%rip),%xmm1
addsd  0x2c47(%rip),%xmm1
movsd  0xb17(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2c07(%rip)
movsd  0x2bff(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1538 <gam1+0x438>
movsd  0x2c05(%rip),%xmm0
mulsd  0x2c0d(%rip),%xmm0
mov    -0x10(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,0x2bd5(%rip)
movsd  0x2bcd(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<gam1>:
movsd  (%rdi),%xmm1
movsd  0xef4(%rip),%xmm3
movapd %xmm1,%xmm4
addsd  %xmm3,%xmm4
movapd %xmm4,%xmm5
addsd  %xmm3,%xmm5
xorpd  %xmm0,%xmm0
xorpd  %xmm2,%xmm2
cmpltsd %xmm4,%xmm2
andpd  %xmm2,%xmm5
andnpd %xmm1,%xmm2
orpd   %xmm5,%xmm2
ucomisd %xmm2,%xmm0
jbe    11df <gam1+0xdf>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
movsd  0xf19(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf15(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf11(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf0d(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf09(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf05(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf01(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xefd(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xef9(%rip),%xmm0
movsd  0xef9(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xef5(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xe91(%rip),%xmm3
divsd  %xmm3,%xmm0
jbe    11e8 <gam1+0xe8>
mulsd  %xmm2,%xmm0
divsd  %xmm1,%xmm0
jmp    11e7 <gam1+0xe7>
ucomisd %xmm0,%xmm2
jne    11fd <gam1+0xfd>
jp     11fd <gam1+0xfd>
ret
movsd  0xed0(%rip),%xmm2
addsd  %xmm2,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
ret
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
movsd  0xdfb(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdf7(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdf3(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdef(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdeb(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xde7(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xde3(%rip),%xmm0
movsd  0xde3(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xddf(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xddb(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xdd7(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xdd3(%rip),%xmm4
divsd  %xmm4,%xmm0
jbe    12a4 <gam1+0x1a4>
divsd  %xmm1,%xmm2
addsd  %xmm3,%xmm0
addsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm0
ret
mulsd  %xmm1,%xmm0
ret

LLVM IR (-O0):
@gam1.s1 = internal global double 0x3FD17A14539CB550
@gam1.s2 = internal global double 0x3FACA42502A26800
@gam1.p = internal global [7 x double] [double 0x3FE2788CFC6FB61A, double 0xBFDA2E564D1DDC83, double 0xBFCD9099ED7B807C, double 0x3FAE949B72333263, double 0x3F7F6A3E892940B3, double 0xBF751702B49EEA17, double 0x3F4351E6D63B8846]
@gam1.q = internal global [5 x double] [double 1.000000e+00, double 0x3FDB5D4CF04077E4, double 0x3FC44824F78ABECB, double 0x3F9ABD6B54CFCF21, double 0x3F715609C2D46A68]
@gam1.r = internal global [9 x double] [double 0xBFDB0EE6072093DE, double 0xBFE8AEBD0E9CDD50, double 0xBFCF5438F2892723, double 0x3FBE4E15E2097702, double 0x3F4E7C67130498BA, double 0xBF8839DAD69B4A44, double 0x3F6245A6033D5B04, double 0x3F31773A76D8DC66, double 0xBF2163D4CC01152C]
@gam1.gam1 = internal global double 0.000000e+00
@gam1.bot = internal global double 0.000000e+00
@gam1.d = internal global double 0.000000e+00
@gam1.t = internal global double 0.000000e+00
@gam1.top = internal global double 0.000000e+00
@gam1.w = internal global double 0.000000e+00
@gam1.T1 = internal global double 0.000000e+00
define double @gam1(double* %0) {
%2 = alloca double
%3 = alloca double*
store double* %0, double** %3
%4 = load double*, double** %3
%5 = load double, double* %4
store double %5, double* @gam1.t
%6 = load double*, double** %3
%7 = load double, double* %6
%8 = fsub double %7, 5.000000e-01
store double %8, double* @gam1.d
%9 = load double, double* @gam1.d
%10 = fcmp ogt double %9, 0.000000e+00
br i1 %10, label %11, label %14
11: ; preds = %1
%12 = load double, double* @gam1.d
%13 = fsub double %12, 5.000000e-01
store double %13, double* @gam1.t
br label %14
14: ; preds = %11, %1
%15 = load double, double* @gam1.t
store double %15, double* @gam1.T1
%16 = load double, double* @gam1.T1
%17 = fcmp olt double %16, 0.000000e+00
br i1 %17, label %18, label %19
18: ; preds = %14
br label %80
19: ; preds = %14
%20 = load double, double* @gam1.T1
%21 = fcmp oeq double %20, 0.000000e+00
br i1 %21, label %22, label %23
22: ; preds = %19
br label %24
23: ; preds = %19
br label %26
24: ; preds = %22
store double 0.000000e+00, double* @gam1.gam1
%25 = load double, double* @gam1.gam1
store double %25, double* %2
br label %134
26: ; preds = %23
%27 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 6)
%28 = load double, double* @gam1.t
%29 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 5)
%30 = call double @llvm.fmuladd.f64(double %27, double %28, double %29)
%31 = load double, double* @gam1.t
%32 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 4)
%33 = call double @llvm.fmuladd.f64(double %30, double %31, double %32)
%34 = load double, double* @gam1.t
%35 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 3)
%36 = call double @llvm.fmuladd.f64(double %33, double %34, double %35)
%37 = load double, double* @gam1.t
%38 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 2)
%39 = call double @llvm.fmuladd.f64(double %36, double %37, double %38)
%40 = load double, double* @gam1.t
%41 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 1)
%42 = call double @llvm.fmuladd.f64(double %39, double %40, double %41)
%43 = load double, double* @gam1.t
%44 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 0)
%45 = call double @llvm.fmuladd.f64(double %42, double %43, double %44)
store double %45, double* @gam1.top
%46 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @gam1.q, i64 0, i64 4)
%47 = load double, double* @gam1.t
%48 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @gam1.q, i64 0, i64 3)
%49 = call double @llvm.fmuladd.f64(double %46, double %47, double %48)
%50 = load double, double* @gam1.t
%51 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @gam1.q, i64 0, i64 2)
%52 = call double @llvm.fmuladd.f64(double %49, double %50, double %51)
%53 = load double, double* @gam1.t
%54 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @gam1.q, i64 0, i64 1)
%55 = call double @llvm.fmuladd.f64(double %52, double %53, double %54)
%56 = load double, double* @gam1.t
%57 = call double @llvm.fmuladd.f64(double %55, double %56, double 1.000000e+00)
store double %57, double* @gam1.bot
%58 = load double, double* @gam1.top
%59 = load double, double* @gam1.bot
%60 = fdiv double %58, %59
store double %60, double* @gam1.w
%61 = load double, double* @gam1.d
%62 = fcmp ogt double %61, 0.000000e+00
br i1 %62, label %63, label %64
63: ; preds = %26
br label %70
64: ; preds = %26
%65 = load double*, double** %3
%66 = load double, double* %65
%67 = load double, double* @gam1.w
%68 = fmul double %66, %67
store double %68, double* @gam1.gam1
%69 = load double, double* @gam1.gam1
store double %69, double* %2
br label %134
70: ; preds = %63
%71 = load double, double* @gam1.t
%72 = load double*, double** %3
%73 = load double, double* %72
%74 = fdiv double %71, %73
%75 = load double, double* @gam1.w
%76 = fsub double %75, 5.000000e-01
%77 = fsub double %76, 5.000000e-01
%78 = fmul double %74, %77
store double %78, double* @gam1.gam1
%79 = load double, double* @gam1.gam1
store double %79, double* %2
br label %134
80: ; preds = %18
%81 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r, i64 0, i64 8)
%82 = load double, double* @gam1.t
%83 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r, i64 0, i64 7)
%84 = call double @llvm.fmuladd.f64(double %81, double %82, double %83)
%85 = load double, double* @gam1.t
%86 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r, i64 0, i64 6)
%87 = call double @llvm.fmuladd.f64(double %84, double %85, double %86)
%88 = load double, double* @gam1.t
%89 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r, i64 0, i64 5)
%90 = call double @llvm.fmuladd.f64(double %87, double %88, double %89)
%91 = load double, double* @gam1.t
%92 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r, i64 0, i64 4)
%93 = call double @llvm.fmuladd.f64(double %90, double %91, double %92)
%94 = load double, double* @gam1.t
%95 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r, i64 0, i64 3)
%96 = call double @llvm.fmuladd.f64(double %93, double %94, double %95)
%97 = load double, double* @gam1.t
%98 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r, i64 0, i64 2)
%99 = call double @llvm.fmuladd.f64(double %96, double %97, double %98)
%100 = load double, double* @gam1.t
%101 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r, i64 0, i64 1)
%102 = call double @llvm.fmuladd.f64(double %99, double %100, double %101)
%103 = load double, double* @gam1.t
%104 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r, i64 0, i64 0)
%105 = call double @llvm.fmuladd.f64(double %102, double %103, double %104)
store double %105, double* @gam1.top
%106 = load double, double* @gam1.s2
%107 = load double, double* @gam1.t
%108 = load double, double* @gam1.s1
%109 = call double @llvm.fmuladd.f64(double %106, double %107, double %108)
%110 = load double, double* @gam1.t
%111 = call double @llvm.fmuladd.f64(double %109, double %110, double 1.000000e+00)
store double %111, double* @gam1.bot
%112 = load double, double* @gam1.top
%113 = load double, double* @gam1.bot
%114 = fdiv double %112, %113
store double %114, double* @gam1.w
%115 = load double, double* @gam1.d
%116 = fcmp ogt double %115, 0.000000e+00
br i1 %116, label %117, label %118
117: ; preds = %80
br label %126
118: ; preds = %80
%119 = load double*, double** %3
%120 = load double, double* %119
%121 = load double, double* @gam1.w
%122 = fadd double %121, 5.000000e-01
%123 = fadd double %122, 5.000000e-01
%124 = fmul double %120, %123
store double %124, double* @gam1.gam1
%125 = load double, double* @gam1.gam1
store double %125, double* %2
br label %134
126: ; preds = %117
%127 = load double, double* @gam1.t
%128 = load double, double* @gam1.w
%129 = fmul double %127, %128
%130 = load double*, double** %3
%131 = load double, double* %130
%132 = fdiv double %129, %131
store double %132, double* @gam1.gam1
%133 = load double, double* @gam1.gam1
store double %133, double* %2
br label %134
134: ; preds = %126, %118, %70, %64, %24
%135 = load double, double* %2
ret double %135
}

LLVM IR (-O2):
define double @gam1(double* nocapture %0) {
%2 = load double, double* %0
%3 = fadd double %2, -5.000000e-01
%4 = fcmp ogt double %3, 0.000000e+00
%5 = fadd double %3, -5.000000e-01
%6 = select i1 %4, double %5, double %2
%7 = fcmp olt double %6, 0.000000e+00
br i1 %7, label %29, label %8
8: ; preds = %1
%9 = fcmp oeq double %6, 0.000000e+00
br i1 %9, label %48, label %10
10: ; preds = %8
%11 = tail call double @llvm.fmuladd.f64(double %6, double 0x3F4351E6D63B8846, double 0xBF751702B49EEA17)
%12 = tail call double @llvm.fmuladd.f64(double %11, double %6, double 0x3F7F6A3E892940B3)
%13 = tail call double @llvm.fmuladd.f64(double %12, double %6, double 0x3FAE949B72333263)
%14 = tail call double @llvm.fmuladd.f64(double %13, double %6, double 0xBFCD9099ED7B807C)
%15 = tail call double @llvm.fmuladd.f64(double %14, double %6, double 0xBFDA2E564D1DDC83)
%16 = tail call double @llvm.fmuladd.f64(double %15, double %6, double 0x3FE2788CFC6FB61A)
%17 = tail call double @llvm.fmuladd.f64(double %6, double 0x3F715609C2D46A68, double 0x3F9ABD6B54CFCF21)
%18 = tail call double @llvm.fmuladd.f64(double %17, double %6, double 0x3FC44824F78ABECB)
%19 = tail call double @llvm.fmuladd.f64(double %18, double %6, double 0x3FDB5D4CF04077E4)
%20 = tail call double @llvm.fmuladd.f64(double %19, double %6, double 1.000000e+00)
%21 = fdiv double %16, %20
br i1 %4, label %24, label %22
22: ; preds = %10
%23 = fmul double %2, %21
br label %48
24: ; preds = %10
%25 = fdiv double %6, %2
%26 = fadd double %21, -5.000000e-01
%27 = fadd double %26, -5.000000e-01
%28 = fmul double %25, %27
br label %48
29: ; preds = %1
%30 = tail call double @llvm.fmuladd.f64(double %6, double 0xBF2163D4CC01152C, double 0x3F31773A76D8DC66)
%31 = tail call double @llvm.fmuladd.f64(double %30, double %6, double 0x3F6245A6033D5B04)
%32 = tail call double @llvm.fmuladd.f64(double %31, double %6, double 0xBF8839DAD69B4A44)
%33 = tail call double @llvm.fmuladd.f64(double %32, double %6, double 0x3F4E7C67130498BA)
%34 = tail call double @llvm.fmuladd.f64(double %33, double %6, double 0x3FBE4E15E2097702)
%35 = tail call double @llvm.fmuladd.f64(double %34, double %6, double 0xBFCF5438F2892723)
%36 = tail call double @llvm.fmuladd.f64(double %35, double %6, double 0xBFE8AEBD0E9CDD50)
%37 = tail call double @llvm.fmuladd.f64(double %36, double %6, double 0xBFDB0EE6072093DE)
%38 = tail call double @llvm.fmuladd.f64(double %6, double 0x3FACA42502A26800, double 0x3FD17A14539CB550)
%39 = tail call double @llvm.fmuladd.f64(double %38, double %6, double 1.000000e+00)
%40 = fdiv double %37, %39
br i1 %4, label %45, label %41
41: ; preds = %29
%42 = fadd double %40, 5.000000e-01
%43 = fadd double %42, 5.000000e-01
%44 = fmul double %2, %43
br label %48
45: ; preds = %29
%46 = fmul double %6, %40
%47 = fdiv double %46, %2
br label %48
48: ; preds = %8, %45, %41, %24, %22
%49 = phi double [ %47, %45 ], [ %44, %41 ], [ %28, %24 ], [ %23, %22 ], [ 0.000000e+00, %8 ]
ret double %49
}