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

; 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.59" = type { %"struct.std::_Vector_base.60" }
%"struct.std::_Vector_base.60" = type { %"struct.std::_Vector_base<std::array<pt, 3>, std::allocator<std::array<pt, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::array<pt, 3>, std::allocator<std::array<pt, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::array<pt, 3>, std::allocator<std::array<pt, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::array<pt, 3>, std::allocator<std::array<pt, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.64 = type { ptr, ptr }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.67" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.70" = type { ptr }
%class.anon.71 = type { ptr }
%class.anon.72 = type { ptr }
%class.anon.73 = type { ptr }
%class.anon.74 = type { ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<std::vector<std::pair<int, int>>, std::allocator<std::vector<std::pair<int, int>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<std::pair<int, int>>, std::allocator<std::vector<std::pair<int, int>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<std::pair<int, int>>, std::allocator<std::vector<std::pair<int, int>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<std::pair<int, int>>, std::allocator<std::vector<std::pair<int, int>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.77" = type { i8 }
%class.anon.80 = type { ptr, ptr, ptr }
%"class.std::multimap" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<Chain, std::pair<const Chain, ChainInfo>, std::_Select1st<std::pair<const Chain, ChainInfo>>, std::less<Chain>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Chain, std::pair<const Chain, ChainInfo>, std::_Select1st<std::pair<const Chain, ChainInfo>>, std::less<Chain>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.anon.84 = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%struct.Chain = type { %struct.Line }
%struct.Line = type { %struct.pt, x86_fp80 }
%struct.ChainInfo = type { i32, i32, i32 }
%class.anon.88 = type { ptr }
%class.anon.89 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.90" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.91" = type { ptr }
%"class.std::vector.92" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::allocator.96" = type { i8 }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"struct.std::pair.20" = type { i32, i32 }
%"struct.std::pair.85" = type <{ %struct.Chain, %struct.ChainInfo, [4 x i8] }>

@_ZN5Chain1XE = external dso_local global x86_fp80, align 16

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z2ltee(x86_fp80 noundef, x86_fp80 noundef) #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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2

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

declare i32 @__gxx_personality_v0(...)

; 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 #3 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 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 @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z20polygonTriangulationRKSt6vectorI2ptSaIS0_EE(ptr dead_on_unwind noalias writable sret(%"class.std::vector.59") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #3 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i1, align 1
  %6 = alloca %class.anon.64, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::vector.65", align 8
  %9 = alloca %"class.std::allocator.67", align 1
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.70", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.70", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.70", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.70", align 8
  %16 = alloca %class.anon.71, align 8
  %17 = alloca %class.anon.72, align 8
  %18 = alloca %class.anon.73, align 8
  %19 = alloca %class.anon.74, align 8
  %20 = alloca %"class.std::vector.75", align 8
  %21 = alloca %"class.std::allocator.77", align 1
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %class.anon.80, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca %"class.std::multimap", align 8
  %29 = alloca %"class.std::multimap", align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.70", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.70", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.70", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.70", align 8
  %37 = alloca %class.anon.84, align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %41 = alloca %struct.Chain, align 16
  %42 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %43 = alloca %struct.Chain, align 16
  %44 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %45 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %46 = alloca %struct.Chain, align 16
  %47 = alloca %struct.pt, align 16
  %48 = alloca %struct.pt, align 16
  %49 = alloca %struct.ChainInfo, align 4
  %50 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %51 = alloca %struct.Chain, align 16
  %52 = alloca %struct.pt, align 16
  %53 = alloca %struct.pt, align 16
  %54 = alloca %struct.ChainInfo, align 4
  %55 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %56 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %57 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %58 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %59 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %60 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %61 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %62 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %63 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %64 = alloca i8, align 1
  %65 = alloca i8, align 1
  %66 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %67 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %68 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %69 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %70 = alloca %struct.Line, align 16
  %71 = alloca %struct.pt, align 16
  %72 = alloca %struct.pt, align 16
  %73 = alloca %struct.Line, align 16
  %74 = alloca %struct.pt, align 16
  %75 = alloca %struct.pt, align 16
  %76 = alloca %struct.Line, align 16
  %77 = alloca %struct.pt, align 16
  %78 = alloca %struct.pt, align 16
  %79 = alloca %struct.Line, align 16
  %80 = alloca %struct.pt, align 16
  %81 = alloca %struct.pt, align 16
  %82 = alloca %struct.Chain, align 16
  %83 = alloca %struct.pt, align 16
  %84 = alloca %struct.pt, align 16
  %85 = alloca %struct.ChainInfo, align 4
  %86 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %87 = alloca %struct.Chain, align 16
  %88 = alloca %struct.pt, align 16
  %89 = alloca %struct.pt, align 16
  %90 = alloca %struct.ChainInfo, align 4
  %91 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %92 = alloca %class.anon.88, align 8
  %93 = alloca %class.anon.89, align 8
  %94 = alloca i32, align 4
  %95 = alloca %struct.pt, align 16
  %96 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %97 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %98 = alloca %class.anon.88, align 8
  %99 = alloca %"class.__gnu_cxx::__normal_iterator.91", align 8
  %100 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %101 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %102 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %103 = alloca %class.anon.89, align 8
  %104 = alloca %"class.__gnu_cxx::__normal_iterator.91", align 8
  %105 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %106 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %107 = alloca %"class.std::vector.92", align 8
  %108 = alloca i8, align 1
  %109 = alloca %"class.std::allocator.96", align 1
  %110 = alloca i32, align 4
  %111 = alloca ptr, align 8
  %112 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %113 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %114 = alloca ptr, align 8
  %115 = alloca %"struct.std::_Bit_reference", align 8
  %116 = alloca %"class.std::vector.65", align 8
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca %"struct.std::_Bit_reference", align 8
  %121 = alloca %"struct.std::_Bit_reference", align 8
  %122 = alloca %struct.pt, align 16
  %123 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %124 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %125 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %126 = alloca %"struct.std::pair.20", align 4
  %127 = alloca i32, align 4
  %128 = alloca %class.anon.88, align 8
  %129 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %130 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %131 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  store i1 false, ptr %5, align 1
  call void @_ZNSt6vectorISt5arrayI2ptLm3EESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #6
  %132 = getelementptr inbounds %class.anon.64, ptr %6, i32 0, i32 0
  store ptr %0, ptr %132, align 8, !tbaa !5
  %133 = getelementptr inbounds %class.anon.64, ptr %6, i32 0, i32 1
  %134 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %134, ptr %133, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  %135 = load ptr, ptr %4, align 8, !tbaa !5
  %136 = call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %135) #6
  %137 = trunc i64 %136 to i32
  store i32 %137, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #6
  %138 = load i32, ptr %7, align 4, !tbaa !9
  %139 = sext i32 %138 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #6
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %139, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %140 unwind label %177

140:                                              ; preds = %2
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #6
  %141 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  %142 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %12, i32 0, i32 0
  store ptr %141, ptr %142, align 8
  %143 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  %144 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %13, i32 0, i32 0
  store ptr %143, ptr %144, align 8
  %145 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %12, i32 0, i32 0
  %146 = load ptr, ptr %145, align 8
  %147 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %13, i32 0, i32 0
  %148 = load ptr, ptr %147, align 8
  invoke void @_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_(ptr %146, ptr %148, i32 noundef 0)
          to label %149 unwind label %181

149:                                              ; preds = %140
  %150 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  %151 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %14, i32 0, i32 0
  store ptr %150, ptr %151, align 8
  %152 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  %153 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %15, i32 0, i32 0
  store ptr %152, ptr %153, align 8
  %154 = getelementptr inbounds %class.anon.71, ptr %16, i32 0, i32 0
  %155 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %155, ptr %154, align 8, !tbaa !5
  %156 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %14, i32 0, i32 0
  %157 = load ptr, ptr %156, align 8
  %158 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %15, i32 0, i32 0
  %159 = load ptr, ptr %158, align 8
  %160 = getelementptr inbounds %class.anon.71, ptr %16, i32 0, i32 0
  %161 = load ptr, ptr %160, align 8
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZ20polygonTriangulationRKS3_I2ptSaIS7_EEE3$_1EvT_SD_T0_"(ptr %157, ptr %159, ptr %161)
          to label %162 unwind label %181

162:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %163 = getelementptr inbounds %class.anon.72, ptr %17, i32 0, i32 0
  store ptr %7, ptr %163, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  %164 = getelementptr inbounds %class.anon.73, ptr %18, i32 0, i32 0
  store ptr %7, ptr %164, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  %165 = getelementptr inbounds %class.anon.74, ptr %19, i32 0, i32 0
  store ptr %7, ptr %165, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #6
  %166 = load i32, ptr %7, align 4, !tbaa !9
  %167 = sext i32 %166 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  call void @_ZNSaISt6vectorISt4pairIiiESaIS1_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEC2EmRKS4_(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %167, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %168 unwind label %185

168:                                              ; preds = %162
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairIiiESaIS2_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 0, 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
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #6
  %169 = getelementptr inbounds %class.anon.80, ptr %24, i32 0, i32 0
  store ptr %17, ptr %169, align 8, !tbaa !5
  %170 = getelementptr inbounds %class.anon.80, ptr %24, i32 0, i32 1
  store ptr %20, ptr %170, align 8, !tbaa !5
  %171 = getelementptr inbounds %class.anon.80, ptr %24, i32 0, i32 2
  store ptr %22, ptr %171, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %172

172:                                              ; preds = %200, %168
  %173 = load i32, ptr %25, align 4, !tbaa !9
  %174 = load i32, ptr %7, align 4, !tbaa !9
  %175 = icmp slt i32 %173, %174
  br i1 %175, label %189, label %176

176:                                              ; preds = %172
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %212

177:                                              ; preds = %2
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %10, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #6
  br label %1293

181:                                              ; preds = %149, %140
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %10, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %11, align 4
  br label %1292

185:                                              ; preds = %162
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %10, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %11, align 4
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairIiiESaIS2_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  br label %1291

189:                                              ; preds = %172
  %190 = load i32, ptr %25, align 4, !tbaa !9
  %191 = sext i32 %190 to i64
  %192 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %191) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  %193 = load i32, ptr %25, align 4, !tbaa !9
  %194 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef %193)
          to label %195 unwind label %203

195:                                              ; preds = %189
  store i32 %194, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %196 = load i32, ptr %22, align 4, !tbaa !9
  %197 = add nsw i32 %196, 1
  store i32 %197, ptr %22, align 4, !tbaa !9
  store i32 %196, ptr %27, align 4, !tbaa !9
  %198 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE12emplace_backIJiiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %192, ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %199 unwind label %207

199:                                              ; preds = %195
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %200

200:                                              ; preds = %199
  %201 = load i32, ptr %25, align 4, !tbaa !9
  %202 = add nsw i32 %201, 1
  store i32 %202, ptr %25, align 4, !tbaa !9
  br label %172, !llvm.loop !11

203:                                              ; preds = %189
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %10, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %11, align 4
  br label %211

207:                                              ; preds = %195
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %10, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %211

211:                                              ; preds = %207, %203
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %1290

212:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 48, ptr %28) #6
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %29) #6
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %213

213:                                              ; preds = %1040, %212
  %214 = load i32, ptr %30, align 4, !tbaa !9
  %215 = load i32, ptr %7, align 4, !tbaa !9
  %216 = icmp slt i32 %214, %215
  br i1 %216, label %218, label %217

217:                                              ; preds = %213
  store i32 5, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %1043

218:                                              ; preds = %213
  %219 = load i32, ptr %30, align 4, !tbaa !9
  %220 = add nsw i32 %219, 1
  store i32 %220, ptr %31, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %249, %218
  %222 = load i32, ptr %31, align 4, !tbaa !9
  %223 = load i32, ptr %7, align 4, !tbaa !9
  %224 = icmp slt i32 %222, %223
  br i1 %224, label %225, label %246

225:                                              ; preds = %221
  %226 = load ptr, ptr %4, align 8, !tbaa !5
  %227 = load i32, ptr %30, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %228) #6
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = sext i32 %230 to i64
  %232 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %226, i64 noundef %231) #6
  %233 = getelementptr inbounds %struct.pt, ptr %232, i32 0, i32 0
  %234 = load x86_fp80, ptr %233, align 16, !tbaa !13
  %235 = load ptr, ptr %4, align 8, !tbaa !5
  %236 = load i32, ptr %31, align 4, !tbaa !9
  %237 = sext i32 %236 to i64
  %238 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %237) #6
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %235, i64 noundef %240) #6
  %242 = getelementptr inbounds %struct.pt, ptr %241, i32 0, i32 0
  %243 = load x86_fp80, ptr %242, align 16, !tbaa !13
  %244 = call noundef zeroext i1 @_Z2ltee(x86_fp80 noundef %234, x86_fp80 noundef %243)
  %245 = xor i1 %244, true
  br label %246

246:                                              ; preds = %225, %221
  %247 = phi i1 [ false, %221 ], [ %245, %225 ]
  br i1 %247, label %248, label %252

248:                                              ; preds = %246
  br label %249

249:                                              ; preds = %248
  %250 = load i32, ptr %31, align 4, !tbaa !9
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %31, align 4, !tbaa !9
  br label %221, !llvm.loop !16

252:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %253 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  %254 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %34, i32 0, i32 0
  store ptr %253, ptr %254, align 8
  %255 = load i32, ptr %30, align 4, !tbaa !9
  %256 = sext i32 %255 to i64
  %257 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %34, i64 noundef %256) #6
  %258 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %33, i32 0, i32 0
  store ptr %257, ptr %258, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  %259 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  %260 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %36, i32 0, i32 0
  store ptr %259, ptr %260, align 8
  %261 = load i32, ptr %31, align 4, !tbaa !9
  %262 = sext i32 %261 to i64
  %263 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %36, i64 noundef %262) #6
  %264 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %35, i32 0, i32 0
  store ptr %263, ptr %264, align 8
  %265 = getelementptr inbounds %class.anon.84, ptr %37, i32 0, i32 0
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %266, ptr %265, align 8, !tbaa !5
  %267 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %33, i32 0, i32 0
  %268 = load ptr, ptr %267, align 8
  %269 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.70", ptr %35, i32 0, i32 0
  %270 = load ptr, ptr %269, align 8
  %271 = getelementptr inbounds %class.anon.84, ptr %37, i32 0, i32 0
  %272 = load ptr, ptr %271, align 8
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZ20polygonTriangulationRKS3_I2ptSaIS7_EEE3$_6EvT_SD_T0_"(ptr %268, ptr %270, ptr %272)
          to label %273 unwind label %290

273:                                              ; preds = %252
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  %274 = load ptr, ptr %4, align 8, !tbaa !5
  %275 = load i32, ptr %30, align 4, !tbaa !9
  %276 = sext i32 %275 to i64
  %277 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %276) #6
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %274, i64 noundef %279) #6
  %281 = getelementptr inbounds %struct.pt, ptr %280, i32 0, i32 0
  %282 = load x86_fp80, ptr %281, align 16, !tbaa !13
  store x86_fp80 %282, ptr @_ZN5Chain1XE, align 16, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  %283 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %283, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  %284 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %284, ptr %39, align 4, !tbaa !9
  br label %285

285:                                              ; preds = %1034, %273
  %286 = load i32, ptr %38, align 4, !tbaa !9
  %287 = load i32, ptr %31, align 4, !tbaa !9
  %288 = icmp slt i32 %286, %287
  br i1 %288, label %294, label %289

289:                                              ; preds = %285
  store i32 11, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %1039

290:                                              ; preds = %252
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %10, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  br label %1042

294:                                              ; preds = %285
  %295 = load i32, ptr %38, align 4, !tbaa !9
  %296 = add nsw i32 %295, 1
  store i32 %296, ptr %39, align 4, !tbaa !9
  br label %297

297:                                              ; preds = %316, %294
  %298 = load i32, ptr %39, align 4, !tbaa !9
  %299 = load i32, ptr %31, align 4, !tbaa !9
  %300 = icmp slt i32 %298, %299
  br i1 %300, label %301, label %313

301:                                              ; preds = %297
  %302 = load i32, ptr %39, align 4, !tbaa !9
  %303 = sub nsw i32 %302, 1
  %304 = sext i32 %303 to i64
  %305 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %304) #6
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = load i32, ptr %39, align 4, !tbaa !9
  %308 = sext i32 %307 to i64
  %309 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %308) #6
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = invoke noundef zeroext i1 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_2clEii"(ptr noundef nonnull align 8 dereferenceable(8) %17, i32 noundef %306, i32 noundef %310)
          to label %312 unwind label %319

312:                                              ; preds = %301
  br label %313

313:                                              ; preds = %312, %297
  %314 = phi i1 [ false, %297 ], [ %311, %312 ]
  br i1 %314, label %315, label %323

315:                                              ; preds = %313
  br label %316

316:                                              ; preds = %315
  %317 = load i32, ptr %39, align 4, !tbaa !9
  %318 = add nsw i32 %317, 1
  store i32 %318, ptr %39, align 4, !tbaa !9
  br label %297, !llvm.loop !18

319:                                              ; preds = %301
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %10, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %11, align 4
  br label %1038

323:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %41) #6
  %324 = load ptr, ptr %4, align 8, !tbaa !5
  %325 = load i32, ptr %39, align 4, !tbaa !9
  %326 = sub nsw i32 %325, 1
  %327 = sext i32 %326 to i64
  %328 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %327) #6
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %324, i64 noundef %330) #6
  %332 = getelementptr inbounds %struct.pt, ptr %331, i32 0, i32 1
  %333 = load x86_fp80, ptr %332, align 16, !tbaa !19
  invoke void @_ZN5ChainC2Ee(ptr noundef nonnull align 16 dereferenceable(48) %41, x86_fp80 noundef %333)
          to label %334 unwind label %457

334:                                              ; preds = %323
  %335 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE11upper_boundERS5_(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef nonnull align 16 dereferenceable(48) %41)
          to label %336 unwind label %457

336:                                              ; preds = %334
  %337 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %40, i32 0, i32 0
  store ptr %335, ptr %337, align 8
  call void @llvm.lifetime.end.p0(i64 48, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %43) #6
  %338 = load ptr, ptr %4, align 8, !tbaa !5
  %339 = load i32, ptr %38, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %340) #6
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = sext i32 %342 to i64
  %344 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %338, i64 noundef %343) #6
  %345 = getelementptr inbounds %struct.pt, ptr %344, i32 0, i32 1
  %346 = load x86_fp80, ptr %345, align 16, !tbaa !19
  invoke void @_ZN5ChainC2Ee(ptr noundef nonnull align 16 dereferenceable(48) %43, x86_fp80 noundef %346)
          to label %347 unwind label %461

347:                                              ; preds = %336
  %348 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE11lower_boundERS5_(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef nonnull align 16 dereferenceable(48) %43)
          to label %349 unwind label %461

349:                                              ; preds = %347
  %350 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %42, i32 0, i32 0
  store ptr %348, ptr %350, align 8
  call void @llvm.lifetime.end.p0(i64 48, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  %351 = call ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %28) #6
  %352 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %44, i32 0, i32 0
  store ptr %351, ptr %352, align 8
  %353 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEES7_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %44) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  br i1 %353, label %398, label %354

354:                                              ; preds = %349
  %355 = call ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %29) #6
  %356 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %45, i32 0, i32 0
  store ptr %355, ptr %356, align 8
  %357 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEES7_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %45) #6
  br i1 %357, label %398, label %358

358:                                              ; preds = %354
  %359 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %360 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %359) #6
  %361 = getelementptr inbounds %"struct.std::pair.85", ptr %360, i32 0, i32 1
  %362 = getelementptr inbounds %struct.ChainInfo, ptr %361, i32 0, i32 0
  %363 = load i32, ptr %362, align 16, !tbaa !20
  %364 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %365 = getelementptr inbounds %"struct.std::pair.85", ptr %364, i32 0, i32 1
  %366 = getelementptr inbounds %struct.ChainInfo, ptr %365, i32 0, i32 0
  %367 = load i32, ptr %366, align 16, !tbaa !20
  %368 = icmp ne i32 %363, %367
  br i1 %368, label %369, label %396

369:                                              ; preds = %358
  %370 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %371 = getelementptr inbounds %"struct.std::pair.85", ptr %370, i32 0, i32 1
  %372 = getelementptr inbounds %struct.ChainInfo, ptr %371, i32 0, i32 1
  %373 = load i32, ptr %372, align 4, !tbaa !25
  %374 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef %373)
          to label %375 unwind label %465

375:                                              ; preds = %369
  %376 = load i32, ptr %39, align 4, !tbaa !9
  %377 = sub nsw i32 %376, 1
  %378 = sext i32 %377 to i64
  %379 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %378) #6
  %380 = load i32, ptr %379, align 4, !tbaa !9
  %381 = icmp ne i32 %374, %380
  br i1 %381, label %394, label %382

382:                                              ; preds = %375
  %383 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %384 = getelementptr inbounds %"struct.std::pair.85", ptr %383, i32 0, i32 1
  %385 = getelementptr inbounds %struct.ChainInfo, ptr %384, i32 0, i32 1
  %386 = load i32, ptr %385, align 4, !tbaa !25
  %387 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef %386)
          to label %388 unwind label %465

388:                                              ; preds = %382
  %389 = load i32, ptr %38, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %390) #6
  %392 = load i32, ptr %391, align 4, !tbaa !9
  %393 = icmp ne i32 %387, %392
  br label %394

394:                                              ; preds = %388, %375
  %395 = phi i1 [ true, %375 ], [ %393, %388 ]
  br label %396

396:                                              ; preds = %394, %358
  %397 = phi i1 [ false, %358 ], [ %395, %394 ]
  br label %398

398:                                              ; preds = %396, %354, %349
  %399 = phi i1 [ true, %354 ], [ true, %349 ], [ %397, %396 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  br i1 %399, label %400, label %487

400:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 48, ptr %46) #6
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = load i32, ptr %38, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %403) #6
  %405 = load i32, ptr %404, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %401, i64 noundef %406) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %47, ptr align 16 %407, i64 32, i1 false), !tbaa.struct !26
  %408 = load ptr, ptr %4, align 8, !tbaa !5
  %409 = load i32, ptr %38, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %410) #6
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef %412)
          to label %414 unwind label %469

414:                                              ; preds = %400
  %415 = sext i32 %413 to i64
  %416 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %408, i64 noundef %415) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %48, ptr align 16 %416, i64 32, i1 false), !tbaa.struct !26
  invoke void @_ZN5ChainC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %46, ptr noundef byval(%struct.pt) align 16 %47, ptr noundef byval(%struct.pt) align 16 %48)
          to label %417 unwind label %469

417:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 12, ptr %49) #6
  %418 = load i32, ptr %23, align 4, !tbaa !9
  %419 = load i32, ptr %38, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %420) #6
  %422 = load i32, ptr %421, align 4, !tbaa !9
  invoke void @_ZN9ChainInfoC2Eii(ptr noundef nonnull align 4 dereferenceable(12) %49, i32 noundef %418, i32 noundef %422)
          to label %423 unwind label %473

423:                                              ; preds = %417
  %424 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE7emplaceIJS0_S1_EEESt17_Rb_tree_iteratorIS6_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef nonnull align 16 dereferenceable(48) %46, ptr noundef nonnull align 4 dereferenceable(12) %49)
          to label %425 unwind label %473

425:                                              ; preds = %423
  %426 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %50, i32 0, i32 0
  store ptr %424, ptr %426, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %51) #6
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = load i32, ptr %39, align 4, !tbaa !9
  %429 = sub nsw i32 %428, 1
  %430 = sext i32 %429 to i64
  %431 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %430) #6
  %432 = load i32, ptr %431, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %427, i64 noundef %433) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %52, ptr align 16 %434, i64 32, i1 false), !tbaa.struct !26
  %435 = load ptr, ptr %4, align 8, !tbaa !5
  %436 = load i32, ptr %39, align 4, !tbaa !9
  %437 = sub nsw i32 %436, 1
  %438 = sext i32 %437 to i64
  %439 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %438) #6
  %440 = load i32, ptr %439, align 4, !tbaa !9
  %441 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef %440)
          to label %442 unwind label %478

442:                                              ; preds = %425
  %443 = sext i32 %441 to i64
  %444 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %435, i64 noundef %443) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %53, ptr align 16 %444, i64 32, i1 false), !tbaa.struct !26
  invoke void @_ZN5ChainC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %51, ptr noundef byval(%struct.pt) align 16 %52, ptr noundef byval(%struct.pt) align 16 %53)
          to label %445 unwind label %478

445:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 12, ptr %54) #6
  %446 = load i32, ptr %23, align 4, !tbaa !9
  %447 = add nsw i32 %446, 1
  store i32 %447, ptr %23, align 4, !tbaa !9
  %448 = load i32, ptr %39, align 4, !tbaa !9
  %449 = sub nsw i32 %448, 1
  %450 = sext i32 %449 to i64
  %451 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %450) #6
  %452 = load i32, ptr %451, align 4, !tbaa !9
  invoke void @_ZN9ChainInfoC2Eii(ptr noundef nonnull align 4 dereferenceable(12) %54, i32 noundef %446, i32 noundef %452)
          to label %453 unwind label %482

453:                                              ; preds = %445
  %454 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE7emplaceIJS0_S1_EEESt17_Rb_tree_iteratorIS6_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef nonnull align 16 dereferenceable(48) %51, ptr noundef nonnull align 4 dereferenceable(12) %54)
          to label %455 unwind label %482

455:                                              ; preds = %453
  %456 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %55, i32 0, i32 0
  store ptr %454, ptr %456, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %51) #6
  br label %1033

457:                                              ; preds = %334, %323
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %10, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %41) #6
  br label %1037

461:                                              ; preds = %347, %336
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %10, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %43) #6
  br label %1036

465:                                              ; preds = %382, %369
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %10, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  br label %1036

469:                                              ; preds = %414, %400
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %10, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %11, align 4
  br label %477

473:                                              ; preds = %423, %417
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %10, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %49) #6
  br label %477

477:                                              ; preds = %473, %469
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #6
  br label %1036

478:                                              ; preds = %442, %425
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %10, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %11, align 4
  br label %486

482:                                              ; preds = %453, %445
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %10, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %54) #6
  br label %486

486:                                              ; preds = %482, %478
  call void @llvm.lifetime.end.p0(i64 48, ptr %51) #6
  br label %1036

487:                                              ; preds = %398
  %488 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %489 = getelementptr inbounds %"struct.std::pair.85", ptr %488, i32 0, i32 1
  %490 = getelementptr inbounds %struct.ChainInfo, ptr %489, i32 0, i32 0
  %491 = load i32, ptr %490, align 16, !tbaa !20
  %492 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %493 = getelementptr inbounds %"struct.std::pair.85", ptr %492, i32 0, i32 1
  %494 = getelementptr inbounds %struct.ChainInfo, ptr %493, i32 0, i32 0
  %495 = load i32, ptr %494, align 16, !tbaa !20
  %496 = icmp ne i32 %491, %495
  br i1 %496, label %497, label %583

497:                                              ; preds = %487
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %57, ptr align 8 %42, i64 8, i1 false), !tbaa.struct !27
  %498 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %57, i32 0, i32 0
  %499 = load ptr, ptr %498, align 8
  %500 = invoke ptr @_ZSt4nextISt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEET_S7_NSt15iterator_traitsIS7_E15difference_typeE(ptr %499, i64 noundef 1)
          to label %501 unwind label %574

501:                                              ; preds = %497
  %502 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %56, i32 0, i32 0
  store ptr %500, ptr %502, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %59, ptr align 8 %40, i64 8, i1 false), !tbaa.struct !27
  %503 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %59, i32 0, i32 0
  %504 = load ptr, ptr %503, align 8
  %505 = invoke ptr @_ZSt4prevISt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEET_S7_NSt15iterator_traitsIS7_E15difference_typeE(ptr %504, i64 noundef 1)
          to label %506 unwind label %578

506:                                              ; preds = %501
  %507 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %58, i32 0, i32 0
  store ptr %505, ptr %507, align 8
  %508 = load i32, ptr %39, align 4, !tbaa !9
  %509 = sub nsw i32 %508, 1
  %510 = sext i32 %509 to i64
  %511 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %510) #6
  %512 = load i32, ptr %511, align 4, !tbaa !9
  %513 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %514 = getelementptr inbounds %"struct.std::pair.85", ptr %513, i32 0, i32 1
  %515 = getelementptr inbounds %struct.ChainInfo, ptr %514, i32 0, i32 2
  %516 = load i32, ptr %515, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %512, i32 noundef %516)
          to label %517 unwind label %578

517:                                              ; preds = %506
  %518 = load i32, ptr %38, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %519) #6
  %521 = load i32, ptr %520, align 4, !tbaa !9
  %522 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %523 = getelementptr inbounds %"struct.std::pair.85", ptr %522, i32 0, i32 1
  %524 = getelementptr inbounds %struct.ChainInfo, ptr %523, i32 0, i32 2
  %525 = load i32, ptr %524, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %521, i32 noundef %525)
          to label %526 unwind label %578

526:                                              ; preds = %517
  %527 = load i32, ptr %39, align 4, !tbaa !9
  %528 = sub nsw i32 %527, 1
  %529 = sext i32 %528 to i64
  %530 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %529) #6
  %531 = load i32, ptr %530, align 4, !tbaa !9
  %532 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #6
  %533 = getelementptr inbounds %"struct.std::pair.85", ptr %532, i32 0, i32 1
  %534 = getelementptr inbounds %struct.ChainInfo, ptr %533, i32 0, i32 2
  %535 = load i32, ptr %534, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %531, i32 noundef %535)
          to label %536 unwind label %578

536:                                              ; preds = %526
  %537 = load i32, ptr %38, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %538) #6
  %540 = load i32, ptr %539, align 4, !tbaa !9
  %541 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #6
  %542 = getelementptr inbounds %"struct.std::pair.85", ptr %541, i32 0, i32 1
  %543 = getelementptr inbounds %struct.ChainInfo, ptr %542, i32 0, i32 2
  %544 = load i32, ptr %543, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %540, i32 noundef %544)
          to label %545 unwind label %578

545:                                              ; preds = %536
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %60, ptr align 8 %40, i64 8, i1 false), !tbaa.struct !27
  %546 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %60, i32 0, i32 0
  %547 = load ptr, ptr %546, align 8
  %548 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr %547)
          to label %549 unwind label %578

549:                                              ; preds = %545
  %550 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %61, i32 0, i32 0
  store ptr %548, ptr %550, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %62, ptr align 8 %42, i64 8, i1 false), !tbaa.struct !27
  %551 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %62, i32 0, i32 0
  %552 = load ptr, ptr %551, align 8
  %553 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr %552)
          to label %554 unwind label %578

554:                                              ; preds = %549
  %555 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %63, i32 0, i32 0
  store ptr %553, ptr %555, align 8
  %556 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #6
  %557 = getelementptr inbounds %"struct.std::pair.85", ptr %556, i32 0, i32 1
  %558 = getelementptr inbounds %struct.ChainInfo, ptr %557, i32 0, i32 0
  %559 = load i32, ptr %558, align 16, !tbaa !20
  %560 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #6
  %561 = getelementptr inbounds %"struct.std::pair.85", ptr %560, i32 0, i32 1
  %562 = getelementptr inbounds %struct.ChainInfo, ptr %561, i32 0, i32 0
  store i32 %559, ptr %562, align 16, !tbaa !20
  %563 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #6
  %564 = getelementptr inbounds %"struct.std::pair.85", ptr %563, i32 0, i32 1
  %565 = getelementptr inbounds %struct.ChainInfo, ptr %564, i32 0, i32 2
  store i32 -1, ptr %565, align 8, !tbaa !28
  %566 = load i32, ptr %39, align 4, !tbaa !9
  %567 = sub nsw i32 %566, 1
  %568 = sext i32 %567 to i64
  %569 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %568) #6
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #6
  %572 = getelementptr inbounds %"struct.std::pair.85", ptr %571, i32 0, i32 1
  %573 = getelementptr inbounds %struct.ChainInfo, ptr %572, i32 0, i32 2
  store i32 %570, ptr %573, align 8, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #6
  br label %1032

574:                                              ; preds = %497
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %10, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %11, align 4
  br label %582

578:                                              ; preds = %549, %545, %536, %526, %517, %506, %501
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %10, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  br label %582

582:                                              ; preds = %578, %574
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #6
  br label %1036

583:                                              ; preds = %487
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #6
  %584 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %585 = getelementptr inbounds %"struct.std::pair.85", ptr %584, i32 0, i32 1
  %586 = getelementptr inbounds %struct.ChainInfo, ptr %585, i32 0, i32 1
  %587 = load i32, ptr %586, align 4, !tbaa !25
  %588 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef %587)
          to label %589 unwind label %643

589:                                              ; preds = %583
  %590 = load i32, ptr %38, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %591) #6
  %593 = load i32, ptr %592, align 4, !tbaa !9
  %594 = icmp eq i32 %588, %593
  %595 = zext i1 %594 to i8
  store i8 %595, ptr %64, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #6
  %596 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %597 = getelementptr inbounds %"struct.std::pair.85", ptr %596, i32 0, i32 1
  %598 = getelementptr inbounds %struct.ChainInfo, ptr %597, i32 0, i32 1
  %599 = load i32, ptr %598, align 4, !tbaa !25
  %600 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef %599)
          to label %601 unwind label %647

601:                                              ; preds = %589
  %602 = load i32, ptr %39, align 4, !tbaa !9
  %603 = sub nsw i32 %602, 1
  %604 = sext i32 %603 to i64
  %605 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %604) #6
  %606 = load i32, ptr %605, align 4, !tbaa !9
  %607 = icmp eq i32 %600, %606
  %608 = zext i1 %607 to i8
  store i8 %608, ptr %65, align 1, !tbaa !29
  %609 = load i8, ptr %64, align 1, !tbaa !29, !range !31, !noundef !32
  %610 = trunc i8 %609 to i1
  br i1 %610, label %611, label %651

611:                                              ; preds = %601
  %612 = load i8, ptr %65, align 1, !tbaa !29, !range !31, !noundef !32
  %613 = trunc i8 %612 to i1
  br i1 %613, label %614, label %651

614:                                              ; preds = %611
  %615 = load i32, ptr %38, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %616) #6
  %618 = load i32, ptr %617, align 4, !tbaa !9
  %619 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %620 = getelementptr inbounds %"struct.std::pair.85", ptr %619, i32 0, i32 1
  %621 = getelementptr inbounds %struct.ChainInfo, ptr %620, i32 0, i32 2
  %622 = load i32, ptr %621, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %618, i32 noundef %622)
          to label %623 unwind label %647

623:                                              ; preds = %614
  %624 = load i32, ptr %38, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %625) #6
  %627 = load i32, ptr %626, align 4, !tbaa !9
  %628 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %629 = getelementptr inbounds %"struct.std::pair.85", ptr %628, i32 0, i32 1
  %630 = getelementptr inbounds %struct.ChainInfo, ptr %629, i32 0, i32 2
  %631 = load i32, ptr %630, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %627, i32 noundef %631)
          to label %632 unwind label %647

632:                                              ; preds = %623
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %66, ptr align 8 %40, i64 8, i1 false), !tbaa.struct !27
  %633 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %66, i32 0, i32 0
  %634 = load ptr, ptr %633, align 8
  %635 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr %634)
          to label %636 unwind label %647

636:                                              ; preds = %632
  %637 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %67, i32 0, i32 0
  store ptr %635, ptr %637, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %68, ptr align 8 %42, i64 8, i1 false), !tbaa.struct !27
  %638 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %68, i32 0, i32 0
  %639 = load ptr, ptr %638, align 8
  %640 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr %639)
          to label %641 unwind label %647

641:                                              ; preds = %636
  %642 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %69, i32 0, i32 0
  store ptr %640, ptr %642, align 8
  br label %1029

643:                                              ; preds = %583
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %10, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %11, align 4
  br label %1031

647:                                              ; preds = %928, %919, %869, %860, %848, %795, %785, %772, %725, %716, %663, %654, %636, %632, %623, %614, %589
  %648 = landingpad { ptr, i32 }
          cleanup
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %10, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %11, align 4
  br label %1030

651:                                              ; preds = %611, %601
  %652 = load i8, ptr %64, align 1, !tbaa !29, !range !31, !noundef !32
  %653 = trunc i8 %652 to i1
  br i1 %653, label %654, label %713

654:                                              ; preds = %651
  %655 = load i32, ptr %38, align 4, !tbaa !9
  %656 = sext i32 %655 to i64
  %657 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %656) #6
  %658 = load i32, ptr %657, align 4, !tbaa !9
  %659 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %660 = getelementptr inbounds %"struct.std::pair.85", ptr %659, i32 0, i32 1
  %661 = getelementptr inbounds %struct.ChainInfo, ptr %660, i32 0, i32 2
  %662 = load i32, ptr %661, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %658, i32 noundef %662)
          to label %663 unwind label %647

663:                                              ; preds = %654
  %664 = load i32, ptr %38, align 4, !tbaa !9
  %665 = sext i32 %664 to i64
  %666 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %665) #6
  %667 = load i32, ptr %666, align 4, !tbaa !9
  %668 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %669 = getelementptr inbounds %"struct.std::pair.85", ptr %668, i32 0, i32 1
  %670 = getelementptr inbounds %struct.ChainInfo, ptr %669, i32 0, i32 2
  %671 = load i32, ptr %670, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %667, i32 noundef %671)
          to label %672 unwind label %647

672:                                              ; preds = %663
  call void @llvm.lifetime.start.p0(i64 48, ptr %70) #6
  %673 = load ptr, ptr %4, align 8, !tbaa !5
  %674 = load i32, ptr %39, align 4, !tbaa !9
  %675 = sub nsw i32 %674, 1
  %676 = sext i32 %675 to i64
  %677 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %676) #6
  %678 = load i32, ptr %677, align 4, !tbaa !9
  %679 = sext i32 %678 to i64
  %680 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %673, i64 noundef %679) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %71, ptr align 16 %680, i64 32, i1 false), !tbaa.struct !26
  %681 = load ptr, ptr %4, align 8, !tbaa !5
  %682 = load i32, ptr %39, align 4, !tbaa !9
  %683 = sub nsw i32 %682, 1
  %684 = sext i32 %683 to i64
  %685 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %684) #6
  %686 = load i32, ptr %685, align 4, !tbaa !9
  %687 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef %686)
          to label %688 unwind label %709

688:                                              ; preds = %672
  %689 = sext i32 %687 to i64
  %690 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %681, i64 noundef %689) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %72, ptr align 16 %690, i64 32, i1 false), !tbaa.struct !26
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %70, ptr noundef byval(%struct.pt) align 16 %71, ptr noundef byval(%struct.pt) align 16 %72)
          to label %691 unwind label %709

691:                                              ; preds = %688
  %692 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %693 = getelementptr inbounds %"struct.std::pair.85", ptr %692, i32 0, i32 0
  %694 = getelementptr inbounds %struct.Chain, ptr %693, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %694, ptr align 16 %70, i64 48, i1 false), !tbaa.struct !33
  call void @llvm.lifetime.end.p0(i64 48, ptr %70) #6
  %695 = load i32, ptr %39, align 4, !tbaa !9
  %696 = sub nsw i32 %695, 1
  %697 = sext i32 %696 to i64
  %698 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %697) #6
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %701 = getelementptr inbounds %"struct.std::pair.85", ptr %700, i32 0, i32 1
  %702 = getelementptr inbounds %struct.ChainInfo, ptr %701, i32 0, i32 2
  store i32 %699, ptr %702, align 8, !tbaa !28
  %703 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %704 = getelementptr inbounds %"struct.std::pair.85", ptr %703, i32 0, i32 1
  %705 = getelementptr inbounds %struct.ChainInfo, ptr %704, i32 0, i32 1
  store i32 %699, ptr %705, align 4, !tbaa !25
  %706 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %707 = getelementptr inbounds %"struct.std::pair.85", ptr %706, i32 0, i32 1
  %708 = getelementptr inbounds %struct.ChainInfo, ptr %707, i32 0, i32 2
  store i32 -1, ptr %708, align 8, !tbaa !28
  br label %1028

709:                                              ; preds = %688, %672
  %710 = landingpad { ptr, i32 }
          cleanup
  %711 = extractvalue { ptr, i32 } %710, 0
  store ptr %711, ptr %10, align 8
  %712 = extractvalue { ptr, i32 } %710, 1
  store i32 %712, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %70) #6
  br label %1030

713:                                              ; preds = %651
  %714 = load i8, ptr %65, align 1, !tbaa !29, !range !31, !noundef !32
  %715 = trunc i8 %714 to i1
  br i1 %715, label %716, label %772

716:                                              ; preds = %713
  %717 = load i32, ptr %38, align 4, !tbaa !9
  %718 = sext i32 %717 to i64
  %719 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %718) #6
  %720 = load i32, ptr %719, align 4, !tbaa !9
  %721 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %722 = getelementptr inbounds %"struct.std::pair.85", ptr %721, i32 0, i32 1
  %723 = getelementptr inbounds %struct.ChainInfo, ptr %722, i32 0, i32 2
  %724 = load i32, ptr %723, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %720, i32 noundef %724)
          to label %725 unwind label %647

725:                                              ; preds = %716
  %726 = load i32, ptr %38, align 4, !tbaa !9
  %727 = sext i32 %726 to i64
  %728 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %727) #6
  %729 = load i32, ptr %728, align 4, !tbaa !9
  %730 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %731 = getelementptr inbounds %"struct.std::pair.85", ptr %730, i32 0, i32 1
  %732 = getelementptr inbounds %struct.ChainInfo, ptr %731, i32 0, i32 2
  %733 = load i32, ptr %732, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %729, i32 noundef %733)
          to label %734 unwind label %647

734:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 48, ptr %73) #6
  %735 = load ptr, ptr %4, align 8, !tbaa !5
  %736 = load i32, ptr %38, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %737) #6
  %739 = load i32, ptr %738, align 4, !tbaa !9
  %740 = sext i32 %739 to i64
  %741 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %735, i64 noundef %740) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %74, ptr align 16 %741, i64 32, i1 false), !tbaa.struct !26
  %742 = load ptr, ptr %4, align 8, !tbaa !5
  %743 = load i32, ptr %38, align 4, !tbaa !9
  %744 = sext i32 %743 to i64
  %745 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %744) #6
  %746 = load i32, ptr %745, align 4, !tbaa !9
  %747 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef %746)
          to label %748 unwind label %768

748:                                              ; preds = %734
  %749 = sext i32 %747 to i64
  %750 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %742, i64 noundef %749) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %75, ptr align 16 %750, i64 32, i1 false), !tbaa.struct !26
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %73, ptr noundef byval(%struct.pt) align 16 %74, ptr noundef byval(%struct.pt) align 16 %75)
          to label %751 unwind label %768

751:                                              ; preds = %748
  %752 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %753 = getelementptr inbounds %"struct.std::pair.85", ptr %752, i32 0, i32 0
  %754 = getelementptr inbounds %struct.Chain, ptr %753, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %754, ptr align 16 %73, i64 48, i1 false), !tbaa.struct !33
  call void @llvm.lifetime.end.p0(i64 48, ptr %73) #6
  %755 = load i32, ptr %38, align 4, !tbaa !9
  %756 = sext i32 %755 to i64
  %757 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %756) #6
  %758 = load i32, ptr %757, align 4, !tbaa !9
  %759 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %760 = getelementptr inbounds %"struct.std::pair.85", ptr %759, i32 0, i32 1
  %761 = getelementptr inbounds %struct.ChainInfo, ptr %760, i32 0, i32 2
  store i32 %758, ptr %761, align 8, !tbaa !28
  %762 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %763 = getelementptr inbounds %"struct.std::pair.85", ptr %762, i32 0, i32 1
  %764 = getelementptr inbounds %struct.ChainInfo, ptr %763, i32 0, i32 1
  store i32 %758, ptr %764, align 4, !tbaa !25
  %765 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %766 = getelementptr inbounds %"struct.std::pair.85", ptr %765, i32 0, i32 1
  %767 = getelementptr inbounds %struct.ChainInfo, ptr %766, i32 0, i32 2
  store i32 -1, ptr %767, align 8, !tbaa !28
  br label %1027

768:                                              ; preds = %748, %734
  %769 = landingpad { ptr, i32 }
          cleanup
  %770 = extractvalue { ptr, i32 } %769, 0
  store ptr %770, ptr %10, align 8
  %771 = extractvalue { ptr, i32 } %769, 1
  store i32 %771, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %73) #6
  br label %1030

772:                                              ; preds = %713
  %773 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %774 = getelementptr inbounds %"struct.std::pair.85", ptr %773, i32 0, i32 1
  %775 = getelementptr inbounds %struct.ChainInfo, ptr %774, i32 0, i32 1
  %776 = load i32, ptr %775, align 4, !tbaa !25
  %777 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef %776)
          to label %778 unwind label %647

778:                                              ; preds = %772
  %779 = load i32, ptr %39, align 4, !tbaa !9
  %780 = sub nsw i32 %779, 1
  %781 = sext i32 %780 to i64
  %782 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %781) #6
  %783 = load i32, ptr %782, align 4, !tbaa !9
  %784 = icmp eq i32 %777, %783
  br i1 %784, label %785, label %848

785:                                              ; preds = %778
  %786 = load i32, ptr %39, align 4, !tbaa !9
  %787 = sub nsw i32 %786, 1
  %788 = sext i32 %787 to i64
  %789 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %788) #6
  %790 = load i32, ptr %789, align 4, !tbaa !9
  %791 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %792 = getelementptr inbounds %"struct.std::pair.85", ptr %791, i32 0, i32 1
  %793 = getelementptr inbounds %struct.ChainInfo, ptr %792, i32 0, i32 2
  %794 = load i32, ptr %793, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %790, i32 noundef %794)
          to label %795 unwind label %647

795:                                              ; preds = %785
  %796 = load i32, ptr %39, align 4, !tbaa !9
  %797 = sub nsw i32 %796, 1
  %798 = sext i32 %797 to i64
  %799 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %798) #6
  %800 = load i32, ptr %799, align 4, !tbaa !9
  %801 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %802 = getelementptr inbounds %"struct.std::pair.85", ptr %801, i32 0, i32 1
  %803 = getelementptr inbounds %struct.ChainInfo, ptr %802, i32 0, i32 2
  %804 = load i32, ptr %803, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %800, i32 noundef %804)
          to label %805 unwind label %647

805:                                              ; preds = %795
  call void @llvm.lifetime.start.p0(i64 48, ptr %76) #6
  %806 = load ptr, ptr %4, align 8, !tbaa !5
  %807 = load i32, ptr %38, align 4, !tbaa !9
  %808 = sext i32 %807 to i64
  %809 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %808) #6
  %810 = load i32, ptr %809, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %806, i64 noundef %811) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %77, ptr align 16 %812, i64 32, i1 false), !tbaa.struct !26
  %813 = load ptr, ptr %4, align 8, !tbaa !5
  %814 = load i32, ptr %38, align 4, !tbaa !9
  %815 = sext i32 %814 to i64
  %816 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %815) #6
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef %817)
          to label %819 unwind label %844

819:                                              ; preds = %805
  %820 = sext i32 %818 to i64
  %821 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %813, i64 noundef %820) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %78, ptr align 16 %821, i64 32, i1 false), !tbaa.struct !26
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %76, ptr noundef byval(%struct.pt) align 16 %77, ptr noundef byval(%struct.pt) align 16 %78)
          to label %822 unwind label %844

822:                                              ; preds = %819
  %823 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %824 = getelementptr inbounds %"struct.std::pair.85", ptr %823, i32 0, i32 0
  %825 = getelementptr inbounds %struct.Chain, ptr %824, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %825, ptr align 16 %76, i64 48, i1 false), !tbaa.struct !33
  call void @llvm.lifetime.end.p0(i64 48, ptr %76) #6
  %826 = load i32, ptr %38, align 4, !tbaa !9
  %827 = sext i32 %826 to i64
  %828 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %827) #6
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %831 = getelementptr inbounds %"struct.std::pair.85", ptr %830, i32 0, i32 1
  %832 = getelementptr inbounds %struct.ChainInfo, ptr %831, i32 0, i32 1
  store i32 %829, ptr %832, align 4, !tbaa !25
  %833 = load i32, ptr %39, align 4, !tbaa !9
  %834 = sub nsw i32 %833, 1
  %835 = sext i32 %834 to i64
  %836 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %835) #6
  %837 = load i32, ptr %836, align 4, !tbaa !9
  %838 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %839 = getelementptr inbounds %"struct.std::pair.85", ptr %838, i32 0, i32 1
  %840 = getelementptr inbounds %struct.ChainInfo, ptr %839, i32 0, i32 2
  store i32 %837, ptr %840, align 8, !tbaa !28
  %841 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %842 = getelementptr inbounds %"struct.std::pair.85", ptr %841, i32 0, i32 1
  %843 = getelementptr inbounds %struct.ChainInfo, ptr %842, i32 0, i32 2
  store i32 -1, ptr %843, align 8, !tbaa !28
  br label %1026

844:                                              ; preds = %819, %805
  %845 = landingpad { ptr, i32 }
          cleanup
  %846 = extractvalue { ptr, i32 } %845, 0
  store ptr %846, ptr %10, align 8
  %847 = extractvalue { ptr, i32 } %845, 1
  store i32 %847, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %76) #6
  br label %1030

848:                                              ; preds = %778
  %849 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %850 = getelementptr inbounds %"struct.std::pair.85", ptr %849, i32 0, i32 1
  %851 = getelementptr inbounds %struct.ChainInfo, ptr %850, i32 0, i32 1
  %852 = load i32, ptr %851, align 4, !tbaa !25
  %853 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef %852)
          to label %854 unwind label %647

854:                                              ; preds = %848
  %855 = load i32, ptr %38, align 4, !tbaa !9
  %856 = sext i32 %855 to i64
  %857 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %856) #6
  %858 = load i32, ptr %857, align 4, !tbaa !9
  %859 = icmp eq i32 %853, %858
  br i1 %859, label %860, label %919

860:                                              ; preds = %854
  %861 = load i32, ptr %38, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %862) #6
  %864 = load i32, ptr %863, align 4, !tbaa !9
  %865 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %866 = getelementptr inbounds %"struct.std::pair.85", ptr %865, i32 0, i32 1
  %867 = getelementptr inbounds %struct.ChainInfo, ptr %866, i32 0, i32 2
  %868 = load i32, ptr %867, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %864, i32 noundef %868)
          to label %869 unwind label %647

869:                                              ; preds = %860
  %870 = load i32, ptr %38, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %871) #6
  %873 = load i32, ptr %872, align 4, !tbaa !9
  %874 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %875 = getelementptr inbounds %"struct.std::pair.85", ptr %874, i32 0, i32 1
  %876 = getelementptr inbounds %struct.ChainInfo, ptr %875, i32 0, i32 2
  %877 = load i32, ptr %876, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %873, i32 noundef %877)
          to label %878 unwind label %647

878:                                              ; preds = %869
  call void @llvm.lifetime.start.p0(i64 48, ptr %79) #6
  %879 = load ptr, ptr %4, align 8, !tbaa !5
  %880 = load i32, ptr %39, align 4, !tbaa !9
  %881 = sub nsw i32 %880, 1
  %882 = sext i32 %881 to i64
  %883 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %882) #6
  %884 = load i32, ptr %883, align 4, !tbaa !9
  %885 = sext i32 %884 to i64
  %886 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %879, i64 noundef %885) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %80, ptr align 16 %886, i64 32, i1 false), !tbaa.struct !26
  %887 = load ptr, ptr %4, align 8, !tbaa !5
  %888 = load i32, ptr %39, align 4, !tbaa !9
  %889 = sub nsw i32 %888, 1
  %890 = sext i32 %889 to i64
  %891 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %890) #6
  %892 = load i32, ptr %891, align 4, !tbaa !9
  %893 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef %892)
          to label %894 unwind label %915

894:                                              ; preds = %878
  %895 = sext i32 %893 to i64
  %896 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %887, i64 noundef %895) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %81, ptr align 16 %896, i64 32, i1 false), !tbaa.struct !26
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %79, ptr noundef byval(%struct.pt) align 16 %80, ptr noundef byval(%struct.pt) align 16 %81)
          to label %897 unwind label %915

897:                                              ; preds = %894
  %898 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %899 = getelementptr inbounds %"struct.std::pair.85", ptr %898, i32 0, i32 0
  %900 = getelementptr inbounds %struct.Chain, ptr %899, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %900, ptr align 16 %79, i64 48, i1 false), !tbaa.struct !33
  call void @llvm.lifetime.end.p0(i64 48, ptr %79) #6
  %901 = load i32, ptr %39, align 4, !tbaa !9
  %902 = sub nsw i32 %901, 1
  %903 = sext i32 %902 to i64
  %904 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %903) #6
  %905 = load i32, ptr %904, align 4, !tbaa !9
  %906 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %907 = getelementptr inbounds %"struct.std::pair.85", ptr %906, i32 0, i32 1
  %908 = getelementptr inbounds %struct.ChainInfo, ptr %907, i32 0, i32 2
  store i32 %905, ptr %908, align 8, !tbaa !28
  %909 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %910 = getelementptr inbounds %"struct.std::pair.85", ptr %909, i32 0, i32 1
  %911 = getelementptr inbounds %struct.ChainInfo, ptr %910, i32 0, i32 1
  store i32 %905, ptr %911, align 4, !tbaa !25
  %912 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %913 = getelementptr inbounds %"struct.std::pair.85", ptr %912, i32 0, i32 1
  %914 = getelementptr inbounds %struct.ChainInfo, ptr %913, i32 0, i32 2
  store i32 -1, ptr %914, align 8, !tbaa !28
  br label %1025

915:                                              ; preds = %894, %878
  %916 = landingpad { ptr, i32 }
          cleanup
  %917 = extractvalue { ptr, i32 } %916, 0
  store ptr %917, ptr %10, align 8
  %918 = extractvalue { ptr, i32 } %916, 1
  store i32 %918, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %79) #6
  br label %1030

919:                                              ; preds = %854
  %920 = load i32, ptr %38, align 4, !tbaa !9
  %921 = sext i32 %920 to i64
  %922 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %921) #6
  %923 = load i32, ptr %922, align 4, !tbaa !9
  %924 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %925 = getelementptr inbounds %"struct.std::pair.85", ptr %924, i32 0, i32 1
  %926 = getelementptr inbounds %struct.ChainInfo, ptr %925, i32 0, i32 2
  %927 = load i32, ptr %926, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %923, i32 noundef %927)
          to label %928 unwind label %647

928:                                              ; preds = %919
  %929 = load i32, ptr %38, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %930) #6
  %932 = load i32, ptr %931, align 4, !tbaa !9
  %933 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %934 = getelementptr inbounds %"struct.std::pair.85", ptr %933, i32 0, i32 1
  %935 = getelementptr inbounds %struct.ChainInfo, ptr %934, i32 0, i32 2
  %936 = load i32, ptr %935, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %932, i32 noundef %936)
          to label %937 unwind label %647

937:                                              ; preds = %928
  call void @llvm.lifetime.start.p0(i64 48, ptr %82) #6
  %938 = load ptr, ptr %4, align 8, !tbaa !5
  %939 = load i32, ptr %38, align 4, !tbaa !9
  %940 = sext i32 %939 to i64
  %941 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %940) #6
  %942 = load i32, ptr %941, align 4, !tbaa !9
  %943 = sext i32 %942 to i64
  %944 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %938, i64 noundef %943) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %83, ptr align 16 %944, i64 32, i1 false), !tbaa.struct !26
  %945 = load ptr, ptr %4, align 8, !tbaa !5
  %946 = load i32, ptr %38, align 4, !tbaa !9
  %947 = sext i32 %946 to i64
  %948 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %947) #6
  %949 = load i32, ptr %948, align 4, !tbaa !9
  %950 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef %949)
          to label %951 unwind label %1007

951:                                              ; preds = %937
  %952 = sext i32 %950 to i64
  %953 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %945, i64 noundef %952) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %84, ptr align 16 %953, i64 32, i1 false), !tbaa.struct !26
  invoke void @_ZN5ChainC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %82, ptr noundef byval(%struct.pt) align 16 %83, ptr noundef byval(%struct.pt) align 16 %84)
          to label %954 unwind label %1007

954:                                              ; preds = %951
  call void @llvm.lifetime.start.p0(i64 12, ptr %85) #6
  %955 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %956 = getelementptr inbounds %"struct.std::pair.85", ptr %955, i32 0, i32 1
  %957 = getelementptr inbounds %struct.ChainInfo, ptr %956, i32 0, i32 0
  %958 = load i32, ptr %957, align 16, !tbaa !20
  %959 = load i32, ptr %38, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %960) #6
  %962 = load i32, ptr %961, align 4, !tbaa !9
  invoke void @_ZN9ChainInfoC2Eii(ptr noundef nonnull align 4 dereferenceable(12) %85, i32 noundef %958, i32 noundef %962)
          to label %963 unwind label %1011

963:                                              ; preds = %954
  %964 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE7emplaceIJS0_S1_EEESt17_Rb_tree_iteratorIS6_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef nonnull align 16 dereferenceable(48) %82, ptr noundef nonnull align 4 dereferenceable(12) %85)
          to label %965 unwind label %1011

965:                                              ; preds = %963
  %966 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %86, i32 0, i32 0
  store ptr %964, ptr %966, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %82) #6
  %967 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %968 = getelementptr inbounds %"struct.std::pair.85", ptr %967, i32 0, i32 1
  %969 = getelementptr inbounds %struct.ChainInfo, ptr %968, i32 0, i32 2
  store i32 -1, ptr %969, align 8, !tbaa !28
  %970 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  %971 = getelementptr inbounds %"struct.std::pair.85", ptr %970, i32 0, i32 1
  %972 = getelementptr inbounds %struct.ChainInfo, ptr %971, i32 0, i32 2
  store i32 -1, ptr %972, align 8, !tbaa !28
  %973 = load i32, ptr %23, align 4, !tbaa !9
  %974 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #6
  %975 = getelementptr inbounds %"struct.std::pair.85", ptr %974, i32 0, i32 1
  %976 = getelementptr inbounds %struct.ChainInfo, ptr %975, i32 0, i32 0
  store i32 %973, ptr %976, align 16, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 48, ptr %87) #6
  %977 = load ptr, ptr %4, align 8, !tbaa !5
  %978 = load i32, ptr %39, align 4, !tbaa !9
  %979 = sub nsw i32 %978, 1
  %980 = sext i32 %979 to i64
  %981 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %980) #6
  %982 = load i32, ptr %981, align 4, !tbaa !9
  %983 = sext i32 %982 to i64
  %984 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %977, i64 noundef %983) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %88, ptr align 16 %984, i64 32, i1 false), !tbaa.struct !26
  %985 = load ptr, ptr %4, align 8, !tbaa !5
  %986 = load i32, ptr %39, align 4, !tbaa !9
  %987 = sub nsw i32 %986, 1
  %988 = sext i32 %987 to i64
  %989 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %988) #6
  %990 = load i32, ptr %989, align 4, !tbaa !9
  %991 = invoke noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef %990)
          to label %992 unwind label %1016

992:                                              ; preds = %965
  %993 = sext i32 %991 to i64
  %994 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %985, i64 noundef %993) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %89, ptr align 16 %994, i64 32, i1 false), !tbaa.struct !26
  invoke void @_ZN5ChainC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %87, ptr noundef byval(%struct.pt) align 16 %88, ptr noundef byval(%struct.pt) align 16 %89)
          to label %995 unwind label %1016

995:                                              ; preds = %992
  call void @llvm.lifetime.start.p0(i64 12, ptr %90) #6
  %996 = load i32, ptr %23, align 4, !tbaa !9
  %997 = add nsw i32 %996, 1
  store i32 %997, ptr %23, align 4, !tbaa !9
  %998 = load i32, ptr %39, align 4, !tbaa !9
  %999 = sub nsw i32 %998, 1
  %1000 = sext i32 %999 to i64
  %1001 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %1000) #6
  %1002 = load i32, ptr %1001, align 4, !tbaa !9
  invoke void @_ZN9ChainInfoC2Eii(ptr noundef nonnull align 4 dereferenceable(12) %90, i32 noundef %996, i32 noundef %1002)
          to label %1003 unwind label %1020

1003:                                             ; preds = %995
  %1004 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE7emplaceIJS0_S1_EEESt17_Rb_tree_iteratorIS6_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef nonnull align 16 dereferenceable(48) %87, ptr noundef nonnull align 4 dereferenceable(12) %90)
          to label %1005 unwind label %1020

1005:                                             ; preds = %1003
  %1006 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %91, i32 0, i32 0
  store ptr %1004, ptr %1006, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr %90) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %87) #6
  br label %1025

1007:                                             ; preds = %951, %937
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %10, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %11, align 4
  br label %1015

1011:                                             ; preds = %963, %954
  %1012 = landingpad { ptr, i32 }
          cleanup
  %1013 = extractvalue { ptr, i32 } %1012, 0
  store ptr %1013, ptr %10, align 8
  %1014 = extractvalue { ptr, i32 } %1012, 1
  store i32 %1014, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #6
  br label %1015

1015:                                             ; preds = %1011, %1007
  call void @llvm.lifetime.end.p0(i64 48, ptr %82) #6
  br label %1030

1016:                                             ; preds = %992, %965
  %1017 = landingpad { ptr, i32 }
          cleanup
  %1018 = extractvalue { ptr, i32 } %1017, 0
  store ptr %1018, ptr %10, align 8
  %1019 = extractvalue { ptr, i32 } %1017, 1
  store i32 %1019, ptr %11, align 4
  br label %1024

1020:                                             ; preds = %1003, %995
  %1021 = landingpad { ptr, i32 }
          cleanup
  %1022 = extractvalue { ptr, i32 } %1021, 0
  store ptr %1022, ptr %10, align 8
  %1023 = extractvalue { ptr, i32 } %1021, 1
  store i32 %1023, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %90) #6
  br label %1024

1024:                                             ; preds = %1020, %1016
  call void @llvm.lifetime.end.p0(i64 48, ptr %87) #6
  br label %1030

1025:                                             ; preds = %1005, %897
  br label %1026

1026:                                             ; preds = %1025, %822
  br label %1027

1027:                                             ; preds = %1026, %751
  br label %1028

1028:                                             ; preds = %1027, %691
  br label %1029

1029:                                             ; preds = %1028, %641
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #6
  br label %1032

1030:                                             ; preds = %1024, %1015, %915, %844, %768, %709, %647
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #6
  br label %1031

1031:                                             ; preds = %1030, %643
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #6
  br label %1036

1032:                                             ; preds = %1029, %554
  br label %1033

1033:                                             ; preds = %1032, %455
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  br label %1034

1034:                                             ; preds = %1033
  %1035 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %1035, ptr %38, align 4, !tbaa !9
  br label %285, !llvm.loop !34

1036:                                             ; preds = %1031, %582, %486, %477, %465, %461
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  br label %1037

1037:                                             ; preds = %1036, %457
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  br label %1038

1038:                                             ; preds = %1037, %319
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %1042

1039:                                             ; preds = %289
  br label %1040

1040:                                             ; preds = %1039
  %1041 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1041, ptr %30, align 4, !tbaa !9
  br label %213, !llvm.loop !35

1042:                                             ; preds = %1038, %290
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %1289

1043:                                             ; preds = %217
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #6
  %1044 = getelementptr inbounds %class.anon.88, ptr %92, i32 0, i32 0
  %1045 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %1045, ptr %1044, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #6
  %1046 = getelementptr inbounds %class.anon.89, ptr %93, i32 0, i32 0
  %1047 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %1047, ptr %1046, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #6
  store i32 0, ptr %94, align 4, !tbaa !9
  br label %1048

1048:                                             ; preds = %1110, %1043
  %1049 = load i32, ptr %94, align 4, !tbaa !9
  %1050 = load i32, ptr %7, align 4, !tbaa !9
  %1051 = icmp slt i32 %1049, %1050
  br i1 %1051, label %1053, label %1052

1052:                                             ; preds = %1048
  store i32 17, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #6
  br label %1127

1053:                                             ; preds = %1048
  %1054 = load ptr, ptr %4, align 8, !tbaa !5
  %1055 = load i32, ptr %94, align 4, !tbaa !9
  %1056 = sext i32 %1055 to i64
  %1057 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1054, i64 noundef %1056) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %95, ptr align 16 %1057, i64 32, i1 false), !tbaa.struct !26
  invoke void @_ZN5Angle8setPivotE2pt(ptr noundef byval(%struct.pt) align 16 %95)
          to label %1058 unwind label %1113

1058:                                             ; preds = %1053
  %1059 = load i32, ptr %94, align 4, !tbaa !9
  %1060 = sext i32 %1059 to i64
  %1061 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1060) #6
  %1062 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1061) #6
  %1063 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %96, i32 0, i32 0
  store ptr %1062, ptr %1063, align 8
  %1064 = load i32, ptr %94, align 4, !tbaa !9
  %1065 = sext i32 %1064 to i64
  %1066 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1065) #6
  %1067 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1066) #6
  %1068 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %97, i32 0, i32 0
  store ptr %1067, ptr %1068, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %98, ptr align 8 %92, i64 8, i1 false), !tbaa.struct !27
  %1069 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %96, i32 0, i32 0
  %1070 = load ptr, ptr %1069, align 8
  %1071 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %97, i32 0, i32 0
  %1072 = load ptr, ptr %1071, align 8
  %1073 = getelementptr inbounds %class.anon.88, ptr %98, i32 0, i32 0
  %1074 = load ptr, ptr %1073, align 8
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZ20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_7EvT_SF_T0_"(ptr %1070, ptr %1072, ptr %1074)
          to label %1075 unwind label %1113

1075:                                             ; preds = %1058
  %1076 = load i32, ptr %94, align 4, !tbaa !9
  %1077 = sext i32 %1076 to i64
  %1078 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1077) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #6
  %1079 = load i32, ptr %94, align 4, !tbaa !9
  %1080 = sext i32 %1079 to i64
  %1081 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1080) #6
  %1082 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1081) #6
  %1083 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %101, i32 0, i32 0
  store ptr %1082, ptr %1083, align 8
  %1084 = load i32, ptr %94, align 4, !tbaa !9
  %1085 = sext i32 %1084 to i64
  %1086 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1085) #6
  %1087 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1086) #6
  %1088 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %102, i32 0, i32 0
  store ptr %1087, ptr %1088, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %103, ptr align 8 %93, i64 8, i1 false), !tbaa.struct !27
  %1089 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %101, i32 0, i32 0
  %1090 = load ptr, ptr %1089, align 8
  %1091 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %102, i32 0, i32 0
  %1092 = load ptr, ptr %1091, align 8
  %1093 = getelementptr inbounds %class.anon.89, ptr %103, i32 0, i32 0
  %1094 = load ptr, ptr %1093, align 8
  %1095 = invoke ptr @"_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZ20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_8ET_SF_SF_T0_"(ptr %1090, ptr %1092, ptr %1094)
          to label %1096 unwind label %1117

1096:                                             ; preds = %1075
  %1097 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %100, i32 0, i32 0
  store ptr %1095, ptr %1097, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIiiESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull align 8 dereferenceable(8) %100) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #6
  %1098 = load i32, ptr %94, align 4, !tbaa !9
  %1099 = sext i32 %1098 to i64
  %1100 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1099) #6
  %1101 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1100) #6
  %1102 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %105, i32 0, i32 0
  store ptr %1101, ptr %1102, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIiiESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(8) %105) #6
  %1103 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.91", ptr %99, i32 0, i32 0
  %1104 = load ptr, ptr %1103, align 8
  %1105 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.91", ptr %104, i32 0, i32 0
  %1106 = load ptr, ptr %1105, align 8
  %1107 = invoke ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EES8_(ptr noundef nonnull align 8 dereferenceable(24) %1078, ptr %1104, ptr %1106)
          to label %1108 unwind label %1121

1108:                                             ; preds = %1096
  %1109 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %106, i32 0, i32 0
  store ptr %1107, ptr %1109, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #6
  br label %1110

1110:                                             ; preds = %1108
  %1111 = load i32, ptr %94, align 4, !tbaa !9
  %1112 = add nsw i32 %1111, 1
  store i32 %1112, ptr %94, align 4, !tbaa !9
  br label %1048, !llvm.loop !36

1113:                                             ; preds = %1058, %1053
  %1114 = landingpad { ptr, i32 }
          cleanup
  %1115 = extractvalue { ptr, i32 } %1114, 0
  store ptr %1115, ptr %10, align 8
  %1116 = extractvalue { ptr, i32 } %1114, 1
  store i32 %1116, ptr %11, align 4
  br label %1126

1117:                                             ; preds = %1075
  %1118 = landingpad { ptr, i32 }
          cleanup
  %1119 = extractvalue { ptr, i32 } %1118, 0
  store ptr %1119, ptr %10, align 8
  %1120 = extractvalue { ptr, i32 } %1118, 1
  store i32 %1120, ptr %11, align 4
  br label %1125

1121:                                             ; preds = %1096
  %1122 = landingpad { ptr, i32 }
          cleanup
  %1123 = extractvalue { ptr, i32 } %1122, 0
  store ptr %1123, ptr %10, align 8
  %1124 = extractvalue { ptr, i32 } %1122, 1
  store i32 %1124, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #6
  br label %1125

1125:                                             ; preds = %1121, %1117
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #6
  br label %1126

1126:                                             ; preds = %1125, %1113
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #6
  br label %1288

1127:                                             ; preds = %1052
  call void @llvm.lifetime.start.p0(i64 40, ptr %107) #6
  %1128 = load i32, ptr %22, align 4, !tbaa !9
  %1129 = sext i32 %1128 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #6
  store i8 0, ptr %108, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #6
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #6
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKbRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %107, i64 noundef %1129, ptr noundef nonnull align 1 dereferenceable(1) %108, ptr noundef nonnull align 1 dereferenceable(1) %109)
          to label %1130 unwind label %1136

1130:                                             ; preds = %1127
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #6
  store i32 0, ptr %110, align 4, !tbaa !9
  br label %1131

1131:                                             ; preds = %1282, %1130
  %1132 = load i32, ptr %110, align 4, !tbaa !9
  %1133 = load i32, ptr %7, align 4, !tbaa !9
  %1134 = icmp slt i32 %1132, %1133
  br i1 %1134, label %1140, label %1135

1135:                                             ; preds = %1131
  store i32 20, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #6
  br label %1285

1136:                                             ; preds = %1127
  %1137 = landingpad { ptr, i32 }
          cleanup
  %1138 = extractvalue { ptr, i32 } %1137, 0
  store ptr %1138, ptr %10, align 8
  %1139 = extractvalue { ptr, i32 } %1137, 1
  store i32 %1139, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #6
  br label %1287

1140:                                             ; preds = %1131
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #6
  %1141 = load i32, ptr %110, align 4, !tbaa !9
  %1142 = sext i32 %1141 to i64
  %1143 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1142) #6
  store ptr %1143, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #6
  %1144 = load ptr, ptr %111, align 8, !tbaa !5
  %1145 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1144) #6
  %1146 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %112, i32 0, i32 0
  store ptr %1145, ptr %1146, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #6
  %1147 = load ptr, ptr %111, align 8, !tbaa !5
  %1148 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1147) #6
  %1149 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %113, i32 0, i32 0
  store ptr %1148, ptr %1149, align 8
  br label %1150

1150:                                             ; preds = %1278, %1140
  %1151 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIiiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(8) %113) #6
  br i1 %1151, label %1153, label %1152

1152:                                             ; preds = %1150
  store i32 23, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #6
  br label %1281

1153:                                             ; preds = %1150
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #6
  %1154 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #6
  store ptr %1154, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %115) #6
  %1155 = load ptr, ptr %114, align 8, !tbaa !5
  %1156 = getelementptr inbounds %"struct.std::pair.20", ptr %1155, i32 0, i32 1
  %1157 = load i32, ptr %1156, align 4, !tbaa !37
  %1158 = sext i32 %1157 to i64
  %1159 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %107, i64 noundef %1158)
          to label %1160 unwind label %1249

1160:                                             ; preds = %1153
  %1161 = getelementptr inbounds { ptr, i64 }, ptr %115, i32 0, i32 0
  %1162 = extractvalue { ptr, i64 } %1159, 0
  store ptr %1162, ptr %1161, align 8
  %1163 = getelementptr inbounds { ptr, i64 }, ptr %115, i32 0, i32 1
  %1164 = extractvalue { ptr, i64 } %1159, 1
  store i64 %1164, ptr %1163, align 8
  %1165 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %115) #6
  %1166 = xor i1 %1165, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #6
  br i1 %1166, label %1167, label %1277

1167:                                             ; preds = %1160
  call void @llvm.lifetime.start.p0(i64 24, ptr %116) #6
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %116) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #6
  %1168 = load i32, ptr %110, align 4, !tbaa !9
  store i32 %1168, ptr %117, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #6
  %1169 = load ptr, ptr %114, align 8, !tbaa !5
  %1170 = getelementptr inbounds %"struct.std::pair.20", ptr %1169, i32 0, i32 0
  %1171 = load i32, ptr %1170, align 4, !tbaa !39
  store i32 %1171, ptr %118, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #6
  %1172 = load ptr, ptr %114, align 8, !tbaa !5
  %1173 = getelementptr inbounds %"struct.std::pair.20", ptr %1172, i32 0, i32 1
  %1174 = load i32, ptr %1173, align 4, !tbaa !37
  store i32 %1174, ptr %119, align 4, !tbaa !9
  br label %1175

1175:                                             ; preds = %1240, %1167
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #6
  %1176 = load i32, ptr %119, align 4, !tbaa !9
  %1177 = sext i32 %1176 to i64
  %1178 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %107, i64 noundef %1177)
          to label %1179 unwind label %1253

1179:                                             ; preds = %1175
  %1180 = getelementptr inbounds { ptr, i64 }, ptr %120, i32 0, i32 0
  %1181 = extractvalue { ptr, i64 } %1178, 0
  store ptr %1181, ptr %1180, align 8
  %1182 = getelementptr inbounds { ptr, i64 }, ptr %120, i32 0, i32 1
  %1183 = extractvalue { ptr, i64 } %1178, 1
  store i64 %1183, ptr %1182, align 8
  %1184 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %120) #6
  %1185 = xor i1 %1184, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #6
  br i1 %1185, label %1186, label %1274

1186:                                             ; preds = %1179
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %116, ptr noundef nonnull align 4 dereferenceable(4) %117)
          to label %1187 unwind label %1257

1187:                                             ; preds = %1186
  call void @llvm.lifetime.start.p0(i64 16, ptr %121) #6
  %1188 = load i32, ptr %119, align 4, !tbaa !9
  %1189 = sext i32 %1188 to i64
  %1190 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %107, i64 noundef %1189)
          to label %1191 unwind label %1261

1191:                                             ; preds = %1187
  %1192 = getelementptr inbounds { ptr, i64 }, ptr %121, i32 0, i32 0
  %1193 = extractvalue { ptr, i64 } %1190, 0
  store ptr %1193, ptr %1192, align 8
  %1194 = getelementptr inbounds { ptr, i64 }, ptr %121, i32 0, i32 1
  %1195 = extractvalue { ptr, i64 } %1190, 1
  store i64 %1195, ptr %1194, align 8
  %1196 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %121, i1 noundef zeroext true) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #6
  %1197 = load ptr, ptr %4, align 8, !tbaa !5
  %1198 = load i32, ptr %118, align 4, !tbaa !9
  %1199 = sext i32 %1198 to i64
  %1200 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1197, i64 noundef %1199) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %122, ptr align 16 %1200, i64 32, i1 false), !tbaa.struct !26
  invoke void @_ZN5Angle8setPivotE2pt(ptr noundef byval(%struct.pt) align 16 %122)
          to label %1201 unwind label %1257

1201:                                             ; preds = %1191
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #6
  %1202 = load i32, ptr %118, align 4, !tbaa !9
  %1203 = sext i32 %1202 to i64
  %1204 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1203) #6
  %1205 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1204) #6
  %1206 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %124, i32 0, i32 0
  store ptr %1205, ptr %1206, align 8
  %1207 = load i32, ptr %118, align 4, !tbaa !9
  %1208 = sext i32 %1207 to i64
  %1209 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1208) #6
  %1210 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1209) #6
  %1211 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %125, i32 0, i32 0
  store ptr %1210, ptr %1211, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #6
  store i32 -1, ptr %127, align 4, !tbaa !9
  %1212 = invoke i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %117, ptr noundef nonnull align 4 dereferenceable(4) %127)
          to label %1213 unwind label %1265

1213:                                             ; preds = %1201
  store i64 %1212, ptr %126, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %128, ptr align 8 %92, i64 8, i1 false), !tbaa.struct !27
  %1214 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %124, i32 0, i32 0
  %1215 = load ptr, ptr %1214, align 8
  %1216 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %125, i32 0, i32 0
  %1217 = load ptr, ptr %1216, align 8
  %1218 = getelementptr inbounds %class.anon.88, ptr %128, i32 0, i32 0
  %1219 = load ptr, ptr %1218, align 8
  %1220 = invoke ptr @"_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEES3_Z20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_7ET_SF_SF_RKT0_T1_"(ptr %1215, ptr %1217, ptr noundef nonnull align 4 dereferenceable(8) %126, ptr %1219)
          to label %1221 unwind label %1265

1221:                                             ; preds = %1213
  %1222 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %123, i32 0, i32 0
  store ptr %1220, ptr %1222, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #6
  %1223 = load i32, ptr %118, align 4, !tbaa !9
  %1224 = sext i32 %1223 to i64
  %1225 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1224) #6
  %1226 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1225) #6
  %1227 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %131, i32 0, i32 0
  store ptr %1226, ptr %1227, align 8
  %1228 = call noundef zeroext i1 @_ZN9__gnu_cxxeqIPSt4pairIiiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull align 8 dereferenceable(8) %131) #6
  br i1 %1228, label %1229, label %1235

1229:                                             ; preds = %1221
  %1230 = load i32, ptr %118, align 4, !tbaa !9
  %1231 = sext i32 %1230 to i64
  %1232 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %1231) #6
  %1233 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1232) #6
  %1234 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %130, i32 0, i32 0
  store ptr %1233, ptr %1234, align 8
  br label %1236

1235:                                             ; preds = %1221
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %130, ptr align 8 %123, i64 8, i1 false), !tbaa.struct !27
  br label %1236

1236:                                             ; preds = %1235, %1229
  %1237 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %130, i32 0, i32 0
  %1238 = load ptr, ptr %1237, align 8
  %1239 = invoke ptr @_ZSt4prevIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEET_S9_NSt15iterator_traitsIS9_E15difference_typeE(ptr %1238, i64 noundef 1)
          to label %1240 unwind label %1269

1240:                                             ; preds = %1236
  %1241 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.90", ptr %129, i32 0, i32 0
  store ptr %1239, ptr %1241, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %123, ptr align 8 %129, i64 8, i1 false), !tbaa.struct !27
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #6
  %1242 = load i32, ptr %118, align 4, !tbaa !9
  store i32 %1242, ptr %117, align 4, !tbaa !9
  %1243 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS2_SaIS2_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %123) #6
  %1244 = getelementptr inbounds %"struct.std::pair.20", ptr %1243, i32 0, i32 0
  %1245 = load i32, ptr %1244, align 4, !tbaa !39
  store i32 %1245, ptr %118, align 4, !tbaa !9
  %1246 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS2_SaIS2_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %123) #6
  %1247 = getelementptr inbounds %"struct.std::pair.20", ptr %1246, i32 0, i32 1
  %1248 = load i32, ptr %1247, align 4, !tbaa !37
  store i32 %1248, ptr %119, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #6
  br label %1175, !llvm.loop !40

1249:                                             ; preds = %1153
  %1250 = landingpad { ptr, i32 }
          cleanup
  %1251 = extractvalue { ptr, i32 } %1250, 0
  store ptr %1251, ptr %10, align 8
  %1252 = extractvalue { ptr, i32 } %1250, 1
  store i32 %1252, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #6
  br label %1280

1253:                                             ; preds = %1175
  %1254 = landingpad { ptr, i32 }
          cleanup
  %1255 = extractvalue { ptr, i32 } %1254, 0
  store ptr %1255, ptr %10, align 8
  %1256 = extractvalue { ptr, i32 } %1254, 1
  store i32 %1256, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #6
  br label %1276

1257:                                             ; preds = %1274, %1191, %1186
  %1258 = landingpad { ptr, i32 }
          cleanup
  %1259 = extractvalue { ptr, i32 } %1258, 0
  store ptr %1259, ptr %10, align 8
  %1260 = extractvalue { ptr, i32 } %1258, 1
  store i32 %1260, ptr %11, align 4
  br label %1276

1261:                                             ; preds = %1187
  %1262 = landingpad { ptr, i32 }
          cleanup
  %1263 = extractvalue { ptr, i32 } %1262, 0
  store ptr %1263, ptr %10, align 8
  %1264 = extractvalue { ptr, i32 } %1262, 1
  store i32 %1264, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #6
  br label %1276

1265:                                             ; preds = %1213, %1201
  %1266 = landingpad { ptr, i32 }
          cleanup
  %1267 = extractvalue { ptr, i32 } %1266, 0
  store ptr %1267, ptr %10, align 8
  %1268 = extractvalue { ptr, i32 } %1266, 1
  store i32 %1268, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #6
  br label %1273

1269:                                             ; preds = %1236
  %1270 = landingpad { ptr, i32 }
          cleanup
  %1271 = extractvalue { ptr, i32 } %1270, 0
  store ptr %1271, ptr %10, align 8
  %1272 = extractvalue { ptr, i32 } %1270, 1
  store i32 %1272, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #6
  br label %1273

1273:                                             ; preds = %1269, %1265
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #6
  br label %1276

1274:                                             ; preds = %1179
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_0clERKS_IiSaIiEE"(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(24) %116)
          to label %1275 unwind label %1257

1275:                                             ; preds = %1274
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %116) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %116) #6
  br label %1277

1276:                                             ; preds = %1273, %1261, %1257, %1253
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %116) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %116) #6
  br label %1280

1277:                                             ; preds = %1275, %1160
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #6
  br label %1278

1278:                                             ; preds = %1277
  %1279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #6
  br label %1150

1280:                                             ; preds = %1276, %1249
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #6
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %107) #6
  br label %1287

1281:                                             ; preds = %1152
  br label %1282

1282:                                             ; preds = %1281
  %1283 = load i32, ptr %110, align 4, !tbaa !9
  %1284 = add nsw i32 %1283, 1
  store i32 %1284, ptr %110, align 4, !tbaa !9
  br label %1131, !llvm.loop !41

1285:                                             ; preds = %1135
  store i1 true, ptr %5, align 1
  store i32 1, ptr %32, align 4
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %107) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %107) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #6
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #6
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 24, 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 @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #6
  %1286 = load i1, ptr %5, align 1
  br i1 %1286, label %1295, label %1294

1287:                                             ; preds = %1280, %1136
  call void @llvm.lifetime.end.p0(i64 40, ptr %107) #6
  br label %1288

1288:                                             ; preds = %1287, %1126
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #6
  br label %1289

1289:                                             ; preds = %1288, %1042
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #6
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %28) #6
  br label %1290

1290:                                             ; preds = %1289, %211
  call void @llvm.lifetime.end.p0(i64 24, 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 @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #6
  br label %1291

1291:                                             ; preds = %1290, %185
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %1292

1292:                                             ; preds = %1291, %181
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  br label %1293

1293:                                             ; preds = %1292, %177
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #6
  call void @_ZNSt6vectorISt5arrayI2ptLm3EESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  br label %1296

1294:                                             ; preds = %1285
  call void @_ZNSt6vectorISt5arrayI2ptLm3EESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  br label %1295

1295:                                             ; preds = %1294, %1285
  ret void

1296:                                             ; preds = %1293
  %1297 = load ptr, ptr %10, align 8
  %1298 = load i32, ptr %11, align 4
  %1299 = insertvalue { ptr, i32 } poison, ptr %1297, 0
  %1300 = insertvalue { ptr, i32 } %1299, i32 %1298, 1
  resume { ptr, i32 } %1300
}

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZ20polygonTriangulationRKS3_I2ptSaIS7_EEE3$_1EvT_SD_T0_"(ptr, ptr, ptr) #4

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #5 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZ20polygonTriangulationRKS3_I2ptSaIS7_EEE3$_6EvT_SD_T0_"(ptr, ptr, ptr) #4

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_2clEii"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE11upper_boundERS5_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 16 dereferenceable(48)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ChainC2Ee(ptr noundef nonnull align 16 dereferenceable(48), x86_fp80 noundef) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE11lower_boundERS5_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 16 dereferenceable(48)) #3 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE7emplaceIJS0_S1_EEESt17_Rb_tree_iteratorIS6_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(12)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9ChainInfoC2Eii(ptr noundef nonnull align 4 dereferenceable(12), i32 noundef, i32 noundef) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4nextISt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEET_S7_NSt15iterator_traitsIS7_E15difference_typeE(ptr, i64 noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4prevISt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEET_S7_NSt15iterator_traitsIS7_E15difference_typeE(ptr, i64 noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZ20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_7EvT_SF_T0_"(ptr, ptr, ptr) #4

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZ20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_8ET_SF_SF_T0_"(ptr, ptr, ptr) #4

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #3 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEES3_Z20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_7ET_SF_SF_RKT0_T1_"(ptr, ptr, ptr noundef nonnull align 4 dereferenceable(8), ptr) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4prevIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEET_S9_NSt15iterator_traitsIS9_E15difference_typeE(ptr, i64 noundef) #4

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_0clERKS_IiSaIiEE"(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorISt6vectorISt4pairIiiESaIS2_EEED2Ev(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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { 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 #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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !15, i64 0}
!14 = !{!"_ZTS2pt", !15, i64 0, !15, i64 16}
!15 = !{!"long double", !7, i64 0}
!16 = distinct !{!16, !12}
!17 = !{!15, !15, i64 0}
!18 = distinct !{!18, !12}
!19 = !{!14, !15, i64 16}
!20 = !{!21, !10, i64 48}
!21 = !{!"_ZTSSt4pairIK5Chain9ChainInfoE", !22, i64 0, !24, i64 48}
!22 = !{!"_ZTS5Chain", !23, i64 0}
!23 = !{!"_ZTS4Line", !14, i64 0, !15, i64 32}
!24 = !{!"_ZTS9ChainInfo", !10, i64 0, !10, i64 4, !10, i64 8}
!25 = !{!21, !10, i64 52}
!26 = !{i64 0, i64 16, !17, i64 16, i64 16, !17}
!27 = !{i64 0, i64 8, !5}
!28 = !{!21, !10, i64 56}
!29 = !{!30, !30, i64 0}
!30 = !{!"bool", !7, i64 0}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{i64 0, i64 16, !17, i64 16, i64 16, !17, i64 32, i64 16, !17}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = !{!38, !10, i64 4}
!38 = !{!"_ZTSSt4pairIiiE", !10, i64 0, !10, i64 4}
!39 = !{!38, !10, i64 0}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}


; 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.59" = type { %"struct.std::_Vector_base.60" }
%"struct.std::_Vector_base.60" = type { %"struct.std::_Vector_base<std::array<pt, 3>, std::allocator<std::array<pt, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::array<pt, 3>, std::allocator<std::array<pt, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::array<pt, 3>, std::allocator<std::array<pt, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::array<pt, 3>, std::allocator<std::array<pt, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.64 = type { ptr, ptr }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.67" = type { i8 }
%class.anon.72 = type { ptr }
%class.anon.73 = type { ptr }
%class.anon.74 = type { ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<std::vector<std::pair<int, int>>, std::allocator<std::vector<std::pair<int, int>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<std::pair<int, int>>, std::allocator<std::vector<std::pair<int, int>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<std::pair<int, int>>, std::allocator<std::vector<std::pair<int, int>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<std::pair<int, int>>, std::allocator<std::vector<std::pair<int, int>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.77" = type { i8 }
%class.anon.80 = type { ptr, ptr, ptr }
%"class.std::multimap" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<Chain, std::pair<const Chain, ChainInfo>, std::_Select1st<std::pair<const Chain, ChainInfo>>, std::less<Chain>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Chain, std::pair<const Chain, ChainInfo>, std::_Select1st<std::pair<const Chain, ChainInfo>>, std::less<Chain>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.70" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%struct.Chain = type { %struct.Line }
%struct.Line = type { %struct.pt, x86_fp80 }
%struct.ChainInfo = type { i32, i32, i32 }
%"class.__gnu_cxx::__normal_iterator.91" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.90" = type { ptr }
%"class.std::vector.92" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::allocator.96" = type { i8 }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"struct.std::pair.20" = type { i32, i32 }

@_ZN5Chain1XE = external dso_local local_unnamed_addr global x86_fp80, align 16

; 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 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2

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

declare i32 @__gxx_personality_v0(...)

; 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 #3 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 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 @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z20polygonTriangulationRKSt6vectorI2ptSaIS0_EE(ptr dead_on_unwind noalias nonnull writable sret(%"class.std::vector.59") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %1) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.anon.64, align 8
  %4 = alloca i32, align 4
  %5 = alloca %"class.std::vector.65", align 8
  %6 = alloca %"class.std::allocator.67", align 1
  %7 = alloca %class.anon.72, align 8
  %8 = alloca %class.anon.73, align 8
  %9 = alloca %class.anon.74, align 8
  %10 = alloca %"class.std::vector.75", align 8
  %11 = alloca %"class.std::allocator.77", align 1
  %12 = alloca i32, align 4
  %13 = alloca %class.anon.80, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::multimap", align 8
  %17 = alloca %"class.std::multimap", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.70", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.70", align 8
  %20 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %21 = alloca %struct.Chain, align 16
  %22 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %23 = alloca %struct.Chain, align 16
  %24 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %25 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %26 = alloca %struct.Chain, align 16
  %27 = alloca %struct.pt, align 16
  %28 = alloca %struct.ChainInfo, align 4
  %29 = alloca %struct.Chain, align 16
  %30 = alloca %struct.pt, align 16
  %31 = alloca %struct.ChainInfo, align 4
  %32 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %33 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %34 = alloca %struct.Line, align 16
  %35 = alloca %struct.pt, align 16
  %36 = alloca %struct.Line, align 16
  %37 = alloca %struct.pt, align 16
  %38 = alloca %struct.Line, align 16
  %39 = alloca %struct.pt, align 16
  %40 = alloca %struct.Line, align 16
  %41 = alloca %struct.pt, align 16
  %42 = alloca %struct.Chain, align 16
  %43 = alloca %struct.pt, align 16
  %44 = alloca %struct.ChainInfo, align 4
  %45 = alloca %struct.Chain, align 16
  %46 = alloca %struct.pt, align 16
  %47 = alloca %struct.ChainInfo, align 4
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.91", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.91", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %52 = alloca %"class.std::vector.92", align 8
  %53 = alloca i8, align 1
  %54 = alloca %"class.std::allocator.96", align 1
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %57 = alloca %"struct.std::_Bit_reference", align 8
  %58 = alloca %"class.std::vector.65", align 8
  %59 = alloca i32, align 4
  %60 = alloca %"struct.std::_Bit_reference", align 8
  %61 = alloca %"struct.std::_Bit_reference", align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  %63 = alloca %"struct.std::pair.20", align 8
  %64 = alloca i32, align 4
  %65 = alloca %"class.__gnu_cxx::__normal_iterator.90", align 8
  tail call void @_ZNSt6vectorISt5arrayI2ptLm3EESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #7
  store ptr %0, ptr %3, align 8, !tbaa !5
  %66 = getelementptr inbounds i8, ptr %3, i64 8
  store ptr %1, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #7
  %67 = tail call noundef i64 @_ZNKSt6vectorI2ptSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  %68 = trunc i64 %67 to i32
  store i32 %68, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #7
  %sext = shl i64 %67, 32
  %69 = ashr exact i64 %sext, 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %69, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %70 unwind label %85

70:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  %71 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  %72 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_(ptr %71, ptr %72, i32 noundef 0)
  %73 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  %74 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZ20polygonTriangulationRKS3_I2ptSaIS7_EEE3$_1EvT_SD_T0_"(ptr %73, ptr %74, ptr nonnull %1)
          to label %75 unwind label %87

75:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  store ptr %4, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  store ptr %4, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  store ptr %4, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  %76 = load i32, ptr %4, align 4, !tbaa !9
  %77 = sext i32 %76 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #7
  call void @_ZNSaISt6vectorISt4pairIiiESaIS1_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  invoke void @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEC2EmRKS4_(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %77, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %78 unwind label %89

78:                                               ; preds = %75
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairIiiESaIS2_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  store ptr %7, ptr %13, align 8, !tbaa !5
  %79 = getelementptr inbounds i8, ptr %13, i64 8
  store ptr %10, ptr %79, align 8, !tbaa !5
  %80 = getelementptr inbounds i8, ptr %13, i64 16
  store ptr %12, ptr %80, align 8, !tbaa !5
  %81 = load i32, ptr %4, align 4, !tbaa !9
  %82 = icmp sgt i32 %81, 0
  br i1 %82, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %97, %78
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %16) #7
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #7
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #7
  %83 = load i32, ptr %4, align 4, !tbaa !9
  %84 = icmp sgt i32 %83, 0
  br i1 %84, label %.preheader252, label %._crit_edge279

85:                                               ; preds = %2
  %86 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  br label %665

87:                                               ; preds = %70
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %664

89:                                               ; preds = %75
  %90 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorISt4pairIiiESaIS2_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  br label %663

.lr.ph:                                           ; preds = %78, %97
  %indvars.iv = phi i64 [ %indvars.iv.next, %97 ], [ 0, %78 ]
  %91 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #7
  %92 = trunc nuw nsw i64 %indvars.iv to i32
  %93 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %92)
  store i32 %93, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  %94 = load i32, ptr %12, align 4, !tbaa !9
  %95 = add nsw i32 %94, 1
  store i32 %95, ptr %12, align 4, !tbaa !9
  store i32 %94, ptr %15, align 4, !tbaa !9
  %96 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE12emplace_backIJiiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %97 unwind label %101

97:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %98 = load i32, ptr %4, align 4, !tbaa !9
  %99 = sext i32 %98 to i64
  %100 = icmp slt i64 %indvars.iv.next, %99
  br i1 %100, label %.lr.ph, label %._crit_edge, !llvm.loop !11

101:                                              ; preds = %.lr.ph
  %102 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  br label %662

.loopexit251:                                     ; preds = %540, %130
  %.1203.lcssa = phi i32 [ %.0202276, %130 ], [ %.3205, %540 ]
  %103 = load i32, ptr %4, align 4, !tbaa !9
  %104 = icmp sgt i32 %103, %123
  br i1 %104, label %.preheader252, label %.preheader, !llvm.loop !13

.preheader252:                                    ; preds = %._crit_edge, %.loopexit251
  %.0202276 = phi i32 [ %.1203.lcssa, %.loopexit251 ], [ 0, %._crit_edge ]
  %.0209275 = phi i32 [ %123, %.loopexit251 ], [ 0, %._crit_edge ]
  %105 = sext i32 %.0209275 to i64
  br label %107

.preheader:                                       ; preds = %.loopexit251
  %106 = icmp sgt i32 %103, 0
  br i1 %106, label %.lr.ph278, label %._crit_edge279

107:                                              ; preds = %.preheader252, %111
  %indvars.iv293 = phi i32 [ %.0209275, %.preheader252 ], [ %indvars.iv.next294, %111 ]
  %indvars.iv288 = phi i64 [ %105, %.preheader252 ], [ %indvars.iv.next289, %111 ]
  %indvars.iv.next289 = add nsw i64 %indvars.iv288, 1
  %108 = load i32, ptr %4, align 4, !tbaa !9
  %109 = sext i32 %108 to i64
  %110 = icmp slt i64 %indvars.iv.next289, %109
  br i1 %110, label %111, label %.critedge

111:                                              ; preds = %107
  %112 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %105) #7
  %113 = load i32, ptr %112, align 4, !tbaa !9
  %114 = sext i32 %113 to i64
  %115 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %114) #7
  %116 = load x86_fp80, ptr %115, align 16, !tbaa !14
  %117 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv.next289) #7
  %118 = load i32, ptr %117, align 4, !tbaa !9
  %119 = sext i32 %118 to i64
  %120 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %119) #7
  %121 = load x86_fp80, ptr %120, align 16, !tbaa !14
  %122 = call noundef zeroext i1 @_Z2ltee(x86_fp80 noundef %116, x86_fp80 noundef %121)
  %indvars.iv.next294 = add nsw i32 %indvars.iv293, 1
  br i1 %122, label %.critedge, label %107, !llvm.loop !17

.critedge:                                        ; preds = %107, %111
  %123 = trunc nsw i64 %indvars.iv.next289 to i32
  %124 = trunc nsw i64 %indvars.iv288 to i32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %125 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  store ptr %125, ptr %18, align 8
  %126 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %18, i64 noundef %105) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %127 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  store ptr %127, ptr %19, align 8
  %sext302 = shl i64 %indvars.iv.next289, 32
  %128 = ashr exact i64 %sext302, 32
  %129 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %19, i64 noundef %128) #7
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZ20polygonTriangulationRKS3_I2ptSaIS7_EEE3$_6EvT_SD_T0_"(ptr %126, ptr %129, ptr nonnull %1)
          to label %130 unwind label %138

130:                                              ; preds = %.critedge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  %131 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %105) #7
  %132 = load i32, ptr %131, align 4, !tbaa !9
  %133 = sext i32 %132 to i64
  %134 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %133) #7
  %135 = load x86_fp80, ptr %134, align 16, !tbaa !14
  store x86_fp80 %135, ptr @_ZN5Chain1XE, align 16, !tbaa !18
  %.not271 = icmp sgt i32 %.0209275, %124
  br i1 %.not271, label %.loopexit251, label %.preheader250.preheader

.preheader250.preheader:                          ; preds = %130
  %sext303 = shl i64 %indvars.iv288, 32
  %136 = ashr exact i64 %sext303, 32
  br label %.preheader250

.preheader250:                                    ; preds = %.preheader250.preheader, %540
  %.1203273 = phi i32 [ %.3205, %540 ], [ %.0202276, %.preheader250.preheader ]
  %.0212272 = phi i32 [ %.lcssa305, %540 ], [ %.0209275, %.preheader250.preheader ]
  %137 = sext i32 %.0212272 to i64
  %smax = call i32 @llvm.smax.i32(i32 %.0212272, i32 %indvars.iv293)
  br label %140

138:                                              ; preds = %.critedge
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %661

140:                                              ; preds = %.preheader250, %142
  %indvars.iv291 = phi i64 [ %137, %.preheader250 ], [ %indvars.iv.next292, %142 ]
  %indvars.iv.next292 = add nsw i64 %indvars.iv291, 1
  %141 = icmp slt i64 %indvars.iv291, %136
  br i1 %141, label %142, label %.critedge2

142:                                              ; preds = %140
  %143 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv291) #7
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv.next292) #7
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = call noundef zeroext i1 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_2clEii"(ptr noundef nonnull align 8 dereferenceable(8) %7, i32 noundef %144, i32 noundef %146)
  br i1 %147, label %140, label %.critedge2.split.loop.exit309, !llvm.loop !19

.critedge2.split.loop.exit309:                    ; preds = %142
  %148 = trunc nsw i64 %indvars.iv291 to i32
  br label %.critedge2

.critedge2:                                       ; preds = %140, %.critedge2.split.loop.exit309
  %.0213.in.lcssa = phi i32 [ %148, %.critedge2.split.loop.exit309 ], [ %smax, %140 ]
  %.lcssa305 = trunc i64 %indvars.iv.next292 to i32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %21) #7
  %149 = sext i32 %.0213.in.lcssa to i64
  %150 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = sext i32 %151 to i64
  %153 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %152) #7
  %154 = getelementptr inbounds i8, ptr %153, i64 16
  %155 = load x86_fp80, ptr %154, align 16, !tbaa !20
  invoke void @_ZN5ChainC2Ee(ptr noundef nonnull align 16 dereferenceable(48) %21, x86_fp80 noundef %155)
          to label %156 unwind label %225

156:                                              ; preds = %.critedge2
  %157 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE11upper_boundERS5_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 16 dereferenceable(48) %21)
          to label %158 unwind label %225

158:                                              ; preds = %156
  store ptr %157, ptr %20, align 8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %23) #7
  %159 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = sext i32 %160 to i64
  %162 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %161) #7
  %163 = getelementptr inbounds i8, ptr %162, i64 16
  %164 = load x86_fp80, ptr %163, align 16, !tbaa !20
  invoke void @_ZN5ChainC2Ee(ptr noundef nonnull align 16 dereferenceable(48) %23, x86_fp80 noundef %164)
          to label %165 unwind label %227

165:                                              ; preds = %158
  %166 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE11lower_boundERS5_(ptr noundef nonnull align 8 dereferenceable(48) %17, ptr noundef nonnull align 16 dereferenceable(48) %23)
          to label %167 unwind label %227

167:                                              ; preds = %165
  store ptr %166, ptr %22, align 8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  %168 = call ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %16) #7
  store ptr %168, ptr %24, align 8
  %169 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEES7_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  br i1 %169, label %.critedge4, label %170

170:                                              ; preds = %167
  %171 = call ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %17) #7
  store ptr %171, ptr %25, align 8
  %172 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEES7_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br i1 %172, label %.critedge4, label %173

173:                                              ; preds = %170
  %174 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %175 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %174) #7
  %176 = getelementptr inbounds i8, ptr %175, i64 48
  %177 = load i32, ptr %176, align 16, !tbaa !21
  %178 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %179 = getelementptr inbounds i8, ptr %178, i64 48
  %180 = load i32, ptr %179, align 16, !tbaa !21
  %.not223 = icmp eq i32 %177, %180
  br i1 %.not223, label %.critedge6, label %181

181:                                              ; preds = %173
  %182 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %183 = getelementptr inbounds i8, ptr %182, i64 52
  %184 = load i32, ptr %183, align 4, !tbaa !26
  %185 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %184)
  %186 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %.not224 = icmp eq i32 %185, %187
  br i1 %.not224, label %188, label %.critedge4

188:                                              ; preds = %181
  %189 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %190 = getelementptr inbounds i8, ptr %189, i64 52
  %191 = load i32, ptr %190, align 4, !tbaa !26
  %192 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %191)
  %193 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %.not225 = icmp eq i32 %192, %194
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br i1 %.not225, label %239, label %195

.critedge4:                                       ; preds = %181, %167, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %195

195:                                              ; preds = %.critedge4, %188
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #7
  %196 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = sext i32 %197 to i64
  %199 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %198) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %27, ptr noundef nonnull align 16 dereferenceable(32) %199, i64 32, i1 false), !tbaa.struct !27
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %201)
  %203 = sext i32 %202 to i64
  %204 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %203) #7
  invoke void @_ZN5ChainC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %26, ptr noundef nonnull byval(%struct.pt) align 16 %27, ptr noundef nonnull byval(%struct.pt) align 16 %204)
          to label %205 unwind label %229

205:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #7
  %206 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %207 = load i32, ptr %206, align 4, !tbaa !9
  call void @_ZN9ChainInfoC2Eii(ptr noundef nonnull align 4 dereferenceable(12) %28, i32 noundef %.1203273, i32 noundef %207)
  %208 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE7emplaceIJS0_S1_EEESt17_Rb_tree_iteratorIS6_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 16 dereferenceable(48) %26, ptr noundef nonnull align 4 dereferenceable(12) %28)
          to label %209 unwind label %231

209:                                              ; preds = %205
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %29) #7
  %210 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = sext i32 %211 to i64
  %213 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %212) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %30, ptr noundef nonnull align 16 dereferenceable(32) %213, i64 32, i1 false), !tbaa.struct !27
  %214 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %215)
  %217 = sext i32 %216 to i64
  %218 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %217) #7
  invoke void @_ZN5ChainC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %29, ptr noundef nonnull byval(%struct.pt) align 16 %30, ptr noundef nonnull byval(%struct.pt) align 16 %218)
          to label %219 unwind label %234

219:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %31) #7
  %220 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %221 = load i32, ptr %220, align 4, !tbaa !9
  call void @_ZN9ChainInfoC2Eii(ptr noundef nonnull align 4 dereferenceable(12) %31, i32 noundef %.1203273, i32 noundef %221)
  %222 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE7emplaceIJS0_S1_EEESt17_Rb_tree_iteratorIS6_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %17, ptr noundef nonnull align 16 dereferenceable(48) %29, ptr noundef nonnull align 4 dereferenceable(12) %31)
          to label %223 unwind label %236

223:                                              ; preds = %219
  %224 = add nsw i32 %.1203273, 1
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %29) #7
  br label %540

225:                                              ; preds = %156, %.critedge2
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %21) #7
  br label %542

227:                                              ; preds = %165, %158
  %228 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #7
  br label %541

229:                                              ; preds = %195
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %233

231:                                              ; preds = %205
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #7
  br label %233

233:                                              ; preds = %231, %229
  %.pn235 = phi { ptr, i32 } [ %232, %231 ], [ %230, %229 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #7
  br label %541

234:                                              ; preds = %209
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %238

236:                                              ; preds = %219
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #7
  br label %238

238:                                              ; preds = %236, %234
  %.pn237 = phi { ptr, i32 } [ %237, %236 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %29) #7
  br label %541

.critedge6:                                       ; preds = %173
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %239

239:                                              ; preds = %.critedge6, %188
  %240 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %241 = getelementptr inbounds i8, ptr %240, i64 48
  %242 = load i32, ptr %241, align 16, !tbaa !21
  %243 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %244 = getelementptr inbounds i8, ptr %243, i64 48
  %245 = load i32, ptr %244, align 16, !tbaa !21
  %.not226 = icmp eq i32 %242, %245
  br i1 %.not226, label %295, label %246

246:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #7
  %.sroa.059.0.copyload = load ptr, ptr %22, align 8, !tbaa !5
  %247 = invoke ptr @_ZSt4nextISt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEET_S7_NSt15iterator_traitsIS7_E15difference_typeE(ptr %.sroa.059.0.copyload, i64 noundef 1)
          to label %248 unwind label %290

248:                                              ; preds = %246
  store ptr %247, ptr %32, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #7
  %.sroa.058.0.copyload = load ptr, ptr %20, align 8, !tbaa !5
  %249 = invoke ptr @_ZSt4prevISt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEET_S7_NSt15iterator_traitsIS7_E15difference_typeE(ptr %.sroa.058.0.copyload, i64 noundef 1)
          to label %250 unwind label %292

250:                                              ; preds = %248
  store ptr %249, ptr %33, align 8
  %251 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %254 = getelementptr inbounds i8, ptr %253, i64 56
  %255 = load i32, ptr %254, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %252, i32 noundef %255)
          to label %256 unwind label %292

256:                                              ; preds = %250
  %257 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %260 = getelementptr inbounds i8, ptr %259, i64 56
  %261 = load i32, ptr %260, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %258, i32 noundef %261)
          to label %262 unwind label %292

262:                                              ; preds = %256
  %263 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  %266 = getelementptr inbounds i8, ptr %265, i64 56
  %267 = load i32, ptr %266, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %264, i32 noundef %267)
          to label %268 unwind label %292

268:                                              ; preds = %262
  %269 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  %272 = getelementptr inbounds i8, ptr %271, i64 56
  %273 = load i32, ptr %272, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %270, i32 noundef %273)
          to label %274 unwind label %292

274:                                              ; preds = %268
  %.sroa.057.0.copyload = load ptr, ptr %20, align 8, !tbaa !5
  %275 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr %.sroa.057.0.copyload)
          to label %276 unwind label %292

276:                                              ; preds = %274
  %.sroa.055.0.copyload = load ptr, ptr %22, align 8, !tbaa !5
  %277 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %17, ptr %.sroa.055.0.copyload)
          to label %278 unwind label %292

278:                                              ; preds = %276
  %279 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  %280 = getelementptr inbounds i8, ptr %279, i64 48
  %281 = load i32, ptr %280, align 16, !tbaa !21
  %282 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  %283 = getelementptr inbounds i8, ptr %282, i64 48
  store i32 %281, ptr %283, align 16, !tbaa !21
  %284 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  %285 = getelementptr inbounds i8, ptr %284, i64 56
  store i32 -1, ptr %285, align 8, !tbaa !28
  %286 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  %289 = getelementptr inbounds i8, ptr %288, i64 56
  store i32 %287, ptr %289, align 8, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  br label %540

290:                                              ; preds = %246
  %291 = landingpad { ptr, i32 }
          cleanup
  br label %294

292:                                              ; preds = %276, %274, %268, %262, %256, %250, %248
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  br label %294

294:                                              ; preds = %292, %290
  %.pn233 = phi { ptr, i32 } [ %293, %292 ], [ %291, %290 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  br label %541

295:                                              ; preds = %239
  %296 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %297 = getelementptr inbounds i8, ptr %296, i64 52
  %298 = load i32, ptr %297, align 4, !tbaa !26
  %299 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %298)
  %300 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = icmp ne i32 %299, %301
  %303 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %304 = getelementptr inbounds i8, ptr %303, i64 52
  %305 = load i32, ptr %304, align 4, !tbaa !26
  %306 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %305)
  %307 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = icmp ne i32 %306, %308
  %brmerge = select i1 %302, i1 true, i1 %309
  br i1 %brmerge, label %328, label %310

310:                                              ; preds = %295
  %311 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %314 = getelementptr inbounds i8, ptr %313, i64 56
  %315 = load i32, ptr %314, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %312, i32 noundef %315)
          to label %316 unwind label %326

316:                                              ; preds = %310
  %317 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %318 = load i32, ptr %317, align 4, !tbaa !9
  %319 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %320 = getelementptr inbounds i8, ptr %319, i64 56
  %321 = load i32, ptr %320, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %318, i32 noundef %321)
          to label %322 unwind label %326

322:                                              ; preds = %316
  %.sroa.049.0.copyload = load ptr, ptr %20, align 8, !tbaa !5
  %323 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr %.sroa.049.0.copyload)
          to label %324 unwind label %326

324:                                              ; preds = %322
  %.sroa.047.0.copyload = load ptr, ptr %22, align 8, !tbaa !5
  %325 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %17, ptr %.sroa.047.0.copyload)
          to label %540 unwind label %326

326:                                              ; preds = %485, %484, %456, %455, %412, %406, %370, %364, %335, %329, %324, %322, %316, %310
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %541

328:                                              ; preds = %295
  br i1 %302, label %363, label %329

329:                                              ; preds = %328
  %330 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %333 = getelementptr inbounds i8, ptr %332, i64 56
  %334 = load i32, ptr %333, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %331, i32 noundef %334)
          to label %335 unwind label %326

335:                                              ; preds = %329
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %339 = getelementptr inbounds i8, ptr %338, i64 56
  %340 = load i32, ptr %339, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %337, i32 noundef %340)
          to label %341 unwind label %326

341:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %34) #7
  %342 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %344) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %35, ptr noundef nonnull align 16 dereferenceable(32) %345, i64 32, i1 false), !tbaa.struct !27
  %346 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %347)
  %349 = sext i32 %348 to i64
  %350 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %349) #7
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %34, ptr noundef nonnull byval(%struct.pt) align 16 %35, ptr noundef nonnull byval(%struct.pt) align 16 %350)
          to label %351 unwind label %361

351:                                              ; preds = %341
  %352 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %352, ptr noundef nonnull align 16 dereferenceable(48) %34, i64 48, i1 false), !tbaa.struct !29
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %34) #7
  %353 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %354 = load i32, ptr %353, align 4, !tbaa !9
  %355 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %356 = getelementptr inbounds i8, ptr %355, i64 56
  store i32 %354, ptr %356, align 8, !tbaa !28
  %357 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %358 = getelementptr inbounds i8, ptr %357, i64 52
  store i32 %354, ptr %358, align 4, !tbaa !26
  %359 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %360 = getelementptr inbounds i8, ptr %359, i64 56
  store i32 -1, ptr %360, align 8, !tbaa !28
  br label %540

361:                                              ; preds = %341
  %362 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %34) #7
  br label %541

363:                                              ; preds = %328
  br i1 %309, label %398, label %364

364:                                              ; preds = %363
  %365 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %368 = getelementptr inbounds i8, ptr %367, i64 56
  %369 = load i32, ptr %368, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %366, i32 noundef %369)
          to label %370 unwind label %326

370:                                              ; preds = %364
  %371 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %372 = load i32, ptr %371, align 4, !tbaa !9
  %373 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %374 = getelementptr inbounds i8, ptr %373, i64 56
  %375 = load i32, ptr %374, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %372, i32 noundef %375)
          to label %376 unwind label %326

376:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %36) #7
  %377 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %378 = load i32, ptr %377, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %379) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %37, ptr noundef nonnull align 16 dereferenceable(32) %380, i64 32, i1 false), !tbaa.struct !27
  %381 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %382)
  %384 = sext i32 %383 to i64
  %385 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %384) #7
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %36, ptr noundef nonnull byval(%struct.pt) align 16 %37, ptr noundef nonnull byval(%struct.pt) align 16 %385)
          to label %386 unwind label %396

386:                                              ; preds = %376
  %387 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %387, ptr noundef nonnull align 16 dereferenceable(48) %36, i64 48, i1 false), !tbaa.struct !29
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %36) #7
  %388 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %391 = getelementptr inbounds i8, ptr %390, i64 56
  store i32 %389, ptr %391, align 8, !tbaa !28
  %392 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %393 = getelementptr inbounds i8, ptr %392, i64 52
  store i32 %389, ptr %393, align 4, !tbaa !26
  %394 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %395 = getelementptr inbounds i8, ptr %394, i64 56
  store i32 -1, ptr %395, align 8, !tbaa !28
  br label %540

396:                                              ; preds = %376
  %397 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %36) #7
  br label %541

398:                                              ; preds = %363
  %399 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %400 = getelementptr inbounds i8, ptr %399, i64 52
  %401 = load i32, ptr %400, align 4, !tbaa !26
  %402 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %401)
  %403 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %404 = load i32, ptr %403, align 4, !tbaa !9
  %405 = icmp eq i32 %402, %404
  br i1 %405, label %406, label %442

406:                                              ; preds = %398
  %407 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %410 = getelementptr inbounds i8, ptr %409, i64 56
  %411 = load i32, ptr %410, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %408, i32 noundef %411)
          to label %412 unwind label %326

412:                                              ; preds = %406
  %413 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %414 = load i32, ptr %413, align 4, !tbaa !9
  %415 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %416 = getelementptr inbounds i8, ptr %415, i64 56
  %417 = load i32, ptr %416, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %414, i32 noundef %417)
          to label %418 unwind label %326

418:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %38) #7
  %419 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %420 = load i32, ptr %419, align 4, !tbaa !9
  %421 = sext i32 %420 to i64
  %422 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %421) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %39, ptr noundef nonnull align 16 dereferenceable(32) %422, i64 32, i1 false), !tbaa.struct !27
  %423 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %424 = load i32, ptr %423, align 4, !tbaa !9
  %425 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %424)
  %426 = sext i32 %425 to i64
  %427 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %426) #7
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %38, ptr noundef nonnull byval(%struct.pt) align 16 %39, ptr noundef nonnull byval(%struct.pt) align 16 %427)
          to label %428 unwind label %440

428:                                              ; preds = %418
  %429 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %429, ptr noundef nonnull align 16 dereferenceable(48) %38, i64 48, i1 false), !tbaa.struct !29
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %38) #7
  %430 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %433 = getelementptr inbounds i8, ptr %432, i64 52
  store i32 %431, ptr %433, align 4, !tbaa !26
  %434 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %437 = getelementptr inbounds i8, ptr %436, i64 56
  store i32 %435, ptr %437, align 8, !tbaa !28
  %438 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %439 = getelementptr inbounds i8, ptr %438, i64 56
  store i32 -1, ptr %439, align 8, !tbaa !28
  br label %540

440:                                              ; preds = %418
  %441 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %38) #7
  br label %541

442:                                              ; preds = %398
  %443 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %444 = getelementptr inbounds i8, ptr %443, i64 52
  %445 = load i32, ptr %444, align 4, !tbaa !26
  %446 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %445)
  %447 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = icmp eq i32 %446, %448
  %450 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %451 = load i32, ptr %450, align 4, !tbaa !9
  %452 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %453 = getelementptr inbounds i8, ptr %452, i64 56
  %454 = load i32, ptr %453, align 8, !tbaa !28
  br i1 %449, label %455, label %484

455:                                              ; preds = %442
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %451, i32 noundef %454)
          to label %456 unwind label %326

456:                                              ; preds = %455
  %457 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %460 = getelementptr inbounds i8, ptr %459, i64 56
  %461 = load i32, ptr %460, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %458, i32 noundef %461)
          to label %462 unwind label %326

462:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %40) #7
  %463 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %464 = load i32, ptr %463, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %465) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %41, ptr noundef nonnull align 16 dereferenceable(32) %466, i64 32, i1 false), !tbaa.struct !27
  %467 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %468)
  %470 = sext i32 %469 to i64
  %471 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %470) #7
  invoke void @_ZN4LineC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %40, ptr noundef nonnull byval(%struct.pt) align 16 %41, ptr noundef nonnull byval(%struct.pt) align 16 %471)
          to label %472 unwind label %482

472:                                              ; preds = %462
  %473 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %473, ptr noundef nonnull align 16 dereferenceable(48) %40, i64 48, i1 false), !tbaa.struct !29
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %40) #7
  %474 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %475 = load i32, ptr %474, align 4, !tbaa !9
  %476 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %477 = getelementptr inbounds i8, ptr %476, i64 56
  store i32 %475, ptr %477, align 8, !tbaa !28
  %478 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %479 = getelementptr inbounds i8, ptr %478, i64 52
  store i32 %475, ptr %479, align 4, !tbaa !26
  %480 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %481 = getelementptr inbounds i8, ptr %480, i64 56
  store i32 -1, ptr %481, align 8, !tbaa !28
  br label %540

482:                                              ; preds = %462
  %483 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %40) #7
  br label %541

484:                                              ; preds = %442
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %451, i32 noundef %454)
          to label %485 unwind label %326

485:                                              ; preds = %484
  %486 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %487 = load i32, ptr %486, align 4, !tbaa !9
  %488 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %489 = getelementptr inbounds i8, ptr %488, i64 56
  %490 = load i32, ptr %489, align 8, !tbaa !28
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %487, i32 noundef %490)
          to label %491 unwind label %326

491:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %42) #7
  %492 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %493 = load i32, ptr %492, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %494) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %43, ptr noundef nonnull align 16 dereferenceable(32) %495, i64 32, i1 false), !tbaa.struct !27
  %496 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %497 = load i32, ptr %496, align 4, !tbaa !9
  %498 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %497)
  %499 = sext i32 %498 to i64
  %500 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %499) #7
  invoke void @_ZN5ChainC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %42, ptr noundef nonnull byval(%struct.pt) align 16 %43, ptr noundef nonnull byval(%struct.pt) align 16 %500)
          to label %501 unwind label %530

501:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %44) #7
  %502 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %503 = getelementptr inbounds i8, ptr %502, i64 48
  %504 = load i32, ptr %503, align 16, !tbaa !21
  %505 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %137) #7
  %506 = load i32, ptr %505, align 4, !tbaa !9
  call void @_ZN9ChainInfoC2Eii(ptr noundef nonnull align 4 dereferenceable(12) %44, i32 noundef %504, i32 noundef %506)
  %507 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE7emplaceIJS0_S1_EEESt17_Rb_tree_iteratorIS6_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %17, ptr noundef nonnull align 16 dereferenceable(48) %42, ptr noundef nonnull align 4 dereferenceable(12) %44)
          to label %508 unwind label %532

508:                                              ; preds = %501
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %42) #7
  %509 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %510 = getelementptr inbounds i8, ptr %509, i64 56
  store i32 -1, ptr %510, align 8, !tbaa !28
  %511 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %512 = getelementptr inbounds i8, ptr %511, i64 56
  store i32 -1, ptr %512, align 8, !tbaa !28
  %513 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %514 = getelementptr inbounds i8, ptr %513, i64 48
  store i32 %.1203273, ptr %514, align 16, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %45) #7
  %515 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %516 = load i32, ptr %515, align 4, !tbaa !9
  %517 = sext i32 %516 to i64
  %518 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %517) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %46, ptr noundef nonnull align 16 dereferenceable(32) %518, i64 32, i1 false), !tbaa.struct !27
  %519 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %520 = load i32, ptr %519, align 4, !tbaa !9
  %521 = call noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %520)
  %522 = sext i32 %521 to i64
  %523 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %522) #7
  invoke void @_ZN5ChainC2E2ptS0_(ptr noundef nonnull align 16 dereferenceable(48) %45, ptr noundef nonnull byval(%struct.pt) align 16 %46, ptr noundef nonnull byval(%struct.pt) align 16 %523)
          to label %524 unwind label %535

524:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %47) #7
  %525 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %149) #7
  %526 = load i32, ptr %525, align 4, !tbaa !9
  call void @_ZN9ChainInfoC2Eii(ptr noundef nonnull align 4 dereferenceable(12) %47, i32 noundef %.1203273, i32 noundef %526)
  %527 = invoke ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE7emplaceIJS0_S1_EEESt17_Rb_tree_iteratorIS6_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 16 dereferenceable(48) %45, ptr noundef nonnull align 4 dereferenceable(12) %47)
          to label %528 unwind label %537

528:                                              ; preds = %524
  %529 = add nsw i32 %.1203273, 1
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %45) #7
  br label %540

530:                                              ; preds = %491
  %531 = landingpad { ptr, i32 }
          cleanup
  br label %534

532:                                              ; preds = %501
  %533 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %44) #7
  br label %534

534:                                              ; preds = %532, %530
  %.pn227 = phi { ptr, i32 } [ %533, %532 ], [ %531, %530 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %42) #7
  br label %541

535:                                              ; preds = %508
  %536 = landingpad { ptr, i32 }
          cleanup
  br label %539

537:                                              ; preds = %524
  %538 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %47) #7
  br label %539

539:                                              ; preds = %537, %535
  %.pn229 = phi { ptr, i32 } [ %538, %537 ], [ %536, %535 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %45) #7
  br label %541

540:                                              ; preds = %386, %472, %528, %428, %351, %324, %278, %223
  %.3205 = phi i32 [ %224, %223 ], [ %.1203273, %278 ], [ %.1203273, %351 ], [ %.1203273, %386 ], [ %.1203273, %428 ], [ %.1203273, %472 ], [ %529, %528 ], [ %.1203273, %324 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  %.not.not = icmp slt i32 %.0213.in.lcssa, %124
  br i1 %.not.not, label %.preheader250, label %.loopexit251, !llvm.loop !30

541:                                              ; preds = %326, %361, %396, %440, %482, %534, %539, %294, %238, %233, %227
  %.pn237.pn = phi { ptr, i32 } [ %.pn237, %238 ], [ %.pn235, %233 ], [ %.pn233, %294 ], [ %228, %227 ], [ %327, %326 ], [ %362, %361 ], [ %397, %396 ], [ %441, %440 ], [ %483, %482 ], [ %.pn229, %539 ], [ %.pn227, %534 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %542

542:                                              ; preds = %541, %225
  %.pn237.pn.pn = phi { ptr, i32 } [ %.pn237.pn, %541 ], [ %226, %225 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %661

._crit_edge279:                                   ; preds = %563, %._crit_edge, %.preheader
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %52) #7
  %543 = load i32, ptr %12, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #7
  store i8 0, ptr %53, align 1, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #7
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKbRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %52, i64 noundef %544, ptr noundef nonnull align 1 dereferenceable(1) %53, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %574 unwind label %580

.lr.ph278:                                        ; preds = %.preheader, %563
  %indvars.iv296 = phi i64 [ %indvars.iv.next297, %563 ], [ 0, %.preheader ]
  %545 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv296) #7
  call void @_ZN5Angle8setPivotE2pt(ptr noundef nonnull byval(%struct.pt) align 16 %545)
  %546 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv296) #7
  %547 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %546) #7
  %548 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv296) #7
  %549 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %548) #7
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZ20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_7EvT_SF_T0_"(ptr %547, ptr %549, ptr nonnull %1)
          to label %550 unwind label %567

550:                                              ; preds = %.lr.ph278
  %551 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv296) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #7
  %552 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv296) #7
  %553 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %552) #7
  %554 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv296) #7
  %555 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %554) #7
  %556 = invoke ptr @"_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZ20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_8ET_SF_SF_T0_"(ptr %553, ptr %555, ptr nonnull %1)
          to label %557 unwind label %569

557:                                              ; preds = %550
  store ptr %556, ptr %49, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIiiESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #7
  %558 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv296) #7
  %559 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %558) #7
  store ptr %559, ptr %51, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIiiESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  %560 = load ptr, ptr %48, align 8
  %561 = load ptr, ptr %50, align 8
  %562 = invoke ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EES8_(ptr noundef nonnull align 8 dereferenceable(24) %551, ptr %560, ptr %561)
          to label %563 unwind label %571

563:                                              ; preds = %557
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #7
  %indvars.iv.next297 = add nuw nsw i64 %indvars.iv296, 1
  %564 = load i32, ptr %4, align 4, !tbaa !9
  %565 = sext i32 %564 to i64
  %566 = icmp slt i64 %indvars.iv.next297, %565
  br i1 %566, label %.lr.ph278, label %._crit_edge279, !llvm.loop !33

567:                                              ; preds = %.lr.ph278
  %568 = landingpad { ptr, i32 }
          cleanup
  br label %661

569:                                              ; preds = %550
  %570 = landingpad { ptr, i32 }
          cleanup
  br label %573

571:                                              ; preds = %557
  %572 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  br label %573

573:                                              ; preds = %571, %569
  %.pn219 = phi { ptr, i32 } [ %572, %571 ], [ %570, %569 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #7
  br label %661

574:                                              ; preds = %._crit_edge279
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #7
  %575 = load i32, ptr %4, align 4, !tbaa !9
  %576 = icmp sgt i32 %575, 0
  br i1 %576, label %.lr.ph285, label %._crit_edge286

.lr.ph285:                                        ; preds = %574
  %577 = getelementptr inbounds i8, ptr %57, i64 8
  %578 = getelementptr inbounds i8, ptr %60, i64 8
  %579 = getelementptr inbounds i8, ptr %61, i64 8
  br label %582

._crit_edge286:                                   ; preds = %._crit_edge282, %574
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %52) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %52) #7
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #7
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  ret void

580:                                              ; preds = %._crit_edge279
  %581 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #7
  br label %660

582:                                              ; preds = %.lr.ph285, %._crit_edge282
  %indvars.iv299 = phi i64 [ 0, %.lr.ph285 ], [ %indvars.iv.next300, %._crit_edge282 ]
  %583 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv299) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #7
  %584 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %583) #7
  store ptr %584, ptr %55, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #7
  %585 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %583) #7
  store ptr %585, ptr %56, align 8
  %586 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIiiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  br i1 %586, label %.lr.ph281.preheader, label %._crit_edge282

.lr.ph281.preheader:                              ; preds = %582
  %587 = trunc nuw nsw i64 %indvars.iv299 to i32
  br label %.lr.ph281

._crit_edge282:                                   ; preds = %656, %582
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #7
  %indvars.iv.next300 = add nuw nsw i64 %indvars.iv299, 1
  %588 = load i32, ptr %4, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = icmp slt i64 %indvars.iv.next300, %589
  br i1 %590, label %582, label %._crit_edge286, !llvm.loop !34

.lr.ph281:                                        ; preds = %.lr.ph281.preheader, %656
  %591 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #7
  %592 = getelementptr inbounds i8, ptr %591, i64 4
  %593 = load i32, ptr %592, align 4, !tbaa !35
  %594 = sext i32 %593 to i64
  %595 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %52, i64 noundef %594)
          to label %596 unwind label %642

596:                                              ; preds = %.lr.ph281
  %597 = extractvalue { ptr, i64 } %595, 0
  store ptr %597, ptr %57, align 8
  %598 = extractvalue { ptr, i64 } %595, 1
  store i64 %598, ptr %577, align 8
  %599 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %57) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #7
  br i1 %599, label %656, label %600

600:                                              ; preds = %596
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %58) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %59) #7
  store i32 %587, ptr %59, align 4, !tbaa !9
  %601 = load i32, ptr %591, align 4, !tbaa !37
  %602 = load i32, ptr %592, align 4, !tbaa !35
  br label %603

603:                                              ; preds = %636, %600
  %.0207 = phi i32 [ %601, %600 ], [ %638, %636 ]
  %.0206 = phi i32 [ %602, %600 ], [ %641, %636 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #7
  %604 = sext i32 %.0206 to i64
  %605 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %52, i64 noundef %604)
          to label %606 unwind label %644

606:                                              ; preds = %603
  %607 = extractvalue { ptr, i64 } %605, 0
  store ptr %607, ptr %60, align 8
  %608 = extractvalue { ptr, i64 } %605, 1
  store i64 %608, ptr %578, align 8
  %609 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %60) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #7
  br i1 %609, label %653, label %610

610:                                              ; preds = %606
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %58, ptr noundef nonnull align 4 dereferenceable(4) %59)
          to label %611 unwind label %.loopexit

611:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #7
  %612 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %52, i64 noundef %604)
          to label %613 unwind label %646

613:                                              ; preds = %611
  %614 = extractvalue { ptr, i64 } %612, 0
  store ptr %614, ptr %61, align 8
  %615 = extractvalue { ptr, i64 } %612, 1
  store i64 %615, ptr %579, align 8
  %616 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %61, i1 noundef zeroext true) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #7
  %617 = sext i32 %.0207 to i64
  %618 = call noundef nonnull align 16 dereferenceable(32) ptr @_ZNKSt6vectorI2ptSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %617) #7
  call void @_ZN5Angle8setPivotE2pt(ptr noundef nonnull byval(%struct.pt) align 16 %618)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #7
  %619 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %617) #7
  %620 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %619) #7
  %621 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %617) #7
  %622 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %621) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %64) #7
  store i32 -1, ptr %64, align 4, !tbaa !9
  %623 = invoke i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %59, ptr noundef nonnull align 4 dereferenceable(4) %64)
          to label %624 unwind label %648

624:                                              ; preds = %613
  store i64 %623, ptr %63, align 8
  %625 = invoke ptr @"_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEES3_Z20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_7ET_SF_SF_RKT0_T1_"(ptr %620, ptr %622, ptr noundef nonnull align 4 dereferenceable(8) %63, ptr nonnull %1)
          to label %626 unwind label %648

626:                                              ; preds = %624
  store ptr %625, ptr %62, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #7
  %627 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %617) #7
  %628 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %627) #7
  store ptr %628, ptr %65, align 8
  %629 = call noundef zeroext i1 @_ZN9__gnu_cxxeqIPSt4pairIiiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %65) #7
  br i1 %629, label %630, label %633

630:                                              ; preds = %626
  %631 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %617) #7
  %632 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %631) #7
  br label %634

633:                                              ; preds = %626
  %.sroa.0.0.copyload = load ptr, ptr %62, align 8, !tbaa !5
  br label %634

634:                                              ; preds = %633, %630
  %.sroa.0.0 = phi ptr [ %632, %630 ], [ %.sroa.0.0.copyload, %633 ]
  %635 = invoke ptr @_ZSt4prevIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEET_S9_NSt15iterator_traitsIS9_E15difference_typeE(ptr %.sroa.0.0, i64 noundef 1)
          to label %636 unwind label %650

636:                                              ; preds = %634
  store ptr %635, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #7
  store i32 %.0207, ptr %59, align 4, !tbaa !9
  %637 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS2_SaIS2_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  %638 = load i32, ptr %637, align 4, !tbaa !37
  %639 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS2_SaIS2_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  %640 = getelementptr inbounds i8, ptr %639, i64 4
  %641 = load i32, ptr %640, align 4, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #7
  br label %603, !llvm.loop !38

642:                                              ; preds = %.lr.ph281
  %643 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #7
  br label %659

644:                                              ; preds = %603
  %645 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #7
  br label %655

.loopexit:                                        ; preds = %610
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %655

.loopexit.split-lp:                               ; preds = %653
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %655

646:                                              ; preds = %611
  %647 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #7
  br label %655

648:                                              ; preds = %624, %613
  %649 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #7
  br label %652

650:                                              ; preds = %634
  %651 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #7
  br label %652

652:                                              ; preds = %650, %648
  %.pn = phi { ptr, i32 } [ %651, %650 ], [ %649, %648 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #7
  br label %655

653:                                              ; preds = %606
  invoke void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_0clERKS_IiSaIiEE"(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(24) %58)
          to label %654 unwind label %.loopexit.split-lp

654:                                              ; preds = %653
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #7
  br label %656

655:                                              ; preds = %.loopexit, %.loopexit.split-lp, %652, %646, %644
  %.pn.pn = phi { ptr, i32 } [ %.pn, %652 ], [ %647, %646 ], [ %645, %644 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #7
  br label %659

656:                                              ; preds = %654, %596
  %657 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  %658 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIiiESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  br i1 %658, label %.lr.ph281, label %._crit_edge282

659:                                              ; preds = %655, %642
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %655 ], [ %643, %642 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %52) #7
  br label %660

660:                                              ; preds = %659, %580
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %659 ], [ %581, %580 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %52) #7
  br label %661

661:                                              ; preds = %660, %573, %567, %138, %542
  %.pn237.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn237.pn.pn, %542 ], [ %139, %138 ], [ %.pn.pn.pn.pn, %660 ], [ %.pn219, %573 ], [ %568, %567 ]
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #7
  call void @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #7
  br label %662

662:                                              ; preds = %661, %101
  %.pn243 = phi { ptr, i32 } [ %102, %101 ], [ %.pn237.pn.pn.pn.pn, %661 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @_ZNSt6vectorIS_ISt4pairIiiESaIS1_EESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  br label %663

663:                                              ; preds = %662, %89
  %.pn243.pn = phi { ptr, i32 } [ %.pn243, %662 ], [ %90, %89 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  br label %664

664:                                              ; preds = %663, %87
  %.pn243.pn.pn = phi { ptr, i32 } [ %.pn243.pn, %663 ], [ %88, %87 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  br label %665

665:                                              ; preds = %664, %85
  %.pn243.pn.pn.pn = phi { ptr, i32 } [ %.pn243.pn.pn, %664 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  call void @_ZNSt6vectorISt5arrayI2ptLm3EESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  resume { ptr, i32 } %.pn243.pn.pn.pn
}

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZ20polygonTriangulationRKS3_I2ptSaIS7_EEE3$_1EvT_SD_T0_"(ptr, ptr, ptr) local_unnamed_addr #4

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_4clEi"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #5 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZ20polygonTriangulationRKS3_I2ptSaIS7_EEE3$_6EvT_SD_T0_"(ptr, ptr, ptr) local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_2clEii"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE11upper_boundERS5_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 16 dereferenceable(48)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ChainC2Ee(ptr noundef nonnull align 16 dereferenceable(48), x86_fp80 noundef) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE11lower_boundERS5_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 16 dereferenceable(48)) local_unnamed_addr #3 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_3clEi"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt8multimapI5Chain9ChainInfoSt4lessIS0_ESaISt4pairIKS0_S1_EEE7emplaceIJS0_S1_EEESt17_Rb_tree_iteratorIS6_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9ChainInfoC2Eii(ptr noundef nonnull align 4 dereferenceable(12), i32 noundef, i32 noundef) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4nextISt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEET_S7_NSt15iterator_traitsIS7_E15difference_typeE(ptr, i64 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4prevISt17_Rb_tree_iteratorISt4pairIK5Chain9ChainInfoEEET_S7_NSt15iterator_traitsIS7_E15difference_typeE(ptr, i64 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_5clEii"(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZ20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_7EvT_SF_T0_"(ptr, ptr, ptr) local_unnamed_addr #4

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZ20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_8ET_SF_SF_T0_"(ptr, ptr, ptr) local_unnamed_addr #4

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEES3_Z20polygonTriangulationRKS5_I2ptSaIS9_EEE3$_7ET_SF_SF_RKT0_T1_"(ptr, ptr, ptr noundef nonnull align 4 dereferenceable(8), ptr) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4prevIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEET_S9_NSt15iterator_traitsIS9_E15difference_typeE(ptr, i64 noundef) local_unnamed_addr #4

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ20polygonTriangulationRKSt6vectorI2ptSaIS0_EEENK3$_0clERKS_IiSaIiEE"(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15, !16, i64 0}
!15 = !{!"_ZTS2pt", !16, i64 0, !16, i64 16}
!16 = !{!"long double", !7, i64 0}
!17 = distinct !{!17, !12}
!18 = !{!16, !16, i64 0}
!19 = distinct !{!19, !12}
!20 = !{!15, !16, i64 16}
!21 = !{!22, !10, i64 48}
!22 = !{!"_ZTSSt4pairIK5Chain9ChainInfoE", !23, i64 0, !25, i64 48}
!23 = !{!"_ZTS5Chain", !24, i64 0}
!24 = !{!"_ZTS4Line", !15, i64 0, !16, i64 32}
!25 = !{!"_ZTS9ChainInfo", !10, i64 0, !10, i64 4, !10, i64 8}
!26 = !{!22, !10, i64 52}
!27 = !{i64 0, i64 16, !18, i64 16, i64 16, !18}
!28 = !{!22, !10, i64 56}
!29 = !{i64 0, i64 16, !18, i64 16, i64 16, !18, i64 32, i64 16, !18}
!30 = distinct !{!30, !12}
!31 = !{!32, !32, i64 0}
!32 = !{!"bool", !7, i64 0}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = !{!36, !10, i64 4}
!36 = !{!"_ZTSSt4pairIiiE", !10, i64 0, !10, i64 4}
!37 = !{!36, !10, i64 0}
!38 = distinct !{!38, !12}


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