; LLVM IR from wesley-a-leung/Resources :: Tests/C++/geometry/2d (ConvexPolygonFuzzTest)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.pt = type { x86_fp80, x86_fp80 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<pt, std::allocator<pt>>::_Vector_impl" }
%"struct.std::_Vector_base<pt, std::allocator<pt>>::_Vector_impl" = type { %"struct.std::_Vector_base<pt, std::allocator<pt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<pt, std::allocator<pt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Circle = type { %struct.pt, x86_fp80 }
%struct.Line = type { %struct.pt, x86_fp80 }
%class.anon.45 = type { i8 }
%"class.std::vector.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = type { %"struct.std::_Vector_base<std::pair<long double, int>, std::allocator<std::pair<long double, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<long double, int>, std::allocator<std::pair<long double, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<long double, int>, std::allocator<std::pair<long double, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<long double, int>, std::allocator<std::pair<long double, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list.40" = type { ptr, i64 }
%"struct.std::pair.41" = type <{ x86_fp80, i32, [12 x i8] }>
%"struct.std::pair.20" = type { i32, i32 }
%"class.std::allocator.37" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.43" = type { ptr }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<std::pair<Angle, int>, std::allocator<std::pair<Angle, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<Angle, int>, std::allocator<std::pair<Angle, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<Angle, int>, std::allocator<std::pair<Angle, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<Angle, int>, std::allocator<std::pair<Angle, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Angle = type { %struct.pt }
%class.anon.55 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.57" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.58" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.0" = type { ptr }
%"struct.std::pair.52" = type <{ %struct.Angle, i32, [12 x i8] }>

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z2ltee(x86_fp80 noundef, x86_fp80 noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z3sgne(x86_fp80 noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32), x86_fp80 noundef, x86_fp80 noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef x86_fp80 @_Z3dot2ptS_(ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef x86_fp80 @_Z5cross2ptS_(ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) #0

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK2ptmiES_(ptr dead_on_unwind noalias writable sret(%struct.pt) align 16, ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(32) ptr @_ZN2ptmIES_(ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef x86_fp80 @_Z5area22ptS_S_(ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z3ccw2ptS_S_(ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) #2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK2ptplES_(ptr dead_on_unwind noalias writable sret(%struct.pt) align 16, ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) #2 align 2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK2pteqES_(ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI2ptSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(16) ptr @_ZSt3minIeERKT_S2_S2_(ptr noundef nonnull align 16 dereferenceable(16), ptr noundef nonnull align 16 dereferenceable(16)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(16) ptr @_ZSt3maxIeERKT_S2_S2_(ptr noundef nonnull align 16 dereferenceable(16), ptr noundef nonnull align 16 dereferenceable(16)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z22circleLineIntersection6Circle4Line(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef byval(%struct.Circle) align 16, ptr noundef byval(%struct.Line) align 16) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z21circleSegIntersection6Circle2ptS0_(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef byval(%struct.Circle) align 16, ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK6Circle8containsE2pt(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef byval(%struct.pt) align 16) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef x86_fp80 @_Z31circleHalfPlaneIntersectionArea6Circle4Line(ptr noundef byval(%struct.Circle) align 16, ptr noundef byval(%struct.Line) align 16) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z24circleCircleIntersection6CircleS_RSt6vectorI2ptSaIS1_EE(ptr noundef byval(%struct.Circle) align 16, ptr noundef byval(%struct.Circle) align 16, ptr noundef nonnull align 8 dereferenceable(24)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI6CircleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5Angle8setPivotE2pt(ptr noundef byval(%struct.pt) align 16) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK6Circle8containsES_(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef byval(%struct.Circle) align 16) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z3modii(i32 noundef, i32 noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorI2ptSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorI2ptSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z11isInPolygonRKSt6vectorI2ptSaIS0_EES0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef byval(%struct.pt) align 16) #2

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIeiEC2IiiTnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS3_S4_EEclsr6_PCCFPIS3_S4_EE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS_IS3_S4_E(ptr noundef nonnull align 16 dereferenceable(20), ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaISt4pairIeiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIeiESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr, ptr) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIeiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(20) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorISt4pairIeiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIeiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef x86_fp80 @_Z22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca x86_fp80, align 16
  %8 = alloca %class.anon.45, align 1
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %struct.pt, align 16
  %13 = alloca %struct.pt, align 16
  %14 = alloca %struct.pt, align 16
  %15 = alloca %"class.std::vector.35", align 8
  %16 = alloca %"class.std::initializer_list.40", align 8
  %17 = alloca [2 x %"struct.std::pair.41"], align 16
  %18 = alloca %"struct.std::pair.20", align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %"struct.std::pair.20", align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::allocator.37", align 1
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca %struct.pt, align 16
  %30 = alloca %struct.pt, align 16
  %31 = alloca i32, align 4
  %32 = alloca %struct.pt, align 16
  %33 = alloca %struct.pt, align 16
  %34 = alloca %struct.pt, align 16
  %35 = alloca i32, align 4
  %36 = alloca %struct.pt, align 16
  %37 = alloca %struct.pt, align 16
  %38 = alloca %struct.pt, align 16
  %39 = alloca x86_fp80, align 16
  %40 = alloca %struct.pt, align 16
  %41 = alloca %struct.pt, align 16
  %42 = alloca %struct.pt, align 16
  %43 = alloca x86_fp80, align 16
  %44 = alloca %struct.pt, align 16
  %45 = alloca %struct.pt, align 16
  %46 = alloca %struct.pt, align 16
  %47 = alloca x86_fp80, align 16
  %48 = alloca i32, align 4
  %49 = alloca %struct.pt, align 16
  %50 = alloca %struct.pt, align 16
  %51 = alloca %struct.pt, align 16
  %52 = alloca %struct.pt, align 16
  %53 = alloca x86_fp80, align 16
  %54 = alloca %struct.pt, align 16
  %55 = alloca %struct.pt, align 16
  %56 = alloca %struct.pt, align 16
  %57 = alloca %struct.pt, align 16
  %58 = alloca i32, align 4
  %59 = alloca x86_fp80, align 16
  %60 = alloca %struct.pt, align 16
  %61 = alloca %struct.pt, align 16
  %62 = alloca %struct.pt, align 16
  %63 = alloca %struct.pt, align 16
  %64 = alloca i32, align 4
  %65 = alloca %struct.Line, align 16
  %66 = alloca %struct.pt, align 16
  %67 = alloca %struct.pt, align 16
  %68 = alloca i32, align 4
  %69 = alloca %"class.std::vector", align 8
  %70 = alloca %struct.Circle, align 16
  %71 = alloca %struct.Line, align 16
  %72 = alloca x86_fp80, align 16
  %73 = alloca %struct.pt, align 16
  %74 = alloca %struct.pt, align 16
  %75 = alloca %struct.pt, align 16
  %76 = alloca %struct.pt, align 16
  %77 = alloca i32, align 4
  %78 = alloca x86_fp80, align 16
  %79 = alloca %struct.pt, align 16
  %80 = alloca %struct.pt, align 16
  %81 = alloca %struct.pt, align 16
  %82 = alloca %struct.pt, align 16
  %83 = alloca i32, align 4
  %84 = alloca %"class.__gnu_cxx::__normal_iterator.43", align 8
  %85 = alloca %"class.__gnu_cxx::__normal_iterator.43", align 8
  %86 = alloca x86_fp80, align 16
  %87 = alloca ptr, align 8
  %88 = alloca %"class.__gnu_cxx::__normal_iterator.43", align 8
  %89 = alloca %"class.__gnu_cxx::__normal_iterator.43", align 8
  %90 = alloca ptr, align 8
  %91 = alloca x86_fp80, align 16
  %92 = alloca x86_fp80, align 16
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca %struct.pt, align 16
  %96 = alloca %struct.pt, align 16
  %97 = alloca i32, align 4
  %98 = alloca %"class.std::vector.47", align 8
  %99 = alloca %struct.pt, align 16
  %100 = alloca %struct.Angle, align 16
  %101 = alloca %struct.pt, align 16
  %102 = alloca %struct.pt, align 16
  %103 = alloca i32, align 4
  %104 = alloca %struct.Angle, align 16
  %105 = alloca %struct.pt, align 16
  %106 = alloca %struct.pt, align 16
  %107 = alloca i32, align 4
  %108 = alloca %struct.Angle, align 16
  %109 = alloca %struct.pt, align 16
  %110 = alloca i32, align 4
  %111 = alloca i8, align 1
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca %struct.Circle, align 16
  %115 = alloca %"class.std::vector", align 8
  %116 = alloca %struct.Circle, align 16
  %117 = alloca %struct.Circle, align 16
  %118 = alloca %struct.Angle, align 16
  %119 = alloca %struct.pt, align 16
  %120 = alloca %struct.Angle, align 16
  %121 = alloca %struct.pt, align 16
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  %124 = alloca %struct.Angle, align 16
  %125 = alloca %struct.Angle, align 16
  %126 = alloca %struct.pt, align 16
  %127 = alloca %struct.pt, align 16
  %128 = alloca i32, align 4
  %129 = alloca %struct.Angle, align 16
  %130 = alloca %struct.pt, align 16
  %131 = alloca i32, align 4
  %132 = alloca i32, align 4
  %133 = alloca %"class.std::vector.47", align 8
  %134 = alloca i8, align 1
  %135 = alloca i32, align 4
  %136 = alloca %struct.pt, align 16
  %137 = alloca %struct.pt, align 16
  %138 = alloca %struct.pt, align 16
  %139 = alloca i32, align 4
  %140 = alloca %struct.pt, align 16
  %141 = alloca i32, align 4
  %142 = alloca %struct.pt, align 16
  %143 = alloca %"class.std::vector", align 8
  %144 = alloca %struct.Circle, align 16
  %145 = alloca %struct.pt, align 16
  %146 = alloca %struct.pt, align 16
  %147 = alloca %struct.Angle, align 16
  %148 = alloca %struct.pt, align 16
  %149 = alloca i32, align 4
  %150 = alloca %struct.Angle, align 16
  %151 = alloca %struct.pt, align 16
  %152 = alloca i32, align 4
  %153 = alloca %struct.Angle, align 16
  %154 = alloca %struct.pt, align 16
  %155 = alloca i32, align 4
  %156 = alloca %struct.Angle, align 16
  %157 = alloca %struct.pt, align 16
  %158 = alloca i32, align 4
  %159 = alloca %class.anon.55, align 1
  %160 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %161 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %162 = alloca %class.anon.55, align 1
  %163 = alloca %struct.Angle, align 16
  %164 = alloca %struct.pt, align 16
  %165 = alloca %struct.pt, align 16
  %166 = alloca i32, align 4
  %167 = alloca %struct.Angle, align 16
  %168 = alloca %struct.pt, align 16
  %169 = alloca i32, align 4
  %170 = alloca %"class.__gnu_cxx::__normal_iterator.58", align 8
  %171 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %172 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %173 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %174 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %175 = alloca %struct.pt, align 16
  %176 = alloca ptr, align 8
  %177 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8
  %178 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8
  %179 = alloca ptr, align 8
  %180 = alloca %struct.pt, align 16
  %181 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %182 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %183 = alloca ptr, align 8
  %184 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %185 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %186 = alloca ptr, align 8
  %187 = alloca %struct.pt, align 16
  %188 = alloca %struct.pt, align 16
  %189 = alloca i32, align 4
  %190 = alloca i32, align 4
  %191 = alloca %struct.pt, align 16
  %192 = alloca %struct.pt, align 16
  %193 = alloca %struct.pt, align 16
  %194 = alloca %struct.pt, align 16
  %195 = alloca %struct.pt, align 16
  %196 = alloca %struct.Circle, align 16
  %197 = alloca %struct.Line, align 16
  %198 = alloca %struct.pt, align 16
  %199 = alloca %struct.pt, align 16
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  %200 = load ptr, ptr %3, align 8, !tbaa !5
  %201 = call noundef i64 @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %200) #6
  %202 = trunc i64 %201 to i32
  store i32 %202, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = call noundef i64 @_ZNKSt6vectorI6CircleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %203) #6
  %205 = trunc i64 %204 to i32
  store i32 %205, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #6
  store x86_fp80 0xK00000000000000000000, ptr %7, align 16, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %576, %2
  %207 = load i32, ptr %9, align 4, !tbaa !9
  %208 = load i32, ptr %5, align 4, !tbaa !9
  %209 = icmp slt i32 %207, %208
  br i1 %209, label %211, label %210

210:                                              ; preds = %206
  store i32 2, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %579

211:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %212

212:                                              ; preds = %569, %211
  %213 = load i32, ptr %11, align 4, !tbaa !9
  %214 = load ptr, ptr %3, align 8, !tbaa !5
  %215 = load i32, ptr %9, align 4, !tbaa !9
  %216 = sext i32 %215 to i64
  %217 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %214, i64 noundef %216) #6
  %218 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %217) #6
  %219 = trunc i64 %218 to i32
  %220 = icmp slt i32 %213, %219
  br i1 %220, label %222, label %221

221:                                              ; preds = %212
  store i32 5, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  br label %575

222:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #6
  %223 = load ptr, ptr %3, align 8, !tbaa !5
  %224 = load i32, ptr %9, align 4, !tbaa !9
  %225 = sext i32 %224 to i64
  %226 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %223, i64 noundef %225) #6
  %227 = load i32, ptr %11, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %226, i64 noundef %228) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %12, ptr align 16 %229, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #6
  %230 = load ptr, ptr %3, align 8, !tbaa !5
  %231 = load i32, ptr %9, align 4, !tbaa !9
  %232 = sext i32 %231 to i64
  %233 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %230, i64 noundef %232) #6
  %234 = load i32, ptr %11, align 4, !tbaa !9
  %235 = add nsw i32 %234, 1
  %236 = load ptr, ptr %3, align 8, !tbaa !5
  %237 = load i32, ptr %9, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %236, i64 noundef %238) #6
  %240 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %239) #6
  %241 = trunc i64 %240 to i32
  %242 = call noundef i32 @_Z3modii(i32 noundef %235, i32 noundef %241)
  %243 = sext i32 %242 to i64
  %244 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %233, i64 noundef %243) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %13, ptr align 16 %244, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %14, ptr align 16 %13, i64 32, i1 false), !tbaa.struct !13
  %245 = call noundef zeroext i1 @_ZNK2pteqES_(ptr noundef nonnull align 16 dereferenceable(32) %12, ptr noundef byval(%struct.pt) align 16 %14)
  br i1 %245, label %246, label %247

246:                                              ; preds = %222
  store i32 7, ptr %10, align 4
  br label %566

247:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  store i32 0, ptr %20, align 4, !tbaa !9
  %248 = call i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %20)
  store i64 %248, ptr %18, align 4
  call void @_ZNSt4pairIeiEC2IiiTnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS3_S4_EEclsr6_PCCFPIS3_S4_EE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS_IS3_S4_E(ptr noundef nonnull align 16 dereferenceable(20) %17, ptr noundef nonnull align 4 dereferenceable(8) %18)
  %249 = getelementptr inbounds %"struct.std::pair.41", ptr %17, i64 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 1, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 0, ptr %23, align 4, !tbaa !9
  %250 = call i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
  store i64 %250, ptr %21, align 4
  call void @_ZNSt4pairIeiEC2IiiTnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS3_S4_EEclsr6_PCCFPIS3_S4_EE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS_IS3_S4_E(ptr noundef nonnull align 16 dereferenceable(20) %249, ptr noundef nonnull align 4 dereferenceable(8) %21)
  %251 = getelementptr inbounds %"class.std::initializer_list.40", ptr %16, i32 0, i32 0
  store ptr %17, ptr %251, align 8, !tbaa !14
  %252 = getelementptr inbounds %"class.std::initializer_list.40", ptr %16, i32 0, i32 1
  store i64 2, ptr %252, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  call void @_ZNSaISt4pairIeiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  %253 = getelementptr inbounds { ptr, i64 }, ptr %16, i32 0, i32 0
  %254 = load ptr, ptr %253, align 8
  %255 = getelementptr inbounds { ptr, i64 }, ptr %16, i32 0, i32 1
  %256 = load i64, ptr %255, align 8
  invoke void @_ZNSt6vectorISt4pairIeiESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr %254, i64 %256, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %257 unwind label %263

257:                                              ; preds = %247
  call void @_ZNSt15__new_allocatorISt4pairIeiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %413, %257
  %259 = load i32, ptr %27, align 4, !tbaa !9
  %260 = load i32, ptr %5, align 4, !tbaa !9
  %261 = icmp slt i32 %259, %260
  br i1 %261, label %267, label %262

262:                                              ; preds = %258
  store i32 8, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %416

263:                                              ; preds = %247
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %25, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %26, align 4
  call void @_ZNSt15__new_allocatorISt4pairIeiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #6
  br label %574

267:                                              ; preds = %258
  %268 = load i32, ptr %9, align 4, !tbaa !9
  %269 = load i32, ptr %27, align 4, !tbaa !9
  %270 = icmp ne i32 %268, %269
  br i1 %270, label %271, label %412

271:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %272

272:                                              ; preds = %406, %271
  %273 = load i32, ptr %28, align 4, !tbaa !9
  %274 = load ptr, ptr %3, align 8, !tbaa !5
  %275 = load i32, ptr %27, align 4, !tbaa !9
  %276 = sext i32 %275 to i64
  %277 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %274, i64 noundef %276) #6
  %278 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %277) #6
  %279 = trunc i64 %278 to i32
  %280 = icmp slt i32 %273, %279
  br i1 %280, label %282, label %281

281:                                              ; preds = %272
  store i32 11, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %411

282:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #6
  %283 = load ptr, ptr %3, align 8, !tbaa !5
  %284 = load i32, ptr %27, align 4, !tbaa !9
  %285 = sext i32 %284 to i64
  %286 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %283, i64 noundef %285) #6
  %287 = load i32, ptr %28, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %286, i64 noundef %288) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %29, ptr align 16 %289, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #6
  %290 = load ptr, ptr %3, align 8, !tbaa !5
  %291 = load i32, ptr %27, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %290, i64 noundef %292) #6
  %294 = load i32, ptr %28, align 4, !tbaa !9
  %295 = add nsw i32 %294, 1
  %296 = load ptr, ptr %3, align 8, !tbaa !5
  %297 = load i32, ptr %27, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %296, i64 noundef %298) #6
  %300 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %299) #6
  %301 = trunc i64 %300 to i32
  %302 = call noundef i32 @_Z3modii(i32 noundef %295, i32 noundef %301)
  %303 = sext i32 %302 to i64
  %304 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %293, i64 noundef %303) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %30, ptr align 16 %304, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %32, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %33, ptr align 16 %13, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %34, ptr align 16 %29, i64 32, i1 false), !tbaa.struct !13
  %305 = invoke noundef i32 @_Z3ccw2ptS_S_(ptr noundef byval(%struct.pt) align 16 %32, ptr noundef byval(%struct.pt) align 16 %33, ptr noundef byval(%struct.pt) align 16 %34)
          to label %306 unwind label %334

306:                                              ; preds = %282
  store i32 %305, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %36, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %37, ptr align 16 %13, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %38, ptr align 16 %30, i64 32, i1 false), !tbaa.struct !13
  %307 = invoke noundef i32 @_Z3ccw2ptS_S_(ptr noundef byval(%struct.pt) align 16 %36, ptr noundef byval(%struct.pt) align 16 %37, ptr noundef byval(%struct.pt) align 16 %38)
          to label %308 unwind label %338

308:                                              ; preds = %306
  store i32 %307, ptr %35, align 4, !tbaa !9
  %309 = load i32, ptr %31, align 4, !tbaa !9
  %310 = load i32, ptr %35, align 4, !tbaa !9
  %311 = icmp ne i32 %309, %310
  br i1 %311, label %312, label %357

312:                                              ; preds = %308
  %313 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %314 unwind label %338

314:                                              ; preds = %312
  %315 = load i32, ptr %313, align 4, !tbaa !9
  %316 = icmp slt i32 %315, 0
  br i1 %316, label %317, label %356

317:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %40, ptr align 16 %29, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %41, ptr align 16 %30, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %42, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  %318 = invoke noundef x86_fp80 @_Z5area22ptS_S_(ptr noundef byval(%struct.pt) align 16 %40, ptr noundef byval(%struct.pt) align 16 %41, ptr noundef byval(%struct.pt) align 16 %42)
          to label %319 unwind label %342

319:                                              ; preds = %317
  store x86_fp80 %318, ptr %39, align 16, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %44, ptr align 16 %29, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %45, ptr align 16 %30, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %46, ptr align 16 %13, i64 32, i1 false), !tbaa.struct !13
  %320 = invoke noundef x86_fp80 @_Z5area22ptS_S_(ptr noundef byval(%struct.pt) align 16 %44, ptr noundef byval(%struct.pt) align 16 %45, ptr noundef byval(%struct.pt) align 16 %46)
          to label %321 unwind label %346

321:                                              ; preds = %319
  store x86_fp80 %320, ptr %43, align 16, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #6
  %322 = load x86_fp80, ptr %39, align 16, !tbaa !11
  %323 = load x86_fp80, ptr %39, align 16, !tbaa !11
  %324 = load x86_fp80, ptr %43, align 16, !tbaa !11
  %325 = fsub x86_fp80 %323, %324
  %326 = fdiv x86_fp80 %322, %325
  store x86_fp80 %326, ptr %47, align 16, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  %327 = load i32, ptr %31, align 4, !tbaa !9
  %328 = load i32, ptr %35, align 4, !tbaa !9
  %329 = sub nsw i32 %327, %328
  %330 = sitofp i32 %329 to x86_fp80
  %331 = call noundef i32 @_Z3sgne(x86_fp80 noundef %330)
  store i32 %331, ptr %48, align 4, !tbaa !9
  %332 = invoke noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 16 dereferenceable(16) %47, ptr noundef nonnull align 4 dereferenceable(4) %48)
          to label %333 unwind label %350

333:                                              ; preds = %321
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #6
  br label %356

334:                                              ; preds = %282
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %25, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %26, align 4
  br label %410

338:                                              ; preds = %368, %367, %312, %306
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %25, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %26, align 4
  br label %409

342:                                              ; preds = %317
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %25, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %26, align 4
  br label %355

346:                                              ; preds = %319
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %25, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %26, align 4
  br label %354

350:                                              ; preds = %321
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %25, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #6
  br label %354

354:                                              ; preds = %350, %346
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #6
  br label %355

355:                                              ; preds = %354, %342
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #6
  br label %409

356:                                              ; preds = %333, %314
  br label %405

357:                                              ; preds = %308
  %358 = load i32, ptr %27, align 4, !tbaa !9
  %359 = load i32, ptr %9, align 4, !tbaa !9
  %360 = icmp slt i32 %358, %359
  br i1 %360, label %361, label %404

361:                                              ; preds = %357
  %362 = load i32, ptr %31, align 4, !tbaa !9
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %404, label %364

364:                                              ; preds = %361
  %365 = load i32, ptr %35, align 4, !tbaa !9
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %404, label %367

367:                                              ; preds = %364
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %50, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %49, ptr noundef nonnull align 16 dereferenceable(32) %13, ptr noundef byval(%struct.pt) align 16 %50)
          to label %368 unwind label %338

368:                                              ; preds = %367
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %52, ptr align 16 %29, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %51, ptr noundef nonnull align 16 dereferenceable(32) %30, ptr noundef byval(%struct.pt) align 16 %52)
          to label %369 unwind label %338

369:                                              ; preds = %368
  %370 = call noundef x86_fp80 @_Z3dot2ptS_(ptr noundef byval(%struct.pt) align 16 %49, ptr noundef byval(%struct.pt) align 16 %51)
  %371 = call noundef i32 @_Z3sgne(x86_fp80 noundef %370)
  %372 = icmp sgt i32 %371, 0
  br i1 %372, label %373, label %404

373:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %55, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %54, ptr noundef nonnull align 16 dereferenceable(32) %29, ptr noundef byval(%struct.pt) align 16 %55)
          to label %374 unwind label %386

374:                                              ; preds = %373
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %57, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %56, ptr noundef nonnull align 16 dereferenceable(32) %13, ptr noundef byval(%struct.pt) align 16 %57)
          to label %375 unwind label %386

375:                                              ; preds = %374
  %376 = invoke noundef x86_fp80 @"_ZZ22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EEENK3$_0clES0_S0_"(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr noundef byval(%struct.pt) align 16 %54, ptr noundef byval(%struct.pt) align 16 %56)
          to label %377 unwind label %386

377:                                              ; preds = %375
  store x86_fp80 %376, ptr %53, align 16, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  store i32 1, ptr %58, align 4, !tbaa !9
  %378 = invoke noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 16 dereferenceable(16) %53, ptr noundef nonnull align 4 dereferenceable(4) %58)
          to label %379 unwind label %390

379:                                              ; preds = %377
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %61, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %60, ptr noundef nonnull align 16 dereferenceable(32) %30, ptr noundef byval(%struct.pt) align 16 %61)
          to label %380 unwind label %395

380:                                              ; preds = %379
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %63, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %62, ptr noundef nonnull align 16 dereferenceable(32) %13, ptr noundef byval(%struct.pt) align 16 %63)
          to label %381 unwind label %395

381:                                              ; preds = %380
  %382 = invoke noundef x86_fp80 @"_ZZ22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EEENK3$_0clES0_S0_"(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr noundef byval(%struct.pt) align 16 %60, ptr noundef byval(%struct.pt) align 16 %62)
          to label %383 unwind label %395

383:                                              ; preds = %381
  store x86_fp80 %382, ptr %59, align 16, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  store i32 -1, ptr %64, align 4, !tbaa !9
  %384 = invoke noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 16 dereferenceable(16) %59, ptr noundef nonnull align 4 dereferenceable(4) %64)
          to label %385 unwind label %399

385:                                              ; preds = %383
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  br label %404

386:                                              ; preds = %375, %374, %373
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %25, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %26, align 4
  br label %394

390:                                              ; preds = %377
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %25, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  br label %394

394:                                              ; preds = %390, %386
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #6
  br label %409

395:                                              ; preds = %381, %380, %379
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %25, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %26, align 4
  br label %403

399:                                              ; preds = %383
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %25, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  br label %403

403:                                              ; preds = %399, %395
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  br label %409

404:                                              ; preds = %385, %369, %364, %361, %357
  br label %405

405:                                              ; preds = %404, %356
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  br label %406

406:                                              ; preds = %405
  %407 = load i32, ptr %28, align 4, !tbaa !9
  %408 = add nsw i32 %407, 1
  store i32 %408, ptr %28, align 4, !tbaa !9
  br label %272, !llvm.loop !18

409:                                              ; preds = %403, %394, %355, %338
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %410

410:                                              ; preds = %409, %334
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %573

411:                                              ; preds = %281
  br label %412

412:                                              ; preds = %411, %267
  br label %413

413:                                              ; preds = %412
  %414 = load i32, ptr %27, align 4, !tbaa !9
  %415 = add nsw i32 %414, 1
  store i32 %415, ptr %27, align 4, !tbaa !9
  br label %258, !llvm.loop !20

416:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 48, ptr %65) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %66, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %67, ptr align 16 %13, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %65, ptr noundef byval(%struct.pt) align 16 %66, ptr noundef byval(%struct.pt) align 16 %67)
          to label %417 unwind label %423

417:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  store i32 0, ptr %68, align 4, !tbaa !9
  br label %418

418:                                              ; preds = %474, %417
  %419 = load i32, ptr %68, align 4, !tbaa !9
  %420 = load i32, ptr %6, align 4, !tbaa !9
  %421 = icmp slt i32 %419, %420
  br i1 %421, label %427, label %422

422:                                              ; preds = %418
  store i32 14, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  br label %479

423:                                              ; preds = %479, %416
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %25, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %26, align 4
  br label %572

427:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 24, ptr %69) #6
  %428 = load ptr, ptr %4, align 8, !tbaa !5
  %429 = load i32, ptr %68, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %428, i64 noundef %430) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %70, ptr align 16 %431, i64 48, i1 false), !tbaa.struct !21
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %71, ptr align 16 %65, i64 48, i1 false), !tbaa.struct !21
  invoke void @_Z22circleLineIntersection6Circle4Line(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %69, ptr noundef byval(%struct.Circle) align 16 %70, ptr noundef byval(%struct.Line) align 16 %71)
          to label %432 unwind label %451

432:                                              ; preds = %427
  %433 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #6
  %434 = trunc i64 %433 to i32
  %435 = icmp eq i32 %434, 2
  br i1 %435, label %436, label %473

436:                                              ; preds = %432
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #6
  %437 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef 0) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %74, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %73, ptr noundef nonnull align 16 dereferenceable(32) %437, ptr noundef byval(%struct.pt) align 16 %74)
          to label %438 unwind label %455

438:                                              ; preds = %436
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %76, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %75, ptr noundef nonnull align 16 dereferenceable(32) %13, ptr noundef byval(%struct.pt) align 16 %76)
          to label %439 unwind label %455

439:                                              ; preds = %438
  %440 = invoke noundef x86_fp80 @"_ZZ22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EEENK3$_0clES0_S0_"(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr noundef byval(%struct.pt) align 16 %73, ptr noundef byval(%struct.pt) align 16 %75)
          to label %441 unwind label %455

441:                                              ; preds = %439
  store x86_fp80 %440, ptr %72, align 16, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #6
  store i32 1, ptr %77, align 4, !tbaa !9
  %442 = invoke noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 16 dereferenceable(16) %72, ptr noundef nonnull align 4 dereferenceable(4) %77)
          to label %443 unwind label %459

443:                                              ; preds = %441
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #6
  %444 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef 1) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %80, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %79, ptr noundef nonnull align 16 dereferenceable(32) %444, ptr noundef byval(%struct.pt) align 16 %80)
          to label %445 unwind label %464

445:                                              ; preds = %443
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %82, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %81, ptr noundef nonnull align 16 dereferenceable(32) %13, ptr noundef byval(%struct.pt) align 16 %82)
          to label %446 unwind label %464

446:                                              ; preds = %445
  %447 = invoke noundef x86_fp80 @"_ZZ22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EEENK3$_0clES0_S0_"(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr noundef byval(%struct.pt) align 16 %79, ptr noundef byval(%struct.pt) align 16 %81)
          to label %448 unwind label %464

448:                                              ; preds = %446
  store x86_fp80 %447, ptr %78, align 16, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #6
  store i32 -1, ptr %83, align 4, !tbaa !9
  %449 = invoke noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 16 dereferenceable(16) %78, ptr noundef nonnull align 4 dereferenceable(4) %83)
          to label %450 unwind label %468

450:                                              ; preds = %448
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #6
  br label %473

451:                                              ; preds = %427
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %25, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %26, align 4
  br label %478

455:                                              ; preds = %439, %438, %436
  %456 = landingpad { ptr, i32 }
          cleanup
  %457 = extractvalue { ptr, i32 } %456, 0
  store ptr %457, ptr %25, align 8
  %458 = extractvalue { ptr, i32 } %456, 1
  store i32 %458, ptr %26, align 4
  br label %463

459:                                              ; preds = %441
  %460 = landingpad { ptr, i32 }
          cleanup
  %461 = extractvalue { ptr, i32 } %460, 0
  store ptr %461, ptr %25, align 8
  %462 = extractvalue { ptr, i32 } %460, 1
  store i32 %462, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  br label %463

463:                                              ; preds = %459, %455
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #6
  br label %477

464:                                              ; preds = %446, %445, %443
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %25, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %26, align 4
  br label %472

468:                                              ; preds = %448
  %469 = landingpad { ptr, i32 }
          cleanup
  %470 = extractvalue { ptr, i32 } %469, 0
  store ptr %470, ptr %25, align 8
  %471 = extractvalue { ptr, i32 } %469, 1
  store i32 %471, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  br label %472

472:                                              ; preds = %468, %464
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #6
  br label %477

473:                                              ; preds = %450, %432
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #6
  br label %474

474:                                              ; preds = %473
  %475 = load i32, ptr %68, align 4, !tbaa !9
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %68, align 4, !tbaa !9
  br label %418, !llvm.loop !22

477:                                              ; preds = %472, %463
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #6
  br label %478

478:                                              ; preds = %477, %451
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  br label %572

479:                                              ; preds = %422
  %480 = call ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  %481 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.43", ptr %84, i32 0, i32 0
  store ptr %480, ptr %481, align 8
  %482 = call ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  %483 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.43", ptr %85, i32 0, i32 0
  store ptr %482, ptr %483, align 8
  %484 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.43", ptr %84, i32 0, i32 0
  %485 = load ptr, ptr %484, align 8
  %486 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.43", ptr %85, i32 0, i32 0
  %487 = load ptr, ptr %486, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %485, ptr %487)
          to label %488 unwind label %423

488:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #6
  store x86_fp80 0xK00000000000000000000, ptr %86, align 16, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #6
  store ptr %15, ptr %87, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #6
  %489 = load ptr, ptr %87, align 8, !tbaa !5
  %490 = call ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %489) #6
  %491 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.43", ptr %88, i32 0, i32 0
  store ptr %490, ptr %491, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #6
  %492 = load ptr, ptr %87, align 8, !tbaa !5
  %493 = call ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %492) #6
  %494 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.43", ptr %89, i32 0, i32 0
  store ptr %493, ptr %494, align 8
  br label %495

495:                                              ; preds = %509, %488
  %496 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIeiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull align 8 dereferenceable(8) %89) #6
  br i1 %496, label %498, label %497

497:                                              ; preds = %495
  store i32 17, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #6
  br label %520

498:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #6
  %499 = call noundef nonnull align 16 dereferenceable(20) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %88) #6
  store ptr %499, ptr %90, align 8, !tbaa !5
  %500 = load ptr, ptr %90, align 8, !tbaa !5
  %501 = getelementptr inbounds %"struct.std::pair.41", ptr %500, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #6
  store x86_fp80 0xK00000000000000000000, ptr %91, align 16, !tbaa !11
  %502 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZSt3maxIeERKT_S2_S2_(ptr noundef nonnull align 16 dereferenceable(16) %501, ptr noundef nonnull align 16 dereferenceable(16) %91)
          to label %503 unwind label %511

503:                                              ; preds = %498
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #6
  store x86_fp80 0xK3FFF8000000000000000, ptr %92, align 16, !tbaa !11
  %504 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZSt3minIeERKT_S2_S2_(ptr noundef nonnull align 16 dereferenceable(16) %502, ptr noundef nonnull align 16 dereferenceable(16) %92)
          to label %505 unwind label %515

505:                                              ; preds = %503
  %506 = load x86_fp80, ptr %504, align 16, !tbaa !11
  %507 = load ptr, ptr %90, align 8, !tbaa !5
  %508 = getelementptr inbounds %"struct.std::pair.41", ptr %507, i32 0, i32 0
  store x86_fp80 %506, ptr %508, align 16, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #6
  br label %509

509:                                              ; preds = %505
  %510 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %88) #6
  br label %495

511:                                              ; preds = %498
  %512 = landingpad { ptr, i32 }
          cleanup
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %25, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %26, align 4
  br label %519

515:                                              ; preds = %503
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %25, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #6
  br label %519

519:                                              ; preds = %515, %511
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #6
  br label %572

520:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #6
  store i32 1, ptr %93, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #6
  %521 = call noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 0) #6
  %522 = getelementptr inbounds %"struct.std::pair.41", ptr %521, i32 0, i32 1
  %523 = load i32, ptr %522, align 16, !tbaa !25
  store i32 %523, ptr %94, align 4, !tbaa !9
  br label %524

524:                                              ; preds = %556, %520
  %525 = load i32, ptr %93, align 4, !tbaa !9
  %526 = call noundef i64 @_ZNKSt6vectorISt4pairIeiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  %527 = trunc i64 %526 to i32
  %528 = icmp slt i32 %525, %527
  br i1 %528, label %530, label %529

529:                                              ; preds = %524
  store i32 19, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #6
  br label %559

530:                                              ; preds = %524
  %531 = load i32, ptr %94, align 4, !tbaa !9
  %532 = icmp ne i32 %531, 0
  br i1 %532, label %548, label %533

533:                                              ; preds = %530
  %534 = load i32, ptr %93, align 4, !tbaa !9
  %535 = sext i32 %534 to i64
  %536 = call noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %535) #6
  %537 = getelementptr inbounds %"struct.std::pair.41", ptr %536, i32 0, i32 0
  %538 = load x86_fp80, ptr %537, align 16, !tbaa !23
  %539 = load i32, ptr %93, align 4, !tbaa !9
  %540 = sub nsw i32 %539, 1
  %541 = sext i32 %540 to i64
  %542 = call noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %541) #6
  %543 = getelementptr inbounds %"struct.std::pair.41", ptr %542, i32 0, i32 0
  %544 = load x86_fp80, ptr %543, align 16, !tbaa !23
  %545 = fsub x86_fp80 %538, %544
  %546 = load x86_fp80, ptr %86, align 16, !tbaa !11
  %547 = fadd x86_fp80 %546, %545
  store x86_fp80 %547, ptr %86, align 16, !tbaa !11
  br label %548

548:                                              ; preds = %533, %530
  %549 = load i32, ptr %93, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = call noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %550) #6
  %552 = getelementptr inbounds %"struct.std::pair.41", ptr %551, i32 0, i32 1
  %553 = load i32, ptr %552, align 16, !tbaa !25
  %554 = load i32, ptr %94, align 4, !tbaa !9
  %555 = add nsw i32 %554, %553
  store i32 %555, ptr %94, align 4, !tbaa !9
  br label %556

556:                                              ; preds = %548
  %557 = load i32, ptr %93, align 4, !tbaa !9
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %93, align 4, !tbaa !9
  br label %524, !llvm.loop !26

559:                                              ; preds = %529
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %95, ptr align 16 %12, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %96, ptr align 16 %13, i64 32, i1 false), !tbaa.struct !13
  %560 = call noundef x86_fp80 @_Z5cross2ptS_(ptr noundef byval(%struct.pt) align 16 %95, ptr noundef byval(%struct.pt) align 16 %96)
  %561 = load x86_fp80, ptr %86, align 16, !tbaa !11
  %562 = fmul x86_fp80 %560, %561
  %563 = fdiv x86_fp80 %562, 0xK40008000000000000000
  %564 = load x86_fp80, ptr %7, align 16, !tbaa !11
  %565 = fadd x86_fp80 %564, %563
  store x86_fp80 %565, ptr %7, align 16, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %65) #6
  call void @_ZNSt6vectorISt4pairIeiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #6
  store i32 0, ptr %10, align 4
  br label %566

566:                                              ; preds = %559, %246
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #6
  %567 = load i32, ptr %10, align 4
  switch i32 %567, label %1282 [
    i32 0, label %568
    i32 7, label %569
  ]

568:                                              ; preds = %566
  br label %569

569:                                              ; preds = %568, %566
  %570 = load i32, ptr %11, align 4, !tbaa !9
  %571 = add nsw i32 %570, 1
  store i32 %571, ptr %11, align 4, !tbaa !9
  br label %212, !llvm.loop !27

572:                                              ; preds = %519, %478, %423
  call void @llvm.lifetime.end.p0(i64 48, ptr %65) #6
  br label %573

573:                                              ; preds = %572, %410
  call void @_ZNSt6vectorISt4pairIeiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  br label %574

574:                                              ; preds = %573, %263
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %1276

575:                                              ; preds = %221
  br label %576

576:                                              ; preds = %575
  %577 = load i32, ptr %9, align 4, !tbaa !9
  %578 = add nsw i32 %577, 1
  store i32 %578, ptr %9, align 4, !tbaa !9
  br label %206, !llvm.loop !28

579:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #6
  store i32 0, ptr %97, align 4, !tbaa !9
  br label %580

580:                                              ; preds = %1269, %579
  %581 = load i32, ptr %97, align 4, !tbaa !9
  %582 = load i32, ptr %6, align 4, !tbaa !9
  %583 = icmp slt i32 %581, %582
  br i1 %583, label %585, label %584

584:                                              ; preds = %580
  store i32 22, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #6
  br label %1274

585:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 24, ptr %98) #6
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #6
  %586 = load ptr, ptr %4, align 8, !tbaa !5
  %587 = load i32, ptr %97, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %586, i64 noundef %588) #6
  %590 = getelementptr inbounds %struct.Circle, ptr %589, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %99, ptr align 16 %590, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN5Angle8setPivotE2pt(ptr noundef byval(%struct.pt) align 16 %99)
          to label %591 unwind label %637

591:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #6
  %592 = load ptr, ptr %4, align 8, !tbaa !5
  %593 = load i32, ptr %97, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %592, i64 noundef %594) #6
  %596 = getelementptr inbounds %struct.Circle, ptr %595, i32 0, i32 0
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = load i32, ptr %97, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %597, i64 noundef %599) #6
  %601 = getelementptr inbounds %struct.Circle, ptr %600, i32 0, i32 1
  %602 = load x86_fp80, ptr %601, align 16, !tbaa !29
  invoke void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32) %102, x86_fp80 noundef %602, x86_fp80 noundef 0xK00000000000000000000)
          to label %603 unwind label %641

603:                                              ; preds = %591
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %101, ptr noundef nonnull align 16 dereferenceable(32) %596, ptr noundef byval(%struct.pt) align 16 %102)
          to label %604 unwind label %641

604:                                              ; preds = %603
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %100, ptr noundef byval(%struct.pt) align 16 %101)
          to label %605 unwind label %641

605:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #6
  store i32 0, ptr %103, align 4, !tbaa !9
  %606 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 16 dereferenceable(32) %100, ptr noundef nonnull align 4 dereferenceable(4) %103)
          to label %607 unwind label %645

607:                                              ; preds = %605
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #6
  %608 = load ptr, ptr %4, align 8, !tbaa !5
  %609 = load i32, ptr %97, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %608, i64 noundef %610) #6
  %612 = getelementptr inbounds %struct.Circle, ptr %611, i32 0, i32 0
  %613 = load ptr, ptr %4, align 8, !tbaa !5
  %614 = load i32, ptr %97, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %613, i64 noundef %615) #6
  %617 = getelementptr inbounds %struct.Circle, ptr %616, i32 0, i32 1
  %618 = load x86_fp80, ptr %617, align 16, !tbaa !29
  invoke void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32) %106, x86_fp80 noundef %618, x86_fp80 noundef 0xK00000000000000000000)
          to label %619 unwind label %650

619:                                              ; preds = %607
  invoke void @_ZNK2ptplES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %105, ptr noundef nonnull align 16 dereferenceable(32) %612, ptr noundef byval(%struct.pt) align 16 %106)
          to label %620 unwind label %650

620:                                              ; preds = %619
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %104, ptr noundef byval(%struct.pt) align 16 %105)
          to label %621 unwind label %650

621:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #6
  store i32 0, ptr %107, align 4, !tbaa !9
  %622 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 16 dereferenceable(32) %104, ptr noundef nonnull align 4 dereferenceable(4) %107)
          to label %623 unwind label %654

623:                                              ; preds = %621
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %108) #6
  %624 = load ptr, ptr %4, align 8, !tbaa !5
  %625 = load i32, ptr %97, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %624, i64 noundef %626) #6
  %628 = getelementptr inbounds %struct.Circle, ptr %627, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %109, ptr align 16 %628, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %108, ptr noundef byval(%struct.pt) align 16 %109)
          to label %629 unwind label %659

629:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #6
  store i32 0, ptr %110, align 4, !tbaa !9
  %630 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 16 dereferenceable(32) %108, ptr noundef nonnull align 4 dereferenceable(4) %110)
          to label %631 unwind label %663

631:                                              ; preds = %629
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #6
  store i8 0, ptr %111, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #6
  store i32 0, ptr %112, align 4, !tbaa !9
  br label %632

632:                                              ; preds = %809, %631
  %633 = load i32, ptr %112, align 4, !tbaa !9
  %634 = load i32, ptr %6, align 4, !tbaa !9
  %635 = icmp slt i32 %633, %634
  br i1 %635, label %668, label %636

636:                                              ; preds = %632
  store i32 25, ptr %10, align 4
  br label %812

637:                                              ; preds = %585
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %25, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %26, align 4
  br label %1273

641:                                              ; preds = %604, %603, %591
  %642 = landingpad { ptr, i32 }
          cleanup
  %643 = extractvalue { ptr, i32 } %642, 0
  store ptr %643, ptr %25, align 8
  %644 = extractvalue { ptr, i32 } %642, 1
  store i32 %644, ptr %26, align 4
  br label %649

645:                                              ; preds = %605
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %25, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #6
  br label %649

649:                                              ; preds = %645, %641
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #6
  br label %1273

650:                                              ; preds = %620, %619, %607
  %651 = landingpad { ptr, i32 }
          cleanup
  %652 = extractvalue { ptr, i32 } %651, 0
  store ptr %652, ptr %25, align 8
  %653 = extractvalue { ptr, i32 } %651, 1
  store i32 %653, ptr %26, align 4
  br label %658

654:                                              ; preds = %621
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %25, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #6
  br label %658

658:                                              ; preds = %654, %650
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #6
  br label %1273

659:                                              ; preds = %623
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %25, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %26, align 4
  br label %667

663:                                              ; preds = %629
  %664 = landingpad { ptr, i32 }
          cleanup
  %665 = extractvalue { ptr, i32 } %664, 0
  store ptr %665, ptr %25, align 8
  %666 = extractvalue { ptr, i32 } %664, 1
  store i32 %666, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #6
  br label %667

667:                                              ; preds = %663, %659
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #6
  br label %1273

668:                                              ; preds = %632
  %669 = load i32, ptr %97, align 4, !tbaa !9
  %670 = load i32, ptr %112, align 4, !tbaa !9
  %671 = icmp ne i32 %669, %670
  br i1 %671, label %672, label %808

672:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #6
  %673 = load ptr, ptr %4, align 8, !tbaa !5
  %674 = load i32, ptr %112, align 4, !tbaa !9
  %675 = sext i32 %674 to i64
  %676 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %673, i64 noundef %675) #6
  %677 = load ptr, ptr %4, align 8, !tbaa !5
  %678 = load i32, ptr %97, align 4, !tbaa !9
  %679 = sext i32 %678 to i64
  %680 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %677, i64 noundef %679) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %114, ptr align 16 %680, i64 48, i1 false), !tbaa.struct !21
  %681 = invoke noundef i32 @_ZNK6Circle8containsES_(ptr noundef nonnull align 16 dereferenceable(48) %676, ptr noundef byval(%struct.Circle) align 16 %114)
          to label %682 unwind label %707

682:                                              ; preds = %672
  store i32 %681, ptr %113, align 4, !tbaa !9
  %683 = load i32, ptr %113, align 4, !tbaa !9
  %684 = icmp sgt i32 %683, 0
  br i1 %684, label %706, label %685

685:                                              ; preds = %682
  %686 = load i32, ptr %113, align 4, !tbaa !9
  %687 = icmp eq i32 %686, 0
  br i1 %687, label %688, label %711

688:                                              ; preds = %685
  %689 = load ptr, ptr %4, align 8, !tbaa !5
  %690 = load i32, ptr %97, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %689, i64 noundef %691) #6
  %693 = getelementptr inbounds %struct.Circle, ptr %692, i32 0, i32 1
  %694 = load x86_fp80, ptr %693, align 16, !tbaa !29
  %695 = load ptr, ptr %4, align 8, !tbaa !5
  %696 = load i32, ptr %112, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %695, i64 noundef %697) #6
  %699 = getelementptr inbounds %struct.Circle, ptr %698, i32 0, i32 1
  %700 = load x86_fp80, ptr %699, align 16, !tbaa !29
  %701 = call noundef zeroext i1 @_Z2ltee(x86_fp80 noundef %694, x86_fp80 noundef %700)
  br i1 %701, label %706, label %702

702:                                              ; preds = %688
  %703 = load i32, ptr %112, align 4, !tbaa !9
  %704 = load i32, ptr %97, align 4, !tbaa !9
  %705 = icmp slt i32 %703, %704
  br i1 %705, label %706, label %711

706:                                              ; preds = %702, %688, %682
  store i8 1, ptr %111, align 1, !tbaa !32
  store i32 25, ptr %10, align 4
  br label %803

707:                                              ; preds = %672
  %708 = landingpad { ptr, i32 }
          cleanup
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %25, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %26, align 4
  br label %807

711:                                              ; preds = %702, %685
  call void @llvm.lifetime.start.p0(i64 24, ptr %115) #6
  call void @_ZNSt6vectorI2ptSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #6
  %712 = load ptr, ptr %4, align 8, !tbaa !5
  %713 = load i32, ptr %97, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %712, i64 noundef %714) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %116, ptr align 16 %715, i64 48, i1 false), !tbaa.struct !21
  %716 = load ptr, ptr %4, align 8, !tbaa !5
  %717 = load i32, ptr %112, align 4, !tbaa !9
  %718 = sext i32 %717 to i64
  %719 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %716, i64 noundef %718) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %117, ptr align 16 %719, i64 48, i1 false), !tbaa.struct !21
  %720 = invoke noundef i32 @_Z24circleCircleIntersection6CircleS_RSt6vectorI2ptSaIS1_EE(ptr noundef byval(%struct.Circle) align 16 %116, ptr noundef byval(%struct.Circle) align 16 %117, ptr noundef nonnull align 8 dereferenceable(24) %115)
          to label %721 unwind label %761

721:                                              ; preds = %711
  %722 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #6
  %723 = trunc i64 %722 to i32
  %724 = icmp eq i32 %723, 2
  br i1 %724, label %725, label %802

725:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 32, ptr %118) #6
  %726 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef 0) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %119, ptr align 16 %726, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %118, ptr noundef byval(%struct.pt) align 16 %119)
          to label %727 unwind label %765

727:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 32, ptr %120) #6
  %728 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef 1) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %121, ptr align 16 %728, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %120, ptr noundef byval(%struct.pt) align 16 %121)
          to label %729 unwind label %769

729:                                              ; preds = %727
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #6
  store i32 1, ptr %122, align 4, !tbaa !9
  %730 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJRS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 16 dereferenceable(32) %118, ptr noundef nonnull align 4 dereferenceable(4) %122)
          to label %731 unwind label %773

731:                                              ; preds = %729
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #6
  store i32 -1, ptr %123, align 4, !tbaa !9
  %732 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJRS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 16 dereferenceable(32) %120, ptr noundef nonnull align 4 dereferenceable(4) %123)
          to label %733 unwind label %777

733:                                              ; preds = %731
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %124, ptr align 16 %120, i64 32, i1 false), !tbaa.struct !13
  %734 = invoke noundef zeroext i1 @_ZNK5AnglegeES_(ptr noundef nonnull align 16 dereferenceable(32) %118, ptr noundef byval(%struct.Angle) align 16 %124)
          to label %735 unwind label %769

735:                                              ; preds = %733
  br i1 %734, label %736, label %799

736:                                              ; preds = %735
  call void @llvm.lifetime.start.p0(i64 32, ptr %125) #6
  %737 = load ptr, ptr %4, align 8, !tbaa !5
  %738 = load i32, ptr %97, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %737, i64 noundef %739) #6
  %741 = getelementptr inbounds %struct.Circle, ptr %740, i32 0, i32 0
  %742 = load ptr, ptr %4, align 8, !tbaa !5
  %743 = load i32, ptr %97, align 4, !tbaa !9
  %744 = sext i32 %743 to i64
  %745 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %742, i64 noundef %744) #6
  %746 = getelementptr inbounds %struct.Circle, ptr %745, i32 0, i32 1
  %747 = load x86_fp80, ptr %746, align 16, !tbaa !29
  invoke void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32) %127, x86_fp80 noundef %747, x86_fp80 noundef 0xK00000000000000000000)
          to label %748 unwind label %781

748:                                              ; preds = %736
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %126, ptr noundef nonnull align 16 dereferenceable(32) %741, ptr noundef byval(%struct.pt) align 16 %127)
          to label %749 unwind label %781

749:                                              ; preds = %748
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %125, ptr noundef byval(%struct.pt) align 16 %126)
          to label %750 unwind label %781

750:                                              ; preds = %749
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #6
  store i32 1, ptr %128, align 4, !tbaa !9
  %751 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 16 dereferenceable(32) %125, ptr noundef nonnull align 4 dereferenceable(4) %128)
          to label %752 unwind label %785

752:                                              ; preds = %750
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %129) #6
  %753 = load ptr, ptr %4, align 8, !tbaa !5
  %754 = load i32, ptr %97, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %753, i64 noundef %755) #6
  %757 = getelementptr inbounds %struct.Circle, ptr %756, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %130, ptr align 16 %757, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %129, ptr noundef byval(%struct.pt) align 16 %130)
          to label %758 unwind label %790

758:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #6
  store i32 -1, ptr %131, align 4, !tbaa !9
  %759 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 16 dereferenceable(32) %129, ptr noundef nonnull align 4 dereferenceable(4) %131)
          to label %760 unwind label %794

760:                                              ; preds = %758
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #6
  br label %799

761:                                              ; preds = %711
  %762 = landingpad { ptr, i32 }
          cleanup
  %763 = extractvalue { ptr, i32 } %762, 0
  store ptr %763, ptr %25, align 8
  %764 = extractvalue { ptr, i32 } %762, 1
  store i32 %764, ptr %26, align 4
  br label %806

765:                                              ; preds = %725
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %25, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %26, align 4
  br label %801

769:                                              ; preds = %733, %727
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %25, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %26, align 4
  br label %800

773:                                              ; preds = %729
  %774 = landingpad { ptr, i32 }
          cleanup
  %775 = extractvalue { ptr, i32 } %774, 0
  store ptr %775, ptr %25, align 8
  %776 = extractvalue { ptr, i32 } %774, 1
  store i32 %776, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #6
  br label %800

777:                                              ; preds = %731
  %778 = landingpad { ptr, i32 }
          cleanup
  %779 = extractvalue { ptr, i32 } %778, 0
  store ptr %779, ptr %25, align 8
  %780 = extractvalue { ptr, i32 } %778, 1
  store i32 %780, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #6
  br label %800

781:                                              ; preds = %749, %748, %736
  %782 = landingpad { ptr, i32 }
          cleanup
  %783 = extractvalue { ptr, i32 } %782, 0
  store ptr %783, ptr %25, align 8
  %784 = extractvalue { ptr, i32 } %782, 1
  store i32 %784, ptr %26, align 4
  br label %789

785:                                              ; preds = %750
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %25, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #6
  br label %789

789:                                              ; preds = %785, %781
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #6
  br label %800

790:                                              ; preds = %752
  %791 = landingpad { ptr, i32 }
          cleanup
  %792 = extractvalue { ptr, i32 } %791, 0
  store ptr %792, ptr %25, align 8
  %793 = extractvalue { ptr, i32 } %791, 1
  store i32 %793, ptr %26, align 4
  br label %798

794:                                              ; preds = %758
  %795 = landingpad { ptr, i32 }
          cleanup
  %796 = extractvalue { ptr, i32 } %795, 0
  store ptr %796, ptr %25, align 8
  %797 = extractvalue { ptr, i32 } %795, 1
  store i32 %797, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #6
  br label %798

798:                                              ; preds = %794, %790
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #6
  br label %800

799:                                              ; preds = %760, %735
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #6
  br label %802

800:                                              ; preds = %798, %789, %777, %773, %769
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #6
  br label %801

801:                                              ; preds = %800, %765
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #6
  br label %806

802:                                              ; preds = %799, %721
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %115) #6
  store i32 0, ptr %10, align 4
  br label %803

803:                                              ; preds = %802, %706
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #6
  %804 = load i32, ptr %10, align 4
  switch i32 %804, label %812 [
    i32 0, label %805
  ]

805:                                              ; preds = %803
  br label %808

806:                                              ; preds = %801, %761
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %115) #6
  br label %807

807:                                              ; preds = %806, %707
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #6
  br label %1272

808:                                              ; preds = %805, %668
  br label %809

809:                                              ; preds = %808
  %810 = load i32, ptr %112, align 4, !tbaa !9
  %811 = add nsw i32 %810, 1
  store i32 %811, ptr %112, align 4, !tbaa !9
  br label %632, !llvm.loop !34

812:                                              ; preds = %803, %636
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #6
  br label %813

813:                                              ; preds = %812
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #6
  store i32 0, ptr %132, align 4, !tbaa !9
  br label %814

814:                                              ; preds = %1144, %813
  %815 = load i32, ptr %132, align 4, !tbaa !9
  %816 = load i32, ptr %5, align 4, !tbaa !9
  %817 = icmp slt i32 %815, %816
  br i1 %817, label %818, label %822

818:                                              ; preds = %814
  %819 = load i8, ptr %111, align 1, !tbaa !32, !range !35, !noundef !36
  %820 = trunc i8 %819 to i1
  %821 = xor i1 %820, true
  br label %822

822:                                              ; preds = %818, %814
  %823 = phi i1 [ false, %814 ], [ %821, %818 ]
  br i1 %823, label %825, label %824

824:                                              ; preds = %822
  store i32 28, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #6
  br label %1149

825:                                              ; preds = %822
  call void @llvm.lifetime.start.p0(i64 24, ptr %133) #6
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #6
  store i8 0, ptr %134, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #6
  store i32 0, ptr %135, align 4, !tbaa !9
  br label %826

826:                                              ; preds = %1000, %825
  %827 = load i32, ptr %135, align 4, !tbaa !9
  %828 = load ptr, ptr %3, align 8, !tbaa !5
  %829 = load i32, ptr %132, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %828, i64 noundef %830) #6
  %832 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %831) #6
  %833 = trunc i64 %832 to i32
  %834 = icmp slt i32 %827, %833
  br i1 %834, label %836, label %835

835:                                              ; preds = %826
  store i32 31, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #6
  br label %1008

836:                                              ; preds = %826
  call void @llvm.lifetime.start.p0(i64 32, ptr %136) #6
  %837 = load ptr, ptr %3, align 8, !tbaa !5
  %838 = load i32, ptr %132, align 4, !tbaa !9
  %839 = sext i32 %838 to i64
  %840 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %837, i64 noundef %839) #6
  %841 = load i32, ptr %135, align 4, !tbaa !9
  %842 = sext i32 %841 to i64
  %843 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %840, i64 noundef %842) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %136, ptr align 16 %843, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.start.p0(i64 32, ptr %137) #6
  %844 = load ptr, ptr %3, align 8, !tbaa !5
  %845 = load i32, ptr %132, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %844, i64 noundef %846) #6
  %848 = load i32, ptr %135, align 4, !tbaa !9
  %849 = add nsw i32 %848, 1
  %850 = load ptr, ptr %3, align 8, !tbaa !5
  %851 = load i32, ptr %132, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %850, i64 noundef %852) #6
  %854 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %853) #6
  %855 = trunc i64 %854 to i32
  %856 = call noundef i32 @_Z3modii(i32 noundef %849, i32 noundef %855)
  %857 = sext i32 %856 to i64
  %858 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %847, i64 noundef %857) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %137, ptr align 16 %858, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %138, ptr align 16 %137, i64 32, i1 false), !tbaa.struct !13
  %859 = invoke noundef zeroext i1 @_ZNK2pteqES_(ptr noundef nonnull align 16 dereferenceable(32) %136, ptr noundef byval(%struct.pt) align 16 %138)
          to label %860 unwind label %862

860:                                              ; preds = %836
  br i1 %859, label %861, label %866

861:                                              ; preds = %860
  store i32 33, ptr %10, align 4
  br label %997

862:                                              ; preds = %836
  %863 = landingpad { ptr, i32 }
          cleanup
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %25, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %26, align 4
  br label %1007

866:                                              ; preds = %860
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #6
  %867 = load ptr, ptr %4, align 8, !tbaa !5
  %868 = load i32, ptr %97, align 4, !tbaa !9
  %869 = sext i32 %868 to i64
  %870 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %867, i64 noundef %869) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %140, ptr align 16 %136, i64 32, i1 false), !tbaa.struct !13
  %871 = invoke noundef i32 @_ZNK6Circle8containsE2pt(ptr noundef nonnull align 16 dereferenceable(48) %870, ptr noundef byval(%struct.pt) align 16 %140)
          to label %872 unwind label %906

872:                                              ; preds = %866
  store i32 %871, ptr %139, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #6
  %873 = load ptr, ptr %4, align 8, !tbaa !5
  %874 = load i32, ptr %97, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %873, i64 noundef %875) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %142, ptr align 16 %137, i64 32, i1 false), !tbaa.struct !13
  %877 = invoke noundef i32 @_ZNK6Circle8containsE2pt(ptr noundef nonnull align 16 dereferenceable(48) %876, ptr noundef byval(%struct.pt) align 16 %142)
          to label %878 unwind label %910

878:                                              ; preds = %872
  store i32 %877, ptr %141, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %143) #6
  %879 = load ptr, ptr %4, align 8, !tbaa !5
  %880 = load i32, ptr %97, align 4, !tbaa !9
  %881 = sext i32 %880 to i64
  %882 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %879, i64 noundef %881) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %144, ptr align 16 %882, i64 48, i1 false), !tbaa.struct !21
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %145, ptr align 16 %136, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %146, ptr align 16 %137, i64 32, i1 false), !tbaa.struct !13
  invoke void @_Z21circleSegIntersection6Circle2ptS0_(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %143, ptr noundef byval(%struct.Circle) align 16 %144, ptr noundef byval(%struct.pt) align 16 %145, ptr noundef byval(%struct.pt) align 16 %146)
          to label %883 unwind label %914

883:                                              ; preds = %878
  %884 = load i32, ptr %139, align 4, !tbaa !9
  %885 = load i32, ptr %141, align 4, !tbaa !9
  %886 = icmp ne i32 %884, %885
  br i1 %886, label %887, label %964

887:                                              ; preds = %883
  %888 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %139, ptr noundef nonnull align 4 dereferenceable(4) %141)
          to label %889 unwind label %918

889:                                              ; preds = %887
  %890 = load i32, ptr %888, align 4, !tbaa !9
  %891 = icmp sgt i32 %890, 0
  br i1 %891, label %892, label %931

892:                                              ; preds = %889
  %893 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %143) #6
  %894 = trunc i64 %893 to i32
  %895 = icmp eq i32 %894, 1
  br i1 %895, label %896, label %931

896:                                              ; preds = %892
  store i8 1, ptr %134, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 32, ptr %147) #6
  %897 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef 0) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %148, ptr align 16 %897, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %147, ptr noundef byval(%struct.pt) align 16 %148)
          to label %898 unwind label %922

898:                                              ; preds = %896
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #6
  %899 = load i32, ptr %139, align 4, !tbaa !9
  %900 = load i32, ptr %141, align 4, !tbaa !9
  %901 = sub nsw i32 %899, %900
  %902 = sitofp i32 %901 to x86_fp80
  %903 = call noundef i32 @_Z3sgne(x86_fp80 noundef %902)
  store i32 %903, ptr %149, align 4, !tbaa !9
  %904 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 16 dereferenceable(32) %147, ptr noundef nonnull align 4 dereferenceable(4) %149)
          to label %905 unwind label %926

905:                                              ; preds = %898
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #6
  br label %963

906:                                              ; preds = %866
  %907 = landingpad { ptr, i32 }
          cleanup
  %908 = extractvalue { ptr, i32 } %907, 0
  store ptr %908, ptr %25, align 8
  %909 = extractvalue { ptr, i32 } %907, 1
  store i32 %909, ptr %26, align 4
  br label %1006

910:                                              ; preds = %872
  %911 = landingpad { ptr, i32 }
          cleanup
  %912 = extractvalue { ptr, i32 } %911, 0
  store ptr %912, ptr %25, align 8
  %913 = extractvalue { ptr, i32 } %911, 1
  store i32 %913, ptr %26, align 4
  br label %1005

914:                                              ; preds = %878
  %915 = landingpad { ptr, i32 }
          cleanup
  %916 = extractvalue { ptr, i32 } %915, 0
  store ptr %916, ptr %25, align 8
  %917 = extractvalue { ptr, i32 } %915, 1
  store i32 %917, ptr %26, align 4
  br label %1004

918:                                              ; preds = %931, %887
  %919 = landingpad { ptr, i32 }
          cleanup
  %920 = extractvalue { ptr, i32 } %919, 0
  store ptr %920, ptr %25, align 8
  %921 = extractvalue { ptr, i32 } %919, 1
  store i32 %921, ptr %26, align 4
  br label %1003

922:                                              ; preds = %896
  %923 = landingpad { ptr, i32 }
          cleanup
  %924 = extractvalue { ptr, i32 } %923, 0
  store ptr %924, ptr %25, align 8
  %925 = extractvalue { ptr, i32 } %923, 1
  store i32 %925, ptr %26, align 4
  br label %930

926:                                              ; preds = %898
  %927 = landingpad { ptr, i32 }
          cleanup
  %928 = extractvalue { ptr, i32 } %927, 0
  store ptr %928, ptr %25, align 8
  %929 = extractvalue { ptr, i32 } %927, 1
  store i32 %929, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #6
  br label %930

930:                                              ; preds = %926, %922
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #6
  br label %1003

931:                                              ; preds = %892, %889
  %932 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %139, ptr noundef nonnull align 4 dereferenceable(4) %141)
          to label %933 unwind label %918

933:                                              ; preds = %931
  %934 = load i32, ptr %932, align 4, !tbaa !9
  %935 = icmp slt i32 %934, 0
  br i1 %935, label %936, label %962

936:                                              ; preds = %933
  %937 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %143) #6
  %938 = trunc i64 %937 to i32
  %939 = icmp eq i32 %938, 2
  br i1 %939, label %940, label %962

940:                                              ; preds = %936
  store i8 1, ptr %134, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 32, ptr %150) #6
  %941 = load i32, ptr %139, align 4, !tbaa !9
  %942 = icmp eq i32 %941, 0
  %943 = zext i1 %942 to i64
  %944 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %943) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %151, ptr align 16 %944, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %150, ptr noundef byval(%struct.pt) align 16 %151)
          to label %945 unwind label %953

945:                                              ; preds = %940
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #6
  %946 = load i32, ptr %139, align 4, !tbaa !9
  %947 = load i32, ptr %141, align 4, !tbaa !9
  %948 = sub nsw i32 %946, %947
  %949 = sitofp i32 %948 to x86_fp80
  %950 = call noundef i32 @_Z3sgne(x86_fp80 noundef %949)
  store i32 %950, ptr %152, align 4, !tbaa !9
  %951 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 16 dereferenceable(32) %150, ptr noundef nonnull align 4 dereferenceable(4) %152)
          to label %952 unwind label %957

952:                                              ; preds = %945
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %150) #6
  br label %962

953:                                              ; preds = %940
  %954 = landingpad { ptr, i32 }
          cleanup
  %955 = extractvalue { ptr, i32 } %954, 0
  store ptr %955, ptr %25, align 8
  %956 = extractvalue { ptr, i32 } %954, 1
  store i32 %956, ptr %26, align 4
  br label %961

957:                                              ; preds = %945
  %958 = landingpad { ptr, i32 }
          cleanup
  %959 = extractvalue { ptr, i32 } %958, 0
  store ptr %959, ptr %25, align 8
  %960 = extractvalue { ptr, i32 } %958, 1
  store i32 %960, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #6
  br label %961

961:                                              ; preds = %957, %953
  call void @llvm.lifetime.end.p0(i64 32, ptr %150) #6
  br label %1003

962:                                              ; preds = %952, %936, %933
  br label %963

963:                                              ; preds = %962, %905
  br label %996

964:                                              ; preds = %883
  %965 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %143) #6
  %966 = trunc i64 %965 to i32
  %967 = icmp eq i32 %966, 2
  br i1 %967, label %968, label %995

968:                                              ; preds = %964
  store i8 1, ptr %134, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 32, ptr %153) #6
  %969 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef 1) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %154, ptr align 16 %969, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %153, ptr noundef byval(%struct.pt) align 16 %154)
          to label %970 unwind label %977

970:                                              ; preds = %968
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #6
  store i32 1, ptr %155, align 4, !tbaa !9
  %971 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 16 dereferenceable(32) %153, ptr noundef nonnull align 4 dereferenceable(4) %155)
          to label %972 unwind label %981

972:                                              ; preds = %970
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %153) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %156) #6
  %973 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef 0) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %157, ptr align 16 %973, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %156, ptr noundef byval(%struct.pt) align 16 %157)
          to label %974 unwind label %986

974:                                              ; preds = %972
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #6
  store i32 -1, ptr %158, align 4, !tbaa !9
  %975 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 16 dereferenceable(32) %156, ptr noundef nonnull align 4 dereferenceable(4) %158)
          to label %976 unwind label %990

976:                                              ; preds = %974
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %156) #6
  br label %995

977:                                              ; preds = %968
  %978 = landingpad { ptr, i32 }
          cleanup
  %979 = extractvalue { ptr, i32 } %978, 0
  store ptr %979, ptr %25, align 8
  %980 = extractvalue { ptr, i32 } %978, 1
  store i32 %980, ptr %26, align 4
  br label %985

981:                                              ; preds = %970
  %982 = landingpad { ptr, i32 }
          cleanup
  %983 = extractvalue { ptr, i32 } %982, 0
  store ptr %983, ptr %25, align 8
  %984 = extractvalue { ptr, i32 } %982, 1
  store i32 %984, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #6
  br label %985

985:                                              ; preds = %981, %977
  call void @llvm.lifetime.end.p0(i64 32, ptr %153) #6
  br label %1003

986:                                              ; preds = %972
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %25, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %26, align 4
  br label %994

990:                                              ; preds = %974
  %991 = landingpad { ptr, i32 }
          cleanup
  %992 = extractvalue { ptr, i32 } %991, 0
  store ptr %992, ptr %25, align 8
  %993 = extractvalue { ptr, i32 } %991, 1
  store i32 %993, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #6
  br label %994

994:                                              ; preds = %990, %986
  call void @llvm.lifetime.end.p0(i64 32, ptr %156) #6
  br label %1003

995:                                              ; preds = %976, %964
  br label %996

996:                                              ; preds = %995, %963
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %143) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %143) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #6
  store i32 0, ptr %10, align 4
  br label %997

997:                                              ; preds = %996, %861
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %136) #6
  %998 = load i32, ptr %10, align 4
  switch i32 %998, label %1282 [
    i32 0, label %999
    i32 33, label %1000
  ]

999:                                              ; preds = %997
  br label %1000

1000:                                             ; preds = %999, %997
  %1001 = load i32, ptr %135, align 4, !tbaa !9
  %1002 = add nsw i32 %1001, 1
  store i32 %1002, ptr %135, align 4, !tbaa !9
  br label %826, !llvm.loop !37

1003:                                             ; preds = %994, %985, %961, %930, %918
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %143) #6
  br label %1004

1004:                                             ; preds = %1003, %914
  call void @llvm.lifetime.end.p0(i64 24, ptr %143) #6
  br label %1005

1005:                                             ; preds = %1004, %910
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #6
  br label %1006

1006:                                             ; preds = %1005, %906
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #6
  br label %1007

1007:                                             ; preds = %1006, %862
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %136) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #6
  br label %1148

1008:                                             ; preds = %835
  call void @llvm.lifetime.start.p0(i64 1, ptr %159) #6
  %1009 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #6
  %1010 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %160, i32 0, i32 0
  store ptr %1009, ptr %1010, align 8
  %1011 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #6
  %1012 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %161, i32 0, i32 0
  store ptr %1011, ptr %1012, align 8
  %1013 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %160, i32 0, i32 0
  %1014 = load ptr, ptr %1013, align 8
  %1015 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %161, i32 0, i32 0
  %1016 = load ptr, ptr %1015, align 8
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS4_SaIS4_EEEEZ22polygonCircleUnionAreaRKS6_IS6_I2ptSaISA_EESaISC_EERKS6_I6CircleSaISH_EEE3$_1EvT_SN_T0_"(ptr %1014, ptr %1016)
          to label %1017 unwind label %1049

1017:                                             ; preds = %1008
  %1018 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairI5AngleiESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #6
  br i1 %1018, label %1071, label %1019

1019:                                             ; preds = %1017
  %1020 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %133, i64 noundef 0) #6
  %1021 = getelementptr inbounds %"struct.std::pair.52", ptr %1020, i32 0, i32 1
  %1022 = load i32, ptr %1021, align 16, !tbaa !38
  %1023 = icmp slt i32 %1022, 0
  br i1 %1023, label %1024, label %1071

1024:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 32, ptr %163) #6
  %1025 = load ptr, ptr %4, align 8, !tbaa !5
  %1026 = load i32, ptr %97, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1025, i64 noundef %1027) #6
  %1029 = getelementptr inbounds %struct.Circle, ptr %1028, i32 0, i32 0
  %1030 = load ptr, ptr %4, align 8, !tbaa !5
  %1031 = load i32, ptr %97, align 4, !tbaa !9
  %1032 = sext i32 %1031 to i64
  %1033 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1030, i64 noundef %1032) #6
  %1034 = getelementptr inbounds %struct.Circle, ptr %1033, i32 0, i32 1
  %1035 = load x86_fp80, ptr %1034, align 16, !tbaa !29
  invoke void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32) %165, x86_fp80 noundef %1035, x86_fp80 noundef 0xK00000000000000000000)
          to label %1036 unwind label %1053

1036:                                             ; preds = %1024
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind writable sret(%struct.pt) align 16 %164, ptr noundef nonnull align 16 dereferenceable(32) %1029, ptr noundef byval(%struct.pt) align 16 %165)
          to label %1037 unwind label %1053

1037:                                             ; preds = %1036
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %163, ptr noundef byval(%struct.pt) align 16 %164)
          to label %1038 unwind label %1053

1038:                                             ; preds = %1037
  call void @llvm.lifetime.start.p0(i64 4, ptr %166) #6
  store i32 1, ptr %166, align 4, !tbaa !9
  %1039 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 16 dereferenceable(32) %163, ptr noundef nonnull align 4 dereferenceable(4) %166)
          to label %1040 unwind label %1057

1040:                                             ; preds = %1038
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %163) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %167) #6
  %1041 = load ptr, ptr %4, align 8, !tbaa !5
  %1042 = load i32, ptr %97, align 4, !tbaa !9
  %1043 = sext i32 %1042 to i64
  %1044 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1041, i64 noundef %1043) #6
  %1045 = getelementptr inbounds %struct.Circle, ptr %1044, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %168, ptr align 16 %1045, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %167, ptr noundef byval(%struct.pt) align 16 %168)
          to label %1046 unwind label %1062

1046:                                             ; preds = %1040
  call void @llvm.lifetime.start.p0(i64 4, ptr %169) #6
  store i32 -1, ptr %169, align 4, !tbaa !9
  %1047 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 16 dereferenceable(32) %167, ptr noundef nonnull align 4 dereferenceable(4) %169)
          to label %1048 unwind label %1066

1048:                                             ; preds = %1046
  call void @llvm.lifetime.end.p0(i64 4, ptr %169) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %167) #6
  br label %1071

1049:                                             ; preds = %1089, %1008
  %1050 = landingpad { ptr, i32 }
          cleanup
  %1051 = extractvalue { ptr, i32 } %1050, 0
  store ptr %1051, ptr %25, align 8
  %1052 = extractvalue { ptr, i32 } %1050, 1
  store i32 %1052, ptr %26, align 4
  br label %1147

1053:                                             ; preds = %1037, %1036, %1024
  %1054 = landingpad { ptr, i32 }
          cleanup
  %1055 = extractvalue { ptr, i32 } %1054, 0
  store ptr %1055, ptr %25, align 8
  %1056 = extractvalue { ptr, i32 } %1054, 1
  store i32 %1056, ptr %26, align 4
  br label %1061

1057:                                             ; preds = %1038
  %1058 = landingpad { ptr, i32 }
          cleanup
  %1059 = extractvalue { ptr, i32 } %1058, 0
  store ptr %1059, ptr %25, align 8
  %1060 = extractvalue { ptr, i32 } %1058, 1
  store i32 %1060, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #6
  br label %1061

1061:                                             ; preds = %1057, %1053
  call void @llvm.lifetime.end.p0(i64 32, ptr %163) #6
  br label %1147

1062:                                             ; preds = %1040
  %1063 = landingpad { ptr, i32 }
          cleanup
  %1064 = extractvalue { ptr, i32 } %1063, 0
  store ptr %1064, ptr %25, align 8
  %1065 = extractvalue { ptr, i32 } %1063, 1
  store i32 %1065, ptr %26, align 4
  br label %1070

1066:                                             ; preds = %1046
  %1067 = landingpad { ptr, i32 }
          cleanup
  %1068 = extractvalue { ptr, i32 } %1067, 0
  store ptr %1068, ptr %25, align 8
  %1069 = extractvalue { ptr, i32 } %1067, 1
  store i32 %1069, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %169) #6
  br label %1070

1070:                                             ; preds = %1066, %1062
  call void @llvm.lifetime.end.p0(i64 32, ptr %167) #6
  br label %1147

1071:                                             ; preds = %1048, %1019, %1017
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #6
  %1072 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #6
  %1073 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %171, i32 0, i32 0
  store ptr %1072, ptr %1073, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEC2IPS3_vEERKNS0_IT_S8_EE(ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull align 8 dereferenceable(8) %171) #6
  %1074 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #6
  %1075 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %172, i32 0, i32 0
  store ptr %1074, ptr %1075, align 8
  %1076 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #6
  %1077 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %173, i32 0, i32 0
  store ptr %1076, ptr %1077, align 8
  %1078 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.58", ptr %170, i32 0, i32 0
  %1079 = load ptr, ptr %1078, align 8
  %1080 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %172, i32 0, i32 0
  %1081 = load ptr, ptr %1080, align 8
  %1082 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %173, i32 0, i32 0
  %1083 = load ptr, ptr %1082, align 8
  %1084 = invoke ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr %1079, ptr %1081, ptr %1083)
          to label %1085 unwind label %1116

1085:                                             ; preds = %1071
  %1086 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %174, i32 0, i32 0
  store ptr %1084, ptr %1086, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #6
  %1087 = load i8, ptr %134, align 1, !tbaa !32, !range !35, !noundef !36
  %1088 = trunc i8 %1087 to i1
  br i1 %1088, label %1143, label %1089

1089:                                             ; preds = %1085
  %1090 = load ptr, ptr %3, align 8, !tbaa !5
  %1091 = load i32, ptr %132, align 4, !tbaa !9
  %1092 = sext i32 %1091 to i64
  %1093 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1090, i64 noundef %1092) #6
  %1094 = load ptr, ptr %4, align 8, !tbaa !5
  %1095 = load i32, ptr %97, align 4, !tbaa !9
  %1096 = sext i32 %1095 to i64
  %1097 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1094, i64 noundef %1096) #6
  %1098 = getelementptr inbounds %struct.Circle, ptr %1097, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %175, ptr align 16 %1098, i64 32, i1 false), !tbaa.struct !13
  %1099 = invoke noundef i32 @_Z11isInPolygonRKSt6vectorI2ptSaIS0_EES0_(ptr noundef nonnull align 8 dereferenceable(24) %1093, ptr noundef byval(%struct.pt) align 16 %175)
          to label %1100 unwind label %1049

1100:                                             ; preds = %1089
  %1101 = icmp sge i32 %1099, 0
  br i1 %1101, label %1102, label %1143

1102:                                             ; preds = %1100
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #6
  %1103 = load ptr, ptr %3, align 8, !tbaa !5
  %1104 = load i32, ptr %132, align 4, !tbaa !9
  %1105 = sext i32 %1104 to i64
  %1106 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1103, i64 noundef %1105) #6
  store ptr %1106, ptr %176, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #6
  %1107 = load ptr, ptr %176, align 8, !tbaa !5
  %1108 = call ptr @_ZNKSt6vectorI2ptSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1107) #6
  %1109 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %177, i32 0, i32 0
  store ptr %1108, ptr %1109, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #6
  %1110 = load ptr, ptr %176, align 8, !tbaa !5
  %1111 = call ptr @_ZNKSt6vectorI2ptSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1110) #6
  %1112 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %178, i32 0, i32 0
  store ptr %1111, ptr %1112, align 8
  br label %1113

1113:                                             ; preds = %1139, %1102
  %1114 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK2ptSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %177, ptr noundef nonnull align 8 dereferenceable(8) %178) #6
  br i1 %1114, label %1120, label %1115

1115:                                             ; preds = %1113
  store i32 34, ptr %10, align 4
  br label %1141

1116:                                             ; preds = %1071
  %1117 = landingpad { ptr, i32 }
          cleanup
  %1118 = extractvalue { ptr, i32 } %1117, 0
  store ptr %1118, ptr %25, align 8
  %1119 = extractvalue { ptr, i32 } %1117, 1
  store i32 %1119, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #6
  br label %1147

1120:                                             ; preds = %1113
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #6
  %1121 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK2ptSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %177) #6
  store ptr %1121, ptr %179, align 8, !tbaa !5
  %1122 = load ptr, ptr %4, align 8, !tbaa !5
  %1123 = load i32, ptr %97, align 4, !tbaa !9
  %1124 = sext i32 %1123 to i64
  %1125 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1122, i64 noundef %1124) #6
  %1126 = load ptr, ptr %179, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %180, ptr align 16 %1126, i64 32, i1 false), !tbaa.struct !13
  %1127 = invoke noundef i32 @_ZNK6Circle8containsE2pt(ptr noundef nonnull align 16 dereferenceable(48) %1125, ptr noundef byval(%struct.pt) align 16 %180)
          to label %1128 unwind label %1131

1128:                                             ; preds = %1120
  %1129 = icmp slt i32 %1127, 0
  br i1 %1129, label %1130, label %1135

1130:                                             ; preds = %1128
  store i8 1, ptr %111, align 1, !tbaa !32
  store i32 34, ptr %10, align 4
  br label %1136

1131:                                             ; preds = %1120
  %1132 = landingpad { ptr, i32 }
          cleanup
  %1133 = extractvalue { ptr, i32 } %1132, 0
  store ptr %1133, ptr %25, align 8
  %1134 = extractvalue { ptr, i32 } %1132, 1
  store i32 %1134, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #6
  br label %1147

1135:                                             ; preds = %1128
  store i32 0, ptr %10, align 4
  br label %1136

1136:                                             ; preds = %1135, %1130
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #6
  %1137 = load i32, ptr %10, align 4
  switch i32 %1137, label %1141 [
    i32 0, label %1138
  ]

1138:                                             ; preds = %1136
  br label %1139

1139:                                             ; preds = %1138
  %1140 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK2ptSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %177) #6
  br label %1113

1141:                                             ; preds = %1136, %1115
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #6
  br label %1142

1142:                                             ; preds = %1141
  br label %1143

1143:                                             ; preds = %1142, %1100, %1085
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #6
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %133) #6
  br label %1144

1144:                                             ; preds = %1143
  %1145 = load i32, ptr %132, align 4, !tbaa !9
  %1146 = add nsw i32 %1145, 1
  store i32 %1146, ptr %132, align 4, !tbaa !9
  br label %814, !llvm.loop !41

1147:                                             ; preds = %1131, %1116, %1070, %1061, %1049
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #6
  br label %1148

1148:                                             ; preds = %1147, %1007
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #6
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %133) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #6
  br label %1272

1149:                                             ; preds = %824
  %1150 = load i8, ptr %111, align 1, !tbaa !32, !range !35, !noundef !36
  %1151 = trunc i8 %1150 to i1
  br i1 %1151, label %1152, label %1153

1152:                                             ; preds = %1149
  store i32 24, ptr %10, align 4
  br label %1266

1153:                                             ; preds = %1149
  %1154 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #6
  %1155 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %181, i32 0, i32 0
  store ptr %1154, ptr %1155, align 8
  %1156 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #6
  %1157 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %182, i32 0, i32 0
  store ptr %1156, ptr %1157, align 8
  %1158 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %181, i32 0, i32 0
  %1159 = load ptr, ptr %1158, align 8
  %1160 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %182, i32 0, i32 0
  %1161 = load ptr, ptr %1160, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS4_SaIS4_EEEEEvT_SA_(ptr %1159, ptr %1161)
          to label %1162 unwind label %1172

1162:                                             ; preds = %1153
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #6
  store ptr %98, ptr %183, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #6
  %1163 = load ptr, ptr %183, align 8, !tbaa !5
  %1164 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1163) #6
  %1165 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %184, i32 0, i32 0
  store ptr %1164, ptr %1165, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #6
  %1166 = load ptr, ptr %183, align 8, !tbaa !5
  %1167 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1166) #6
  %1168 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.57", ptr %185, i32 0, i32 0
  store ptr %1167, ptr %1168, align 8
  br label %1169

1169:                                             ; preds = %1206, %1162
  %1170 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull align 8 dereferenceable(8) %185) #6
  br i1 %1170, label %1176, label %1171

1171:                                             ; preds = %1169
  store i32 36, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #6
  br label %1208

1172:                                             ; preds = %1153
  %1173 = landingpad { ptr, i32 }
          cleanup
  %1174 = extractvalue { ptr, i32 } %1173, 0
  store ptr %1174, ptr %25, align 8
  %1175 = extractvalue { ptr, i32 } %1173, 1
  store i32 %1175, ptr %26, align 4
  br label %1272

1176:                                             ; preds = %1169
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #6
  %1177 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %184) #6
  store ptr %1177, ptr %186, align 8, !tbaa !5
  %1178 = load ptr, ptr %186, align 8, !tbaa !5
  %1179 = getelementptr inbounds %"struct.std::pair.52", ptr %1178, i32 0, i32 0
  %1180 = getelementptr inbounds %struct.Angle, ptr %1179, i32 0, i32 0
  %1181 = load ptr, ptr %4, align 8, !tbaa !5
  %1182 = load i32, ptr %97, align 4, !tbaa !9
  %1183 = sext i32 %1182 to i64
  %1184 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1181, i64 noundef %1183) #6
  %1185 = getelementptr inbounds %struct.Circle, ptr %1184, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %187, ptr align 16 %1185, i64 32, i1 false), !tbaa.struct !13
  %1186 = invoke noundef zeroext i1 @_ZNK2pteqES_(ptr noundef nonnull align 16 dereferenceable(32) %1180, ptr noundef byval(%struct.pt) align 16 %187)
          to label %1187 unwind label %1201

1187:                                             ; preds = %1176
  br i1 %1186, label %1188, label %1205

1188:                                             ; preds = %1187
  %1189 = load ptr, ptr %4, align 8, !tbaa !5
  %1190 = load i32, ptr %97, align 4, !tbaa !9
  %1191 = sext i32 %1190 to i64
  %1192 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1189, i64 noundef %1191) #6
  %1193 = getelementptr inbounds %struct.Circle, ptr %1192, i32 0, i32 1
  %1194 = load x86_fp80, ptr %1193, align 16, !tbaa !29
  invoke void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32) %188, x86_fp80 noundef %1194, x86_fp80 noundef 0xK00000000000000000000)
          to label %1195 unwind label %1201

1195:                                             ; preds = %1188
  %1196 = load ptr, ptr %186, align 8, !tbaa !5
  %1197 = getelementptr inbounds %"struct.std::pair.52", ptr %1196, i32 0, i32 0
  %1198 = getelementptr inbounds %struct.Angle, ptr %1197, i32 0, i32 0
  %1199 = invoke noundef nonnull align 16 dereferenceable(32) ptr @_ZN2ptmIES_(ptr noundef nonnull align 16 dereferenceable(32) %1198, ptr noundef byval(%struct.pt) align 16 %188)
          to label %1200 unwind label %1201

1200:                                             ; preds = %1195
  br label %1205

1201:                                             ; preds = %1195, %1188, %1176
  %1202 = landingpad { ptr, i32 }
          cleanup
  %1203 = extractvalue { ptr, i32 } %1202, 0
  store ptr %1203, ptr %25, align 8
  %1204 = extractvalue { ptr, i32 } %1202, 1
  store i32 %1204, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #6
  br label %1272

1205:                                             ; preds = %1200, %1187
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #6
  br label %1206

1206:                                             ; preds = %1205
  %1207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %184) #6
  br label %1169

1208:                                             ; preds = %1171
  call void @llvm.lifetime.start.p0(i64 4, ptr %189) #6
  store i32 1, ptr %189, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %190) #6
  %1209 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef 0) #6
  %1210 = getelementptr inbounds %"struct.std::pair.52", ptr %1209, i32 0, i32 1
  %1211 = load i32, ptr %1210, align 16, !tbaa !38
  store i32 %1211, ptr %190, align 4, !tbaa !9
  br label %1212

1212:                                             ; preds = %1262, %1208
  %1213 = load i32, ptr %189, align 4, !tbaa !9
  %1214 = call noundef i64 @_ZNKSt6vectorISt4pairI5AngleiESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #6
  %1215 = trunc i64 %1214 to i32
  %1216 = icmp slt i32 %1213, %1215
  br i1 %1216, label %1218, label %1217

1217:                                             ; preds = %1212
  store i32 38, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %190) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %189) #6
  br label %1265

1218:                                             ; preds = %1212
  %1219 = load i32, ptr %190, align 4, !tbaa !9
  %1220 = icmp ne i32 %1219, 0
  br i1 %1220, label %1254, label %1221

1221:                                             ; preds = %1218
  call void @llvm.lifetime.start.p0(i64 32, ptr %191) #6
  %1222 = load i32, ptr %189, align 4, !tbaa !9
  %1223 = sub nsw i32 %1222, 1
  %1224 = sext i32 %1223 to i64
  %1225 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef %1224) #6
  %1226 = getelementptr inbounds %"struct.std::pair.52", ptr %1225, i32 0, i32 0
  %1227 = getelementptr inbounds %struct.Angle, ptr %1226, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %191, ptr align 16 %1227, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.start.p0(i64 32, ptr %192) #6
  %1228 = load i32, ptr %189, align 4, !tbaa !9
  %1229 = sext i32 %1228 to i64
  %1230 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef %1229) #6
  %1231 = getelementptr inbounds %"struct.std::pair.52", ptr %1230, i32 0, i32 0
  %1232 = getelementptr inbounds %struct.Angle, ptr %1231, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %192, ptr align 16 %1232, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %193, ptr align 16 %192, i64 32, i1 false), !tbaa.struct !13
  %1233 = invoke noundef zeroext i1 @_ZNK2ptneES_(ptr noundef nonnull align 16 dereferenceable(32) %191, ptr noundef byval(%struct.pt) align 16 %193)
          to label %1234 unwind label %1249

1234:                                             ; preds = %1221
  br i1 %1233, label %1235, label %1253

1235:                                             ; preds = %1234
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %194, ptr align 16 %191, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %195, ptr align 16 %192, i64 32, i1 false), !tbaa.struct !13
  %1236 = call noundef x86_fp80 @_Z5cross2ptS_(ptr noundef byval(%struct.pt) align 16 %194, ptr noundef byval(%struct.pt) align 16 %195)
  %1237 = fdiv x86_fp80 %1236, 0xK40008000000000000000
  %1238 = load x86_fp80, ptr %7, align 16, !tbaa !11
  %1239 = fadd x86_fp80 %1238, %1237
  store x86_fp80 %1239, ptr %7, align 16, !tbaa !11
  %1240 = load ptr, ptr %4, align 8, !tbaa !5
  %1241 = load i32, ptr %97, align 4, !tbaa !9
  %1242 = sext i32 %1241 to i64
  %1243 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1240, i64 noundef %1242) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %196, ptr align 16 %1243, i64 48, i1 false), !tbaa.struct !21
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %198, ptr align 16 %192, i64 32, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %199, ptr align 16 %191, i64 32, i1 false), !tbaa.struct !13
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %197, ptr noundef byval(%struct.pt) align 16 %198, ptr noundef byval(%struct.pt) align 16 %199)
          to label %1244 unwind label %1249

1244:                                             ; preds = %1235
  %1245 = invoke noundef x86_fp80 @_Z31circleHalfPlaneIntersectionArea6Circle4Line(ptr noundef byval(%struct.Circle) align 16 %196, ptr noundef byval(%struct.Line) align 16 %197)
          to label %1246 unwind label %1249

1246:                                             ; preds = %1244
  %1247 = load x86_fp80, ptr %7, align 16, !tbaa !11
  %1248 = fadd x86_fp80 %1247, %1245
  store x86_fp80 %1248, ptr %7, align 16, !tbaa !11
  br label %1253

1249:                                             ; preds = %1244, %1235, %1221
  %1250 = landingpad { ptr, i32 }
          cleanup
  %1251 = extractvalue { ptr, i32 } %1250, 0
  store ptr %1251, ptr %25, align 8
  %1252 = extractvalue { ptr, i32 } %1250, 1
  store i32 %1252, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %192) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %191) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %190) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %189) #6
  br label %1272

1253:                                             ; preds = %1246, %1234
  call void @llvm.lifetime.end.p0(i64 32, ptr %192) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %191) #6
  br label %1254

1254:                                             ; preds = %1253, %1218
  %1255 = load i32, ptr %189, align 4, !tbaa !9
  %1256 = sext i32 %1255 to i64
  %1257 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef %1256) #6
  %1258 = getelementptr inbounds %"struct.std::pair.52", ptr %1257, i32 0, i32 1
  %1259 = load i32, ptr %1258, align 16, !tbaa !38
  %1260 = load i32, ptr %190, align 4, !tbaa !9
  %1261 = add nsw i32 %1260, %1259
  store i32 %1261, ptr %190, align 4, !tbaa !9
  br label %1262

1262:                                             ; preds = %1254
  %1263 = load i32, ptr %189, align 4, !tbaa !9
  %1264 = add nsw i32 %1263, 1
  store i32 %1264, ptr %189, align 4, !tbaa !9
  br label %1212, !llvm.loop !42

1265:                                             ; preds = %1217
  store i32 0, ptr %10, align 4
  br label %1266

1266:                                             ; preds = %1265, %1152
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #6
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #6
  %1267 = load i32, ptr %10, align 4
  switch i32 %1267, label %1282 [
    i32 0, label %1268
    i32 24, label %1269
  ]

1268:                                             ; preds = %1266
  br label %1269

1269:                                             ; preds = %1268, %1266
  %1270 = load i32, ptr %97, align 4, !tbaa !9
  %1271 = add nsw i32 %1270, 1
  store i32 %1271, ptr %97, align 4, !tbaa !9
  br label %580, !llvm.loop !43

1272:                                             ; preds = %1249, %1201, %1172, %1148, %807
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #6
  br label %1273

1273:                                             ; preds = %1272, %667, %658, %649, %637
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #6
  br label %1276

1274:                                             ; preds = %584
  %1275 = load x86_fp80, ptr %7, align 16, !tbaa !11
  store i32 1, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  ret x86_fp80 %1275

1276:                                             ; preds = %1273, %574
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  br label %1277

1277:                                             ; preds = %1276
  %1278 = load ptr, ptr %25, align 8
  %1279 = load i32, ptr %26, align 4
  %1280 = insertvalue { ptr, i32 } poison, ptr %1278, 0
  %1281 = insertvalue { ptr, i32 } %1280, i32 %1279, 1
  resume { ptr, i32 } %1281

1282:                                             ; preds = %1266, %997, %566
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef x86_fp80 @"_ZZ22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EEENK3$_0clES0_S0_"(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJRS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK5AnglegeES_(ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.Angle) align 16) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS4_SaIS4_EEEEZ22polygonCircleUnionAreaRKS6_IS6_I2ptSaISA_EESaISC_EERKS6_I6CircleSaISH_EEE3$_1EvT_SN_T0_"(ptr, ptr) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorISt4pairI5AngleiESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_(ptr noundef nonnull align 8 dereferenceable(24), ptr, ptr, ptr) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEC2IPS3_vEERKNS0_IT_S8_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPK2ptSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK2ptSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK2ptSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS4_SaIS4_EEEEEvT_SA_(ptr, ptr) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(36) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorISt4pairI5AngleiESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK2ptneES_(ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorISt4pairIeiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long double", !7, i64 0}
!13 = !{i64 0, i64 16, !11, i64 16, i64 16, !11}
!14 = !{!15, !6, i64 0}
!15 = !{!"_ZTSSt16initializer_listISt4pairIeiEE", !6, i64 0, !16, i64 8}
!16 = !{!"long", !7, i64 0}
!17 = !{!15, !16, i64 8}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = !{i64 0, i64 16, !11, i64 16, i64 16, !11, i64 32, i64 16, !11}
!22 = distinct !{!22, !19}
!23 = !{!24, !12, i64 0}
!24 = !{!"_ZTSSt4pairIeiE", !12, i64 0, !10, i64 16}
!25 = !{!24, !10, i64 16}
!26 = distinct !{!26, !19}
!27 = distinct !{!27, !19}
!28 = distinct !{!28, !19}
!29 = !{!30, !12, i64 32}
!30 = !{!"_ZTS6Circle", !31, i64 0, !12, i64 32}
!31 = !{!"_ZTS2pt", !12, i64 0, !12, i64 16}
!32 = !{!33, !33, i64 0}
!33 = !{!"bool", !7, i64 0}
!34 = distinct !{!34, !19}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = distinct !{!37, !19}
!38 = !{!39, !10, i64 32}
!39 = !{!"_ZTSSt4pairI5AngleiE", !40, i64 0, !10, i64 32}
!40 = !{!"_ZTS5Angle", !31, i64 0}
!41 = distinct !{!41, !19}
!42 = distinct !{!42, !19}
!43 = distinct !{!43, !19}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.pt = type { x86_fp80, x86_fp80 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<pt, std::allocator<pt>>::_Vector_impl" }
%"struct.std::_Vector_base<pt, std::allocator<pt>>::_Vector_impl" = type { %"struct.std::_Vector_base<pt, std::allocator<pt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<pt, std::allocator<pt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Circle = type { %struct.pt, x86_fp80 }
%struct.Line = type { %struct.pt, x86_fp80 }
%class.anon.45 = type { i8 }
%"class.std::vector.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = type { %"struct.std::_Vector_base<std::pair<long double, int>, std::allocator<std::pair<long double, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<long double, int>, std::allocator<std::pair<long double, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<long double, int>, std::allocator<std::pair<long double, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<long double, int>, std::allocator<std::pair<long double, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.41" = type <{ x86_fp80, i32, [12 x i8] }>
%"struct.std::pair.20" = type { i32, i32 }
%"class.std::allocator.37" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.43" = type { ptr }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<std::pair<Angle, int>, std::allocator<std::pair<Angle, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<Angle, int>, std::allocator<std::pair<Angle, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<Angle, int>, std::allocator<std::pair<Angle, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<Angle, int>, std::allocator<std::pair<Angle, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Angle = type { %struct.pt }
%"class.__gnu_cxx::__normal_iterator.58" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.57" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.0" = type { ptr }

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z2ltee(x86_fp80 noundef, x86_fp80 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z3sgne(x86_fp80 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32), x86_fp80 noundef, x86_fp80 noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef x86_fp80 @_Z3dot2ptS_(ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef x86_fp80 @_Z5cross2ptS_(ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK2ptmiES_(ptr dead_on_unwind noalias writable sret(%struct.pt) align 16, ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(32) ptr @_ZN2ptmIES_(ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef x86_fp80 @_Z5area22ptS_S_(ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z3ccw2ptS_S_(ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK2ptplES_(ptr dead_on_unwind noalias writable sret(%struct.pt) align 16, ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK2pteqES_(ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI2ptSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(16) ptr @_ZSt3minIeERKT_S2_S2_(ptr noundef nonnull align 16 dereferenceable(16), ptr noundef nonnull align 16 dereferenceable(16)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(16) ptr @_ZSt3maxIeERKT_S2_S2_(ptr noundef nonnull align 16 dereferenceable(16), ptr noundef nonnull align 16 dereferenceable(16)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z22circleLineIntersection6Circle4Line(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef byval(%struct.Circle) align 16, ptr noundef byval(%struct.Line) align 16) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z21circleSegIntersection6Circle2ptS0_(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef byval(%struct.Circle) align 16, ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK6Circle8containsE2pt(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef x86_fp80 @_Z31circleHalfPlaneIntersectionArea6Circle4Line(ptr noundef byval(%struct.Circle) align 16, ptr noundef byval(%struct.Line) align 16) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z24circleCircleIntersection6CircleS_RSt6vectorI2ptSaIS1_EE(ptr noundef byval(%struct.Circle) align 16, ptr noundef byval(%struct.Circle) align 16, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI6CircleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5Angle8setPivotE2pt(ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK6Circle8containsES_(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef byval(%struct.Circle) align 16) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z3modii(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorI2ptSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorI2ptSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z11isInPolygonRKSt6vectorI2ptSaIS0_EES0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIeiEC2IiiTnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS3_S4_EEclsr6_PCCFPIS3_S4_EE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS_IS3_S4_E(ptr noundef nonnull align 16 dereferenceable(20), ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaISt4pairIeiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIeiESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr, ptr) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIeiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(20) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorISt4pairIeiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIeiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef x86_fp80 @_Z22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.anon.45, align 1
  %4 = alloca %struct.pt, align 16
  %5 = alloca %struct.pt, align 16
  %6 = alloca %struct.pt, align 16
  %7 = alloca %"class.std::vector.35", align 8
  %8 = alloca [2 x %"struct.std::pair.41"], align 16
  %9 = alloca %"struct.std::pair.20", align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"struct.std::pair.20", align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::allocator.37", align 1
  %16 = alloca %struct.pt, align 16
  %17 = alloca %struct.pt, align 16
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca x86_fp80, align 16
  %21 = alloca i32, align 4
  %22 = alloca %struct.pt, align 16
  %23 = alloca %struct.pt, align 16
  %24 = alloca x86_fp80, align 16
  %25 = alloca %struct.pt, align 16
  %26 = alloca %struct.pt, align 16
  %27 = alloca i32, align 4
  %28 = alloca x86_fp80, align 16
  %29 = alloca %struct.pt, align 16
  %30 = alloca %struct.pt, align 16
  %31 = alloca i32, align 4
  %32 = alloca %struct.Line, align 16
  %33 = alloca %"class.std::vector", align 8
  %34 = alloca x86_fp80, align 16
  %35 = alloca %struct.pt, align 16
  %36 = alloca %struct.pt, align 16
  %37 = alloca i32, align 4
  %38 = alloca x86_fp80, align 16
  %39 = alloca %struct.pt, align 16
  %40 = alloca %struct.pt, align 16
  %41 = alloca i32, align 4
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.43", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.43", align 8
  %44 = alloca x86_fp80, align 16
  %45 = alloca x86_fp80, align 16
  %46 = alloca %"class.std::vector.47", align 8
  %47 = alloca %struct.Angle, align 16
  %48 = alloca %struct.pt, align 16
  %49 = alloca %struct.pt, align 16
  %50 = alloca i32, align 4
  %51 = alloca %struct.Angle, align 16
  %52 = alloca %struct.pt, align 16
  %53 = alloca %struct.pt, align 16
  %54 = alloca i32, align 4
  %55 = alloca %struct.Angle, align 16
  %56 = alloca i32, align 4
  %57 = alloca %"class.std::vector", align 8
  %58 = alloca %struct.Circle, align 16
  %59 = alloca %struct.Angle, align 16
  %60 = alloca %struct.Angle, align 16
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca %struct.Angle, align 16
  %64 = alloca %struct.pt, align 16
  %65 = alloca %struct.pt, align 16
  %66 = alloca i32, align 4
  %67 = alloca %struct.Angle, align 16
  %68 = alloca i32, align 4
  %69 = alloca %"class.std::vector.47", align 8
  %70 = alloca %struct.pt, align 16
  %71 = alloca %struct.pt, align 16
  %72 = alloca %struct.pt, align 16
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca %"class.std::vector", align 8
  %76 = alloca %struct.Angle, align 16
  %77 = alloca i32, align 4
  %78 = alloca %struct.Angle, align 16
  %79 = alloca i32, align 4
  %80 = alloca %struct.Angle, align 16
  %81 = alloca i32, align 4
  %82 = alloca %struct.Angle, align 16
  %83 = alloca i32, align 4
  %84 = alloca %struct.Angle, align 16
  %85 = alloca %struct.pt, align 16
  %86 = alloca %struct.pt, align 16
  %87 = alloca i32, align 4
  %88 = alloca %struct.Angle, align 16
  %89 = alloca i32, align 4
  %90 = alloca %"class.__gnu_cxx::__normal_iterator.58", align 8
  %91 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %92 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8
  %93 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8
  %94 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %95 = alloca %"class.__gnu_cxx::__normal_iterator.57", align 8
  %96 = alloca %struct.pt, align 16
  %97 = alloca %struct.pt, align 16
  %98 = alloca %struct.pt, align 16
  %99 = alloca %struct.Circle, align 16
  %100 = alloca %struct.Line, align 16
  %101 = tail call noundef i64 @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  %102 = trunc i64 %101 to i32
  %103 = tail call noundef i64 @_ZNKSt6vectorI6CircleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  %104 = trunc i64 %103 to i32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #7
  %105 = icmp sgt i32 %102, 0
  br i1 %105, label %.preheader305.lr.ph, label %.preheader

.preheader305.lr.ph:                              ; preds = %2
  %106 = getelementptr inbounds i8, ptr %8, i64 32
  %107 = icmp sgt i32 %104, 0
  %wide.trip.count483 = and i64 %101, 2147483647
  %wide.trip.count472 = and i64 %103, 2147483647
  br label %.preheader305

.preheader305:                                    ; preds = %.preheader305.lr.ph, %._crit_edge418
  %indvars.iv480 = phi i64 [ 0, %.preheader305.lr.ph ], [ %indvars.iv.next481, %._crit_edge418 ]
  %.0180421 = phi x86_fp80 [ 0xK00000000000000000000, %.preheader305.lr.ph ], [ %.1.lcssa, %._crit_edge418 ]
  %108 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv480) #7
  %109 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %108) #7
  %110 = trunc i64 %109 to i32
  %111 = icmp sgt i32 %110, 0
  br i1 %111, label %.lr.ph417, label %._crit_edge418

.preheader:                                       ; preds = %._crit_edge418, %2
  %.0180.lcssa = phi x86_fp80 [ 0xK00000000000000000000, %2 ], [ %.1.lcssa, %._crit_edge418 ]
  %112 = icmp sgt i32 %104, 0
  br i1 %112, label %.lr.ph462, label %._crit_edge463

.lr.ph462:                                        ; preds = %.preheader
  %113 = icmp slt i32 %102, 1
  %sext504 = shl i64 %101, 32
  %114 = ashr exact i64 %sext504, 32
  %wide.trip.count500 = and i64 %103, 2147483647
  br label %297

._crit_edge418:                                   ; preds = %289, %.preheader305
  %.1.lcssa = phi x86_fp80 [ %.0180421, %.preheader305 ], [ %.2, %289 ]
  %indvars.iv.next481 = add nuw nsw i64 %indvars.iv480, 1
  %exitcond484.not = icmp eq i64 %indvars.iv.next481, %wide.trip.count483
  br i1 %exitcond484.not, label %.preheader, label %.preheader305, !llvm.loop !5

.lr.ph417:                                        ; preds = %.preheader305, %289
  %indvars.iv477 = phi i64 [ %indvars.iv.next478, %289 ], [ 0, %.preheader305 ]
  %.1416 = phi x86_fp80 [ %.2, %289 ], [ %.0180421, %.preheader305 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  %115 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv480) #7
  %116 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %indvars.iv477) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %4, ptr noundef nonnull align 16 dereferenceable(32) %116, i64 32, i1 false), !tbaa.struct !7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  %117 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv480) #7
  %indvars.iv.next478 = add nuw nsw i64 %indvars.iv477, 1
  %118 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv480) #7
  %119 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %118) #7
  %120 = trunc i64 %119 to i32
  %121 = trunc nuw nsw i64 %indvars.iv.next478 to i32
  %122 = call noundef i32 @_Z3modii(i32 noundef %121, i32 noundef %120)
  %123 = sext i32 %122 to i64
  %124 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %123) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 16 dereferenceable(32) %124, i64 32, i1 false), !tbaa.struct !7
  call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %6, ptr noundef nonnull align 16 dereferenceable(32) %124, i64 32, i1 false)
  %125 = call noundef zeroext i1 @_ZNK2pteqES_(ptr noundef nonnull align 16 dereferenceable(32) %4, ptr noundef nonnull byval(%struct.pt) align 16 %6)
  br i1 %125, label %289, label %126

126:                                              ; preds = %.lr.ph417
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  store i32 0, ptr %10, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  store i32 0, ptr %11, align 4, !tbaa !12
  %127 = call i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store i64 %127, ptr %9, align 8
  call void @_ZNSt4pairIeiEC2IiiTnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS3_S4_EEclsr6_PCCFPIS3_S4_EE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS_IS3_S4_E(ptr noundef nonnull align 16 dereferenceable(20) %8, ptr noundef nonnull align 4 dereferenceable(8) %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #7
  store i32 1, ptr %13, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #7
  store i32 0, ptr %14, align 4, !tbaa !12
  %128 = call i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %14)
  store i64 %128, ptr %12, align 8
  call void @_ZNSt4pairIeiEC2IiiTnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS3_S4_EEclsr6_PCCFPIS3_S4_EE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS_IS3_S4_E(ptr noundef nonnull align 16 dereferenceable(20) %106, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #7
  call void @_ZNSaISt4pairIeiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  invoke void @_ZNSt6vectorISt4pairIeiESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr nonnull %8, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %.lr.ph402.preheader unwind label %129

.lr.ph402.preheader:                              ; preds = %126
  call void @_ZNSt15__new_allocatorISt4pairIeiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #7
  br label %.lr.ph402

._crit_edge:                                      ; preds = %.loopexit303
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %32) #7
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %32, ptr noundef nonnull byval(%struct.pt) align 16 %4, ptr noundef nonnull byval(%struct.pt) align 16 %5)
          to label %.preheader304 unwind label %218

.preheader304:                                    ; preds = %._crit_edge
  br i1 %107, label %.lr.ph404, label %._crit_edge405

129:                                              ; preds = %126
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt4pairIeiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #7
  br label %296

.lr.ph402:                                        ; preds = %.lr.ph402.preheader, %.loopexit303
  %indvars.iv466 = phi i64 [ 0, %.lr.ph402.preheader ], [ %indvars.iv.next467, %.loopexit303 ]
  %.not286 = icmp eq i64 %indvars.iv480, %indvars.iv466
  br i1 %.not286, label %.loopexit303, label %.preheader302

.preheader302:                                    ; preds = %.lr.ph402
  %131 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv466) #7
  %132 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #7
  %133 = trunc i64 %132 to i32
  %134 = icmp sgt i32 %133, 0
  br i1 %134, label %.lr.ph, label %.loopexit303

.lr.ph:                                           ; preds = %.preheader302
  %135 = icmp uge i64 %indvars.iv466, %indvars.iv480
  br label %136

136:                                              ; preds = %.lr.ph, %209
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %209 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  %137 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv466) #7
  %138 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %137, i64 noundef %indvars.iv) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %16, ptr noundef nonnull align 16 dereferenceable(32) %138, i64 32, i1 false), !tbaa.struct !7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  %139 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv466) #7
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %140 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv466) #7
  %141 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %140) #7
  %142 = trunc i64 %141 to i32
  %143 = trunc nuw nsw i64 %indvars.iv.next to i32
  %144 = call noundef i32 @_Z3modii(i32 noundef %143, i32 noundef %142)
  %145 = sext i32 %144 to i64
  %146 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %139, i64 noundef %145) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %17, ptr noundef nonnull align 16 dereferenceable(32) %146, i64 32, i1 false), !tbaa.struct !7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #7
  %147 = invoke noundef i32 @_Z3ccw2ptS_S_(ptr noundef nonnull byval(%struct.pt) align 16 %4, ptr noundef nonnull byval(%struct.pt) align 16 %5, ptr noundef nonnull byval(%struct.pt) align 16 %16)
          to label %148 unwind label %170

148:                                              ; preds = %136
  store i32 %147, ptr %18, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #7
  %149 = invoke noundef i32 @_Z3ccw2ptS_S_(ptr noundef nonnull byval(%struct.pt) align 16 %4, ptr noundef nonnull byval(%struct.pt) align 16 %5, ptr noundef nonnull byval(%struct.pt) align 16 %17)
          to label %150 unwind label %172

150:                                              ; preds = %148
  store i32 %149, ptr %19, align 4, !tbaa !12
  %151 = load i32, ptr %18, align 4
  %.not287 = icmp eq i32 %151, %149
  br i1 %.not287, label %180, label %152

152:                                              ; preds = %150
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %19)
  %154 = load i32, ptr %153, align 4, !tbaa !12
  %155 = icmp slt i32 %154, 0
  br i1 %155, label %156, label %209

156:                                              ; preds = %152
  %157 = invoke noundef x86_fp80 @_Z5area22ptS_S_(ptr noundef nonnull byval(%struct.pt) align 16 %16, ptr noundef nonnull byval(%struct.pt) align 16 %17, ptr noundef nonnull byval(%struct.pt) align 16 %4)
          to label %158 unwind label %174

158:                                              ; preds = %156
  %159 = invoke noundef x86_fp80 @_Z5area22ptS_S_(ptr noundef nonnull byval(%struct.pt) align 16 %16, ptr noundef nonnull byval(%struct.pt) align 16 %17, ptr noundef nonnull byval(%struct.pt) align 16 %5)
          to label %160 unwind label %176

160:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #7
  %161 = fsub x86_fp80 %157, %159
  %162 = fdiv x86_fp80 %157, %161
  store x86_fp80 %162, ptr %20, align 16, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  %163 = load i32, ptr %18, align 4, !tbaa !12
  %164 = load i32, ptr %19, align 4, !tbaa !12
  %165 = sub nsw i32 %163, %164
  %166 = sitofp i32 %165 to x86_fp80
  %167 = call noundef i32 @_Z3sgne(x86_fp80 noundef %166)
  store i32 %167, ptr %21, align 4, !tbaa !12
  %168 = invoke noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 16 dereferenceable(16) %20, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %169 unwind label %178

169:                                              ; preds = %160
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  br label %209

170:                                              ; preds = %136
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %215

172:                                              ; preds = %183, %182, %148
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %214

174:                                              ; preds = %156
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %214

176:                                              ; preds = %158
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %214

178:                                              ; preds = %160
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  br label %214

180:                                              ; preds = %150
  %181 = icmp ne i32 %149, 0
  %or.cond4 = or i1 %135, %181
  br i1 %or.cond4, label %209, label %182

182:                                              ; preds = %180
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %22, ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull byval(%struct.pt) align 16 %4)
          to label %183 unwind label %172

183:                                              ; preds = %182
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %23, ptr noundef nonnull align 16 dereferenceable(32) %17, ptr noundef nonnull byval(%struct.pt) align 16 %16)
          to label %184 unwind label %172

184:                                              ; preds = %183
  %185 = call noundef x86_fp80 @_Z3dot2ptS_(ptr noundef nonnull byval(%struct.pt) align 16 %22, ptr noundef nonnull byval(%struct.pt) align 16 %23)
  %186 = call noundef i32 @_Z3sgne(x86_fp80 noundef %185)
  %187 = icmp sgt i32 %186, 0
  br i1 %187, label %188, label %209

188:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #7
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %25, ptr noundef nonnull align 16 dereferenceable(32) %16, ptr noundef nonnull byval(%struct.pt) align 16 %4)
          to label %189 unwind label %199

189:                                              ; preds = %188
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %26, ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull byval(%struct.pt) align 16 %4)
          to label %190 unwind label %199

190:                                              ; preds = %189
  %191 = call noundef x86_fp80 @"_ZZ22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EEENK3$_0clES0_S0_"(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull byval(%struct.pt) align 16 %25, ptr noundef nonnull byval(%struct.pt) align 16 %26)
  store x86_fp80 %191, ptr %24, align 16, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #7
  store i32 1, ptr %27, align 4, !tbaa !12
  %192 = invoke noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 16 dereferenceable(16) %24, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %193 unwind label %201

193:                                              ; preds = %190
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #7
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %29, ptr noundef nonnull align 16 dereferenceable(32) %17, ptr noundef nonnull byval(%struct.pt) align 16 %4)
          to label %194 unwind label %204

194:                                              ; preds = %193
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %30, ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull byval(%struct.pt) align 16 %4)
          to label %195 unwind label %204

195:                                              ; preds = %194
  %196 = call noundef x86_fp80 @"_ZZ22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EEENK3$_0clES0_S0_"(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull byval(%struct.pt) align 16 %29, ptr noundef nonnull byval(%struct.pt) align 16 %30)
  store x86_fp80 %196, ptr %28, align 16, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #7
  store i32 -1, ptr %31, align 4, !tbaa !12
  %197 = invoke noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 16 dereferenceable(16) %28, ptr noundef nonnull align 4 dereferenceable(4) %31)
          to label %198 unwind label %206

198:                                              ; preds = %195
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  br label %209

199:                                              ; preds = %189, %188
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %203

201:                                              ; preds = %190
  %202 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #7
  br label %203

203:                                              ; preds = %201, %199
  %.pn288 = phi { ptr, i32 } [ %202, %201 ], [ %200, %199 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  br label %214

204:                                              ; preds = %194, %193
  %205 = landingpad { ptr, i32 }
          cleanup
  br label %208

206:                                              ; preds = %195
  %207 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #7
  br label %208

208:                                              ; preds = %206, %204
  %.pn290 = phi { ptr, i32 } [ %207, %206 ], [ %205, %204 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  br label %214

209:                                              ; preds = %180, %184, %198, %152, %169
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  %210 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv466) #7
  %211 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %210) #7
  %sext = shl i64 %211, 32
  %212 = ashr exact i64 %sext, 32
  %213 = icmp slt i64 %indvars.iv.next, %212
  br i1 %213, label %136, label %.loopexit303, !llvm.loop !14

214:                                              ; preds = %174, %178, %176, %208, %203, %172
  %.pn292.pn.pn = phi { ptr, i32 } [ %.pn290, %208 ], [ %.pn288, %203 ], [ %173, %172 ], [ %175, %174 ], [ %179, %178 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  br label %215

215:                                              ; preds = %214, %170
  %.pn292.pn.pn.pn = phi { ptr, i32 } [ %.pn292.pn.pn, %214 ], [ %171, %170 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %295

.loopexit303:                                     ; preds = %209, %.preheader302, %.lr.ph402
  %indvars.iv.next467 = add nuw nsw i64 %indvars.iv466, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next467, %wide.trip.count483
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph402, !llvm.loop !15

._crit_edge405:                                   ; preds = %250, %.preheader304
  %216 = call ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  %217 = call ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %216, ptr %217)
          to label %253 unwind label %218

218:                                              ; preds = %._crit_edge405, %._crit_edge
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %294

.lr.ph404:                                        ; preds = %.preheader304, %250
  %indvars.iv469 = phi i64 [ %indvars.iv.next470, %250 ], [ 0, %.preheader304 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #7
  %220 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv469) #7
  invoke void @_Z22circleLineIntersection6Circle4Line(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %33, ptr noundef nonnull byval(%struct.Circle) align 16 %220, ptr noundef nonnull byval(%struct.Line) align 16 %32)
          to label %221 unwind label %238

221:                                              ; preds = %.lr.ph404
  %222 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  %223 = and i64 %222, 4294967295
  %224 = icmp eq i64 %223, 2
  br i1 %224, label %225, label %250

225:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #7
  %226 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef 0) #7
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %35, ptr noundef nonnull align 16 dereferenceable(32) %226, ptr noundef nonnull byval(%struct.pt) align 16 %4)
          to label %227 unwind label %240

227:                                              ; preds = %225
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %36, ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull byval(%struct.pt) align 16 %4)
          to label %228 unwind label %240

228:                                              ; preds = %227
  %229 = call noundef x86_fp80 @"_ZZ22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EEENK3$_0clES0_S0_"(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull byval(%struct.pt) align 16 %35, ptr noundef nonnull byval(%struct.pt) align 16 %36)
  store x86_fp80 %229, ptr %34, align 16, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #7
  store i32 1, ptr %37, align 4, !tbaa !12
  %230 = invoke noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 16 dereferenceable(16) %34, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %231 unwind label %242

231:                                              ; preds = %228
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #7
  %232 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef 1) #7
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %39, ptr noundef nonnull align 16 dereferenceable(32) %232, ptr noundef nonnull byval(%struct.pt) align 16 %4)
          to label %233 unwind label %245

233:                                              ; preds = %231
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %40, ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull byval(%struct.pt) align 16 %4)
          to label %234 unwind label %245

234:                                              ; preds = %233
  %235 = call noundef x86_fp80 @"_ZZ22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EEENK3$_0clES0_S0_"(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull byval(%struct.pt) align 16 %39, ptr noundef nonnull byval(%struct.pt) align 16 %40)
  store x86_fp80 %235, ptr %38, align 16, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #7
  store i32 -1, ptr %41, align 4, !tbaa !12
  %236 = invoke noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE12emplace_backIJeiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 16 dereferenceable(16) %38, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %237 unwind label %247

237:                                              ; preds = %234
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  br label %250

238:                                              ; preds = %.lr.ph404
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %252

240:                                              ; preds = %227, %225
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %244

242:                                              ; preds = %228
  %243 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #7
  br label %244

244:                                              ; preds = %242, %240
  %.pn279 = phi { ptr, i32 } [ %243, %242 ], [ %241, %240 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  br label %251

245:                                              ; preds = %233, %231
  %246 = landingpad { ptr, i32 }
          cleanup
  br label %249

247:                                              ; preds = %234
  %248 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #7
  br label %249

249:                                              ; preds = %247, %245
  %.pn281 = phi { ptr, i32 } [ %248, %247 ], [ %246, %245 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  br label %251

250:                                              ; preds = %237, %221
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #7
  %indvars.iv.next470 = add nuw nsw i64 %indvars.iv469, 1
  %exitcond473.not = icmp eq i64 %indvars.iv.next470, %wide.trip.count472
  br i1 %exitcond473.not, label %._crit_edge405, label %.lr.ph404, !llvm.loop !16

251:                                              ; preds = %249, %244
  %.pn281.pn = phi { ptr, i32 } [ %.pn281, %249 ], [ %.pn279, %244 ]
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  br label %252

252:                                              ; preds = %251, %238
  %.pn281.pn.pn = phi { ptr, i32 } [ %.pn281.pn, %251 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #7
  br label %294

253:                                              ; preds = %._crit_edge405
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #7
  %254 = call ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  store ptr %254, ptr %42, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #7
  %255 = call ptr @_ZNSt6vectorISt4pairIeiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  store ptr %255, ptr %43, align 8
  %256 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIeiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  br i1 %256, label %.lr.ph407, label %._crit_edge408

._crit_edge408:                                   ; preds = %.lr.ph407, %253
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  %257 = call noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 0) #7
  %258 = getelementptr inbounds i8, ptr %257, i64 16
  %259 = load i32, ptr %258, align 16, !tbaa !17
  %260 = call noundef i64 @_ZNKSt6vectorISt4pairIeiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  %261 = trunc i64 %260 to i32
  %262 = icmp sgt i32 %261, 1
  br i1 %262, label %.lr.ph413, label %._crit_edge414

.lr.ph407:                                        ; preds = %253, %.lr.ph407
  %263 = call noundef nonnull align 16 dereferenceable(20) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #7
  store x86_fp80 0xK00000000000000000000, ptr %44, align 16, !tbaa !8
  %264 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZSt3maxIeERKT_S2_S2_(ptr noundef nonnull align 16 dereferenceable(16) %263, ptr noundef nonnull align 16 dereferenceable(16) %44)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #7
  store x86_fp80 0xK3FFF8000000000000000, ptr %45, align 16, !tbaa !8
  %265 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZSt3minIeERKT_S2_S2_(ptr noundef nonnull align 16 dereferenceable(16) %264, ptr noundef nonnull align 16 dereferenceable(16) %45)
  %266 = load x86_fp80, ptr %265, align 16, !tbaa !8
  store x86_fp80 %266, ptr %263, align 16, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIeiESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  %268 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIeiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  br i1 %268, label %.lr.ph407, label %._crit_edge408

._crit_edge414:                                   ; preds = %281, %._crit_edge408
  %.0226.lcssa = phi x86_fp80 [ 0xK00000000000000000000, %._crit_edge408 ], [ %.1227, %281 ]
  %269 = call noundef x86_fp80 @_Z5cross2ptS_(ptr noundef nonnull byval(%struct.pt) align 16 %4, ptr noundef nonnull byval(%struct.pt) align 16 %5)
  %270 = fmul x86_fp80 %.0226.lcssa, %269
  %271 = fmul x86_fp80 %270, 0xK3FFE8000000000000000
  %272 = fadd x86_fp80 %.1416, %271
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %32) #7
  call void @_ZNSt6vectorISt4pairIeiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  br label %289

.lr.ph413:                                        ; preds = %._crit_edge408, %281
  %indvars.iv474 = phi i64 [ %indvars.iv.next475, %281 ], [ 1, %._crit_edge408 ]
  %.0226411 = phi x86_fp80 [ %.1227, %281 ], [ 0xK00000000000000000000, %._crit_edge408 ]
  %.0229409 = phi i32 [ %285, %281 ], [ %259, %._crit_edge408 ]
  %.not278 = icmp eq i32 %.0229409, 0
  br i1 %.not278, label %273, label %281

273:                                              ; preds = %.lr.ph413
  %274 = call noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv474) #7
  %275 = load x86_fp80, ptr %274, align 16, !tbaa !19
  %276 = add nsw i64 %indvars.iv474, -1
  %277 = call noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %276) #7
  %278 = load x86_fp80, ptr %277, align 16, !tbaa !19
  %279 = fsub x86_fp80 %275, %278
  %280 = fadd x86_fp80 %.0226411, %279
  br label %281

281:                                              ; preds = %273, %.lr.ph413
  %.1227 = phi x86_fp80 [ %.0226411, %.lr.ph413 ], [ %280, %273 ]
  %282 = call noundef nonnull align 16 dereferenceable(20) ptr @_ZNSt6vectorISt4pairIeiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv474) #7
  %283 = getelementptr inbounds i8, ptr %282, i64 16
  %284 = load i32, ptr %283, align 16, !tbaa !17
  %285 = add nsw i32 %284, %.0229409
  %indvars.iv.next475 = add nuw nsw i64 %indvars.iv474, 1
  %286 = call noundef i64 @_ZNKSt6vectorISt4pairIeiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  %sext502 = shl i64 %286, 32
  %287 = ashr exact i64 %sext502, 32
  %288 = icmp slt i64 %indvars.iv.next475, %287
  br i1 %288, label %.lr.ph413, label %._crit_edge414, !llvm.loop !20

289:                                              ; preds = %.lr.ph417, %._crit_edge414
  %.2 = phi x86_fp80 [ %272, %._crit_edge414 ], [ %.1416, %.lr.ph417 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  %290 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv480) #7
  %291 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %290) #7
  %sext503 = shl i64 %291, 32
  %292 = ashr exact i64 %sext503, 32
  %293 = icmp slt i64 %indvars.iv.next478, %292
  br i1 %293, label %.lr.ph417, label %._crit_edge418, !llvm.loop !21

294:                                              ; preds = %252, %218
  %.pn281.pn.pn.pn = phi { ptr, i32 } [ %.pn281.pn.pn, %252 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %32) #7
  br label %295

295:                                              ; preds = %294, %215
  %.pn292.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn292.pn.pn.pn, %215 ], [ %.pn281.pn.pn.pn, %294 ]
  call void @_ZNSt6vectorISt4pairIeiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  br label %296

296:                                              ; preds = %295, %129
  %.pn292.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn292.pn.pn.pn.pn, %295 ], [ %130, %129 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %612

._crit_edge463:                                   ; preds = %.loopexit, %.preheader
  %.3.lcssa = phi x86_fp80 [ %.0180.lcssa, %.preheader ], [ %.7, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #7
  ret x86_fp80 %.3.lcssa

297:                                              ; preds = %.lr.ph462, %.loopexit
  %indvars.iv497 = phi i64 [ 0, %.lr.ph462 ], [ %indvars.iv.next498, %.loopexit ]
  %.3461 = phi x86_fp80 [ %.0180.lcssa, %.lr.ph462 ], [ %.7, %.loopexit ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %46) #7
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %298 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  call void @_ZN5Angle8setPivotE2pt(ptr noundef nonnull byval(%struct.pt) align 16 %298)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #7
  %299 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %300 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %301 = getelementptr inbounds i8, ptr %300, i64 32
  %302 = load x86_fp80, ptr %301, align 16, !tbaa !22
  call void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32) %49, x86_fp80 noundef %302, x86_fp80 noundef 0xK00000000000000000000)
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %48, ptr noundef nonnull align 16 dereferenceable(32) %299, ptr noundef nonnull byval(%struct.pt) align 16 %49)
          to label %303 unwind label %315

303:                                              ; preds = %297
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %47, ptr noundef nonnull byval(%struct.pt) align 16 %48)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #7
  store i32 0, ptr %50, align 4, !tbaa !12
  %304 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 16 dereferenceable(32) %47, ptr noundef nonnull align 4 dereferenceable(4) %50)
          to label %305 unwind label %317

305:                                              ; preds = %303
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #7
  %306 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %307 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %308 = getelementptr inbounds i8, ptr %307, i64 32
  %309 = load x86_fp80, ptr %308, align 16, !tbaa !22
  call void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32) %53, x86_fp80 noundef %309, x86_fp80 noundef 0xK00000000000000000000)
  invoke void @_ZNK2ptplES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %52, ptr noundef nonnull align 16 dereferenceable(32) %306, ptr noundef nonnull byval(%struct.pt) align 16 %53)
          to label %310 unwind label %320

310:                                              ; preds = %305
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %51, ptr noundef nonnull byval(%struct.pt) align 16 %52)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #7
  store i32 0, ptr %54, align 4, !tbaa !12
  %311 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 16 dereferenceable(32) %51, ptr noundef nonnull align 4 dereferenceable(4) %54)
          to label %312 unwind label %322

312:                                              ; preds = %310
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #7
  %313 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %55, ptr noundef nonnull byval(%struct.pt) align 16 %313)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %56) #7
  store i32 0, ptr %56, align 4, !tbaa !12
  %314 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 16 dereferenceable(32) %55, ptr noundef nonnull align 4 dereferenceable(4) %56)
          to label %.lr.ph426.preheader unwind label %325

.lr.ph426.preheader:                              ; preds = %312
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #7
  br label %.lr.ph426

315:                                              ; preds = %297
  %316 = landingpad { ptr, i32 }
          cleanup
  br label %319

317:                                              ; preds = %303
  %318 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #7
  br label %319

319:                                              ; preds = %317, %315
  %.pn = phi { ptr, i32 } [ %318, %317 ], [ %316, %315 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  br label %611

320:                                              ; preds = %305
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %324

322:                                              ; preds = %310
  %323 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #7
  br label %324

324:                                              ; preds = %322, %320
  %.pn253 = phi { ptr, i32 } [ %323, %322 ], [ %321, %320 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #7
  br label %611

325:                                              ; preds = %312
  %326 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #7
  br label %611

.lr.ph426:                                        ; preds = %.lr.ph426.preheader, %393
  %indvars.iv485 = phi i64 [ 0, %.lr.ph426.preheader ], [ %indvars.iv.next486, %393 ]
  %.not = icmp eq i64 %indvars.iv497, %indvars.iv485
  br i1 %.not, label %393, label %327

327:                                              ; preds = %.lr.ph426
  %328 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv485) #7
  %329 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %330 = invoke noundef i32 @_ZNK6Circle8containsES_(ptr noundef nonnull align 16 dereferenceable(48) %328, ptr noundef nonnull byval(%struct.Circle) align 16 %329)
          to label %331 unwind label %344

331:                                              ; preds = %327
  %332 = icmp sgt i32 %330, 0
  br i1 %332, label %.loopexit, label %333

333:                                              ; preds = %331
  %334 = icmp eq i32 %330, 0
  br i1 %334, label %335, label %346

335:                                              ; preds = %333
  %336 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %337 = getelementptr inbounds i8, ptr %336, i64 32
  %338 = load x86_fp80, ptr %337, align 16, !tbaa !22
  %339 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv485) #7
  %340 = getelementptr inbounds i8, ptr %339, i64 32
  %341 = load x86_fp80, ptr %340, align 16, !tbaa !22
  %342 = call noundef zeroext i1 @_Z2ltee(x86_fp80 noundef %338, x86_fp80 noundef %341)
  %343 = icmp ult i64 %indvars.iv485, %indvars.iv497
  %or.cond = or i1 %343, %342
  br i1 %or.cond, label %.loopexit, label %346

344:                                              ; preds = %327
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %611

346:                                              ; preds = %335, %333
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #7
  call void @_ZNSt6vectorI2ptSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  %347 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %58, ptr noundef nonnull align 16 dereferenceable(48) %347, i64 48, i1 false), !tbaa.struct !25
  %348 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv485) #7
  %349 = invoke noundef i32 @_Z24circleCircleIntersection6CircleS_RSt6vectorI2ptSaIS1_EE(ptr noundef nonnull byval(%struct.Circle) align 16 %58, ptr noundef nonnull byval(%struct.Circle) align 16 %348, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %350 unwind label %374

350:                                              ; preds = %346
  %351 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  %352 = and i64 %351, 4294967295
  %353 = icmp eq i64 %352, 2
  br i1 %353, label %354, label %391

354:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #7
  %355 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 0) #7
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %59, ptr noundef nonnull byval(%struct.pt) align 16 %355)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #7
  %356 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 1) #7
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %60, ptr noundef nonnull byval(%struct.pt) align 16 %356)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %61) #7
  store i32 1, ptr %61, align 4, !tbaa !12
  %357 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJRS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 16 dereferenceable(32) %59, ptr noundef nonnull align 4 dereferenceable(4) %61)
          to label %358 unwind label %378

358:                                              ; preds = %354
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %62) #7
  store i32 -1, ptr %62, align 4, !tbaa !12
  %359 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJRS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 16 dereferenceable(32) %60, ptr noundef nonnull align 4 dereferenceable(4) %62)
          to label %360 unwind label %380

360:                                              ; preds = %358
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %62) #7
  %361 = invoke noundef zeroext i1 @_ZNK5AnglegeES_(ptr noundef nonnull align 16 dereferenceable(32) %59, ptr noundef nonnull byval(%struct.Angle) align 16 %60)
          to label %362 unwind label %376

362:                                              ; preds = %360
  br i1 %361, label %363, label %389

363:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #7
  %364 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %365 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %366 = getelementptr inbounds i8, ptr %365, i64 32
  %367 = load x86_fp80, ptr %366, align 16, !tbaa !22
  call void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32) %65, x86_fp80 noundef %367, x86_fp80 noundef 0xK00000000000000000000)
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %64, ptr noundef nonnull align 16 dereferenceable(32) %364, ptr noundef nonnull byval(%struct.pt) align 16 %65)
          to label %368 unwind label %382

368:                                              ; preds = %363
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %63, ptr noundef nonnull byval(%struct.pt) align 16 %64)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %66) #7
  store i32 1, ptr %66, align 4, !tbaa !12
  %369 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 16 dereferenceable(32) %63, ptr noundef nonnull align 4 dereferenceable(4) %66)
          to label %370 unwind label %384

370:                                              ; preds = %368
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #7
  %371 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %67, ptr noundef nonnull byval(%struct.pt) align 16 %371)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %68) #7
  store i32 -1, ptr %68, align 4, !tbaa !12
  %372 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 16 dereferenceable(32) %67, ptr noundef nonnull align 4 dereferenceable(4) %68)
          to label %373 unwind label %387

373:                                              ; preds = %370
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %68) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #7
  br label %389

374:                                              ; preds = %346
  %375 = landingpad { ptr, i32 }
          cleanup
  br label %392

376:                                              ; preds = %360
  %377 = landingpad { ptr, i32 }
          cleanup
  br label %390

378:                                              ; preds = %354
  %379 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #7
  br label %390

380:                                              ; preds = %358
  %381 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %62) #7
  br label %390

382:                                              ; preds = %363
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %386

384:                                              ; preds = %368
  %385 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #7
  br label %386

386:                                              ; preds = %384, %382
  %.pn255 = phi { ptr, i32 } [ %385, %384 ], [ %383, %382 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #7
  br label %390

387:                                              ; preds = %370
  %388 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %68) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #7
  br label %390

389:                                              ; preds = %373, %362
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  br label %391

390:                                              ; preds = %387, %386, %380, %378, %376
  %.pn257 = phi { ptr, i32 } [ %388, %387 ], [ %.pn255, %386 ], [ %377, %376 ], [ %381, %380 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  br label %392

391:                                              ; preds = %350, %389
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #7
  br label %393

392:                                              ; preds = %390, %374
  %.pn257.pn = phi { ptr, i32 } [ %.pn257, %390 ], [ %375, %374 ]
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #7
  br label %611

393:                                              ; preds = %391, %.lr.ph426
  %indvars.iv.next486 = add nuw nsw i64 %indvars.iv485, 1
  %exitcond489.not = icmp eq i64 %indvars.iv.next486, %wide.trip.count500
  br i1 %exitcond489.not, label %.thread, label %.lr.ph426, !llvm.loop !26

.thread:                                          ; preds = %393
  br i1 %113, label %._crit_edge449.thread510, label %.lr.ph448

._crit_edge449:                                   ; preds = %555
  br i1 %.8245, label %.loopexit, label %._crit_edge449.thread510

.lr.ph448:                                        ; preds = %.thread, %555
  %indvars.iv492 = phi i64 [ %indvars.iv.next493, %555 ], [ 0, %.thread ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %69) #7
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  %394 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv492) #7
  %395 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %394) #7
  %396 = trunc i64 %395 to i32
  %397 = icmp sgt i32 %396, 0
  br i1 %397, label %.lr.ph435, label %._crit_edge436

._crit_edge436:                                   ; preds = %488, %.lr.ph448
  %.0231.lcssa = phi i1 [ false, %.lr.ph448 ], [ %.2233, %488 ]
  %398 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  %399 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS4_SaIS4_EEEEZ22polygonCircleUnionAreaRKS6_IS6_I2ptSaISA_EESaISC_EERKS6_I6CircleSaISH_EEE3$_1EvT_SN_T0_"(ptr %398, ptr %399)
          to label %498 unwind label %516

.lr.ph435:                                        ; preds = %.lr.ph448, %488
  %indvars.iv490 = phi i64 [ %indvars.iv.next491, %488 ], [ 0, %.lr.ph448 ]
  %.0231432 = phi i1 [ %.2233, %488 ], [ false, %.lr.ph448 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #7
  %400 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv492) #7
  %401 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %400, i64 noundef %indvars.iv490) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %70, ptr noundef nonnull align 16 dereferenceable(32) %401, i64 32, i1 false), !tbaa.struct !7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71)
  %402 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv492) #7
  %indvars.iv.next491 = add nuw nsw i64 %indvars.iv490, 1
  %403 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv492) #7
  %404 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %403) #7
  %405 = trunc i64 %404 to i32
  %406 = trunc nuw nsw i64 %indvars.iv.next491 to i32
  %407 = call noundef i32 @_Z3modii(i32 noundef %406, i32 noundef %405)
  %408 = sext i32 %407 to i64
  %409 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %402, i64 noundef %408) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %71, ptr noundef nonnull align 16 dereferenceable(32) %409, i64 32, i1 false), !tbaa.struct !7
  call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %72, ptr noundef nonnull align 16 dereferenceable(32) %409, i64 32, i1 false)
  %410 = invoke noundef zeroext i1 @_ZNK2pteqES_(ptr noundef nonnull align 16 dereferenceable(32) %70, ptr noundef nonnull byval(%struct.pt) align 16 %72)
          to label %411 unwind label %412

411:                                              ; preds = %.lr.ph435
  br i1 %410, label %488, label %414

412:                                              ; preds = %.lr.ph435
  %413 = landingpad { ptr, i32 }
          cleanup
  br label %497

414:                                              ; preds = %411
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %73) #7
  %415 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %416 = invoke noundef i32 @_ZNK6Circle8containsE2pt(ptr noundef nonnull align 16 dereferenceable(48) %415, ptr noundef nonnull byval(%struct.pt) align 16 %70)
          to label %417 unwind label %442

417:                                              ; preds = %414
  store i32 %416, ptr %73, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %74) #7
  %418 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %419 = invoke noundef i32 @_ZNK6Circle8containsE2pt(ptr noundef nonnull align 16 dereferenceable(48) %418, ptr noundef nonnull byval(%struct.pt) align 16 %71)
          to label %420 unwind label %444

420:                                              ; preds = %417
  store i32 %419, ptr %74, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %75) #7
  %421 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  invoke void @_Z21circleSegIntersection6Circle2ptS0_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %75, ptr noundef nonnull byval(%struct.Circle) align 16 %421, ptr noundef nonnull byval(%struct.pt) align 16 %70, ptr noundef nonnull byval(%struct.pt) align 16 %71)
          to label %422 unwind label %446

422:                                              ; preds = %420
  %423 = load i32, ptr %73, align 4, !tbaa !12
  %424 = load i32, ptr %74, align 4, !tbaa !12
  %.not268 = icmp eq i32 %423, %424
  br i1 %.not268, label %472, label %425

425:                                              ; preds = %422
  %426 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %73, ptr noundef nonnull align 4 dereferenceable(4) %74)
  %427 = load i32, ptr %426, align 4, !tbaa !12
  %428 = icmp sgt i32 %427, 0
  br i1 %428, label %429, label %450

429:                                              ; preds = %425
  %430 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %75) #7
  %431 = and i64 %430, 4294967295
  %432 = icmp eq i64 %431, 1
  br i1 %432, label %433, label %450

433:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %76) #7
  %434 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef 0) #7
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %76, ptr noundef nonnull byval(%struct.pt) align 16 %434)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %77) #7
  %435 = load i32, ptr %73, align 4, !tbaa !12
  %436 = load i32, ptr %74, align 4, !tbaa !12
  %437 = sub nsw i32 %435, %436
  %438 = sitofp i32 %437 to x86_fp80
  %439 = call noundef i32 @_Z3sgne(x86_fp80 noundef %438)
  store i32 %439, ptr %77, align 4, !tbaa !12
  %440 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 16 dereferenceable(32) %76, ptr noundef nonnull align 4 dereferenceable(4) %77)
          to label %441 unwind label %448

441:                                              ; preds = %433
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #7
  br label %487

442:                                              ; preds = %414
  %443 = landingpad { ptr, i32 }
          cleanup
  br label %496

444:                                              ; preds = %417
  %445 = landingpad { ptr, i32 }
          cleanup
  br label %495

446:                                              ; preds = %420
  %447 = landingpad { ptr, i32 }
          cleanup
  br label %494

448:                                              ; preds = %433
  %449 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #7
  br label %493

450:                                              ; preds = %429, %425
  %451 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %73, ptr noundef nonnull align 4 dereferenceable(4) %74)
  %452 = load i32, ptr %451, align 4, !tbaa !12
  %453 = icmp slt i32 %452, 0
  br i1 %453, label %454, label %487

454:                                              ; preds = %450
  %455 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %75) #7
  %456 = and i64 %455, 4294967295
  %457 = icmp eq i64 %456, 2
  br i1 %457, label %458, label %487

458:                                              ; preds = %454
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %78) #7
  %459 = load i32, ptr %73, align 4, !tbaa !12
  %460 = icmp eq i32 %459, 0
  %461 = zext i1 %460 to i64
  %462 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef %461) #7
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %78, ptr noundef nonnull byval(%struct.pt) align 16 %462)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %79) #7
  %463 = load i32, ptr %73, align 4, !tbaa !12
  %464 = load i32, ptr %74, align 4, !tbaa !12
  %465 = sub nsw i32 %463, %464
  %466 = sitofp i32 %465 to x86_fp80
  %467 = call noundef i32 @_Z3sgne(x86_fp80 noundef %466)
  store i32 %467, ptr %79, align 4, !tbaa !12
  %468 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 16 dereferenceable(32) %78, ptr noundef nonnull align 4 dereferenceable(4) %79)
          to label %469 unwind label %470

469:                                              ; preds = %458
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #7
  br label %487

470:                                              ; preds = %458
  %471 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #7
  br label %493

472:                                              ; preds = %422
  %473 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %75) #7
  %474 = and i64 %473, 4294967295
  %475 = icmp eq i64 %474, 2
  br i1 %475, label %476, label %487

476:                                              ; preds = %472
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %80) #7
  %477 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef 1) #7
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %80, ptr noundef nonnull byval(%struct.pt) align 16 %477)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %81) #7
  store i32 1, ptr %81, align 4, !tbaa !12
  %478 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 16 dereferenceable(32) %80, ptr noundef nonnull align 4 dereferenceable(4) %81)
          to label %479 unwind label %483

479:                                              ; preds = %476
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %81) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %82) #7
  %480 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef 0) #7
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %82, ptr noundef nonnull byval(%struct.pt) align 16 %480)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %83) #7
  store i32 -1, ptr %83, align 4, !tbaa !12
  %481 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 16 dereferenceable(32) %82, ptr noundef nonnull align 4 dereferenceable(4) %83)
          to label %482 unwind label %485

482:                                              ; preds = %479
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #7
  br label %487

483:                                              ; preds = %476
  %484 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %81) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #7
  br label %493

485:                                              ; preds = %479
  %486 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #7
  br label %493

487:                                              ; preds = %472, %482, %441, %469, %454, %450
  %.1232 = phi i1 [ true, %441 ], [ true, %469 ], [ %.0231432, %454 ], [ %.0231432, %450 ], [ true, %482 ], [ %.0231432, %472 ]
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %75) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %73) #7
  br label %488

488:                                              ; preds = %411, %487
  %.2233 = phi i1 [ %.1232, %487 ], [ %.0231432, %411 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #7
  %489 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv492) #7
  %490 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %489) #7
  %sext505 = shl i64 %490, 32
  %491 = ashr exact i64 %sext505, 32
  %492 = icmp slt i64 %indvars.iv.next491, %491
  br i1 %492, label %.lr.ph435, label %._crit_edge436, !llvm.loop !27

493:                                              ; preds = %485, %483, %470, %448
  %.pn269 = phi { ptr, i32 } [ %449, %448 ], [ %471, %470 ], [ %486, %485 ], [ %484, %483 ]
  call void @_ZNSt6vectorI2ptSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #7
  br label %494

494:                                              ; preds = %493, %446
  %.pn269.pn = phi { ptr, i32 } [ %.pn269, %493 ], [ %447, %446 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %75) #7
  br label %495

495:                                              ; preds = %494, %444
  %.pn269.pn.pn = phi { ptr, i32 } [ %.pn269.pn, %494 ], [ %445, %444 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %74) #7
  br label %496

496:                                              ; preds = %495, %442
  %.pn269.pn.pn.pn = phi { ptr, i32 } [ %.pn269.pn.pn, %495 ], [ %443, %442 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %73) #7
  br label %497

497:                                              ; preds = %496, %412
  %.pn269.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn269.pn.pn.pn, %496 ], [ %413, %412 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #7
  br label %557

498:                                              ; preds = %._crit_edge436
  %499 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairI5AngleiESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  br i1 %499, label %525, label %500

500:                                              ; preds = %498
  %501 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef 0) #7
  %502 = getelementptr inbounds i8, ptr %501, i64 32
  %503 = load i32, ptr %502, align 16, !tbaa !28
  %504 = icmp slt i32 %503, 0
  br i1 %504, label %505, label %525

505:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %84) #7
  %506 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %507 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %508 = getelementptr inbounds i8, ptr %507, i64 32
  %509 = load x86_fp80, ptr %508, align 16, !tbaa !22
  call void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32) %86, x86_fp80 noundef %509, x86_fp80 noundef 0xK00000000000000000000)
  invoke void @_ZNK2ptmiES_(ptr dead_on_unwind nonnull writable sret(%struct.pt) align 16 %85, ptr noundef nonnull align 16 dereferenceable(32) %506, ptr noundef nonnull byval(%struct.pt) align 16 %86)
          to label %510 unwind label %518

510:                                              ; preds = %505
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %84, ptr noundef nonnull byval(%struct.pt) align 16 %85)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %87) #7
  store i32 1, ptr %87, align 4, !tbaa !12
  %511 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 16 dereferenceable(32) %84, ptr noundef nonnull align 4 dereferenceable(4) %87)
          to label %512 unwind label %520

512:                                              ; preds = %510
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %87) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %88) #7
  %513 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  call void @_ZN5AngleC2E2pt(ptr noundef nonnull align 16 dereferenceable(32) %88, ptr noundef nonnull byval(%struct.pt) align 16 %513)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %89) #7
  store i32 -1, ptr %89, align 4, !tbaa !12
  %514 = invoke noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 16 dereferenceable(32) %88, ptr noundef nonnull align 4 dereferenceable(4) %89)
          to label %515 unwind label %523

515:                                              ; preds = %512
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #7
  br label %525

516:                                              ; preds = %532, %._crit_edge436
  %517 = landingpad { ptr, i32 }
          cleanup
  br label %557

518:                                              ; preds = %505
  %519 = landingpad { ptr, i32 }
          cleanup
  br label %522

520:                                              ; preds = %510
  %521 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %87) #7
  br label %522

522:                                              ; preds = %520, %518
  %.pn264 = phi { ptr, i32 } [ %521, %520 ], [ %519, %518 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #7
  br label %557

523:                                              ; preds = %512
  %524 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #7
  br label %557

525:                                              ; preds = %515, %500, %498
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #7
  %526 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  store ptr %526, ptr %91, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEC2IPS3_vEERKNS0_IT_S8_EE(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %91) #7
  %527 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  %528 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  %529 = load ptr, ptr %90, align 8
  %530 = invoke ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr %529, ptr %527, ptr %528)
          to label %531 unwind label %543

531:                                              ; preds = %525
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #7
  br i1 %.0231.lcssa, label %555, label %532

532:                                              ; preds = %531
  %533 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv492) #7
  %534 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %535 = invoke noundef i32 @_Z11isInPolygonRKSt6vectorI2ptSaIS0_EES0_(ptr noundef nonnull align 8 dereferenceable(24) %533, ptr noundef nonnull byval(%struct.pt) align 16 %534)
          to label %536 unwind label %516

536:                                              ; preds = %532
  %537 = icmp sgt i32 %535, -1
  br i1 %537, label %538, label %555

538:                                              ; preds = %536
  %539 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_I2ptSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv492) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #7
  %540 = call ptr @_ZNKSt6vectorI2ptSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %539) #7
  store ptr %540, ptr %92, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #7
  %541 = call ptr @_ZNKSt6vectorI2ptSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %539) #7
  store ptr %541, ptr %93, align 8
  %542 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK2ptSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %93) #7
  br i1 %542, label %.lr.ph440, label %._crit_edge441

543:                                              ; preds = %525
  %544 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #7
  br label %557

.lr.ph440:                                        ; preds = %538, %552
  %545 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK2ptSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %92) #7
  %546 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %547 = invoke noundef i32 @_ZNK6Circle8containsE2pt(ptr noundef nonnull align 16 dereferenceable(48) %546, ptr noundef nonnull byval(%struct.pt) align 16 %545)
          to label %548 unwind label %550

548:                                              ; preds = %.lr.ph440
  %549 = icmp slt i32 %547, 0
  br i1 %549, label %._crit_edge441, label %552

550:                                              ; preds = %.lr.ph440
  %551 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #7
  br label %557

552:                                              ; preds = %548
  %553 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK2ptSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %92) #7
  %554 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK2ptSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %93) #7
  br i1 %554, label %.lr.ph440, label %._crit_edge441

._crit_edge441:                                   ; preds = %548, %552, %538
  %.7244 = phi i1 [ false, %538 ], [ %549, %552 ], [ %549, %548 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #7
  br label %555

555:                                              ; preds = %._crit_edge441, %536, %531
  %.8245 = phi i1 [ false, %531 ], [ %.7244, %._crit_edge441 ], [ false, %536 ]
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #7
  %indvars.iv.next493 = add nuw nsw i64 %indvars.iv492, 1
  %556 = icmp sge i64 %indvars.iv.next493, %114
  %.not262 = or i1 %556, %.8245
  br i1 %.not262, label %._crit_edge449, label %.lr.ph448, !llvm.loop !31

557:                                              ; preds = %516, %522, %523, %543, %550, %497
  %.pn269.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn269.pn.pn.pn.pn, %497 ], [ %551, %550 ], [ %517, %516 ], [ %544, %543 ], [ %524, %523 ], [ %.pn264, %522 ]
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #7
  br label %611

._crit_edge449.thread510:                         ; preds = %.thread, %._crit_edge449
  %558 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %559 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS4_SaIS4_EEEEEvT_SA_(ptr %558, ptr %559)
          to label %560 unwind label %570

560:                                              ; preds = %._crit_edge449.thread510
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #7
  %561 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  store ptr %561, ptr %94, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %95) #7
  %562 = call ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  store ptr %562, ptr %95, align 8
  %563 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %95) #7
  br i1 %563, label %.lr.ph452, label %._crit_edge453

._crit_edge453:                                   ; preds = %583, %560
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #7
  %564 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef 0) #7
  %565 = getelementptr inbounds i8, ptr %564, i64 32
  %566 = load i32, ptr %565, align 16, !tbaa !28
  %567 = call noundef i64 @_ZNKSt6vectorISt4pairI5AngleiESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %568 = trunc i64 %567 to i32
  %569 = icmp sgt i32 %568, 1
  br i1 %569, label %.lr.ph458, label %.loopexit

570:                                              ; preds = %._crit_edge449.thread510
  %571 = landingpad { ptr, i32 }
          cleanup
  br label %611

.lr.ph452:                                        ; preds = %560, %583
  %572 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #7
  %573 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %574 = invoke noundef zeroext i1 @_ZNK2pteqES_(ptr noundef nonnull align 16 dereferenceable(32) %572, ptr noundef nonnull byval(%struct.pt) align 16 %573)
          to label %575 unwind label %581

575:                                              ; preds = %.lr.ph452
  br i1 %574, label %576, label %583

576:                                              ; preds = %575
  %577 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  %578 = getelementptr inbounds i8, ptr %577, i64 32
  %579 = load x86_fp80, ptr %578, align 16, !tbaa !22
  call void @_ZN2ptC2Eee(ptr noundef nonnull align 16 dereferenceable(32) %96, x86_fp80 noundef %579, x86_fp80 noundef 0xK00000000000000000000)
  %580 = invoke noundef nonnull align 16 dereferenceable(32) ptr @_ZN2ptmIES_(ptr noundef nonnull align 16 dereferenceable(32) %572, ptr noundef nonnull byval(%struct.pt) align 16 %96)
          to label %583 unwind label %581

581:                                              ; preds = %576, %.lr.ph452
  %582 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #7
  br label %611

583:                                              ; preds = %576, %575
  %584 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #7
  %585 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %95) #7
  br i1 %585, label %.lr.ph452, label %._crit_edge453

.lr.ph458:                                        ; preds = %._crit_edge453, %603
  %indvars.iv494 = phi i64 [ %indvars.iv.next495, %603 ], [ 1, %._crit_edge453 ]
  %.0456 = phi i32 [ %607, %603 ], [ %566, %._crit_edge453 ]
  %.4454 = phi x86_fp80 [ %.6, %603 ], [ %.3461, %._crit_edge453 ]
  %.not263 = icmp eq i32 %.0456, 0
  br i1 %.not263, label %586, label %603

586:                                              ; preds = %.lr.ph458
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %97) #7
  %587 = add nsw i64 %indvars.iv494, -1
  %588 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %587) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %97, ptr noundef nonnull align 16 dereferenceable(32) %588, i64 32, i1 false), !tbaa.struct !7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %98)
  %589 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %indvars.iv494) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %98, ptr noundef nonnull align 16 dereferenceable(32) %589, i64 32, i1 false), !tbaa.struct !7
  %590 = call noundef zeroext i1 @_ZNK2ptneES_(ptr noundef nonnull align 16 dereferenceable(32) %97, ptr noundef nonnull byval(%struct.pt) align 16 %589)
  br i1 %590, label %591, label %602

591:                                              ; preds = %586
  %592 = call noundef x86_fp80 @_Z5cross2ptS_(ptr noundef nonnull byval(%struct.pt) align 16 %97, ptr noundef nonnull byval(%struct.pt) align 16 %98)
  %593 = fmul x86_fp80 %592, 0xK3FFE8000000000000000
  %594 = fadd x86_fp80 %.4454, %593
  %595 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI6CircleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv497) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %99, ptr noundef nonnull align 16 dereferenceable(48) %595, i64 48, i1 false), !tbaa.struct !25
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %100, ptr noundef nonnull byval(%struct.pt) align 16 %98, ptr noundef nonnull byval(%struct.pt) align 16 %97)
          to label %596 unwind label %600

596:                                              ; preds = %591
  %597 = invoke noundef x86_fp80 @_Z31circleHalfPlaneIntersectionArea6Circle4Line(ptr noundef nonnull byval(%struct.Circle) align 16 %99, ptr noundef nonnull byval(%struct.Line) align 16 %100)
          to label %598 unwind label %600

598:                                              ; preds = %596
  %599 = fadd x86_fp80 %594, %597
  br label %602

600:                                              ; preds = %596, %591
  %601 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %97) #7
  br label %611

602:                                              ; preds = %598, %586
  %.5 = phi x86_fp80 [ %599, %598 ], [ %.4454, %586 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %97) #7
  br label %603

603:                                              ; preds = %602, %.lr.ph458
  %.6 = phi x86_fp80 [ %.4454, %.lr.ph458 ], [ %.5, %602 ]
  %604 = call noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %indvars.iv494) #7
  %605 = getelementptr inbounds i8, ptr %604, i64 32
  %606 = load i32, ptr %605, align 16, !tbaa !28
  %607 = add nsw i32 %606, %.0456
  %indvars.iv.next495 = add nuw nsw i64 %indvars.iv494, 1
  %608 = call noundef i64 @_ZNKSt6vectorISt4pairI5AngleiESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %sext506 = shl i64 %608, 32
  %609 = ashr exact i64 %sext506, 32
  %610 = icmp slt i64 %indvars.iv.next495, %609
  br i1 %610, label %.lr.ph458, label %.loopexit, !llvm.loop !32

.loopexit:                                        ; preds = %335, %331, %603, %._crit_edge453, %._crit_edge449
  %.7 = phi x86_fp80 [ %.3461, %._crit_edge449 ], [ %.3461, %._crit_edge453 ], [ %.6, %603 ], [ %.3461, %331 ], [ %.3461, %335 ]
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %46) #7
  %indvars.iv.next498 = add nuw nsw i64 %indvars.iv497, 1
  %exitcond501.not = icmp eq i64 %indvars.iv.next498, %wide.trip.count500
  br i1 %exitcond501.not, label %._crit_edge463, label %297, !llvm.loop !33

611:                                              ; preds = %557, %570, %581, %600, %392, %344, %325, %324, %319
  %.pn269.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %326, %325 ], [ %.pn253, %324 ], [ %.pn, %319 ], [ %.pn269.pn.pn.pn.pn.pn, %557 ], [ %582, %581 ], [ %601, %600 ], [ %571, %570 ], [ %.pn257.pn, %392 ], [ %345, %344 ]
  call void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %46) #7
  br label %612

612:                                              ; preds = %611, %296
  %.pn292.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn292.pn.pn.pn.pn.pn, %296 ], [ %.pn269.pn.pn.pn.pn.pn.pn.pn, %611 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #7
  resume { ptr, i32 } %.pn292.pn.pn.pn.pn.pn.pn
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef x86_fp80 @"_ZZ22polygonCircleUnionAreaRKSt6vectorIS_I2ptSaIS0_EESaIS2_EERKS_I6CircleSaIS7_EEENK3$_0clES0_S0_"(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef byval(%struct.pt) align 16, ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE12emplace_backIJRS1_iEEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK5AnglegeES_(ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.Angle) align 16) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS4_SaIS4_EEEEZ22polygonCircleUnionAreaRKS6_IS6_I2ptSaISA_EESaISC_EERKS6_I6CircleSaISH_EEE3$_1EvT_SN_T0_"(ptr, ptr) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorISt4pairI5AngleiESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(36) ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairI5AngleiESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_(ptr noundef nonnull align 8 dereferenceable(24), ptr, ptr, ptr) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEC2IPS3_vEERKNS0_IT_S8_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPK2ptSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK2ptSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK2ptSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairI5AngleiESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS4_SaIS4_EEEEEvT_SA_(ptr, ptr) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(36) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairI5AngleiESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorISt4pairI5AngleiESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK2ptneES_(ptr noundef nonnull align 16 dereferenceable(32), ptr noundef byval(%struct.pt) align 16) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorISt4pairIeiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #6

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = !{i64 0, i64 16, !8, i64 16, i64 16, !8}
!8 = !{!9, !9, i64 0}
!9 = !{!"long double", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !10, i64 0}
!14 = distinct !{!14, !6}
!15 = distinct !{!15, !6}
!16 = distinct !{!16, !6}
!17 = !{!18, !13, i64 16}
!18 = !{!"_ZTSSt4pairIeiE", !9, i64 0, !13, i64 16}
!19 = !{!18, !9, i64 0}
!20 = distinct !{!20, !6}
!21 = distinct !{!21, !6}
!22 = !{!23, !9, i64 32}
!23 = !{!"_ZTS6Circle", !24, i64 0, !9, i64 32}
!24 = !{!"_ZTS2pt", !9, i64 0, !9, i64 16}
!25 = !{i64 0, i64 16, !8, i64 16, i64 16, !8, i64 32, i64 16, !8}
!26 = distinct !{!26, !6}
!27 = distinct !{!27, !6}
!28 = !{!29, !13, i64 32}
!29 = !{!"_ZTSSt4pairI5AngleiE", !30, i64 0, !13, i64 32}
!30 = !{!"_ZTS5Angle", !24, i64 0}
!31 = distinct !{!31, !6}
!32 = distinct !{!32, !6}
!33 = distinct !{!33, !6}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass