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

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.5" = type { i8 }
%class.ElemModel = type { ptr, double, double, ptr, ptr, double, ptr, i8, i8, i8, i8, i32, double, double, double, double, double, double, double, %"struct.std::pair", %"struct.std::pair" }
%"struct.std::pair" = type { double, double }
%class.Polygon = type { %class.VoidElem, i32, %"class.std::vector", ptr, ptr, i16, i8, double }
%class.VoidElem = type { %class.ElemModel, double, double, double, double }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.CornerApex = type { %class.Apex, ptr, double, double, double, ptr }
%class.Apex = type { ptr, i8, double, double, ptr, i32, double, double, double, double, i8, i8, i8, i8, %"struct.std::pair.24" }
%"struct.std::pair.24" = type { i32, double }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@__FUNCTION__._ZN7Polygon5calcREd = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [91 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.7 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [28 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_ZN7Polygon5calcREd(ptr noundef nonnull align 8 dereferenceable(248) %0, double noundef %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca double, align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca i1, align 1
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca i1, align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca i1, align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca i1, align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca i1, align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca i1, align 1
  %18 = alloca %"class.std::allocator.5", align 1
  %19 = alloca i1, align 1
  %20 = alloca i1, align 1
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i1, align 1
  %24 = alloca i1, align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca i1, align 1
  %27 = alloca %"class.std::allocator.5", align 1
  %28 = alloca i1, align 1
  %29 = alloca i1, align 1
  %30 = alloca i1, align 1
  %31 = alloca i1, align 1
  %32 = alloca i1, align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca i1, align 1
  %35 = alloca %"class.std::allocator.5", align 1
  %36 = alloca i1, align 1
  %37 = alloca i1, align 1
  %38 = alloca i1, align 1
  %39 = alloca i1, align 1
  %40 = alloca i1, align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca i1, align 1
  %43 = alloca i32, align 4
  %44 = alloca i1, align 1
  %45 = alloca i1, align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca i1, align 1
  %49 = alloca %"class.std::allocator.5", align 1
  %50 = alloca i1, align 1
  %51 = alloca i1, align 1
  %52 = alloca i1, align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca i1, align 1
  %55 = alloca %"class.std::allocator.5", align 1
  %56 = alloca i1, align 1
  %57 = alloca i1, align 1
  %58 = alloca i1, align 1
  %59 = alloca i1, align 1
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca i1, align 1
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca i1, align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca i1, align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca i1, align 1
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca i1, align 1
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca i1, align 1
  %73 = alloca %"class.std::allocator.5", align 1
  %74 = alloca i1, align 1
  %75 = alloca i1, align 1
  %76 = alloca i1, align 1
  %77 = alloca i1, align 1
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca i1, align 1
  %80 = alloca %"class.std::allocator.5", align 1
  %81 = alloca i1, align 1
  %82 = alloca i1, align 1
  %83 = alloca i1, align 1
  %84 = alloca i1, align 1
  %85 = alloca i1, align 1
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca i1, align 1
  %88 = alloca %"class.std::allocator.5", align 1
  %89 = alloca i1, align 1
  %90 = alloca i1, align 1
  %91 = alloca i1, align 1
  %92 = alloca i1, align 1
  %93 = alloca i1, align 1
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca i1, align 1
  %96 = alloca i32, align 4
  %97 = alloca i1, align 1
  %98 = alloca i1, align 1
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca i1, align 1
  %102 = alloca %"class.std::allocator.5", align 1
  %103 = alloca i1, align 1
  %104 = alloca i1, align 1
  %105 = alloca i1, align 1
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca i1, align 1
  %108 = alloca %"class.std::allocator.5", align 1
  %109 = alloca i1, align 1
  %110 = alloca i1, align 1
  %111 = alloca i1, align 1
  %112 = alloca i1, align 1
  store ptr %0, ptr %3, align 8, !tbaa !5
  store double %1, ptr %4, align 8, !tbaa !9
  %113 = load ptr, ptr %3, align 8
  %114 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 6
  %115 = load ptr, ptr %114, align 8, !tbaa !11
  %116 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %117 = load ptr, ptr %116, align 8, !tbaa !16
  %118 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %117)
  %119 = icmp eq ptr %115, %118
  br i1 %119, label %120, label %142

120:                                              ; preds = %2
  %121 = getelementptr inbounds %class.Polygon, ptr %113, i32 0, i32 5
  %122 = load i16, ptr %121, align 8, !tbaa !17
  %123 = sext i16 %122 to i32
  %124 = icmp eq i32 %123, 0
  br i1 %124, label %125, label %142

125:                                              ; preds = %120
  %126 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 14
  store double 1.000000e+00, ptr %126, align 8, !tbaa !25
  %127 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 18
  store double 0.000000e+00, ptr %127, align 8, !tbaa !26
  %128 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %129 = getelementptr inbounds %"struct.std::pair", ptr %128, i32 0, i32 0
  store double 0.000000e+00, ptr %129, align 8, !tbaa !27
  %130 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 13
  %131 = load double, ptr %130, align 8, !tbaa !28
  %132 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %133 = load ptr, ptr %132, align 8, !tbaa !16
  %134 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %133)
  %135 = call noundef double @_ZNK5Fluid9viscosityEv(ptr noundef nonnull align 8 dereferenceable(80) %134)
  %136 = load ptr, ptr %113, align 8, !tbaa !29
  %137 = getelementptr inbounds ptr, ptr %136, i64 23
  %138 = load ptr, ptr %137, align 8
  %139 = call noundef double %138(ptr noundef nonnull align 8 dereferenceable(152) %113, double noundef %131, double noundef %135)
  %140 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %141 = getelementptr inbounds %"struct.std::pair", ptr %140, i32 0, i32 1
  store double %139, ptr %141, align 8, !tbaa !31
  br label %223

142:                                              ; preds = %120, %2
  %143 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 6
  %144 = load ptr, ptr %143, align 8, !tbaa !11
  %145 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %146 = load ptr, ptr %145, align 8, !tbaa !16
  %147 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984) %146)
  %148 = icmp eq ptr %144, %147
  br i1 %148, label %149, label %177

149:                                              ; preds = %142
  %150 = getelementptr inbounds %class.Polygon, ptr %113, i32 0, i32 3
  %151 = load ptr, ptr %150, align 8, !tbaa !32
  %152 = getelementptr inbounds %class.CornerApex, ptr %151, i64 0
  %153 = call noundef zeroext i1 @_ZNK10CornerApex12cornerExistsEv(ptr noundef nonnull align 8 dereferenceable(144) %152)
  br i1 %153, label %177, label %154

154:                                              ; preds = %149
  %155 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 14
  store double 0.000000e+00, ptr %155, align 8, !tbaa !25
  %156 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 13
  %157 = load double, ptr %156, align 8, !tbaa !28
  %158 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %159 = load ptr, ptr %158, align 8, !tbaa !16
  %160 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984) %159)
  %161 = call noundef double @_ZNK5Fluid9viscosityEv(ptr noundef nonnull align 8 dereferenceable(80) %160)
  %162 = load ptr, ptr %113, align 8, !tbaa !29
  %163 = getelementptr inbounds ptr, ptr %162, i64 23
  %164 = load ptr, ptr %163, align 8
  %165 = call noundef double %164(ptr noundef nonnull align 8 dereferenceable(152) %113, double noundef %157, double noundef %161)
  %166 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 18
  store double %165, ptr %166, align 8, !tbaa !26
  %167 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %168 = load ptr, ptr %167, align 8, !tbaa !16
  %169 = call noundef double @_ZNK10CommonData14KrwatcornAtSw0Ev(ptr noundef nonnull align 8 dereferenceable(1972) %168)
  %170 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 18
  %171 = load double, ptr %170, align 8, !tbaa !26
  %172 = fmul double %169, %171
  %173 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %174 = getelementptr inbounds %"struct.std::pair", ptr %173, i32 0, i32 0
  store double %172, ptr %174, align 8, !tbaa !27
  %175 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %176 = getelementptr inbounds %"struct.std::pair", ptr %175, i32 0, i32 1
  store double 0.000000e+00, ptr %176, align 8, !tbaa !31
  br label %222

177:                                              ; preds = %149, %142
  %178 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 6
  %179 = load ptr, ptr %178, align 8, !tbaa !11
  %180 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %181 = load ptr, ptr %180, align 8, !tbaa !16
  %182 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984) %181)
  %183 = icmp eq ptr %179, %182
  br i1 %183, label %184, label %205

184:                                              ; preds = %177
  %185 = getelementptr inbounds %class.Polygon, ptr %113, i32 0, i32 3
  %186 = load ptr, ptr %185, align 8, !tbaa !32
  %187 = getelementptr inbounds %class.CornerApex, ptr %186, i64 0
  %188 = call noundef zeroext i1 @_ZNK10CornerApex12cornerExistsEv(ptr noundef nonnull align 8 dereferenceable(144) %187)
  br i1 %188, label %189, label %205

189:                                              ; preds = %184
  %190 = load double, ptr %4, align 8, !tbaa !9
  %191 = call noundef ptr @_ZNK9ElemModel6elemanEv(ptr noundef nonnull align 8 dereferenceable(152) %113)
  %192 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %191)
  %193 = fsub double %190, %192
  %194 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 3
  %195 = load ptr, ptr %194, align 8, !tbaa !33
  %196 = load ptr, ptr %195, align 8, !tbaa !29
  %197 = getelementptr inbounds ptr, ptr %196, i64 11
  %198 = load ptr, ptr %197, align 8
  %199 = call noundef double %198(ptr noundef nonnull align 8 dereferenceable(408) %195)
  %200 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %201 = load ptr, ptr %200, align 8, !tbaa !16
  %202 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %201)
  %203 = fneg double %199
  %204 = call double @llvm.fmuladd.f64(double %203, double %202, double %193)
  call void @_ZN7Polygon27calcR_oilWithWaterInCornersEd(ptr noundef nonnull align 8 dereferenceable(248) %113, double noundef %204)
  br label %221

205:                                              ; preds = %184, %177
  %206 = load double, ptr %4, align 8, !tbaa !9
  %207 = call noundef ptr @_ZNK9ElemModel6elemanEv(ptr noundef nonnull align 8 dereferenceable(152) %113)
  %208 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %207)
  %209 = fsub double %206, %208
  %210 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 3
  %211 = load ptr, ptr %210, align 8, !tbaa !33
  %212 = load ptr, ptr %211, align 8, !tbaa !29
  %213 = getelementptr inbounds ptr, ptr %212, i64 11
  %214 = load ptr, ptr %213, align 8
  %215 = call noundef double %214(ptr noundef nonnull align 8 dereferenceable(408) %211)
  %216 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %217 = load ptr, ptr %216, align 8, !tbaa !16
  %218 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %217)
  %219 = fneg double %215
  %220 = call double @llvm.fmuladd.f64(double %219, double %218, double %209)
  call void @_ZN7Polygon24calcR_waterWithOilLayersEd(ptr noundef nonnull align 8 dereferenceable(248) %113, double noundef %220)
  br label %221

221:                                              ; preds = %205, %189
  br label %222

222:                                              ; preds = %221, %154
  br label %223

223:                                              ; preds = %222, %125
  %224 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 18
  %225 = load double, ptr %224, align 8, !tbaa !26
  %226 = fcmp oge double %225, 0.000000e+00
  store i1 false, ptr %7, align 1
  store i1 false, ptr %9, align 1
  store i1 false, ptr %11, align 1
  store i1 false, ptr %13, align 1
  store i1 false, ptr %15, align 1
  store i1 false, ptr %17, align 1
  store i1 false, ptr %19, align 1
  store i1 false, ptr %20, align 1
  store i1 false, ptr %23, align 1
  store i1 false, ptr %24, align 1
  store i1 false, ptr %26, align 1
  store i1 false, ptr %28, align 1
  store i1 false, ptr %29, align 1
  store i1 false, ptr %30, align 1
  store i1 false, ptr %31, align 1
  store i1 false, ptr %32, align 1
  store i1 false, ptr %34, align 1
  store i1 false, ptr %36, align 1
  store i1 false, ptr %37, align 1
  store i1 false, ptr %38, align 1
  store i1 false, ptr %39, align 1
  store i1 false, ptr %40, align 1
  store i1 false, ptr %42, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  store i1 false, ptr %44, align 1
  store i1 false, ptr %45, align 1
  store i1 false, ptr %48, align 1
  store i1 false, ptr %50, align 1
  store i1 false, ptr %51, align 1
  store i1 false, ptr %52, align 1
  store i1 false, ptr %54, align 1
  store i1 false, ptr %56, align 1
  store i1 false, ptr %57, align 1
  store i1 false, ptr %58, align 1
  store i1 false, ptr %59, align 1
  br i1 %226, label %227, label %237

227:                                              ; preds = %223
  %228 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %229 = getelementptr inbounds %"struct.std::pair", ptr %228, i32 0, i32 0
  %230 = load double, ptr %229, align 8, !tbaa !27
  %231 = fcmp oge double %230, 0.000000e+00
  br i1 %231, label %253, label %232

232:                                              ; preds = %227
  %233 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %234 = getelementptr inbounds %"struct.std::pair", ptr %233, i32 0, i32 1
  %235 = load double, ptr %234, align 8, !tbaa !31
  %236 = fcmp oge double %235, 0.000000e+00
  br i1 %236, label %253, label %237

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

238:                                              ; preds = %237
  store i1 true, ptr %23, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.1)
          to label %239 unwind label %391

239:                                              ; preds = %238
  store i1 true, ptr %24, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #6
  store i1 true, ptr %26, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #6
  store i1 true, ptr %28, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  store i1 true, ptr %29, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @__FUNCTION__._ZN7Polygon5calcREd, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %240 unwind label %395

240:                                              ; preds = %239
  store i1 true, ptr %30, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %241 unwind label %399

241:                                              ; preds = %240
  store i1 true, ptr %31, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.2)
          to label %242 unwind label %403

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

243:                                              ; preds = %242
  store i1 true, ptr %38, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %244 unwind label %411

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

245:                                              ; preds = %244
  store i1 true, ptr %40, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #6
  store i1 true, ptr %42, align 1
  store i32 51, ptr %43, align 4, !tbaa !34
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %246 unwind label %419

246:                                              ; preds = %245
  store i1 true, ptr %44, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %247 unwind label %423

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

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

249:                                              ; preds = %248
  store i1 true, ptr %58, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %250 unwind label %435

250:                                              ; preds = %249
  store i1 true, ptr %59, align 1
  %251 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %5, ptr noundef %46, i32 noundef 0)
          to label %252 unwind label %439

252:                                              ; preds = %250
  br label %253

253:                                              ; preds = %252, %232, %227
  %254 = phi i1 [ true, %232 ], [ true, %227 ], [ %251, %252 ]
  %255 = xor i1 %254, true
  %256 = load i1, ptr %59, align 1
  br i1 %256, label %257, label %258

257:                                              ; preds = %253
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %258

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

260:                                              ; preds = %258
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #6
  br label %261

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

263:                                              ; preds = %261
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #6
  br label %264

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

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

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

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

270:                                              ; preds = %269, %267
  %271 = load i1, ptr %52, 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) %47) #6
  br label %273

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

275:                                              ; preds = %273
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  br label %276

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

278:                                              ; preds = %276
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  br label %279

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

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

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

284:                                              ; preds = %282
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %285

285:                                              ; preds = %284, %282
  %286 = load i1, ptr %44, 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) %41) #6
  br label %288

288:                                              ; preds = %287, %285
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  %289 = load i1, ptr %42, align 1
  br i1 %289, label %290, label %291

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

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

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

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

296:                                              ; preds = %294
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %297

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

299:                                              ; preds = %297
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  br label %300

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

302:                                              ; preds = %300
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  br label %303

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

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

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

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

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

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

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

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

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

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

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

320:                                              ; preds = %318
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  br label %321

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

323:                                              ; preds = %321
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  br label %324

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

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

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

329:                                              ; preds = %327
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %330

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

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

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

335:                                              ; preds = %333
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  br label %336

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

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

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

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

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

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

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

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

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

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

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

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

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

356:                                              ; preds = %354
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #6
  br label %357

357:                                              ; preds = %356, %354
  %358 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 18
  %359 = load double, ptr %358, align 8, !tbaa !26
  %360 = fcmp oge double %359, 0.000000e+00
  br i1 %360, label %361, label %371

361:                                              ; preds = %357
  %362 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %363 = getelementptr inbounds %"struct.std::pair", ptr %362, i32 0, i32 0
  %364 = load double, ptr %363, align 8, !tbaa !27
  %365 = fcmp oge double %364, 0.000000e+00
  br i1 %365, label %558, label %366

366:                                              ; preds = %361
  %367 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %368 = getelementptr inbounds %"struct.std::pair", ptr %367, i32 0, i32 1
  %369 = load double, ptr %368, align 8, !tbaa !31
  %370 = fcmp oge double %369, 0.000000e+00
  br i1 %370, label %558, label %371

371:                                              ; preds = %366, %357
  %372 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.7)
  %373 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 18
  %374 = load double, ptr %373, align 8, !tbaa !26
  %375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %372, double noundef %374)
  %376 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef @.str.8)
  %377 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %378 = getelementptr inbounds %"struct.std::pair", ptr %377, i32 0, i32 0
  %379 = load double, ptr %378, align 8, !tbaa !27
  %380 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %376, double noundef %379)
  %381 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %380, ptr noundef @.str.8)
  %382 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %383 = getelementptr inbounds %"struct.std::pair", ptr %382, i32 0, i32 1
  %384 = load double, ptr %383, align 8, !tbaa !31
  %385 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %381, double noundef %384)
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %385, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %558

387:                                              ; preds = %237
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %21, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %22, align 4
  br label %533

391:                                              ; preds = %238
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %21, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %22, align 4
  br label %529

395:                                              ; preds = %239
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %21, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %22, align 4
  br label %516

399:                                              ; preds = %240
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %21, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %22, align 4
  br label %512

403:                                              ; preds = %241
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %21, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %22, align 4
  br label %508

407:                                              ; preds = %242
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %21, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %22, align 4
  br label %495

411:                                              ; preds = %243
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %21, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %22, align 4
  br label %491

415:                                              ; preds = %244
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %21, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %22, align 4
  br label %487

419:                                              ; preds = %245
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %21, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %22, align 4
  br label %480

423:                                              ; preds = %246
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %21, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %22, align 4
  br label %476

427:                                              ; preds = %247
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %21, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %22, align 4
  br label %463

431:                                              ; preds = %248
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %21, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %22, align 4
  br label %450

435:                                              ; preds = %249
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %21, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %22, align 4
  br label %446

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

444:                                              ; preds = %439
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %445

445:                                              ; preds = %444, %439
  br label %446

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

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

449:                                              ; preds = %448, %446
  br label %450

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

452:                                              ; preds = %450
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #6
  br label %453

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

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

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

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

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

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

462:                                              ; preds = %461, %459
  br label %463

463:                                              ; preds = %462, %427
  %464 = load i1, ptr %51, align 1
  br i1 %464, label %465, label %466

465:                                              ; preds = %463
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  br label %466

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

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

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

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

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

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

475:                                              ; preds = %474, %472
  br label %476

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

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

479:                                              ; preds = %478, %476
  br label %480

480:                                              ; preds = %479, %419
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  %481 = load i1, ptr %42, align 1
  br i1 %481, label %482, label %483

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

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

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

486:                                              ; preds = %485, %483
  br label %487

487:                                              ; preds = %486, %415
  %488 = load i1, ptr %39, align 1
  br i1 %488, label %489, label %490

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

490:                                              ; preds = %489, %487
  br label %491

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

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

494:                                              ; preds = %493, %491
  br label %495

495:                                              ; preds = %494, %407
  %496 = load i1, ptr %37, align 1
  br i1 %496, label %497, label %498

497:                                              ; preds = %495
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  br label %498

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

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

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

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

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

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

507:                                              ; preds = %506, %504
  br label %508

508:                                              ; preds = %507, %403
  %509 = load i1, ptr %31, align 1
  br i1 %509, label %510, label %511

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

511:                                              ; preds = %510, %508
  br label %512

512:                                              ; preds = %511, %399
  %513 = load i1, ptr %30, align 1
  br i1 %513, label %514, label %515

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

515:                                              ; preds = %514, %512
  br label %516

516:                                              ; preds = %515, %395
  %517 = load i1, ptr %29, align 1
  br i1 %517, label %518, label %519

518:                                              ; preds = %516
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  br label %519

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

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

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

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

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

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

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

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

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

532:                                              ; preds = %531, %529
  br label %533

533:                                              ; preds = %532, %387
  %534 = load i1, ptr %20, align 1
  br i1 %534, label %535, label %536

535:                                              ; preds = %533
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  br label %536

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

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

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

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

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

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

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

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

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

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

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

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

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

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

557:                                              ; preds = %556, %554
  br label %906

558:                                              ; preds = %371, %366, %361
  %559 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 14
  %560 = load double, ptr %559, align 8, !tbaa !25
  %561 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 13
  %562 = load double, ptr %561, align 8, !tbaa !28
  %563 = fmul double %560, %562
  %564 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %565 = load ptr, ptr %564, align 8, !tbaa !16
  %566 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %565)
  %567 = call noundef double @_ZNK5Fluid11resistivityEv(ptr noundef nonnull align 8 dereferenceable(80) %566)
  %568 = fdiv double %563, %567
  %569 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 14
  %570 = load double, ptr %569, align 8, !tbaa !25
  %571 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 13
  %572 = load double, ptr %571, align 8, !tbaa !28
  %573 = fmul double %570, %572
  %574 = getelementptr inbounds %class.VoidElem, ptr %113, i32 0, i32 1
  %575 = load double, ptr %574, align 8, !tbaa !35
  %576 = fdiv double %573, %575
  %577 = call double @sqrt(double noundef %576) #6
  %578 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %579 = load ptr, ptr %578, align 8, !tbaa !16
  %580 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK10CommonData7surfaceEv(ptr noundef nonnull align 8 dereferenceable(1972) %579)
  %581 = call noundef double @_ZNK5Fluid11resistivityEv(ptr noundef nonnull align 8 dereferenceable(80) %580)
  %582 = fdiv double %577, %581
  %583 = fadd double %568, %582
  %584 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 17
  store double %583, ptr %584, align 8, !tbaa !36
  %585 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 13
  %586 = load double, ptr %585, align 8, !tbaa !28
  %587 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 14
  %588 = load double, ptr %587, align 8, !tbaa !25
  %589 = fsub double 1.000000e+00, %588
  %590 = fmul double %586, %589
  %591 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 4
  %592 = load ptr, ptr %591, align 8, !tbaa !16
  %593 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984) %592)
  %594 = call noundef double @_ZNK5Fluid11resistivityEv(ptr noundef nonnull align 8 dereferenceable(80) %593)
  %595 = fdiv double %590, %594
  %596 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 17
  %597 = load double, ptr %596, align 8, !tbaa !36
  %598 = fadd double %597, %595
  store double %598, ptr %596, align 8, !tbaa !36
  %599 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 17
  %600 = load double, ptr %599, align 8, !tbaa !36
  %601 = fcmp olt double %600, 1.000000e+64
  store i1 false, ptr %62, align 1
  store i1 false, ptr %64, align 1
  store i1 false, ptr %66, align 1
  store i1 false, ptr %68, align 1
  store i1 false, ptr %70, align 1
  store i1 false, ptr %72, align 1
  store i1 false, ptr %74, align 1
  store i1 false, ptr %75, align 1
  store i1 false, ptr %76, align 1
  store i1 false, ptr %77, align 1
  store i1 false, ptr %79, align 1
  store i1 false, ptr %81, align 1
  store i1 false, ptr %82, align 1
  store i1 false, ptr %83, align 1
  store i1 false, ptr %84, align 1
  store i1 false, ptr %85, align 1
  store i1 false, ptr %87, align 1
  store i1 false, ptr %89, align 1
  store i1 false, ptr %90, align 1
  store i1 false, ptr %91, align 1
  store i1 false, ptr %92, align 1
  store i1 false, ptr %93, align 1
  store i1 false, ptr %95, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #6
  store i1 false, ptr %97, align 1
  store i1 false, ptr %98, align 1
  store i1 false, ptr %101, align 1
  store i1 false, ptr %103, align 1
  store i1 false, ptr %104, align 1
  store i1 false, ptr %105, align 1
  store i1 false, ptr %107, align 1
  store i1 false, ptr %109, align 1
  store i1 false, ptr %110, align 1
  store i1 false, ptr %111, align 1
  store i1 false, ptr %112, align 1
  br i1 %601, label %618, label %602

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

603:                                              ; preds = %602
  store i1 true, ptr %76, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef @.str.1)
          to label %604 unwind label %739

604:                                              ; preds = %603
  store i1 true, ptr %77, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #6
  store i1 true, ptr %79, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #6
  store i1 true, ptr %81, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  store i1 true, ptr %82, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef @__FUNCTION__._ZN7Polygon5calcREd, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %605 unwind label %743

605:                                              ; preds = %604
  store i1 true, ptr %83, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %606 unwind label %747

606:                                              ; preds = %605
  store i1 true, ptr %84, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %65, ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.2)
          to label %607 unwind label %751

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

608:                                              ; preds = %607
  store i1 true, ptr %91, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %609 unwind label %759

609:                                              ; preds = %608
  store i1 true, ptr %92, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef @.str.4)
          to label %610 unwind label %763

610:                                              ; preds = %609
  store i1 true, ptr %93, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #6
  store i1 true, ptr %95, align 1
  store i32 59, ptr %96, align 4, !tbaa !34
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %94, ptr noundef nonnull align 4 dereferenceable(4) %96)
          to label %611 unwind label %767

611:                                              ; preds = %610
  store i1 true, ptr %97, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %612 unwind label %771

612:                                              ; preds = %611
  store i1 true, ptr %98, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #6
  store i1 true, ptr %101, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #6
  store i1 true, ptr %103, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  store i1 true, ptr %104, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %613 unwind label %775

613:                                              ; preds = %612
  store i1 true, ptr %105, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #6
  store i1 true, ptr %107, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #6
  store i1 true, ptr %109, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  store i1 true, ptr %110, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %614 unwind label %779

614:                                              ; preds = %613
  store i1 true, ptr %111, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %99, ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(32) %106)
          to label %615 unwind label %783

615:                                              ; preds = %614
  store i1 true, ptr %112, align 1
  %616 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %60, ptr noundef %99, i32 noundef 0)
          to label %617 unwind label %787

617:                                              ; preds = %615
  br label %618

618:                                              ; preds = %617, %558
  %619 = phi i1 [ true, %558 ], [ %616, %617 ]
  %620 = xor i1 %619, true
  %621 = load i1, ptr %112, align 1
  br i1 %621, label %622, label %623

622:                                              ; preds = %618
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #6
  br label %623

623:                                              ; preds = %622, %618
  %624 = load i1, ptr %111, align 1
  br i1 %624, label %625, label %626

625:                                              ; preds = %623
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #6
  br label %626

626:                                              ; preds = %625, %623
  %627 = load i1, ptr %110, align 1
  br i1 %627, label %628, label %629

628:                                              ; preds = %626
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  br label %629

629:                                              ; preds = %628, %626
  %630 = load i1, ptr %109, align 1
  br i1 %630, label %631, label %632

631:                                              ; preds = %629
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #6
  br label %632

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

634:                                              ; preds = %632
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #6
  br label %635

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

637:                                              ; preds = %635
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #6
  br label %638

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

640:                                              ; preds = %638
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  br label %641

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

643:                                              ; preds = %641
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #6
  br label %644

644:                                              ; preds = %643, %641
  %645 = load i1, ptr %101, align 1
  br i1 %645, label %646, label %647

646:                                              ; preds = %644
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #6
  br label %647

647:                                              ; preds = %646, %644
  %648 = load i1, ptr %98, align 1
  br i1 %648, label %649, label %650

649:                                              ; preds = %647
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  br label %650

650:                                              ; preds = %649, %647
  %651 = load i1, ptr %97, align 1
  br i1 %651, label %652, label %653

652:                                              ; preds = %650
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #6
  br label %653

653:                                              ; preds = %652, %650
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #6
  %654 = load i1, ptr %95, align 1
  br i1 %654, label %655, label %656

655:                                              ; preds = %653
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #6
  br label %656

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

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

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

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

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

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

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

667:                                              ; preds = %665
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #6
  br label %668

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

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

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

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

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

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

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

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

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

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

683:                                              ; preds = %682, %680
  %684 = load i1, ptr %82, align 1
  br i1 %684, label %685, label %686

685:                                              ; preds = %683
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  br label %686

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

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

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

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

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

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

695:                                              ; preds = %694, %692
  %696 = load i1, ptr %76, align 1
  br i1 %696, label %697, label %698

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

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

700:                                              ; preds = %698
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  br label %701

701:                                              ; preds = %700, %698
  %702 = load i1, ptr %74, align 1
  br i1 %702, label %703, label %704

703:                                              ; preds = %701
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #6
  br label %704

704:                                              ; preds = %703, %701
  %705 = load i1, ptr %72, align 1
  br i1 %705, label %706, label %707

706:                                              ; preds = %704
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #6
  br label %707

707:                                              ; preds = %706, %704
  %708 = load i1, ptr %70, align 1
  br i1 %708, label %709, label %710

709:                                              ; preds = %707
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #6
  br label %710

710:                                              ; preds = %709, %707
  %711 = load i1, ptr %68, align 1
  br i1 %711, label %712, label %713

712:                                              ; preds = %710
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #6
  br label %713

713:                                              ; preds = %712, %710
  %714 = load i1, ptr %66, align 1
  br i1 %714, label %715, label %716

715:                                              ; preds = %713
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #6
  br label %716

716:                                              ; preds = %715, %713
  %717 = load i1, ptr %64, align 1
  br i1 %717, label %718, label %719

718:                                              ; preds = %716
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #6
  br label %719

719:                                              ; preds = %718, %716
  %720 = load i1, ptr %62, align 1
  br i1 %720, label %721, label %722

721:                                              ; preds = %719
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #6
  br label %722

722:                                              ; preds = %721, %719
  %723 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %724 = getelementptr inbounds %"struct.std::pair", ptr %723, i32 0, i32 0
  %725 = load double, ptr %724, align 8, !tbaa !27
  %726 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 20
  %727 = getelementptr inbounds %"struct.std::pair", ptr %726, i32 0, i32 0
  store double %725, ptr %727, align 8, !tbaa !37
  %728 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 19
  %729 = getelementptr inbounds %"struct.std::pair", ptr %728, i32 0, i32 1
  %730 = load double, ptr %729, align 8, !tbaa !31
  %731 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 20
  %732 = getelementptr inbounds %"struct.std::pair", ptr %731, i32 0, i32 1
  store double %730, ptr %732, align 8, !tbaa !38
  %733 = getelementptr inbounds %class.ElemModel, ptr %113, i32 0, i32 14
  %734 = load double, ptr %733, align 8, !tbaa !25
  ret double %734

735:                                              ; preds = %602
  %736 = landingpad { ptr, i32 }
          cleanup
  %737 = extractvalue { ptr, i32 } %736, 0
  store ptr %737, ptr %21, align 8
  %738 = extractvalue { ptr, i32 } %736, 1
  store i32 %738, ptr %22, align 4
  br label %881

739:                                              ; preds = %603
  %740 = landingpad { ptr, i32 }
          cleanup
  %741 = extractvalue { ptr, i32 } %740, 0
  store ptr %741, ptr %21, align 8
  %742 = extractvalue { ptr, i32 } %740, 1
  store i32 %742, ptr %22, align 4
  br label %877

743:                                              ; preds = %604
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %21, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %22, align 4
  br label %864

747:                                              ; preds = %605
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %21, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %22, align 4
  br label %860

751:                                              ; preds = %606
  %752 = landingpad { ptr, i32 }
          cleanup
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %21, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %22, align 4
  br label %856

755:                                              ; preds = %607
  %756 = landingpad { ptr, i32 }
          cleanup
  %757 = extractvalue { ptr, i32 } %756, 0
  store ptr %757, ptr %21, align 8
  %758 = extractvalue { ptr, i32 } %756, 1
  store i32 %758, ptr %22, align 4
  br label %843

759:                                              ; preds = %608
  %760 = landingpad { ptr, i32 }
          cleanup
  %761 = extractvalue { ptr, i32 } %760, 0
  store ptr %761, ptr %21, align 8
  %762 = extractvalue { ptr, i32 } %760, 1
  store i32 %762, ptr %22, align 4
  br label %839

763:                                              ; preds = %609
  %764 = landingpad { ptr, i32 }
          cleanup
  %765 = extractvalue { ptr, i32 } %764, 0
  store ptr %765, ptr %21, align 8
  %766 = extractvalue { ptr, i32 } %764, 1
  store i32 %766, ptr %22, align 4
  br label %835

767:                                              ; preds = %610
  %768 = landingpad { ptr, i32 }
          cleanup
  %769 = extractvalue { ptr, i32 } %768, 0
  store ptr %769, ptr %21, align 8
  %770 = extractvalue { ptr, i32 } %768, 1
  store i32 %770, ptr %22, align 4
  br label %828

771:                                              ; preds = %611
  %772 = landingpad { ptr, i32 }
          cleanup
  %773 = extractvalue { ptr, i32 } %772, 0
  store ptr %773, ptr %21, align 8
  %774 = extractvalue { ptr, i32 } %772, 1
  store i32 %774, ptr %22, align 4
  br label %824

775:                                              ; preds = %612
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %21, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %22, align 4
  br label %811

779:                                              ; preds = %613
  %780 = landingpad { ptr, i32 }
          cleanup
  %781 = extractvalue { ptr, i32 } %780, 0
  store ptr %781, ptr %21, align 8
  %782 = extractvalue { ptr, i32 } %780, 1
  store i32 %782, ptr %22, align 4
  br label %798

783:                                              ; preds = %614
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %21, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %22, align 4
  br label %794

787:                                              ; preds = %615
  %788 = landingpad { ptr, i32 }
          cleanup
  %789 = extractvalue { ptr, i32 } %788, 0
  store ptr %789, ptr %21, align 8
  %790 = extractvalue { ptr, i32 } %788, 1
  store i32 %790, ptr %22, align 4
  %791 = load i1, ptr %112, align 1
  br i1 %791, label %792, label %793

792:                                              ; preds = %787
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #6
  br label %793

793:                                              ; preds = %792, %787
  br label %794

794:                                              ; preds = %793, %783
  %795 = load i1, ptr %111, align 1
  br i1 %795, label %796, label %797

796:                                              ; preds = %794
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #6
  br label %797

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

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

800:                                              ; preds = %798
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  br label %801

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

803:                                              ; preds = %801
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #6
  br label %804

804:                                              ; preds = %803, %801
  %805 = load i1, ptr %107, align 1
  br i1 %805, label %806, label %807

806:                                              ; preds = %804
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #6
  br label %807

807:                                              ; preds = %806, %804
  %808 = load i1, ptr %105, align 1
  br i1 %808, label %809, label %810

809:                                              ; preds = %807
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #6
  br label %810

810:                                              ; preds = %809, %807
  br label %811

811:                                              ; preds = %810, %775
  %812 = load i1, ptr %104, align 1
  br i1 %812, label %813, label %814

813:                                              ; preds = %811
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  br label %814

814:                                              ; preds = %813, %811
  %815 = load i1, ptr %103, align 1
  br i1 %815, label %816, label %817

816:                                              ; preds = %814
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #6
  br label %817

817:                                              ; preds = %816, %814
  %818 = load i1, ptr %101, align 1
  br i1 %818, label %819, label %820

819:                                              ; preds = %817
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #6
  br label %820

820:                                              ; preds = %819, %817
  %821 = load i1, ptr %98, align 1
  br i1 %821, label %822, label %823

822:                                              ; preds = %820
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  br label %823

823:                                              ; preds = %822, %820
  br label %824

824:                                              ; preds = %823, %771
  %825 = load i1, ptr %97, align 1
  br i1 %825, label %826, label %827

826:                                              ; preds = %824
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #6
  br label %827

827:                                              ; preds = %826, %824
  br label %828

828:                                              ; preds = %827, %767
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #6
  %829 = load i1, ptr %95, align 1
  br i1 %829, label %830, label %831

830:                                              ; preds = %828
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #6
  br label %831

831:                                              ; preds = %830, %828
  %832 = load i1, ptr %93, align 1
  br i1 %832, label %833, label %834

833:                                              ; preds = %831
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  br label %834

834:                                              ; preds = %833, %831
  br label %835

835:                                              ; preds = %834, %763
  %836 = load i1, ptr %92, align 1
  br i1 %836, label %837, label %838

837:                                              ; preds = %835
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  br label %838

838:                                              ; preds = %837, %835
  br label %839

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

841:                                              ; preds = %839
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #6
  br label %842

842:                                              ; preds = %841, %839
  br label %843

843:                                              ; preds = %842, %755
  %844 = load i1, ptr %90, align 1
  br i1 %844, label %845, label %846

845:                                              ; preds = %843
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #6
  br label %846

846:                                              ; preds = %845, %843
  %847 = load i1, ptr %89, align 1
  br i1 %847, label %848, label %849

848:                                              ; preds = %846
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #6
  br label %849

849:                                              ; preds = %848, %846
  %850 = load i1, ptr %87, align 1
  br i1 %850, label %851, label %852

851:                                              ; preds = %849
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #6
  br label %852

852:                                              ; preds = %851, %849
  %853 = load i1, ptr %85, align 1
  br i1 %853, label %854, label %855

854:                                              ; preds = %852
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  br label %855

855:                                              ; preds = %854, %852
  br label %856

856:                                              ; preds = %855, %751
  %857 = load i1, ptr %84, align 1
  br i1 %857, label %858, label %859

858:                                              ; preds = %856
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  br label %859

859:                                              ; preds = %858, %856
  br label %860

860:                                              ; preds = %859, %747
  %861 = load i1, ptr %83, align 1
  br i1 %861, label %862, label %863

862:                                              ; preds = %860
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #6
  br label %863

863:                                              ; preds = %862, %860
  br label %864

864:                                              ; preds = %863, %743
  %865 = load i1, ptr %82, align 1
  br i1 %865, label %866, label %867

866:                                              ; preds = %864
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  br label %867

867:                                              ; preds = %866, %864
  %868 = load i1, ptr %81, align 1
  br i1 %868, label %869, label %870

869:                                              ; preds = %867
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #6
  br label %870

870:                                              ; preds = %869, %867
  %871 = load i1, ptr %79, align 1
  br i1 %871, label %872, label %873

872:                                              ; preds = %870
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #6
  br label %873

873:                                              ; preds = %872, %870
  %874 = load i1, ptr %77, align 1
  br i1 %874, label %875, label %876

875:                                              ; preds = %873
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #6
  br label %876

876:                                              ; preds = %875, %873
  br label %877

877:                                              ; preds = %876, %739
  %878 = load i1, ptr %76, align 1
  br i1 %878, label %879, label %880

879:                                              ; preds = %877
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  br label %880

880:                                              ; preds = %879, %877
  br label %881

881:                                              ; preds = %880, %735
  %882 = load i1, ptr %75, align 1
  br i1 %882, label %883, label %884

883:                                              ; preds = %881
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  br label %884

884:                                              ; preds = %883, %881
  %885 = load i1, ptr %74, align 1
  br i1 %885, label %886, label %887

886:                                              ; preds = %884
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #6
  br label %887

887:                                              ; preds = %886, %884
  %888 = load i1, ptr %72, align 1
  br i1 %888, label %889, label %890

889:                                              ; preds = %887
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #6
  br label %890

890:                                              ; preds = %889, %887
  %891 = load i1, ptr %70, align 1
  br i1 %891, label %892, label %893

892:                                              ; preds = %890
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #6
  br label %893

893:                                              ; preds = %892, %890
  %894 = load i1, ptr %68, align 1
  br i1 %894, label %895, label %896

895:                                              ; preds = %893
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #6
  br label %896

896:                                              ; preds = %895, %893
  %897 = load i1, ptr %66, align 1
  br i1 %897, label %898, label %899

898:                                              ; preds = %896
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #6
  br label %899

899:                                              ; preds = %898, %896
  %900 = load i1, ptr %64, align 1
  br i1 %900, label %901, label %902

901:                                              ; preds = %899
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #6
  br label %902

902:                                              ; preds = %901, %899
  %903 = load i1, ptr %62, align 1
  br i1 %903, label %904, label %905

904:                                              ; preds = %902
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #6
  br label %905

905:                                              ; preds = %904, %902
  br label %906

906:                                              ; preds = %905, %557
  %907 = load ptr, ptr %21, align 8
  %908 = load i32, ptr %22, align 4
  %909 = insertvalue { ptr, i32 } poison, ptr %907, 0
  %910 = insertvalue { ptr, i32 } %909, i32 %908, 1
  resume { ptr, i32 } %910
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7Polygon24calcR_waterWithOilLayersEd(ptr noundef nonnull align 8 dereferenceable(248), double noundef) #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) #3

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8), double noundef) #0 align 2

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

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

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

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

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

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

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

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


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.5" = 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
@__FUNCTION__._ZN7Polygon5calcREd = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [91 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.7 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [28 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_ZN7Polygon5calcREd(ptr noundef nonnull align 8 dereferenceable(248) %0, double noundef %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.5", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.5", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.5", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.5", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.5", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.5", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.5", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.5", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i32, align 4
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator.5", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.5", align 1
  %41 = getelementptr inbounds i8, ptr %0, i64 48
  %42 = load ptr, ptr %41, align 8, !tbaa !5
  %43 = getelementptr inbounds i8, ptr %0, i64 32
  %44 = load ptr, ptr %43, align 8, !tbaa !14
  %45 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %44)
  %46 = icmp eq ptr %42, %45
  %47 = getelementptr inbounds i8, ptr %0, i64 232
  %48 = load i16, ptr %47, align 8
  %49 = icmp eq i16 %48, 0
  %or.cond = select i1 %46, i1 %49, i1 false
  br i1 %or.cond, label %50, label %63

50:                                               ; preds = %2
  %51 = getelementptr inbounds i8, ptr %0, i64 80
  store double 1.000000e+00, ptr %51, align 8, !tbaa !15
  %52 = getelementptr inbounds i8, ptr %0, i64 112
  %53 = getelementptr inbounds i8, ptr %0, i64 72
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %52, i8 0, i64 16, i1 false)
  %54 = load double, ptr %53, align 8, !tbaa !16
  %55 = load ptr, ptr %43, align 8, !tbaa !14
  %56 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %55)
  %57 = tail call noundef double @_ZNK5Fluid9viscosityEv(ptr noundef nonnull align 8 dereferenceable(80) %56)
  %58 = load ptr, ptr %0, align 8, !tbaa !17
  %59 = getelementptr inbounds i8, ptr %58, i64 184
  %60 = load ptr, ptr %59, align 8
  %61 = tail call noundef double %60(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %54, double noundef %57)
  %62 = getelementptr inbounds i8, ptr %0, i64 128
  store double %61, ptr %62, align 8, !tbaa !19
  br label %127

63:                                               ; preds = %2
  %64 = load ptr, ptr %41, align 8, !tbaa !5
  %65 = load ptr, ptr %43, align 8, !tbaa !14
  %66 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984) %65)
  %67 = icmp eq ptr %64, %66
  br i1 %67, label %68, label %90

68:                                               ; preds = %63
  %69 = getelementptr inbounds i8, ptr %0, i64 216
  %70 = load ptr, ptr %69, align 8, !tbaa !20
  %71 = tail call noundef zeroext i1 @_ZNK10CornerApex12cornerExistsEv(ptr noundef nonnull align 8 dereferenceable(144) %70)
  br i1 %71, label %90, label %72

72:                                               ; preds = %68
  %73 = getelementptr inbounds i8, ptr %0, i64 80
  store double 0.000000e+00, ptr %73, align 8, !tbaa !15
  %74 = getelementptr inbounds i8, ptr %0, i64 72
  %75 = load double, ptr %74, align 8, !tbaa !16
  %76 = load ptr, ptr %43, align 8, !tbaa !14
  %77 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984) %76)
  %78 = tail call noundef double @_ZNK5Fluid9viscosityEv(ptr noundef nonnull align 8 dereferenceable(80) %77)
  %79 = load ptr, ptr %0, align 8, !tbaa !17
  %80 = getelementptr inbounds i8, ptr %79, i64 184
  %81 = load ptr, ptr %80, align 8
  %82 = tail call noundef double %81(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %75, double noundef %78)
  %83 = getelementptr inbounds i8, ptr %0, i64 112
  store double %82, ptr %83, align 8, !tbaa !28
  %84 = load ptr, ptr %43, align 8, !tbaa !14
  %85 = tail call noundef double @_ZNK10CommonData14KrwatcornAtSw0Ev(ptr noundef nonnull align 8 dereferenceable(1972) %84)
  %86 = load double, ptr %83, align 8, !tbaa !28
  %87 = fmul double %85, %86
  %88 = getelementptr inbounds i8, ptr %0, i64 120
  store double %87, ptr %88, align 8, !tbaa !29
  %89 = getelementptr inbounds i8, ptr %0, i64 128
  store double 0.000000e+00, ptr %89, align 8, !tbaa !19
  br label %127

90:                                               ; preds = %68, %63
  %91 = load ptr, ptr %41, align 8, !tbaa !5
  %92 = load ptr, ptr %43, align 8, !tbaa !14
  %93 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984) %92)
  %94 = icmp eq ptr %91, %93
  br i1 %94, label %95, label %113

95:                                               ; preds = %90
  %96 = getelementptr inbounds i8, ptr %0, i64 216
  %97 = load ptr, ptr %96, align 8, !tbaa !20
  %98 = tail call noundef zeroext i1 @_ZNK10CornerApex12cornerExistsEv(ptr noundef nonnull align 8 dereferenceable(144) %97)
  br i1 %98, label %99, label %113

99:                                               ; preds = %95
  %100 = tail call noundef ptr @_ZNK9ElemModel6elemanEv(ptr noundef nonnull align 8 dereferenceable(152) %0)
  %101 = tail call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %100)
  %102 = fsub double %1, %101
  %103 = getelementptr inbounds i8, ptr %0, i64 24
  %104 = load ptr, ptr %103, align 8, !tbaa !30
  %105 = load ptr, ptr %104, align 8, !tbaa !17
  %106 = getelementptr inbounds i8, ptr %105, i64 88
  %107 = load ptr, ptr %106, align 8
  %108 = tail call noundef double %107(ptr noundef nonnull align 8 dereferenceable(408) %104)
  %109 = load ptr, ptr %43, align 8, !tbaa !14
  %110 = tail call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %109)
  %111 = fneg double %108
  %112 = tail call double @llvm.fmuladd.f64(double %111, double %110, double %102)
  tail call void @_ZN7Polygon27calcR_oilWithWaterInCornersEd(ptr noundef nonnull align 8 dereferenceable(248) %0, double noundef %112)
  br label %127

113:                                              ; preds = %95, %90
  %114 = tail call noundef ptr @_ZNK9ElemModel6elemanEv(ptr noundef nonnull align 8 dereferenceable(152) %0)
  %115 = tail call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %114)
  %116 = fsub double %1, %115
  %117 = getelementptr inbounds i8, ptr %0, i64 24
  %118 = load ptr, ptr %117, align 8, !tbaa !30
  %119 = load ptr, ptr %118, align 8, !tbaa !17
  %120 = getelementptr inbounds i8, ptr %119, i64 88
  %121 = load ptr, ptr %120, align 8
  %122 = tail call noundef double %121(ptr noundef nonnull align 8 dereferenceable(408) %118)
  %123 = load ptr, ptr %43, align 8, !tbaa !14
  %124 = tail call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %123)
  %125 = fneg double %122
  %126 = tail call double @llvm.fmuladd.f64(double %125, double %124, double %116)
  tail call void @_ZN7Polygon24calcR_waterWithOilLayersEd(ptr noundef nonnull align 8 dereferenceable(248) %0, double noundef %126)
  br label %127

127:                                              ; preds = %72, %113, %99, %50
  %128 = getelementptr inbounds i8, ptr %0, i64 112
  %129 = load double, ptr %128, align 8, !tbaa !28
  %130 = fcmp ult double %129, 0.000000e+00
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #7
  br i1 %130, label %138, label %131

131:                                              ; preds = %127
  %132 = getelementptr inbounds i8, ptr %0, i64 120
  %133 = load double, ptr %132, align 8, !tbaa !29
  %134 = fcmp ult double %133, 0.000000e+00
  %135 = getelementptr inbounds i8, ptr %0, i64 128
  %136 = load double, ptr %135, align 8
  %137 = fcmp ult double %136, 0.000000e+00
  %or.cond267 = select i1 %134, i1 %137, i1 false
  br i1 %or.cond267, label %138, label %153

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

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

140:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @__FUNCTION__._ZN7Polygon5calcREd, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %141 unwind label %180

141:                                              ; preds = %140
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %142 unwind label %182

142:                                              ; preds = %141
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.2)
          to label %143 unwind label %184

143:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %144 unwind label %186

144:                                              ; preds = %143
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %145 unwind label %188

145:                                              ; preds = %144
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.4)
          to label %146 unwind label %190

146:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  store i32 51, ptr %16, align 4, !tbaa !31
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %147 unwind label %192

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

148:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %149 unwind label %196

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

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

151:                                              ; preds = %150
  %152 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %3, ptr noundef nonnull %17, i32 noundef 0)
          to label %.critedge279 unwind label %202

153:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  br label %.critedge300

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

.critedge300:                                     ; preds = %153, %.critedge279
  %154 = phi double [ %129, %153 ], [ %.pre, %.critedge279 ]
  %155 = fcmp ult double %154, 0.000000e+00
  br i1 %155, label %163, label %156

156:                                              ; preds = %.critedge300
  %157 = getelementptr inbounds i8, ptr %0, i64 120
  %158 = load double, ptr %157, align 8, !tbaa !29
  %159 = fcmp ult double %158, 0.000000e+00
  %160 = getelementptr inbounds i8, ptr %0, i64 128
  %161 = load double, ptr %160, align 8
  %162 = fcmp ult double %161, 0.000000e+00
  %or.cond303 = select i1 %159, i1 %162, i1 false
  br i1 %or.cond303, label %163, label %217

163:                                              ; preds = %156, %.critedge300
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.7)
  %165 = load double, ptr %128, align 8, !tbaa !28
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %164, double noundef %165)
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull @.str.8)
  %168 = getelementptr inbounds i8, ptr %0, i64 120
  %169 = load double, ptr %168, align 8, !tbaa !29
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %167, double noundef %169)
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull @.str.8)
  %172 = getelementptr inbounds i8, ptr %0, i64 128
  %173 = load double, ptr %172, align 8, !tbaa !19
  %174 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %171, double noundef %173)
  %175 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %174, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %217

176:                                              ; preds = %138
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %216

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

180:                                              ; preds = %140
  %181 = landingpad { ptr, i32 }
          cleanup
  br label %214

182:                                              ; preds = %141
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %213

184:                                              ; preds = %142
  %185 = landingpad { ptr, i32 }
          cleanup
  br label %212

186:                                              ; preds = %143
  %187 = landingpad { ptr, i32 }
          cleanup
  br label %211

188:                                              ; preds = %144
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %210

190:                                              ; preds = %145
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %209

192:                                              ; preds = %146
  %193 = landingpad { ptr, i32 }
          cleanup
  br label %208

194:                                              ; preds = %147
  %195 = landingpad { ptr, i32 }
          cleanup
  br label %207

196:                                              ; preds = %148
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %206

198:                                              ; preds = %149
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %205

200:                                              ; preds = %150
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %204

202:                                              ; preds = %151
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %204

204:                                              ; preds = %200, %202
  %.pn = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %205

205:                                              ; preds = %198, %204
  %.pn.pn = phi { ptr, i32 } [ %.pn, %204 ], [ %199, %198 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %206

206:                                              ; preds = %196, %205
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %205 ], [ %197, %196 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  br label %207

207:                                              ; preds = %194, %206
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %206 ], [ %195, %194 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %208

208:                                              ; preds = %207, %192
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %207 ], [ %193, %192 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  br label %209

209:                                              ; preds = %190, %208
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %208 ], [ %191, %190 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %210

210:                                              ; preds = %188, %209
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %209 ], [ %189, %188 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %211

211:                                              ; preds = %186, %210
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %210 ], [ %187, %186 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %212

212:                                              ; preds = %184, %211
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn, %211 ], [ %185, %184 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %213

213:                                              ; preds = %182, %212
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %212 ], [ %183, %182 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %214

214:                                              ; preds = %180, %213
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %213 ], [ %181, %180 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  br label %215

215:                                              ; preds = %178, %214
  %.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, %214 ], [ %179, %178 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %216

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

217:                                              ; preds = %163, %156
  %218 = getelementptr inbounds i8, ptr %0, i64 80
  %219 = load double, ptr %218, align 8, !tbaa !15
  %220 = getelementptr inbounds i8, ptr %0, i64 72
  %221 = load double, ptr %220, align 8, !tbaa !16
  %222 = fmul double %219, %221
  %223 = load ptr, ptr %43, align 8, !tbaa !14
  %224 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData5waterEv(ptr noundef nonnull align 8 dereferenceable(984) %223)
  %225 = call noundef double @_ZNK5Fluid11resistivityEv(ptr noundef nonnull align 8 dereferenceable(80) %224)
  %226 = fdiv double %222, %225
  %227 = load double, ptr %218, align 8, !tbaa !15
  %228 = load double, ptr %220, align 8, !tbaa !16
  %229 = fmul double %227, %228
  %230 = getelementptr inbounds i8, ptr %0, i64 152
  %231 = load double, ptr %230, align 8, !tbaa !32
  %232 = fdiv double %229, %231
  %233 = call double @sqrt(double noundef %232) #7
  %234 = load ptr, ptr %43, align 8, !tbaa !14
  %235 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK10CommonData7surfaceEv(ptr noundef nonnull align 8 dereferenceable(1972) %234)
  %236 = call noundef double @_ZNK5Fluid11resistivityEv(ptr noundef nonnull align 8 dereferenceable(80) %235)
  %237 = fdiv double %233, %236
  %238 = fadd double %226, %237
  %239 = getelementptr inbounds i8, ptr %0, i64 104
  store double %238, ptr %239, align 8, !tbaa !33
  %240 = load double, ptr %220, align 8, !tbaa !16
  %241 = load double, ptr %218, align 8, !tbaa !15
  %242 = fsub double 1.000000e+00, %241
  %243 = fmul double %240, %242
  %244 = load ptr, ptr %43, align 8, !tbaa !14
  %245 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK7GNMData3oilEv(ptr noundef nonnull align 8 dereferenceable(984) %244)
  %246 = call noundef double @_ZNK5Fluid11resistivityEv(ptr noundef nonnull align 8 dereferenceable(80) %245)
  %247 = fdiv double %243, %246
  %248 = load double, ptr %239, align 8, !tbaa !33
  %249 = fadd double %248, %247
  store double %249, ptr %239, align 8, !tbaa !33
  %250 = fcmp uge double %249, 1.000000e+64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #7
  br i1 %250, label %251, label %266

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

252:                                              ; preds = %251
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.1)
          to label %253 unwind label %273

253:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @__FUNCTION__._ZN7Polygon5calcREd, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %254 unwind label %275

254:                                              ; preds = %253
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %255 unwind label %277

255:                                              ; preds = %254
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.2)
          to label %256 unwind label %279

256:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %257 unwind label %281

257:                                              ; preds = %256
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %258 unwind label %283

258:                                              ; preds = %257
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.4)
          to label %259 unwind label %285

259:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #7
  store i32 59, ptr %35, align 4, !tbaa !31
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %260 unwind label %287

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

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

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

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

264:                                              ; preds = %263
  %265 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %22, ptr noundef nonnull %36, i32 noundef 0)
          to label %.critedge318 unwind label %297

266:                                              ; preds = %217
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #7
  br label %.critedge339

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

.critedge339:                                     ; preds = %266, %.critedge318
  %267 = getelementptr inbounds i8, ptr %0, i64 120
  %268 = getelementptr inbounds i8, ptr %0, i64 136
  %269 = load <2 x double>, ptr %267, align 8, !tbaa !34
  store <2 x double> %269, ptr %268, align 8, !tbaa !34
  %270 = load double, ptr %218, align 8, !tbaa !15
  ret double %270

271:                                              ; preds = %251
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %311

273:                                              ; preds = %252
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %310

275:                                              ; preds = %253
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %309

277:                                              ; preds = %254
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %308

279:                                              ; preds = %255
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %307

281:                                              ; preds = %256
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %306

283:                                              ; preds = %257
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %305

285:                                              ; preds = %258
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %304

287:                                              ; preds = %259
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %303

289:                                              ; preds = %260
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %302

291:                                              ; preds = %261
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %301

293:                                              ; preds = %262
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %300

295:                                              ; preds = %263
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %299

297:                                              ; preds = %264
  %298 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %299

299:                                              ; preds = %295, %297
  %.pn248 = phi { ptr, i32 } [ %298, %297 ], [ %296, %295 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %300

300:                                              ; preds = %293, %299
  %.pn248.pn = phi { ptr, i32 } [ %.pn248, %299 ], [ %294, %293 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %301

301:                                              ; preds = %291, %300
  %.pn248.pn.pn = phi { ptr, i32 } [ %.pn248.pn, %300 ], [ %292, %291 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %302

302:                                              ; preds = %289, %301
  %.pn248.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn, %301 ], [ %290, %289 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %303

303:                                              ; preds = %302, %287
  %.pn248.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn.pn, %302 ], [ %288, %287 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %304

304:                                              ; preds = %285, %303
  %.pn248.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn.pn.pn, %303 ], [ %286, %285 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %305

305:                                              ; preds = %283, %304
  %.pn248.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn.pn.pn.pn, %304 ], [ %284, %283 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %306

306:                                              ; preds = %281, %305
  %.pn248.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn.pn.pn.pn.pn, %305 ], [ %282, %281 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %307

307:                                              ; preds = %279, %306
  %.pn248.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn.pn.pn.pn.pn.pn, %306 ], [ %280, %279 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %308

308:                                              ; preds = %277, %307
  %.pn248.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn.pn.pn.pn.pn.pn.pn, %307 ], [ %278, %277 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %309

309:                                              ; preds = %275, %308
  %.pn248.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn.pn.pn.pn.pn.pn.pn.pn, %308 ], [ %276, %275 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %310

310:                                              ; preds = %273, %309
  %.pn248.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %309 ], [ %274, %273 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %311

311:                                              ; preds = %271, %310
  %.pn248.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %310 ], [ %272, %271 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %312

312:                                              ; preds = %311, %216
  %.pn248.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn248.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %311 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %216 ]
  resume { ptr, i32 } %.pn248.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7Polygon24calcR_waterWithOilLayersEd(ptr noundef nonnull align 8 dereferenceable(248), double noundef) 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 #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress 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 #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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, !10, i64 48}
!6 = !{!"_ZTS9ElemModel", !7, i64 8, !7, i64 16, !10, i64 24, !10, i64 32, !7, i64 40, !10, i64 48, !11, i64 56, !11, i64 57, !11, i64 58, !11, i64 59, !12, i64 60, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !13, i64 120, !13, i64 136}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"int", !8, i64 0}
!13 = !{!"_ZTSSt4pairIddE", !7, i64 0, !7, i64 8}
!14 = !{!6, !10, i64 32}
!15 = !{!6, !7, i64 80}
!16 = !{!6, !7, i64 72}
!17 = !{!18, !18, i64 0}
!18 = !{!"vtable pointer", !9, i64 0}
!19 = !{!6, !7, i64 128}
!20 = !{!21, !10, i64 216}
!21 = !{!"_ZTS7Polygon", !22, i64 0, !12, i64 184, !23, i64 192, !10, i64 216, !10, i64 224, !27, i64 232, !8, i64 234, !7, i64 240}
!22 = !{!"_ZTS8VoidElem", !6, i64 0, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176}
!23 = !{!"_ZTSSt6vectorIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!27 = !{!"short", !8, i64 0}
!28 = !{!6, !7, i64 112}
!29 = !{!6, !7, i64 120}
!30 = !{!6, !10, i64 24}
!31 = !{!12, !12, i64 0}
!32 = !{!22, !7, i64 152}
!33 = !{!6, !7, i64 104}
!34 = !{!7, !7, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass