int TkOvalToArea(ovalPtr, rectPtr)
register double *ovalPtr;
register double *rectPtr;
{
  double centerX, centerY, radX, radY, deltaX, deltaY;
  if ((rectPtr[0] <= ovalPtr[0]) && (rectPtr[2] >= ovalPtr[2]) &&
      (rectPtr[1] <= ovalPtr[1]) && (rectPtr[3] >= ovalPtr[3])) {
    return 1;
  }
  if ((rectPtr[2] < ovalPtr[0]) || (rectPtr[0] > ovalPtr[2]) ||
      (rectPtr[3] < ovalPtr[1]) || (rectPtr[1] > ovalPtr[3])) {
    return -1;
  }
  centerX = (ovalPtr[0] + ovalPtr[2]) / 2;
  centerY = (ovalPtr[1] + ovalPtr[3]) / 2;
  radX = (ovalPtr[2] - ovalPtr[0]) / 2;
  radY = (ovalPtr[3] - ovalPtr[1]) / 2;
  deltaY = rectPtr[1] - centerY;
  if (deltaY < 0.0) {
    deltaY = centerY - rectPtr[3];
    if (deltaY < 0.0) {
      deltaY = 0;
    }
  }
  deltaY /= radY;
  deltaY *= deltaY;
  deltaX = (rectPtr[0] - centerX) / radX;
  deltaX *= deltaX;
  if ((deltaX + deltaY) <= 1.0) {
    return 0;
  }
  deltaX = (rectPtr[2] - centerX) / radX;
  deltaX *= deltaX;
  if ((deltaX + deltaY) <= 1.0) {
    return 0;
  }
  deltaX = rectPtr[0] - centerX;
  if (deltaX < 0.0) {
    deltaX = centerX - rectPtr[2];
    if (deltaX < 0.0) {
      deltaX = 0;
    }
  }
  deltaX /= radX;
  deltaX *= deltaX;
  deltaY = (rectPtr[1] - centerY) / radY;
  deltaY *= deltaY;
  if ((deltaX + deltaY) < 1.0) {
    return 0;
  }
  deltaY = (rectPtr[3] - centerY) / radY;
  deltaY *= deltaY;
  if ((deltaX + deltaY) < 1.0) {
    return 0;
  }
  return -1;
}


x86 assembly (clang, -O0):
<TkOvalToArea>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jb     117e <TkOvalToArea+0x7e>
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
ucomisd 0x10(%rax),%xmm0
jb     117e <TkOvalToArea+0x7e>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
ucomisd %xmm1,%xmm0
jb     117e <TkOvalToArea+0x7e>
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
ucomisd 0x18(%rax),%xmm0
jb     117e <TkOvalToArea+0x7e>
movl   $0x1,-0x4(%rbp)
jmp    149d <TkOvalToArea+0x39d>
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
ja     11e4 <TkOvalToArea+0xe4>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
ucomisd 0x10(%rax),%xmm0
ja     11e4 <TkOvalToArea+0xe4>
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
ucomisd %xmm1,%xmm0
ja     11e4 <TkOvalToArea+0xe4>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
ucomisd 0x18(%rax),%xmm0
jbe    11f0 <TkOvalToArea+0xf0>
movl   $0xffffffff,-0x4(%rbp)
jmp    149d <TkOvalToArea+0x39d>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x10(%rax),%xmm0
movsd  0xdf7(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm0
movsd  0xdd4(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  0xdb2(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x8(%rax),%xmm0
movsd  0xd8f(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
subsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x48(%rbp),%xmm0
jbe    12c9 <TkOvalToArea+0x1c9>
movsd  -0x28(%rbp),%xmm0
mov    -0x18(%rbp),%rax
subsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x48(%rbp),%xmm0
jbe    12c4 <TkOvalToArea+0x1c4>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    12c9 <TkOvalToArea+0x1c9>
movsd  -0x38(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0x20(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
movsd  0xce5(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1339 <TkOvalToArea+0x239>
movl   $0x0,-0x4(%rbp)
jmp    149d <TkOvalToArea+0x39d>
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
subsd  -0x20(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
movsd  0xc96(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1388 <TkOvalToArea+0x288>
movl   $0x0,-0x4(%rbp)
jmp    149d <TkOvalToArea+0x39d>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x40(%rbp),%xmm0
jbe    13d6 <TkOvalToArea+0x2d6>
movsd  -0x20(%rbp),%xmm0
mov    -0x18(%rbp),%rax
subsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x40(%rbp),%xmm0
jbe    13d1 <TkOvalToArea+0x2d1>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    13d6 <TkOvalToArea+0x2d6>
movsd  -0x30(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
subsd  -0x28(%rbp),%xmm0
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
movsd  0xbd7(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1447 <TkOvalToArea+0x347>
movl   $0x0,-0x4(%rbp)
jmp    149d <TkOvalToArea+0x39d>
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
subsd  -0x28(%rbp),%xmm0
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
movsd  0xb88(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1496 <TkOvalToArea+0x396>
movl   $0x0,-0x4(%rbp)
jmp    149d <TkOvalToArea+0x39d>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<TkOvalToArea>:
movsd  (%rsi),%xmm0
movsd  0x10(%rsi),%xmm2
movsd  (%rdi),%xmm7
ucomisd %xmm0,%xmm7
jb     113b <TkOvalToArea+0x3b>
ucomisd 0x10(%rdi),%xmm2
jb     113b <TkOvalToArea+0x3b>
movsd  0x8(%rdi),%xmm1
ucomisd 0x8(%rsi),%xmm1
jb     113b <TkOvalToArea+0x3b>
movsd  0x18(%rsi),%xmm1
mov    $0x1,%eax
ucomisd 0x18(%rdi),%xmm1
jae    1296 <TkOvalToArea+0x196>
mov    $0xffffffff,%eax
ucomisd %xmm2,%xmm7
ja     1296 <TkOvalToArea+0x196>
movsd  0x10(%rdi),%xmm4
ucomisd %xmm4,%xmm0
ja     1296 <TkOvalToArea+0x196>
movsd  0x18(%rsi),%xmm9
movsd  0x8(%rdi),%xmm1
ucomisd %xmm9,%xmm1
ja     1296 <TkOvalToArea+0x196>
movsd  0x8(%rsi),%xmm5
movsd  0x18(%rdi),%xmm6
ucomisd %xmm6,%xmm5
ja     1296 <TkOvalToArea+0x196>
movapd %xmm7,%xmm11
addsd  %xmm4,%xmm11
movsd  0xe6a(%rip),%xmm10
mulsd  %xmm10,%xmm11
movapd %xmm1,%xmm8
addsd  %xmm6,%xmm8
mulsd  %xmm10,%xmm8
unpcklpd %xmm4,%xmm6
unpcklpd %xmm7,%xmm1
subpd  %xmm1,%xmm6
mulpd  0xe52(%rip),%xmm6
subsd  %xmm8,%xmm5
xorpd  %xmm1,%xmm1
ucomisd %xmm5,%xmm1
movapd %xmm5,%xmm4
jbe    11e5 <TkOvalToArea+0xe5>
movapd %xmm8,%xmm4
subsd  %xmm9,%xmm4
ucomisd %xmm4,%xmm1
jbe    11e5 <TkOvalToArea+0xe5>
xorpd  %xmm4,%xmm4
subsd  %xmm11,%xmm0
unpcklpd %xmm0,%xmm4
divpd  %xmm6,%xmm4
mulpd  %xmm4,%xmm4
movapd %xmm4,%xmm1
unpckhpd %xmm4,%xmm1
addsd  %xmm4,%xmm1
xor    %eax,%eax
movsd  0xdfc(%rip),%xmm7
ucomisd %xmm1,%xmm7
jae    1296 <TkOvalToArea+0x196>
movapd %xmm2,%xmm1
subsd  %xmm11,%xmm1
movapd %xmm6,%xmm3
unpckhpd %xmm6,%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm1,%xmm1
addsd  %xmm4,%xmm1
ucomisd %xmm1,%xmm7
jae    1296 <TkOvalToArea+0x196>
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
jbe    1258 <TkOvalToArea+0x158>
subsd  %xmm2,%xmm11
ucomisd %xmm11,%xmm1
movapd %xmm11,%xmm0
jbe    1258 <TkOvalToArea+0x158>
xorpd  %xmm0,%xmm0
unpcklpd %xmm0,%xmm5
divpd  %xmm6,%xmm5
mulpd  %xmm5,%xmm5
movapd %xmm5,%xmm0
unpckhpd %xmm5,%xmm0
addsd  %xmm0,%xmm5
ucomisd %xmm5,%xmm7
ja     1296 <TkOvalToArea+0x196>
subsd  %xmm8,%xmm9
divsd  %xmm6,%xmm9
mulsd  %xmm9,%xmm9
addsd  %xmm0,%xmm9
xor    %eax,%eax
ucomisd %xmm9,%xmm7
setbe  %al
neg    %eax
ret

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

LLVM IR (-O2):
define i32 @TkOvalToArea(double* nocapture %0, double* nocapture %1) {
%3 = load double, double* %1
%4 = load double, double* %0
%5 = fcmp ugt double %3, %4
%6 = getelementptr inbounds double, double* %1, i64 2
%7 = load double, double* %6
br i1 %5, label %24, label %8
8: ; preds = %2
%9 = getelementptr inbounds double, double* %0, i64 2
%10 = load double, double* %9
%11 = fcmp ult double %7, %10
br i1 %11, label %24, label %12
12: ; preds = %8
%13 = getelementptr inbounds double, double* %1, i64 1
%14 = load double, double* %13
%15 = getelementptr inbounds double, double* %0, i64 1
%16 = load double, double* %15
%17 = fcmp ugt double %14, %16
br i1 %17, label %24, label %18
18: ; preds = %12
%19 = getelementptr inbounds double, double* %1, i64 3
%20 = load double, double* %19
%21 = getelementptr inbounds double, double* %0, i64 3
%22 = load double, double* %21
%23 = fcmp ult double %20, %22
br i1 %23, label %24, label %102
24: ; preds = %2, %18, %12, %8
%25 = fcmp olt double %7, %4
br i1 %25, label %102, label %26
26: ; preds = %24
%27 = getelementptr inbounds double, double* %0, i64 2
%28 = load double, double* %27
%29 = fcmp ogt double %3, %28
br i1 %29, label %102, label %30
30: ; preds = %26
%31 = getelementptr inbounds double, double* %1, i64 3
%32 = load double, double* %31
%33 = getelementptr inbounds double, double* %0, i64 1
%34 = load double, double* %33
%35 = fcmp olt double %32, %34
br i1 %35, label %102, label %36
36: ; preds = %30
%37 = getelementptr inbounds double, double* %1, i64 1
%38 = load double, double* %37
%39 = getelementptr inbounds double, double* %0, i64 3
%40 = load double, double* %39
%41 = fcmp ogt double %38, %40
br i1 %41, label %102, label %42
42: ; preds = %36
%43 = fadd double %4, %28
%44 = fmul double %43, 5.000000e-01
%45 = fadd double %34, %40
%46 = fmul double %45, 5.000000e-01
%47 = insertelement <2 x double> poison, double %40, i64 0
%48 = insertelement <2 x double> %47, double %28, i64 1
%49 = insertelement <2 x double> poison, double %4, i64 1
%50 = insertelement <2 x double> %49, double %34, i64 0
%51 = fsub <2 x double> %48, %50
%52 = fmul <2 x double> %51, <double 5.000000e-01, double 5.000000e-01>
%53 = fsub double %38, %46
%54 = fcmp olt double %53, 0.000000e+00
br i1 %54, label %55, label %59
55: ; preds = %42
%56 = fsub double %46, %32
%57 = fcmp olt double %56, 0.000000e+00
br i1 %57, label %58, label %59
58: ; preds = %55
br label %59
59: ; preds = %55, %58, %42
%60 = phi double [ 0.000000e+00, %58 ], [ %56, %55 ], [ %53, %42 ]
%61 = fsub double %3, %44
%62 = insertelement <2 x double> poison, double %60, i64 0
%63 = insertelement <2 x double> %62, double %61, i64 1
%64 = fdiv <2 x double> %63, %52
%65 = fmul <2 x double> %64, %64
%66 = shufflevector <2 x double> %65, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%67 = fadd <2 x double> %66, %65
%68 = extractelement <2 x double> %67, i64 0
%69 = fcmp ugt double %68, 1.000000e+00
br i1 %69, label %70, label %102
70: ; preds = %59
%71 = extractelement <2 x double> %65, i64 0
%72 = fsub double %7, %44
%73 = extractelement <2 x double> %52, i64 1
%74 = fdiv double %72, %73
%75 = fmul double %74, %74
%76 = fadd double %75, %71
%77 = fcmp ugt double %76, 1.000000e+00
br i1 %77, label %78, label %102
78: ; preds = %70
%79 = fcmp olt double %61, 0.000000e+00
br i1 %79, label %80, label %84
80: ; preds = %78
%81 = fsub double %44, %7
%82 = fcmp olt double %81, 0.000000e+00
br i1 %82, label %83, label %84
83: ; preds = %80
br label %84
84: ; preds = %80, %83, %78
%85 = phi double [ 0.000000e+00, %83 ], [ %81, %80 ], [ %61, %78 ]
%86 = insertelement <2 x double> poison, double %53, i64 0
%87 = insertelement <2 x double> %86, double %85, i64 1
%88 = fdiv <2 x double> %87, %52
%89 = fmul <2 x double> %88, %88
%90 = extractelement <2 x double> %89, i64 0
%91 = extractelement <2 x double> %89, i64 1
%92 = fadd double %90, %91
%93 = fcmp olt double %92, 1.000000e+00
br i1 %93, label %102, label %94
94: ; preds = %84
%95 = fsub double %32, %46
%96 = extractelement <2 x double> %52, i64 0
%97 = fdiv double %95, %96
%98 = fmul double %97, %97
%99 = fadd double %98, %91
%100 = fcmp uge double %99, 1.000000e+00
%101 = sext i1 %100 to i32
br label %102
102: ; preds = %94, %84, %70, %59, %24, %26, %30, %36, %18
%103 = phi i32 [ 1, %18 ], [ -1, %36 ], [ -1, %30 ], [ -1, %26 ], [ -1, %24 ], [ 0, %59 ], [ 0, %70 ], [ 0, %84 ], [ %101, %94 ]
ret i32 %103
}