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

; 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.CornerApex = type { %class.Apex, ptr, double, double, double, ptr }
%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 }
%class.LayerApex = type { %class.Apex, i32, ptr, double, ptr, 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
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@__FUNCTION__._ZN7Polygon17finitOilInjectionEd = external hidden unnamed_addr constant [18 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [85 x i8], align 1

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

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

; 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)) #1

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

; 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) #1

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 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 #0 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7Polygon17finitOilInjectionEd(ptr noundef nonnull align 8 dereferenceable(248) %0, double noundef %1) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca i1, align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca i1, align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca i1, align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca i1, align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca i1, align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca i1, align 1
  %20 = alloca %"class.std::allocator.2", align 1
  %21 = alloca i1, align 1
  %22 = alloca i1, align 1
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i1, align 1
  %26 = alloca i1, align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca i1, align 1
  %29 = alloca %"class.std::allocator.2", align 1
  %30 = alloca i1, align 1
  %31 = alloca i1, align 1
  %32 = alloca i1, align 1
  %33 = alloca i1, align 1
  %34 = alloca i1, align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca i1, align 1
  %37 = alloca %"class.std::allocator.2", align 1
  %38 = alloca i1, align 1
  %39 = alloca i1, align 1
  %40 = alloca i1, align 1
  %41 = alloca i1, align 1
  %42 = alloca i1, align 1
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca i1, align 1
  %45 = alloca i32, align 4
  %46 = alloca i1, align 1
  %47 = alloca i1, align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca i1, align 1
  %51 = alloca %"class.std::allocator.2", align 1
  %52 = alloca i1, align 1
  %53 = alloca i1, align 1
  %54 = alloca i1, align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca i1, align 1
  %57 = alloca %"class.std::allocator.2", align 1
  %58 = alloca i1, align 1
  %59 = alloca i1, align 1
  %60 = alloca i1, align 1
  %61 = alloca i1, align 1
  store ptr %0, ptr %3, align 8, !tbaa !5
  store double %1, ptr %4, align 8, !tbaa !9
  %62 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #6
  %63 = getelementptr inbounds %class.ElemModel, ptr %62, i32 0, i32 4
  %64 = load ptr, ptr %63, align 8, !tbaa !11
  %65 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %64)
  store double %65, ptr %5, align 8, !tbaa !9
  %66 = getelementptr inbounds %class.ElemModel, ptr %62, i32 0, i32 3
  %67 = load ptr, ptr %66, align 8, !tbaa !16
  call void @_ZN4Apex16setInOilFloodVecEb(ptr noundef nonnull align 8 dereferenceable(104) %67, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  store i32 0, ptr %6, align 4, !tbaa !17
  br label %68

68:                                               ; preds = %452, %2
  %69 = load i32, ptr %6, align 4, !tbaa !17
  %70 = getelementptr inbounds %class.Polygon, ptr %62, i32 0, i32 1
  %71 = load i32, ptr %70, align 8, !tbaa !18
  %72 = icmp slt i32 %69, %71
  br i1 %72, label %74, label %73

73:                                               ; preds = %68
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  br label %455

74:                                               ; preds = %68
  %75 = getelementptr inbounds %class.Polygon, ptr %62, i32 0, i32 3
  %76 = load ptr, ptr %75, align 8, !tbaa !26
  %77 = load i32, ptr %6, align 4, !tbaa !17
  %78 = sext i32 %77 to i64
  %79 = getelementptr inbounds %class.CornerApex, ptr %76, i64 %78
  %80 = load double, ptr %4, align 8, !tbaa !9
  %81 = getelementptr inbounds %class.VoidElem, ptr %62, i32 0, i32 4
  %82 = load double, ptr %81, align 8, !tbaa !27
  %83 = getelementptr inbounds %class.VoidElem, ptr %62, i32 0, i32 3
  %84 = load double, ptr %83, align 8, !tbaa !28
  %85 = getelementptr inbounds %class.Polygon, ptr %62, i32 0, i32 2
  %86 = load i32, ptr %6, align 4, !tbaa !17
  %87 = sext i32 %86 to i64
  %88 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef %87) #6
  %89 = load double, ptr %88, align 8, !tbaa !9
  %90 = load double, ptr %5, align 8, !tbaa !9
  call void @_ZN10CornerApex15finitCornerApexEdddddbb(ptr noundef nonnull align 8 dereferenceable(144) %79, double noundef %80, double noundef %82, double noundef %84, double noundef %89, double noundef %90, i1 noundef zeroext false, i1 noundef zeroext false)
  %91 = getelementptr inbounds %class.ElemModel, ptr %62, i32 0, i32 6
  %92 = load ptr, ptr %91, align 8, !tbaa !29
  %93 = getelementptr inbounds %class.ElemModel, ptr %62, i32 0, i32 4
  %94 = load ptr, ptr %93, align 8, !tbaa !11
  %95 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %94)
  %96 = icmp eq ptr %92, %95
  br i1 %96, label %97, label %451

97:                                               ; preds = %74
  %98 = getelementptr inbounds %class.Polygon, ptr %62, i32 0, i32 4
  %99 = load ptr, ptr %98, align 8, !tbaa !30
  %100 = load i32, ptr %6, align 4, !tbaa !17
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds %class.LayerApex, ptr %99, i64 %101
  %103 = call noundef zeroext i1 @_ZNK4Apex6existsEv(ptr noundef nonnull align 8 dereferenceable(104) %102)
  br i1 %103, label %104, label %451

104:                                              ; preds = %97
  %105 = getelementptr inbounds %class.Polygon, ptr %62, i32 0, i32 4
  %106 = load ptr, ptr %105, align 8, !tbaa !30
  %107 = load i32, ptr %6, align 4, !tbaa !17
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds %class.LayerApex, ptr %106, i64 %108
  %110 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9LayerApex13trappedOLayerEv(ptr noundef nonnull align 8 dereferenceable(144) %109)
  %111 = getelementptr inbounds %"struct.std::pair.0", ptr %110, i32 0, i32 0
  %112 = load i32, ptr %111, align 8, !tbaa !31
  %113 = icmp slt i32 %112, 0
  br i1 %113, label %114, label %451

114:                                              ; preds = %104
  %115 = getelementptr inbounds %class.Polygon, ptr %62, i32 0, i32 4
  %116 = load ptr, ptr %115, align 8, !tbaa !30
  %117 = load i32, ptr %6, align 4, !tbaa !17
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds %class.LayerApex, ptr %116, i64 %118
  %120 = load double, ptr %4, align 8, !tbaa !9
  %121 = getelementptr inbounds %class.VoidElem, ptr %62, i32 0, i32 4
  %122 = load double, ptr %121, align 8, !tbaa !27
  %123 = getelementptr inbounds %class.VoidElem, ptr %62, i32 0, i32 3
  %124 = load double, ptr %123, align 8, !tbaa !28
  %125 = getelementptr inbounds %class.Polygon, ptr %62, i32 0, i32 2
  %126 = load i32, ptr %6, align 4, !tbaa !17
  %127 = sext i32 %126 to i64
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef %127) #6
  %129 = load double, ptr %128, align 8, !tbaa !9
  %130 = load double, ptr %5, align 8, !tbaa !9
  %131 = call noundef zeroext i1 @_ZN9LayerApex14finitLayerApexEdddddbb(ptr noundef nonnull align 8 dereferenceable(144) %119, double noundef %120, double noundef %122, double noundef %124, double noundef %129, double noundef %130, i1 noundef zeroext true, i1 noundef zeroext false)
  br i1 %131, label %136, label %132

132:                                              ; preds = %114
  %133 = load i32, ptr %6, align 4, !tbaa !17
  %134 = call noundef double @_ZN7Polygon25Pc_pin_disconnectOilLayerEi(ptr noundef nonnull align 8 dereferenceable(248) %62, i32 noundef %133)
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.10)
  br label %450

136:                                              ; preds = %114
  %137 = getelementptr inbounds %class.Polygon, ptr %62, i32 0, i32 4
  %138 = load ptr, ptr %137, align 8, !tbaa !30
  %139 = load i32, ptr %6, align 4, !tbaa !17
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds %class.LayerApex, ptr %138, i64 %140
  %142 = call noundef double @_ZNK9LayerApex14pinnedApexDistEv(ptr noundef nonnull align 8 dereferenceable(144) %141)
  %143 = getelementptr inbounds %class.ElemModel, ptr %62, i32 0, i32 5
  %144 = load double, ptr %143, align 8, !tbaa !33
  %145 = getelementptr inbounds %class.Polygon, ptr %62, i32 0, i32 2
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %145, i64 noundef 0) #6
  %147 = load double, ptr %146, align 8, !tbaa !9
  %148 = call double @tan(double noundef %147) #6
  %149 = fdiv double 1.000000e+00, %148
  %150 = getelementptr inbounds %class.Polygon, ptr %62, i32 0, i32 2
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef 1) #6
  %152 = load double, ptr %151, align 8, !tbaa !9
  %153 = call double @tan(double noundef %152) #6
  %154 = fdiv double 1.000000e+00, %153
  %155 = fadd double %149, %154
  %156 = fmul double %144, %155
  %157 = fcmp olt double %142, %156
  store i1 false, ptr %9, align 1
  store i1 false, ptr %11, align 1
  store i1 false, ptr %13, align 1
  store i1 false, ptr %15, align 1
  store i1 false, ptr %17, align 1
  store i1 false, ptr %19, align 1
  store i1 false, ptr %21, align 1
  store i1 false, ptr %22, align 1
  store i1 false, ptr %25, 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 %31, align 1
  store i1 false, ptr %32, align 1
  store i1 false, ptr %33, align 1
  store i1 false, ptr %34, align 1
  store i1 false, ptr %36, align 1
  store i1 false, ptr %38, align 1
  store i1 false, ptr %39, align 1
  store i1 false, ptr %40, align 1
  store i1 false, ptr %41, align 1
  store i1 false, ptr %42, align 1
  store i1 false, ptr %44, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  store i1 false, ptr %46, align 1
  store i1 false, ptr %47, align 1
  store i1 false, ptr %50, align 1
  store i1 false, ptr %52, align 1
  store i1 false, ptr %53, align 1
  store i1 false, ptr %54, align 1
  store i1 false, ptr %56, align 1
  store i1 false, ptr %58, align 1
  store i1 false, ptr %59, align 1
  store i1 false, ptr %60, align 1
  store i1 false, ptr %61, align 1
  br i1 %157, label %174, label %158

158:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #6
  store i1 true, ptr %9, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #6
  store i1 true, ptr %11, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #6
  store i1 true, ptr %13, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #6
  store i1 true, ptr %15, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #6
  store i1 true, ptr %17, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #6
  store i1 true, ptr %19, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #6
  store i1 true, ptr %21, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  store i1 true, ptr %22, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %159 unwind label %279

159:                                              ; preds = %158
  store i1 true, ptr %25, 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 %16, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.1)
          to label %160 unwind label %283

160:                                              ; preds = %159
  store i1 true, ptr %26, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #6
  store i1 true, ptr %28, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #6
  store i1 true, ptr %30, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  store i1 true, ptr %31, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @__FUNCTION__._ZN7Polygon17finitOilInjectionEd, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %161 unwind label %287

161:                                              ; preds = %160
  store i1 true, ptr %32, 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 %14, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %162 unwind label %291

162:                                              ; preds = %161
  store i1 true, ptr %33, 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 %12, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str.2)
          to label %163 unwind label %295

163:                                              ; preds = %162
  store i1 true, ptr %34, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #6
  store i1 true, ptr %36, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #6
  store i1 true, ptr %38, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  store i1 true, ptr %39, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %164 unwind label %299

164:                                              ; preds = %163
  store i1 true, ptr %40, 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 %10, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %165 unwind label %303

165:                                              ; preds = %164
  store i1 true, ptr %41, 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 %8, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.4)
          to label %166 unwind label %307

166:                                              ; preds = %165
  store i1 true, ptr %42, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #6
  store i1 true, ptr %44, align 1
  store i32 107, ptr %45, align 4, !tbaa !17
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 4 dereferenceable(4) %45)
          to label %167 unwind label %311

167:                                              ; preds = %166
  store i1 true, ptr %46, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %168 unwind label %315

168:                                              ; preds = %167
  store i1 true, ptr %47, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #6
  store i1 true, ptr %50, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #6
  store i1 true, ptr %52, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  store i1 true, ptr %53, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %169 unwind label %319

169:                                              ; preds = %168
  store i1 true, ptr %54, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #6
  store i1 true, ptr %56, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #6
  store i1 true, ptr %58, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  store i1 true, ptr %59, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %170 unwind label %323

170:                                              ; preds = %169
  store i1 true, ptr %60, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %171 unwind label %327

171:                                              ; preds = %170
  store i1 true, ptr %61, align 1
  %172 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %7, ptr noundef %48, i32 noundef 0)
          to label %173 unwind label %331

173:                                              ; preds = %171
  br label %174

174:                                              ; preds = %173, %136
  %175 = phi i1 [ true, %136 ], [ %172, %173 ]
  %176 = xor i1 %175, true
  %177 = load i1, ptr %61, align 1
  br i1 %177, label %178, label %179

178:                                              ; preds = %174
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  br label %179

179:                                              ; preds = %178, %174
  %180 = load i1, ptr %60, align 1
  br i1 %180, label %181, label %182

181:                                              ; preds = %179
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %182

182:                                              ; preds = %181, %179
  %183 = load i1, ptr %59, align 1
  br i1 %183, label %184, label %185

184:                                              ; preds = %182
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  br label %185

185:                                              ; preds = %184, %182
  %186 = load i1, ptr %58, align 1
  br i1 %186, label %187, label %188

187:                                              ; preds = %185
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #6
  br label %188

188:                                              ; preds = %187, %185
  %189 = load i1, ptr %56, align 1
  br i1 %189, label %190, label %191

190:                                              ; preds = %188
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #6
  br label %191

191:                                              ; preds = %190, %188
  %192 = load i1, ptr %54, align 1
  br i1 %192, label %193, label %194

193:                                              ; preds = %191
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  br label %194

194:                                              ; preds = %193, %191
  %195 = load i1, ptr %53, align 1
  br i1 %195, label %196, label %197

196:                                              ; preds = %194
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  br label %197

197:                                              ; preds = %196, %194
  %198 = load i1, ptr %52, align 1
  br i1 %198, label %199, label %200

199:                                              ; preds = %197
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  br label %200

200:                                              ; preds = %199, %197
  %201 = load i1, ptr %50, align 1
  br i1 %201, label %202, label %203

202:                                              ; preds = %200
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #6
  br label %203

203:                                              ; preds = %202, %200
  %204 = load i1, ptr %47, align 1
  br i1 %204, label %205, label %206

205:                                              ; preds = %203
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  br label %206

206:                                              ; preds = %205, %203
  %207 = load i1, ptr %46, align 1
  br i1 %207, label %208, label %209

208:                                              ; preds = %206
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  br label %209

209:                                              ; preds = %208, %206
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  %210 = load i1, ptr %44, align 1
  br i1 %210, label %211, label %212

211:                                              ; preds = %209
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #6
  br label %212

212:                                              ; preds = %211, %209
  %213 = load i1, ptr %42, align 1
  br i1 %213, label %214, label %215

214:                                              ; preds = %212
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %215

215:                                              ; preds = %214, %212
  %216 = load i1, ptr %41, align 1
  br i1 %216, label %217, label %218

217:                                              ; preds = %215
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %218

218:                                              ; preds = %217, %215
  %219 = load i1, ptr %40, align 1
  br i1 %219, label %220, label %221

220:                                              ; preds = %218
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  br label %221

221:                                              ; preds = %220, %218
  %222 = load i1, ptr %39, align 1
  br i1 %222, label %223, label %224

223:                                              ; preds = %221
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  br label %224

224:                                              ; preds = %223, %221
  %225 = load i1, ptr %38, align 1
  br i1 %225, label %226, label %227

226:                                              ; preds = %224
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  br label %227

227:                                              ; preds = %226, %224
  %228 = load i1, ptr %36, align 1
  br i1 %228, label %229, label %230

229:                                              ; preds = %227
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #6
  br label %230

230:                                              ; preds = %229, %227
  %231 = load i1, ptr %34, align 1
  br i1 %231, label %232, label %233

232:                                              ; preds = %230
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %233

233:                                              ; preds = %232, %230
  %234 = load i1, ptr %33, align 1
  br i1 %234, label %235, label %236

235:                                              ; preds = %233
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %236

236:                                              ; preds = %235, %233
  %237 = load i1, ptr %32, align 1
  br i1 %237, label %238, label %239

238:                                              ; preds = %236
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %239

239:                                              ; preds = %238, %236
  %240 = load i1, ptr %31, align 1
  br i1 %240, label %241, label %242

241:                                              ; preds = %239
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  br label %242

242:                                              ; preds = %241, %239
  %243 = load i1, ptr %30, align 1
  br i1 %243, label %244, label %245

244:                                              ; preds = %242
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  br label %245

245:                                              ; preds = %244, %242
  %246 = load i1, ptr %28, align 1
  br i1 %246, label %247, label %248

247:                                              ; preds = %245
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  br label %248

248:                                              ; preds = %247, %245
  %249 = load i1, ptr %26, align 1
  br i1 %249, label %250, label %251

250:                                              ; preds = %248
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %251

251:                                              ; preds = %250, %248
  %252 = load i1, ptr %25, align 1
  br i1 %252, label %253, label %254

253:                                              ; preds = %251
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %254

254:                                              ; preds = %253, %251
  %255 = load i1, ptr %22, align 1
  br i1 %255, label %256, label %257

256:                                              ; preds = %254
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  br label %257

257:                                              ; preds = %256, %254
  %258 = load i1, ptr %21, align 1
  br i1 %258, label %259, label %260

259:                                              ; preds = %257
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  br label %260

260:                                              ; preds = %259, %257
  %261 = load i1, ptr %19, align 1
  br i1 %261, label %262, label %263

262:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  br label %263

263:                                              ; preds = %262, %260
  %264 = load i1, ptr %17, align 1
  br i1 %264, label %265, label %266

265:                                              ; preds = %263
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %266

266:                                              ; preds = %265, %263
  %267 = load i1, ptr %15, align 1
  br i1 %267, label %268, label %269

268:                                              ; preds = %266
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #6
  br label %269

269:                                              ; preds = %268, %266
  %270 = load i1, ptr %13, align 1
  br i1 %270, label %271, label %272

271:                                              ; preds = %269
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #6
  br label %272

272:                                              ; preds = %271, %269
  %273 = load i1, ptr %11, align 1
  br i1 %273, label %274, label %275

274:                                              ; preds = %272
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #6
  br label %275

275:                                              ; preds = %274, %272
  %276 = load i1, ptr %9, align 1
  br i1 %276, label %277, label %278

277:                                              ; preds = %275
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #6
  br label %278

278:                                              ; preds = %277, %275
  br label %450

279:                                              ; preds = %158
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %23, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %24, align 4
  br label %425

283:                                              ; preds = %159
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %23, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %24, align 4
  br label %421

287:                                              ; preds = %160
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %23, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %24, align 4
  br label %408

291:                                              ; preds = %161
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %23, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %24, align 4
  br label %404

295:                                              ; preds = %162
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %23, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %24, align 4
  br label %400

299:                                              ; preds = %163
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %23, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %24, align 4
  br label %387

303:                                              ; preds = %164
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %23, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %24, align 4
  br label %383

307:                                              ; preds = %165
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %23, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %24, align 4
  br label %379

311:                                              ; preds = %166
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %23, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %24, align 4
  br label %372

315:                                              ; preds = %167
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %23, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %24, align 4
  br label %368

319:                                              ; preds = %168
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %23, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %24, align 4
  br label %355

323:                                              ; preds = %169
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %23, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %24, align 4
  br label %342

327:                                              ; preds = %170
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %23, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %24, align 4
  br label %338

331:                                              ; preds = %171
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %23, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %24, align 4
  %335 = load i1, ptr %61, align 1
  br i1 %335, label %336, label %337

336:                                              ; preds = %331
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  br label %337

337:                                              ; preds = %336, %331
  br label %338

338:                                              ; preds = %337, %327
  %339 = load i1, ptr %60, align 1
  br i1 %339, label %340, label %341

340:                                              ; preds = %338
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %341

341:                                              ; preds = %340, %338
  br label %342

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

344:                                              ; preds = %342
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  br label %345

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

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

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

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

351:                                              ; preds = %350, %348
  %352 = load i1, ptr %54, align 1
  br i1 %352, label %353, label %354

353:                                              ; preds = %351
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  br label %354

354:                                              ; preds = %353, %351
  br label %355

355:                                              ; preds = %354, %319
  %356 = load i1, ptr %53, align 1
  br i1 %356, label %357, label %358

357:                                              ; preds = %355
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  br label %358

358:                                              ; preds = %357, %355
  %359 = load i1, ptr %52, align 1
  br i1 %359, label %360, label %361

360:                                              ; preds = %358
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  br label %361

361:                                              ; preds = %360, %358
  %362 = load i1, ptr %50, align 1
  br i1 %362, label %363, label %364

363:                                              ; preds = %361
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #6
  br label %364

364:                                              ; preds = %363, %361
  %365 = load i1, ptr %47, align 1
  br i1 %365, label %366, label %367

366:                                              ; preds = %364
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  br label %367

367:                                              ; preds = %366, %364
  br label %368

368:                                              ; preds = %367, %315
  %369 = load i1, ptr %46, align 1
  br i1 %369, label %370, label %371

370:                                              ; preds = %368
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  br label %371

371:                                              ; preds = %370, %368
  br label %372

372:                                              ; preds = %371, %311
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  %373 = load i1, ptr %44, align 1
  br i1 %373, label %374, label %375

374:                                              ; preds = %372
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #6
  br label %375

375:                                              ; preds = %374, %372
  %376 = load i1, ptr %42, align 1
  br i1 %376, label %377, label %378

377:                                              ; preds = %375
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %378

378:                                              ; preds = %377, %375
  br label %379

379:                                              ; preds = %378, %307
  %380 = load i1, ptr %41, align 1
  br i1 %380, label %381, label %382

381:                                              ; preds = %379
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %382

382:                                              ; preds = %381, %379
  br label %383

383:                                              ; preds = %382, %303
  %384 = load i1, ptr %40, align 1
  br i1 %384, label %385, label %386

385:                                              ; preds = %383
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  br label %386

386:                                              ; preds = %385, %383
  br label %387

387:                                              ; preds = %386, %299
  %388 = load i1, ptr %39, align 1
  br i1 %388, label %389, label %390

389:                                              ; preds = %387
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  br label %390

390:                                              ; preds = %389, %387
  %391 = load i1, ptr %38, align 1
  br i1 %391, label %392, label %393

392:                                              ; preds = %390
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  br label %393

393:                                              ; preds = %392, %390
  %394 = load i1, ptr %36, align 1
  br i1 %394, label %395, label %396

395:                                              ; preds = %393
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #6
  br label %396

396:                                              ; preds = %395, %393
  %397 = load i1, ptr %34, align 1
  br i1 %397, label %398, label %399

398:                                              ; preds = %396
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %399

399:                                              ; preds = %398, %396
  br label %400

400:                                              ; preds = %399, %295
  %401 = load i1, ptr %33, align 1
  br i1 %401, label %402, label %403

402:                                              ; preds = %400
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %403

403:                                              ; preds = %402, %400
  br label %404

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

406:                                              ; preds = %404
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %407

407:                                              ; preds = %406, %404
  br label %408

408:                                              ; preds = %407, %287
  %409 = load i1, ptr %31, align 1
  br i1 %409, label %410, label %411

410:                                              ; preds = %408
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  br label %411

411:                                              ; preds = %410, %408
  %412 = load i1, ptr %30, align 1
  br i1 %412, label %413, label %414

413:                                              ; preds = %411
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  br label %414

414:                                              ; preds = %413, %411
  %415 = load i1, ptr %28, align 1
  br i1 %415, label %416, label %417

416:                                              ; preds = %414
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  br label %417

417:                                              ; preds = %416, %414
  %418 = load i1, ptr %26, align 1
  br i1 %418, label %419, label %420

419:                                              ; preds = %417
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %420

420:                                              ; preds = %419, %417
  br label %421

421:                                              ; preds = %420, %283
  %422 = load i1, ptr %25, align 1
  br i1 %422, label %423, label %424

423:                                              ; preds = %421
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %424

424:                                              ; preds = %423, %421
  br label %425

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

427:                                              ; preds = %425
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  br label %428

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

430:                                              ; preds = %428
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  br label %431

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

433:                                              ; preds = %431
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  br label %434

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

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

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

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

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

442:                                              ; preds = %440
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #6
  br label %443

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

445:                                              ; preds = %443
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #6
  br label %446

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

448:                                              ; preds = %446
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #6
  br label %449

449:                                              ; preds = %448, %446
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  br label %456

450:                                              ; preds = %278, %132
  br label %451

451:                                              ; preds = %450, %104, %97, %74
  br label %452

452:                                              ; preds = %451
  %453 = load i32, ptr %6, align 4, !tbaa !17
  %454 = add nsw i32 %453, 1
  store i32 %454, ptr %6, align 4, !tbaa !17
  br label %68, !llvm.loop !34

455:                                              ; preds = %73
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  ret void

456:                                              ; preds = %449
  %457 = load ptr, ptr %23, align 8
  %458 = load i32, ptr %24, align 4
  %459 = insertvalue { ptr, i32 } poison, ptr %457, 0
  %460 = insertvalue { ptr, i32 } %459, i32 %458, 1
  resume { ptr, i32 } %460
}

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

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

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

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

declare noundef zeroext i1 @_ZN9LayerApex14finitLayerApexEdddddbb(ptr noundef nonnull align 8 dereferenceable(144), double noundef, double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext, i1 noundef zeroext) #4

declare noundef double @_ZN7Polygon25Pc_pin_disconnectOilLayerEi(ptr noundef nonnull align 8 dereferenceable(248), i32 noundef) #4

; 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) #1

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

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

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

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

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

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


; 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.CornerApex = type { %class.Apex, ptr, double, double, double, ptr }
%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 }
%class.LayerApex = type { %class.Apex, i32, ptr, double, ptr, 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
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@__FUNCTION__._ZN7Polygon17finitOilInjectionEd = external hidden unnamed_addr constant [18 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [85 x i8], align 1

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

; 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 #1

; 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 #1

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

; Function Attrs: 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 #1

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 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 #0 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7Polygon17finitOilInjectionEd(ptr noundef nonnull align 8 dereferenceable(248) %0, double noundef %1) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", 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::allocator.2", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.2", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.2", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.2", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.2", align 1
  %22 = getelementptr inbounds i8, ptr %0, i64 32
  %23 = load ptr, ptr %22, align 8, !tbaa !5
  %24 = tail call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %23)
  %25 = getelementptr inbounds i8, ptr %0, i64 24
  %26 = load ptr, ptr %25, align 8, !tbaa !14
  tail call void @_ZN4Apex16setInOilFloodVecEb(ptr noundef nonnull align 8 dereferenceable(104) %26, i1 noundef zeroext false)
  %27 = getelementptr inbounds i8, ptr %0, i64 184
  %28 = load i32, ptr %27, align 8, !tbaa !15
  %29 = icmp sgt i32 %28, 0
  br i1 %29, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %2
  %30 = getelementptr inbounds i8, ptr %0, i64 216
  %31 = getelementptr inbounds i8, ptr %0, i64 176
  %32 = getelementptr inbounds i8, ptr %0, i64 168
  %33 = getelementptr inbounds i8, ptr %0, i64 192
  %34 = getelementptr inbounds i8, ptr %0, i64 48
  %35 = getelementptr inbounds i8, ptr %0, i64 224
  %36 = getelementptr inbounds i8, ptr %0, i64 40
  br label %37

._crit_edge:                                      ; preds = %.critedge178, %2
  ret void

37:                                               ; preds = %.lr.ph, %.critedge178
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %.critedge178 ]
  %38 = load ptr, ptr %30, align 8, !tbaa !23
  %39 = getelementptr inbounds %class.CornerApex, ptr %38, i64 %indvars.iv
  %40 = load double, ptr %31, align 8, !tbaa !24
  %41 = load double, ptr %32, align 8, !tbaa !25
  %42 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %indvars.iv) #6
  %43 = load double, ptr %42, align 8, !tbaa !26
  call void @_ZN10CornerApex15finitCornerApexEdddddbb(ptr noundef nonnull align 8 dereferenceable(144) %39, double noundef %1, double noundef %40, double noundef %41, double noundef %43, double noundef %24, i1 noundef zeroext false, i1 noundef zeroext false)
  %44 = load ptr, ptr %34, align 8, !tbaa !27
  %45 = load ptr, ptr %22, align 8, !tbaa !5
  %46 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %45)
  %47 = icmp eq ptr %44, %46
  br i1 %47, label %48, label %.critedge178

48:                                               ; preds = %37
  %49 = load ptr, ptr %35, align 8, !tbaa !28
  %50 = getelementptr inbounds %class.LayerApex, ptr %49, i64 %indvars.iv
  %51 = call noundef zeroext i1 @_ZNK4Apex6existsEv(ptr noundef nonnull align 8 dereferenceable(104) %50)
  br i1 %51, label %52, label %.critedge178

52:                                               ; preds = %48
  %53 = load ptr, ptr %35, align 8, !tbaa !28
  %54 = getelementptr inbounds %class.LayerApex, ptr %53, i64 %indvars.iv
  %55 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9LayerApex13trappedOLayerEv(ptr noundef nonnull align 8 dereferenceable(144) %54)
  %56 = load i32, ptr %55, align 8, !tbaa !29
  %57 = icmp slt i32 %56, 0
  br i1 %57, label %58, label %.critedge178

58:                                               ; preds = %52
  %59 = load ptr, ptr %35, align 8, !tbaa !28
  %60 = getelementptr inbounds %class.LayerApex, ptr %59, i64 %indvars.iv
  %61 = load double, ptr %31, align 8, !tbaa !24
  %62 = load double, ptr %32, align 8, !tbaa !25
  %63 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %indvars.iv) #6
  %64 = load double, ptr %63, align 8, !tbaa !26
  %65 = call noundef zeroext i1 @_ZN9LayerApex14finitLayerApexEdddddbb(ptr noundef nonnull align 8 dereferenceable(144) %60, double noundef %1, double noundef %61, double noundef %62, double noundef %64, double noundef %24, i1 noundef zeroext true, i1 noundef zeroext false)
  br i1 %65, label %70, label %66

66:                                               ; preds = %58
  %67 = trunc nuw nsw i64 %indvars.iv to i32
  %68 = call noundef double @_ZN7Polygon25Pc_pin_disconnectOilLayerEi(ptr noundef nonnull align 8 dereferenceable(248) %0, i32 noundef %67)
  %69 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.10)
  br label %.critedge178

70:                                               ; preds = %58
  %71 = load ptr, ptr %35, align 8, !tbaa !28
  %72 = getelementptr inbounds %class.LayerApex, ptr %71, i64 %indvars.iv
  %73 = call noundef double @_ZNK9LayerApex14pinnedApexDistEv(ptr noundef nonnull align 8 dereferenceable(144) %72)
  %74 = load double, ptr %36, align 8, !tbaa !31
  %75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef 0) #6
  %76 = load double, ptr %75, align 8, !tbaa !26
  %77 = call double @tan(double noundef %76) #6
  %78 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef 1) #6
  %79 = load double, ptr %78, align 8, !tbaa !26
  %80 = call double @tan(double noundef %79) #6
  %81 = insertelement <2 x double> poison, double %77, i64 0
  %82 = insertelement <2 x double> %81, double %80, i64 1
  %83 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %82
  %shift = shufflevector <2 x double> %83, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %84 = fadd <2 x double> %83, %shift
  %85 = extractelement <2 x double> %84, i64 0
  %86 = fmul double %74, %85
  %87 = fcmp uge double %73, %86
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  br i1 %87, label %88, label %103

88:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %89 unwind label %104

89:                                               ; preds = %88
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(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 @.str.1)
          to label %90 unwind label %106

90:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @__FUNCTION__._ZN7Polygon17finitOilInjectionEd, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %91 unwind label %108

91:                                               ; preds = %90
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 align 8 dereferenceable(32) %11)
          to label %92 unwind label %110

92:                                               ; preds = %91
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(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 @.str.2)
          to label %93 unwind label %112

93:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %94 unwind label %114

94:                                               ; preds = %93
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 align 8 dereferenceable(32) %13)
          to label %95 unwind label %116

95:                                               ; preds = %94
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(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 @.str.4)
          to label %96 unwind label %118

96:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #6
  store i32 107, ptr %16, align 4, !tbaa !32
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %97 unwind label %120

97:                                               ; preds = %96
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %3, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %98 unwind label %122

98:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %99 unwind label %124

99:                                               ; preds = %98
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %100 unwind label %126

100:                                              ; preds = %99
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %101 unwind label %128

101:                                              ; preds = %100
  %102 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %3, ptr noundef nonnull %17, i32 noundef 0)
          to label %.critedge157 unwind label %130

103:                                              ; preds = %70
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  br label %.critedge178

.critedge157:                                     ; preds = %101
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  br label %.critedge178

104:                                              ; preds = %88
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %144

106:                                              ; preds = %89
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %143

108:                                              ; preds = %90
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %142

110:                                              ; preds = %91
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %141

112:                                              ; preds = %92
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %140

114:                                              ; preds = %93
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %139

116:                                              ; preds = %94
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %138

118:                                              ; preds = %95
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %137

120:                                              ; preds = %96
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %136

122:                                              ; preds = %97
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %135

124:                                              ; preds = %98
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %134

126:                                              ; preds = %99
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %133

128:                                              ; preds = %100
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %132

130:                                              ; preds = %101
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  br label %132

132:                                              ; preds = %128, %130
  %.pn = phi { ptr, i32 } [ %131, %130 ], [ %129, %128 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %133

133:                                              ; preds = %126, %132
  %.pn.pn = phi { ptr, i32 } [ %.pn, %132 ], [ %127, %126 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %134

134:                                              ; preds = %124, %133
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %133 ], [ %125, %124 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  br label %135

135:                                              ; preds = %122, %134
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %134 ], [ %123, %122 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %136

136:                                              ; preds = %135, %120
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %135 ], [ %121, %120 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  br label %137

137:                                              ; preds = %118, %136
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %136 ], [ %119, %118 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %138

138:                                              ; preds = %116, %137
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %137 ], [ %117, %116 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %139

139:                                              ; preds = %114, %138
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %138 ], [ %115, %114 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  br label %140

140:                                              ; preds = %112, %139
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn, %139 ], [ %113, %112 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  br label %141

141:                                              ; preds = %110, %140
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %140 ], [ %111, %110 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %142

142:                                              ; preds = %108, %141
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %141 ], [ %109, %108 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %143

143:                                              ; preds = %106, %142
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %142 ], [ %107, %106 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %144

144:                                              ; preds = %104, %143
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %143 ], [ %105, %104 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

.critedge178:                                     ; preds = %103, %37, %48, %52, %.critedge157, %66
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %145 = load i32, ptr %27, align 8, !tbaa !15
  %146 = sext i32 %145 to i64
  %147 = icmp slt i64 %indvars.iv.next, %146
  br i1 %147, label %37, label %._crit_edge, !llvm.loop !33
}

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

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

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

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

declare noundef zeroext i1 @_ZN9LayerApex14finitLayerApexEdddddbb(ptr noundef nonnull align 8 dereferenceable(144), double noundef, double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #4

declare noundef double @_ZN7Polygon25Pc_pin_disconnectOilLayerEi(ptr noundef nonnull align 8 dereferenceable(248), i32 noundef) local_unnamed_addr #4

; 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 #1

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

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

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

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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, !12, i64 184}
!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 = !{!16, !10, i64 216}
!24 = !{!17, !7, i64 176}
!25 = !{!17, !7, i64 168}
!26 = !{!7, !7, i64 0}
!27 = !{!6, !10, i64 48}
!28 = !{!16, !10, i64 224}
!29 = !{!30, !12, i64 0}
!30 = !{!"_ZTSSt4pairIidE", !12, i64 0, !7, i64 8}
!31 = !{!6, !7, i64 40}
!32 = !{!12, !12, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass