double dpmeps_(void) {
  static double zero = 0.;
  static double one = 1.;
  static double two = 2.;
  int i1, i, it, irnd;
  double ret_val;
  double a, b;
  double beta;
  double temp, temp1, betah;
  int ibeta, itemp, negep;
  double tempa;
  double betain;
  a = one;
  b = one;
L10:
  a += a;
  temp = a + one;
  temp1 = temp - a;
  if (temp1 - one == zero) {
    goto L10;
  }
L20:
  b += b;
  temp = a + b;
  itemp = (int)(temp - a);
  if (itemp == 0) {
    goto L20;
  }
  ibeta = itemp;
  beta = (double)ibeta;
  it = 0;
  b = one;
L30:
  ++it;
  b *= beta;
  temp = b + one;
  temp1 = temp - b;
  if (temp1 - one == zero) {
    goto L30;
  }
  irnd = 0;
  betah = beta / two;
  temp = a + betah;
  if (temp - a != zero) {
    irnd = 1;
  }
  tempa = a + beta;
  temp = tempa + betah;
  if (irnd == 0 && temp - tempa != zero) {
    irnd = 2;
  }
  negep = it + 3;
  betain = one / beta;
  a = one;
  i1 = negep;
  for (i = 1; i <= i1; ++i) {
    a *= betain;
  }
L50:
  temp = one + a;
  if (temp - one != zero) {
    goto L60;
  }
  a *= beta;
  goto L50;
L60:
  ret_val = a;
  if (ibeta == 2 || irnd == 0) {
    goto L70;
  }
  a = a * (one + a) / two;
  temp = one + a;
  if (temp - one != zero) {
    ret_val = a;
  }
L70:
  return ret_val;
}


x86 assembly (clang, -O0):
<dpmeps_>:
push   %rbp
mov    %rsp,%rbp
movsd  0x2f14(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0x2f07(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
addsd  0x2ee6(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
subsd  0x2ec5(%rip),%xmm0
ucomisd 0x2ed5(%rip),%xmm0
jne    1174 <dpmeps_+0x74>
jp     1174 <dpmeps_+0x74>
jmp    111e <dpmeps_+0x1e>
jmp    1179 <dpmeps_+0x79>
movsd  -0x28(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x50(%rbp)
cmpl   $0x0,-0x50(%rbp)
jne    11b7 <dpmeps_+0xb7>
jmp    1179 <dpmeps_+0x79>
mov    -0x50(%rbp),%eax
mov    %eax,-0x4c(%rbp)
cvtsi2sdl -0x4c(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movl   $0x0,-0xc(%rbp)
movsd  0x2e4a(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
movsd  -0x30(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
addsd  0x2e20(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
subsd  0x2dff(%rip),%xmm0
ucomisd 0x2e0f(%rip),%xmm0
jne    123a <dpmeps_+0x13a>
jp     123a <dpmeps_+0x13a>
jmp    11db <dpmeps_+0xdb>
movl   $0x0,-0x10(%rbp)
movsd  -0x30(%rbp),%xmm0
divsd  0x2dda(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x20(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
ucomisd 0x2dc4(%rip),%xmm0
jne    1285 <dpmeps_+0x185>
jp     1285 <dpmeps_+0x185>
jmp    128c <dpmeps_+0x18c>
movl   $0x1,-0x10(%rbp)
movsd  -0x20(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
cmpl   $0x0,-0x10(%rbp)
jne    12de <dpmeps_+0x1de>
movsd  -0x38(%rbp),%xmm0
subsd  -0x60(%rbp),%xmm0
ucomisd 0x2d72(%rip),%xmm0
jne    12d7 <dpmeps_+0x1d7>
jp     12d7 <dpmeps_+0x1d7>
jmp    12de <dpmeps_+0x1de>
movl   $0x2,-0x10(%rbp)
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x54(%rbp)
movsd  0x2d31(%rip),%xmm0
divsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0x2d1f(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x54(%rbp),%eax
mov    %eax,-0x4(%rbp)
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
jg     133c <dpmeps_+0x23c>
movsd  -0x68(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1313 <dpmeps_+0x213>
jmp    1341 <dpmeps_+0x241>
movsd  0x2cd7(%rip),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  0x2cc0(%rip),%xmm0
ucomisd 0x2cd0(%rip),%xmm0
jne    1379 <dpmeps_+0x279>
jp     1379 <dpmeps_+0x279>
jmp    137e <dpmeps_+0x27e>
jmp    1392 <dpmeps_+0x292>
movsd  -0x30(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    1341 <dpmeps_+0x241>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
cmpl   $0x2,-0x4c(%rbp)
je     13b0 <dpmeps_+0x2b0>
cmpl   $0x0,-0x10(%rbp)
jne    13b5 <dpmeps_+0x2b5>
jmp    141f <dpmeps_+0x31f>
movsd  -0x20(%rbp),%xmm0
movsd  0x2c5e(%rip),%xmm1
addsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
divsd  0x2c55(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0x2c40(%rip),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  0x2c29(%rip),%xmm0
ucomisd 0x2c39(%rip),%xmm0
jne    1410 <dpmeps_+0x310>
jp     1410 <dpmeps_+0x310>
jmp    141a <dpmeps_+0x31a>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
jmp    141f <dpmeps_+0x31f>
movsd  -0x18(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<dpmeps_>:
movsd  0xef8(%rip),%xmm2
movsd  0xef8(%rip),%xmm1
xorpd  %xmm3,%xmm3
movapd %xmm2,%xmm0
nopl   0x0(%rax,%rax,1)
addsd  %xmm0,%xmm0
movapd %xmm0,%xmm4
addsd  %xmm2,%xmm4
subsd  %xmm0,%xmm4
addsd  %xmm1,%xmm4
ucomisd %xmm3,%xmm4
jne    114a <dpmeps_+0x4a>
jp     114a <dpmeps_+0x4a>
addsd  %xmm0,%xmm0
addsd  %xmm0,%xmm0
addsd  %xmm0,%xmm0
jmp    1120 <dpmeps_+0x20>
movsd  0xeae(%rip),%xmm2
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
addsd  %xmm2,%xmm2
movapd %xmm0,%xmm3
addsd  %xmm2,%xmm3
subsd  %xmm0,%xmm3
cvttsd2si %xmm3,%eax
test   %eax,%eax
je     1160 <dpmeps_+0x60>
xorps  %xmm2,%xmm2
cvtsi2sd %eax,%xmm2
movsd  0xe79(%rip),%xmm3
mov    $0x4,%cl
mov    $0x3,%edx
xorpd  %xmm4,%xmm4
movapd %xmm3,%xmm5
cs nopw 0x0(%rax,%rax,1)
mov    %ecx,%esi
mulsd  %xmm2,%xmm5
movapd %xmm5,%xmm6
addsd  %xmm3,%xmm6
subsd  %xmm5,%xmm6
addsd  %xmm1,%xmm6
lea    0x1(%rsi),%ecx
add    $0x1,%edx
ucomisd %xmm4,%xmm6
jne    11c4 <dpmeps_+0xc4>
jnp    11a0 <dpmeps_+0xa0>
movsd  0xe44(%rip),%xmm3
mulsd  %xmm2,%xmm3
movapd %xmm0,%xmm5
addsd  %xmm3,%xmm5
subsd  %xmm0,%xmm5
lea    -0x4(%rdx),%edi
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm5
jne    1203 <dpmeps_+0x103>
jp     1203 <dpmeps_+0x103>
addsd  %xmm2,%xmm0
addsd  %xmm0,%xmm3
subsd  %xmm0,%xmm3
ucomisd %xmm4,%xmm3
jne    1203 <dpmeps_+0x103>
jnp    1307 <dpmeps_+0x207>
xor    %ecx,%ecx
movsd  0xdf3(%rip),%xmm0
movapd %xmm0,%xmm3
divsd  %xmm2,%xmm3
cmp    $0x4,%edi
jb     1255 <dpmeps_+0x155>
mov    %edx,%edi
and    $0xfffffff8,%edi
movsd  0xdd9(%rip),%xmm0
nopw   0x0(%rax,%rax,1)
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
add    $0xfffffff8,%edi
jne    1230 <dpmeps_+0x130>
test   $0x7,%dl
je     1279 <dpmeps_+0x179>
movzbl %sil,%edx
and    $0x7,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mulsd  %xmm3,%xmm0
add    $0xffffffff,%edx
jne    1270 <dpmeps_+0x170>
movsd  0xd7f(%rip),%xmm3
addsd  %xmm0,%xmm3
movsd  0xd7b(%rip),%xmm5
addsd  %xmm3,%xmm5
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm5
jne    12cc <dpmeps_+0x1cc>
jp     12cc <dpmeps_+0x1cc>
movsd  0xd5b(%rip),%xmm5
cs nopw 0x0(%rax,%rax,1)
nop
mulsd  %xmm2,%xmm0
movapd %xmm0,%xmm3
addsd  %xmm5,%xmm3
movapd %xmm3,%xmm6
addsd  %xmm1,%xmm6
ucomisd %xmm4,%xmm6
jne    12cc <dpmeps_+0x1cc>
jnp    12b0 <dpmeps_+0x1b0>
cmp    $0x2,%eax
sete   %al
or     %cl,%al
jne    1306 <dpmeps_+0x206>
mulsd  %xmm0,%xmm3
mulsd  0xd2e(%rip),%xmm3
movsd  0xd16(%rip),%xmm1
addsd  %xmm3,%xmm1
addsd  0xd12(%rip),%xmm1
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm1
jne    1302 <dpmeps_+0x202>
jnp    1306 <dpmeps_+0x206>
movapd %xmm3,%xmm0
ret
mov    $0x1,%cl
jmp    1205 <dpmeps_+0x105>

LLVM IR (-O0):
@dpmeps_.zero = internal global double 0.000000e+00
@dpmeps_.one = internal global double 1.000000e+00
@dpmeps_.two = internal global double 2.000000e+00
define double @dpmeps_() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca double
%16 = alloca double
%17 = load double, double* @dpmeps_.one
store double %17, double* %6
%18 = load double, double* @dpmeps_.one
store double %18, double* %7
br label %19
19: ; preds = %34, %0
%20 = load double, double* %6
%21 = load double, double* %6
%22 = fadd double %21, %20
store double %22, double* %6
%23 = load double, double* %6
%24 = load double, double* @dpmeps_.one
%25 = fadd double %23, %24
store double %25, double* %9
%26 = load double, double* %9
%27 = load double, double* %6
%28 = fsub double %26, %27
store double %28, double* %10
%29 = load double, double* %10
%30 = load double, double* @dpmeps_.one
%31 = fsub double %29, %30
%32 = load double, double* @dpmeps_.zero
%33 = fcmp oeq double %31, %32
br i1 %33, label %34, label %35
34: ; preds = %19
br label %19
35: ; preds = %19
br label %36
36: ; preds = %49, %35
%37 = load double, double* %7
%38 = load double, double* %7
%39 = fadd double %38, %37
store double %39, double* %7
%40 = load double, double* %6
%41 = load double, double* %7
%42 = fadd double %40, %41
store double %42, double* %9
%43 = load double, double* %9
%44 = load double, double* %6
%45 = fsub double %43, %44
%46 = fptosi double %45 to i32
store i32 %46, i32* %13
%47 = load i32, i32* %13
%48 = icmp eq i32 %47, 0
br i1 %48, label %49, label %50
49: ; preds = %36
br label %36
50: ; preds = %36
%51 = load i32, i32* %13
store i32 %51, i32* %12
%52 = load i32, i32* %12
%53 = sitofp i32 %52 to double
store double %53, double* %8
store i32 0, i32* %3
%54 = load double, double* @dpmeps_.one
store double %54, double* %7
br label %55
55: ; preds = %72, %50
%56 = load i32, i32* %3
%57 = add nsw i32 %56, 1
store i32 %57, i32* %3
%58 = load double, double* %8
%59 = load double, double* %7
%60 = fmul double %59, %58
store double %60, double* %7
%61 = load double, double* %7
%62 = load double, double* @dpmeps_.one
%63 = fadd double %61, %62
store double %63, double* %9
%64 = load double, double* %9
%65 = load double, double* %7
%66 = fsub double %64, %65
store double %66, double* %10
%67 = load double, double* %10
%68 = load double, double* @dpmeps_.one
%69 = fsub double %67, %68
%70 = load double, double* @dpmeps_.zero
%71 = fcmp oeq double %69, %70
br i1 %71, label %72, label %73
72: ; preds = %55
br label %55
73: ; preds = %55
store i32 0, i32* %4
%74 = load double, double* %8
%75 = load double, double* @dpmeps_.two
%76 = fdiv double %74, %75
store double %76, double* %11
%77 = load double, double* %6
%78 = load double, double* %11
%79 = fadd double %77, %78
store double %79, double* %9
%80 = load double, double* %9
%81 = load double, double* %6
%82 = fsub double %80, %81
%83 = load double, double* @dpmeps_.zero
%84 = fcmp une double %82, %83
br i1 %84, label %85, label %86
85: ; preds = %73
store i32 1, i32* %4
br label %86
86: ; preds = %85, %73
%87 = load double, double* %6
%88 = load double, double* %8
%89 = fadd double %87, %88
store double %89, double* %15
%90 = load double, double* %15
%91 = load double, double* %11
%92 = fadd double %90, %91
store double %92, double* %9
%93 = load i32, i32* %4
%94 = icmp eq i32 %93, 0
br i1 %94, label %95, label %102
95: ; preds = %86
%96 = load double, double* %9
%97 = load double, double* %15
%98 = fsub double %96, %97
%99 = load double, double* @dpmeps_.zero
%100 = fcmp une double %98, %99
br i1 %100, label %101, label %102
101: ; preds = %95
store i32 2, i32* %4
br label %102
102: ; preds = %101, %95, %86
%103 = load i32, i32* %3
%104 = add nsw i32 %103, 3
store i32 %104, i32* %14
%105 = load double, double* @dpmeps_.one
%106 = load double, double* %8
%107 = fdiv double %105, %106
store double %107, double* %16
%108 = load double, double* @dpmeps_.one
store double %108, double* %6
%109 = load i32, i32* %14
store i32 %109, i32* %1
store i32 1, i32* %2
br label %110
110: ; preds = %118, %102
%111 = load i32, i32* %2
%112 = load i32, i32* %1
%113 = icmp sle i32 %111, %112
br i1 %113, label %114, label %121
114: ; preds = %110
%115 = load double, double* %16
%116 = load double, double* %6
%117 = fmul double %116, %115
store double %117, double* %6
br label %118
118: ; preds = %114
%119 = load i32, i32* %2
%120 = add nsw i32 %119, 1
store i32 %120, i32* %2
br label %110
121: ; preds = %110
br label %122
122: ; preds = %132, %121
%123 = load double, double* @dpmeps_.one
%124 = load double, double* %6
%125 = fadd double %123, %124
store double %125, double* %9
%126 = load double, double* %9
%127 = load double, double* @dpmeps_.one
%128 = fsub double %126, %127
%129 = load double, double* @dpmeps_.zero
%130 = fcmp une double %128, %129
br i1 %130, label %131, label %132
131: ; preds = %122
br label %136
132: ; preds = %122
%133 = load double, double* %8
%134 = load double, double* %6
%135 = fmul double %134, %133
store double %135, double* %6
br label %122
136: ; preds = %131
%137 = load double, double* %6
store double %137, double* %5
%138 = load i32, i32* %12
%139 = icmp eq i32 %138, 2
br i1 %139, label %143, label %140
140: ; preds = %136
%141 = load i32, i32* %4
%142 = icmp eq i32 %141, 0
br i1 %142, label %143, label %144
143: ; preds = %140, %136
br label %163
144: ; preds = %140
%145 = load double, double* %6
%146 = load double, double* @dpmeps_.one
%147 = load double, double* %6
%148 = fadd double %146, %147
%149 = fmul double %145, %148
%150 = load double, double* @dpmeps_.two
%151 = fdiv double %149, %150
store double %151, double* %6
%152 = load double, double* @dpmeps_.one
%153 = load double, double* %6
%154 = fadd double %152, %153
store double %154, double* %9
%155 = load double, double* %9
%156 = load double, double* @dpmeps_.one
%157 = fsub double %155, %156
%158 = load double, double* @dpmeps_.zero
%159 = fcmp une double %157, %158
br i1 %159, label %160, label %162
160: ; preds = %144
%161 = load double, double* %6
store double %161, double* %5
br label %162
162: ; preds = %160, %144
br label %163
163: ; preds = %162, %143
%164 = load double, double* %5
ret double %164
}

LLVM IR (-O2):
define double @dpmeps_() {
br label %1
1: ; preds = %8, %0
%2 = phi double [ 1.000000e+00, %0 ], [ %11, %8 ]
%3 = fadd double %2, %2
%4 = fadd double %3, 1.000000e+00
%5 = fsub double %4, %3
%6 = fadd double %5, -1.000000e+00
%7 = fcmp oeq double %6, 0.000000e+00
br i1 %7, label %8, label %12
8: ; preds = %1
%9 = fadd double %3, %3
%10 = fadd double %9, %9
%11 = fadd double %10, %10
br label %1
12: ; preds = %1, %12
%13 = phi double [ %14, %12 ], [ 1.000000e+00, %1 ]
%14 = fadd double %13, %13
%15 = fadd double %3, %14
%16 = fsub double %15, %3
%17 = fptosi double %16 to i32
%18 = icmp eq i32 %17, 0
br i1 %18, label %12, label %19
19: ; preds = %12
%20 = sitofp i32 %17 to double
br label %21
21: ; preds = %21, %19
%22 = phi double [ 1.000000e+00, %19 ], [ %25, %21 ]
%23 = phi i32 [ 0, %19 ], [ %24, %21 ]
%24 = add nuw nsw i32 %23, 1
%25 = fmul double %22, %20
%26 = fadd double %25, 1.000000e+00
%27 = fsub double %26, %25
%28 = fadd double %27, -1.000000e+00
%29 = fcmp oeq double %28, 0.000000e+00
br i1 %29, label %21, label %30
30: ; preds = %21
%31 = fmul double %20, 5.000000e-01
%32 = fadd double %3, %31
%33 = fsub double %32, %3
%34 = fcmp une double %33, 0.000000e+00
%35 = fadd double %3, %20
br i1 %34, label %41, label %36
36: ; preds = %30
%37 = fadd double %35, %31
%38 = fsub double %37, %35
%39 = fcmp une double %38, 0.000000e+00
br i1 %39, label %40, label %41
40: ; preds = %36
br label %41
41: ; preds = %40, %36, %30
%42 = phi i1 [ false, %40 ], [ true, %36 ], [ false, %30 ]
%43 = fdiv double 1.000000e+00, %20
%44 = add nuw i32 %23, 4
%45 = and i32 %44, 7
%46 = icmp ult i32 %23, 4
br i1 %46, label %49, label %47
47: ; preds = %41
%48 = and i32 %44, -8
br label %64
49: ; preds = %64, %41
%50 = phi double [ undef, %41 ], [ %74, %64 ]
%51 = phi double [ 1.000000e+00, %41 ], [ %74, %64 ]
%52 = icmp eq i32 %45, 0
br i1 %52, label %59, label %53
53: ; preds = %49, %53
%54 = phi double [ %56, %53 ], [ %51, %49 ]
%55 = phi i32 [ %57, %53 ], [ 0, %49 ]
%56 = fmul double %43, %54
%57 = add i32 %55, 1
%58 = icmp eq i32 %57, %45
br i1 %58, label %59, label %53
59: ; preds = %53, %49
%60 = phi double [ %50, %49 ], [ %56, %53 ]
%61 = fadd double %60, 1.000000e+00
%62 = fadd double %61, -1.000000e+00
%63 = fcmp une double %62, 0.000000e+00
br i1 %63, label %83, label %77
64: ; preds = %64, %47
%65 = phi double [ 1.000000e+00, %47 ], [ %74, %64 ]
%66 = phi i32 [ 0, %47 ], [ %75, %64 ]
%67 = fmul double %43, %65
%68 = fmul double %43, %67
%69 = fmul double %43, %68
%70 = fmul double %43, %69
%71 = fmul double %43, %70
%72 = fmul double %43, %71
%73 = fmul double %43, %72
%74 = fmul double %43, %73
%75 = add i32 %66, 8
%76 = icmp eq i32 %75, %48
br i1 %76, label %49, label %64
77: ; preds = %59, %77
%78 = phi double [ %79, %77 ], [ %60, %59 ]
%79 = fmul double %78, %20
%80 = fadd double %79, 1.000000e+00
%81 = fadd double %80, -1.000000e+00
%82 = fcmp une double %81, 0.000000e+00
br i1 %82, label %83, label %77
83: ; preds = %77, %59
%84 = phi double [ %60, %59 ], [ %79, %77 ]
%85 = phi double [ %61, %59 ], [ %80, %77 ]
%86 = icmp eq i32 %17, 2
%87 = or i1 %86, %42
br i1 %87, label %95, label %88
88: ; preds = %83
%89 = fmul double %84, %85
%90 = fmul double %89, 5.000000e-01
%91 = fadd double %90, 1.000000e+00
%92 = fadd double %91, -1.000000e+00
%93 = fcmp une double %92, 0.000000e+00
br i1 %93, label %94, label %95
94: ; preds = %88
br label %95
95: ; preds = %88, %94, %83
%96 = phi double [ %84, %83 ], [ %90, %94 ], [ %84, %88 ]
ret double %96
}