; LLVM IR from ImperialCollegeLondon/pnflow :: src/pnm/pnflow/polygon/polygon.ll (ZNK8Triangle25snapOffPrsDrainFromCornerERbi)

; 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"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.18" = type { i8 }
%"class.std::allocator.7" = type { i8 }
%class.Polygon = type { %class.VoidElem, i32, %"class.std::vector.16", ptr, ptr, i16, i8, double }
%class.VoidElem = type { %class.ElemModel, double, double, double, double }
%class.ElemModel = type { ptr, double, double, ptr, ptr, double, ptr, i8, i8, i8, i8, i32, double, double, double, double, double, double, double, %"struct.std::pair", %"struct.std::pair" }
%"struct.std::pair" = type { double, double }
%class.LayerApex = type { %class.Apex, i32, ptr, double, ptr, double }
%class.Apex = type { ptr, i8, double, double, ptr, i32, double, double, double, double, i8, i8, i8, i8, %"struct.std::pair.0" }
%"struct.std::pair.0" = type { i32, double }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZN9ElemModel2PIE = external constant double, align 8
@_ZN9ElemModel12MAX_NEWT_ITRE = external constant i32, align 4
@_ZN9ElemModel7EPSILONE = external constant double, align 8
@__FUNCTION__._ZNK8Triangle25snapOffPrsDrainFromCornerERbi = external hidden unnamed_addr constant [26 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [16 x i8], align 1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef, ptr noundef, i32 noundef) #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #0

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #3

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

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

; Function Attrs: nounwind
declare double @cos(double noundef) #5

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

; Function Attrs: nounwind
declare double @tan(double noundef) #5

; Function Attrs: nounwind
declare double @sin(double noundef) #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984)) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK4Apex11receedingPcEv(ptr noundef nonnull align 8 dereferenceable(104)) #6 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #4

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_ZNK8Triangle25snapOffPrsDrainFromCornerERbi(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef nonnull align 1 dereferenceable(1) %1, i32 noundef %2) #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca double, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca %"class.std::vector.16", align 8
  %14 = alloca %"class.std::allocator.18", align 1
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca double, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca i1, align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca i1, align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca i1, align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca i1, align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca i1, align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i1, align 1
  %36 = alloca %"class.std::allocator.7", align 1
  %37 = alloca i1, align 1
  %38 = alloca i1, align 1
  %39 = alloca i1, align 1
  %40 = alloca i1, align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca i1, align 1
  %43 = alloca %"class.std::allocator.7", align 1
  %44 = alloca i1, align 1
  %45 = alloca i1, align 1
  %46 = alloca i1, align 1
  %47 = alloca i1, align 1
  %48 = alloca i1, align 1
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca i1, align 1
  %51 = alloca %"class.std::allocator.7", align 1
  %52 = alloca i1, align 1
  %53 = alloca i1, align 1
  %54 = alloca i1, align 1
  %55 = alloca i1, align 1
  %56 = alloca i1, align 1
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca i1, align 1
  %59 = alloca i32, align 4
  %60 = alloca i1, align 1
  %61 = alloca i1, align 1
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca i1, align 1
  %65 = alloca %"class.std::allocator.7", align 1
  %66 = alloca i1, align 1
  %67 = alloca i1, align 1
  %68 = alloca i1, align 1
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca i1, align 1
  %71 = alloca %"class.std::allocator.7", align 1
  %72 = alloca i1, align 1
  %73 = alloca i1, align 1
  %74 = alloca i1, align 1
  %75 = alloca i1, align 1
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  %80 = load ptr, ptr %5, align 8
  %81 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 4
  %82 = load ptr, ptr %81, align 8, !tbaa !11
  %83 = load i32, ptr %7, align 4, !tbaa !9
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds %class.LayerApex, ptr %82, i64 %84
  %86 = call noundef zeroext i1 @_ZNK4Apex6existsEv(ptr noundef nonnull align 8 dereferenceable(104) %85)
  br i1 %86, label %88, label %87

87:                                               ; preds = %3
  store double 0.000000e+00, ptr %4, align 8
  br label %656

88:                                               ; preds = %3
  %89 = getelementptr inbounds %class.VoidElem, ptr %80, i32 0, i32 4
  %90 = load double, ptr %89, align 8, !tbaa !23
  %91 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !24
  %92 = fdiv double %91, 2.000000e+00
  %93 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %94 = load i32, ptr %7, align 4, !tbaa !9
  %95 = sext i32 %94 to i64
  %96 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %95) #8
  %97 = load double, ptr %96, align 8, !tbaa !24
  %98 = fadd double %92, %97
  %99 = fcmp ole double %90, %98
  br i1 %99, label %100, label %108

100:                                              ; preds = %88
  %101 = load ptr, ptr %6, align 8, !tbaa !5
  store i8 1, ptr %101, align 1, !tbaa !25
  %102 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 4
  %103 = load ptr, ptr %102, align 8, !tbaa !11
  %104 = load i32, ptr %7, align 4, !tbaa !9
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds %class.LayerApex, ptr %103, i64 %105
  %107 = call noundef double @_ZNK4Apex11receedingPcEv(ptr noundef nonnull align 8 dereferenceable(104) %106)
  store double %107, ptr %4, align 8
  br label %656

108:                                              ; preds = %88
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %109 = getelementptr inbounds %class.ElemModel, ptr %80, i32 0, i32 4
  %110 = load ptr, ptr %109, align 8, !tbaa !26
  %111 = call noundef double @_ZNK10CommonData17minPcLastImbCycleEv(ptr noundef nonnull align 8 dereferenceable(1972) %110)
  %112 = getelementptr inbounds %class.ElemModel, ptr %80, i32 0, i32 3
  %113 = load ptr, ptr %112, align 8, !tbaa !27
  %114 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %113)
  %115 = fsub double %111, %114
  store double %115, ptr %8, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %116 = getelementptr inbounds %class.ElemModel, ptr %80, i32 0, i32 4
  %117 = load ptr, ptr %116, align 8, !tbaa !26
  %118 = call noundef double @_ZNK10CommonData16minEverCappPressEv(ptr noundef nonnull align 8 dereferenceable(1972) %117)
  %119 = getelementptr inbounds %class.ElemModel, ptr %80, i32 0, i32 3
  %120 = load ptr, ptr %119, align 8, !tbaa !27
  %121 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %120)
  %122 = fsub double %118, %121
  store double %122, ptr %9, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %123 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 4
  %124 = load ptr, ptr %123, align 8, !tbaa !11
  %125 = getelementptr inbounds %class.LayerApex, ptr %124, i64 0
  %126 = load double, ptr %8, align 8, !tbaa !24
  %127 = call noundef zeroext i1 @_ZNK9LayerApex23stablePinnedInLastCycleEd(ptr noundef nonnull align 8 dereferenceable(144) %125, double noundef %126)
  br i1 %127, label %128, label %130

128:                                              ; preds = %108
  %129 = load double, ptr %8, align 8, !tbaa !24
  br label %132

130:                                              ; preds = %108
  %131 = load double, ptr %9, align 8, !tbaa !24
  br label %132

132:                                              ; preds = %130, %128
  %133 = phi double [ %129, %128 ], [ %131, %130 ]
  store double %133, ptr %10, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %134 = getelementptr inbounds %class.ElemModel, ptr %80, i32 0, i32 4
  %135 = load ptr, ptr %134, align 8, !tbaa !26
  %136 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %135)
  store double %136, ptr %11, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  store double 1.000000e+00, ptr %12, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #8
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 3, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %137 unwind label %171

137:                                              ; preds = %132
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  %138 = load double, ptr %10, align 8, !tbaa !24
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 2) #8
  store double %138, ptr %139, align 8, !tbaa !24
  %140 = getelementptr inbounds %class.ElemModel, ptr %80, i32 0, i32 4
  %141 = load ptr, ptr %140, align 8, !tbaa !26
  %142 = invoke noundef double @_ZNK10CommonData14GuessCappPressEv(ptr noundef nonnull align 8 dereferenceable(1972) %141)
          to label %143 unwind label %175

143:                                              ; preds = %137
  %144 = getelementptr inbounds %class.ElemModel, ptr %80, i32 0, i32 3
  %145 = load ptr, ptr %144, align 8, !tbaa !27
  %146 = invoke noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %145)
          to label %147 unwind label %175

147:                                              ; preds = %143
  %148 = fsub double %142, %146
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 1) #8
  store double %148, ptr %149, align 8, !tbaa !24
  %150 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 4
  %151 = load ptr, ptr %150, align 8, !tbaa !11
  %152 = load i32, ptr %7, align 4, !tbaa !9
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds %class.LayerApex, ptr %151, i64 %153
  %155 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9LayerApex13trappedOLayerEv(ptr noundef nonnull align 8 dereferenceable(144) %154)
          to label %156 unwind label %175

156:                                              ; preds = %147
  %157 = getelementptr inbounds %"struct.std::pair.0", ptr %155, i32 0, i32 0
  %158 = load i32, ptr %157, align 8, !tbaa !28
  %159 = icmp sgt i32 %158, -1
  br i1 %159, label %160, label %179

160:                                              ; preds = %156
  %161 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 4
  %162 = load ptr, ptr %161, align 8, !tbaa !11
  %163 = load i32, ptr %7, align 4, !tbaa !9
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds %class.LayerApex, ptr %162, i64 %164
  %166 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9LayerApex13trappedOLayerEv(ptr noundef nonnull align 8 dereferenceable(144) %165)
          to label %167 unwind label %175

167:                                              ; preds = %160
  %168 = getelementptr inbounds %"struct.std::pair.0", ptr %166, i32 0, i32 1
  %169 = load double, ptr %168, align 8, !tbaa !30
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 0) #8
  store double %169, ptr %170, align 8, !tbaa !24
  br label %187

171:                                              ; preds = %132
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %15, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %16, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  br label %655

175:                                              ; preds = %179, %160, %147, %143, %137
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %15, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %16, align 4
  br label %654

179:                                              ; preds = %156
  %180 = getelementptr inbounds %class.ElemModel, ptr %80, i32 0, i32 3
  %181 = load ptr, ptr %180, align 8, !tbaa !27
  %182 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK4Elem11trappingOilEv(ptr noundef nonnull align 8 dereferenceable(408) %181)
          to label %183 unwind label %175

183:                                              ; preds = %179
  %184 = getelementptr inbounds %"struct.std::pair.0", ptr %182, i32 0, i32 1
  %185 = load double, ptr %184, align 8, !tbaa !30
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 0) #8
  store double %185, ptr %186, align 8, !tbaa !24
  br label %187

187:                                              ; preds = %183, %167
  br label %188

188:                                              ; preds = %651, %187
  %189 = call noundef zeroext i1 @_ZNKSt6vectorIdSaIdEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %190 = xor i1 %189, true
  br i1 %190, label %191, label %652

191:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %192 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %193 = load double, ptr %192, align 8, !tbaa !24
  store double %193, ptr %17, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %642, %191
  %195 = load i32, ptr %18, align 4, !tbaa !9
  %196 = load i32, ptr @_ZN9ElemModel12MAX_NEWT_ITRE, align 4, !tbaa !9
  %197 = icmp slt i32 %195, %196
  br i1 %197, label %199, label %198

198:                                              ; preds = %194
  store i32 4, ptr %19, align 4
  br label %646

199:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %200 = getelementptr inbounds %class.VoidElem, ptr %80, i32 0, i32 4
  %201 = load double, ptr %200, align 8, !tbaa !23
  store double %201, ptr %20, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %202 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %203 = load i32, ptr %7, align 4, !tbaa !9
  %204 = sext i32 %203 to i64
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %202, i64 noundef %204) #8
  %206 = load double, ptr %205, align 8, !tbaa !24
  store double %206, ptr %22, align 8, !tbaa !24
  %207 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 4
  %208 = load ptr, ptr %207, align 8, !tbaa !11
  %209 = load i32, ptr %7, align 4, !tbaa !9
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds %class.LayerApex, ptr %208, i64 %210
  %212 = load double, ptr %17, align 8, !tbaa !24
  %213 = load double, ptr %11, align 8, !tbaa !24
  invoke void @_ZNK9LayerApex13getCAApexDistERdS0_RKdddb(ptr noundef nonnull align 8 dereferenceable(144) %211, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %22, double noundef %212, double noundef %213, i1 noundef zeroext false)
          to label %214 unwind label %462

214:                                              ; preds = %199
  %215 = load double, ptr %21, align 8, !tbaa !24
  %216 = fcmp ogt double %215, 0.000000e+00
  store i1 false, ptr %25, align 1
  store i1 false, ptr %27, align 1
  store i1 false, ptr %29, align 1
  store i1 false, ptr %31, align 1
  store i1 false, ptr %33, align 1
  store i1 false, ptr %35, align 1
  store i1 false, ptr %37, align 1
  store i1 false, ptr %38, align 1
  store i1 false, ptr %39, align 1
  store i1 false, ptr %40, align 1
  store i1 false, ptr %42, align 1
  store i1 false, ptr %44, align 1
  store i1 false, ptr %45, align 1
  store i1 false, ptr %46, align 1
  store i1 false, ptr %47, align 1
  store i1 false, ptr %48, align 1
  store i1 false, ptr %50, align 1
  store i1 false, ptr %52, align 1
  store i1 false, ptr %53, align 1
  store i1 false, ptr %54, align 1
  store i1 false, ptr %55, align 1
  store i1 false, ptr %56, align 1
  store i1 false, ptr %58, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #8
  store i1 false, ptr %60, align 1
  store i1 false, ptr %61, align 1
  store i1 false, ptr %64, align 1
  store i1 false, ptr %66, align 1
  store i1 false, ptr %67, align 1
  store i1 false, ptr %68, align 1
  store i1 false, ptr %70, align 1
  store i1 false, ptr %72, align 1
  store i1 false, ptr %73, align 1
  store i1 false, ptr %74, align 1
  store i1 false, ptr %75, align 1
  br i1 %216, label %233, label %217

217:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  store i1 true, ptr %25, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #8
  store i1 true, ptr %27, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  store i1 true, ptr %29, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #8
  store i1 true, ptr %31, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  store i1 true, ptr %33, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  store i1 true, ptr %35, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #8
  store i1 true, ptr %37, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  store i1 true, ptr %38, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %218 unwind label %466

218:                                              ; preds = %217
  store i1 true, ptr %39, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str.1)
          to label %219 unwind label %470

219:                                              ; preds = %218
  store i1 true, ptr %40, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #8
  store i1 true, ptr %42, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #8
  store i1 true, ptr %44, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  store i1 true, ptr %45, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @__FUNCTION__._ZNK8Triangle25snapOffPrsDrainFromCornerERbi, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %220 unwind label %474

220:                                              ; preds = %219
  store i1 true, ptr %46, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %221 unwind label %478

221:                                              ; preds = %220
  store i1 true, ptr %47, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.2)
          to label %222 unwind label %482

222:                                              ; preds = %221
  store i1 true, ptr %48, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #8
  store i1 true, ptr %50, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #8
  store i1 true, ptr %52, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  store i1 true, ptr %53, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %223 unwind label %486

223:                                              ; preds = %222
  store i1 true, ptr %54, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %224 unwind label %490

224:                                              ; preds = %223
  store i1 true, ptr %55, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.4)
          to label %225 unwind label %494

225:                                              ; preds = %224
  store i1 true, ptr %56, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #8
  store i1 true, ptr %58, align 1
  store i32 773, ptr %59, align 4, !tbaa !9
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 4 dereferenceable(4) %59)
          to label %226 unwind label %498

226:                                              ; preds = %225
  store i1 true, ptr %60, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %227 unwind label %502

227:                                              ; preds = %226
  store i1 true, ptr %61, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #8
  store i1 true, ptr %64, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #8
  store i1 true, ptr %66, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #8
  store i1 true, ptr %67, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %228 unwind label %506

228:                                              ; preds = %227
  store i1 true, ptr %68, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #8
  store i1 true, ptr %70, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #8
  store i1 true, ptr %72, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  store i1 true, ptr %73, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %229 unwind label %510

229:                                              ; preds = %228
  store i1 true, ptr %74, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(32) %69)
          to label %230 unwind label %514

230:                                              ; preds = %229
  store i1 true, ptr %75, align 1
  %231 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %23, ptr noundef %62, i32 noundef 0)
          to label %232 unwind label %518

232:                                              ; preds = %230
  br label %233

233:                                              ; preds = %232, %214
  %234 = phi i1 [ true, %214 ], [ %231, %232 ]
  %235 = xor i1 %234, true
  %236 = load i1, ptr %75, align 1
  br i1 %236, label %237, label %238

237:                                              ; preds = %233
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  br label %238

238:                                              ; preds = %237, %233
  %239 = load i1, ptr %74, align 1
  br i1 %239, label %240, label %241

240:                                              ; preds = %238
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %241

241:                                              ; preds = %240, %238
  %242 = load i1, ptr %73, align 1
  br i1 %242, label %243, label %244

243:                                              ; preds = %241
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  br label %244

244:                                              ; preds = %243, %241
  %245 = load i1, ptr %72, align 1
  br i1 %245, label %246, label %247

246:                                              ; preds = %244
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  br label %247

247:                                              ; preds = %246, %244
  %248 = load i1, ptr %70, align 1
  br i1 %248, label %249, label %250

249:                                              ; preds = %247
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #8
  br label %250

250:                                              ; preds = %249, %247
  %251 = load i1, ptr %68, align 1
  br i1 %251, label %252, label %253

252:                                              ; preds = %250
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %253

253:                                              ; preds = %252, %250
  %254 = load i1, ptr %67, align 1
  br i1 %254, label %255, label %256

255:                                              ; preds = %253
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #8
  br label %256

256:                                              ; preds = %255, %253
  %257 = load i1, ptr %66, align 1
  br i1 %257, label %258, label %259

258:                                              ; preds = %256
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #8
  br label %259

259:                                              ; preds = %258, %256
  %260 = load i1, ptr %64, align 1
  br i1 %260, label %261, label %262

261:                                              ; preds = %259
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  br label %262

262:                                              ; preds = %261, %259
  %263 = load i1, ptr %61, align 1
  br i1 %263, label %264, label %265

264:                                              ; preds = %262
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %265

265:                                              ; preds = %264, %262
  %266 = load i1, ptr %60, align 1
  br i1 %266, label %267, label %268

267:                                              ; preds = %265
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  br label %268

268:                                              ; preds = %267, %265
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #8
  %269 = load i1, ptr %58, align 1
  br i1 %269, label %270, label %271

270:                                              ; preds = %268
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #8
  br label %271

271:                                              ; preds = %270, %268
  %272 = load i1, ptr %56, align 1
  br i1 %272, label %273, label %274

273:                                              ; preds = %271
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %274

274:                                              ; preds = %273, %271
  %275 = load i1, ptr %55, align 1
  br i1 %275, label %276, label %277

276:                                              ; preds = %274
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %277

277:                                              ; preds = %276, %274
  %278 = load i1, ptr %54, align 1
  br i1 %278, label %279, label %280

279:                                              ; preds = %277
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  br label %280

280:                                              ; preds = %279, %277
  %281 = load i1, ptr %53, align 1
  br i1 %281, label %282, label %283

282:                                              ; preds = %280
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  br label %283

283:                                              ; preds = %282, %280
  %284 = load i1, ptr %52, align 1
  br i1 %284, label %285, label %286

285:                                              ; preds = %283
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  br label %286

286:                                              ; preds = %285, %283
  %287 = load i1, ptr %50, align 1
  br i1 %287, label %288, label %289

288:                                              ; preds = %286
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #8
  br label %289

289:                                              ; preds = %288, %286
  %290 = load i1, ptr %48, align 1
  br i1 %290, label %291, label %292

291:                                              ; preds = %289
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %292

292:                                              ; preds = %291, %289
  %293 = load i1, ptr %47, align 1
  br i1 %293, label %294, label %295

294:                                              ; preds = %292
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %295

295:                                              ; preds = %294, %292
  %296 = load i1, ptr %46, align 1
  br i1 %296, label %297, label %298

297:                                              ; preds = %295
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %298

298:                                              ; preds = %297, %295
  %299 = load i1, ptr %45, align 1
  br i1 %299, label %300, label %301

300:                                              ; preds = %298
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  br label %301

301:                                              ; preds = %300, %298
  %302 = load i1, ptr %44, align 1
  br i1 %302, label %303, label %304

303:                                              ; preds = %301
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  br label %304

304:                                              ; preds = %303, %301
  %305 = load i1, ptr %42, align 1
  br i1 %305, label %306, label %307

306:                                              ; preds = %304
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  br label %307

307:                                              ; preds = %306, %304
  %308 = load i1, ptr %40, align 1
  br i1 %308, label %309, label %310

309:                                              ; preds = %307
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %310

310:                                              ; preds = %309, %307
  %311 = load i1, ptr %39, align 1
  br i1 %311, label %312, label %313

312:                                              ; preds = %310
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %313

313:                                              ; preds = %312, %310
  %314 = load i1, ptr %38, align 1
  br i1 %314, label %315, label %316

315:                                              ; preds = %313
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  br label %316

316:                                              ; preds = %315, %313
  %317 = load i1, ptr %37, align 1
  br i1 %317, label %318, label %319

318:                                              ; preds = %316
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %319

319:                                              ; preds = %318, %316
  %320 = load i1, ptr %35, align 1
  br i1 %320, label %321, label %322

321:                                              ; preds = %319
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %322

322:                                              ; preds = %321, %319
  %323 = load i1, ptr %33, align 1
  br i1 %323, label %324, label %325

324:                                              ; preds = %322
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %325

325:                                              ; preds = %324, %322
  %326 = load i1, ptr %31, align 1
  br i1 %326, label %327, label %328

327:                                              ; preds = %325
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  br label %328

328:                                              ; preds = %327, %325
  %329 = load i1, ptr %29, align 1
  br i1 %329, label %330, label %331

330:                                              ; preds = %328
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  br label %331

331:                                              ; preds = %330, %328
  %332 = load i1, ptr %27, align 1
  br i1 %332, label %333, label %334

333:                                              ; preds = %331
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  br label %334

334:                                              ; preds = %333, %331
  %335 = load i1, ptr %25, align 1
  br i1 %335, label %336, label %337

336:                                              ; preds = %334
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  br label %337

337:                                              ; preds = %336, %334
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %338 = load double, ptr %21, align 8, !tbaa !24
  %339 = fneg double %338
  %340 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %341 = load i32, ptr %7, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %340, i64 noundef %342) #8
  %344 = load double, ptr %343, align 8, !tbaa !24
  %345 = call double @sin(double noundef %344) #8
  %346 = fmul double %339, %345
  %347 = load double, ptr %11, align 8, !tbaa !24
  %348 = load double, ptr %20, align 8, !tbaa !24
  %349 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %350 = load i32, ptr %7, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %349, i64 noundef %351) #8
  %353 = load double, ptr %352, align 8, !tbaa !24
  %354 = fsub double %348, %353
  %355 = call double @sin(double noundef %354) #8
  %356 = fmul double %347, %355
  %357 = fdiv double %346, %356
  store double %357, ptr %76, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %358 = load double, ptr %17, align 8, !tbaa !24
  %359 = load double, ptr %11, align 8, !tbaa !24
  %360 = getelementptr inbounds %class.ElemModel, ptr %80, i32 0, i32 5
  %361 = load double, ptr %360, align 8, !tbaa !31
  %362 = fdiv double %359, %361
  %363 = getelementptr inbounds %class.VoidElem, ptr %80, i32 0, i32 4
  %364 = load double, ptr %363, align 8, !tbaa !23
  %365 = call double @cos(double noundef %364) #8
  %366 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %366, i64 noundef 0) #8
  %368 = load double, ptr %367, align 8, !tbaa !24
  %369 = call double @tan(double noundef %368) #8
  %370 = fdiv double %365, %369
  %371 = getelementptr inbounds %class.VoidElem, ptr %80, i32 0, i32 4
  %372 = load double, ptr %371, align 8, !tbaa !23
  %373 = call double @sin(double noundef %372) #8
  %374 = fadd double %370, %373
  %375 = load double, ptr %20, align 8, !tbaa !24
  %376 = call double @cos(double noundef %375) #8
  %377 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %378 = load i32, ptr %7, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %377, i64 noundef %379) #8
  %381 = load double, ptr %380, align 8, !tbaa !24
  %382 = call double @tan(double noundef %381) #8
  %383 = fdiv double %376, %382
  %384 = fadd double %374, %383
  %385 = load double, ptr %20, align 8, !tbaa !24
  %386 = call double @sin(double noundef %385) #8
  %387 = fadd double %384, %386
  %388 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %389 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %388, i64 noundef 0) #8
  %390 = load double, ptr %389, align 8, !tbaa !24
  %391 = call double @tan(double noundef %390) #8
  %392 = fdiv double 1.000000e+00, %391
  %393 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %394 = load i32, ptr %7, align 4, !tbaa !9
  %395 = sext i32 %394 to i64
  %396 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %393, i64 noundef %395) #8
  %397 = load double, ptr %396, align 8, !tbaa !24
  %398 = call double @tan(double noundef %397) #8
  %399 = fdiv double 1.000000e+00, %398
  %400 = fadd double %392, %399
  %401 = fdiv double %387, %400
  %402 = fneg double %362
  %403 = call double @llvm.fmuladd.f64(double %402, double %401, double %358)
  store double %403, ptr %77, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %404 = load double, ptr %11, align 8, !tbaa !24
  %405 = getelementptr inbounds %class.ElemModel, ptr %80, i32 0, i32 5
  %406 = load double, ptr %405, align 8, !tbaa !31
  %407 = fdiv double %404, %406
  %408 = load double, ptr %76, align 8, !tbaa !24
  %409 = load double, ptr %20, align 8, !tbaa !24
  %410 = call double @sin(double noundef %409) #8
  %411 = fmul double %408, %410
  %412 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %413 = load i32, ptr %7, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %412, i64 noundef %414) #8
  %416 = load double, ptr %415, align 8, !tbaa !24
  %417 = call double @tan(double noundef %416) #8
  %418 = fdiv double %411, %417
  %419 = load double, ptr %76, align 8, !tbaa !24
  %420 = load double, ptr %20, align 8, !tbaa !24
  %421 = call double @cos(double noundef %420) #8
  %422 = fneg double %419
  %423 = call double @llvm.fmuladd.f64(double %422, double %421, double %418)
  %424 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %425 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %424, i64 noundef 0) #8
  %426 = load double, ptr %425, align 8, !tbaa !24
  %427 = call double @tan(double noundef %426) #8
  %428 = fdiv double 1.000000e+00, %427
  %429 = getelementptr inbounds %class.Polygon, ptr %80, i32 0, i32 2
  %430 = load i32, ptr %7, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %429, i64 noundef %431) #8
  %433 = load double, ptr %432, align 8, !tbaa !24
  %434 = call double @tan(double noundef %433) #8
  %435 = fdiv double 1.000000e+00, %434
  %436 = fadd double %428, %435
  %437 = fdiv double %423, %436
  %438 = fneg double %407
  %439 = call double @llvm.fmuladd.f64(double %438, double %437, double 1.000000e+00)
  store double %439, ptr %78, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %440 = load double, ptr %17, align 8, !tbaa !24
  %441 = load double, ptr %77, align 8, !tbaa !24
  %442 = load double, ptr %78, align 8, !tbaa !24
  %443 = fdiv double %441, %442
  %444 = fsub double %440, %443
  store double %444, ptr %79, align 8, !tbaa !24
  %445 = load double, ptr %79, align 8, !tbaa !24
  %446 = load double, ptr %17, align 8, !tbaa !24
  %447 = fsub double %445, %446
  %448 = load double, ptr %17, align 8, !tbaa !24
  %449 = fdiv double %447, %448
  %450 = call double @llvm.fabs.f64(double %449)
  store double %450, ptr %12, align 8, !tbaa !24
  %451 = load double, ptr %12, align 8, !tbaa !24
  %452 = load double, ptr @_ZN9ElemModel7EPSILONE, align 8, !tbaa !24
  %453 = fcmp olt double %451, %452
  br i1 %453, label %454, label %637

454:                                              ; preds = %337
  %455 = load double, ptr %20, align 8, !tbaa !24
  %456 = getelementptr inbounds %class.VoidElem, ptr %80, i32 0, i32 4
  %457 = load double, ptr %456, align 8, !tbaa !23
  %458 = fcmp oge double %455, %457
  %459 = load ptr, ptr %6, align 8, !tbaa !5
  %460 = zext i1 %458 to i8
  store i8 %460, ptr %459, align 1, !tbaa !25
  %461 = load double, ptr %79, align 8, !tbaa !24
  store double %461, ptr %4, align 8
  store i32 1, ptr %19, align 4
  br label %639

462:                                              ; preds = %199
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %15, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %16, align 4
  br label %645

466:                                              ; preds = %217
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %15, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %16, align 4
  br label %612

470:                                              ; preds = %218
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %15, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %16, align 4
  br label %608

474:                                              ; preds = %219
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %15, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %16, align 4
  br label %595

478:                                              ; preds = %220
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %15, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %16, align 4
  br label %591

482:                                              ; preds = %221
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %15, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %16, align 4
  br label %587

486:                                              ; preds = %222
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %15, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %16, align 4
  br label %574

490:                                              ; preds = %223
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %15, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %16, align 4
  br label %570

494:                                              ; preds = %224
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %15, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %16, align 4
  br label %566

498:                                              ; preds = %225
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %15, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %16, align 4
  br label %559

502:                                              ; preds = %226
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %15, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %16, align 4
  br label %555

506:                                              ; preds = %227
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %15, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %16, align 4
  br label %542

510:                                              ; preds = %228
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %15, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %16, align 4
  br label %529

514:                                              ; preds = %229
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %15, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %16, align 4
  br label %525

518:                                              ; preds = %230
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %15, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %16, align 4
  %522 = load i1, ptr %75, align 1
  br i1 %522, label %523, label %524

523:                                              ; preds = %518
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  br label %524

524:                                              ; preds = %523, %518
  br label %525

525:                                              ; preds = %524, %514
  %526 = load i1, ptr %74, align 1
  br i1 %526, label %527, label %528

527:                                              ; preds = %525
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %528

528:                                              ; preds = %527, %525
  br label %529

529:                                              ; preds = %528, %510
  %530 = load i1, ptr %73, align 1
  br i1 %530, label %531, label %532

531:                                              ; preds = %529
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  br label %532

532:                                              ; preds = %531, %529
  %533 = load i1, ptr %72, align 1
  br i1 %533, label %534, label %535

534:                                              ; preds = %532
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  br label %535

535:                                              ; preds = %534, %532
  %536 = load i1, ptr %70, align 1
  br i1 %536, label %537, label %538

537:                                              ; preds = %535
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #8
  br label %538

538:                                              ; preds = %537, %535
  %539 = load i1, ptr %68, align 1
  br i1 %539, label %540, label %541

540:                                              ; preds = %538
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %541

541:                                              ; preds = %540, %538
  br label %542

542:                                              ; preds = %541, %506
  %543 = load i1, ptr %67, align 1
  br i1 %543, label %544, label %545

544:                                              ; preds = %542
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #8
  br label %545

545:                                              ; preds = %544, %542
  %546 = load i1, ptr %66, align 1
  br i1 %546, label %547, label %548

547:                                              ; preds = %545
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #8
  br label %548

548:                                              ; preds = %547, %545
  %549 = load i1, ptr %64, align 1
  br i1 %549, label %550, label %551

550:                                              ; preds = %548
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  br label %551

551:                                              ; preds = %550, %548
  %552 = load i1, ptr %61, align 1
  br i1 %552, label %553, label %554

553:                                              ; preds = %551
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %554

554:                                              ; preds = %553, %551
  br label %555

555:                                              ; preds = %554, %502
  %556 = load i1, ptr %60, align 1
  br i1 %556, label %557, label %558

557:                                              ; preds = %555
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  br label %558

558:                                              ; preds = %557, %555
  br label %559

559:                                              ; preds = %558, %498
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #8
  %560 = load i1, ptr %58, align 1
  br i1 %560, label %561, label %562

561:                                              ; preds = %559
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #8
  br label %562

562:                                              ; preds = %561, %559
  %563 = load i1, ptr %56, align 1
  br i1 %563, label %564, label %565

564:                                              ; preds = %562
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %565

565:                                              ; preds = %564, %562
  br label %566

566:                                              ; preds = %565, %494
  %567 = load i1, ptr %55, align 1
  br i1 %567, label %568, label %569

568:                                              ; preds = %566
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %569

569:                                              ; preds = %568, %566
  br label %570

570:                                              ; preds = %569, %490
  %571 = load i1, ptr %54, align 1
  br i1 %571, label %572, label %573

572:                                              ; preds = %570
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  br label %573

573:                                              ; preds = %572, %570
  br label %574

574:                                              ; preds = %573, %486
  %575 = load i1, ptr %53, align 1
  br i1 %575, label %576, label %577

576:                                              ; preds = %574
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  br label %577

577:                                              ; preds = %576, %574
  %578 = load i1, ptr %52, align 1
  br i1 %578, label %579, label %580

579:                                              ; preds = %577
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  br label %580

580:                                              ; preds = %579, %577
  %581 = load i1, ptr %50, align 1
  br i1 %581, label %582, label %583

582:                                              ; preds = %580
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #8
  br label %583

583:                                              ; preds = %582, %580
  %584 = load i1, ptr %48, align 1
  br i1 %584, label %585, label %586

585:                                              ; preds = %583
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %586

586:                                              ; preds = %585, %583
  br label %587

587:                                              ; preds = %586, %482
  %588 = load i1, ptr %47, align 1
  br i1 %588, label %589, label %590

589:                                              ; preds = %587
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %590

590:                                              ; preds = %589, %587
  br label %591

591:                                              ; preds = %590, %478
  %592 = load i1, ptr %46, align 1
  br i1 %592, label %593, label %594

593:                                              ; preds = %591
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %594

594:                                              ; preds = %593, %591
  br label %595

595:                                              ; preds = %594, %474
  %596 = load i1, ptr %45, align 1
  br i1 %596, label %597, label %598

597:                                              ; preds = %595
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  br label %598

598:                                              ; preds = %597, %595
  %599 = load i1, ptr %44, align 1
  br i1 %599, label %600, label %601

600:                                              ; preds = %598
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  br label %601

601:                                              ; preds = %600, %598
  %602 = load i1, ptr %42, align 1
  br i1 %602, label %603, label %604

603:                                              ; preds = %601
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  br label %604

604:                                              ; preds = %603, %601
  %605 = load i1, ptr %40, align 1
  br i1 %605, label %606, label %607

606:                                              ; preds = %604
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %607

607:                                              ; preds = %606, %604
  br label %608

608:                                              ; preds = %607, %470
  %609 = load i1, ptr %39, align 1
  br i1 %609, label %610, label %611

610:                                              ; preds = %608
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %611

611:                                              ; preds = %610, %608
  br label %612

612:                                              ; preds = %611, %466
  %613 = load i1, ptr %38, align 1
  br i1 %613, label %614, label %615

614:                                              ; preds = %612
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  br label %615

615:                                              ; preds = %614, %612
  %616 = load i1, ptr %37, align 1
  br i1 %616, label %617, label %618

617:                                              ; preds = %615
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %618

618:                                              ; preds = %617, %615
  %619 = load i1, ptr %35, align 1
  br i1 %619, label %620, label %621

620:                                              ; preds = %618
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %621

621:                                              ; preds = %620, %618
  %622 = load i1, ptr %33, align 1
  br i1 %622, label %623, label %624

623:                                              ; preds = %621
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %624

624:                                              ; preds = %623, %621
  %625 = load i1, ptr %31, align 1
  br i1 %625, label %626, label %627

626:                                              ; preds = %624
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  br label %627

627:                                              ; preds = %626, %624
  %628 = load i1, ptr %29, align 1
  br i1 %628, label %629, label %630

629:                                              ; preds = %627
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  br label %630

630:                                              ; preds = %629, %627
  %631 = load i1, ptr %27, align 1
  br i1 %631, label %632, label %633

632:                                              ; preds = %630
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  br label %633

633:                                              ; preds = %632, %630
  %634 = load i1, ptr %25, align 1
  br i1 %634, label %635, label %636

635:                                              ; preds = %633
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  br label %636

636:                                              ; preds = %635, %633
  br label %645

637:                                              ; preds = %337
  %638 = load double, ptr %79, align 8, !tbaa !24
  store double %638, ptr %17, align 8, !tbaa !24
  store i32 0, ptr %19, align 4
  br label %639

639:                                              ; preds = %637, %454
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  %640 = load i32, ptr %19, align 4
  switch i32 %640, label %646 [
    i32 0, label %641
  ]

641:                                              ; preds = %639
  br label %642

642:                                              ; preds = %641
  %643 = load i32, ptr %18, align 4, !tbaa !9
  %644 = add nsw i32 %643, 1
  store i32 %644, ptr %18, align 4, !tbaa !9
  br label %194, !llvm.loop !32

645:                                              ; preds = %636, %462
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %654

646:                                              ; preds = %639, %198
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  %647 = load i32, ptr %19, align 4
  switch i32 %647, label %649 [
    i32 4, label %648
  ]

648:                                              ; preds = %646
  store i32 0, ptr %19, align 4
  br label %649

649:                                              ; preds = %648, %646
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  %650 = load i32, ptr %19, align 4
  switch i32 %650, label %653 [
    i32 0, label %651
  ]

651:                                              ; preds = %649
  br label %188, !llvm.loop !34

652:                                              ; preds = %188
  store double 0.000000e+00, ptr %4, align 8
  store i32 1, ptr %19, align 4
  br label %653

653:                                              ; preds = %652, %649
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  br label %656

654:                                              ; preds = %645, %175
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  br label %655

655:                                              ; preds = %654, %171
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  br label %658

656:                                              ; preds = %653, %100, %87
  %657 = load double, ptr %4, align 8
  ret double %657

658:                                              ; preds = %655
  %659 = load ptr, ptr %15, align 8
  %660 = load i32, ptr %16, align 4
  %661 = insertvalue { ptr, i32 } poison, ptr %659, 0
  %662 = insertvalue { ptr, i32 } %661, i32 %660, 1
  resume { ptr, i32 } %662
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK9LayerApex23stablePinnedInLastCycleEd(ptr noundef nonnull align 8 dereferenceable(144), double noundef) #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(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 zeroext i1 @_ZNKSt6vectorIdSaIdEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

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

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

declare void @_ZNK9LayerApex13getCAApexDistERdS0_RKdddb(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, i1 noundef zeroext) #7

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind "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 = { 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 #7 = { "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 #8 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 224}
!12 = !{!"_ZTS7Polygon", !13, i64 0, !10, i64 184, !18, i64 192, !6, i64 216, !6, i64 224, !22, i64 232, !7, i64 234, !15, i64 240}
!13 = !{!"_ZTS8VoidElem", !14, i64 0, !15, i64 152, !15, i64 160, !15, i64 168, !15, i64 176}
!14 = !{!"_ZTS9ElemModel", !15, i64 8, !15, i64 16, !6, i64 24, !6, i64 32, !15, i64 40, !6, i64 48, !16, i64 56, !16, i64 57, !16, i64 58, !16, i64 59, !10, i64 60, !15, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !17, i64 120, !17, i64 136}
!15 = !{!"double", !7, i64 0}
!16 = !{!"bool", !7, i64 0}
!17 = !{!"_ZTSSt4pairIddE", !15, i64 0, !15, i64 8}
!18 = !{!"_ZTSSt6vectorIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"short", !7, i64 0}
!23 = !{!13, !15, i64 176}
!24 = !{!15, !15, i64 0}
!25 = !{!16, !16, i64 0}
!26 = !{!14, !6, i64 32}
!27 = !{!14, !6, i64 24}
!28 = !{!29, !10, i64 0}
!29 = !{!"_ZTSSt4pairIidE", !10, i64 0, !15, i64 8}
!30 = !{!29, !15, i64 8}
!31 = !{!14, !15, i64 40}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !33}


; 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"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.18" = type { i8 }
%"class.std::allocator.7" = type { i8 }
%class.LayerApex = type { %class.Apex, i32, ptr, double, ptr, double }
%class.Apex = type { ptr, i8, double, double, ptr, i32, double, double, double, double, i8, i8, i8, i8, %"struct.std::pair.0" }
%"struct.std::pair.0" = type { i32, double }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZN9ElemModel2PIE = external local_unnamed_addr constant double, align 8
@_ZN9ElemModel12MAX_NEWT_ITRE = external local_unnamed_addr constant i32, align 4
@_ZN9ElemModel7EPSILONE = external local_unnamed_addr constant double, align 8
@__FUNCTION__._ZNK8Triangle25snapOffPrsDrainFromCornerERbi = external hidden unnamed_addr constant [26 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [16 x i8], align 1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #0

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @cos(double noundef) local_unnamed_addr #5

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @tan(double noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sin(double noundef) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK4Apex11receedingPcEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #4

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_ZNK8Triangle25snapOffPrsDrainFromCornerERbi(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr nocapture noundef nonnull writeonly align 1 dereferenceable(1) %1, i32 noundef %2) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::vector.16", align 8
  %5 = alloca %"class.std::allocator.18", align 1
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.7", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.7", align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.7", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.7", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.7", align 1
  %28 = getelementptr inbounds i8, ptr %0, i64 224
  %29 = load ptr, ptr %28, align 8, !tbaa !5
  %30 = sext i32 %2 to i64
  %31 = getelementptr inbounds %class.LayerApex, ptr %29, i64 %30
  %32 = tail call noundef zeroext i1 @_ZNK4Apex6existsEv(ptr noundef nonnull align 8 dereferenceable(104) %31)
  br i1 %32, label %33, label %248

33:                                               ; preds = %3
  %34 = getelementptr inbounds i8, ptr %0, i64 176
  %35 = load double, ptr %34, align 8, !tbaa !21
  %36 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !22
  %37 = fmul double %36, 5.000000e-01
  %38 = getelementptr inbounds i8, ptr %0, i64 192
  %39 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %30) #9
  %40 = load double, ptr %39, align 8, !tbaa !22
  %41 = fadd double %37, %40
  %42 = fcmp ugt double %35, %41
  br i1 %42, label %47, label %43

43:                                               ; preds = %33
  store i8 1, ptr %1, align 1, !tbaa !23
  %44 = load ptr, ptr %28, align 8, !tbaa !5
  %45 = getelementptr inbounds %class.LayerApex, ptr %44, i64 %30
  %46 = tail call noundef double @_ZNK4Apex11receedingPcEv(ptr noundef nonnull align 8 dereferenceable(104) %45)
  br label %248

47:                                               ; preds = %33
  %48 = getelementptr inbounds i8, ptr %0, i64 32
  %49 = load ptr, ptr %48, align 8, !tbaa !24
  %50 = tail call noundef double @_ZNK10CommonData17minPcLastImbCycleEv(ptr noundef nonnull align 8 dereferenceable(1972) %49)
  %51 = getelementptr inbounds i8, ptr %0, i64 24
  %52 = load ptr, ptr %51, align 8, !tbaa !25
  %53 = tail call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %52)
  %54 = fsub double %50, %53
  %55 = load ptr, ptr %48, align 8, !tbaa !24
  %56 = tail call noundef double @_ZNK10CommonData16minEverCappPressEv(ptr noundef nonnull align 8 dereferenceable(1972) %55)
  %57 = load ptr, ptr %51, align 8, !tbaa !25
  %58 = tail call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %57)
  %59 = load ptr, ptr %28, align 8, !tbaa !5
  %60 = tail call noundef zeroext i1 @_ZNK9LayerApex23stablePinnedInLastCycleEd(ptr noundef nonnull align 8 dereferenceable(144) %59, double noundef %54)
  %61 = load ptr, ptr %48, align 8, !tbaa !24
  %62 = tail call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %61)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #9
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 3, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %63 unwind label %82

63:                                               ; preds = %47
  %64 = fsub double %56, %58
  %65 = select i1 %60, double %54, double %64
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 2) #9
  store double %65, ptr %66, align 8, !tbaa !22
  %67 = load ptr, ptr %48, align 8, !tbaa !24
  %68 = call noundef double @_ZNK10CommonData14GuessCappPressEv(ptr noundef nonnull align 8 dereferenceable(1972) %67)
  %69 = load ptr, ptr %51, align 8, !tbaa !25
  %70 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %69)
  %71 = fsub double %68, %70
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 1) #9
  store double %71, ptr %72, align 8, !tbaa !22
  %73 = load ptr, ptr %28, align 8, !tbaa !5
  %74 = getelementptr inbounds %class.LayerApex, ptr %73, i64 %30
  %75 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9LayerApex13trappedOLayerEv(ptr noundef nonnull align 8 dereferenceable(144) %74)
  %76 = load i32, ptr %75, align 8, !tbaa !26
  %77 = icmp sgt i32 %76, -1
  br i1 %77, label %78, label %84

78:                                               ; preds = %63
  %79 = load ptr, ptr %28, align 8, !tbaa !5
  %80 = getelementptr inbounds %class.LayerApex, ptr %79, i64 %30
  %81 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9LayerApex13trappedOLayerEv(ptr noundef nonnull align 8 dereferenceable(144) %80)
  br label %87

82:                                               ; preds = %47
  %83 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  br label %247

84:                                               ; preds = %63
  %85 = load ptr, ptr %51, align 8, !tbaa !25
  %86 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK4Elem11trappingOilEv(ptr noundef nonnull align 8 dereferenceable(408) %85)
  br label %87

87:                                               ; preds = %84, %78
  %.sink = phi ptr [ %86, %84 ], [ %81, %78 ]
  %88 = getelementptr inbounds i8, ptr %.sink, i64 8
  %89 = load double, ptr %88, align 8, !tbaa !28
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0) #9
  store double %89, ptr %90, align 8, !tbaa !22
  %91 = call noundef zeroext i1 @_ZNKSt6vectorIdSaIdEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  br i1 %91, label %.loopexit230, label %.lr.ph234

.lr.ph234:                                        ; preds = %87
  %92 = load i32, ptr @_ZN9ElemModel12MAX_NEWT_ITRE, align 4
  %.fr = freeze i32 %92
  %.not231 = icmp sgt i32 %.fr, 0
  %93 = getelementptr inbounds i8, ptr %0, i64 40
  %94 = fneg double %62
  %95 = load double, ptr @_ZN9ElemModel7EPSILONE, align 8
  br i1 %.not231, label %.lr.ph.us.preheader, label %.loopexit

.lr.ph.us.preheader:                              ; preds = %.lr.ph234
  %96 = insertelement <2 x double> poison, double %94, i64 0
  %97 = shufflevector <2 x double> %96, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph.us

.lr.ph.us:                                        ; preds = %.lr.ph.us.preheader, %..loopexit_crit_edge.us
  %98 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %99 = load double, ptr %98, align 8, !tbaa !22
  call void @_ZNSt6vectorIdSaIdEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  br label %100

100:                                              ; preds = %.lr.ph.us, %209
  %.0171233.us = phi i32 [ 0, %.lr.ph.us ], [ %210, %209 ]
  %.0172232.us = phi double [ %99, %.lr.ph.us ], [ %204, %209 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  %101 = load double, ptr %34, align 8, !tbaa !21
  store double %101, ptr %6, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  %102 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %30) #9
  %103 = load double, ptr %102, align 8, !tbaa !22
  store double %103, ptr %8, align 8, !tbaa !22
  %104 = load ptr, ptr %28, align 8, !tbaa !5
  %105 = getelementptr inbounds %class.LayerApex, ptr %104, i64 %30
  invoke void @_ZNK9LayerApex13getCAApexDistERdS0_RKdddb(ptr noundef nonnull align 8 dereferenceable(144) %105, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %8, double noundef %.0172232.us, double noundef %62, i1 noundef zeroext false)
          to label %106 unwind label %.split.us

106:                                              ; preds = %100
  %107 = load double, ptr %7, align 8, !tbaa !22
  %108 = fcmp ule double %107, 0.000000e+00
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #9
  br i1 %108, label %110, label %109

109:                                              ; preds = %106
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  br label %.critedge222.us

110:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %111 unwind label %.split236.us

111:                                              ; preds = %110
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.1)
          to label %112 unwind label %.split239.us

112:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @__FUNCTION__._ZNK8Triangle25snapOffPrsDrainFromCornerERbi, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %113 unwind label %.split242.us

113:                                              ; preds = %112
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %114 unwind label %.split245.us

114:                                              ; preds = %113
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.2)
          to label %115 unwind label %.split248.us

115:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %116 unwind label %.split251.us

116:                                              ; preds = %115
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %117 unwind label %.split254.us

117:                                              ; preds = %116
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.4)
          to label %118 unwind label %.split257.us

118:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #9
  store i32 773, ptr %22, align 4, !tbaa !29
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %119 unwind label %.split260.us

119:                                              ; preds = %118
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %120 unwind label %.split263.us

120:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %121 unwind label %.split266.us

121:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %122 unwind label %.split269.us

122:                                              ; preds = %121
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %123 unwind label %.split272.us

123:                                              ; preds = %122
  %124 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %9, ptr noundef nonnull %23, i32 noundef 0)
          to label %.critedge201.us unwind label %.split275.us

.critedge201.us:                                  ; preds = %123
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  %.pre = load double, ptr %7, align 8, !tbaa !22
  br label %.critedge222.us

.critedge222.us:                                  ; preds = %.critedge201.us, %109
  %125 = phi double [ %.pre, %.critedge201.us ], [ %107, %109 ]
  %126 = fneg double %125
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %30) #9
  %128 = load double, ptr %127, align 8, !tbaa !22
  %129 = call double @sin(double noundef %128) #9
  %130 = fmul double %129, %126
  %131 = load double, ptr %6, align 8, !tbaa !22
  %132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %30) #9
  %133 = load double, ptr %132, align 8, !tbaa !22
  %134 = fsub double %131, %133
  %135 = call double @sin(double noundef %134) #9
  %136 = fmul double %62, %135
  %137 = fdiv double %130, %136
  %138 = load <2 x double>, ptr %93, align 8
  %139 = load double, ptr %34, align 8, !tbaa !21
  %140 = call double @cos(double noundef %139) #9
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 0) #9
  %142 = load double, ptr %141, align 8, !tbaa !22
  %143 = call double @tan(double noundef %142) #9
  %144 = load double, ptr %34, align 8, !tbaa !21
  %145 = call double @sin(double noundef %144) #9
  %146 = load double, ptr %6, align 8, !tbaa !22
  %147 = call double @cos(double noundef %146) #9
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %30) #9
  %149 = load double, ptr %148, align 8, !tbaa !22
  %150 = call double @tan(double noundef %149) #9
  %151 = insertelement <2 x double> poison, double %140, i64 0
  %152 = insertelement <2 x double> %151, double %147, i64 1
  %153 = insertelement <2 x double> poison, double %143, i64 0
  %154 = insertelement <2 x double> %153, double %150, i64 1
  %155 = fdiv <2 x double> %152, %154
  %156 = extractelement <2 x double> %155, i64 0
  %157 = fadd double %156, %145
  %158 = extractelement <2 x double> %155, i64 1
  %159 = fadd double %157, %158
  %160 = load double, ptr %6, align 8, !tbaa !22
  %161 = call double @sin(double noundef %160) #9
  %162 = fadd double %159, %161
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 0) #9
  %164 = load double, ptr %163, align 8, !tbaa !22
  %165 = call double @tan(double noundef %164) #9
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %30) #9
  %167 = load double, ptr %166, align 8, !tbaa !22
  %168 = call double @tan(double noundef %167) #9
  %169 = load double, ptr %93, align 8, !tbaa !30
  %170 = load double, ptr %6, align 8, !tbaa !22
  %171 = call double @sin(double noundef %170) #9
  %172 = fmul double %137, %171
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %30) #9
  %174 = load double, ptr %173, align 8, !tbaa !22
  %175 = call double @tan(double noundef %174) #9
  %176 = fdiv double %172, %175
  %177 = load double, ptr %6, align 8, !tbaa !22
  %178 = call double @cos(double noundef %177) #9
  %179 = fneg double %137
  %180 = call double @llvm.fmuladd.f64(double %179, double %178, double %176)
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 0) #9
  %182 = load double, ptr %181, align 8, !tbaa !22
  %183 = call double @tan(double noundef %182) #9
  %184 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %30) #9
  %185 = load double, ptr %184, align 8, !tbaa !22
  %186 = call double @tan(double noundef %185) #9
  %187 = insertelement <2 x double> poison, double %165, i64 0
  %188 = insertelement <2 x double> %187, double %183, i64 1
  %189 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %188
  %190 = insertelement <2 x double> poison, double %168, i64 0
  %191 = insertelement <2 x double> %190, double %186, i64 1
  %192 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %191
  %193 = fadd <2 x double> %189, %192
  %194 = insertelement <2 x double> poison, double %162, i64 0
  %195 = insertelement <2 x double> %194, double %180, i64 1
  %196 = fdiv <2 x double> %195, %193
  %197 = insertelement <2 x double> %138, double %169, i64 1
  %198 = fdiv <2 x double> %97, %197
  %199 = insertelement <2 x double> <double poison, double 1.000000e+00>, double %.0172232.us, i64 0
  %200 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %198, <2 x double> %196, <2 x double> %199)
  %201 = extractelement <2 x double> %200, i64 0
  %202 = extractelement <2 x double> %200, i64 1
  %203 = fdiv double %201, %202
  %204 = fsub double %.0172232.us, %203
  %205 = fsub double %204, %.0172232.us
  %206 = fdiv double %205, %.0172232.us
  %207 = call double @llvm.fabs.f64(double %206)
  %208 = fcmp uge double %207, %95
  br i1 %208, label %209, label %.thread228

209:                                              ; preds = %.critedge222.us
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  %210 = add nuw nsw i32 %.0171233.us, 1
  %exitcond.not = icmp eq i32 %210, %.fr
  br i1 %exitcond.not, label %..loopexit_crit_edge.us, label %100, !llvm.loop !31

..loopexit_crit_edge.us:                          ; preds = %209
  %211 = call noundef zeroext i1 @_ZNKSt6vectorIdSaIdEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  br i1 %211, label %.loopexit230, label %.lr.ph.us

.split.us:                                        ; preds = %100
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %246

.split236.us:                                     ; preds = %110
  %213 = landingpad { ptr, i32 }
          cleanup
  br label %241

.split239.us:                                     ; preds = %111
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %240

.split242.us:                                     ; preds = %112
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %239

.split245.us:                                     ; preds = %113
  %216 = landingpad { ptr, i32 }
          cleanup
  br label %238

.split248.us:                                     ; preds = %114
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %237

.split251.us:                                     ; preds = %115
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %236

.split254.us:                                     ; preds = %116
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %235

.split257.us:                                     ; preds = %117
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %234

.split260.us:                                     ; preds = %118
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %233

.split263.us:                                     ; preds = %119
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %232

.split266.us:                                     ; preds = %120
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %231

.split269.us:                                     ; preds = %121
  %224 = landingpad { ptr, i32 }
          cleanup
  br label %230

.split272.us:                                     ; preds = %122
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %229

.split275.us:                                     ; preds = %123
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %229

.loopexit:                                        ; preds = %.lr.ph234, %.loopexit
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @_ZNSt6vectorIdSaIdEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %228 = call noundef zeroext i1 @_ZNKSt6vectorIdSaIdEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  br i1 %228, label %.loopexit230, label %.loopexit

229:                                              ; preds = %.split272.us, %.split275.us
  %.pn = phi { ptr, i32 } [ %226, %.split275.us ], [ %225, %.split272.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  br label %230

230:                                              ; preds = %.split269.us, %229
  %.pn.pn = phi { ptr, i32 } [ %.pn, %229 ], [ %224, %.split269.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %231

231:                                              ; preds = %.split266.us, %230
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %230 ], [ %223, %.split266.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  br label %232

232:                                              ; preds = %.split263.us, %231
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %231 ], [ %222, %.split263.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %233

233:                                              ; preds = %232, %.split260.us
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %232 ], [ %221, %.split260.us ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %234

234:                                              ; preds = %.split257.us, %233
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %233 ], [ %220, %.split257.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  br label %235

235:                                              ; preds = %.split254.us, %234
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %234 ], [ %219, %.split254.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %236

236:                                              ; preds = %.split251.us, %235
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %235 ], [ %218, %.split251.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %237

237:                                              ; preds = %.split248.us, %236
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn, %236 ], [ %217, %.split248.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %238

238:                                              ; preds = %.split245.us, %237
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %237 ], [ %216, %.split245.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  br label %239

239:                                              ; preds = %.split242.us, %238
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %238 ], [ %215, %.split242.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  br label %240

240:                                              ; preds = %.split239.us, %239
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %239 ], [ %214, %.split239.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  br label %241

241:                                              ; preds = %.split236.us, %240
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %240 ], [ %213, %.split236.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %246

.thread228:                                       ; preds = %.critedge222.us
  %242 = load double, ptr %6, align 8, !tbaa !22
  %243 = load double, ptr %34, align 8, !tbaa !21
  %244 = fcmp oge double %242, %243
  %245 = zext i1 %244 to i8
  store i8 %245, ptr %1, align 1, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  br label %.loopexit230

246:                                              ; preds = %241, %.split.us
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %241 ], [ %212, %.split.us ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  br label %247

.loopexit230:                                     ; preds = %.loopexit, %..loopexit_crit_edge.us, %87, %.thread228
  %.4 = phi double [ %204, %.thread228 ], [ 0.000000e+00, %87 ], [ 0.000000e+00, %..loopexit_crit_edge.us ], [ 0.000000e+00, %.loopexit ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #9
  br label %248

247:                                              ; preds = %246, %82
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %246 ], [ %83, %82 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #9
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

248:                                              ; preds = %3, %.loopexit230, %43
  %.5 = phi double [ %46, %43 ], [ %.4, %.loopexit230 ], [ 0.000000e+00, %3 ]
  ret double %.5
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK9LayerApex23stablePinnedInLastCycleEd(ptr noundef nonnull align 8 dereferenceable(144), double noundef) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(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 zeroext i1 @_ZNKSt6vectorIdSaIdEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

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

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

declare void @_ZNK9LayerApex13getCAApexDistERdS0_RKdddb(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, i1 noundef zeroext) local_unnamed_addr #7

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #8

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { mustprogress nofree nounwind willreturn memory(write) "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 = { 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 #7 = { "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 #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { 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, !12, i64 224}
!6 = !{!"_ZTS7Polygon", !7, i64 0, !14, i64 184, !16, i64 192, !12, i64 216, !12, i64 224, !20, i64 232, !10, i64 234, !9, i64 240}
!7 = !{!"_ZTS8VoidElem", !8, i64 0, !9, i64 152, !9, i64 160, !9, i64 168, !9, i64 176}
!8 = !{!"_ZTS9ElemModel", !9, i64 8, !9, i64 16, !12, i64 24, !12, i64 32, !9, i64 40, !12, i64 48, !13, i64 56, !13, i64 57, !13, i64 58, !13, i64 59, !14, i64 60, !9, i64 64, !9, i64 72, !9, i64 80, !9, i64 88, !9, i64 96, !9, i64 104, !9, i64 112, !15, i64 120, !15, i64 136}
!9 = !{!"double", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"any pointer", !10, i64 0}
!13 = !{!"bool", !10, i64 0}
!14 = !{!"int", !10, i64 0}
!15 = !{!"_ZTSSt4pairIddE", !9, i64 0, !9, i64 8}
!16 = !{!"_ZTSSt6vectorIdSaIdEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!20 = !{!"short", !10, i64 0}
!21 = !{!7, !9, i64 176}
!22 = !{!9, !9, i64 0}
!23 = !{!13, !13, i64 0}
!24 = !{!8, !12, i64 32}
!25 = !{!8, !12, i64 24}
!26 = !{!27, !14, i64 0}
!27 = !{!"_ZTSSt4pairIidE", !14, i64 0, !9, i64 8}
!28 = !{!27, !9, i64 8}
!29 = !{!14, !14, i64 0}
!30 = !{!8, !9, i64 40}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass