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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::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.VoidElem = type { %class.ElemModel, double, double, double, double }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZN9ElemModel2PIE = external constant double, align 8
@__FUNCTION__._ZN6Circle20centreEntryPrsOilInjEv = external hidden unnamed_addr constant [21 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1

; 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 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 uwtable
define dso_local noundef double @_ZN6Circle20centreEntryPrsOilInjEv(ptr noundef nonnull align 8 dereferenceable(184) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca i1, align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca i1, align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca i1, align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca i1, align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca i1, align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca i1, align 1
  %27 = alloca %"class.std::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 %"class.std::__cxx11::basic_string", align 8
  %33 = alloca i1, align 1
  %34 = alloca %"class.std::allocator.2", align 1
  %35 = alloca i1, align 1
  %36 = alloca i1, align 1
  %37 = alloca i1, align 1
  %38 = alloca i1, align 1
  %39 = alloca i1, align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca i1, align 1
  %42 = alloca %"class.std::allocator.2", align 1
  %43 = alloca i1, align 1
  %44 = alloca i1, align 1
  %45 = alloca i1, align 1
  %46 = alloca i1, align 1
  %47 = alloca i1, align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca i1, align 1
  %50 = alloca i32, align 4
  %51 = alloca i1, align 1
  %52 = alloca i1, align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca i1, align 1
  %56 = alloca %"class.std::allocator.2", 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 i1, align 1
  %62 = alloca %"class.std::allocator.2", align 1
  %63 = alloca i1, align 1
  %64 = alloca i1, align 1
  %65 = alloca i1, align 1
  %66 = alloca i1, align 1
  %67 = alloca double, align 8
  %68 = alloca i32, align 4
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %71 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #7
  %72 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 3
  %73 = load ptr, ptr %72, align 8, !tbaa !9
  %74 = call noundef i32 @_ZNK4Elem22numOilCentreFeederNeisEv(ptr noundef nonnull align 8 dereferenceable(408) %73)
  store i32 %74, ptr %3, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  %75 = getelementptr inbounds %class.VoidElem, ptr %71, i32 0, i32 4
  %76 = load double, ptr %75, align 8, !tbaa !16
  store double %76, ptr %4, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #7
  %77 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 15
  %78 = load double, ptr %77, align 8, !tbaa !19
  store double %78, ptr %5, align 8, !tbaa !18
  %79 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 3
  %80 = load ptr, ptr %79, align 8, !tbaa !9
  %81 = call noundef zeroext i1 @_ZNK4Elem8iAmAPoreEv(ptr noundef nonnull align 8 dereferenceable(408) %80)
  br i1 %81, label %82, label %523

82:                                               ; preds = %1
  %83 = load double, ptr %4, align 8, !tbaa !18
  %84 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !18
  %85 = fdiv double %84, 2.000000e+00
  %86 = fcmp ogt double %83, %85
  br i1 %86, label %87, label %523

87:                                               ; preds = %82
  %88 = load i32, ptr %3, align 4, !tbaa !15
  %89 = icmp ne i32 %88, 0
  br i1 %89, label %90, label %523

90:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  store double 0.000000e+00, ptr %6, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  store i32 0, ptr %7, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #7
  %91 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 4
  %92 = load ptr, ptr %91, align 8, !tbaa !20
  %93 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK10CommonData11poreFillAlgB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(1972) %92)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %93)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !15
  br label %94

94:                                               ; preds = %182, %90
  %95 = load i32, ptr %9, align 4, !tbaa !15
  %96 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 3
  %97 = load ptr, ptr %96, align 8, !tbaa !9
  %98 = invoke noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408) %97)
          to label %99 unwind label %102

99:                                               ; preds = %94
  %100 = icmp slt i32 %95, %98
  br i1 %100, label %106, label %101

101:                                              ; preds = %99
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  br label %186

102:                                              ; preds = %126, %120, %117, %113, %111, %106, %94
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %10, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %11, align 4
  br label %185

106:                                              ; preds = %99
  %107 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 3
  %108 = load ptr, ptr %107, align 8, !tbaa !9
  %109 = load i32, ptr %9, align 4, !tbaa !15
  %110 = invoke noundef ptr @_ZNK4Elem4neibEi(ptr noundef nonnull align 8 dereferenceable(408) %108, i32 noundef %109)
          to label %111 unwind label %102

111:                                              ; preds = %106
  %112 = invoke noundef ptr @_ZNK4Elem5modelEv(ptr noundef nonnull align 8 dereferenceable(408) %110)
          to label %113 unwind label %102

113:                                              ; preds = %111
  %114 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 4
  %115 = load ptr, ptr %114, align 8, !tbaa !20
  %116 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %115)
          to label %117 unwind label %102

117:                                              ; preds = %113
  %118 = invoke noundef zeroext i1 @_ZNK9ElemModel17affectsAdjEntryPcERK5Fluid(ptr noundef nonnull align 8 dereferenceable(152) %112, ptr noundef nonnull align 8 dereferenceable(80) %116)
          to label %119 unwind label %102

119:                                              ; preds = %117
  br i1 %118, label %120, label %181

120:                                              ; preds = %119
  %121 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0)
          to label %122 unwind label %102

122:                                              ; preds = %120
  %123 = load i8, ptr %121, align 1, !tbaa !21
  %124 = sext i8 %123 to i32
  %125 = icmp eq i32 %124, 111
  br i1 %125, label %132, label %126

126:                                              ; preds = %122
  %127 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0)
          to label %128 unwind label %102

128:                                              ; preds = %126
  %129 = load i8, ptr %127, align 1, !tbaa !21
  %130 = sext i8 %129 to i32
  %131 = icmp eq i32 %130, 79
  br i1 %131, label %132, label %160

132:                                              ; preds = %128, %122
  %133 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 4
  %134 = load ptr, ptr %133, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 5, ptr %12, align 4, !tbaa !15
  %135 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %136 unwind label %156

136:                                              ; preds = %132
  %137 = load i32, ptr %135, align 4, !tbaa !15
  %138 = invoke noundef double @_ZNK10CommonData15poreFillWeightsEi(ptr noundef nonnull align 8 dereferenceable(1972) %134, i32 noundef %137)
          to label %139 unwind label %156

139:                                              ; preds = %136
  %140 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 3
  %141 = load ptr, ptr %140, align 8, !tbaa !9
  %142 = load i32, ptr %9, align 4, !tbaa !15
  %143 = invoke noundef ptr @_ZNK4Elem4neibEi(ptr noundef nonnull align 8 dereferenceable(408) %141, i32 noundef %142)
          to label %144 unwind label %156

144:                                              ; preds = %139
  %145 = invoke noundef ptr @_ZNK4Elem5modelEv(ptr noundef nonnull align 8 dereferenceable(408) %143)
          to label %146 unwind label %156

146:                                              ; preds = %144
  %147 = invoke noundef double @_ZNK9ElemModel3RRREv(ptr noundef nonnull align 8 dereferenceable(152) %145)
          to label %148 unwind label %156

148:                                              ; preds = %146
  %149 = fmul double %138, %147
  %150 = call i32 @rand() #7
  %151 = sitofp i32 %150 to double
  %152 = fmul double %149, %151
  %153 = fdiv double %152, 0x41DFFFFFFFC00000
  %154 = load double, ptr %6, align 8, !tbaa !18
  %155 = fadd double %154, %153
  store double %155, ptr %6, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %178

156:                                              ; preds = %146, %144, %139, %136, %132
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %10, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %185

160:                                              ; preds = %128
  %161 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 4
  %162 = load ptr, ptr %161, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  store i32 5, ptr %13, align 4, !tbaa !15
  %163 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %164 unwind label %174

164:                                              ; preds = %160
  %165 = load i32, ptr %163, align 4, !tbaa !15
  %166 = invoke noundef double @_ZNK10CommonData15poreFillWeightsEi(ptr noundef nonnull align 8 dereferenceable(1972) %162, i32 noundef %165)
          to label %167 unwind label %174

167:                                              ; preds = %164
  %168 = call i32 @rand() #7
  %169 = sitofp i32 %168 to double
  %170 = fmul double %166, %169
  %171 = fdiv double %170, 0x41DFFFFFFFC00000
  %172 = load double, ptr %6, align 8, !tbaa !18
  %173 = fadd double %172, %171
  store double %173, ptr %6, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %178

174:                                              ; preds = %164, %160
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %10, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %185

178:                                              ; preds = %167, %148
  %179 = load i32, ptr %7, align 4, !tbaa !15
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %7, align 4, !tbaa !15
  br label %181

181:                                              ; preds = %178, %119
  br label %182

182:                                              ; preds = %181
  %183 = load i32, ptr %9, align 4, !tbaa !15
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr %9, align 4, !tbaa !15
  br label %94, !llvm.loop !22

185:                                              ; preds = %174, %156, %102
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  br label %522

186:                                              ; preds = %101
  %187 = load i32, ptr %7, align 4, !tbaa !15
  %188 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 3
  %189 = load ptr, ptr %188, align 8, !tbaa !9
  store i1 false, ptr %16, align 1
  store i1 false, ptr %18, align 1
  store i1 false, ptr %20, align 1
  store i1 false, ptr %22, align 1
  store i1 false, ptr %24, align 1
  store i1 false, ptr %26, align 1
  store i1 false, ptr %28, align 1
  store i1 false, ptr %29, align 1
  store i1 false, ptr %30, align 1
  store i1 false, ptr %31, align 1
  store i1 false, ptr %33, align 1
  store i1 false, ptr %35, align 1
  store i1 false, ptr %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 %41, align 1
  store i1 false, ptr %43, align 1
  store i1 false, ptr %44, align 1
  store i1 false, ptr %45, align 1
  store i1 false, ptr %46, align 1
  store i1 false, ptr %47, align 1
  store i1 false, ptr %49, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  store i1 false, ptr %51, align 1
  store i1 false, ptr %52, align 1
  store i1 false, ptr %55, align 1
  store i1 false, ptr %57, align 1
  store i1 false, ptr %58, align 1
  store i1 false, ptr %59, align 1
  store i1 false, ptr %61, align 1
  store i1 false, ptr %63, align 1
  store i1 false, ptr %64, align 1
  store i1 false, ptr %65, align 1
  store i1 false, ptr %66, align 1
  %190 = invoke noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408) %189)
          to label %191 unwind label %332

191:                                              ; preds = %186
  %192 = load i32, ptr %3, align 4, !tbaa !15
  %193 = sub nsw i32 %190, %192
  %194 = icmp eq i32 %187, %193
  br i1 %194, label %211, label %195

195:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #7
  store i1 true, ptr %16, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #7
  store i1 true, ptr %18, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #7
  store i1 true, ptr %20, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #7
  store i1 true, ptr %22, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  store i1 true, ptr %24, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  store i1 true, ptr %26, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  store i1 true, ptr %28, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  store i1 true, ptr %29, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %196 unwind label %336

196:                                              ; preds = %195
  store i1 true, ptr %30, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.1)
          to label %197 unwind label %340

197:                                              ; preds = %196
  store i1 true, ptr %31, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #7
  store i1 true, ptr %33, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #7
  store i1 true, ptr %35, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  store i1 true, ptr %36, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @__FUNCTION__._ZN6Circle20centreEntryPrsOilInjEv, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %198 unwind label %344

198:                                              ; preds = %197
  store i1 true, ptr %37, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %199 unwind label %348

199:                                              ; preds = %198
  store i1 true, ptr %38, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.2)
          to label %200 unwind label %352

200:                                              ; preds = %199
  store i1 true, ptr %39, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #7
  store i1 true, ptr %41, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #7
  store i1 true, ptr %43, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  store i1 true, ptr %44, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %201 unwind label %356

201:                                              ; preds = %200
  store i1 true, ptr %45, 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 %17, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %202 unwind label %360

202:                                              ; preds = %201
  store i1 true, ptr %46, 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 %15, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.4)
          to label %203 unwind label %364

203:                                              ; preds = %202
  store i1 true, ptr %47, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #7
  store i1 true, ptr %49, align 1
  store i32 65, ptr %50, align 4, !tbaa !15
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 4 dereferenceable(4) %50)
          to label %204 unwind label %368

204:                                              ; preds = %203
  store i1 true, ptr %51, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %205 unwind label %372

205:                                              ; preds = %204
  store i1 true, ptr %52, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #7
  store i1 true, ptr %55, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #7
  store i1 true, ptr %57, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  store i1 true, ptr %58, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %206 unwind label %376

206:                                              ; preds = %205
  store i1 true, ptr %59, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #7
  store i1 true, ptr %61, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #7
  store i1 true, ptr %63, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  store i1 true, ptr %64, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %207 unwind label %380

207:                                              ; preds = %206
  store i1 true, ptr %65, 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 %53, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(32) %60)
          to label %208 unwind label %384

208:                                              ; preds = %207
  store i1 true, ptr %66, align 1
  %209 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %14, ptr noundef %53, i32 noundef 0)
          to label %210 unwind label %388

210:                                              ; preds = %208
  br label %211

211:                                              ; preds = %210, %191
  %212 = phi i1 [ true, %191 ], [ %209, %210 ]
  %213 = xor i1 %212, true
  %214 = load i1, ptr %66, align 1
  br i1 %214, label %215, label %216

215:                                              ; preds = %211
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %216

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

218:                                              ; preds = %216
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %219

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

221:                                              ; preds = %219
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  br label %222

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

224:                                              ; preds = %222
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #7
  br label %225

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

227:                                              ; preds = %225
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  br label %228

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

230:                                              ; preds = %228
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  br label %231

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

233:                                              ; preds = %231
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  br label %234

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

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

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

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

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

242:                                              ; preds = %240
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %243

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

245:                                              ; preds = %243
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  br label %246

246:                                              ; preds = %245, %243
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  %247 = load i1, ptr %49, align 1
  br i1 %247, label %248, label %249

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

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

251:                                              ; preds = %249
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %252

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

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

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

257:                                              ; preds = %255
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  br label %258

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

260:                                              ; preds = %258
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  br label %261

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

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

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

266:                                              ; preds = %264
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  br label %267

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

269:                                              ; preds = %267
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %270

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

272:                                              ; preds = %270
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %273

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

275:                                              ; preds = %273
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %276

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

278:                                              ; preds = %276
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  br label %279

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

281:                                              ; preds = %279
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  br label %282

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

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

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

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

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

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

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

293:                                              ; preds = %291
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  br label %294

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

296:                                              ; preds = %294
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  br label %297

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

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

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

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

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

305:                                              ; preds = %303
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  br label %306

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

308:                                              ; preds = %306
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  br label %309

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

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

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

314:                                              ; preds = %312
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  br label %315

315:                                              ; preds = %314, %312
  %316 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef @.str.9)
          to label %317 unwind label %332

317:                                              ; preds = %315
  br i1 %316, label %318, label %507

318:                                              ; preds = %317
  %319 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 4
  %320 = load ptr, ptr %319, align 8, !tbaa !20
  %321 = invoke noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %320)
          to label %322 unwind label %332

322:                                              ; preds = %318
  %323 = load double, ptr %4, align 8, !tbaa !18
  %324 = call double @cos(double noundef %323) #7
  %325 = fmul double 2.000000e+00, %324
  %326 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 5
  %327 = load double, ptr %326, align 8, !tbaa !24
  %328 = fdiv double %325, %327
  %329 = load double, ptr %6, align 8, !tbaa !18
  %330 = fsub double %328, %329
  %331 = fmul double %321, %330
  store double %331, ptr %5, align 8, !tbaa !18
  br label %521

332:                                              ; preds = %507, %318, %315, %186
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %10, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %11, align 4
  br label %522

336:                                              ; preds = %195
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %10, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %11, align 4
  br label %482

340:                                              ; preds = %196
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %10, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %11, align 4
  br label %478

344:                                              ; preds = %197
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %10, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %11, align 4
  br label %465

348:                                              ; preds = %198
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %10, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %11, align 4
  br label %461

352:                                              ; preds = %199
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %10, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %11, align 4
  br label %457

356:                                              ; preds = %200
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %10, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %11, align 4
  br label %444

360:                                              ; preds = %201
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %10, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %11, align 4
  br label %440

364:                                              ; preds = %202
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %10, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %11, align 4
  br label %436

368:                                              ; preds = %203
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %10, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %11, align 4
  br label %429

372:                                              ; preds = %204
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %10, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %11, align 4
  br label %425

376:                                              ; preds = %205
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %10, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %11, align 4
  br label %412

380:                                              ; preds = %206
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %10, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %11, align 4
  br label %399

384:                                              ; preds = %207
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %10, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %11, align 4
  br label %395

388:                                              ; preds = %208
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %10, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %11, align 4
  %392 = load i1, ptr %66, align 1
  br i1 %392, label %393, label %394

393:                                              ; preds = %388
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %394

394:                                              ; preds = %393, %388
  br label %395

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

397:                                              ; preds = %395
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %398

398:                                              ; preds = %397, %395
  br label %399

399:                                              ; preds = %398, %380
  %400 = load i1, ptr %64, align 1
  br i1 %400, label %401, label %402

401:                                              ; preds = %399
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  br label %402

402:                                              ; preds = %401, %399
  %403 = load i1, ptr %63, align 1
  br i1 %403, label %404, label %405

404:                                              ; preds = %402
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #7
  br label %405

405:                                              ; preds = %404, %402
  %406 = load i1, ptr %61, align 1
  br i1 %406, label %407, label %408

407:                                              ; preds = %405
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  br label %408

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

410:                                              ; preds = %408
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  br label %411

411:                                              ; preds = %410, %408
  br label %412

412:                                              ; preds = %411, %376
  %413 = load i1, ptr %58, align 1
  br i1 %413, label %414, label %415

414:                                              ; preds = %412
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  br label %415

415:                                              ; preds = %414, %412
  %416 = load i1, ptr %57, align 1
  br i1 %416, label %417, label %418

417:                                              ; preds = %415
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  br label %418

418:                                              ; preds = %417, %415
  %419 = load i1, ptr %55, align 1
  br i1 %419, label %420, label %421

420:                                              ; preds = %418
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  br label %421

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

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

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

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

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

428:                                              ; preds = %427, %425
  br label %429

429:                                              ; preds = %428, %368
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  %430 = load i1, ptr %49, align 1
  br i1 %430, label %431, label %432

431:                                              ; preds = %429
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  br label %432

432:                                              ; preds = %431, %429
  %433 = load i1, ptr %47, align 1
  br i1 %433, label %434, label %435

434:                                              ; preds = %432
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %435

435:                                              ; preds = %434, %432
  br label %436

436:                                              ; preds = %435, %364
  %437 = load i1, ptr %46, align 1
  br i1 %437, label %438, label %439

438:                                              ; preds = %436
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %439

439:                                              ; preds = %438, %436
  br label %440

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

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

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

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

446:                                              ; preds = %444
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  br label %447

447:                                              ; preds = %446, %444
  %448 = load i1, ptr %43, align 1
  br i1 %448, label %449, label %450

449:                                              ; preds = %447
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  br label %450

450:                                              ; preds = %449, %447
  %451 = load i1, ptr %41, align 1
  br i1 %451, label %452, label %453

452:                                              ; preds = %450
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  br label %453

453:                                              ; preds = %452, %450
  %454 = load i1, ptr %39, align 1
  br i1 %454, label %455, label %456

455:                                              ; preds = %453
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %456

456:                                              ; preds = %455, %453
  br label %457

457:                                              ; preds = %456, %352
  %458 = load i1, ptr %38, 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) %21) #7
  br label %460

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

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

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

464:                                              ; preds = %463, %461
  br label %465

465:                                              ; preds = %464, %344
  %466 = load i1, ptr %36, align 1
  br i1 %466, label %467, label %468

467:                                              ; preds = %465
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  br label %468

468:                                              ; preds = %467, %465
  %469 = load i1, ptr %35, align 1
  br i1 %469, label %470, label %471

470:                                              ; preds = %468
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  br label %471

471:                                              ; preds = %470, %468
  %472 = load i1, ptr %33, align 1
  br i1 %472, label %473, label %474

473:                                              ; preds = %471
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  br label %474

474:                                              ; preds = %473, %471
  %475 = load i1, ptr %31, 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) %23) #7
  br label %477

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

478:                                              ; preds = %477, %340
  %479 = load i1, ptr %30, align 1
  br i1 %479, label %480, label %481

480:                                              ; preds = %478
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %481

481:                                              ; preds = %480, %478
  br label %482

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

484:                                              ; preds = %482
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  br label %485

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

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

488:                                              ; preds = %487, %485
  %489 = load i1, ptr %26, align 1
  br i1 %489, label %490, label %491

490:                                              ; preds = %488
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  br label %491

491:                                              ; preds = %490, %488
  %492 = load i1, ptr %24, align 1
  br i1 %492, label %493, label %494

493:                                              ; preds = %491
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  br label %494

494:                                              ; preds = %493, %491
  %495 = load i1, ptr %22, align 1
  br i1 %495, label %496, label %497

496:                                              ; preds = %494
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  br label %497

497:                                              ; preds = %496, %494
  %498 = load i1, ptr %20, align 1
  br i1 %498, label %499, label %500

499:                                              ; preds = %497
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  br label %500

500:                                              ; preds = %499, %497
  %501 = load i1, ptr %18, align 1
  br i1 %501, label %502, label %503

502:                                              ; preds = %500
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #7
  br label %503

503:                                              ; preds = %502, %500
  %504 = load i1, ptr %16, align 1
  br i1 %504, label %505, label %506

505:                                              ; preds = %503
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  br label %506

506:                                              ; preds = %505, %503
  br label %522

507:                                              ; preds = %317
  %508 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 4
  %509 = load ptr, ptr %508, align 8, !tbaa !20
  %510 = invoke noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %509)
          to label %511 unwind label %332

511:                                              ; preds = %507
  %512 = fmul double 2.000000e+00, %510
  %513 = load double, ptr %4, align 8, !tbaa !18
  %514 = call double @cos(double noundef %513) #7
  %515 = fmul double %512, %514
  %516 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 5
  %517 = load double, ptr %516, align 8, !tbaa !24
  %518 = load double, ptr %6, align 8, !tbaa !18
  %519 = fadd double %517, %518
  %520 = fdiv double %515, %519
  store double %520, ptr %5, align 8, !tbaa !18
  br label %521

521:                                              ; preds = %511, %322
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  br label %523

522:                                              ; preds = %506, %332, %185
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  br label %566

523:                                              ; preds = %521, %87, %82, %1
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  store double 1.000000e+26, ptr %67, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #7
  store i32 0, ptr %68, align 4, !tbaa !15
  br label %524

524:                                              ; preds = %551, %523
  %525 = load i32, ptr %68, align 4, !tbaa !15
  %526 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 3
  %527 = load ptr, ptr %526, align 8, !tbaa !9
  %528 = call noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408) %527)
  %529 = icmp slt i32 %525, %528
  br i1 %529, label %531, label %530

530:                                              ; preds = %524
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #7
  br label %554

531:                                              ; preds = %524
  %532 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 3
  %533 = load ptr, ptr %532, align 8, !tbaa !9
  %534 = load i32, ptr %68, align 4, !tbaa !15
  %535 = call noundef ptr @_ZNK4Elem4neibEi(ptr noundef nonnull align 8 dereferenceable(408) %533, i32 noundef %534)
  %536 = call noundef ptr @_ZNK4Elem5modelEv(ptr noundef nonnull align 8 dereferenceable(408) %535)
  %537 = load ptr, ptr %536, align 8, !tbaa !25
  %538 = getelementptr inbounds ptr, ptr %537, i64 21
  %539 = load ptr, ptr %538, align 8
  %540 = call noundef zeroext i1 %539(ptr noundef nonnull align 8 dereferenceable(152) %536)
  br i1 %540, label %541, label %550

541:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %542 = getelementptr inbounds %class.ElemModel, ptr %71, i32 0, i32 3
  %543 = load ptr, ptr %542, align 8, !tbaa !9
  %544 = load i32, ptr %68, align 4, !tbaa !15
  %545 = call noundef ptr @_ZNK4Elem4neibEi(ptr noundef nonnull align 8 dereferenceable(408) %543, i32 noundef %544)
  %546 = call noundef ptr @_ZNK4Elem5modelEv(ptr noundef nonnull align 8 dereferenceable(408) %545)
  %547 = call noundef double @_ZNK9ElemModel16Pc_pistonTypeRecEv(ptr noundef nonnull align 8 dereferenceable(152) %546)
  store double %547, ptr %69, align 8, !tbaa !18
  %548 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %69)
  %549 = load double, ptr %548, align 8, !tbaa !18
  store double %549, ptr %67, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  br label %550

550:                                              ; preds = %541, %531
  br label %551

551:                                              ; preds = %550
  %552 = load i32, ptr %68, align 4, !tbaa !15
  %553 = add nsw i32 %552, 1
  store i32 %553, ptr %68, align 4, !tbaa !15
  br label %524, !llvm.loop !27

554:                                              ; preds = %530
  %555 = load double, ptr %67, align 8, !tbaa !18
  %556 = fcmp olt double %555, 1.000000e+25
  br i1 %556, label %557, label %564

557:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  %558 = load double, ptr %67, align 8, !tbaa !18
  %559 = load double, ptr %5, align 8, !tbaa !18
  %560 = fmul double 1.000000e-03, %559
  %561 = call double @llvm.fmuladd.f64(double %558, double 0x3FEFF7CED916872B, double %560)
  store double %561, ptr %70, align 8, !tbaa !18
  %562 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %5)
  %563 = load double, ptr %562, align 8, !tbaa !18
  store double %563, ptr %5, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  br label %564

564:                                              ; preds = %557, %554
  %565 = load double, ptr %5, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  ret double %565

566:                                              ; preds = %522
  %567 = load ptr, ptr %10, align 8
  %568 = load i32, ptr %11, align 4
  %569 = insertvalue { ptr, i32 } poison, ptr %567, 0
  %570 = insertvalue { ptr, i32 } %569, i32 %568, 1
  resume { ptr, i32 } %570
}

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare i32 @rand() #4

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

; 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: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK9ElemModel16Pc_pistonTypeRecEv(ptr noundef nonnull align 8 dereferenceable(152)) #0 align 2

; 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 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 = { nounwind }

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.2" = type { i8 }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZN9ElemModel2PIE = external local_unnamed_addr constant double, align 8
@__FUNCTION__._ZN6Circle20centreEntryPrsOilInjEv = external hidden unnamed_addr constant [21 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1

; 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 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 uwtable
define dso_local noundef double @_ZN6Circle20centreEntryPrsOilInjEv(ptr nocapture noundef nonnull readonly align 8 dereferenceable(184) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca double, align 8
  %3 = alloca i32, align 4
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.2", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.2", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.2", align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.2", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.2", align 1
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = getelementptr inbounds i8, ptr %0, i64 24
  %30 = load ptr, ptr %29, align 8, !tbaa !5
  %31 = tail call noundef i32 @_ZNK4Elem22numOilCentreFeederNeisEv(ptr noundef nonnull align 8 dereferenceable(408) %30)
  %32 = getelementptr inbounds i8, ptr %0, i64 176
  %33 = load double, ptr %32, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #8
  %34 = getelementptr inbounds i8, ptr %0, i64 88
  %35 = load double, ptr %34, align 8, !tbaa !16
  store double %35, ptr %2, align 8, !tbaa !17
  %36 = load ptr, ptr %29, align 8, !tbaa !5
  %37 = tail call noundef zeroext i1 @_ZNK4Elem8iAmAPoreEv(ptr noundef nonnull align 8 dereferenceable(408) %36)
  br i1 %37, label %38, label %179

38:                                               ; preds = %1
  %39 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !17
  %40 = fmul double %39, 5.000000e-01
  %41 = fcmp ogt double %33, %40
  %42 = icmp ne i32 %31, 0
  %or.cond = and i1 %42, %41
  br i1 %or.cond, label %43, label %179

43:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #8
  store i32 0, ptr %3, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #8
  %44 = getelementptr inbounds i8, ptr %0, i64 32
  %45 = load ptr, ptr %44, align 8, !tbaa !19
  %46 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK10CommonData11poreFillAlgB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(1972) %45)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %46)
  %47 = load ptr, ptr %29, align 8, !tbaa !5
  %48 = call noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408) %47)
  %49 = icmp sgt i32 %48, 0
  br i1 %49, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %92, %43
  %.0138.lcssa = phi double [ 0.000000e+00, %43 ], [ %.2140, %92 ]
  %50 = load i32, ptr %3, align 4, !tbaa !18
  %51 = load ptr, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #8
  %52 = call noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408) %51)
  %53 = sub nsw i32 %52, %31
  %.not = icmp eq i32 %50, %53
  br i1 %.not, label %.thread, label %97

.lr.ph:                                           ; preds = %43, %92
  %.0137194 = phi i32 [ %93, %92 ], [ 0, %43 ]
  %.0138193 = phi double [ %.2140, %92 ], [ 0.000000e+00, %43 ]
  %54 = load ptr, ptr %29, align 8, !tbaa !5
  %55 = call noundef ptr @_ZNK4Elem4neibEi(ptr noundef nonnull align 8 dereferenceable(408) %54, i32 noundef %.0137194)
  %56 = call noundef ptr @_ZNK4Elem5modelEv(ptr noundef nonnull align 8 dereferenceable(408) %55)
  %57 = load ptr, ptr %44, align 8, !tbaa !19
  %58 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %57)
  %59 = call noundef zeroext i1 @_ZNK9ElemModel17affectsAdjEntryPcERK5Fluid(ptr noundef nonnull align 8 dereferenceable(152) %56, ptr noundef nonnull align 8 dereferenceable(80) %58)
  br i1 %59, label %60, label %92

60:                                               ; preds = %.lr.ph
  %61 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0)
  %62 = load i8, ptr %61, align 1, !tbaa !20
  %63 = icmp eq i8 %62, 111
  br i1 %63, label %68, label %64

64:                                               ; preds = %60
  %65 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0)
  %66 = load i8, ptr %65, align 1, !tbaa !20
  %67 = icmp eq i8 %66, 79
  br i1 %67, label %68, label %81

68:                                               ; preds = %64, %60
  %69 = load ptr, ptr %44, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #8
  store i32 5, ptr %5, align 4, !tbaa !18
  %70 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %5)
  %71 = load i32, ptr %70, align 4, !tbaa !18
  %72 = call noundef double @_ZNK10CommonData15poreFillWeightsEi(ptr noundef nonnull align 8 dereferenceable(1972) %69, i32 noundef %71)
  %73 = load ptr, ptr %29, align 8, !tbaa !5
  %74 = call noundef ptr @_ZNK4Elem4neibEi(ptr noundef nonnull align 8 dereferenceable(408) %73, i32 noundef %.0137194)
  %75 = call noundef ptr @_ZNK4Elem5modelEv(ptr noundef nonnull align 8 dereferenceable(408) %74)
  %76 = call noundef double @_ZNK9ElemModel3RRREv(ptr noundef nonnull align 8 dereferenceable(152) %75)
  %77 = fmul double %72, %76
  %78 = call i32 @rand() #8
  %79 = sitofp i32 %78 to double
  %80 = fmul double %77, %79
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8
  br label %89

81:                                               ; preds = %64
  %82 = load ptr, ptr %44, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #8
  store i32 5, ptr %6, align 4, !tbaa !18
  %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %84 = load i32, ptr %83, align 4, !tbaa !18
  %85 = call noundef double @_ZNK10CommonData15poreFillWeightsEi(ptr noundef nonnull align 8 dereferenceable(1972) %82, i32 noundef %84)
  %86 = call i32 @rand() #8
  %87 = sitofp i32 %86 to double
  %88 = fmul double %85, %87
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #8
  br label %89

89:                                               ; preds = %81, %68
  %.pn158.in = phi double [ %80, %68 ], [ %88, %81 ]
  %.pn158 = fdiv double %.pn158.in, 0x41DFFFFFFFC00000
  %.1139 = fadd double %.0138193, %.pn158
  %90 = load i32, ptr %3, align 4, !tbaa !18
  %91 = add nsw i32 %90, 1
  store i32 %91, ptr %3, align 4, !tbaa !18
  br label %92

92:                                               ; preds = %.lr.ph, %89
  %.2140 = phi double [ %.1139, %89 ], [ %.0138193, %.lr.ph ]
  %93 = add nuw nsw i32 %.0137194, 1
  %94 = load ptr, ptr %29, align 8, !tbaa !5
  %95 = call noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408) %94)
  %96 = icmp slt i32 %93, %95
  br i1 %96, label %.lr.ph, label %._crit_edge, !llvm.loop !21

97:                                               ; preds = %._crit_edge
  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 32, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #8
  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, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %98 unwind label %126

98:                                               ; preds = %97
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.1)
          to label %99 unwind label %128

99:                                               ; preds = %98
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @__FUNCTION__._ZN6Circle20centreEntryPrsOilInjEv, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %100 unwind label %130

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

101:                                              ; preds = %100
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.2)
          to label %102 unwind label %134

102:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %103 unwind label %136

103:                                              ; preds = %102
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %104 unwind label %138

104:                                              ; preds = %103
  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.4)
          to label %105 unwind label %140

105:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  store i32 65, ptr %20, align 4, !tbaa !18
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %106 unwind label %142

106:                                              ; preds = %105
  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) %19)
          to label %107 unwind label %144

107:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %108 unwind label %146

108:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %109 unwind label %148

109:                                              ; preds = %108
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %110 unwind label %150

110:                                              ; preds = %109
  %111 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %7, ptr noundef nonnull %21, i32 noundef 0)
          to label %.critedge171 unwind label %152

.thread:                                          ; preds = %._crit_edge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #8
  br label %.critedge192

.critedge171:                                     ; preds = %110
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #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) %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, 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) %12) #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 @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 32, 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
  br label %.critedge192

.critedge192:                                     ; preds = %.thread, %.critedge171
  %112 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.9)
  %113 = load ptr, ptr %44, align 8, !tbaa !19
  br i1 %112, label %114, label %167

114:                                              ; preds = %.critedge192
  %115 = invoke noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %113)
          to label %116 unwind label %124

116:                                              ; preds = %114
  %117 = call double @cos(double noundef %33) #8
  %118 = fmul double %117, 2.000000e+00
  %119 = getelementptr inbounds i8, ptr %0, i64 40
  %120 = load double, ptr %119, align 8, !tbaa !23
  %121 = fdiv double %118, %120
  %122 = fsub double %121, %.0138.lcssa
  %123 = fmul double %115, %122
  br label %177

124:                                              ; preds = %167, %114
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %178

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

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

130:                                              ; preds = %99
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %164

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

134:                                              ; preds = %101
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %162

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

138:                                              ; preds = %103
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %160

140:                                              ; preds = %104
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %159

142:                                              ; preds = %105
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %158

144:                                              ; preds = %106
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %157

146:                                              ; preds = %107
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %156

148:                                              ; preds = %108
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %155

150:                                              ; preds = %109
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %154

152:                                              ; preds = %110
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %154

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

155:                                              ; preds = %148, %154
  %.pn.pn = phi { ptr, i32 } [ %.pn, %154 ], [ %149, %148 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %156

156:                                              ; preds = %146, %155
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %155 ], [ %147, %146 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %157

157:                                              ; preds = %144, %156
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %156 ], [ %145, %144 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %158

158:                                              ; preds = %157, %142
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %157 ], [ %143, %142 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  br label %159

159:                                              ; preds = %140, %158
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %158 ], [ %141, %140 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %160

160:                                              ; preds = %138, %159
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %159 ], [ %139, %138 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %161

161:                                              ; preds = %136, %160
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %160 ], [ %137, %136 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %162

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

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

164:                                              ; preds = %130, %163
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %163 ], [ %131, %130 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, 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) %12) #8
  br label %165

165:                                              ; preds = %128, %164
  %.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, %164 ], [ %129, %128 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  br label %166

166:                                              ; preds = %126, %165
  %.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, %165 ], [ %127, %126 ]
  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 @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 32, 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
  br label %178

167:                                              ; preds = %.critedge192
  %168 = invoke noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %113)
          to label %169 unwind label %124

169:                                              ; preds = %167
  %170 = fmul double %168, 2.000000e+00
  %171 = call double @cos(double noundef %33) #8
  %172 = fmul double %170, %171
  %173 = getelementptr inbounds i8, ptr %0, i64 40
  %174 = load double, ptr %173, align 8, !tbaa !23
  %175 = fadd double %.0138.lcssa, %174
  %176 = fdiv double %172, %175
  br label %177

177:                                              ; preds = %169, %116
  %storemerge = phi double [ %176, %169 ], [ %123, %116 ]
  store double %storemerge, ptr %2, align 8, !tbaa !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #8
  br label %179

178:                                              ; preds = %166, %124
  %.pn156 = phi { ptr, i32 } [ %125, %124 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %166 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #8
  resume { ptr, i32 } %.pn156

179:                                              ; preds = %177, %38, %1
  %180 = phi double [ %storemerge, %177 ], [ %35, %38 ], [ %35, %1 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  store double 1.000000e+26, ptr %26, align 8, !tbaa !17
  %181 = load ptr, ptr %29, align 8, !tbaa !5
  %182 = call noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408) %181)
  %183 = icmp sgt i32 %182, 0
  br i1 %183, label %.lr.ph198, label %._crit_edge199.thread

._crit_edge199:                                   ; preds = %199
  %.pre = load double, ptr %26, align 8, !tbaa !17
  %184 = fcmp olt double %.pre, 1.000000e+25
  br i1 %184, label %204, label %._crit_edge199.thread

.lr.ph198:                                        ; preds = %179, %199
  %.0196 = phi i32 [ %200, %199 ], [ 0, %179 ]
  %185 = load ptr, ptr %29, align 8, !tbaa !5
  %186 = call noundef ptr @_ZNK4Elem4neibEi(ptr noundef nonnull align 8 dereferenceable(408) %185, i32 noundef %.0196)
  %187 = call noundef ptr @_ZNK4Elem5modelEv(ptr noundef nonnull align 8 dereferenceable(408) %186)
  %188 = load ptr, ptr %187, align 8, !tbaa !24
  %189 = getelementptr inbounds i8, ptr %188, i64 168
  %190 = load ptr, ptr %189, align 8
  %191 = call noundef zeroext i1 %190(ptr noundef nonnull align 8 dereferenceable(152) %187)
  br i1 %191, label %192, label %199

192:                                              ; preds = %.lr.ph198
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  %193 = load ptr, ptr %29, align 8, !tbaa !5
  %194 = call noundef ptr @_ZNK4Elem4neibEi(ptr noundef nonnull align 8 dereferenceable(408) %193, i32 noundef %.0196)
  %195 = call noundef ptr @_ZNK4Elem5modelEv(ptr noundef nonnull align 8 dereferenceable(408) %194)
  %196 = call noundef double @_ZNK9ElemModel16Pc_pistonTypeRecEv(ptr noundef nonnull align 8 dereferenceable(152) %195)
  store double %196, ptr %27, align 8, !tbaa !17
  %197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27)
  %198 = load double, ptr %197, align 8, !tbaa !17
  store double %198, ptr %26, align 8, !tbaa !17
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %199

199:                                              ; preds = %.lr.ph198, %192
  %200 = add nuw nsw i32 %.0196, 1
  %201 = load ptr, ptr %29, align 8, !tbaa !5
  %202 = call noundef i32 @_ZNK4Elem6nCnctsEv(ptr noundef nonnull align 8 dereferenceable(408) %201)
  %203 = icmp slt i32 %200, %202
  br i1 %203, label %.lr.ph198, label %._crit_edge199, !llvm.loop !26

204:                                              ; preds = %._crit_edge199
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  %205 = fmul double %180, 1.000000e-03
  %206 = call double @llvm.fmuladd.f64(double %.pre, double 0x3FEFF7CED916872B, double %205)
  store double %206, ptr %28, align 8, !tbaa !17
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %2)
  %208 = load double, ptr %207, align 8, !tbaa !17
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %._crit_edge199.thread

._crit_edge199.thread:                            ; preds = %179, %204, %._crit_edge199
  %209 = phi double [ %208, %204 ], [ %180, %._crit_edge199 ], [ %180, %179 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #8
  ret double %209
}

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare i32 @rand() local_unnamed_addr #6

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

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

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

; 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 = { 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 #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!15, !7, i64 176}
!15 = !{!"_ZTS8VoidElem", !6, i64 0, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176}
!16 = !{!6, !7, i64 88}
!17 = !{!7, !7, i64 0}
!18 = !{!12, !12, i64 0}
!19 = !{!6, !10, i64 32}
!20 = !{!8, !8, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!6, !7, i64 40}
!24 = !{!25, !25, i64 0}
!25 = !{!"vtable pointer", !9, i64 0}
!26 = distinct !{!26, !22}


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