#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 const dcs_wood_saxon(double, double);
int exp(double const);
int pow(double, double const);
double dcs_photonuclear_shadowing_BM(double Z, double A, double x, double q) {
  if (Z == 1.)
    return 1;
  if (x > 0.3) {
    const double Mb = 0.437;
    const double la = 0.5;
    const double x2 = 0.278;
    const double au = 1. / (1. - x);
    const double ac = 1. / (1. - x2);
    const double MPI = 0.13957018;
    const double M = ((A - Z) * 0.939565 + Z * 0.938272) / A;
    const double Aosc =
        (1. - la * x) * (au - ac - MPI / M * (au * au - ac * ac));
    return 1. - Mb * dcs_wood_saxon(Z, A) * Aosc;
  } else {
    const double M1 = 0.129;
    const double M2 = 0.456;
    const double M3 = 0.553;
    const double ws = dcs_wood_saxon(Z, A);
    const double m1 = M1 * ws;
    const double m2 = M2 * ws;
    const double m3 = M3 * ws;
    const double sgn =
        112.2 * (0.609 * pow(q, 0.0988) + 1.037 * pow(q, -0.5944));
    const double tmp = 0.00282 * pow(A, 1. / 3.) * sgn;
    double G = (3. / tmp) * (0.5 + ((1. + tmp) * exp(-tmp) - 1.) / (tmp * tmp));
    G = 0.75 * G + 0.25;
    const double x0 = pow(G / (1. + m2), 1. / m1);
    if (x >= x0) {
      return pow(x, m1) * (1 + m2) * (1 - m3 * x);
    } else {
      return G;
    }
  }
}


x86 assembly (clang, -O0):
<dcs_photonuclear_shadowing_BM>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  0xea4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    117e <dcs_photonuclear_shadowing_BM+0x4e>
jp     117e <dcs_photonuclear_shadowing_BM+0x4e>
movsd  0xe8c(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    15af <dcs_photonuclear_shadowing_BM+0x47f>
movsd  -0x20(%rbp),%xmm0
movsd  0xe7d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12f6 <dcs_photonuclear_shadowing_BM+0x1c6>
movsd  0xeeb(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe76(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xf09(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe3c(%rip),%xmm1
subsd  -0x20(%rbp),%xmm1
movsd  0xe2f(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xebe(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xea9(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  0xeb2(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  0xe9d(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  0xe76(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdc2(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0xe51(%rip),%xmm1
subsd  %xmm1,%xmm2
movsd  0xe3d(%rip),%xmm1
divsd  -0x60(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm4
mulsd  %xmm4,%xmm3
movsd  0xe1a(%rip),%xmm4
addsd  %xmm4,%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   1050 <dcs_wood_saxon@plt>
movaps %xmm0,%xmm1
movsd  0xdcc(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x68(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xd18(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    15af <dcs_photonuclear_shadowing_BM+0x47f>
movsd  0xd82(%rip),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xd6d(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0xd58(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   1050 <dcs_wood_saxon@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xd44(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xd24(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xd04(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  0xcdf(%rip),%xmm1
call   1040 <pow@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  0xcb9(%rip),%xmm1
call   1040 <pow@plt>
movsd  -0xd8(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
movsd  0xc98(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  0xc84(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xc6c(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  0xc4b(%rip),%xmm1
call   1040 <pow@plt>
cvtsi2sd %eax,%xmm1
movsd  0xc32(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xc0e(%rip),%xmm0
divsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xbc6(%rip),%xmm0
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <exp@plt>
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm2
movsd  0xb9a(%rip),%xmm1
addsd  %xmm1,%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  -0xb0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm2
movsd  0xb72(%rip),%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0xb42(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb3e(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0xb0a(%rip),%xmm1
addsd  -0x98(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  0xaf6(%rip),%xmm1
divsd  -0x90(%rbp),%xmm1
ff
call   1040 <pow@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
ucomisd -0xc0(%rbp),%xmm0
ff
jb     15a2 <dcs_photonuclear_shadowing_BM+0x472>
movsd  -0x20(%rbp),%xmm0
movsd  -0x90(%rbp),%xmm1
ff
call   1040 <pow@plt>
cvtsi2sd %eax,%xmm0
movsd  0xaac(%rip),%xmm1
addsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0x20(%rbp),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0xa70(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    15af <dcs_photonuclear_shadowing_BM+0x47f>
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0xe0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dcs_photonuclear_shadowing_BM>:
sub    $0x58,%rsp
movsd  0xec4(%rip),%xmm4
ucomisd %xmm4,%xmm0
jne    114d <dcs_photonuclear_shadowing_BM+0x1d>
jp     114d <dcs_photonuclear_shadowing_BM+0x1d>
movapd %xmm4,%xmm0
add    $0x58,%rsp
ret
ucomisd 0xeb3(%rip),%xmm2
jbe    11fb <dcs_photonuclear_shadowing_BM+0xcb>
movsd  0xe9d(%rip),%xmm5
movapd %xmm5,%xmm3
subsd  %xmm2,%xmm3
movapd %xmm5,%xmm4
movapd %xmm5,%xmm6
divsd  %xmm3,%xmm4
movapd %xmm1,%xmm5
subsd  %xmm0,%xmm5
movsd  0xef9(%rip),%xmm3
mulsd  0xef9(%rip),%xmm5
mulsd  %xmm0,%xmm3
addsd  %xmm3,%xmm5
mulsd  0xef1(%rip),%xmm2
divsd  %xmm1,%xmm5
addsd  %xmm6,%xmm2
movsd  0xee9(%rip),%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm4,%xmm4
addsd  0xee1(%rip),%xmm4
movsd  0xee1(%rip),%xmm6
divsd  %xmm5,%xmm6
mulsd  %xmm4,%xmm6
addsd  %xmm3,%xmm6
mulsd  %xmm2,%xmm6
movsd  %xmm6,(%rsp)
call   1050 <dcs_wood_saxon@plt>
mulsd  0xec7(%rip),%xmm0
mulsd  (%rsp),%xmm0
addsd  0xe0a(%rip),%xmm0
add    $0x58,%rsp
ret
movsd  %xmm2,0x28(%rsp)
movsd  %xmm1,0x50(%rsp)
movsd  %xmm3,0x30(%rsp)
call   1050 <dcs_wood_saxon@plt>
movsd  0xdf6(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rsp)
movsd  0xdec(%rip),%xmm1
movsd  %xmm0,0x48(%rsp)
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
movsd  0xddc(%rip),%xmm1
movsd  0x30(%rsp),%xmm0
call   1040 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%rsp)
movsd  0xdc5(%rip),%xmm1
movsd  0x30(%rsp),%xmm0
call   1040 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xdb3(%rip),%xmm0
movsd  (%rsp),%xmm1
mulsd  0xdae(%rip),%xmm1
addsd  %xmm0,%xmm1
mulsd  0xdaa(%rip),%xmm1
movsd  %xmm1,(%rsp)
movsd  0xda5(%rip),%xmm1
movsd  0x50(%rsp),%xmm0
call   1040 <pow@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  0xd93(%rip),%xmm1
mulsd  (%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movapd %xmm1,%xmm0
addsd  0xd2c(%rip),%xmm0
movapd %xmm0,(%rsp)
movapd 0xddf(%rip),%xmm0
xorpd  %xmm1,%xmm0
call   1030 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  (%rsp),%xmm0
addsd  0xd5a(%rip),%xmm0
movapd 0x30(%rsp),%xmm3
movapd %xmm3,%xmm1
mulsd  %xmm3,%xmm1
movapd 0xdbc(%rip),%xmm2
unpcklpd %xmm0,%xmm2
unpcklpd %xmm1,%xmm3
divpd  %xmm3,%xmm2
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
addsd  0xd30(%rip),%xmm0
mulsd  %xmm2,%xmm0
mulsd  0xd2c(%rip),%xmm0
addsd  0xd2c(%rip),%xmm0
movapd %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm1
movsd  0xca9(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  %xmm1,0x18(%rsp)
divsd  %xmm1,%xmm0
divsd  0x20(%rsp),%xmm2
movapd %xmm2,%xmm1
call   1040 <pow@plt>
movapd (%rsp),%xmm4
movsd  0x28(%rsp),%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
ucomisd %xmm1,%xmm0
jb     1144 <dcs_photonuclear_shadowing_BM+0x14>
movsd  0x20(%rsp),%xmm1
call   1040 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x18(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x48(%rsp),%xmm4
mulsd  0xcbe(%rip),%xmm4
mulsd  0x28(%rsp),%xmm4
addsd  0xc38(%rip),%xmm4
mulsd  %xmm1,%xmm4
jmp    1144 <dcs_photonuclear_shadowing_BM+0x14>

LLVM IR (-O0):
define double @dcs_photonuclear_shadowing_BM(double %0, double %1, double %2, double %3) {
%5 = alloca double
%6 = alloca double
%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
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
store double %0, double* %6
store double %1, double* %7
store double %2, double* %8
store double %3, double* %9
%29 = load double, double* %6
%30 = fcmp oeq double %29, 1.000000e+00
br i1 %30, label %31, label %32
31: ; preds = %4
store double 1.000000e+00, double* %5
br label %134
32: ; preds = %4
%33 = load double, double* %8
%34 = fcmp ogt double %33, 3.000000e-01
br i1 %34, label %35, label %66
35: ; preds = %32
store double 4.370000e-01, double* %10
store double 5.000000e-01, double* %11
store double 2.780000e-01, double* %12
%36 = load double, double* %8
%37 = fsub double 1.000000e+00, %36
%38 = fdiv double 1.000000e+00, %37
store double %38, double* %13
store double 0x3FF62921546347A0, double* %14
store double 0x3FC1DD6F874C6508, double* %15
%39 = load double, double* %7
%40 = load double, double* %6
%41 = fsub double %39, %40
%42 = load double, double* %6
%43 = fmul double %42, 0x3FEE065300581494
%44 = call double @llvm.fmuladd.f64(double %41, double 0x3FEE10EA9E6EEB70, double %43)
%45 = load double, double* %7
%46 = fdiv double %44, %45
store double %46, double* %16
%47 = load double, double* %8
%48 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %47, double 1.000000e+00)
%49 = load double, double* %13
%50 = fsub double %49, 0x3FF62921546347A0
%51 = load double, double* %16
%52 = fdiv double 0x3FC1DD6F874C6508, %51
%53 = load double, double* %13
%54 = load double, double* %13
%55 = call double @llvm.fmuladd.f64(double %53, double %54, double 0xBFFEB1856326EF9E)
%56 = fneg double %52
%57 = call double @llvm.fmuladd.f64(double %56, double %55, double %50)
%58 = fmul double %48, %57
store double %58, double* %17
%59 = load double, double* %6
%60 = load double, double* %7
%61 = call double @dcs_wood_saxon(double %59, double %60)
%62 = fmul double 4.370000e-01, %61
%63 = load double, double* %17
%64 = fneg double %62
%65 = call double @llvm.fmuladd.f64(double %64, double %63, double 1.000000e+00)
store double %65, double* %5
br label %134
66: ; preds = %32
store double 1.290000e-01, double* %18
store double 4.560000e-01, double* %19
store double 5.530000e-01, double* %20
%67 = load double, double* %6
%68 = load double, double* %7
%69 = call double @dcs_wood_saxon(double %67, double %68)
store double %69, double* %21
%70 = load double, double* %21
%71 = fmul double 1.290000e-01, %70
store double %71, double* %22
%72 = load double, double* %21
%73 = fmul double 4.560000e-01, %72
store double %73, double* %23
%74 = load double, double* %21
%75 = fmul double 5.530000e-01, %74
store double %75, double* %24
%76 = load double, double* %9
%77 = call i32 @pow(double %76, double 0x3FB94AF4F0D844D0)
%78 = sitofp i32 %77 to double
%79 = load double, double* %9
%80 = call i32 @pow(double %79, double -5.944000e-01)
%81 = sitofp i32 %80 to double
%82 = fmul double 1.037000e+00, %81
%83 = call double @llvm.fmuladd.f64(double 0x3FE37CED916872B0, double %78, double %82)
%84 = fmul double 1.122000e+02, %83
store double %84, double* %25
%85 = load double, double* %7
%86 = call i32 @pow(double %85, double 0x3FD5555555555555)
%87 = sitofp i32 %86 to double
%88 = fmul double 2.820000e-03, %87
%89 = load double, double* %25
%90 = fmul double %88, %89
store double %90, double* %26
%91 = load double, double* %26
%92 = fdiv double 3.000000e+00, %91
%93 = load double, double* %26
%94 = fadd double 1.000000e+00, %93
%95 = load double, double* %26
%96 = fneg double %95
%97 = call i32 @exp(double %96)
%98 = sitofp i32 %97 to double
%99 = call double @llvm.fmuladd.f64(double %94, double %98, double -1.000000e+00)
%100 = load double, double* %26
%101 = load double, double* %26
%102 = fmul double %100, %101
%103 = fdiv double %99, %102
%104 = fadd double 5.000000e-01, %103
%105 = fmul double %92, %104
store double %105, double* %27
%106 = load double, double* %27
%107 = call double @llvm.fmuladd.f64(double 7.500000e-01, double %106, double 2.500000e-01)
store double %107, double* %27
%108 = load double, double* %27
%109 = load double, double* %23
%110 = fadd double 1.000000e+00, %109
%111 = fdiv double %108, %110
%112 = load double, double* %22
%113 = fdiv double 1.000000e+00, %112
%114 = call i32 @pow(double %111, double %113)
%115 = sitofp i32 %114 to double
store double %115, double* %28
%116 = load double, double* %8
%117 = load double, double* %28
%118 = fcmp oge double %116, %117
br i1 %118, label %119, label %132
119: ; preds = %66
%120 = load double, double* %8
%121 = load double, double* %22
%122 = call i32 @pow(double %120, double %121)
%123 = sitofp i32 %122 to double
%124 = load double, double* %23
%125 = fadd double 1.000000e+00, %124
%126 = fmul double %123, %125
%127 = load double, double* %24
%128 = load double, double* %8
%129 = fneg double %127
%130 = call double @llvm.fmuladd.f64(double %129, double %128, double 1.000000e+00)
%131 = fmul double %126, %130
store double %131, double* %5
br label %134
132: ; preds = %66
%133 = load double, double* %27
store double %133, double* %5
br label %134
134: ; preds = %132, %119, %35, %31
%135 = load double, double* %5
ret double %135
}

LLVM IR (-O2):
define double @dcs_photonuclear_shadowing_BM(double %0, double %1, double %2, double %3) {
%5 = fcmp oeq double %0, 1.000000e+00
br i1 %5, label %67, label %6
6: ; preds = %4
%7 = fcmp ogt double %2, 3.000000e-01
br i1 %7, label %8, label %24
8: ; preds = %6
%9 = fsub double 1.000000e+00, %2
%10 = fdiv double 1.000000e+00, %9
%11 = fsub double %1, %0
%12 = fmul double %0, 0x3FEE065300581494
%13 = tail call double @llvm.fmuladd.f64(double %11, double 0x3FEE10EA9E6EEB70, double %12)
%14 = fdiv double %13, %1
%15 = tail call double @llvm.fmuladd.f64(double %2, double -5.000000e-01, double 1.000000e+00)
%16 = fadd double %10, 0xBFF62921546347A0
%17 = tail call double @llvm.fmuladd.f64(double %10, double %10, double 0xBFFEB1856326EF9E)
%18 = fdiv double 0xBFC1DD6F874C6508, %14
%19 = tail call double @llvm.fmuladd.f64(double %18, double %17, double %16)
%20 = fmul double %15, %19
%21 = tail call double @dcs_wood_saxon(double %0, double %1)
%22 = fmul double %21, -4.370000e-01
%23 = tail call double @llvm.fmuladd.f64(double %22, double %20, double 1.000000e+00)
br label %67
24: ; preds = %6
%25 = tail call double @dcs_wood_saxon(double %0, double %1)
%26 = fmul double %25, 1.290000e-01
%27 = fmul double %25, 4.560000e-01
%28 = tail call i32 @pow(double %3, double 0x3FB94AF4F0D844D0)
%29 = sitofp i32 %28 to double
%30 = tail call i32 @pow(double %3, double -5.944000e-01)
%31 = sitofp i32 %30 to double
%32 = fmul double %31, 1.037000e+00
%33 = tail call double @llvm.fmuladd.f64(double %29, double 0x3FE37CED916872B0, double %32)
%34 = fmul double %33, 1.122000e+02
%35 = tail call i32 @pow(double %1, double 0x3FD5555555555555)
%36 = sitofp i32 %35 to double
%37 = fmul double %36, 2.820000e-03
%38 = fmul double %37, %34
%39 = fadd double %38, 1.000000e+00
%40 = fneg double %38
%41 = tail call i32 @exp(double %40)
%42 = sitofp i32 %41 to double
%43 = tail call double @llvm.fmuladd.f64(double %39, double %42, double -1.000000e+00)
%44 = fmul double %38, %38
%45 = insertelement <2 x double> <double 3.000000e+00, double poison>, double %43, i64 1
%46 = insertelement <2 x double> poison, double %38, i64 0
%47 = insertelement <2 x double> %46, double %44, i64 1
%48 = fdiv <2 x double> %45, %47
%49 = extractelement <2 x double> %48, i64 1
%50 = fadd double %49, 5.000000e-01
%51 = extractelement <2 x double> %48, i64 0
%52 = fmul double %51, %50
%53 = tail call double @llvm.fmuladd.f64(double %52, double 7.500000e-01, double 2.500000e-01)
%54 = fadd double %27, 1.000000e+00
%55 = fdiv double %53, %54
%56 = fdiv double 1.000000e+00, %26
%57 = tail call i32 @pow(double %55, double %56)
%58 = sitofp i32 %57 to double
%59 = fcmp ugt double %58, %2
br i1 %59, label %67, label %60
60: ; preds = %24
%61 = tail call i32 @pow(double %2, double %26)
%62 = sitofp i32 %61 to double
%63 = fmul double %54, %62
%64 = fmul double %25, -5.530000e-01
%65 = tail call double @llvm.fmuladd.f64(double %64, double %2, double 1.000000e+00)
%66 = fmul double %65, %63
br label %67
67: ; preds = %60, %24, %4, %8
%68 = phi double [ %23, %8 ], [ 1.000000e+00, %4 ], [ %66, %60 ], [ %53, %24 ]
ret double %68
}