#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 */
scalar_t__ fabs(double);
double sqrt(double);
int line_in_circle(double lx1, double ly1, double lx2, double ly2, double cx,
                   double cy, double cr) {
  double x1 = lx1 - cx;
  double y1 = ly1 - cy;
  if (x1 * x1 + y1 * y1 < cr * cr)
    return 1;
  double x2 = lx2 - cx;
  double y2 = ly2 - cy;
  if (x2 * x2 + y2 * y2 < cr * cr)
    return 1;
  double dx = x2 - x1;
  double dy = y2 - y1;
  double dr2 = dx * dx + dy * dy;
  double D = x1 * y2 - x2 * y1;
  double discr = cr * cr * dr2 - D * D;
  if (discr >= 0.0) {
    if (fabs(dx) > fabs(dy)) {
      double thing = dx * sqrt(discr);
      double x = (D * dy + thing) / dr2;
      double t = (x + cx - lx1) / (lx2 - lx1);
      if (t > 0.0 && t < 1.0)
        return 1;
      x = (D * dy - thing) / dr2;
      t = (x + cx - lx1) / (lx2 - lx1);
      if (t > 0.0 && t < 1.0)
        return 1;
    } else {
      double thing = dy * sqrt(discr);
      double y = -(D * dx + thing) / dr2;
      double t = (y + cy - ly1) / (ly2 - ly1);
      if (t > 0.0 && t < 1.0)
        return 1;
      y = -(D * dx - thing) / dr2;
      t = (y + cy - ly1) / (ly2 - ly1);
      if (t > 0.0 && t < 1.0)
        return 1;
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<line_in_circle>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
movsd  %xmm4,-0x30(%rbp)
movsd  %xmm5,-0x38(%rbp)
movsd  %xmm6,-0x40(%rbp)
movsd  -0x10(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x18(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm2
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    11a8 <line_in_circle+0x88>
movl   $0x1,-0x4(%rbp)
jmp    15e8 <line_in_circle+0x4c8>
movsd  -0x20(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x28(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x58(%rbp),%xmm1
movsd  -0x58(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1202 <line_in_circle+0xe2>
movl   $0x1,-0x4(%rbp)
jmp    15e8 <line_in_circle+0x4c8>
movsd  -0x58(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x60(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x58(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x40(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  -0x80(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     15e1 <line_in_circle+0x4c1>
movsd  -0x68(%rbp),%xmm0
call   1030 <fabs@plt>
mov    %rax,-0xc0(%rbp)
movsd  -0x70(%rbp),%xmm0
call   1030 <fabs@plt>
mov    %rax,%rcx
mov    -0xc0(%rbp),%rax
cmp    %rcx,%rax
jle    1455 <line_in_circle+0x335>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
call   1040 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
addsd  -0x30(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
subsd  -0x10(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    13b3 <line_in_circle+0x293>
movsd  0xc67(%rip),%xmm0
ucomisd -0xa0(%rbp),%xmm0
ff
jbe    13b3 <line_in_circle+0x293>
movl   $0x1,-0x4(%rbp)
jmp    15e8 <line_in_circle+0x4c8>
movsd  -0x80(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
addsd  -0x30(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
subsd  -0x10(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1450 <line_in_circle+0x330>
movsd  0xbca(%rip),%xmm0
ucomisd -0xa0(%rbp),%xmm0
ff
jbe    1450 <line_in_circle+0x330>
movl   $0x1,-0x4(%rbp)
jmp    15e8 <line_in_circle+0x4c8>
jmp    15dc <line_in_circle+0x4bc>
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
call   1040 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x38(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
subsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1523 <line_in_circle+0x403>
movsd  0xaf7(%rip),%xmm0
ucomisd -0xb8(%rbp),%xmm0
ff
jbe    1523 <line_in_circle+0x403>
movl   $0x1,-0x4(%rbp)
jmp    15e8 <line_in_circle+0x4c8>
movsd  -0x80(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x38(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
subsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    15d7 <line_in_circle+0x4b7>
movsd  0xa43(%rip),%xmm0
ucomisd -0xb8(%rbp),%xmm0
ff
jbe    15d7 <line_in_circle+0x4b7>
movl   $0x1,-0x4(%rbp)
jmp    15e8 <line_in_circle+0x4c8>
jmp    15dc <line_in_circle+0x4bc>
jmp    15e1 <line_in_circle+0x4c1>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<line_in_circle>:
push   %r15
push   %r14
push   %rbx
sub    $0x60,%rsp
movapd %xmm0,%xmm9
subsd  %xmm4,%xmm9
movapd %xmm1,%xmm10
subsd  %xmm5,%xmm10
movapd %xmm10,%xmm8
mulsd  %xmm10,%xmm8
movapd %xmm9,%xmm7
mulsd  %xmm9,%xmm7
addsd  %xmm8,%xmm7
mulsd  %xmm6,%xmm6
mov    $0x1,%ebx
ucomisd %xmm7,%xmm6
ja     11f3 <line_in_circle+0xd3>
movapd %xmm2,%xmm8
subsd  %xmm4,%xmm8
movapd %xmm3,%xmm11
subsd  %xmm5,%xmm11
movapd %xmm11,%xmm12
mulsd  %xmm11,%xmm12
movapd %xmm8,%xmm7
mulsd  %xmm8,%xmm7
addsd  %xmm12,%xmm7
ucomisd %xmm7,%xmm6
ja     11f3 <line_in_circle+0xd3>
movapd %xmm8,%xmm12
subsd  %xmm9,%xmm12
mulsd  %xmm11,%xmm9
subsd  %xmm10,%xmm11
movapd %xmm11,%xmm13
mulsd  %xmm11,%xmm13
movapd %xmm12,%xmm14
mulsd  %xmm12,%xmm14
addsd  %xmm13,%xmm14
mulsd  %xmm8,%xmm10
subsd  %xmm10,%xmm9
movapd %xmm9,%xmm8
mulsd  %xmm9,%xmm8
mulsd  %xmm14,%xmm6
subsd  %xmm8,%xmm6
xorpd  %xmm7,%xmm7
ucomisd %xmm7,%xmm6
jae    11ff <line_in_circle+0xdf>
xor    %ebx,%ebx
mov    %ebx,%eax
add    $0x60,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret
movsd  %xmm14,0x48(%rsp)
movsd  %xmm0,0x8(%rsp)
movsd  %xmm1,0x10(%rsp)
movsd  %xmm4,0x18(%rsp)
movsd  %xmm2,0x20(%rsp)
movsd  %xmm3,0x28(%rsp)
movsd  %xmm5,0x50(%rsp)
movsd  %xmm9,0x58(%rsp)
movsd  %xmm12,0x40(%rsp)
movapd %xmm12,%xmm0
movsd  %xmm11,0x30(%rsp)
movsd  %xmm6,0x38(%rsp)
call   1030 <fabs@plt>
mov    %rax,%r14
movsd  0x30(%rsp),%xmm0
call   1030 <fabs@plt>
movsd  0x38(%rsp),%xmm0
mov    %rax,%r15
ucomisd 0xd9a(%rip),%xmm0
jb     1276 <line_in_circle+0x156>
sqrtsd %xmm0,%xmm0
jmp    127b <line_in_circle+0x15b>
call   1040 <sqrt@plt>
movsd  0x28(%rsp),%xmm12
movsd  0x20(%rsp),%xmm6
movsd  0x18(%rsp),%xmm8
movsd  0x10(%rsp),%xmm11
movsd  0x8(%rsp),%xmm9
cmp    %r15,%r14
movsd  0x58(%rsp),%xmm3
movsd  0x50(%rsp),%xmm4
movsd  0x48(%rsp),%xmm10
movsd  0x30(%rsp),%xmm7
movsd  0x40(%rsp),%xmm5
jle    133d <line_in_circle+0x21d>
mulsd  %xmm0,%xmm5
mulsd  %xmm7,%xmm3
movapd %xmm3,%xmm1
addsd  %xmm5,%xmm1
divsd  %xmm10,%xmm1
addsd  %xmm8,%xmm1
subsd  %xmm9,%xmm1
subsd  %xmm9,%xmm6
divsd  %xmm6,%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jbe    1305 <line_in_circle+0x1e5>
movsd  0xd05(%rip),%xmm2
ucomisd %xmm1,%xmm2
ja     11f3 <line_in_circle+0xd3>
subsd  %xmm5,%xmm3
divsd  %xmm10,%xmm3
addsd  %xmm8,%xmm3
subsd  %xmm9,%xmm3
divsd  %xmm6,%xmm3
ucomisd %xmm0,%xmm3
jbe    11f1 <line_in_circle+0xd1>
movsd  0xcd2(%rip),%xmm0
ucomisd %xmm3,%xmm0
ja     11f3 <line_in_circle+0xd3>
jmp    11f1 <line_in_circle+0xd1>
mulsd  %xmm0,%xmm7
mulsd  %xmm5,%xmm3
movapd %xmm3,%xmm0
addsd  %xmm7,%xmm0
divsd  %xmm10,%xmm0
movapd %xmm4,%xmm1
subsd  %xmm0,%xmm1
subsd  %xmm11,%xmm1
subsd  %xmm11,%xmm12
divsd  %xmm12,%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jbe    1385 <line_in_circle+0x265>
movsd  0xc85(%rip),%xmm2
ucomisd %xmm1,%xmm2
ja     11f3 <line_in_circle+0xd3>
subsd  %xmm7,%xmm3
divsd  %xmm10,%xmm3
subsd  %xmm3,%xmm4
subsd  %xmm11,%xmm4
divsd  %xmm12,%xmm4
ucomisd %xmm0,%xmm4
jbe    11f1 <line_in_circle+0xd1>
movsd  0xc52(%rip),%xmm0
ucomisd %xmm4,%xmm0
ja     11f3 <line_in_circle+0xd3>
jmp    11f1 <line_in_circle+0xd1>

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

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