double getcontint(appxint)
double appxint;
{
  double cint = 1.0;
  if (appxint == 0.0)
    return 1.0;
  for (;;)
    if (cint >= appxint)
      if ((cint *= 0.5) >= appxint)
        if ((cint *= 0.5) >= appxint)
          cint *= 0.4;
        else
          return (((appxint - cint) >= 0 ? (appxint - cint)
                                         : -(appxint - cint)) <
                  ((cint * 2.0 - appxint) >= 0 ? (cint * 2.0 - appxint)
                                               : -(cint * 2.0 - appxint)))
                     ? cint
                     : cint * 2.0;
      else
        return (((appxint - cint) >= 0 ? (appxint - cint) : -(appxint - cint)) <
                ((cint * 2.0 - appxint) >= 0 ? (cint * 2.0 - appxint)
                                             : -(cint * 2.0 - appxint)))
                   ? cint
                   : cint * 2.0;
    else if ((cint *= 2.5) <= appxint)
      if ((cint *= 2.0) <= appxint)
        cint *= 2.0;
      else
        return (((appxint - cint * 0.5) >= 0 ? (appxint - cint * 0.5)
                                             : -(appxint - cint * 0.5)) <
                ((cint - appxint) >= 0 ? (cint - appxint) : -(cint - appxint)))
                   ? cint * 0.5
                   : cint;
    else
      return (((appxint - cint * 0.4) >= 0 ? (appxint - cint * 0.4)
                                           : -(appxint - cint * 0.4)) <
              ((cint - appxint) >= 0 ? (cint - appxint) : -(cint - appxint)))
                 ? cint * 0.4
                 : cint;
}


x86 assembly (clang, -O0):
<getcontint>:
push   %rbp
mov    %rsp,%rbp
sub    $0x18,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  0xeeb(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1144 <getcontint+0x44>
jp     1144 <getcontint+0x44>
movsd  0xec6(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1798 <getcontint+0x698>
jmp    1149 <getcontint+0x49>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jb     144e <getcontint+0x34e>
movsd  0xebf(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
ucomisd -0x10(%rbp),%xmm0
jb     12fc <getcontint+0x1fc>
movsd  0xea2(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
ucomisd -0x10(%rbp),%xmm0
jb     11aa <getcontint+0xaa>
movsd  0xe75(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
jmp    12f7 <getcontint+0x1f7>
movsd  -0x10(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     11d5 <getcontint+0xd5>
movsd  -0x10(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    11fb <getcontint+0xfb>
movsd  -0x10(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     126e <getcontint+0x16e>
movsd  -0x18(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    12b3 <getcontint+0x1b3>
movsd  -0x18(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x28(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    12d6 <getcontint+0x1d6>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
jmp    12e8 <getcontint+0x1e8>
movsd  0xd3a(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1798 <getcontint+0x698>
jmp    1449 <getcontint+0x349>
movsd  -0x10(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1327 <getcontint+0x227>
movsd  -0x10(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    134d <getcontint+0x24d>
movsd  -0x10(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     13c0 <getcontint+0x2c0>
movsd  -0x18(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    1405 <getcontint+0x305>
movsd  -0x18(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1428 <getcontint+0x328>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    143a <getcontint+0x33a>
movsd  0xbe8(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1798 <getcontint+0x698>
jmp    1793 <getcontint+0x693>
movsd  0xbb2(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  %xmm1,-0x18(%rbp)
movsd  -0x10(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     1611 <getcontint+0x511>
movsd  0xba1(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  %xmm1,-0x18(%rbp)
movsd  -0x10(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     14a7 <getcontint+0x3a7>
movsd  0xb80(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
jmp    160c <getcontint+0x50c>
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xb50(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1520 <getcontint+0x420>
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xb12(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    156d <getcontint+0x46d>
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xad7(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     15a2 <getcontint+0x4a2>
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
jmp    15c8 <getcontint+0x4c8>
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    15f3 <getcontint+0x4f3>
movsd  0xa3c(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    15fd <getcontint+0x4fd>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1798 <getcontint+0x698>
jmp    178e <getcontint+0x68e>
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x9d6(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     168a <getcontint+0x58a>
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x998(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    16d7 <getcontint+0x5d7>
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x95d(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1712 <getcontint+0x612>
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
jmp    173b <getcontint+0x63b>
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0x90(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    176f <getcontint+0x66f>
movsd  0x8b3(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
jmp    177c <getcontint+0x67c>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x8(%rbp)
jmp    1798 <getcontint+0x698>
jmp    1793 <getcontint+0x693>
jmp    1149 <getcontint+0x49>
movsd  -0x8(%rbp),%xmm0
add    $0x18,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<getcontint>:
movapd %xmm0,%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    1119 <getcontint+0x19>
jp     1119 <getcontint+0x19>
movsd  0xee8(%rip),%xmm0
ret
movsd  0xedf(%rip),%xmm2
movsd  0xeef(%rip),%xmm0
movsd  0xed7(%rip),%xmm3
movsd  0xed7(%rip),%xmm4
nopl   0x0(%rax)
ucomisd %xmm1,%xmm2
jae    1170 <getcontint+0x70>
mulsd  %xmm0,%xmm2
ucomisd %xmm2,%xmm1
jb     11f2 <getcontint+0xf2>
addsd  %xmm2,%xmm2
ucomisd %xmm2,%xmm1
jb     11fc <getcontint+0xfc>
addsd  %xmm2,%xmm2
jmp    1140 <getcontint+0x40>
nopl   0x0(%rax,%rax,1)
mulsd  %xmm3,%xmm2
ucomisd %xmm1,%xmm2
jb     118a <getcontint+0x8a>
mulsd  %xmm3,%xmm2
ucomisd %xmm1,%xmm2
jb     118a <getcontint+0x8a>
mulsd  %xmm4,%xmm2
jmp    1140 <getcontint+0x40>
movapd %xmm1,%xmm3
subsd  %xmm2,%xmm3
movapd 0xe86(%rip),%xmm4
movapd %xmm3,%xmm5
xorpd  %xmm4,%xmm5
xorpd  %xmm6,%xmm6
xorpd  %xmm0,%xmm0
cmpnlesd %xmm3,%xmm0
andpd  %xmm0,%xmm5
andnpd %xmm3,%xmm0
orpd   %xmm5,%xmm0
movapd %xmm2,%xmm3
addsd  %xmm2,%xmm3
movapd %xmm3,%xmm5
subsd  %xmm1,%xmm5
xorpd  %xmm5,%xmm4
cmpnlesd %xmm5,%xmm6
andpd  %xmm6,%xmm4
andnpd %xmm5,%xmm6
orpd   %xmm4,%xmm6
cmpltsd %xmm6,%xmm0
andpd  %xmm0,%xmm2
andnpd %xmm3,%xmm0
orpd   %xmm2,%xmm0
ret
movsd  0xe16(%rip),%xmm3
jmp    1204 <getcontint+0x104>
movsd  0xe04(%rip),%xmm3
mulsd  %xmm2,%xmm3
movapd %xmm2,%xmm4
subsd  %xmm1,%xmm4
subsd  %xmm3,%xmm1
movapd 0xe04(%rip),%xmm5
movapd %xmm1,%xmm6
xorpd  %xmm5,%xmm6
xorpd  %xmm7,%xmm7
xorpd  %xmm0,%xmm0
cmpnlesd %xmm1,%xmm0
andpd  %xmm0,%xmm6
andnpd %xmm1,%xmm0
orpd   %xmm6,%xmm0
xorpd  %xmm4,%xmm5
cmpnlesd %xmm4,%xmm7
andpd  %xmm7,%xmm5
andnpd %xmm4,%xmm7
orpd   %xmm5,%xmm7
cmpltsd %xmm7,%xmm0
andpd  %xmm0,%xmm3
andnpd %xmm2,%xmm0
orpd   %xmm3,%xmm0
ret

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

LLVM IR (-O2):
define double @getcontint(double %0) {
%2 = fcmp oeq double %0, 0.000000e+00
br i1 %2, label %76, label %3
3: ; preds = %1, %48
%4 = phi double [ %49, %48 ], [ 1.000000e+00, %1 ]
%5 = fcmp ult double %4, %0
br i1 %5, label %40, label %6
6: ; preds = %3
%7 = fmul double %4, 5.000000e-01
%8 = fcmp ult double %7, %0
br i1 %8, label %27, label %9
9: ; preds = %6
%10 = fmul double %7, 5.000000e-01
%11 = fcmp ult double %10, %0
br i1 %11, label %14, label %12
12: ; preds = %9
%13 = fmul double %10, 4.000000e-01
br label %48
14: ; preds = %9
%15 = fsub double %0, %10
%16 = fcmp ult double %15, 0.000000e+00
%17 = fneg double %15
%18 = select i1 %16, double %17, double %15
%19 = fneg double %0
%20 = tail call double @llvm.fmuladd.f64(double %10, double 2.000000e+00, double %19)
%21 = fcmp ult double %20, 0.000000e+00
%22 = fneg double %20
%23 = select i1 %21, double %22, double %20
%24 = fcmp olt double %18, %23
%25 = fmul double %10, 2.000000e+00
%26 = select i1 %24, double %10, double %25
br label %76
27: ; preds = %6
%28 = fsub double %0, %7
%29 = fcmp ult double %28, 0.000000e+00
%30 = fneg double %28
%31 = select i1 %29, double %30, double %28
%32 = fneg double %0
%33 = tail call double @llvm.fmuladd.f64(double %7, double 2.000000e+00, double %32)
%34 = fcmp ult double %33, 0.000000e+00
%35 = fneg double %33
%36 = select i1 %34, double %35, double %33
%37 = fcmp olt double %31, %36
%38 = fmul double %7, 2.000000e+00
%39 = select i1 %37, double %7, double %38
br label %76
40: ; preds = %3
%41 = fmul double %4, 2.500000e+00
%42 = fcmp ugt double %41, %0
br i1 %42, label %63, label %43
43: ; preds = %40
%44 = fmul double %41, 2.000000e+00
%45 = fcmp ugt double %44, %0
br i1 %45, label %50, label %46
46: ; preds = %43
%47 = fmul double %44, 2.000000e+00
br label %48
48: ; preds = %46, %12
%49 = phi double [ %13, %12 ], [ %47, %46 ]
br label %3
50: ; preds = %43
%51 = fneg double %44
%52 = tail call double @llvm.fmuladd.f64(double %51, double 5.000000e-01, double %0)
%53 = fcmp ult double %52, 0.000000e+00
%54 = fneg double %52
%55 = select i1 %53, double %54, double %52
%56 = fsub double %44, %0
%57 = fcmp ult double %56, 0.000000e+00
%58 = fneg double %56
%59 = select i1 %57, double %58, double %56
%60 = fcmp olt double %55, %59
%61 = fmul double %44, 5.000000e-01
%62 = select i1 %60, double %61, double %44
br label %76
63: ; preds = %40
%64 = fneg double %41
%65 = tail call double @llvm.fmuladd.f64(double %64, double 4.000000e-01, double %0)
%66 = fcmp ult double %65, 0.000000e+00
%67 = fneg double %65
%68 = select i1 %66, double %67, double %65
%69 = fsub double %41, %0
%70 = fcmp ult double %69, 0.000000e+00
%71 = fneg double %69
%72 = select i1 %70, double %71, double %69
%73 = fcmp olt double %68, %72
%74 = fmul double %41, 4.000000e-01
%75 = select i1 %73, double %74, double %41
br label %76
76: ; preds = %1, %63, %50, %27, %14
%77 = phi double [ %26, %14 ], [ %39, %27 ], [ %62, %50 ], [ %75, %63 ], [ 1.000000e+00, %1 ]
ret double %77
}