#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 DBL_MAX;
int /*<<< orphan*/ eeval(double, double, double, double, double, double *,
                         double *, double *, double *);
double fabs(double);
double max(double, int /*<<< orphan*/);
double pow(double, double);
int /*<<< orphan*/ qdrtc(double, double, double, double *, double *, double *,
                         double *);
double sgn(double);
int /*<<< orphan*/ sqrt(double);
void qbc(double A, double B, double C, double D, double *pX, double *pX1,
         double *pY1, double *pX2, double *pY2) {
  double X, X1, Y1, X2, Y2;
  double b1, c2, q, dq, s, t, r, x0;
  if (A == 0) {
    X = DBL_MAX;
    A = B;
    b1 = C;
    c2 = D;
    goto fin;
  }
  if (D == 0) {
    X = 0;
    b1 = B;
    c2 = C;
    goto fin;
  }
  X = -(B / A) / 3;
  eeval(X, A, B, C, D, &q, &dq, &b1, &c2);
  t = q / A;
  r = pow(fabs(t), 1.0 / 3.0);
  s = sgn(t);
  t = -dq / A;
  if (t > 0)
    r = 1.324717957244746 * max(r, sqrt(t));
  x0 = X - s * r;
  if (x0 == X)
    goto fin;
  do {
    X = x0;
    eeval(X, A, B, C, D, &q, &dq, &b1, &c2);
    x0 = (dq == 0) ? X : X - (q / dq) / 1.000000000000001;
  } while (s * x0 > s * X);
  if (fabs(A) * X * X > fabs(D / X)) {
    c2 = -D / X;
    b1 = (c2 - C) / X;
  }
fin:
  qdrtc(A, b1, c2, &X1, &Y1, &X2, &Y2);
  *pX = X;
  *pX1 = X1;
  *pY1 = Y1;
  *pX2 = X2;
  *pY2 = Y2;
}


x86 assembly (clang, -O0):
<qbc>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
mov    %rdi,-0x28(%rbp)
mov    %rsi,-0x30(%rbp)
mov    %rdx,-0x38(%rbp)
mov    %rcx,-0x40(%rbp)
mov    %r8,-0x48(%rbp)
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11de <qbc+0x7e>
jp     11de <qbc+0x7e>
mov    0x2e2e(%rip),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    14fc <qbc+0x39c>
movsd  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1217 <qbc+0xb7>
jp     1217 <qbc+0xb7>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    14fc <qbc+0x39c>
movsd  -0x10(%rbp),%xmm0
divsd  -0x8(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xdc8(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
movsd  -0x20(%rbp),%xmm4
lea    -0x88(%rbp),%rdi
lea    -0x90(%rbp),%rsi
lea    -0x78(%rbp),%rdx
lea    -0x80(%rbp),%rcx
call   1080 <eeval@plt>
movsd  -0x88(%rbp),%xmm0
ff
divsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movaps 0xd7f(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xd53(%rip),%xmm1
call   1050 <pow@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
call   1040 <sgn@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1353 <qbc+0x1f3>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
call   1070 <sqrt@plt>
movsd  -0xb8(%rbp),%xmm0
ff
mov    %eax,%edi
call   1030 <max@plt>
movaps %xmm0,%xmm1
movsd  0xcc9(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm1
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
ucomisd -0x50(%rbp),%xmm0
jne    13ad <qbc+0x24d>
jp     13ad <qbc+0x24d>
jmp    14fc <qbc+0x39c>
jmp    13b2 <qbc+0x252>
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
movsd  -0x20(%rbp),%xmm4
lea    -0x88(%rbp),%rdi
lea    -0x90(%rbp),%rsi
lea    -0x78(%rbp),%rdx
lea    -0x80(%rbp),%rcx
call   1080 <eeval@plt>
movsd  -0x90(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1420 <qbc+0x2c0>
jp     1420 <qbc+0x2c0>
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    144d <qbc+0x2ed>
movsd  -0x50(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm1
ff
divsd  -0x90(%rbp),%xmm1
ff
movsd  0xbdb(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  -0x50(%rbp),%xmm1
ucomisd %xmm1,%xmm0
ja     13b2 <qbc+0x252>
movsd  -0x8(%rbp),%xmm0
movaps 0xb90(%rip),%xmm1
pand   %xmm1,%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
divsd  -0x50(%rbp),%xmm1
movaps 0xb71(%rip),%xmm2
pand   %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    14f7 <qbc+0x397>
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
divsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    14fc <qbc+0x39c>
movsd  -0x8(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
movsd  -0x80(%rbp),%xmm2
lea    -0x58(%rbp),%rdi
lea    -0x60(%rbp),%rsi
lea    -0x68(%rbp),%rdx
lea    -0x70(%rbp),%rcx
call   1060 <qdrtc@plt>
movsd  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x60(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x68(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x48(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<qbc>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xb8,%rsp
mov    %r8,%r14
mov    %rcx,%r15
mov    %rdx,%rbp
mov    %rsi,%rbx
mov    %rdi,%r13
movapd %xmm3,%xmm4
movapd %xmm2,%xmm3
movapd %xmm1,%xmm5
movapd %xmm0,%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    11bd <qbc+0x5d>
jp     11bd <qbc+0x5d>
mov    0x2e3d(%rip),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,(%rsp)
movsd  %xmm3,0x10(%rsp)
movsd  %xmm4,0x8(%rsp)
jmp    140d <qbc+0x2ad>
ucomisd %xmm0,%xmm4
jne    11df <qbc+0x7f>
jp     11df <qbc+0x7f>
movsd  %xmm5,0x10(%rsp)
movsd  %xmm3,0x8(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,(%rsp)
jmp    1409 <qbc+0x2a9>
movapd %xmm5,%xmm0
divsd  %xmm1,%xmm0
divsd  0xe11(%rip),%xmm0
lea    0x28(%rsp),%rdi
lea    0x20(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0x8(%rsp),%rcx
movsd  %xmm0,(%rsp)
movsd  %xmm5,0x38(%rsp)
movapd %xmm5,%xmm2
movsd  %xmm3,0x30(%rsp)
movapd %xmm1,0x50(%rsp)
movapd %xmm4,0xa0(%rsp)
call   1080 <eeval@plt>
movsd  0x28(%rsp),%xmm1
divsd  0x50(%rsp),%xmm1
movapd %xmm1,0x40(%rsp)
movapd 0xdea(%rip),%xmm0
andpd  %xmm1,%xmm0
movsd  0xdb6(%rip),%xmm1
call   1050 <pow@plt>
movsd  %xmm0,0x18(%rsp)
movapd 0x40(%rsp),%xmm0
call   1040 <sgn@plt>
movapd 0x50(%rsp),%xmm1
movapd %xmm0,%xmm3
movsd  0x20(%rsp),%xmm0
xorpd  0xdc0(%rip),%xmm0
divsd  %xmm1,%xmm0
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
movsd  %xmm3,0x40(%rsp)
jbe    12bc <qbc+0x15c>
call   1070 <sqrt@plt>
movsd  0x18(%rsp),%xmm0
mov    %eax,%edi
call   1030 <max@plt>
movsd  0x40(%rsp),%xmm3
movapd 0x50(%rsp),%xmm1
mulsd  0xd56(%rip),%xmm0
jmp    12c2 <qbc+0x162>
movsd  0x18(%rsp),%xmm0
mulsd  %xmm3,%xmm0
movsd  (%rsp),%xmm3
movapd %xmm3,%xmm5
subsd  %xmm0,%xmm5
ucomisd %xmm3,%xmm5
movapd 0xa0(%rsp),%xmm4
movsd  0x38(%rsp),%xmm2
jne    12ee <qbc+0x18e>
jnp    1409 <qbc+0x2a9>
mov    %rbx,0x68(%rsp)
mov    %rbp,0x70(%rsp)
mov    %r15,%rbx
mov    %r14,0x78(%rsp)
lea    0x28(%rsp),%rbp
lea    0x20(%rsp),%r14
lea    0x10(%rsp),%r15
lea    0x8(%rsp),%r12
jmp    134d <qbc+0x1ed>
cs nopw 0x0(%rax,%rax,1)
movsd  0x40(%rsp),%xmm1
movapd %xmm1,%xmm0
mulsd  %xmm5,%xmm0
mulsd  %xmm3,%xmm1
ucomisd %xmm1,%xmm0
movapd 0x50(%rsp),%xmm1
movapd 0xa0(%rsp),%xmm4
movsd  0x38(%rsp),%xmm2
jbe    13ab <qbc+0x24b>
movsd  %xmm5,0x18(%rsp)
movapd %xmm5,%xmm0
movsd  %xmm5,(%rsp)
movsd  0x30(%rsp),%xmm3
mov    %rbp,%rdi
mov    %r14,%rsi
mov    %r15,%rdx
mov    %r12,%rcx
call   1080 <eeval@plt>
movsd  0x18(%rsp),%xmm5
movsd  (%rsp),%xmm3
movsd  0x20(%rsp),%xmm0
ucomisd 0xc94(%rip),%xmm0
jne    1390 <qbc+0x230>
jnp    1320 <qbc+0x1c0>
movsd  0x28(%rsp),%xmm5
divsd  %xmm0,%xmm5
divsd  0xc76(%rip),%xmm5
addsd  %xmm3,%xmm5
jmp    1320 <qbc+0x1c0>
movapd 0xc7d(%rip),%xmm0
movapd %xmm1,%xmm5
andpd  %xmm0,%xmm5
mulsd  %xmm3,%xmm5
mulsd  %xmm3,%xmm5
movapd %xmm4,%xmm2
divsd  %xmm3,%xmm2
andpd  %xmm0,%xmm2
ucomisd %xmm2,%xmm5
mov    0x78(%rsp),%r14
mov    %rbx,%r15
mov    0x70(%rsp),%rbp
mov    0x68(%rsp),%rbx
jbe    1409 <qbc+0x2a9>
xorpd  0xc51(%rip),%xmm4
divsd  %xmm3,%xmm4
movsd  %xmm4,0x8(%rsp)
subsd  0x30(%rsp),%xmm4
divsd  %xmm3,%xmm4
movsd  %xmm4,0x10(%rsp)
movapd %xmm1,%xmm5
movsd  0x10(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
lea    0x98(%rsp),%rdi
lea    0x90(%rsp),%rsi
lea    0x88(%rsp),%rdx
lea    0x80(%rsp),%rcx
movapd %xmm5,%xmm0
call   1060 <qdrtc@plt>
movsd  (%rsp),%xmm0
movsd  %xmm0,0x0(%r13)
movsd  0x98(%rsp),%xmm0
movsd  %xmm0,(%rbx)
movsd  0x90(%rsp),%xmm0
movsd  %xmm0,0x0(%rbp)
movsd  0x88(%rsp),%xmm0
movsd  %xmm0,(%r15)
movsd  0x80(%rsp),%xmm0
movsd  %xmm0,(%r14)
add    $0xb8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@DBL_MAX = global double 0.000000e+00
define void @qbc(double %0, double %1, double %2, double %3, double* %4, double* %5, double* %6, double* %7, double* %8) {
%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
%29 = alloca double
%30 = alloca double
%31 = alloca double
store double %0, double* %10
store double %1, double* %11
store double %2, double* %12
store double %3, double* %13
store double* %4, double** %14
store double* %5, double** %15
store double* %6, double** %16
store double* %7, double** %17
store double* %8, double** %18
%32 = load double, double* %10
%33 = fcmp oeq double %32, 0.000000e+00
br i1 %33, label %34, label %39
34: ; preds = %9
%35 = load double, double* @DBL_MAX
store double %35, double* %19
%36 = load double, double* %11
store double %36, double* %10
%37 = load double, double* %12
store double %37, double* %24
%38 = load double, double* %13
store double %38, double* %25
br label %140
39: ; preds = %9
%40 = load double, double* %13
%41 = fcmp oeq double %40, 0.000000e+00
br i1 %41, label %42, label %45
42: ; preds = %39
store double 0.000000e+00, double* %19
%43 = load double, double* %11
store double %43, double* %24
%44 = load double, double* %12
store double %44, double* %25
br label %140
45: ; preds = %39
%46 = load double, double* %11
%47 = load double, double* %10
%48 = fdiv double %46, %47
%49 = fneg double %48
%50 = fdiv double %49, 3.000000e+00
store double %50, double* %19
%51 = load double, double* %19
%52 = load double, double* %10
%53 = load double, double* %11
%54 = load double, double* %12
%55 = load double, double* %13
%56 = call i32 @eeval(double %51, double %52, double %53, double %54, double %55, double* %26, double* %27, double* %24, double* %25)
%57 = load double, double* %26
%58 = load double, double* %10
%59 = fdiv double %57, %58
store double %59, double* %29
%60 = load double, double* %29
%61 = call double @llvm.fabs.f64(double %60)
%62 = call double @pow(double %61, double 0x3FD5555555555555)
store double %62, double* %30
%63 = load double, double* %29
%64 = call double @sgn(double %63)
store double %64, double* %28
%65 = load double, double* %27
%66 = fneg double %65
%67 = load double, double* %10
%68 = fdiv double %66, %67
store double %68, double* %29
%69 = load double, double* %29
%70 = fcmp ogt double %69, 0.000000e+00
br i1 %70, label %71, label %77
71: ; preds = %45
%72 = load double, double* %30
%73 = load double, double* %29
%74 = call i32 @sqrt(double %73)
%75 = call double @max(double %72, i32 %74)
%76 = fmul double 0x3FF5320B74ECA44B, %75
store double %76, double* %30
br label %77
77: ; preds = %71, %45
%78 = load double, double* %19
%79 = load double, double* %28
%80 = load double, double* %30
%81 = fneg double %79
%82 = call double @llvm.fmuladd.f64(double %81, double %80, double %78)
store double %82, double* %31
%83 = load double, double* %31
%84 = load double, double* %19
%85 = fcmp oeq double %83, %84
br i1 %85, label %86, label %87
86: ; preds = %77
br label %140
87: ; preds = %77
br label %88
88: ; preds = %109, %87
%89 = load double, double* %31
store double %89, double* %19
%90 = load double, double* %19
%91 = load double, double* %10
%92 = load double, double* %11
%93 = load double, double* %12
%94 = load double, double* %13
%95 = call i32 @eeval(double %90, double %91, double %92, double %93, double %94, double* %26, double* %27, double* %24, double* %25)
%96 = load double, double* %27
%97 = fcmp oeq double %96, 0.000000e+00
br i1 %97, label %98, label %100
98: ; preds = %88
%99 = load double, double* %19
br label %107
100: ; preds = %88
%101 = load double, double* %19
%102 = load double, double* %26
%103 = load double, double* %27
%104 = fdiv double %102, %103
%105 = fdiv double %104, 0x3FF0000000000005
%106 = fsub double %101, %105
br label %107
107: ; preds = %100, %98
%108 = phi double [ %99, %98 ], [ %106, %100 ]
store double %108, double* %31
br label %109
109: ; preds = %107
%110 = load double, double* %28
%111 = load double, double* %31
%112 = fmul double %110, %111
%113 = load double, double* %28
%114 = load double, double* %19
%115 = fmul double %113, %114
%116 = fcmp ogt double %112, %115
br i1 %116, label %88, label %117
117: ; preds = %109
%118 = load double, double* %10
%119 = call double @llvm.fabs.f64(double %118)
%120 = load double, double* %19
%121 = fmul double %119, %120
%122 = load double, double* %19
%123 = fmul double %121, %122
%124 = load double, double* %13
%125 = load double, double* %19
%126 = fdiv double %124, %125
%127 = call double @llvm.fabs.f64(double %126)
%128 = fcmp ogt double %123, %127
br i1 %128, label %129, label %139
129: ; preds = %117
%130 = load double, double* %13
%131 = fneg double %130
%132 = load double, double* %19
%133 = fdiv double %131, %132
store double %133, double* %25
%134 = load double, double* %25
%135 = load double, double* %12
%136 = fsub double %134, %135
%137 = load double, double* %19
%138 = fdiv double %136, %137
store double %138, double* %24
br label %139
139: ; preds = %129, %117
br label %140
140: ; preds = %139, %86, %42, %34
%141 = load double, double* %10
%142 = load double, double* %24
%143 = load double, double* %25
%144 = call i32 @qdrtc(double %141, double %142, double %143, double* %20, double* %21, double* %22, double* %23)
%145 = load double, double* %19
%146 = load double*, double** %14
store double %145, double* %146
%147 = load double, double* %20
%148 = load double*, double** %15
store double %147, double* %148
%149 = load double, double* %21
%150 = load double*, double** %16
store double %149, double* %150
%151 = load double, double* %22
%152 = load double*, double** %17
store double %151, double* %152
%153 = load double, double* %23
%154 = load double*, double** %18
store double %153, double* %154
ret void
}

LLVM IR (-O2):
@DBL_MAX = global double 0.000000e+00
define void @qbc(double %0, double %1, double %2, double %3, double* nocapture writeonly %4, double* nocapture writeonly %5, double* nocapture writeonly %6, double* nocapture writeonly %7, double* nocapture writeonly %8) {
%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 = bitcast double* %10 to i8*
%19 = bitcast double* %11 to i8*
%20 = bitcast double* %12 to i8*
%21 = bitcast double* %13 to i8*
%22 = bitcast double* %14 to i8*
%23 = bitcast double* %15 to i8*
%24 = bitcast double* %16 to i8*
%25 = bitcast double* %17 to i8*
%26 = fcmp oeq double %0, 0.000000e+00
br i1 %26, label %27, label %29
27: ; preds = %9
%28 = load double, double* @DBL_MAX
store double %2, double* %14
store double %3, double* %15
br label %82
29: ; preds = %9
%30 = fcmp oeq double %3, 0.000000e+00
br i1 %30, label %31, label %32
31: ; preds = %29
store double %1, double* %14
store double %2, double* %15
br label %82
32: ; preds = %29
%33 = fneg double %1
%34 = fdiv double %33, %0
%35 = fdiv double %34, 3.000000e+00
%36 = call i32 @eeval(double %35, double %0, double %1, double %2, double %3, double* %16, double* %17, double* %14, double* %15)
%37 = load double, double* %16
%38 = fdiv double %37, %0
%39 = call double @llvm.fabs.f64(double %38)
%40 = call double @pow(double %39, double 0x3FD5555555555555)
%41 = call double @sgn(double %38)
%42 = load double, double* %17
%43 = fneg double %42
%44 = fdiv double %43, %0
%45 = fcmp ogt double %44, 0.000000e+00
br i1 %45, label %46, label %50
46: ; preds = %32
%47 = call i32 @sqrt(double %44)
%48 = call double @max(double %40, i32 %47)
%49 = fmul double %48, 0x3FF5320B74ECA44B
br label %50
50: ; preds = %46, %32
%51 = phi double [ %49, %46 ], [ %40, %32 ]
%52 = fneg double %41
%53 = call double @llvm.fmuladd.f64(double %52, double %51, double %35)
%54 = fcmp oeq double %53, %35
br i1 %54, label %82, label %55
55: ; preds = %50, %65
%56 = phi double [ %66, %65 ], [ %53, %50 ]
%57 = call i32 @eeval(double %56, double %0, double %1, double %2, double %3, double* %16, double* %17, double* %14, double* %15)
%58 = load double, double* %17
%59 = fcmp oeq double %58, 0.000000e+00
br i1 %59, label %65, label %60
60: ; preds = %55
%61 = load double, double* %16
%62 = fdiv double %61, %58
%63 = fdiv double %62, 0x3FF0000000000005
%64 = fsub double %56, %63
br label %65
65: ; preds = %55, %60
%66 = phi double [ %64, %60 ], [ %56, %55 ]
%67 = fmul double %41, %66
%68 = fmul double %41, %56
%69 = fcmp ogt double %67, %68
br i1 %69, label %55, label %70
70: ; preds = %65
%71 = call double @llvm.fabs.f64(double %0)
%72 = fmul double %71, %56
%73 = fmul double %56, %72
%74 = fdiv double %3, %56
%75 = call double @llvm.fabs.f64(double %74)
%76 = fcmp ogt double %73, %75
br i1 %76, label %77, label %82
77: ; preds = %70
%78 = fneg double %3
%79 = fdiv double %78, %56
store double %79, double* %15
%80 = fsub double %79, %2
%81 = fdiv double %80, %56
store double %81, double* %14
br label %82
82: ; preds = %70, %77, %50, %31, %27
%83 = phi double [ %28, %27 ], [ 0.000000e+00, %31 ], [ %35, %50 ], [ %56, %77 ], [ %56, %70 ]
%84 = phi double [ %1, %27 ], [ %0, %31 ], [ %0, %50 ], [ %0, %77 ], [ %0, %70 ]
%85 = load double, double* %14
%86 = load double, double* %15
%87 = call i32 @qdrtc(double %84, double %85, double %86, double* %10, double* %11, double* %12, double* %13)
store double %83, double* %4
%88 = load double, double* %10
store double %88, double* %5
%89 = load double, double* %11
store double %89, double* %6
%90 = load double, double* %12
store double %90, double* %7
%91 = load double, double* %13
store double %91, double* %8
ret void
}