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

; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"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::allocator.2" = type { i8 }
%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.Polygon = type { %class.VoidElem, i32, %"class.std::vector.16", ptr, ptr, i16, i8, double }
%class.VoidElem = type { %class.ElemModel, double, double, double, double }
%"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.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 [102 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
@__FUNCTION__._ZNK7Polygon23Pc_pistonType_DrainHingEv = external hidden unnamed_addr constant [24 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [30 x i8], align 1
@_ZN9ElemModel7EPSILONE = external constant double, align 8
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.20 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [15 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

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

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

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

; 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: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0

; 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 @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104)) #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: nounwind
declare double @sin(double noundef) #4

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_ZNK7Polygon23Pc_pistonType_DrainHingEv(ptr noundef nonnull align 8 dereferenceable(248) %0) #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca double, align 8
  %3 = alloca ptr, align 8
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca i32, align 4
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca i1, align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca i1, align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca i1, align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca i1, align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca i1, align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca i1, align 1
  %31 = alloca %"class.std::allocator.2", align 1
  %32 = alloca i1, align 1
  %33 = alloca i1, align 1
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i1, align 1
  %37 = alloca i1, align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca i1, align 1
  %40 = alloca %"class.std::allocator.2", align 1
  %41 = alloca i1, align 1
  %42 = alloca i1, align 1
  %43 = alloca i1, align 1
  %44 = alloca i1, align 1
  %45 = alloca i1, align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca i1, align 1
  %48 = alloca %"class.std::allocator.2", align 1
  %49 = alloca i1, align 1
  %50 = alloca i1, align 1
  %51 = alloca i1, align 1
  %52 = alloca i1, align 1
  %53 = alloca i1, align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca i1, align 1
  %56 = alloca i32, align 4
  %57 = alloca i1, align 1
  %58 = alloca i1, align 1
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca i1, align 1
  %62 = alloca %"class.std::allocator.2", align 1
  %63 = alloca i1, align 1
  %64 = alloca i1, align 1
  %65 = alloca i1, align 1
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca i1, align 1
  %68 = alloca %"class.std::allocator.2", align 1
  %69 = alloca i1, align 1
  %70 = alloca i1, align 1
  %71 = alloca i1, align 1
  %72 = alloca i1, align 1
  %73 = alloca double, align 8
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca i1, align 1
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca i1, align 1
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca i1, align 1
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca i1, align 1
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = alloca i1, align 1
  %85 = alloca %"class.std::__cxx11::basic_string", align 8
  %86 = alloca i1, align 1
  %87 = alloca %"class.std::allocator.2", align 1
  %88 = alloca i1, align 1
  %89 = alloca i1, align 1
  %90 = alloca i1, align 1
  %91 = alloca i1, align 1
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca i1, align 1
  %94 = alloca %"class.std::allocator.2", align 1
  %95 = alloca i1, align 1
  %96 = alloca i1, align 1
  %97 = alloca i1, align 1
  %98 = alloca i1, align 1
  %99 = alloca i1, align 1
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca i1, align 1
  %102 = alloca %"class.std::allocator.2", align 1
  %103 = alloca i1, align 1
  %104 = alloca i1, align 1
  %105 = alloca i1, align 1
  %106 = alloca i1, align 1
  %107 = alloca i1, align 1
  %108 = alloca %"class.std::__cxx11::basic_string", align 8
  %109 = alloca i1, align 1
  %110 = alloca i32, align 4
  %111 = alloca i1, align 1
  %112 = alloca i1, align 1
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.std::__cxx11::basic_string", align 8
  %115 = alloca i1, align 1
  %116 = alloca %"class.std::allocator.2", align 1
  %117 = alloca i1, align 1
  %118 = alloca i1, align 1
  %119 = alloca i1, align 1
  %120 = alloca %"class.std::__cxx11::basic_string", align 8
  %121 = alloca i1, align 1
  %122 = alloca %"class.std::allocator.2", align 1
  %123 = alloca i1, align 1
  %124 = alloca i1, align 1
  %125 = alloca i1, align 1
  %126 = alloca i1, align 1
  %127 = alloca double, align 8
  %128 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %129 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #9
  %130 = getelementptr inbounds %class.ElemModel, ptr %129, i32 0, i32 4
  %131 = load ptr, ptr %130, align 8, !tbaa !9
  %132 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %131)
  store double %132, ptr %4, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #9
  %133 = getelementptr inbounds %class.ElemModel, ptr %129, i32 0, i32 4
  %134 = load ptr, ptr %133, align 8, !tbaa !9
  %135 = call noundef double @_ZNK10CommonData17minPcLastImbCycleEv(ptr noundef nonnull align 8 dereferenceable(1972) %134)
  %136 = getelementptr inbounds %class.ElemModel, ptr %129, i32 0, i32 3
  %137 = load ptr, ptr %136, align 8, !tbaa !16
  %138 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %137)
  %139 = fsub double %135, %138
  store double %139, ptr %5, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #9
  %140 = getelementptr inbounds %class.ElemModel, ptr %129, i32 0, i32 4
  %141 = load ptr, ptr %140, align 8, !tbaa !9
  %142 = call noundef double @_ZNK10CommonData16minEverCappPressEv(ptr noundef nonnull align 8 dereferenceable(1972) %141)
  %143 = getelementptr inbounds %class.ElemModel, ptr %129, i32 0, i32 3
  %144 = load ptr, ptr %143, align 8, !tbaa !16
  %145 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %144)
  %146 = fsub double %142, %145
  store double %146, ptr %6, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #9
  %147 = load double, ptr %4, align 8, !tbaa !15
  %148 = getelementptr inbounds %class.Polygon, ptr %129, i32 0, i32 4
  %149 = load ptr, ptr %148, align 8, !tbaa !17
  %150 = getelementptr inbounds %class.LayerApex, ptr %149, i64 0
  %151 = load double, ptr %5, align 8, !tbaa !15
  %152 = call noundef zeroext i1 @_ZNK9LayerApex23stablePinnedInLastCycleEd(ptr noundef nonnull align 8 dereferenceable(144) %150, double noundef %151)
  br i1 %152, label %153, label %155

153:                                              ; preds = %1
  %154 = load double, ptr %5, align 8, !tbaa !15
  br label %157

155:                                              ; preds = %1
  %156 = load double, ptr %6, align 8, !tbaa !15
  br label %157

157:                                              ; preds = %155, %153
  %158 = phi double [ %154, %153 ], [ %156, %155 ]
  %159 = fdiv double %147, %158
  store double %159, ptr %8, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store i32 0, ptr %9, align 4, !tbaa !25
  %160 = getelementptr inbounds %class.Polygon, ptr %129, i32 0, i32 4
  %161 = load ptr, ptr %160, align 8, !tbaa !17
  %162 = getelementptr inbounds %class.LayerApex, ptr %161, i64 0
  %163 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9LayerApex13trappedOLayerEv(ptr noundef nonnull align 8 dereferenceable(144) %162)
  %164 = getelementptr inbounds %"struct.std::pair.0", ptr %163, i32 0, i32 0
  %165 = load i32, ptr %164, align 8, !tbaa !26
  %166 = icmp sgt i32 %165, -1
  br i1 %166, label %167, label %176

167:                                              ; preds = %157
  %168 = load double, ptr %4, align 8, !tbaa !15
  %169 = getelementptr inbounds %class.Polygon, ptr %129, i32 0, i32 4
  %170 = load ptr, ptr %169, align 8, !tbaa !17
  %171 = getelementptr inbounds %class.LayerApex, ptr %170, i64 0
  %172 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9LayerApex13trappedOLayerEv(ptr noundef nonnull align 8 dereferenceable(144) %171)
  %173 = getelementptr inbounds %"struct.std::pair.0", ptr %172, i32 0, i32 1
  %174 = load double, ptr %173, align 8, !tbaa !28
  %175 = fdiv double %168, %174
  store double %175, ptr %8, align 8, !tbaa !15
  br label %176

176:                                              ; preds = %167, %157
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #9
  %177 = getelementptr inbounds %class.Polygon, ptr %129, i32 0, i32 1
  %178 = load i32, ptr %177, align 8, !tbaa !29
  store i32 %178, ptr %10, align 4, !tbaa !25
  br label %179

179:                                              ; preds = %919, %176
  %180 = load i32, ptr %10, align 4, !tbaa !25
  %181 = icmp sge i32 %180, 0
  br i1 %181, label %182, label %922

182:                                              ; preds = %179
  store i32 0, ptr %9, align 4, !tbaa !25
  br label %183

183:                                              ; preds = %916, %182
  %184 = load i32, ptr %9, align 4, !tbaa !25
  %185 = load i32, ptr @_ZN9ElemModel12MAX_NEWT_ITRE, align 4, !tbaa !25
  %186 = icmp slt i32 %184, %185
  br i1 %186, label %187, label %919

187:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  store double 0.000000e+00, ptr %11, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  store double 0.000000e+00, ptr %12, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  store double 0.000000e+00, ptr %13, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #9
  store double 0.000000e+00, ptr %14, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  store i32 0, ptr %15, align 4, !tbaa !25
  br label %188

188:                                              ; preds = %857, %187
  %189 = load i32, ptr %15, align 4, !tbaa !25
  %190 = load i32, ptr %10, align 4, !tbaa !25
  %191 = icmp slt i32 %189, %190
  br i1 %191, label %193, label %192

192:                                              ; preds = %188
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  br label %860

193:                                              ; preds = %188
  %194 = getelementptr inbounds %class.Polygon, ptr %129, i32 0, i32 4
  %195 = load ptr, ptr %194, align 8, !tbaa !17
  %196 = load i32, ptr %15, align 4, !tbaa !25
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds %class.LayerApex, ptr %195, i64 %197
  %199 = load double, ptr %4, align 8, !tbaa !15
  %200 = load double, ptr %8, align 8, !tbaa !15
  %201 = fdiv double %199, %200
  %202 = call noundef zeroext i1 @_ZNK9LayerApex9freeAtPrsEd(ptr noundef nonnull align 8 dereferenceable(144) %198, double noundef %201)
  br i1 %202, label %203, label %856

203:                                              ; preds = %193
  %204 = getelementptr inbounds %class.Polygon, ptr %129, i32 0, i32 4
  %205 = load ptr, ptr %204, align 8, !tbaa !17
  %206 = load i32, ptr %15, align 4, !tbaa !25
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds %class.LayerApex, ptr %205, i64 %207
  %209 = load double, ptr %4, align 8, !tbaa !15
  %210 = load double, ptr %8, align 8, !tbaa !15
  %211 = fdiv double %209, %210
  %212 = call noundef zeroext i1 @_ZNK9LayerApex13forcedSnapOffEd(ptr noundef nonnull align 8 dereferenceable(144) %208, double noundef %211)
  br i1 %212, label %856, label %213

213:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  %214 = getelementptr inbounds %class.VoidElem, ptr %129, i32 0, i32 4
  %215 = load double, ptr %214, align 8, !tbaa !30
  store double %215, ptr %16, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  %216 = getelementptr inbounds %class.Polygon, ptr %129, i32 0, i32 4
  %217 = load ptr, ptr %216, align 8, !tbaa !17
  %218 = load i32, ptr %15, align 4, !tbaa !25
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds %class.LayerApex, ptr %217, i64 %219
  %221 = getelementptr inbounds %class.Polygon, ptr %129, i32 0, i32 2
  %222 = load i32, ptr %15, align 4, !tbaa !25
  %223 = sext i32 %222 to i64
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %221, i64 noundef %223) #9
  %225 = load double, ptr %4, align 8, !tbaa !15
  %226 = load double, ptr %8, align 8, !tbaa !15
  %227 = fdiv double %225, %226
  %228 = load double, ptr %4, align 8, !tbaa !15
  call void @_ZNK9LayerApex21getCAApexDistUntrapedERdS0_RKdddb(ptr noundef nonnull align 8 dereferenceable(144) %220, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %224, double noundef %227, double noundef %228, i1 noundef zeroext true)
  %229 = load double, ptr %17, align 8, !tbaa !15
  %230 = fcmp ogt double %229, 0.000000e+00
  store i1 false, ptr %20, align 1
  store i1 false, ptr %22, align 1
  store i1 false, ptr %24, align 1
  store i1 false, ptr %26, align 1
  store i1 false, ptr %28, align 1
  store i1 false, ptr %30, align 1
  store i1 false, ptr %32, align 1
  store i1 false, ptr %33, align 1
  store i1 false, ptr %36, align 1
  store i1 false, ptr %37, align 1
  store i1 false, ptr %39, align 1
  store i1 false, ptr %41, align 1
  store i1 false, ptr %42, align 1
  store i1 false, ptr %43, align 1
  store i1 false, ptr %44, align 1
  store i1 false, ptr %45, align 1
  store i1 false, ptr %47, align 1
  store i1 false, ptr %49, align 1
  store i1 false, ptr %50, align 1
  store i1 false, ptr %51, align 1
  store i1 false, ptr %52, align 1
  store i1 false, ptr %53, align 1
  store i1 false, ptr %55, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  store i1 false, ptr %57, align 1
  store i1 false, ptr %58, align 1
  store i1 false, ptr %61, align 1
  store i1 false, ptr %63, align 1
  store i1 false, ptr %64, align 1
  store i1 false, ptr %65, align 1
  store i1 false, ptr %67, align 1
  store i1 false, ptr %69, align 1
  store i1 false, ptr %70, align 1
  store i1 false, ptr %71, align 1
  store i1 false, ptr %72, align 1
  br i1 %230, label %247, label %231

231:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #9
  store i1 true, ptr %20, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #9
  store i1 true, ptr %22, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #9
  store i1 true, ptr %24, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #9
  store i1 true, ptr %26, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #9
  store i1 true, ptr %28, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #9
  store i1 true, ptr %30, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #9
  store i1 true, ptr %32, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  store i1 true, ptr %33, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %232 unwind label %513

232:                                              ; preds = %231
  store i1 true, ptr %36, 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 %27, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.1)
          to label %233 unwind label %517

233:                                              ; preds = %232
  store i1 true, ptr %37, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #9
  store i1 true, ptr %39, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #9
  store i1 true, ptr %41, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  store i1 true, ptr %42, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @__FUNCTION__._ZNK7Polygon23Pc_pistonType_DrainHingEv, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %234 unwind label %521

234:                                              ; preds = %233
  store i1 true, ptr %43, 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 %25, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %235 unwind label %525

235:                                              ; preds = %234
  store i1 true, ptr %44, 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 %23, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.2)
          to label %236 unwind label %529

236:                                              ; preds = %235
  store i1 true, ptr %45, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #9
  store i1 true, ptr %47, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #9
  store i1 true, ptr %49, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  store i1 true, ptr %50, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %237 unwind label %533

237:                                              ; preds = %236
  store i1 true, ptr %51, 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 %21, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %238 unwind label %537

238:                                              ; preds = %237
  store i1 true, ptr %52, 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 %19, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.4)
          to label %239 unwind label %541

239:                                              ; preds = %238
  store i1 true, ptr %53, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #9
  store i1 true, ptr %55, align 1
  store i32 305, ptr %56, align 4, !tbaa !25
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 4 dereferenceable(4) %56)
          to label %240 unwind label %545

240:                                              ; preds = %239
  store i1 true, ptr %57, 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 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %241 unwind label %549

241:                                              ; preds = %240
  store i1 true, ptr %58, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #9
  store i1 true, ptr %61, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #9
  store i1 true, ptr %63, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  store i1 true, ptr %64, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %242 unwind label %553

242:                                              ; preds = %241
  store i1 true, ptr %65, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #9
  store i1 true, ptr %67, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #9
  store i1 true, ptr %69, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  store i1 true, ptr %70, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %243 unwind label %557

243:                                              ; preds = %242
  store i1 true, ptr %71, 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 %59, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %244 unwind label %561

244:                                              ; preds = %243
  store i1 true, ptr %72, align 1
  %245 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %18, ptr noundef %59, i32 noundef 0)
          to label %246 unwind label %565

246:                                              ; preds = %244
  br label %247

247:                                              ; preds = %246, %213
  %248 = phi i1 [ true, %213 ], [ %245, %246 ]
  %249 = xor i1 %248, true
  %250 = load i1, ptr %72, align 1
  br i1 %250, label %251, label %252

251:                                              ; preds = %247
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #9
  br label %252

252:                                              ; preds = %251, %247
  %253 = load i1, ptr %71, align 1
  br i1 %253, label %254, label %255

254:                                              ; preds = %252
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #9
  br label %255

255:                                              ; preds = %254, %252
  %256 = load i1, ptr %70, align 1
  br i1 %256, label %257, label %258

257:                                              ; preds = %255
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  br label %258

258:                                              ; preds = %257, %255
  %259 = load i1, ptr %69, align 1
  br i1 %259, label %260, label %261

260:                                              ; preds = %258
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  br label %261

261:                                              ; preds = %260, %258
  %262 = load i1, ptr %67, align 1
  br i1 %262, label %263, label %264

263:                                              ; preds = %261
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #9
  br label %264

264:                                              ; preds = %263, %261
  %265 = load i1, ptr %65, align 1
  br i1 %265, label %266, label %267

266:                                              ; preds = %264
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  br label %267

267:                                              ; preds = %266, %264
  %268 = load i1, ptr %64, align 1
  br i1 %268, label %269, label %270

269:                                              ; preds = %267
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  br label %270

270:                                              ; preds = %269, %267
  %271 = load i1, ptr %63, align 1
  br i1 %271, label %272, label %273

272:                                              ; preds = %270
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  br label %273

273:                                              ; preds = %272, %270
  %274 = load i1, ptr %61, align 1
  br i1 %274, label %275, label %276

275:                                              ; preds = %273
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #9
  br label %276

276:                                              ; preds = %275, %273
  %277 = load i1, ptr %58, align 1
  br i1 %277, label %278, label %279

278:                                              ; preds = %276
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %279

279:                                              ; preds = %278, %276
  %280 = load i1, ptr %57, align 1
  br i1 %280, label %281, label %282

281:                                              ; preds = %279
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  br label %282

282:                                              ; preds = %281, %279
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  %283 = load i1, ptr %55, align 1
  br i1 %283, label %284, label %285

284:                                              ; preds = %282
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #9
  br label %285

285:                                              ; preds = %284, %282
  %286 = load i1, ptr %53, align 1
  br i1 %286, label %287, label %288

287:                                              ; preds = %285
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %288

288:                                              ; preds = %287, %285
  %289 = load i1, ptr %52, align 1
  br i1 %289, label %290, label %291

290:                                              ; preds = %288
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %291

291:                                              ; preds = %290, %288
  %292 = load i1, ptr %51, align 1
  br i1 %292, label %293, label %294

293:                                              ; preds = %291
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  br label %294

294:                                              ; preds = %293, %291
  %295 = load i1, ptr %50, align 1
  br i1 %295, label %296, label %297

296:                                              ; preds = %294
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  br label %297

297:                                              ; preds = %296, %294
  %298 = load i1, ptr %49, align 1
  br i1 %298, label %299, label %300

299:                                              ; preds = %297
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  br label %300

300:                                              ; preds = %299, %297
  %301 = load i1, ptr %47, align 1
  br i1 %301, label %302, label %303

302:                                              ; preds = %300
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #9
  br label %303

303:                                              ; preds = %302, %300
  %304 = load i1, ptr %45, align 1
  br i1 %304, label %305, label %306

305:                                              ; preds = %303
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %306

306:                                              ; preds = %305, %303
  %307 = load i1, ptr %44, align 1
  br i1 %307, label %308, label %309

308:                                              ; preds = %306
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %309

309:                                              ; preds = %308, %306
  %310 = load i1, ptr %43, align 1
  br i1 %310, label %311, label %312

311:                                              ; preds = %309
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %312

312:                                              ; preds = %311, %309
  %313 = load i1, ptr %42, align 1
  br i1 %313, label %314, label %315

314:                                              ; preds = %312
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  br label %315

315:                                              ; preds = %314, %312
  %316 = load i1, ptr %41, align 1
  br i1 %316, label %317, label %318

317:                                              ; preds = %315
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  br label %318

318:                                              ; preds = %317, %315
  %319 = load i1, ptr %39, align 1
  br i1 %319, label %320, label %321

320:                                              ; preds = %318
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  br label %321

321:                                              ; preds = %320, %318
  %322 = load i1, ptr %37, align 1
  br i1 %322, label %323, label %324

323:                                              ; preds = %321
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %324

324:                                              ; preds = %323, %321
  %325 = load i1, ptr %36, align 1
  br i1 %325, label %326, label %327

326:                                              ; preds = %324
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  br label %327

327:                                              ; preds = %326, %324
  %328 = load i1, ptr %33, align 1
  br i1 %328, label %329, label %330

329:                                              ; preds = %327
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  br label %330

330:                                              ; preds = %329, %327
  %331 = load i1, ptr %32, align 1
  br i1 %331, label %332, label %333

332:                                              ; preds = %330
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  br label %333

333:                                              ; preds = %332, %330
  %334 = load i1, ptr %30, align 1
  br i1 %334, label %335, label %336

335:                                              ; preds = %333
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  br label %336

336:                                              ; preds = %335, %333
  %337 = load i1, ptr %28, align 1
  br i1 %337, label %338, label %339

338:                                              ; preds = %336
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #9
  br label %339

339:                                              ; preds = %338, %336
  %340 = load i1, ptr %26, align 1
  br i1 %340, label %341, label %342

341:                                              ; preds = %339
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  br label %342

342:                                              ; preds = %341, %339
  %343 = load i1, ptr %24, align 1
  br i1 %343, label %344, label %345

344:                                              ; preds = %342
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  br label %345

345:                                              ; preds = %344, %342
  %346 = load i1, ptr %22, align 1
  br i1 %346, label %347, label %348

347:                                              ; preds = %345
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  br label %348

348:                                              ; preds = %347, %345
  %349 = load i1, ptr %20, align 1
  br i1 %349, label %350, label %351

350:                                              ; preds = %348
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  br label %351

351:                                              ; preds = %350, %348
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #9
  %352 = load double, ptr %17, align 8, !tbaa !15
  %353 = fneg double %352
  %354 = getelementptr inbounds %class.Polygon, ptr %129, i32 0, i32 2
  %355 = load i32, ptr %15, align 4, !tbaa !25
  %356 = sext i32 %355 to i64
  %357 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %354, i64 noundef %356) #9
  %358 = load double, ptr %357, align 8, !tbaa !15
  %359 = call double @sin(double noundef %358) #9
  %360 = fmul double %353, %359
  %361 = load double, ptr %8, align 8, !tbaa !15
  %362 = fdiv double %360, %361
  store double %362, ptr %73, align 8, !tbaa !15
  %363 = load double, ptr %73, align 8, !tbaa !15
  %364 = fcmp oge double %363, -1.000000e+00
  store i1 false, ptr %76, align 1
  store i1 false, ptr %78, align 1
  store i1 false, ptr %80, align 1
  store i1 false, ptr %82, align 1
  store i1 false, ptr %84, align 1
  store i1 false, ptr %86, align 1
  store i1 false, ptr %88, align 1
  store i1 false, ptr %89, align 1
  store i1 false, ptr %90, align 1
  store i1 false, ptr %91, align 1
  store i1 false, ptr %93, align 1
  store i1 false, ptr %95, align 1
  store i1 false, ptr %96, align 1
  store i1 false, ptr %97, align 1
  store i1 false, ptr %98, align 1
  store i1 false, ptr %99, align 1
  store i1 false, ptr %101, align 1
  store i1 false, ptr %103, align 1
  store i1 false, ptr %104, align 1
  store i1 false, ptr %105, align 1
  store i1 false, ptr %106, align 1
  store i1 false, ptr %107, align 1
  store i1 false, ptr %109, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #9
  store i1 false, ptr %111, align 1
  store i1 false, ptr %112, align 1
  store i1 false, ptr %115, align 1
  store i1 false, ptr %117, align 1
  store i1 false, ptr %118, align 1
  store i1 false, ptr %119, align 1
  store i1 false, ptr %121, align 1
  store i1 false, ptr %123, align 1
  store i1 false, ptr %124, align 1
  store i1 false, ptr %125, align 1
  store i1 false, ptr %126, align 1
  br i1 %364, label %365, label %368

365:                                              ; preds = %351
  %366 = load double, ptr %73, align 8, !tbaa !15
  %367 = fcmp ole double %366, 1.000000e+00
  br i1 %367, label %384, label %368

368:                                              ; preds = %365, %351
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #9
  store i1 true, ptr %76, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #9
  store i1 true, ptr %78, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #9
  store i1 true, ptr %80, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %81) #9
  store i1 true, ptr %82, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %83) #9
  store i1 true, ptr %84, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %85) #9
  store i1 true, ptr %86, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #9
  store i1 true, ptr %88, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  store i1 true, ptr %89, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %87)
          to label %369 unwind label %684

369:                                              ; preds = %368
  store i1 true, ptr %90, 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 %83, ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef @.str.1)
          to label %370 unwind label %688

370:                                              ; preds = %369
  store i1 true, ptr %91, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #9
  store i1 true, ptr %93, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #9
  store i1 true, ptr %95, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #9
  store i1 true, ptr %96, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef @__FUNCTION__._ZNK7Polygon23Pc_pistonType_DrainHingEv, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %371 unwind label %692

371:                                              ; preds = %370
  store i1 true, ptr %97, 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 %81, ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(32) %92)
          to label %372 unwind label %696

372:                                              ; preds = %371
  store i1 true, ptr %98, 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 %79, ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef @.str.2)
          to label %373 unwind label %700

373:                                              ; preds = %372
  store i1 true, ptr %99, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #9
  store i1 true, ptr %101, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #9
  store i1 true, ptr %103, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #9
  store i1 true, ptr %104, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %374 unwind label %704

374:                                              ; preds = %373
  store i1 true, ptr %105, 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 %77, ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 8 dereferenceable(32) %100)
          to label %375 unwind label %708

375:                                              ; preds = %374
  store i1 true, ptr %106, 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 %75, ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef @.str.4)
          to label %376 unwind label %712

376:                                              ; preds = %375
  store i1 true, ptr %107, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %108) #9
  store i1 true, ptr %109, align 1
  store i32 308, ptr %110, align 4, !tbaa !25
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %108, ptr noundef nonnull align 4 dereferenceable(4) %110)
          to label %377 unwind label %716

377:                                              ; preds = %376
  store i1 true, ptr %111, 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 %74, ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(32) %108)
          to label %378 unwind label %720

378:                                              ; preds = %377
  store i1 true, ptr %112, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %114) #9
  store i1 true, ptr %115, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #9
  store i1 true, ptr %117, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  store i1 true, ptr %118, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %379 unwind label %724

379:                                              ; preds = %378
  store i1 true, ptr %119, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %120) #9
  store i1 true, ptr %121, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %122) #9
  store i1 true, ptr %123, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #9
  store i1 true, ptr %124, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %122)
          to label %380 unwind label %728

380:                                              ; preds = %379
  store i1 true, ptr %125, 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 %113, ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef nonnull align 8 dereferenceable(32) %120)
          to label %381 unwind label %732

381:                                              ; preds = %380
  store i1 true, ptr %126, align 1
  %382 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %74, ptr noundef %113, i32 noundef 0)
          to label %383 unwind label %736

383:                                              ; preds = %381
  br label %384

384:                                              ; preds = %383, %365
  %385 = phi i1 [ true, %365 ], [ %382, %383 ]
  %386 = xor i1 %385, true
  %387 = load i1, ptr %126, align 1
  br i1 %387, label %388, label %389

388:                                              ; preds = %384
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  br label %389

389:                                              ; preds = %388, %384
  %390 = load i1, ptr %125, align 1
  br i1 %390, label %391, label %392

391:                                              ; preds = %389
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #9
  br label %392

392:                                              ; preds = %391, %389
  %393 = load i1, ptr %124, align 1
  br i1 %393, label %394, label %395

394:                                              ; preds = %392
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #9
  br label %395

395:                                              ; preds = %394, %392
  %396 = load i1, ptr %123, align 1
  br i1 %396, label %397, label %398

397:                                              ; preds = %395
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #9
  br label %398

398:                                              ; preds = %397, %395
  %399 = load i1, ptr %121, align 1
  br i1 %399, label %400, label %401

400:                                              ; preds = %398
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #9
  br label %401

401:                                              ; preds = %400, %398
  %402 = load i1, ptr %119, align 1
  br i1 %402, label %403, label %404

403:                                              ; preds = %401
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #9
  br label %404

404:                                              ; preds = %403, %401
  %405 = load i1, ptr %118, align 1
  br i1 %405, label %406, label %407

406:                                              ; preds = %404
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  br label %407

407:                                              ; preds = %406, %404
  %408 = load i1, ptr %117, align 1
  br i1 %408, label %409, label %410

409:                                              ; preds = %407
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #9
  br label %410

410:                                              ; preds = %409, %407
  %411 = load i1, ptr %115, align 1
  br i1 %411, label %412, label %413

412:                                              ; preds = %410
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #9
  br label %413

413:                                              ; preds = %412, %410
  %414 = load i1, ptr %112, align 1
  br i1 %414, label %415, label %416

415:                                              ; preds = %413
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  br label %416

416:                                              ; preds = %415, %413
  %417 = load i1, ptr %111, align 1
  br i1 %417, label %418, label %419

418:                                              ; preds = %416
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  br label %419

419:                                              ; preds = %418, %416
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #9
  %420 = load i1, ptr %109, align 1
  br i1 %420, label %421, label %422

421:                                              ; preds = %419
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #9
  br label %422

422:                                              ; preds = %421, %419
  %423 = load i1, ptr %107, align 1
  br i1 %423, label %424, label %425

424:                                              ; preds = %422
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  br label %425

425:                                              ; preds = %424, %422
  %426 = load i1, ptr %106, align 1
  br i1 %426, label %427, label %428

427:                                              ; preds = %425
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #9
  br label %428

428:                                              ; preds = %427, %425
  %429 = load i1, ptr %105, align 1
  br i1 %429, label %430, label %431

430:                                              ; preds = %428
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #9
  br label %431

431:                                              ; preds = %430, %428
  %432 = load i1, ptr %104, align 1
  br i1 %432, label %433, label %434

433:                                              ; preds = %431
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #9
  br label %434

434:                                              ; preds = %433, %431
  %435 = load i1, ptr %103, align 1
  br i1 %435, label %436, label %437

436:                                              ; preds = %434
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #9
  br label %437

437:                                              ; preds = %436, %434
  %438 = load i1, ptr %101, align 1
  br i1 %438, label %439, label %440

439:                                              ; preds = %437
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #9
  br label %440

440:                                              ; preds = %439, %437
  %441 = load i1, ptr %99, align 1
  br i1 %441, label %442, label %443

442:                                              ; preds = %440
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  br label %443

443:                                              ; preds = %442, %440
  %444 = load i1, ptr %98, align 1
  br i1 %444, label %445, label %446

445:                                              ; preds = %443
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  br label %446

446:                                              ; preds = %445, %443
  %447 = load i1, ptr %97, align 1
  br i1 %447, label %448, label %449

448:                                              ; preds = %446
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  br label %449

449:                                              ; preds = %448, %446
  %450 = load i1, ptr %96, align 1
  br i1 %450, label %451, label %452

451:                                              ; preds = %449
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #9
  br label %452

452:                                              ; preds = %451, %449
  %453 = load i1, ptr %95, align 1
  br i1 %453, label %454, label %455

454:                                              ; preds = %452
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #9
  br label %455

455:                                              ; preds = %454, %452
  %456 = load i1, ptr %93, align 1
  br i1 %456, label %457, label %458

457:                                              ; preds = %455
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #9
  br label %458

458:                                              ; preds = %457, %455
  %459 = load i1, ptr %91, align 1
  br i1 %459, label %460, label %461

460:                                              ; preds = %458
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  br label %461

461:                                              ; preds = %460, %458
  %462 = load i1, ptr %90, align 1
  br i1 %462, label %463, label %464

463:                                              ; preds = %461
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  br label %464

464:                                              ; preds = %463, %461
  %465 = load i1, ptr %89, align 1
  br i1 %465, label %466, label %467

466:                                              ; preds = %464
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  br label %467

467:                                              ; preds = %466, %464
  %468 = load i1, ptr %88, align 1
  br i1 %468, label %469, label %470

469:                                              ; preds = %467
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #9
  br label %470

470:                                              ; preds = %469, %467
  %471 = load i1, ptr %86, align 1
  br i1 %471, label %472, label %473

472:                                              ; preds = %470
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #9
  br label %473

473:                                              ; preds = %472, %470
  %474 = load i1, ptr %84, align 1
  br i1 %474, label %475, label %476

475:                                              ; preds = %473
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #9
  br label %476

476:                                              ; preds = %475, %473
  %477 = load i1, ptr %82, align 1
  br i1 %477, label %478, label %479

478:                                              ; preds = %476
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #9
  br label %479

479:                                              ; preds = %478, %476
  %480 = load i1, ptr %80, align 1
  br i1 %480, label %481, label %482

481:                                              ; preds = %479
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #9
  br label %482

482:                                              ; preds = %481, %479
  %483 = load i1, ptr %78, align 1
  br i1 %483, label %484, label %485

484:                                              ; preds = %482
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #9
  br label %485

485:                                              ; preds = %484, %482
  %486 = load i1, ptr %76, align 1
  br i1 %486, label %487, label %488

487:                                              ; preds = %485
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #9
  br label %488

488:                                              ; preds = %487, %485
  %489 = load double, ptr %17, align 8, !tbaa !15
  %490 = load double, ptr %16, align 8, !tbaa !15
  %491 = call double @cos(double noundef %490) #9
  %492 = load double, ptr %11, align 8, !tbaa !15
  %493 = call double @llvm.fmuladd.f64(double %489, double %491, double %492)
  store double %493, ptr %11, align 8, !tbaa !15
  %494 = load double, ptr %16, align 8, !tbaa !15
  %495 = getelementptr inbounds %class.Polygon, ptr %129, i32 0, i32 2
  %496 = load i32, ptr %15, align 4, !tbaa !25
  %497 = sext i32 %496 to i64
  %498 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %495, i64 noundef %497) #9
  %499 = load double, ptr %498, align 8, !tbaa !15
  %500 = fsub double %494, %499
  %501 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !15
  %502 = fdiv double %501, 2.000000e+00
  %503 = fsub double %500, %502
  %504 = load double, ptr %12, align 8, !tbaa !15
  %505 = fadd double %504, %503
  store double %505, ptr %12, align 8, !tbaa !15
  %506 = load double, ptr %73, align 8, !tbaa !15
  %507 = call double @asin(double noundef %506) #9
  %508 = load double, ptr %13, align 8, !tbaa !15
  %509 = fadd double %508, %507
  store double %509, ptr %13, align 8, !tbaa !15
  %510 = load double, ptr %17, align 8, !tbaa !15
  %511 = load double, ptr %14, align 8, !tbaa !15
  %512 = fadd double %511, %510
  store double %512, ptr %14, align 8, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  br label %856

513:                                              ; preds = %231
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %34, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %35, align 4
  br label %659

517:                                              ; preds = %232
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %34, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %35, align 4
  br label %655

521:                                              ; preds = %233
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %34, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %35, align 4
  br label %642

525:                                              ; preds = %234
  %526 = landingpad { ptr, i32 }
          cleanup
  %527 = extractvalue { ptr, i32 } %526, 0
  store ptr %527, ptr %34, align 8
  %528 = extractvalue { ptr, i32 } %526, 1
  store i32 %528, ptr %35, align 4
  br label %638

529:                                              ; preds = %235
  %530 = landingpad { ptr, i32 }
          cleanup
  %531 = extractvalue { ptr, i32 } %530, 0
  store ptr %531, ptr %34, align 8
  %532 = extractvalue { ptr, i32 } %530, 1
  store i32 %532, ptr %35, align 4
  br label %634

533:                                              ; preds = %236
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %34, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %35, align 4
  br label %621

537:                                              ; preds = %237
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %34, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %35, align 4
  br label %617

541:                                              ; preds = %238
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %34, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %35, align 4
  br label %613

545:                                              ; preds = %239
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %34, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %35, align 4
  br label %606

549:                                              ; preds = %240
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %34, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %35, align 4
  br label %602

553:                                              ; preds = %241
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %34, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %35, align 4
  br label %589

557:                                              ; preds = %242
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %34, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %35, align 4
  br label %576

561:                                              ; preds = %243
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %34, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %35, align 4
  br label %572

565:                                              ; preds = %244
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %34, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %35, align 4
  %569 = load i1, ptr %72, align 1
  br i1 %569, label %570, label %571

570:                                              ; preds = %565
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #9
  br label %571

571:                                              ; preds = %570, %565
  br label %572

572:                                              ; preds = %571, %561
  %573 = load i1, ptr %71, align 1
  br i1 %573, label %574, label %575

574:                                              ; preds = %572
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #9
  br label %575

575:                                              ; preds = %574, %572
  br label %576

576:                                              ; preds = %575, %557
  %577 = load i1, ptr %70, align 1
  br i1 %577, label %578, label %579

578:                                              ; preds = %576
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  br label %579

579:                                              ; preds = %578, %576
  %580 = load i1, ptr %69, align 1
  br i1 %580, label %581, label %582

581:                                              ; preds = %579
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  br label %582

582:                                              ; preds = %581, %579
  %583 = load i1, ptr %67, align 1
  br i1 %583, label %584, label %585

584:                                              ; preds = %582
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #9
  br label %585

585:                                              ; preds = %584, %582
  %586 = load i1, ptr %65, align 1
  br i1 %586, label %587, label %588

587:                                              ; preds = %585
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  br label %588

588:                                              ; preds = %587, %585
  br label %589

589:                                              ; preds = %588, %553
  %590 = load i1, ptr %64, align 1
  br i1 %590, label %591, label %592

591:                                              ; preds = %589
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  br label %592

592:                                              ; preds = %591, %589
  %593 = load i1, ptr %63, align 1
  br i1 %593, label %594, label %595

594:                                              ; preds = %592
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  br label %595

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

597:                                              ; preds = %595
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #9
  br label %598

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

600:                                              ; preds = %598
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %601

601:                                              ; preds = %600, %598
  br label %602

602:                                              ; preds = %601, %549
  %603 = load i1, ptr %57, align 1
  br i1 %603, label %604, label %605

604:                                              ; preds = %602
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  br label %605

605:                                              ; preds = %604, %602
  br label %606

606:                                              ; preds = %605, %545
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  %607 = load i1, ptr %55, align 1
  br i1 %607, label %608, label %609

608:                                              ; preds = %606
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #9
  br label %609

609:                                              ; preds = %608, %606
  %610 = load i1, ptr %53, align 1
  br i1 %610, label %611, label %612

611:                                              ; preds = %609
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %612

612:                                              ; preds = %611, %609
  br label %613

613:                                              ; preds = %612, %541
  %614 = load i1, ptr %52, align 1
  br i1 %614, label %615, label %616

615:                                              ; preds = %613
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %616

616:                                              ; preds = %615, %613
  br label %617

617:                                              ; preds = %616, %537
  %618 = load i1, ptr %51, align 1
  br i1 %618, label %619, label %620

619:                                              ; preds = %617
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  br label %620

620:                                              ; preds = %619, %617
  br label %621

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

623:                                              ; preds = %621
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  br label %624

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

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

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

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

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

632:                                              ; preds = %630
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %633

633:                                              ; preds = %632, %630
  br label %634

634:                                              ; preds = %633, %529
  %635 = load i1, ptr %44, align 1
  br i1 %635, label %636, label %637

636:                                              ; preds = %634
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %637

637:                                              ; preds = %636, %634
  br label %638

638:                                              ; preds = %637, %525
  %639 = load i1, ptr %43, align 1
  br i1 %639, label %640, label %641

640:                                              ; preds = %638
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %641

641:                                              ; preds = %640, %638
  br label %642

642:                                              ; preds = %641, %521
  %643 = load i1, ptr %42, align 1
  br i1 %643, label %644, label %645

644:                                              ; preds = %642
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  br label %645

645:                                              ; preds = %644, %642
  %646 = load i1, ptr %41, align 1
  br i1 %646, label %647, label %648

647:                                              ; preds = %645
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  br label %648

648:                                              ; preds = %647, %645
  %649 = load i1, ptr %39, align 1
  br i1 %649, label %650, label %651

650:                                              ; preds = %648
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  br label %651

651:                                              ; preds = %650, %648
  %652 = load i1, ptr %37, align 1
  br i1 %652, label %653, label %654

653:                                              ; preds = %651
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %654

654:                                              ; preds = %653, %651
  br label %655

655:                                              ; preds = %654, %517
  %656 = load i1, ptr %36, align 1
  br i1 %656, label %657, label %658

657:                                              ; preds = %655
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  br label %658

658:                                              ; preds = %657, %655
  br label %659

659:                                              ; preds = %658, %513
  %660 = load i1, ptr %33, align 1
  br i1 %660, label %661, label %662

661:                                              ; preds = %659
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  br label %662

662:                                              ; preds = %661, %659
  %663 = load i1, ptr %32, align 1
  br i1 %663, label %664, label %665

664:                                              ; preds = %662
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  br label %665

665:                                              ; preds = %664, %662
  %666 = load i1, ptr %30, align 1
  br i1 %666, label %667, label %668

667:                                              ; preds = %665
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  br label %668

668:                                              ; preds = %667, %665
  %669 = load i1, ptr %28, align 1
  br i1 %669, label %670, label %671

670:                                              ; preds = %668
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #9
  br label %671

671:                                              ; preds = %670, %668
  %672 = load i1, ptr %26, align 1
  br i1 %672, label %673, label %674

673:                                              ; preds = %671
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  br label %674

674:                                              ; preds = %673, %671
  %675 = load i1, ptr %24, align 1
  br i1 %675, label %676, label %677

676:                                              ; preds = %674
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  br label %677

677:                                              ; preds = %676, %674
  %678 = load i1, ptr %22, align 1
  br i1 %678, label %679, label %680

679:                                              ; preds = %677
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  br label %680

680:                                              ; preds = %679, %677
  %681 = load i1, ptr %20, align 1
  br i1 %681, label %682, label %683

682:                                              ; preds = %680
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  br label %683

683:                                              ; preds = %682, %680
  br label %855

684:                                              ; preds = %368
  %685 = landingpad { ptr, i32 }
          cleanup
  %686 = extractvalue { ptr, i32 } %685, 0
  store ptr %686, ptr %34, align 8
  %687 = extractvalue { ptr, i32 } %685, 1
  store i32 %687, ptr %35, align 4
  br label %830

688:                                              ; preds = %369
  %689 = landingpad { ptr, i32 }
          cleanup
  %690 = extractvalue { ptr, i32 } %689, 0
  store ptr %690, ptr %34, align 8
  %691 = extractvalue { ptr, i32 } %689, 1
  store i32 %691, ptr %35, align 4
  br label %826

692:                                              ; preds = %370
  %693 = landingpad { ptr, i32 }
          cleanup
  %694 = extractvalue { ptr, i32 } %693, 0
  store ptr %694, ptr %34, align 8
  %695 = extractvalue { ptr, i32 } %693, 1
  store i32 %695, ptr %35, align 4
  br label %813

696:                                              ; preds = %371
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %34, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %35, align 4
  br label %809

700:                                              ; preds = %372
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %34, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %35, align 4
  br label %805

704:                                              ; preds = %373
  %705 = landingpad { ptr, i32 }
          cleanup
  %706 = extractvalue { ptr, i32 } %705, 0
  store ptr %706, ptr %34, align 8
  %707 = extractvalue { ptr, i32 } %705, 1
  store i32 %707, ptr %35, align 4
  br label %792

708:                                              ; preds = %374
  %709 = landingpad { ptr, i32 }
          cleanup
  %710 = extractvalue { ptr, i32 } %709, 0
  store ptr %710, ptr %34, align 8
  %711 = extractvalue { ptr, i32 } %709, 1
  store i32 %711, ptr %35, align 4
  br label %788

712:                                              ; preds = %375
  %713 = landingpad { ptr, i32 }
          cleanup
  %714 = extractvalue { ptr, i32 } %713, 0
  store ptr %714, ptr %34, align 8
  %715 = extractvalue { ptr, i32 } %713, 1
  store i32 %715, ptr %35, align 4
  br label %784

716:                                              ; preds = %376
  %717 = landingpad { ptr, i32 }
          cleanup
  %718 = extractvalue { ptr, i32 } %717, 0
  store ptr %718, ptr %34, align 8
  %719 = extractvalue { ptr, i32 } %717, 1
  store i32 %719, ptr %35, align 4
  br label %777

720:                                              ; preds = %377
  %721 = landingpad { ptr, i32 }
          cleanup
  %722 = extractvalue { ptr, i32 } %721, 0
  store ptr %722, ptr %34, align 8
  %723 = extractvalue { ptr, i32 } %721, 1
  store i32 %723, ptr %35, align 4
  br label %773

724:                                              ; preds = %378
  %725 = landingpad { ptr, i32 }
          cleanup
  %726 = extractvalue { ptr, i32 } %725, 0
  store ptr %726, ptr %34, align 8
  %727 = extractvalue { ptr, i32 } %725, 1
  store i32 %727, ptr %35, align 4
  br label %760

728:                                              ; preds = %379
  %729 = landingpad { ptr, i32 }
          cleanup
  %730 = extractvalue { ptr, i32 } %729, 0
  store ptr %730, ptr %34, align 8
  %731 = extractvalue { ptr, i32 } %729, 1
  store i32 %731, ptr %35, align 4
  br label %747

732:                                              ; preds = %380
  %733 = landingpad { ptr, i32 }
          cleanup
  %734 = extractvalue { ptr, i32 } %733, 0
  store ptr %734, ptr %34, align 8
  %735 = extractvalue { ptr, i32 } %733, 1
  store i32 %735, ptr %35, align 4
  br label %743

736:                                              ; preds = %381
  %737 = landingpad { ptr, i32 }
          cleanup
  %738 = extractvalue { ptr, i32 } %737, 0
  store ptr %738, ptr %34, align 8
  %739 = extractvalue { ptr, i32 } %737, 1
  store i32 %739, ptr %35, align 4
  %740 = load i1, ptr %126, align 1
  br i1 %740, label %741, label %742

741:                                              ; preds = %736
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  br label %742

742:                                              ; preds = %741, %736
  br label %743

743:                                              ; preds = %742, %732
  %744 = load i1, ptr %125, align 1
  br i1 %744, label %745, label %746

745:                                              ; preds = %743
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #9
  br label %746

746:                                              ; preds = %745, %743
  br label %747

747:                                              ; preds = %746, %728
  %748 = load i1, ptr %124, align 1
  br i1 %748, label %749, label %750

749:                                              ; preds = %747
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #9
  br label %750

750:                                              ; preds = %749, %747
  %751 = load i1, ptr %123, align 1
  br i1 %751, label %752, label %753

752:                                              ; preds = %750
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #9
  br label %753

753:                                              ; preds = %752, %750
  %754 = load i1, ptr %121, align 1
  br i1 %754, label %755, label %756

755:                                              ; preds = %753
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #9
  br label %756

756:                                              ; preds = %755, %753
  %757 = load i1, ptr %119, align 1
  br i1 %757, label %758, label %759

758:                                              ; preds = %756
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #9
  br label %759

759:                                              ; preds = %758, %756
  br label %760

760:                                              ; preds = %759, %724
  %761 = load i1, ptr %118, align 1
  br i1 %761, label %762, label %763

762:                                              ; preds = %760
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  br label %763

763:                                              ; preds = %762, %760
  %764 = load i1, ptr %117, align 1
  br i1 %764, label %765, label %766

765:                                              ; preds = %763
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #9
  br label %766

766:                                              ; preds = %765, %763
  %767 = load i1, ptr %115, align 1
  br i1 %767, label %768, label %769

768:                                              ; preds = %766
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #9
  br label %769

769:                                              ; preds = %768, %766
  %770 = load i1, ptr %112, align 1
  br i1 %770, label %771, label %772

771:                                              ; preds = %769
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  br label %772

772:                                              ; preds = %771, %769
  br label %773

773:                                              ; preds = %772, %720
  %774 = load i1, ptr %111, align 1
  br i1 %774, label %775, label %776

775:                                              ; preds = %773
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  br label %776

776:                                              ; preds = %775, %773
  br label %777

777:                                              ; preds = %776, %716
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #9
  %778 = load i1, ptr %109, align 1
  br i1 %778, label %779, label %780

779:                                              ; preds = %777
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #9
  br label %780

780:                                              ; preds = %779, %777
  %781 = load i1, ptr %107, align 1
  br i1 %781, label %782, label %783

782:                                              ; preds = %780
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  br label %783

783:                                              ; preds = %782, %780
  br label %784

784:                                              ; preds = %783, %712
  %785 = load i1, ptr %106, align 1
  br i1 %785, label %786, label %787

786:                                              ; preds = %784
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #9
  br label %787

787:                                              ; preds = %786, %784
  br label %788

788:                                              ; preds = %787, %708
  %789 = load i1, ptr %105, align 1
  br i1 %789, label %790, label %791

790:                                              ; preds = %788
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #9
  br label %791

791:                                              ; preds = %790, %788
  br label %792

792:                                              ; preds = %791, %704
  %793 = load i1, ptr %104, align 1
  br i1 %793, label %794, label %795

794:                                              ; preds = %792
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #9
  br label %795

795:                                              ; preds = %794, %792
  %796 = load i1, ptr %103, align 1
  br i1 %796, label %797, label %798

797:                                              ; preds = %795
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #9
  br label %798

798:                                              ; preds = %797, %795
  %799 = load i1, ptr %101, align 1
  br i1 %799, label %800, label %801

800:                                              ; preds = %798
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #9
  br label %801

801:                                              ; preds = %800, %798
  %802 = load i1, ptr %99, align 1
  br i1 %802, label %803, label %804

803:                                              ; preds = %801
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  br label %804

804:                                              ; preds = %803, %801
  br label %805

805:                                              ; preds = %804, %700
  %806 = load i1, ptr %98, align 1
  br i1 %806, label %807, label %808

807:                                              ; preds = %805
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  br label %808

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

809:                                              ; preds = %808, %696
  %810 = load i1, ptr %97, align 1
  br i1 %810, label %811, label %812

811:                                              ; preds = %809
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  br label %812

812:                                              ; preds = %811, %809
  br label %813

813:                                              ; preds = %812, %692
  %814 = load i1, ptr %96, align 1
  br i1 %814, label %815, label %816

815:                                              ; preds = %813
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #9
  br label %816

816:                                              ; preds = %815, %813
  %817 = load i1, ptr %95, align 1
  br i1 %817, label %818, label %819

818:                                              ; preds = %816
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #9
  br label %819

819:                                              ; preds = %818, %816
  %820 = load i1, ptr %93, align 1
  br i1 %820, label %821, label %822

821:                                              ; preds = %819
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #9
  br label %822

822:                                              ; preds = %821, %819
  %823 = load i1, ptr %91, align 1
  br i1 %823, label %824, label %825

824:                                              ; preds = %822
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  br label %825

825:                                              ; preds = %824, %822
  br label %826

826:                                              ; preds = %825, %688
  %827 = load i1, ptr %90, align 1
  br i1 %827, label %828, label %829

828:                                              ; preds = %826
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  br label %829

829:                                              ; preds = %828, %826
  br label %830

830:                                              ; preds = %829, %684
  %831 = load i1, ptr %89, align 1
  br i1 %831, label %832, label %833

832:                                              ; preds = %830
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  br label %833

833:                                              ; preds = %832, %830
  %834 = load i1, ptr %88, align 1
  br i1 %834, label %835, label %836

835:                                              ; preds = %833
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #9
  br label %836

836:                                              ; preds = %835, %833
  %837 = load i1, ptr %86, align 1
  br i1 %837, label %838, label %839

838:                                              ; preds = %836
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #9
  br label %839

839:                                              ; preds = %838, %836
  %840 = load i1, ptr %84, align 1
  br i1 %840, label %841, label %842

841:                                              ; preds = %839
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #9
  br label %842

842:                                              ; preds = %841, %839
  %843 = load i1, ptr %82, align 1
  br i1 %843, label %844, label %845

844:                                              ; preds = %842
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #9
  br label %845

845:                                              ; preds = %844, %842
  %846 = load i1, ptr %80, align 1
  br i1 %846, label %847, label %848

847:                                              ; preds = %845
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #9
  br label %848

848:                                              ; preds = %847, %845
  %849 = load i1, ptr %78, align 1
  br i1 %849, label %850, label %851

850:                                              ; preds = %848
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #9
  br label %851

851:                                              ; preds = %850, %848
  %852 = load i1, ptr %76, align 1
  br i1 %852, label %853, label %854

853:                                              ; preds = %851
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #9
  br label %854

854:                                              ; preds = %853, %851
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  br label %855

855:                                              ; preds = %854, %683
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  br label %949

856:                                              ; preds = %488, %203, %193
  br label %857

857:                                              ; preds = %856
  %858 = load i32, ptr %15, align 4, !tbaa !25
  %859 = add nsw i32 %858, 1
  store i32 %859, ptr %15, align 4, !tbaa !25
  br label %188, !llvm.loop !31

860:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #9
  %861 = getelementptr inbounds %class.ElemModel, ptr %129, i32 0, i32 5
  %862 = load double, ptr %861, align 8, !tbaa !33
  %863 = getelementptr inbounds %class.ElemModel, ptr %129, i32 0, i32 5
  %864 = load double, ptr %863, align 8, !tbaa !33
  %865 = fmul double %862, %864
  %866 = getelementptr inbounds %class.VoidElem, ptr %129, i32 0, i32 1
  %867 = load double, ptr %866, align 8, !tbaa !34
  %868 = fmul double 4.000000e+00, %867
  %869 = fdiv double %865, %868
  %870 = load double, ptr %8, align 8, !tbaa !15
  %871 = load double, ptr %11, align 8, !tbaa !15
  %872 = fneg double %870
  %873 = call double @llvm.fmuladd.f64(double %872, double %871, double %869)
  %874 = load double, ptr %8, align 8, !tbaa !15
  %875 = load double, ptr %8, align 8, !tbaa !15
  %876 = fmul double %874, %875
  %877 = load double, ptr %12, align 8, !tbaa !15
  %878 = call double @llvm.fmuladd.f64(double %876, double %877, double %873)
  %879 = load double, ptr %8, align 8, !tbaa !15
  %880 = fmul double 2.000000e+00, %879
  %881 = load double, ptr %13, align 8, !tbaa !15
  %882 = getelementptr inbounds %class.VoidElem, ptr %129, i32 0, i32 4
  %883 = load double, ptr %882, align 8, !tbaa !30
  %884 = call double @cos(double noundef %883) #9
  %885 = getelementptr inbounds %class.ElemModel, ptr %129, i32 0, i32 5
  %886 = load double, ptr %885, align 8, !tbaa !33
  %887 = getelementptr inbounds %class.VoidElem, ptr %129, i32 0, i32 1
  %888 = load double, ptr %887, align 8, !tbaa !34
  %889 = fmul double 2.000000e+00, %888
  %890 = fdiv double %886, %889
  %891 = load double, ptr %14, align 8, !tbaa !15
  %892 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %891, double %890)
  %893 = fmul double %884, %892
  %894 = call double @llvm.fmuladd.f64(double %880, double %881, double %893)
  %895 = fdiv double %878, %894
  store double %895, ptr %127, align 8, !tbaa !15
  %896 = load double, ptr %127, align 8, !tbaa !15
  %897 = load double, ptr %8, align 8, !tbaa !15
  %898 = fsub double %896, %897
  %899 = load double, ptr %8, align 8, !tbaa !15
  %900 = fdiv double %898, %899
  %901 = call double @llvm.fabs.f64(double %900)
  store double %901, ptr %7, align 8, !tbaa !15
  %902 = load double, ptr %7, align 8, !tbaa !15
  %903 = load double, ptr @_ZN9ElemModel7EPSILONE, align 8, !tbaa !15
  %904 = fcmp olt double %902, %903
  br i1 %904, label %905, label %911

905:                                              ; preds = %860
  %906 = getelementptr inbounds %class.ElemModel, ptr %129, i32 0, i32 4
  %907 = load ptr, ptr %906, align 8, !tbaa !9
  %908 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %907)
  %909 = load double, ptr %127, align 8, !tbaa !15
  %910 = fdiv double %908, %909
  store double %910, ptr %2, align 8
  store i32 1, ptr %128, align 4
  br label %913

911:                                              ; preds = %860
  %912 = load double, ptr %127, align 8, !tbaa !15
  store double %912, ptr %8, align 8, !tbaa !15
  store i32 0, ptr %128, align 4
  br label %913

913:                                              ; preds = %911, %905
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  %914 = load i32, ptr %128, align 4
  switch i32 %914, label %947 [
    i32 0, label %915
  ]

915:                                              ; preds = %913
  br label %916

916:                                              ; preds = %915
  %917 = load i32, ptr %9, align 4, !tbaa !25
  %918 = add nsw i32 %917, 1
  store i32 %918, ptr %9, align 4, !tbaa !25
  br label %183, !llvm.loop !35

919:                                              ; preds = %183
  %920 = load i32, ptr %10, align 4, !tbaa !25
  %921 = add nsw i32 %920, -1
  store i32 %921, ptr %10, align 4, !tbaa !25
  br label %179, !llvm.loop !36

922:                                              ; preds = %179
  %923 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.20)
  %924 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %923, ptr noundef @.str.21)
  %925 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %924, ptr noundef @.str.22)
  %926 = load double, ptr %7, align 8, !tbaa !15
  %927 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %925, double noundef %926)
  %928 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %927, ptr noundef @.str.23)
  %929 = getelementptr inbounds %class.VoidElem, ptr %129, i32 0, i32 4
  %930 = load double, ptr %929, align 8, !tbaa !30
  %931 = fmul double %930, 1.800000e+02
  %932 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !15
  %933 = fdiv double %931, %932
  %934 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %928, double noundef %933)
  %935 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %934, ptr noundef @.str.24)
  %936 = getelementptr inbounds %class.ElemModel, ptr %129, i32 0, i32 5
  %937 = load double, ptr %936, align 8, !tbaa !33
  %938 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %935, double noundef %937)
  %939 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %938, ptr noundef @.str.25)
  %940 = getelementptr inbounds %class.VoidElem, ptr %129, i32 0, i32 1
  %941 = load double, ptr %940, align 8, !tbaa !34
  %942 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %939, double noundef %941)
  %943 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %942, ptr noundef @.str.26)
  %944 = load i32, ptr %9, align 4, !tbaa !25
  %945 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %943, i32 noundef %944)
  %946 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %945, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @exit(i32 noundef -1) #10
  unreachable

947:                                              ; preds = %913
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  %948 = load double, ptr %2, align 8
  ret double %948

949:                                              ; preds = %855
  %950 = load ptr, ptr %34, align 8
  %951 = load i32, ptr %35, align 4
  %952 = insertvalue { ptr, i32 } poison, ptr %950, 0
  %953 = insertvalue { ptr, i32 } %952, i32 %951, 1
  resume { ptr, i32 } %953
}

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #7

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8), double noundef) #3 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 zeroext i1 @_ZNK9LayerApex13forcedSnapOffEd(ptr noundef nonnull align 8 dereferenceable(144), double noundef) #6 align 2

declare void @_ZNK9LayerApex21getCAApexDistUntrapedERdS0_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: nounwind
declare double @asin(double noundef) #4

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #0

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(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 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { noreturn 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 #9 = { nounwind }
attributes #10 = { noreturn 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, !6, i64 32}
!10 = !{!"_ZTS9ElemModel", !11, i64 8, !11, i64 16, !6, i64 24, !6, i64 32, !11, i64 40, !6, i64 48, !12, i64 56, !12, i64 57, !12, i64 58, !12, i64 59, !13, i64 60, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !14, i64 120, !14, i64 136}
!11 = !{!"double", !7, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTSSt4pairIddE", !11, i64 0, !11, i64 8}
!15 = !{!11, !11, i64 0}
!16 = !{!10, !6, i64 24}
!17 = !{!18, !6, i64 224}
!18 = !{!"_ZTS7Polygon", !19, i64 0, !13, i64 184, !20, i64 192, !6, i64 216, !6, i64 224, !24, i64 232, !7, i64 234, !11, i64 240}
!19 = !{!"_ZTS8VoidElem", !10, i64 0, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176}
!20 = !{!"_ZTSSt6vectorIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"short", !7, i64 0}
!25 = !{!13, !13, i64 0}
!26 = !{!27, !13, i64 0}
!27 = !{!"_ZTSSt4pairIidE", !13, i64 0, !11, i64 8}
!28 = !{!27, !11, i64 8}
!29 = !{!18, !13, i64 184}
!30 = !{!19, !11, i64 176}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!10, !11, i64 40}
!34 = !{!19, !11, i64 152}
!35 = distinct !{!35, !32}
!36 = distinct !{!36, !32}


; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"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::allocator.2" = 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 [102 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
@__FUNCTION__._ZNK7Polygon23Pc_pistonType_DrainHingEv = external hidden unnamed_addr constant [24 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [30 x i8], align 1
@_ZN9ElemModel7EPSILONE = external local_unnamed_addr constant double, align 8
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.20 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [15 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; 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 nofree nounwind willreturn memory(write)
declare double @cos(double noundef) local_unnamed_addr #4

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

; 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: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #0

; 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 @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104)) 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 nofree nounwind willreturn memory(write)
declare double @sin(double noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_ZNK7Polygon23Pc_pistonType_DrainHingEv(ptr noundef nonnull align 8 dereferenceable(248) %0) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca double, align 8
  %3 = alloca double, align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.2", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.2", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.2", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.2", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.2", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.2", align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.2", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator.2", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca i32, align 4
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.2", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.2", align 1
  %42 = getelementptr inbounds i8, ptr %0, i64 32
  %43 = load ptr, ptr %42, align 8, !tbaa !5
  %44 = tail call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %43)
  %45 = load ptr, ptr %42, align 8, !tbaa !5
  %46 = tail call noundef double @_ZNK10CommonData17minPcLastImbCycleEv(ptr noundef nonnull align 8 dereferenceable(1972) %45)
  %47 = getelementptr inbounds i8, ptr %0, i64 24
  %48 = load ptr, ptr %47, align 8, !tbaa !14
  %49 = tail call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %48)
  %50 = fsub double %46, %49
  %51 = load ptr, ptr %42, align 8, !tbaa !5
  %52 = tail call noundef double @_ZNK10CommonData16minEverCappPressEv(ptr noundef nonnull align 8 dereferenceable(1972) %51)
  %53 = load ptr, ptr %47, align 8, !tbaa !14
  %54 = tail call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %53)
  %55 = fsub double %52, %54
  %56 = getelementptr inbounds i8, ptr %0, i64 224
  %57 = load ptr, ptr %56, align 8, !tbaa !15
  %58 = tail call noundef zeroext i1 @_ZNK9LayerApex23stablePinnedInLastCycleEd(ptr noundef nonnull align 8 dereferenceable(144) %57, double noundef %50)
  %59 = select i1 %58, double %50, double %55
  %60 = load ptr, ptr %56, align 8, !tbaa !15
  %61 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9LayerApex13trappedOLayerEv(ptr noundef nonnull align 8 dereferenceable(144) %60)
  %62 = load i32, ptr %61, align 8, !tbaa !23
  %63 = icmp sgt i32 %62, -1
  br i1 %63, label %64, label %69

64:                                               ; preds = %1
  %65 = load ptr, ptr %56, align 8, !tbaa !15
  %66 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9LayerApex13trappedOLayerEv(ptr noundef nonnull align 8 dereferenceable(144) %65)
  %67 = getelementptr inbounds i8, ptr %66, i64 8
  %68 = load double, ptr %67, align 8, !tbaa !25
  br label %69

69:                                               ; preds = %64, %1
  %.pn = phi double [ %68, %64 ], [ %59, %1 ]
  %70 = getelementptr inbounds i8, ptr %0, i64 184
  %71 = load i32, ptr %70, align 8, !tbaa !26
  %72 = icmp sgt i32 %71, -1
  %.pre837 = load double, ptr @_ZN9ElemModel2PIE, align 8
  br i1 %72, label %.preheader412.lr.ph, label %._crit_edge

.preheader412.lr.ph:                              ; preds = %69
  %73 = load i32, ptr @_ZN9ElemModel12MAX_NEWT_ITRE, align 4, !tbaa !27
  %74 = icmp sgt i32 %73, 0
  %75 = getelementptr inbounds i8, ptr %0, i64 176
  %76 = getelementptr inbounds i8, ptr %0, i64 192
  %77 = fmul double %.pre837, 5.000000e-01
  %78 = getelementptr inbounds i8, ptr %0, i64 40
  %79 = getelementptr inbounds i8, ptr %0, i64 152
  %80 = load double, ptr @_ZN9ElemModel7EPSILONE, align 8
  br i1 %74, label %.preheader412.us.preheader, label %._crit_edge

.preheader412.us.preheader:                       ; preds = %.preheader412.lr.ph
  %.0303 = fdiv double %44, %.pn
  %81 = zext nneg i32 %71 to i64
  br label %.preheader412.us

.preheader412.us:                                 ; preds = %.preheader412.us.preheader, %._crit_edge680.us
  %indvars.iv832 = phi i64 [ %81, %.preheader412.us.preheader ], [ %indvars.iv.next833, %._crit_edge680.us ]
  %.1304771.us = phi double [ %.0303, %.preheader412.us.preheader ], [ %.us-phi684.us, %._crit_edge680.us ]
  %.not = icmp eq i64 %indvars.iv832, 0
  br i1 %.not, label %.preheader.us776.preheader, label %.preheader.us.us

.preheader.us776.preheader:                       ; preds = %.preheader412.us
  %.pre = load double, ptr %78, align 8, !tbaa !28
  %.pre835 = load double, ptr %79, align 8, !tbaa !29
  br label %.preheader.us776

82:                                               ; preds = %.preheader.us776
  %83 = add nuw nsw i32 %.1302679.us777, 1
  %exitcond.not = icmp eq i32 %83, %73
  br i1 %exitcond.not, label %._crit_edge680.us, label %.preheader.us776, !llvm.loop !30

.preheader.us776:                                 ; preds = %.preheader.us776.preheader, %82
  %84 = phi double [ %98, %82 ], [ %.pre835, %.preheader.us776.preheader ]
  %85 = phi double [ %97, %82 ], [ %.pre, %.preheader.us776.preheader ]
  %.1302679.us777 = phi i32 [ %83, %82 ], [ 0, %.preheader.us776.preheader ]
  %.2305678.us778 = phi double [ %107, %82 ], [ %.1304771.us, %.preheader.us776.preheader ]
  %86 = fmul double %85, %85
  %87 = fmul double %84, 4.000000e+00
  %88 = fdiv double %86, %87
  %89 = fneg double %.2305678.us778
  %90 = call double @llvm.fmuladd.f64(double %89, double 0.000000e+00, double %88)
  %91 = insertelement <2 x double> poison, double %.2305678.us778, i64 0
  %92 = shufflevector <2 x double> %91, <2 x double> poison, <2 x i32> zeroinitializer
  %93 = insertelement <2 x double> %92, double 2.000000e+00, i64 1
  %94 = fmul <2 x double> %92, %93
  %95 = load double, ptr %75, align 8, !tbaa !32
  %96 = call double @cos(double noundef %95) #10
  %97 = load double, ptr %78, align 8, !tbaa !28
  %98 = load double, ptr %79, align 8, !tbaa !29
  %99 = fmul double %98, 2.000000e+00
  %100 = fdiv double %97, %99
  %101 = fmul double %96, %100
  %102 = insertelement <2 x double> poison, double %90, i64 0
  %103 = insertelement <2 x double> %102, double %101, i64 1
  %104 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %94, <2 x double> zeroinitializer, <2 x double> %103)
  %105 = extractelement <2 x double> %104, i64 0
  %106 = extractelement <2 x double> %104, i64 1
  %107 = fdiv double %105, %106
  %108 = fsub double %107, %.2305678.us778
  %109 = fdiv double %108, %.2305678.us778
  %110 = call double @llvm.fabs.f64(double %109)
  %111 = fcmp uge double %110, %80
  br i1 %111, label %82, label %.split.us

._crit_edge680.us:                                ; preds = %113, %82
  %.us-phi684.us = phi double [ %107, %82 ], [ %212, %113 ]
  %.us-phi686.us = phi double [ %110, %82 ], [ %215, %113 ]
  %indvars.iv.next833 = add nsw i64 %indvars.iv832, -1
  br i1 %.not, label %._crit_edge, label %.preheader412.us, !llvm.loop !33

.preheader.us.us:                                 ; preds = %.preheader412.us, %113
  %.1302679.us.us = phi i32 [ %114, %113 ], [ 0, %.preheader412.us ]
  %.2305678.us.us = phi double [ %212, %113 ], [ %.1304771.us, %.preheader412.us ]
  %112 = fdiv double %44, %.2305678.us.us
  br label %115

113:                                              ; preds = %._crit_edge.us.us
  %114 = add nuw nsw i32 %.1302679.us.us, 1
  %exitcond831.not = icmp eq i32 %114, %73
  br i1 %exitcond831.not, label %._crit_edge680.us, label %.preheader.us.us, !llvm.loop !30

115:                                              ; preds = %186, %.preheader.us.us
  %indvars.iv = phi i64 [ %indvars.iv.next, %186 ], [ 0, %.preheader.us.us ]
  %.0292673.us.us = phi double [ %.1293.us.us, %186 ], [ 0.000000e+00, %.preheader.us.us ]
  %.0298670.us.us = phi double [ %.1299.us.us, %186 ], [ 0.000000e+00, %.preheader.us.us ]
  %116 = phi <2 x double> [ %187, %186 ], [ zeroinitializer, %.preheader.us.us ]
  %117 = load ptr, ptr %56, align 8, !tbaa !15
  %118 = getelementptr inbounds %class.LayerApex, ptr %117, i64 %indvars.iv
  %119 = call noundef zeroext i1 @_ZNK9LayerApex9freeAtPrsEd(ptr noundef nonnull align 8 dereferenceable(144) %118, double noundef %112)
  br i1 %119, label %120, label %186

120:                                              ; preds = %115
  %121 = load ptr, ptr %56, align 8, !tbaa !15
  %122 = getelementptr inbounds %class.LayerApex, ptr %121, i64 %indvars.iv
  %123 = call noundef zeroext i1 @_ZNK9LayerApex13forcedSnapOffEd(ptr noundef nonnull align 8 dereferenceable(144) %122, double noundef %112)
  br i1 %123, label %186, label %124

124:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #10
  %125 = load double, ptr %75, align 8, !tbaa !32
  store double %125, ptr %2, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  %126 = load ptr, ptr %56, align 8, !tbaa !15
  %127 = getelementptr inbounds %class.LayerApex, ptr %126, i64 %indvars.iv
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %indvars.iv) #10
  call void @_ZNK9LayerApex21getCAApexDistUntrapedERdS0_RKdddb(ptr noundef nonnull align 8 dereferenceable(144) %127, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %128, double noundef %112, double noundef %44, i1 noundef zeroext true)
  %129 = load double, ptr %3, align 8, !tbaa !34
  %130 = fcmp ule double %129, 0.000000e+00
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  br i1 %130, label %132, label %131

131:                                              ; preds = %124
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  br label %.critedge369.us.us

132:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %133 unwind label %.split688.us.split.us

133:                                              ; preds = %132
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(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 @.str.1)
          to label %134 unwind label %.split691.us.split.us

134:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @__FUNCTION__._ZNK7Polygon23Pc_pistonType_DrainHingEv, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %135 unwind label %.split694.us.split.us

135:                                              ; preds = %134
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %136 unwind label %.split697.us.split.us

136:                                              ; preds = %135
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.2)
          to label %137 unwind label %.split700.us.split.us

137:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %138 unwind label %.split703.us.split.us

138:                                              ; preds = %137
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %139 unwind label %.split706.us.split.us

139:                                              ; preds = %138
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.4)
          to label %140 unwind label %.split709.us.split.us

140:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #10
  store i32 305, ptr %17, align 4, !tbaa !27
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %141 unwind label %.split712.us.split.us

141:                                              ; preds = %140
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %142 unwind label %.split715.us.split.us

142:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %143 unwind label %.split718.us.split.us

143:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %144 unwind label %.split721.us.split.us

144:                                              ; preds = %143
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %145 unwind label %.split724.us.split.us

145:                                              ; preds = %144
  %146 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %4, ptr noundef nonnull %18, i32 noundef 0)
          to label %.critedge348.us.us unwind label %.split727.us.split.us

.critedge348.us.us:                               ; preds = %145
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #10
  %.pre836 = load double, ptr %3, align 8, !tbaa !34
  br label %.critedge369.us.us

.critedge369.us.us:                               ; preds = %.critedge348.us.us, %131
  %147 = phi double [ %.pre836, %.critedge348.us.us ], [ %129, %131 ]
  %148 = fneg double %147
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %indvars.iv) #10
  %150 = load double, ptr %149, align 8, !tbaa !34
  %151 = call double @sin(double noundef %150) #10
  %152 = fmul double %151, %148
  %153 = fdiv double %152, %.2305678.us.us
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #10
  %154 = call double @llvm.fabs.f64(double %153)
  %or.cond.us.us = fcmp ugt double %154, 1.000000e+00
  br i1 %or.cond.us.us, label %156, label %155

155:                                              ; preds = %.critedge369.us.us
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #10
  br label %.critedge405.us.us

156:                                              ; preds = %.critedge369.us.us
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %157 unwind label %.split730.us.split.us

157:                                              ; preds = %156
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.1)
          to label %158 unwind label %.split733.us.split.us

158:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @__FUNCTION__._ZNK7Polygon23Pc_pistonType_DrainHingEv, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %159 unwind label %.split736.us.split.us

159:                                              ; preds = %158
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %160 unwind label %.split739.us.split.us

160:                                              ; preds = %159
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.2)
          to label %161 unwind label %.split742.us.split.us

161:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %162 unwind label %.split745.us.split.us

162:                                              ; preds = %161
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %163 unwind label %.split748.us.split.us

163:                                              ; preds = %162
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.4)
          to label %164 unwind label %.split751.us.split.us

164:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #10
  store i32 308, ptr %36, align 4, !tbaa !27
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %165 unwind label %.split754.us.split.us

165:                                              ; preds = %164
  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) %35)
          to label %166 unwind label %.split757.us.split.us

166:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %167 unwind label %.split760.us.split.us

167:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %168 unwind label %.split763.us.split.us

168:                                              ; preds = %167
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %169 unwind label %.split766.us.split.us

169:                                              ; preds = %168
  %170 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %23, ptr noundef nonnull %37, i32 noundef 0)
          to label %.critedge384.us.us unwind label %.split769.us.split.us

.critedge384.us.us:                               ; preds = %169
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  br label %.critedge405.us.us

.critedge405.us.us:                               ; preds = %.critedge384.us.us, %155
  %171 = load double, ptr %3, align 8, !tbaa !34
  %172 = load double, ptr %2, align 8, !tbaa !34
  %173 = call double @cos(double noundef %172) #10
  %174 = call double @llvm.fmuladd.f64(double %171, double %173, double %.0298670.us.us)
  %175 = load double, ptr %2, align 8, !tbaa !34
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %indvars.iv) #10
  %177 = load double, ptr %176, align 8, !tbaa !34
  %178 = fsub double %175, %177
  %179 = fsub double %178, %77
  %180 = call double @asin(double noundef %153) #10
  %181 = insertelement <2 x double> poison, double %179, i64 0
  %182 = insertelement <2 x double> %181, double %180, i64 1
  %183 = fadd <2 x double> %116, %182
  %184 = load double, ptr %3, align 8, !tbaa !34
  %185 = fadd double %.0292673.us.us, %184
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #10
  br label %186

186:                                              ; preds = %.critedge405.us.us, %120, %115
  %.1299.us.us = phi double [ %.0298670.us.us, %120 ], [ %174, %.critedge405.us.us ], [ %.0298670.us.us, %115 ]
  %.1293.us.us = phi double [ %.0292673.us.us, %120 ], [ %185, %.critedge405.us.us ], [ %.0292673.us.us, %115 ]
  %187 = phi <2 x double> [ %116, %120 ], [ %183, %.critedge405.us.us ], [ %116, %115 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond830.not = icmp eq i64 %indvars.iv.next, %indvars.iv832
  br i1 %exitcond830.not, label %._crit_edge.us.us, label %115, !llvm.loop !35

._crit_edge.us.us:                                ; preds = %186
  %188 = load double, ptr %78, align 8, !tbaa !28
  %189 = fmul double %188, %188
  %190 = load double, ptr %79, align 8, !tbaa !29
  %191 = fmul double %190, 4.000000e+00
  %192 = fdiv double %189, %191
  %193 = fneg double %.2305678.us.us
  %194 = call double @llvm.fmuladd.f64(double %193, double %.1299.us.us, double %192)
  %195 = insertelement <2 x double> poison, double %.2305678.us.us, i64 0
  %196 = shufflevector <2 x double> %195, <2 x double> poison, <2 x i32> zeroinitializer
  %197 = insertelement <2 x double> %196, double 2.000000e+00, i64 1
  %198 = fmul <2 x double> %196, %197
  %199 = load double, ptr %75, align 8, !tbaa !32
  %200 = call double @cos(double noundef %199) #10
  %201 = load double, ptr %78, align 8, !tbaa !28
  %202 = load double, ptr %79, align 8, !tbaa !29
  %203 = fmul double %202, 2.000000e+00
  %204 = fdiv double %201, %203
  %205 = call double @llvm.fmuladd.f64(double %.1293.us.us, double -2.000000e+00, double %204)
  %206 = fmul double %200, %205
  %207 = insertelement <2 x double> poison, double %194, i64 0
  %208 = insertelement <2 x double> %207, double %206, i64 1
  %209 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %198, <2 x double> %187, <2 x double> %208)
  %210 = extractelement <2 x double> %209, i64 0
  %211 = extractelement <2 x double> %209, i64 1
  %212 = fdiv double %210, %211
  %213 = fsub double %212, %.2305678.us.us
  %214 = fdiv double %213, %.2305678.us.us
  %215 = call double @llvm.fabs.f64(double %214)
  %216 = fcmp uge double %215, %80
  br i1 %216, label %113, label %.split.us

.split688.us.split.us:                            ; preds = %132
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %257

.split691.us.split.us:                            ; preds = %133
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %256

.split694.us.split.us:                            ; preds = %134
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %255

.split697.us.split.us:                            ; preds = %135
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %254

.split700.us.split.us:                            ; preds = %136
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %253

.split703.us.split.us:                            ; preds = %137
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %252

.split706.us.split.us:                            ; preds = %138
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %251

.split709.us.split.us:                            ; preds = %139
  %224 = landingpad { ptr, i32 }
          cleanup
  br label %250

.split712.us.split.us:                            ; preds = %140
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %249

.split715.us.split.us:                            ; preds = %141
  %226 = landingpad { ptr, i32 }
          cleanup
  br label %248

.split718.us.split.us:                            ; preds = %142
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %247

.split721.us.split.us:                            ; preds = %143
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %246

.split724.us.split.us:                            ; preds = %144
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %245

.split727.us.split.us:                            ; preds = %145
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  br label %245

.split730.us.split.us:                            ; preds = %156
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %270

.split733.us.split.us:                            ; preds = %157
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %269

.split736.us.split.us:                            ; preds = %158
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %268

.split739.us.split.us:                            ; preds = %159
  %234 = landingpad { ptr, i32 }
          cleanup
  br label %267

.split742.us.split.us:                            ; preds = %160
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %266

.split745.us.split.us:                            ; preds = %161
  %236 = landingpad { ptr, i32 }
          cleanup
  br label %265

.split748.us.split.us:                            ; preds = %162
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %264

.split751.us.split.us:                            ; preds = %163
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %263

.split754.us.split.us:                            ; preds = %164
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %262

.split757.us.split.us:                            ; preds = %165
  %240 = landingpad { ptr, i32 }
          cleanup
  br label %261

.split760.us.split.us:                            ; preds = %166
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %260

.split763.us.split.us:                            ; preds = %167
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %259

.split766.us.split.us:                            ; preds = %168
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %258

.split769.us.split.us:                            ; preds = %169
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  br label %258

245:                                              ; preds = %.split724.us.split.us, %.split727.us.split.us
  %.pn307 = phi { ptr, i32 } [ %230, %.split727.us.split.us ], [ %229, %.split724.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  br label %246

246:                                              ; preds = %.split721.us.split.us, %245
  %.pn307.pn = phi { ptr, i32 } [ %.pn307, %245 ], [ %228, %.split721.us.split.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  br label %247

247:                                              ; preds = %.split718.us.split.us, %246
  %.pn307.pn.pn = phi { ptr, i32 } [ %.pn307.pn, %246 ], [ %227, %.split718.us.split.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #10
  br label %248

248:                                              ; preds = %.split715.us.split.us, %247
  %.pn307.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn, %247 ], [ %226, %.split715.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  br label %249

249:                                              ; preds = %248, %.split712.us.split.us
  %.pn307.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn, %248 ], [ %225, %.split712.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #10
  br label %250

250:                                              ; preds = %.split709.us.split.us, %249
  %.pn307.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn.pn, %249 ], [ %224, %.split709.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  br label %251

251:                                              ; preds = %.split706.us.split.us, %250
  %.pn307.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn.pn.pn, %250 ], [ %223, %.split706.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  br label %252

252:                                              ; preds = %.split703.us.split.us, %251
  %.pn307.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn.pn.pn.pn, %251 ], [ %222, %.split703.us.split.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #10
  br label %253

253:                                              ; preds = %.split700.us.split.us, %252
  %.pn307.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn.pn.pn.pn.pn, %252 ], [ %221, %.split700.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  br label %254

254:                                              ; preds = %.split697.us.split.us, %253
  %.pn307.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn.pn.pn.pn.pn.pn, %253 ], [ %220, %.split697.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  br label %255

255:                                              ; preds = %.split694.us.split.us, %254
  %.pn307.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn.pn.pn.pn.pn.pn.pn, %254 ], [ %219, %.split694.us.split.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #10
  br label %256

256:                                              ; preds = %.split691.us.split.us, %255
  %.pn307.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %255 ], [ %218, %.split691.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  br label %257

257:                                              ; preds = %.split688.us.split.us, %256
  %.pn307.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %256 ], [ %217, %.split688.us.split.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #10
  br label %271

258:                                              ; preds = %.split766.us.split.us, %.split769.us.split.us
  %.pn321 = phi { ptr, i32 } [ %244, %.split769.us.split.us ], [ %243, %.split766.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #10
  br label %259

259:                                              ; preds = %.split763.us.split.us, %258
  %.pn321.pn = phi { ptr, i32 } [ %.pn321, %258 ], [ %242, %.split763.us.split.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #10
  br label %260

260:                                              ; preds = %.split760.us.split.us, %259
  %.pn321.pn.pn = phi { ptr, i32 } [ %.pn321.pn, %259 ], [ %241, %.split760.us.split.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  br label %261

261:                                              ; preds = %.split757.us.split.us, %260
  %.pn321.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn, %260 ], [ %240, %.split757.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #10
  br label %262

262:                                              ; preds = %261, %.split754.us.split.us
  %.pn321.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn, %261 ], [ %239, %.split754.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  br label %263

263:                                              ; preds = %.split751.us.split.us, %262
  %.pn321.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn, %262 ], [ %238, %.split751.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #10
  br label %264

264:                                              ; preds = %.split748.us.split.us, %263
  %.pn321.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn, %263 ], [ %237, %.split748.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  br label %265

265:                                              ; preds = %.split745.us.split.us, %264
  %.pn321.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn, %264 ], [ %236, %.split745.us.split.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  br label %266

266:                                              ; preds = %.split742.us.split.us, %265
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn, %265 ], [ %235, %.split742.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  br label %267

267:                                              ; preds = %.split739.us.split.us, %266
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn.pn, %266 ], [ %234, %.split739.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  br label %268

268:                                              ; preds = %.split736.us.split.us, %267
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn, %267 ], [ %233, %.split736.us.split.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  br label %269

269:                                              ; preds = %.split733.us.split.us, %268
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %268 ], [ %232, %.split733.us.split.us ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  br label %270

270:                                              ; preds = %.split730.us.split.us, %269
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %269 ], [ %231, %.split730.us.split.us ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  br label %271

271:                                              ; preds = %257, %270
  %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %270 ], [ %.pn307.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %257 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #10
  resume { ptr, i32 } %.pn321.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

._crit_edge:                                      ; preds = %._crit_edge680.us, %.preheader412.lr.ph, %69
  %.0301.lcssa = phi i32 [ 0, %69 ], [ 0, %.preheader412.lr.ph ], [ %73, %._crit_edge680.us ]
  %.0225.lcssa = phi double [ undef, %69 ], [ undef, %.preheader412.lr.ph ], [ %.us-phi686.us, %._crit_edge680.us ]
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.20)
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %272, ptr noundef nonnull @.str.21)
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef nonnull @.str.22)
  %275 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %274, double noundef %.0225.lcssa)
  %276 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %275, ptr noundef nonnull @.str.23)
  %277 = getelementptr inbounds i8, ptr %0, i64 176
  %278 = load double, ptr %277, align 8, !tbaa !32
  %279 = fmul double %278, 1.800000e+02
  %280 = fdiv double %279, %.pre837
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %276, double noundef %280)
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef nonnull @.str.24)
  %283 = getelementptr inbounds i8, ptr %0, i64 40
  %284 = load double, ptr %283, align 8, !tbaa !28
  %285 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %282, double noundef %284)
  %286 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull @.str.25)
  %287 = getelementptr inbounds i8, ptr %0, i64 152
  %288 = load double, ptr %287, align 8, !tbaa !29
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %286, double noundef %288)
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef nonnull @.str.26)
  %291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %290, i32 noundef %.0301.lcssa)
  %292 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @exit(i32 noundef -1) #11
  unreachable

.split.us:                                        ; preds = %._crit_edge.us.us, %.preheader.us776
  %.us-phi = phi double [ %107, %.preheader.us776 ], [ %212, %._crit_edge.us.us ]
  %293 = load ptr, ptr %42, align 8, !tbaa !5
  %294 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %293)
  %295 = fdiv double %294, %.us-phi
  ret double %295
}

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8), double noundef) local_unnamed_addr #3 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 zeroext i1 @_ZNK9LayerApex13forcedSnapOffEd(ptr noundef nonnull align 8 dereferenceable(144), double noundef) local_unnamed_addr #6 align 2

declare void @_ZNK9LayerApex21getCAApexDistUntrapedERdS0_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 nofree nounwind willreturn memory(write)
declare double @asin(double noundef) local_unnamed_addr #4

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #0

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #8

; 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 speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #9

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


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