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

; 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 }
%class.CornerApex = type { %class.Apex, ptr, double, double, double, ptr }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@__FUNCTION__._ZN6Circle16initOilInjectionEd = external hidden unnamed_addr constant [17 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
@.str.6 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [25 x i8], align 1
@_ZN9ElemModel2PIE = external constant double, align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.12 = external hidden unnamed_addr constant [5 x i8], align 1

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

; 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: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408)) #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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK4Apex15isInOilFloodVecEv(ptr noundef nonnull align 8 dereferenceable(104)) #0 align 2

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

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

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

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

; 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

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

; 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 uwtable
define dso_local void @_ZN7Polygon16initOilInjectionEd(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 %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca i1, align 1
  %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::allocator.2", align 1
  %19 = alloca i1, align 1
  %20 = alloca i1, align 1
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i1, align 1
  %24 = alloca i1, align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca i1, align 1
  %27 = alloca %"class.std::allocator.2", align 1
  %28 = alloca i1, align 1
  %29 = alloca i1, align 1
  %30 = alloca i1, align 1
  %31 = alloca i1, align 1
  %32 = alloca i1, align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca i1, align 1
  %35 = alloca %"class.std::allocator.2", align 1
  %36 = alloca i1, align 1
  %37 = alloca i1, align 1
  %38 = alloca i1, align 1
  %39 = alloca i1, align 1
  %40 = alloca i1, align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca i1, align 1
  %43 = alloca i32, align 4
  %44 = alloca i1, align 1
  %45 = alloca i1, align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca i1, align 1
  %49 = alloca %"class.std::allocator.2", align 1
  %50 = alloca i1, align 1
  %51 = alloca i1, align 1
  %52 = alloca i1, align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca i1, align 1
  %55 = alloca %"class.std::allocator.2", align 1
  %56 = alloca i1, align 1
  %57 = alloca i1, align 1
  %58 = alloca i1, align 1
  %59 = alloca i1, align 1
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca i1, align 1
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca i1, align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca i1, align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca i1, align 1
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca i1, align 1
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca i1, align 1
  %73 = alloca %"class.std::allocator.2", align 1
  %74 = alloca i1, align 1
  %75 = alloca i1, align 1
  %76 = alloca i1, align 1
  %77 = alloca i1, align 1
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca i1, align 1
  %80 = alloca %"class.std::allocator.2", align 1
  %81 = alloca i1, align 1
  %82 = alloca i1, align 1
  %83 = alloca i1, align 1
  %84 = alloca i1, align 1
  %85 = alloca i1, align 1
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca i1, align 1
  %88 = alloca %"class.std::allocator.2", align 1
  %89 = alloca i1, align 1
  %90 = alloca i1, align 1
  %91 = alloca i1, align 1
  %92 = alloca i1, align 1
  %93 = alloca i1, align 1
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca i1, align 1
  %96 = alloca i32, align 4
  %97 = alloca i1, align 1
  %98 = alloca i1, align 1
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %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 %"class.std::__cxx11::basic_string", align 8
  %107 = alloca i1, align 1
  %108 = alloca %"class.std::allocator.2", align 1
  %109 = alloca i1, align 1
  %110 = alloca i1, align 1
  %111 = alloca i1, align 1
  %112 = alloca i1, align 1
  %113 = alloca i32, align 4
  %114 = alloca double, align 8
  %115 = alloca i32, align 4
  %116 = alloca double, align 8
  %117 = alloca i32, align 4
  %118 = alloca double, align 8
  %119 = alloca double, align 8
  %120 = alloca double, align 8
  %121 = alloca double, align 8
  %122 = alloca double, align 8
  %123 = alloca i32, align 4
  %124 = alloca double, align 8
  %125 = alloca double, align 8
  %126 = alloca double, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store double %1, ptr %4, align 8, !tbaa !9
  %127 = load ptr, ptr %3, align 8
  %128 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 3
  %129 = load ptr, ptr %128, align 8, !tbaa !11
  %130 = call noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408) %129)
  %131 = icmp sgt i32 %130, 0
  store i1 false, ptr %7, align 1
  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 %20, align 1
  store i1 false, ptr %23, 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 %29, 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 %34, align 1
  store i1 false, ptr %36, align 1
  store i1 false, ptr %37, align 1
  store i1 false, ptr %38, align 1
  store i1 false, ptr %39, align 1
  store i1 false, ptr %40, align 1
  store i1 false, ptr %42, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  store i1 false, ptr %44, align 1
  store i1 false, ptr %45, align 1
  store i1 false, ptr %48, 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 %54, align 1
  store i1 false, ptr %56, align 1
  store i1 false, ptr %57, align 1
  store i1 false, ptr %58, align 1
  store i1 false, ptr %59, align 1
  br i1 %131, label %148, label %132

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

133:                                              ; preds = %132
  store i1 true, ptr %23, 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 %14, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.1)
          to label %134 unwind label %389

134:                                              ; preds = %133
  store i1 true, ptr %24, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  store i1 true, ptr %26, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #8
  store i1 true, ptr %28, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  store i1 true, ptr %29, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @__FUNCTION__._ZN6Circle16initOilInjectionEd, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %135 unwind label %393

135:                                              ; preds = %134
  store i1 true, ptr %30, 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 %12, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %136 unwind label %397

136:                                              ; preds = %135
  store i1 true, ptr %31, 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 %10, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.2)
          to label %137 unwind label %401

137:                                              ; preds = %136
  store i1 true, ptr %32, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #8
  store i1 true, ptr %34, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #8
  store i1 true, ptr %36, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  store i1 true, ptr %37, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %138 unwind label %405

138:                                              ; preds = %137
  store i1 true, ptr %38, 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 %8, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %139 unwind label %409

139:                                              ; preds = %138
  store i1 true, ptr %39, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef @.str.4)
          to label %140 unwind label %413

140:                                              ; preds = %139
  store i1 true, ptr %40, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #8
  store i1 true, ptr %42, align 1
  store i32 121, ptr %43, align 4, !tbaa !16
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %141 unwind label %417

141:                                              ; preds = %140
  store i1 true, ptr %44, 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 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %142 unwind label %421

142:                                              ; preds = %141
  store i1 true, ptr %45, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #8
  store i1 true, ptr %48, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #8
  store i1 true, ptr %50, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  store i1 true, ptr %51, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %143 unwind label %425

143:                                              ; preds = %142
  store i1 true, ptr %52, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #8
  store i1 true, ptr %54, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #8
  store i1 true, ptr %56, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  store i1 true, ptr %57, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %144 unwind label %429

144:                                              ; preds = %143
  store i1 true, ptr %58, 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 %46, ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %145 unwind label %433

145:                                              ; preds = %144
  store i1 true, ptr %59, align 1
  %146 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %5, ptr noundef %46, i32 noundef 0)
          to label %147 unwind label %437

147:                                              ; preds = %145
  br label %148

148:                                              ; preds = %147, %2
  %149 = phi i1 [ true, %2 ], [ %146, %147 ]
  %150 = xor i1 %149, true
  %151 = load i1, ptr %59, align 1
  br i1 %151, label %152, label %153

152:                                              ; preds = %148
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  br label %153

153:                                              ; preds = %152, %148
  %154 = load i1, ptr %58, align 1
  br i1 %154, label %155, label %156

155:                                              ; preds = %153
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  br label %156

156:                                              ; preds = %155, %153
  %157 = load i1, ptr %57, align 1
  br i1 %157, label %158, label %159

158:                                              ; preds = %156
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  br label %159

159:                                              ; preds = %158, %156
  %160 = load i1, ptr %56, align 1
  br i1 %160, label %161, label %162

161:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #8
  br label %162

162:                                              ; preds = %161, %159
  %163 = load i1, ptr %54, align 1
  br i1 %163, label %164, label %165

164:                                              ; preds = %162
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  br label %165

165:                                              ; preds = %164, %162
  %166 = load i1, ptr %52, align 1
  br i1 %166, label %167, label %168

167:                                              ; preds = %165
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %168

168:                                              ; preds = %167, %165
  %169 = load i1, ptr %51, align 1
  br i1 %169, label %170, label %171

170:                                              ; preds = %168
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  br label %171

171:                                              ; preds = %170, %168
  %172 = load i1, ptr %50, align 1
  br i1 %172, label %173, label %174

173:                                              ; preds = %171
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  br label %174

174:                                              ; preds = %173, %171
  %175 = load i1, ptr %48, align 1
  br i1 %175, label %176, label %177

176:                                              ; preds = %174
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  br label %177

177:                                              ; preds = %176, %174
  %178 = load i1, ptr %45, align 1
  br i1 %178, label %179, label %180

179:                                              ; preds = %177
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  br label %180

180:                                              ; preds = %179, %177
  %181 = load i1, ptr %44, align 1
  br i1 %181, label %182, label %183

182:                                              ; preds = %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %183

183:                                              ; preds = %182, %180
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  %184 = load i1, ptr %42, align 1
  br i1 %184, label %185, label %186

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

186:                                              ; preds = %185, %183
  %187 = load i1, ptr %40, align 1
  br i1 %187, label %188, label %189

188:                                              ; preds = %186
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %189

189:                                              ; preds = %188, %186
  %190 = load i1, ptr %39, align 1
  br i1 %190, label %191, label %192

191:                                              ; preds = %189
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  br label %192

192:                                              ; preds = %191, %189
  %193 = load i1, ptr %38, align 1
  br i1 %193, label %194, label %195

194:                                              ; preds = %192
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %195

195:                                              ; preds = %194, %192
  %196 = load i1, ptr %37, align 1
  br i1 %196, label %197, label %198

197:                                              ; preds = %195
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  br label %198

198:                                              ; preds = %197, %195
  %199 = load i1, ptr %36, align 1
  br i1 %199, label %200, label %201

200:                                              ; preds = %198
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  br label %201

201:                                              ; preds = %200, %198
  %202 = load i1, ptr %34, align 1
  br i1 %202, label %203, label %204

203:                                              ; preds = %201
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  br label %204

204:                                              ; preds = %203, %201
  %205 = load i1, ptr %32, align 1
  br i1 %205, label %206, label %207

206:                                              ; preds = %204
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %207

207:                                              ; preds = %206, %204
  %208 = load i1, ptr %31, align 1
  br i1 %208, label %209, label %210

209:                                              ; preds = %207
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %210

210:                                              ; preds = %209, %207
  %211 = load i1, ptr %30, align 1
  br i1 %211, label %212, label %213

212:                                              ; preds = %210
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %213

213:                                              ; preds = %212, %210
  %214 = load i1, ptr %29, align 1
  br i1 %214, label %215, label %216

215:                                              ; preds = %213
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  br label %216

216:                                              ; preds = %215, %213
  %217 = load i1, ptr %28, align 1
  br i1 %217, label %218, label %219

218:                                              ; preds = %216
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  br label %219

219:                                              ; preds = %218, %216
  %220 = load i1, ptr %26, align 1
  br i1 %220, label %221, label %222

221:                                              ; preds = %219
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  br label %222

222:                                              ; preds = %221, %219
  %223 = load i1, ptr %24, align 1
  br i1 %223, label %224, label %225

224:                                              ; preds = %222
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %225

225:                                              ; preds = %224, %222
  %226 = load i1, ptr %23, align 1
  br i1 %226, label %227, label %228

227:                                              ; preds = %225
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br label %228

228:                                              ; preds = %227, %225
  %229 = load i1, ptr %20, align 1
  br i1 %229, label %230, label %231

230:                                              ; preds = %228
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  br label %231

231:                                              ; preds = %230, %228
  %232 = load i1, ptr %19, align 1
  br i1 %232, label %233, label %234

233:                                              ; preds = %231
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #8
  br label %234

234:                                              ; preds = %233, %231
  %235 = load i1, ptr %17, align 1
  br i1 %235, label %236, label %237

236:                                              ; preds = %234
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #8
  br label %237

237:                                              ; preds = %236, %234
  %238 = load i1, ptr %15, align 1
  br i1 %238, label %239, label %240

239:                                              ; preds = %237
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  br label %240

240:                                              ; preds = %239, %237
  %241 = load i1, ptr %13, align 1
  br i1 %241, label %242, label %243

242:                                              ; preds = %240
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #8
  br label %243

243:                                              ; preds = %242, %240
  %244 = load i1, ptr %11, align 1
  br i1 %244, label %245, label %246

245:                                              ; preds = %243
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #8
  br label %246

246:                                              ; preds = %245, %243
  %247 = load i1, ptr %9, align 1
  br i1 %247, label %248, label %249

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

249:                                              ; preds = %248, %246
  %250 = load i1, ptr %7, align 1
  br i1 %250, label %251, label %252

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

252:                                              ; preds = %251, %249
  %253 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 3
  %254 = load ptr, ptr %253, align 8, !tbaa !11
  call void @_ZN4Elem15resetEventIndexEv(ptr noundef nonnull align 8 dereferenceable(408) %254)
  %255 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 3
  %256 = load ptr, ptr %255, align 8, !tbaa !11
  %257 = call noundef zeroext i1 @_ZNK4Apex15isInOilFloodVecEv(ptr noundef nonnull align 8 dereferenceable(104) %256)
  store i1 false, ptr %62, align 1
  store i1 false, ptr %64, align 1
  store i1 false, ptr %66, align 1
  store i1 false, ptr %68, align 1
  store i1 false, ptr %70, align 1
  store i1 false, ptr %72, align 1
  store i1 false, ptr %74, align 1
  store i1 false, ptr %75, align 1
  store i1 false, ptr %76, align 1
  store i1 false, ptr %77, align 1
  store i1 false, ptr %79, align 1
  store i1 false, ptr %81, align 1
  store i1 false, ptr %82, align 1
  store i1 false, ptr %83, align 1
  store i1 false, ptr %84, align 1
  store i1 false, ptr %85, align 1
  store i1 false, ptr %87, 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 %92, align 1
  store i1 false, ptr %93, align 1
  store i1 false, ptr %95, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #8
  store i1 false, ptr %97, align 1
  store i1 false, ptr %98, 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 %107, align 1
  store i1 false, ptr %109, align 1
  store i1 false, ptr %110, align 1
  store i1 false, ptr %111, align 1
  store i1 false, ptr %112, align 1
  br i1 %257, label %258, label %274

258:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #8
  store i1 true, ptr %62, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #8
  store i1 true, ptr %64, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #8
  store i1 true, ptr %66, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #8
  store i1 true, ptr %68, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #8
  store i1 true, ptr %70, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #8
  store i1 true, ptr %72, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #8
  store i1 true, ptr %74, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  store i1 true, ptr %75, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %259 unwind label %556

259:                                              ; preds = %258
  store i1 true, ptr %76, 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 %69, ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef @.str.1)
          to label %260 unwind label %560

260:                                              ; preds = %259
  store i1 true, ptr %77, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #8
  store i1 true, ptr %79, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #8
  store i1 true, ptr %81, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #8
  store i1 true, ptr %82, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef @__FUNCTION__._ZN6Circle16initOilInjectionEd, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %261 unwind label %564

261:                                              ; preds = %260
  store i1 true, ptr %83, 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 %67, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %262 unwind label %568

262:                                              ; preds = %261
  store i1 true, ptr %84, 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 %65, ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.2)
          to label %263 unwind label %572

263:                                              ; preds = %262
  store i1 true, ptr %85, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #8
  store i1 true, ptr %87, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #8
  store i1 true, ptr %89, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #8
  store i1 true, ptr %90, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %264 unwind label %576

264:                                              ; preds = %263
  store i1 true, ptr %91, 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 %63, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %265 unwind label %580

265:                                              ; preds = %264
  store i1 true, ptr %92, 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 %61, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef @.str.4)
          to label %266 unwind label %584

266:                                              ; preds = %265
  store i1 true, ptr %93, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #8
  store i1 true, ptr %95, align 1
  store i32 124, ptr %96, align 4, !tbaa !16
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %94, ptr noundef nonnull align 4 dereferenceable(4) %96)
          to label %267 unwind label %588

267:                                              ; preds = %266
  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 %60, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %268 unwind label %592

268:                                              ; preds = %267
  store i1 true, ptr %98, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #8
  store i1 true, ptr %101, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #8
  store i1 true, ptr %103, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #8
  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.5, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %269 unwind label %596

269:                                              ; preds = %268
  store i1 true, ptr %105, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #8
  store i1 true, ptr %107, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #8
  store i1 true, ptr %109, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #8
  store i1 true, ptr %110, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %270 unwind label %600

270:                                              ; preds = %269
  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 %99, ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(32) %106)
          to label %271 unwind label %604

271:                                              ; preds = %270
  store i1 true, ptr %112, align 1
  %272 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %60, ptr noundef %99, i32 noundef 0)
          to label %273 unwind label %608

273:                                              ; preds = %271
  br label %274

274:                                              ; preds = %273, %252
  %275 = phi i1 [ true, %252 ], [ %272, %273 ]
  %276 = xor i1 %275, true
  %277 = load i1, ptr %112, align 1
  br i1 %277, label %278, label %279

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

279:                                              ; preds = %278, %274
  %280 = load i1, ptr %111, 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) %106) #8
  br label %282

282:                                              ; preds = %281, %279
  %283 = load i1, ptr %110, align 1
  br i1 %283, label %284, label %285

284:                                              ; preds = %282
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #8
  br label %285

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

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

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

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

291:                                              ; preds = %290, %288
  %292 = load i1, ptr %105, 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) %100) #8
  br label %294

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

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

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

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

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

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

303:                                              ; preds = %302, %300
  %304 = load i1, ptr %98, 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) %60) #8
  br label %306

306:                                              ; preds = %305, %303
  %307 = load i1, ptr %97, 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) %94) #8
  br label %309

309:                                              ; preds = %308, %306
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #8
  %310 = load i1, ptr %95, align 1
  br i1 %310, label %311, label %312

311:                                              ; preds = %309
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #8
  br label %312

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

314:                                              ; preds = %312
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  br label %315

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

317:                                              ; preds = %315
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %318

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

320:                                              ; preds = %318
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  br label %321

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

323:                                              ; preds = %321
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #8
  br label %324

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

326:                                              ; preds = %324
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #8
  br label %327

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

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

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

332:                                              ; preds = %330
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  br label %333

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

335:                                              ; preds = %333
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br label %336

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

338:                                              ; preds = %336
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  br label %339

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

341:                                              ; preds = %339
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #8
  br label %342

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

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

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

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

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

350:                                              ; preds = %348
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %351

351:                                              ; preds = %350, %348
  %352 = load i1, ptr %76, 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) %71) #8
  br label %354

354:                                              ; preds = %353, %351
  %355 = load i1, ptr %75, align 1
  br i1 %355, label %356, label %357

356:                                              ; preds = %354
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  br label %357

357:                                              ; preds = %356, %354
  %358 = load i1, ptr %74, align 1
  br i1 %358, label %359, label %360

359:                                              ; preds = %357
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  br label %360

360:                                              ; preds = %359, %357
  %361 = load i1, ptr %72, align 1
  br i1 %361, label %362, label %363

362:                                              ; preds = %360
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #8
  br label %363

363:                                              ; preds = %362, %360
  %364 = load i1, ptr %70, align 1
  br i1 %364, label %365, label %366

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

366:                                              ; preds = %365, %363
  %367 = load i1, ptr %68, align 1
  br i1 %367, label %368, label %369

368:                                              ; preds = %366
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #8
  br label %369

369:                                              ; preds = %368, %366
  %370 = load i1, ptr %66, align 1
  br i1 %370, label %371, label %372

371:                                              ; preds = %369
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  br label %372

372:                                              ; preds = %371, %369
  %373 = load i1, ptr %64, align 1
  br i1 %373, label %374, label %375

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

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

377:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  br label %378

378:                                              ; preds = %377, %375
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #8
  store i32 0, ptr %113, align 4, !tbaa !16
  br label %379

379:                                              ; preds = %738, %378
  %380 = load i32, ptr %113, align 4, !tbaa !16
  %381 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 1
  %382 = load i32, ptr %381, align 8, !tbaa !17
  %383 = icmp slt i32 %380, %382
  br i1 %383, label %727, label %384

384:                                              ; preds = %379
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #8
  br label %741

385:                                              ; preds = %132
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %21, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %22, align 4
  br label %531

389:                                              ; preds = %133
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %21, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %22, align 4
  br label %527

393:                                              ; preds = %134
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %21, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %22, align 4
  br label %514

397:                                              ; preds = %135
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %21, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %22, align 4
  br label %510

401:                                              ; preds = %136
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %21, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %22, align 4
  br label %506

405:                                              ; preds = %137
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %21, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %22, align 4
  br label %493

409:                                              ; preds = %138
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %21, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %22, align 4
  br label %489

413:                                              ; preds = %139
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %21, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %22, align 4
  br label %485

417:                                              ; preds = %140
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %21, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %22, align 4
  br label %478

421:                                              ; preds = %141
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %21, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %22, align 4
  br label %474

425:                                              ; preds = %142
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %21, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %22, align 4
  br label %461

429:                                              ; preds = %143
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %21, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %22, align 4
  br label %448

433:                                              ; preds = %144
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %21, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %22, align 4
  br label %444

437:                                              ; preds = %145
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %21, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %22, align 4
  %441 = load i1, ptr %59, align 1
  br i1 %441, label %442, label %443

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

443:                                              ; preds = %442, %437
  br label %444

444:                                              ; preds = %443, %433
  %445 = load i1, ptr %58, align 1
  br i1 %445, label %446, label %447

446:                                              ; preds = %444
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  br label %447

447:                                              ; preds = %446, %444
  br label %448

448:                                              ; preds = %447, %429
  %449 = load i1, ptr %57, align 1
  br i1 %449, label %450, label %451

450:                                              ; preds = %448
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  br label %451

451:                                              ; preds = %450, %448
  %452 = load i1, ptr %56, align 1
  br i1 %452, label %453, label %454

453:                                              ; preds = %451
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #8
  br label %454

454:                                              ; preds = %453, %451
  %455 = load i1, ptr %54, align 1
  br i1 %455, label %456, label %457

456:                                              ; preds = %454
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  br label %457

457:                                              ; preds = %456, %454
  %458 = load i1, ptr %52, align 1
  br i1 %458, label %459, label %460

459:                                              ; preds = %457
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %460

460:                                              ; preds = %459, %457
  br label %461

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

463:                                              ; preds = %461
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  br label %464

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

466:                                              ; preds = %464
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  br label %467

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

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

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

472:                                              ; preds = %470
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  br label %473

473:                                              ; preds = %472, %470
  br label %474

474:                                              ; preds = %473, %421
  %475 = load i1, ptr %44, align 1
  br i1 %475, label %476, label %477

476:                                              ; preds = %474
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %477

477:                                              ; preds = %476, %474
  br label %478

478:                                              ; preds = %477, %417
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  %479 = load i1, ptr %42, align 1
  br i1 %479, label %480, label %481

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

481:                                              ; preds = %480, %478
  %482 = load i1, ptr %40, align 1
  br i1 %482, label %483, label %484

483:                                              ; preds = %481
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %484

484:                                              ; preds = %483, %481
  br label %485

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

487:                                              ; preds = %485
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  br label %488

488:                                              ; preds = %487, %485
  br label %489

489:                                              ; preds = %488, %409
  %490 = load i1, ptr %38, align 1
  br i1 %490, label %491, label %492

491:                                              ; preds = %489
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %492

492:                                              ; preds = %491, %489
  br label %493

493:                                              ; preds = %492, %405
  %494 = load i1, ptr %37, align 1
  br i1 %494, label %495, label %496

495:                                              ; preds = %493
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  br label %496

496:                                              ; preds = %495, %493
  %497 = load i1, ptr %36, align 1
  br i1 %497, label %498, label %499

498:                                              ; preds = %496
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  br label %499

499:                                              ; preds = %498, %496
  %500 = load i1, ptr %34, align 1
  br i1 %500, label %501, label %502

501:                                              ; preds = %499
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  br label %502

502:                                              ; preds = %501, %499
  %503 = load i1, ptr %32, align 1
  br i1 %503, label %504, label %505

504:                                              ; preds = %502
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %505

505:                                              ; preds = %504, %502
  br label %506

506:                                              ; preds = %505, %401
  %507 = load i1, ptr %31, align 1
  br i1 %507, label %508, label %509

508:                                              ; preds = %506
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %509

509:                                              ; preds = %508, %506
  br label %510

510:                                              ; preds = %509, %397
  %511 = load i1, ptr %30, align 1
  br i1 %511, label %512, label %513

512:                                              ; preds = %510
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %513

513:                                              ; preds = %512, %510
  br label %514

514:                                              ; preds = %513, %393
  %515 = load i1, ptr %29, align 1
  br i1 %515, label %516, label %517

516:                                              ; preds = %514
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  br label %517

517:                                              ; preds = %516, %514
  %518 = load i1, ptr %28, align 1
  br i1 %518, label %519, label %520

519:                                              ; preds = %517
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  br label %520

520:                                              ; preds = %519, %517
  %521 = load i1, ptr %26, align 1
  br i1 %521, label %522, label %523

522:                                              ; preds = %520
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  br label %523

523:                                              ; preds = %522, %520
  %524 = load i1, ptr %24, align 1
  br i1 %524, label %525, label %526

525:                                              ; preds = %523
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %526

526:                                              ; preds = %525, %523
  br label %527

527:                                              ; preds = %526, %389
  %528 = load i1, ptr %23, align 1
  br i1 %528, label %529, label %530

529:                                              ; preds = %527
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br label %530

530:                                              ; preds = %529, %527
  br label %531

531:                                              ; preds = %530, %385
  %532 = load i1, ptr %20, align 1
  br i1 %532, label %533, label %534

533:                                              ; preds = %531
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  br label %534

534:                                              ; preds = %533, %531
  %535 = load i1, ptr %19, align 1
  br i1 %535, label %536, label %537

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

537:                                              ; preds = %536, %534
  %538 = load i1, ptr %17, align 1
  br i1 %538, label %539, label %540

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

540:                                              ; preds = %539, %537
  %541 = load i1, ptr %15, align 1
  br i1 %541, label %542, label %543

542:                                              ; preds = %540
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  br label %543

543:                                              ; preds = %542, %540
  %544 = load i1, ptr %13, align 1
  br i1 %544, label %545, label %546

545:                                              ; preds = %543
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #8
  br label %546

546:                                              ; preds = %545, %543
  %547 = load i1, ptr %11, align 1
  br i1 %547, label %548, label %549

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

549:                                              ; preds = %548, %546
  %550 = load i1, ptr %9, align 1
  br i1 %550, label %551, label %552

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

552:                                              ; preds = %551, %549
  %553 = load i1, ptr %7, align 1
  br i1 %553, label %554, label %555

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

555:                                              ; preds = %554, %552
  br label %970

556:                                              ; preds = %258
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %21, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %22, align 4
  br label %702

560:                                              ; preds = %259
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %21, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %22, align 4
  br label %698

564:                                              ; preds = %260
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %21, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %22, align 4
  br label %685

568:                                              ; preds = %261
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %21, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %22, align 4
  br label %681

572:                                              ; preds = %262
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %21, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %22, align 4
  br label %677

576:                                              ; preds = %263
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %21, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %22, align 4
  br label %664

580:                                              ; preds = %264
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %21, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %22, align 4
  br label %660

584:                                              ; preds = %265
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %21, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %22, align 4
  br label %656

588:                                              ; preds = %266
  %589 = landingpad { ptr, i32 }
          cleanup
  %590 = extractvalue { ptr, i32 } %589, 0
  store ptr %590, ptr %21, align 8
  %591 = extractvalue { ptr, i32 } %589, 1
  store i32 %591, ptr %22, align 4
  br label %649

592:                                              ; preds = %267
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %21, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %22, align 4
  br label %645

596:                                              ; preds = %268
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %21, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %22, align 4
  br label %632

600:                                              ; preds = %269
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %21, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %22, align 4
  br label %619

604:                                              ; preds = %270
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %21, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %22, align 4
  br label %615

608:                                              ; preds = %271
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %21, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %22, align 4
  %612 = load i1, ptr %112, align 1
  br i1 %612, label %613, label %614

613:                                              ; preds = %608
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  br label %614

614:                                              ; preds = %613, %608
  br label %615

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

617:                                              ; preds = %615
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #8
  br label %618

618:                                              ; preds = %617, %615
  br label %619

619:                                              ; preds = %618, %600
  %620 = load i1, ptr %110, align 1
  br i1 %620, label %621, label %622

621:                                              ; preds = %619
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #8
  br label %622

622:                                              ; preds = %621, %619
  %623 = load i1, ptr %109, align 1
  br i1 %623, label %624, label %625

624:                                              ; preds = %622
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #8
  br label %625

625:                                              ; preds = %624, %622
  %626 = load i1, ptr %107, align 1
  br i1 %626, label %627, label %628

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

628:                                              ; preds = %627, %625
  %629 = load i1, ptr %105, align 1
  br i1 %629, label %630, label %631

630:                                              ; preds = %628
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  br label %631

631:                                              ; preds = %630, %628
  br label %632

632:                                              ; preds = %631, %596
  %633 = load i1, ptr %104, align 1
  br i1 %633, label %634, label %635

634:                                              ; preds = %632
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #8
  br label %635

635:                                              ; preds = %634, %632
  %636 = load i1, ptr %103, align 1
  br i1 %636, label %637, label %638

637:                                              ; preds = %635
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #8
  br label %638

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

640:                                              ; preds = %638
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  br label %641

641:                                              ; preds = %640, %638
  %642 = load i1, ptr %98, align 1
  br i1 %642, label %643, label %644

643:                                              ; preds = %641
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %644

644:                                              ; preds = %643, %641
  br label %645

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

647:                                              ; preds = %645
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  br label %648

648:                                              ; preds = %647, %645
  br label %649

649:                                              ; preds = %648, %588
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #8
  %650 = load i1, ptr %95, align 1
  br i1 %650, label %651, label %652

651:                                              ; preds = %649
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #8
  br label %652

652:                                              ; preds = %651, %649
  %653 = load i1, ptr %93, align 1
  br i1 %653, label %654, label %655

654:                                              ; preds = %652
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  br label %655

655:                                              ; preds = %654, %652
  br label %656

656:                                              ; preds = %655, %584
  %657 = load i1, ptr %92, align 1
  br i1 %657, label %658, label %659

658:                                              ; preds = %656
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %659

659:                                              ; preds = %658, %656
  br label %660

660:                                              ; preds = %659, %580
  %661 = load i1, ptr %91, align 1
  br i1 %661, label %662, label %663

662:                                              ; preds = %660
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  br label %663

663:                                              ; preds = %662, %660
  br label %664

664:                                              ; preds = %663, %576
  %665 = load i1, ptr %90, align 1
  br i1 %665, label %666, label %667

666:                                              ; preds = %664
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #8
  br label %667

667:                                              ; preds = %666, %664
  %668 = load i1, ptr %89, align 1
  br i1 %668, label %669, label %670

669:                                              ; preds = %667
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #8
  br label %670

670:                                              ; preds = %669, %667
  %671 = load i1, ptr %87, align 1
  br i1 %671, label %672, label %673

672:                                              ; preds = %670
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #8
  br label %673

673:                                              ; preds = %672, %670
  %674 = load i1, ptr %85, align 1
  br i1 %674, label %675, label %676

675:                                              ; preds = %673
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  br label %676

676:                                              ; preds = %675, %673
  br label %677

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

679:                                              ; preds = %677
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br label %680

680:                                              ; preds = %679, %677
  br label %681

681:                                              ; preds = %680, %568
  %682 = load i1, ptr %83, align 1
  br i1 %682, label %683, label %684

683:                                              ; preds = %681
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  br label %684

684:                                              ; preds = %683, %681
  br label %685

685:                                              ; preds = %684, %564
  %686 = load i1, ptr %82, align 1
  br i1 %686, label %687, label %688

687:                                              ; preds = %685
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #8
  br label %688

688:                                              ; preds = %687, %685
  %689 = load i1, ptr %81, align 1
  br i1 %689, label %690, label %691

690:                                              ; preds = %688
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #8
  br label %691

691:                                              ; preds = %690, %688
  %692 = load i1, ptr %79, align 1
  br i1 %692, label %693, label %694

693:                                              ; preds = %691
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #8
  br label %694

694:                                              ; preds = %693, %691
  %695 = load i1, ptr %77, align 1
  br i1 %695, label %696, label %697

696:                                              ; preds = %694
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %697

697:                                              ; preds = %696, %694
  br label %698

698:                                              ; preds = %697, %560
  %699 = load i1, ptr %76, align 1
  br i1 %699, label %700, label %701

700:                                              ; preds = %698
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  br label %701

701:                                              ; preds = %700, %698
  br label %702

702:                                              ; preds = %701, %556
  %703 = load i1, ptr %75, align 1
  br i1 %703, label %704, label %705

704:                                              ; preds = %702
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  br label %705

705:                                              ; preds = %704, %702
  %706 = load i1, ptr %74, align 1
  br i1 %706, label %707, label %708

707:                                              ; preds = %705
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  br label %708

708:                                              ; preds = %707, %705
  %709 = load i1, ptr %72, align 1
  br i1 %709, label %710, label %711

710:                                              ; preds = %708
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #8
  br label %711

711:                                              ; preds = %710, %708
  %712 = load i1, ptr %70, align 1
  br i1 %712, label %713, label %714

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

714:                                              ; preds = %713, %711
  %715 = load i1, ptr %68, align 1
  br i1 %715, label %716, label %717

716:                                              ; preds = %714
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #8
  br label %717

717:                                              ; preds = %716, %714
  %718 = load i1, ptr %66, align 1
  br i1 %718, label %719, label %720

719:                                              ; preds = %717
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  br label %720

720:                                              ; preds = %719, %717
  %721 = load i1, ptr %64, align 1
  br i1 %721, label %722, label %723

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

723:                                              ; preds = %722, %720
  %724 = load i1, ptr %62, align 1
  br i1 %724, label %725, label %726

725:                                              ; preds = %723
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  br label %726

726:                                              ; preds = %725, %723
  br label %970

727:                                              ; preds = %379
  %728 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 4
  %729 = load ptr, ptr %728, align 8, !tbaa !25
  %730 = load i32, ptr %113, align 4, !tbaa !16
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds %class.LayerApex, ptr %729, i64 %731
  call void @_ZN4Apex16setInWatFloodVecEb(ptr noundef nonnull align 8 dereferenceable(104) %732, i1 noundef zeroext false)
  %733 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 4
  %734 = load ptr, ptr %733, align 8, !tbaa !25
  %735 = load i32, ptr %113, align 4, !tbaa !16
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds %class.LayerApex, ptr %734, i64 %736
  call void @_ZN4Apex16setInOilFloodVecEb(ptr noundef nonnull align 8 dereferenceable(104) %737, i1 noundef zeroext false)
  br label %738

738:                                              ; preds = %727
  %739 = load i32, ptr %113, align 4, !tbaa !16
  %740 = add nsw i32 %739, 1
  store i32 %740, ptr %113, align 4, !tbaa !16
  br label %379, !llvm.loop !26

741:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  %742 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 4
  %743 = load ptr, ptr %742, align 8, !tbaa !28
  %744 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %743)
  store double %744, ptr %114, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #8
  store i32 0, ptr %115, align 4, !tbaa !16
  br label %745

745:                                              ; preds = %798, %741
  %746 = load i32, ptr %115, align 4, !tbaa !16
  %747 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 1
  %748 = load i32, ptr %747, align 8, !tbaa !17
  %749 = icmp slt i32 %746, %748
  br i1 %749, label %751, label %750

750:                                              ; preds = %745
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #8
  br label %801

751:                                              ; preds = %745
  %752 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 3
  %753 = load ptr, ptr %752, align 8, !tbaa !29
  %754 = load i32, ptr %115, align 4, !tbaa !16
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds %class.CornerApex, ptr %753, i64 %755
  %757 = load double, ptr %4, align 8, !tbaa !9
  %758 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 4
  %759 = load double, ptr %758, align 8, !tbaa !30
  %760 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 3
  %761 = load double, ptr %760, align 8, !tbaa !31
  %762 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 2
  %763 = load i32, ptr %115, align 4, !tbaa !16
  %764 = sext i32 %763 to i64
  %765 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %762, i64 noundef %764) #8
  %766 = load double, ptr %765, align 8, !tbaa !9
  %767 = load double, ptr %114, align 8, !tbaa !9
  call void @_ZN10CornerApex14initCornerApexEdddddb(ptr noundef nonnull align 8 dereferenceable(144) %756, double noundef %757, double noundef %759, double noundef %761, double noundef %766, double noundef %767, i1 noundef zeroext true)
  %768 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 6
  %769 = load ptr, ptr %768, align 8, !tbaa !32
  %770 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 4
  %771 = load ptr, ptr %770, align 8, !tbaa !28
  %772 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %771)
  %773 = icmp eq ptr %769, %772
  br i1 %773, label %774, label %797

774:                                              ; preds = %751
  %775 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 4
  %776 = load ptr, ptr %775, align 8, !tbaa !25
  %777 = load i32, ptr %115, align 4, !tbaa !16
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds %class.LayerApex, ptr %776, i64 %778
  %780 = load double, ptr %4, align 8, !tbaa !9
  %781 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 4
  %782 = load double, ptr %781, align 8, !tbaa !30
  %783 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 3
  %784 = load double, ptr %783, align 8, !tbaa !31
  %785 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 2
  %786 = load i32, ptr %115, align 4, !tbaa !16
  %787 = sext i32 %786 to i64
  %788 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %785, i64 noundef %787) #8
  %789 = load double, ptr %788, align 8, !tbaa !9
  %790 = load double, ptr %114, align 8, !tbaa !9
  %791 = call noundef zeroext i1 @_ZN9LayerApex13initLayerApexEdddddbb(ptr noundef nonnull align 8 dereferenceable(144) %779, double noundef %780, double noundef %782, double noundef %784, double noundef %789, double noundef %790, i1 noundef zeroext true, i1 noundef zeroext false)
  br i1 %791, label %796, label %792

792:                                              ; preds = %774
  %793 = load i32, ptr %115, align 4, !tbaa !16
  %794 = call noundef double @_ZN7Polygon25Pc_pin_disconnectOilLayerEi(ptr noundef nonnull align 8 dereferenceable(248) %127, i32 noundef %793)
  %795 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.12)
  br label %796

796:                                              ; preds = %792, %774
  br label %797

797:                                              ; preds = %796, %751
  br label %798

798:                                              ; preds = %797
  %799 = load i32, ptr %115, align 4, !tbaa !16
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr %115, align 4, !tbaa !16
  br label %745, !llvm.loop !33

801:                                              ; preds = %750
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #8
  %802 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 4
  %803 = load double, ptr %802, align 8, !tbaa !30
  store double %803, ptr %116, align 8, !tbaa !9
  %804 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 6
  %805 = load ptr, ptr %804, align 8, !tbaa !32
  %806 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 4
  %807 = load ptr, ptr %806, align 8, !tbaa !28
  %808 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984) %807)
  %809 = icmp eq ptr %805, %808
  br i1 %809, label %810, label %839

810:                                              ; preds = %801
  %811 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 4
  %812 = load ptr, ptr %811, align 8, !tbaa !28
  %813 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %812)
  %814 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 4
  %815 = load double, ptr %814, align 8, !tbaa !30
  %816 = call double @cos(double noundef %815) #8
  %817 = fmul double 2.000000e+00, %816
  %818 = fmul double %813, %817
  %819 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 5
  %820 = load double, ptr %819, align 8, !tbaa !34
  %821 = fdiv double %818, %820
  %822 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 15
  store double %821, ptr %822, align 8, !tbaa !35
  %823 = load double, ptr %4, align 8, !tbaa !9
  %824 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 16
  %825 = load double, ptr %824, align 8, !tbaa !36
  %826 = fcmp ogt double %823, %825
  br i1 %826, label %827, label %838

827:                                              ; preds = %810
  %828 = load double, ptr %4, align 8, !tbaa !9
  %829 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 4
  %830 = load double, ptr %829, align 8, !tbaa !30
  %831 = call double @cos(double noundef %830) #8
  %832 = fmul double %828, %831
  %833 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 4
  %834 = load double, ptr %833, align 8, !tbaa !30
  %835 = call double @cos(double noundef %834) #8
  %836 = fdiv double %832, %835
  %837 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 15
  store double %836, ptr %837, align 8, !tbaa !35
  br label %838

838:                                              ; preds = %827, %810
  store i32 1, ptr %117, align 4
  br label %967

839:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #8
  %840 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 4
  %841 = load ptr, ptr %840, align 8, !tbaa !28
  %842 = call noundef double @_ZNK10CommonData17minPcLastImbCycleEv(ptr noundef nonnull align 8 dereferenceable(1972) %841)
  %843 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 3
  %844 = load ptr, ptr %843, align 8, !tbaa !11
  %845 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %844)
  %846 = fsub double %842, %845
  store double %846, ptr %118, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  %847 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 4
  %848 = load ptr, ptr %847, align 8, !tbaa !28
  %849 = call noundef double @_ZNK10CommonData16minEverCappPressEv(ptr noundef nonnull align 8 dereferenceable(1972) %848)
  %850 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 3
  %851 = load ptr, ptr %850, align 8, !tbaa !11
  %852 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %851)
  %853 = fsub double %849, %852
  store double %853, ptr %119, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #8
  %854 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 4
  %855 = load ptr, ptr %854, align 8, !tbaa !25
  %856 = getelementptr inbounds %class.LayerApex, ptr %855, i64 0
  %857 = load double, ptr %118, align 8, !tbaa !9
  %858 = call noundef zeroext i1 @_ZNK9LayerApex23stablePinnedInLastCycleEd(ptr noundef nonnull align 8 dereferenceable(144) %856, double noundef %857)
  br i1 %858, label %859, label %861

859:                                              ; preds = %839
  %860 = load double, ptr %118, align 8, !tbaa !9
  br label %863

861:                                              ; preds = %839
  %862 = load double, ptr %119, align 8, !tbaa !9
  br label %863

863:                                              ; preds = %861, %859
  %864 = phi double [ %860, %859 ], [ %862, %861 ]
  store double %864, ptr %120, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #8
  store double 0.000000e+00, ptr %121, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #8
  %865 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 5
  %866 = load double, ptr %865, align 8, !tbaa !34
  %867 = load double, ptr %120, align 8, !tbaa !9
  %868 = fmul double %866, %867
  %869 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 4
  %870 = load ptr, ptr %869, align 8, !tbaa !28
  %871 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %870)
  %872 = fdiv double %868, %871
  store double %872, ptr %122, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #8
  store i32 0, ptr %123, align 4, !tbaa !16
  br label %873

873:                                              ; preds = %899, %863
  %874 = load i32, ptr %123, align 4, !tbaa !16
  %875 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 1
  %876 = load i32, ptr %875, align 8, !tbaa !17
  %877 = icmp slt i32 %874, %876
  br i1 %877, label %879, label %878

878:                                              ; preds = %873
  store i32 8, ptr %117, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #8
  br label %902

879:                                              ; preds = %873
  %880 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 4
  %881 = load ptr, ptr %880, align 8, !tbaa !25
  %882 = load i32, ptr %123, align 4, !tbaa !16
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds %class.LayerApex, ptr %881, i64 %883
  %885 = call noundef zeroext i1 @_ZNK4Apex6existsEv(ptr noundef nonnull align 8 dereferenceable(104) %884)
  br i1 %885, label %886, label %898

886:                                              ; preds = %879
  %887 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 3
  %888 = load double, ptr %887, align 8, !tbaa !31
  %889 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 2
  %890 = load i32, ptr %123, align 4, !tbaa !16
  %891 = sext i32 %890 to i64
  %892 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %889, i64 noundef %891) #8
  %893 = load double, ptr %892, align 8, !tbaa !9
  %894 = fsub double %888, %893
  %895 = call double @cos(double noundef %894) #8
  %896 = load double, ptr %121, align 8, !tbaa !9
  %897 = fadd double %896, %895
  store double %897, ptr %121, align 8, !tbaa !9
  br label %898

898:                                              ; preds = %886, %879
  br label %899

899:                                              ; preds = %898
  %900 = load i32, ptr %123, align 4, !tbaa !16
  %901 = add nsw i32 %900, 1
  store i32 %901, ptr %123, align 4, !tbaa !16
  br label %873, !llvm.loop !37

902:                                              ; preds = %878
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #8
  %903 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 1
  %904 = load double, ptr %903, align 8, !tbaa !38
  %905 = fmul double 4.000000e+00, %904
  %906 = load double, ptr %121, align 8, !tbaa !9
  %907 = fmul double %905, %906
  %908 = load double, ptr %122, align 8, !tbaa !9
  %909 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 3
  %910 = load double, ptr %909, align 8, !tbaa !31
  %911 = call double @cos(double noundef %910) #8
  %912 = fsub double %908, %911
  %913 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 1
  %914 = load double, ptr %913, align 8, !tbaa !38
  %915 = fmul double 1.200000e+01, %914
  %916 = getelementptr inbounds %class.VoidElem, ptr %127, i32 0, i32 3
  %917 = load double, ptr %916, align 8, !tbaa !31
  %918 = call double @sin(double noundef %917) #8
  %919 = fneg double %915
  %920 = call double @llvm.fmuladd.f64(double %919, double %918, double %912)
  %921 = fdiv double %907, %920
  store double %921, ptr %124, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #8
  store double -1.000000e+00, ptr %125, align 8, !tbaa !9
  %922 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 8 dereferenceable(8) %125)
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #8
  store double 1.000000e+00, ptr %126, align 8, !tbaa !9
  %923 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %922, ptr noundef nonnull align 8 dereferenceable(8) %126)
  %924 = load double, ptr %923, align 8, !tbaa !9
  store double %924, ptr %124, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  %925 = load double, ptr %124, align 8, !tbaa !9
  %926 = call double @acos(double noundef %925) #8
  %927 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 7
  store double %926, ptr %927, align 8, !tbaa !39
  %928 = load double, ptr %116, align 8, !tbaa !9
  %929 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 7
  %930 = load double, ptr %929, align 8, !tbaa !39
  %931 = fcmp ogt double %928, %930
  br i1 %931, label %932, label %940

932:                                              ; preds = %902
  %933 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 4
  %934 = load ptr, ptr %933, align 8, !tbaa !25
  %935 = getelementptr inbounds %class.LayerApex, ptr %934, i64 0
  %936 = call noundef zeroext i1 @_ZNK4Apex6existsEv(ptr noundef nonnull align 8 dereferenceable(104) %935)
  br i1 %936, label %937, label %940

937:                                              ; preds = %932
  %938 = call noundef double @_ZNK7Polygon23Pc_pistonType_DrainHingEv(ptr noundef nonnull align 8 dereferenceable(248) %127)
  %939 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 15
  store double %938, ptr %939, align 8, !tbaa !35
  br label %966

940:                                              ; preds = %932, %902
  %941 = load double, ptr %116, align 8, !tbaa !9
  %942 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !9
  %943 = fdiv double %942, 2.000000e+00
  %944 = getelementptr inbounds %class.Polygon, ptr %127, i32 0, i32 2
  %945 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %944, i64 noundef 0) #8
  %946 = load double, ptr %945, align 8, !tbaa !9
  %947 = fsub double %943, %946
  %948 = fcmp oge double %941, %947
  br i1 %948, label %949, label %961

949:                                              ; preds = %940
  %950 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 4
  %951 = load ptr, ptr %950, align 8, !tbaa !28
  %952 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %951)
  %953 = load double, ptr %116, align 8, !tbaa !9
  %954 = call double @cos(double noundef %953) #8
  %955 = fmul double 2.000000e+00, %954
  %956 = fmul double %952, %955
  %957 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 5
  %958 = load double, ptr %957, align 8, !tbaa !34
  %959 = fdiv double %956, %958
  %960 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 15
  store double %959, ptr %960, align 8, !tbaa !35
  br label %965

961:                                              ; preds = %940
  %962 = load double, ptr %116, align 8, !tbaa !9
  %963 = call noundef double @_ZNK7Polygon19Pc_pistonType_DrainEd(ptr noundef nonnull align 8 dereferenceable(248) %127, double noundef %962)
  %964 = getelementptr inbounds %class.ElemModel, ptr %127, i32 0, i32 15
  store double %963, ptr %964, align 8, !tbaa !35
  br label %965

965:                                              ; preds = %961, %949
  br label %966

966:                                              ; preds = %965, %937
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  store i32 0, ptr %117, align 4
  br label %967

967:                                              ; preds = %966, %838
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  %968 = load i32, ptr %117, align 4
  switch i32 %968, label %975 [
    i32 0, label %969
    i32 1, label %969
  ]

969:                                              ; preds = %967, %967
  ret void

970:                                              ; preds = %726, %555
  %971 = load ptr, ptr %21, align 8
  %972 = load i32, ptr %22, align 4
  %973 = insertvalue { ptr, i32 } poison, ptr %971, 0
  %974 = insertvalue { ptr, i32 } %973, i32 %972, 1
  resume { ptr, i32 } %974

975:                                              ; preds = %967
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !6, i64 24}
!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 = !{!14, !14, i64 0}
!17 = !{!18, !14, i64 184}
!18 = !{!"_ZTS7Polygon", !19, i64 0, !14, i64 184, !20, i64 192, !6, i64 216, !6, i64 224, !24, i64 232, !7, i64 234, !10, i64 240}
!19 = !{!"_ZTS8VoidElem", !12, i64 0, !10, i64 152, !10, i64 160, !10, i64 168, !10, 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 = !{!18, !6, i64 224}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!12, !6, i64 32}
!29 = !{!18, !6, i64 216}
!30 = !{!19, !10, i64 176}
!31 = !{!19, !10, i64 168}
!32 = !{!12, !6, i64 48}
!33 = distinct !{!33, !27}
!34 = !{!12, !10, i64 40}
!35 = !{!12, !10, i64 88}
!36 = !{!12, !10, i64 96}
!37 = distinct !{!37, !27}
!38 = !{!19, !10, i64 152}
!39 = !{!18, !10, i64 240}


; 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 }
%class.CornerApex = type { %class.Apex, ptr, double, double, double, ptr }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@__FUNCTION__._ZN6Circle16initOilInjectionEd = external hidden unnamed_addr constant [17 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
@.str.6 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [25 x i8], align 1
@_ZN9ElemModel2PIE = external local_unnamed_addr constant double, align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.12 = external hidden unnamed_addr constant [5 x i8], align 1

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

; 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: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408)) 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK4Apex15isInOilFloodVecEv(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(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984)) local_unnamed_addr #0 align 2

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

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

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

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

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

; 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

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

; 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 uwtable
define dso_local void @_ZN7Polygon16initOilInjectionEd(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 = alloca %"class.std::__cxx11::basic_string", align 8
  %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::allocator.2", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.2", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.2", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i32, align 4
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator.2", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.2", align 1
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = getelementptr inbounds i8, ptr %0, i64 24
  %45 = load ptr, ptr %44, align 8, !tbaa !5
  %46 = tail call noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408) %45)
  %47 = icmp slt i32 %46, 1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #8
  br i1 %47, label %48, label %63

48:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  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 %49 unwind label %98

49:                                               ; preds = %48
  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 %50 unwind label %100

50:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @__FUNCTION__._ZN6Circle16initOilInjectionEd, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %51 unwind label %102

51:                                               ; preds = %50
  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 %52 unwind label %104

52:                                               ; preds = %51
  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 %53 unwind label %106

53:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  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 %54 unwind label %108

54:                                               ; preds = %53
  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 %55 unwind label %110

55:                                               ; preds = %54
  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 %56 unwind label %112

56:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #8
  store i32 121, ptr %16, align 4, !tbaa !14
  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 %57 unwind label %114

57:                                               ; preds = %56
  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 %58 unwind label %116

58:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  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 %59 unwind label %118

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

60:                                               ; preds = %59
  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 %61 unwind label %122

61:                                               ; preds = %60
  %62 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %3, ptr noundef nonnull %17, i32 noundef 0)
          to label %.critedge313 unwind label %124

63:                                               ; preds = %2
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %.critedge334

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

.critedge334:                                     ; preds = %63, %.critedge313
  %64 = load ptr, ptr %44, align 8, !tbaa !5
  call void @_ZN4Elem15resetEventIndexEv(ptr noundef nonnull align 8 dereferenceable(408) %64)
  %65 = load ptr, ptr %44, align 8, !tbaa !5
  %66 = call noundef zeroext i1 @_ZNK4Apex15isInOilFloodVecEv(ptr noundef nonnull align 8 dereferenceable(104) %65)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #8
  br i1 %66, label %67, label %82

67:                                               ; preds = %.critedge334
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %68 unwind label %139

68:                                               ; preds = %67
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(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 @.str.1)
          to label %69 unwind label %141

69:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @__FUNCTION__._ZN6Circle16initOilInjectionEd, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %70 unwind label %143

70:                                               ; preds = %69
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 align 8 dereferenceable(32) %30)
          to label %71 unwind label %145

71:                                               ; preds = %70
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(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 @.str.2)
          to label %72 unwind label %147

72:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %73 unwind label %149

73:                                               ; preds = %72
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 align 8 dereferenceable(32) %32)
          to label %74 unwind label %151

74:                                               ; preds = %73
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(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 @.str.4)
          to label %75 unwind label %153

75:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #8
  store i32 124, ptr %35, align 4, !tbaa !14
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %76 unwind label %155

76:                                               ; preds = %75
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %77 unwind label %157

77:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %78 unwind label %159

78:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %79 unwind label %161

79:                                               ; preds = %78
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %80 unwind label %163

80:                                               ; preds = %79
  %81 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %22, ptr noundef nonnull %36, i32 noundef 0)
          to label %.critedge349 unwind label %165

82:                                               ; preds = %.critedge334
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #8
  br label %.critedge370

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

.critedge370:                                     ; preds = %82, %.critedge349
  %83 = getelementptr inbounds i8, ptr %0, i64 184
  %84 = load i32, ptr %83, align 8, !tbaa !15
  %85 = icmp sgt i32 %84, 0
  br i1 %85, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.critedge370
  %86 = getelementptr inbounds i8, ptr %0, i64 224
  br label %180

._crit_edge:                                      ; preds = %180, %.critedge370
  %87 = getelementptr inbounds i8, ptr %0, i64 32
  %88 = load ptr, ptr %87, align 8, !tbaa !23
  %89 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %88)
  %90 = load i32, ptr %83, align 8, !tbaa !15
  %91 = icmp sgt i32 %90, 0
  br i1 %91, label %.lr.ph375, label %._crit_edge376

.lr.ph375:                                        ; preds = %._crit_edge
  %92 = getelementptr inbounds i8, ptr %0, i64 216
  %93 = getelementptr inbounds i8, ptr %0, i64 176
  %94 = getelementptr inbounds i8, ptr %0, i64 168
  %95 = getelementptr inbounds i8, ptr %0, i64 192
  %96 = getelementptr inbounds i8, ptr %0, i64 48
  %97 = getelementptr inbounds i8, ptr %0, i64 224
  br label %196

98:                                               ; preds = %48
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %138

100:                                              ; preds = %49
  %101 = landingpad { ptr, i32 }
          cleanup
  br label %137

102:                                              ; preds = %50
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %136

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

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

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

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

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

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

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

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

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

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

124:                                              ; preds = %61
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %126

126:                                              ; preds = %122, %124
  %.pn = phi { ptr, i32 } [ %125, %124 ], [ %123, %122 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  br label %127

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

128:                                              ; preds = %118, %127
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %127 ], [ %119, %118 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #8
  br label %129

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

130:                                              ; preds = %129, %114
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %129 ], [ %115, %114 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  br label %131

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

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

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

134:                                              ; preds = %106, %133
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn, %133 ], [ %107, %106 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %135

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

136:                                              ; preds = %102, %135
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %135 ], [ %103, %102 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  br label %137

137:                                              ; preds = %100, %136
  %.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, %136 ], [ %101, %100 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %138

138:                                              ; preds = %98, %137
  %.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, %137 ], [ %99, %98 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #8
  br label %328

139:                                              ; preds = %67
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %179

141:                                              ; preds = %68
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %178

143:                                              ; preds = %69
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %177

145:                                              ; preds = %70
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %176

147:                                              ; preds = %71
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %175

149:                                              ; preds = %72
  %150 = landingpad { ptr, i32 }
          cleanup
  br label %174

151:                                              ; preds = %73
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %173

153:                                              ; preds = %74
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %172

155:                                              ; preds = %75
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %171

157:                                              ; preds = %76
  %158 = landingpad { ptr, i32 }
          cleanup
  br label %170

159:                                              ; preds = %77
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %169

161:                                              ; preds = %78
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %168

163:                                              ; preds = %79
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %167

165:                                              ; preds = %80
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br label %167

167:                                              ; preds = %163, %165
  %.pn286 = phi { ptr, i32 } [ %166, %165 ], [ %164, %163 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  br label %168

168:                                              ; preds = %161, %167
  %.pn286.pn = phi { ptr, i32 } [ %.pn286, %167 ], [ %162, %161 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %169

169:                                              ; preds = %159, %168
  %.pn286.pn.pn = phi { ptr, i32 } [ %.pn286.pn, %168 ], [ %160, %159 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %170

170:                                              ; preds = %157, %169
  %.pn286.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn, %169 ], [ %158, %157 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %171

171:                                              ; preds = %170, %155
  %.pn286.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn, %170 ], [ %156, %155 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %172

172:                                              ; preds = %153, %171
  %.pn286.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn, %171 ], [ %154, %153 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %173

173:                                              ; preds = %151, %172
  %.pn286.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn, %172 ], [ %152, %151 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %174

174:                                              ; preds = %149, %173
  %.pn286.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn, %173 ], [ %150, %149 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %175

175:                                              ; preds = %147, %174
  %.pn286.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn.pn, %174 ], [ %148, %147 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %176

176:                                              ; preds = %145, %175
  %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn.pn.pn, %175 ], [ %146, %145 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %177

177:                                              ; preds = %143, %176
  %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn, %176 ], [ %144, %143 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %178

178:                                              ; preds = %141, %177
  %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %177 ], [ %142, %141 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %179

179:                                              ; preds = %139, %178
  %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %178 ], [ %140, %139 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  br label %328

180:                                              ; preds = %.lr.ph, %180
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %180 ]
  %181 = load ptr, ptr %86, align 8, !tbaa !24
  %182 = getelementptr inbounds %class.LayerApex, ptr %181, i64 %indvars.iv
  call void @_ZN4Apex16setInWatFloodVecEb(ptr noundef nonnull align 8 dereferenceable(104) %182, i1 noundef zeroext false)
  %183 = load ptr, ptr %86, align 8, !tbaa !24
  %184 = getelementptr inbounds %class.LayerApex, ptr %183, i64 %indvars.iv
  call void @_ZN4Apex16setInOilFloodVecEb(ptr noundef nonnull align 8 dereferenceable(104) %184, i1 noundef zeroext false)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %185 = load i32, ptr %83, align 8, !tbaa !15
  %186 = sext i32 %185 to i64
  %187 = icmp slt i64 %indvars.iv.next, %186
  br i1 %187, label %180, label %._crit_edge, !llvm.loop !25

._crit_edge376:                                   ; preds = %219, %._crit_edge
  %188 = getelementptr inbounds i8, ptr %0, i64 176
  %189 = load double, ptr %188, align 8, !tbaa !27
  %190 = getelementptr inbounds i8, ptr %0, i64 48
  %191 = load ptr, ptr %190, align 8, !tbaa !28
  %192 = load ptr, ptr %87, align 8, !tbaa !23
  %193 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984) %192)
  %194 = icmp eq ptr %191, %193
  %195 = load ptr, ptr %87, align 8, !tbaa !23
  br i1 %194, label %223, label %243

196:                                              ; preds = %.lr.ph375, %219
  %indvars.iv383 = phi i64 [ 0, %.lr.ph375 ], [ %indvars.iv.next384, %219 ]
  %197 = load ptr, ptr %92, align 8, !tbaa !29
  %198 = getelementptr inbounds %class.CornerApex, ptr %197, i64 %indvars.iv383
  %199 = load double, ptr %93, align 8, !tbaa !27
  %200 = load double, ptr %94, align 8, !tbaa !30
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %indvars.iv383) #8
  %202 = load double, ptr %201, align 8, !tbaa !31
  call void @_ZN10CornerApex14initCornerApexEdddddb(ptr noundef nonnull align 8 dereferenceable(144) %198, double noundef %1, double noundef %199, double noundef %200, double noundef %202, double noundef %89, i1 noundef zeroext true)
  %203 = load ptr, ptr %96, align 8, !tbaa !28
  %204 = load ptr, ptr %87, align 8, !tbaa !23
  %205 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %204)
  %206 = icmp eq ptr %203, %205
  br i1 %206, label %207, label %219

207:                                              ; preds = %196
  %208 = load ptr, ptr %97, align 8, !tbaa !24
  %209 = getelementptr inbounds %class.LayerApex, ptr %208, i64 %indvars.iv383
  %210 = load double, ptr %93, align 8, !tbaa !27
  %211 = load double, ptr %94, align 8, !tbaa !30
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %indvars.iv383) #8
  %213 = load double, ptr %212, align 8, !tbaa !31
  %214 = call noundef zeroext i1 @_ZN9LayerApex13initLayerApexEdddddbb(ptr noundef nonnull align 8 dereferenceable(144) %209, double noundef %1, double noundef %210, double noundef %211, double noundef %213, double noundef %89, i1 noundef zeroext true, i1 noundef zeroext false)
  br i1 %214, label %219, label %215

215:                                              ; preds = %207
  %216 = trunc nuw nsw i64 %indvars.iv383 to i32
  %217 = call noundef double @_ZN7Polygon25Pc_pin_disconnectOilLayerEi(ptr noundef nonnull align 8 dereferenceable(248) %0, i32 noundef %216)
  %218 = 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.12)
  br label %219

219:                                              ; preds = %196, %215, %207
  %indvars.iv.next384 = add nuw nsw i64 %indvars.iv383, 1
  %220 = load i32, ptr %83, align 8, !tbaa !15
  %221 = sext i32 %220 to i64
  %222 = icmp slt i64 %indvars.iv.next384, %221
  br i1 %222, label %196, label %._crit_edge376, !llvm.loop !32

223:                                              ; preds = %._crit_edge376
  %224 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %195)
  %225 = load double, ptr %188, align 8, !tbaa !27
  %226 = call double @cos(double noundef %225) #8
  %227 = fmul double %226, 2.000000e+00
  %228 = fmul double %224, %227
  %229 = getelementptr inbounds i8, ptr %0, i64 40
  %230 = load double, ptr %229, align 8, !tbaa !33
  %231 = fdiv double %228, %230
  %232 = getelementptr inbounds i8, ptr %0, i64 88
  store double %231, ptr %232, align 8, !tbaa !34
  %233 = getelementptr inbounds i8, ptr %0, i64 96
  %234 = load double, ptr %233, align 8, !tbaa !35
  %235 = fcmp olt double %234, %1
  br i1 %235, label %236, label %327

236:                                              ; preds = %223
  %237 = load double, ptr %188, align 8, !tbaa !27
  %238 = call double @cos(double noundef %237) #8
  %239 = fmul double %238, %1
  %240 = load double, ptr %188, align 8, !tbaa !27
  %241 = call double @cos(double noundef %240) #8
  %242 = fdiv double %239, %241
  store double %242, ptr %232, align 8, !tbaa !34
  br label %327

243:                                              ; preds = %._crit_edge376
  %244 = call noundef double @_ZNK10CommonData17minPcLastImbCycleEv(ptr noundef nonnull align 8 dereferenceable(1972) %195)
  %245 = load ptr, ptr %44, align 8, !tbaa !5
  %246 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %245)
  %247 = fsub double %244, %246
  %248 = load ptr, ptr %87, align 8, !tbaa !23
  %249 = call noundef double @_ZNK10CommonData16minEverCappPressEv(ptr noundef nonnull align 8 dereferenceable(1972) %248)
  %250 = load ptr, ptr %44, align 8, !tbaa !5
  %251 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %250)
  %252 = fsub double %249, %251
  %253 = getelementptr inbounds i8, ptr %0, i64 224
  %254 = load ptr, ptr %253, align 8, !tbaa !24
  %255 = call noundef zeroext i1 @_ZNK9LayerApex23stablePinnedInLastCycleEd(ptr noundef nonnull align 8 dereferenceable(144) %254, double noundef %247)
  %256 = select i1 %255, double %247, double %252
  %257 = getelementptr inbounds i8, ptr %0, i64 40
  %258 = load double, ptr %257, align 8, !tbaa !33
  %259 = fmul double %258, %256
  %260 = load ptr, ptr %87, align 8, !tbaa !23
  %261 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %260)
  %262 = fdiv double %259, %261
  %263 = load i32, ptr %83, align 8, !tbaa !15
  %264 = icmp sgt i32 %263, 0
  br i1 %264, label %.lr.ph380, label %._crit_edge381

.lr.ph380:                                        ; preds = %243
  %265 = getelementptr inbounds i8, ptr %0, i64 168
  %266 = getelementptr inbounds i8, ptr %0, i64 192
  br label %287

._crit_edge381:                                   ; preds = %298, %243
  %.0171.lcssa = phi double [ 0.000000e+00, %243 ], [ %.1, %298 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #8
  %267 = getelementptr inbounds i8, ptr %0, i64 152
  %268 = load double, ptr %267, align 8, !tbaa !36
  %269 = fmul double %268, 4.000000e+00
  %270 = fmul double %.0171.lcssa, %269
  %271 = getelementptr inbounds i8, ptr %0, i64 168
  %272 = load double, ptr %271, align 8, !tbaa !30
  %273 = call double @cos(double noundef %272) #8
  %274 = fsub double %262, %273
  %275 = load double, ptr %267, align 8, !tbaa !36
  %276 = load double, ptr %271, align 8, !tbaa !30
  %277 = call double @sin(double noundef %276) #8
  %278 = fmul double %275, -1.200000e+01
  %279 = call double @llvm.fmuladd.f64(double %278, double %277, double %274)
  %280 = fdiv double %270, %279
  store double %280, ptr %41, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  store double -1.000000e+00, ptr %42, align 8, !tbaa !31
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  store double 1.000000e+00, ptr %43, align 8, !tbaa !31
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef nonnull align 8 dereferenceable(8) %43)
  %283 = load double, ptr %282, align 8, !tbaa !31
  store double %283, ptr %41, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  %284 = call double @acos(double noundef %283) #8
  %285 = getelementptr inbounds i8, ptr %0, i64 240
  store double %284, ptr %285, align 8, !tbaa !37
  %286 = fcmp ogt double %189, %284
  br i1 %286, label %302, label %307

287:                                              ; preds = %.lr.ph380, %298
  %indvars.iv386 = phi i64 [ 0, %.lr.ph380 ], [ %indvars.iv.next387, %298 ]
  %.0171377 = phi double [ 0.000000e+00, %.lr.ph380 ], [ %.1, %298 ]
  %288 = load ptr, ptr %253, align 8, !tbaa !24
  %289 = getelementptr inbounds %class.LayerApex, ptr %288, i64 %indvars.iv386
  %290 = call noundef zeroext i1 @_ZNK4Apex6existsEv(ptr noundef nonnull align 8 dereferenceable(104) %289)
  br i1 %290, label %291, label %298

291:                                              ; preds = %287
  %292 = load double, ptr %265, align 8, !tbaa !30
  %293 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %266, i64 noundef %indvars.iv386) #8
  %294 = load double, ptr %293, align 8, !tbaa !31
  %295 = fsub double %292, %294
  %296 = call double @cos(double noundef %295) #8
  %297 = fadd double %.0171377, %296
  br label %298

298:                                              ; preds = %287, %291
  %.1 = phi double [ %297, %291 ], [ %.0171377, %287 ]
  %indvars.iv.next387 = add nuw nsw i64 %indvars.iv386, 1
  %299 = load i32, ptr %83, align 8, !tbaa !15
  %300 = sext i32 %299 to i64
  %301 = icmp slt i64 %indvars.iv.next387, %300
  br i1 %301, label %287, label %._crit_edge381, !llvm.loop !38

302:                                              ; preds = %._crit_edge381
  %303 = load ptr, ptr %253, align 8, !tbaa !24
  %304 = call noundef zeroext i1 @_ZNK4Apex6existsEv(ptr noundef nonnull align 8 dereferenceable(104) %303)
  br i1 %304, label %305, label %307

305:                                              ; preds = %302
  %306 = call noundef double @_ZNK7Polygon23Pc_pistonType_DrainHingEv(ptr noundef nonnull align 8 dereferenceable(248) %0)
  br label %325

307:                                              ; preds = %302, %._crit_edge381
  %308 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !31
  %309 = fmul double %308, 5.000000e-01
  %310 = getelementptr inbounds i8, ptr %0, i64 192
  %311 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %310, i64 noundef 0) #8
  %312 = load double, ptr %311, align 8, !tbaa !31
  %313 = fsub double %309, %312
  %314 = fcmp ult double %189, %313
  br i1 %314, label %323, label %315

315:                                              ; preds = %307
  %316 = load ptr, ptr %87, align 8, !tbaa !23
  %317 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %316)
  %318 = call double @cos(double noundef %189) #8
  %319 = fmul double %318, 2.000000e+00
  %320 = fmul double %317, %319
  %321 = load double, ptr %257, align 8, !tbaa !33
  %322 = fdiv double %320, %321
  br label %325

323:                                              ; preds = %307
  %324 = call noundef double @_ZNK7Polygon19Pc_pistonType_DrainEd(ptr noundef nonnull align 8 dereferenceable(248) %0, double noundef %189)
  br label %325

325:                                              ; preds = %315, %323, %305
  %.sink = phi double [ %322, %315 ], [ %324, %323 ], [ %306, %305 ]
  %326 = getelementptr inbounds i8, ptr %0, i64 88
  store double %.sink, ptr %326, align 8, !tbaa !34
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  br label %327

327:                                              ; preds = %223, %236, %325
  ret void

328:                                              ; preds = %179, %138
  %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %179 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %138 ]
  resume { ptr, i32 } %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

declare noundef zeroext i1 @_ZN9LayerApex13initLayerApexEdddddbb(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 #7

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK10CommonData16minEverCappPressEv(ptr noundef nonnull align 8 dereferenceable(1972)) local_unnamed_addr #0 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 #5 align 2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 24}
!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 = !{!12, !12, i64 0}
!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 = !{!6, !10, i64 32}
!24 = !{!16, !10, i64 224}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!17, !7, i64 176}
!28 = !{!6, !10, i64 48}
!29 = !{!16, !10, i64 216}
!30 = !{!17, !7, i64 168}
!31 = !{!7, !7, i64 0}
!32 = distinct !{!32, !26}
!33 = !{!6, !7, i64 40}
!34 = !{!6, !7, i64 88}
!35 = !{!6, !7, i64 96}
!36 = !{!17, !7, i64 152}
!37 = !{!16, !7, i64 240}
!38 = distinct !{!38, !26}


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