; LLVM IR from gem5/gem5 :: ext/dsent/model/optical/RingModulator.ll (ZN5DSENT13RingModulator15designModulatorEdd)

; 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.LibUtil::String" = type { %"class.std::__cxx11::basic_string" }
%"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.DSENT::RingModulator" = type { %"class.DSENT::OpticalModel", %"class.DSENT::OpticalTransmitter", double, double, double, double }
%"class.DSENT::OpticalModel" = type { %"class.DSENT::ElectricalModel", ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.DSENT::ElectricalModel" = type { %"class.DSENT::Model.base", %"class.std::vector", i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.DSENT::Model.base" = type <{ ptr, %"class.LibUtil::String", i8, [7 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i8 }>
%"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.DSENT::OpticalTransmitter" = type { ptr }

@.str = external hidden unnamed_addr constant [9 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [34 x i8], align 1
@_ZTIN7LibUtil9ExceptionE = external constant ptr
@.str.47 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [11 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

declare void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) unnamed_addr #1

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

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

declare void @_ZNK5DSENT5Model12getParameterERKN7LibUtil6StringE(ptr dead_on_unwind writable sret(%"class.LibUtil::String") align 8, ptr noundef nonnull align 8 dereferenceable(131), ptr noundef nonnull align 8 dereferenceable(32)) #1

declare noundef i32 @_ZNK7LibUtil6StringcviEv(ptr noundef nonnull align 8 dereferenceable(32)) #1

declare noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131)) #1

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

declare noundef ptr @_ZN5DSENT12OpticalModel12getModulatorERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(296), ptr noundef nonnull align 8 dereferenceable(32)) #1

declare noundef ptr @_ZN5DSENT15ElectricalModel7getLoadERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(32)) #1

declare noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32)) #1

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

declare noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131)) #1

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32)) #1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5DSENT13RingModulator15designModulatorEdd(ptr noundef nonnull align 8 dereferenceable(336) %0, double noundef %1, double noundef %2) #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i1, align 1
  %5 = alloca ptr, align 8
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca %"class.LibUtil::String", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca double, align 8
  %13 = alloca %"class.LibUtil::String", align 8
  %14 = alloca %"class.LibUtil::String", align 8
  %15 = alloca i32, align 4
  %16 = alloca double, align 8
  %17 = alloca %"class.LibUtil::String", align 8
  %18 = alloca double, align 8
  %19 = alloca %"class.LibUtil::String", align 8
  %20 = alloca double, align 8
  %21 = alloca %"class.LibUtil::String", align 8
  %22 = alloca i32, align 4
  %23 = alloca %"class.LibUtil::String", align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.LibUtil::String", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.LibUtil::String", align 8
  %28 = alloca %"class.LibUtil::String", align 8
  %29 = alloca %"class.LibUtil::String", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.LibUtil::String", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.LibUtil::String", align 8
  %36 = alloca %"class.LibUtil::String", align 8
  %37 = alloca %"class.LibUtil::String", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca i32, align 4
  %55 = alloca double, align 8
  %56 = alloca %"class.LibUtil::String", align 8
  %57 = alloca double, align 8
  %58 = alloca %"class.LibUtil::String", align 8
  %59 = alloca double, align 8
  %60 = alloca %"class.LibUtil::String", align 8
  %61 = alloca double, align 8
  %62 = alloca %"class.LibUtil::String", align 8
  %63 = alloca double, align 8
  %64 = alloca %"class.LibUtil::String", align 8
  %65 = alloca double, align 8
  %66 = alloca %"class.LibUtil::String", align 8
  %67 = alloca double, align 8
  %68 = alloca %"class.LibUtil::String", align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca i32, align 4
  %81 = alloca double, align 8
  %82 = alloca double, align 8
  %83 = alloca double, align 8
  %84 = alloca %"class.LibUtil::String", align 8
  %85 = alloca %"class.LibUtil::String", align 8
  %86 = alloca %"class.LibUtil::String", align 8
  %87 = alloca %"class.LibUtil::String", align 8
  %88 = alloca %"class.LibUtil::String", align 8
  %89 = alloca %"class.LibUtil::String", align 8
  %90 = alloca %"class.LibUtil::String", align 8
  %91 = alloca %"class.LibUtil::String", align 8
  %92 = alloca %"class.LibUtil::String", align 8
  %93 = alloca %"class.LibUtil::String", align 8
  %94 = alloca %"class.LibUtil::String", align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  %97 = alloca %"class.LibUtil::String", align 8
  %98 = alloca %"class.LibUtil::String", align 8
  %99 = alloca %"class.LibUtil::String", align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store double %1, ptr %6, align 8, !tbaa !9
  store double %2, ptr %7, align 8, !tbaa !9
  %100 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %101 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef @.str.40)
  %102 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %101, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %103 unwind label %143

103:                                              ; preds = %3
  %104 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %102)
          to label %105 unwind label %143

105:                                              ; preds = %103
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #8
  store double %104, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str)
  invoke void @_ZNK5DSENT5Model12getParameterERKN7LibUtil6StringE(ptr dead_on_unwind writable sret(%"class.LibUtil::String") align 8 %13, ptr noundef nonnull align 8 dereferenceable(131) %100, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %106 unwind label %147

106:                                              ; preds = %105
  %107 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %108 unwind label %151

108:                                              ; preds = %106
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #8
  store double %107, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 20, ptr %15, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %109 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.41)
  %110 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %109, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %111 unwind label %156

111:                                              ; preds = %108
  %112 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %110)
          to label %113 unwind label %156

113:                                              ; preds = %111
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  store double %112, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %114 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.42)
  %115 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %114, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %116 unwind label %160

116:                                              ; preds = %113
  %117 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %115)
          to label %118 unwind label %160

118:                                              ; preds = %116
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  store double %117, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %119 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.34)
  %120 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %119, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %121 unwind label %164

121:                                              ; preds = %118
  %122 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %120)
          to label %123 unwind label %164

123:                                              ; preds = %121
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  store double %122, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %124 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.11)
  %125 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK7LibUtil3MapINS_6StringEE3getERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %124, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %126 unwind label %168

126:                                              ; preds = %123
  %127 = invoke noundef i32 @_ZNK7LibUtil6StringcviEv(ptr noundef nonnull align 8 dereferenceable(32) %125)
          to label %128 unwind label %168

128:                                              ; preds = %126
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  store i32 %127, ptr %22, align 4, !tbaa !11
  br label %129

129:                                              ; preds = %128
  %130 = load double, ptr %7, align 8, !tbaa !9
  %131 = fcmp ogt double %130, 0.000000e+00
  br i1 %131, label %206, label %132

132:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.43)
  invoke void (ptr, ptr, ...) @_ZN7LibUtil6String6formatERKS0_z(ptr dead_on_unwind writable sret(%"class.LibUtil::String") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.44, i32 noundef 258)
          to label %133 unwind label %172

133:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #8
  %134 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT5Model15getInstanceNameEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
          to label %135 unwind label %176

135:                                              ; preds = %133
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %134)
          to label %136 unwind label %176

136:                                              ; preds = %135
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.46)
          to label %137 unwind label %180

137:                                              ; preds = %136
  invoke void @_ZN7LibUtil6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %138 unwind label %184

138:                                              ; preds = %137
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind 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) %29)
          to label %139 unwind label %188

139:                                              ; preds = %138
  invoke void @_ZN7LibUtil6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %140 unwind label %192

140:                                              ; preds = %139
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  store ptr %25, ptr %24, align 8, !tbaa !5
  %141 = call ptr @__cxa_allocate_exception(i64 40) #8
  %142 = load ptr, ptr %24, align 8, !tbaa !5
  call void @_ZN7LibUtil9ExceptionC1ERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(40) %141, ptr noundef nonnull align 8 dereferenceable(32) %142) #8
  invoke void @__cxa_throw(ptr %141, ptr @_ZTIN7LibUtil9ExceptionE, ptr @_ZN7LibUtil9ExceptionD1Ev) #9
          to label %644 unwind label %201

143:                                              ; preds = %103, %3
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %10, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #8
  br label %638

147:                                              ; preds = %105
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %10, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %11, align 4
  br label %155

151:                                              ; preds = %106
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %10, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  br label %155

155:                                              ; preds = %151, %147
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #8
  br label %637

156:                                              ; preds = %111, %108
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %10, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  br label %636

160:                                              ; preds = %116, %113
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %10, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %635

164:                                              ; preds = %121, %118
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %10, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  br label %634

168:                                              ; preds = %126, %123
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %10, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  br label %633

172:                                              ; preds = %132
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %10, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %11, align 4
  br label %200

176:                                              ; preds = %135, %133
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %10, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %11, align 4
  br label %199

180:                                              ; preds = %136
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %10, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %11, align 4
  br label %198

184:                                              ; preds = %137
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %10, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %11, align 4
  br label %197

188:                                              ; preds = %138
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %10, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %11, align 4
  br label %196

192:                                              ; preds = %139
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %10, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %196

196:                                              ; preds = %192, %188
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %197

197:                                              ; preds = %196, %184
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %198

198:                                              ; preds = %197, %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %199

199:                                              ; preds = %198, %176
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %200

200:                                              ; preds = %199, %172
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  br label %205

201:                                              ; preds = %140
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %10, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  br label %205

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

206:                                              ; preds = %129
  br label %207

207:                                              ; preds = %206
  br label %208

208:                                              ; preds = %207
  br label %209

209:                                              ; preds = %208
  %210 = load double, ptr %6, align 8, !tbaa !9
  %211 = fcmp ogt double %210, 0.000000e+00
  br i1 %211, label %257, label %212

212:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.43)
  invoke void (ptr, ptr, ...) @_ZN7LibUtil6String6formatERKS0_z(ptr dead_on_unwind writable sret(%"class.LibUtil::String") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.44, i32 noundef 259)
          to label %213 unwind label %223

213:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #8
  %214 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT5Model15getInstanceNameEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
          to label %215 unwind label %227

215:                                              ; preds = %213
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %214)
          to label %216 unwind label %227

216:                                              ; preds = %215
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.47)
          to label %217 unwind label %231

217:                                              ; preds = %216
  invoke void @_ZN7LibUtil6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %218 unwind label %235

218:                                              ; preds = %217
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %219 unwind label %239

219:                                              ; preds = %218
  invoke void @_ZN7LibUtil6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %220 unwind label %243

220:                                              ; preds = %219
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  store ptr %33, ptr %32, align 8, !tbaa !5
  %221 = call ptr @__cxa_allocate_exception(i64 40) #8
  %222 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN7LibUtil9ExceptionC1ERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(40) %221, ptr noundef nonnull align 8 dereferenceable(32) %222) #8
  invoke void @__cxa_throw(ptr %221, ptr @_ZTIN7LibUtil9ExceptionE, ptr @_ZN7LibUtil9ExceptionD1Ev) #9
          to label %644 unwind label %252

223:                                              ; preds = %212
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %10, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %11, align 4
  br label %251

227:                                              ; preds = %215, %213
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %10, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %11, align 4
  br label %250

231:                                              ; preds = %216
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %10, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %11, align 4
  br label %249

235:                                              ; preds = %217
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %10, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %11, align 4
  br label %248

239:                                              ; preds = %218
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %10, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %11, align 4
  br label %247

243:                                              ; preds = %219
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %10, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %247

247:                                              ; preds = %243, %239
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %248

248:                                              ; preds = %247, %235
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %249

249:                                              ; preds = %248, %231
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  br label %250

250:                                              ; preds = %249, %227
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %251

251:                                              ; preds = %250, %223
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %256

252:                                              ; preds = %220
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %10, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  br label %256

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

257:                                              ; preds = %209
  br label %258

258:                                              ; preds = %257
  br label %259

259:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %260 = load double, ptr %7, align 8, !tbaa !9
  %261 = fdiv double %260, 1.000000e+01
  %262 = call double @pow(double noundef 1.000000e+01, double noundef %261) #8
  store double %262, ptr %40, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %263 = load double, ptr %6, align 8, !tbaa !9
  %264 = fneg double %263
  %265 = fdiv double %264, 1.000000e+01
  %266 = call double @pow(double noundef 1.000000e+01, double noundef %265) #8
  store double %266, ptr %41, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %267 = load double, ptr %41, align 8, !tbaa !9
  %268 = load double, ptr %40, align 8, !tbaa !9
  %269 = fdiv double %267, %268
  store double %269, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %270 = getelementptr inbounds %"class.DSENT::RingModulator", ptr %100, i32 0, i32 2
  %271 = load double, ptr %270, align 8, !tbaa !13
  store double %271, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %272 = getelementptr inbounds %"class.DSENT::RingModulator", ptr %100, i32 0, i32 3
  %273 = load double, ptr %272, align 8, !tbaa !28
  store double %273, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %274 = getelementptr inbounds %"class.DSENT::RingModulator", ptr %100, i32 0, i32 4
  %275 = load double, ptr %274, align 8, !tbaa !29
  store double %275, ptr %45, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %276 = getelementptr inbounds %"class.DSENT::RingModulator", ptr %100, i32 0, i32 5
  %277 = load double, ptr %276, align 8, !tbaa !30
  store double %277, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %278 = load double, ptr %43, align 8, !tbaa !9
  %279 = fmul double -2.000000e+00, %278
  %280 = load double, ptr %45, align 8, !tbaa !9
  %281 = fmul double %279, %280
  store double %281, ptr %47, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %282 = load double, ptr %18, align 8, !tbaa !9
  %283 = fsub double 1.000000e+00, %282
  %284 = load double, ptr %41, align 8, !tbaa !9
  %285 = fsub double 1.000000e+00, %284
  %286 = fdiv double %283, %285
  %287 = fsub double %286, 1.000000e+00
  %288 = call double @sqrt(double noundef %287) #8
  %289 = load double, ptr %18, align 8, !tbaa !9
  %290 = fsub double 1.000000e+00, %289
  %291 = load double, ptr %42, align 8, !tbaa !9
  %292 = fsub double 1.000000e+00, %291
  %293 = fdiv double %290, %292
  %294 = fsub double %293, 1.000000e+00
  %295 = call double @sqrt(double noundef %294) #8
  %296 = fsub double %288, %295
  store double %296, ptr %48, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %297 = load double, ptr %48, align 8, !tbaa !9
  %298 = load double, ptr %46, align 8, !tbaa !9
  %299 = fmul double %297, %298
  store double %299, ptr %49, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %300 = load double, ptr %43, align 8, !tbaa !9
  %301 = load double, ptr %49, align 8, !tbaa !9
  %302 = load double, ptr %47, align 8, !tbaa !9
  %303 = fsub double %301, %302
  %304 = load double, ptr %43, align 8, !tbaa !9
  %305 = fmul double 2.000000e+00, %304
  %306 = load double, ptr %45, align 8, !tbaa !9
  %307 = fmul double %305, %306
  %308 = fdiv double %303, %307
  %309 = call double @pow(double noundef %308, double noundef 2.000000e+00) #8
  %310 = fsub double %309, 1.000000e+00
  %311 = fmul double %300, %310
  store double %311, ptr %50, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %312 = load double, ptr %50, align 8, !tbaa !9
  %313 = load double, ptr %16, align 8, !tbaa !9
  %314 = fmul double %312, %313
  store double %314, ptr %51, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %315 = load double, ptr %44, align 8, !tbaa !9
  %316 = load double, ptr %43, align 8, !tbaa !9
  %317 = load double, ptr %50, align 8, !tbaa !9
  %318 = fadd double %316, %317
  %319 = load double, ptr %43, align 8, !tbaa !9
  %320 = fdiv double %318, %319
  %321 = call double @sqrt(double noundef %320) #8
  %322 = fmul double %315, %321
  store double %322, ptr %52, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %323 = load double, ptr %49, align 8, !tbaa !9
  %324 = load double, ptr %50, align 8, !tbaa !9
  %325 = fdiv double %323, %324
  store double %325, ptr %53, align 8, !tbaa !9
  %326 = load double, ptr %41, align 8, !tbaa !9
  %327 = fcmp oge double %326, 1.000000e+00
  br i1 %327, label %328, label %329

328:                                              ; preds = %259
  store i1 false, ptr %4, align 1
  store i32 1, ptr %54, align 4
  br label %631

329:                                              ; preds = %259
  %330 = load double, ptr %42, align 8, !tbaa !9
  %331 = load double, ptr %18, align 8, !tbaa !9
  %332 = fcmp ole double %330, %331
  br i1 %332, label %333, label %334

333:                                              ; preds = %329
  store i1 false, ptr %4, align 1
  store i32 1, ptr %54, align 4
  br label %631

334:                                              ; preds = %329
  %335 = load double, ptr %40, align 8, !tbaa !9
  %336 = load double, ptr %18, align 8, !tbaa !9
  %337 = fdiv double 1.000000e+00, %336
  %338 = fcmp oge double %335, %337
  br i1 %338, label %339, label %340

339:                                              ; preds = %334
  store i1 false, ptr %4, align 1
  store i32 1, ptr %54, align 4
  br label %631

340:                                              ; preds = %334
  %341 = load double, ptr %52, align 8, !tbaa !9
  %342 = load double, ptr %20, align 8, !tbaa !9
  %343 = fcmp oge double %341, %342
  br i1 %343, label %344, label %345

344:                                              ; preds = %340
  store i1 false, ptr %4, align 1
  store i32 1, ptr %54, align 4
  br label %631

345:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %346 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  %347 = call noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72) %346)
  %348 = call noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40) %347)
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.48)
  %349 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7LibUtil3MapIdE3getERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(56) %348, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %350 unwind label %410

350:                                              ; preds = %345
  %351 = load double, ptr %349, align 8, !tbaa !9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  store double %351, ptr %55, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %352 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  %353 = call noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72) %352)
  %354 = call noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40) %353)
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @.str.49)
  %355 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7LibUtil3MapIdE3getERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(56) %354, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %356 unwind label %414

356:                                              ; preds = %350
  %357 = load double, ptr %355, align 8, !tbaa !9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  store double %357, ptr %57, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %358 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  %359 = call noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72) %358)
  %360 = call noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40) %359)
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.50)
  %361 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7LibUtil3MapIdE3getERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(56) %360, ptr noundef nonnull align 8 dereferenceable(32) %60)
          to label %362 unwind label %418

362:                                              ; preds = %356
  %363 = load double, ptr %361, align 8, !tbaa !9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  store double %363, ptr %59, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  %364 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  %365 = call noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72) %364)
  %366 = call noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40) %365)
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef @.str.51)
  %367 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7LibUtil3MapIdE3getERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(56) %366, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %368 unwind label %422

368:                                              ; preds = %362
  %369 = load double, ptr %367, align 8, !tbaa !9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  store double %369, ptr %61, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %370 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  %371 = call noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72) %370)
  %372 = call noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40) %371)
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef @.str.52)
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7LibUtil3MapIdE3getERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(56) %372, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %374 unwind label %426

374:                                              ; preds = %368
  %375 = load double, ptr %373, align 8, !tbaa !9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  store double %375, ptr %63, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %376 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef @.str.53)
  %377 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %376, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %378 unwind label %430

378:                                              ; preds = %374
  %379 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %377)
          to label %380 unwind label %430

380:                                              ; preds = %378
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #8
  store double %379, ptr %65, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  %381 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef @.str.54)
  %382 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %381, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %383 unwind label %434

383:                                              ; preds = %380
  %384 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %382)
          to label %385 unwind label %434

385:                                              ; preds = %383
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #8
  store double %384, ptr %67, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %386 = load double, ptr %51, align 8, !tbaa !9
  %387 = load double, ptr %51, align 8, !tbaa !9
  %388 = load double, ptr %50, align 8, !tbaa !9
  %389 = fsub double %387, %388
  %390 = fdiv double %386, %389
  %391 = call double @log(double noundef %390) #8
  store double %391, ptr %69, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %392 = load double, ptr %12, align 8, !tbaa !9
  %393 = fmul double 4.000000e+00, %392
  %394 = fdiv double 1.000000e+00, %393
  store double %394, ptr %70, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %395 = load double, ptr %69, align 8, !tbaa !9
  %396 = load double, ptr %57, align 8, !tbaa !9
  %397 = fmul double %395, %396
  %398 = load double, ptr %59, align 8, !tbaa !9
  %399 = fmul double %397, %398
  store double %399, ptr %71, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  %400 = load double, ptr %71, align 8, !tbaa !9
  %401 = load double, ptr %69, align 8, !tbaa !9
  %402 = load double, ptr %65, align 8, !tbaa !9
  %403 = fmul double %401, %402
  %404 = load double, ptr %53, align 8, !tbaa !9
  %405 = call double @llvm.fmuladd.f64(double %403, double %404, double %400)
  store double %405, ptr %72, align 8, !tbaa !9
  %406 = load double, ptr %72, align 8, !tbaa !9
  %407 = load double, ptr %70, align 8, !tbaa !9
  %408 = fcmp ogt double %406, %407
  br i1 %408, label %409, label %438

409:                                              ; preds = %385
  store i1 false, ptr %4, align 1
  store i32 1, ptr %54, align 4
  br label %623

410:                                              ; preds = %345
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %10, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  br label %630

414:                                              ; preds = %350
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %10, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  br label %629

418:                                              ; preds = %356
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %10, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  br label %628

422:                                              ; preds = %362
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %10, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  br label %627

426:                                              ; preds = %368
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %10, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  br label %626

430:                                              ; preds = %378, %374
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %10, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #8
  br label %625

434:                                              ; preds = %383, %380
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %10, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #8
  br label %624

438:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  store double 1.000000e+00, ptr %74, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %439 = load double, ptr %69, align 8, !tbaa !9
  %440 = load double, ptr %59, align 8, !tbaa !9
  %441 = fmul double %439, %440
  %442 = load double, ptr %53, align 8, !tbaa !9
  %443 = load double, ptr %67, align 8, !tbaa !9
  %444 = fadd double %442, %443
  %445 = fmul double %441, %444
  %446 = load double, ptr %70, align 8, !tbaa !9
  %447 = load double, ptr %72, align 8, !tbaa !9
  %448 = fsub double %446, %447
  %449 = fdiv double %445, %448
  store double %449, ptr %75, align 8, !tbaa !9
  %450 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(8) %75)
  %451 = load double, ptr %450, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  store double %451, ptr %73, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %452 = load double, ptr %73, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  store double 1.000000e+00, ptr %77, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %453 = load double, ptr %51, align 8, !tbaa !9
  %454 = load double, ptr %8, align 8, !tbaa !9
  %455 = fdiv double %453, %454
  store double %455, ptr %78, align 8, !tbaa !9
  %456 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %78)
  %457 = load double, ptr %456, align 8, !tbaa !9
  %458 = fmul double %452, %457
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  store double %458, ptr %76, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %459 = load double, ptr %73, align 8, !tbaa !9
  %460 = load double, ptr %55, align 8, !tbaa !9
  %461 = fmul double %459, %460
  store double %461, ptr %79, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #8
  store i32 0, ptr %80, align 4, !tbaa !11
  br label %462

462:                                              ; preds = %500, %438
  %463 = load double, ptr %79, align 8, !tbaa !9
  %464 = load double, ptr %55, align 8, !tbaa !9
  %465 = fcmp ogt double %463, %464
  br i1 %465, label %473, label %466

466:                                              ; preds = %462
  %467 = load i32, ptr %80, align 4, !tbaa !11
  %468 = icmp eq i32 %467, 0
  br i1 %468, label %473, label %469

469:                                              ; preds = %466
  %470 = load i32, ptr %80, align 4, !tbaa !11
  %471 = and i32 %470, 1
  %472 = icmp eq i32 %471, 0
  br label %473

473:                                              ; preds = %469, %466, %462
  %474 = phi i1 [ true, %466 ], [ true, %462 ], [ %472, %469 ]
  br i1 %474, label %475, label %501

475:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  store double 1.000000e+00, ptr %82, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %476 = load double, ptr %59, align 8, !tbaa !9
  %477 = load double, ptr %79, align 8, !tbaa !9
  %478 = fmul double %476, %477
  %479 = load double, ptr %70, align 8, !tbaa !9
  %480 = load double, ptr %71, align 8, !tbaa !9
  %481 = fsub double %479, %480
  %482 = fdiv double %478, %481
  store double %482, ptr %83, align 8, !tbaa !9
  %483 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %83)
  %484 = load double, ptr %483, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  store double %484, ptr %81, align 8, !tbaa !9
  %485 = load double, ptr %81, align 8, !tbaa !9
  %486 = load double, ptr %55, align 8, !tbaa !9
  %487 = fmul double %485, %486
  store double %487, ptr %79, align 8, !tbaa !9
  %488 = load double, ptr %81, align 8, !tbaa !9
  %489 = load double, ptr %76, align 8, !tbaa !9
  %490 = fadd double %489, %488
  store double %490, ptr %76, align 8, !tbaa !9
  %491 = load i32, ptr %80, align 4, !tbaa !11
  %492 = load i32, ptr %15, align 4, !tbaa !11
  %493 = icmp ugt i32 %491, %492
  br i1 %493, label %494, label %495

494:                                              ; preds = %475
  store i1 false, ptr %4, align 1
  store i32 1, ptr %54, align 4
  br label %498

495:                                              ; preds = %475
  %496 = load i32, ptr %80, align 4, !tbaa !11
  %497 = add i32 %496, 1
  store i32 %497, ptr %80, align 4, !tbaa !11
  store i32 0, ptr %54, align 4
  br label %498

498:                                              ; preds = %495, %494
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  %499 = load i32, ptr %54, align 4
  switch i32 %499, label %621 [
    i32 0, label %500
  ]

500:                                              ; preds = %498
  br label %462, !llvm.loop !31

501:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 32, ptr %84) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef @.str.18)
  %502 = invoke noundef ptr @_ZN5DSENT15ElectricalModel7getLoadERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(240) %100, ptr noundef nonnull align 8 dereferenceable(32) %84)
          to label %503 unwind label %559

503:                                              ; preds = %501
  %504 = load double, ptr %79, align 8, !tbaa !9
  invoke void @_ZN5DSENT14ElectricalLoad10setLoadCapEd(ptr noundef nonnull align 8 dereferenceable(96) %502, double noundef %504)
          to label %505 unwind label %559

505:                                              ; preds = %503
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #8
  %506 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %85) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef @.str.22)
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #8
  %507 = load double, ptr %73, align 8, !tbaa !9
  invoke void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32) %86, double noundef %507)
          to label %508 unwind label %563

508:                                              ; preds = %505
  invoke void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56) %506, ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %509 unwind label %567

509:                                              ; preds = %508
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #8
  %510 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %87) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef @.str.55)
  call void @llvm.lifetime.start.p0(i64 32, ptr %88) #8
  %511 = load double, ptr %79, align 8, !tbaa !9
  invoke void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32) %88, double noundef %511)
          to label %512 unwind label %572

512:                                              ; preds = %509
  invoke void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56) %510, ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(32) %88)
          to label %513 unwind label %576

513:                                              ; preds = %512
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #8
  %514 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %89) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef @.str.23)
  call void @llvm.lifetime.start.p0(i64 32, ptr %90) #8
  %515 = load double, ptr %76, align 8, !tbaa !9
  %516 = load double, ptr %73, align 8, !tbaa !9
  %517 = fsub double %515, %516
  invoke void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32) %90, double noundef %517)
          to label %518 unwind label %581

518:                                              ; preds = %513
  invoke void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56) %514, ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(32) %90)
          to label %519 unwind label %585

519:                                              ; preds = %518
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #8
  %520 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %91) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef @.str.56)
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #8
  %521 = load double, ptr %51, align 8, !tbaa !9
  invoke void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32) %92, double noundef %521)
          to label %522 unwind label %590

522:                                              ; preds = %519
  invoke void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56) %520, ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(32) %92)
          to label %523 unwind label %594

523:                                              ; preds = %522
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #8
  %524 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
  call void @llvm.lifetime.start.p0(i64 32, ptr %93) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef @.str.57)
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #8
  %525 = load double, ptr %53, align 8, !tbaa !9
  invoke void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32) %94, double noundef %525)
          to label %526 unwind label %599

526:                                              ; preds = %523
  invoke void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56) %524, ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %527 unwind label %603

527:                                              ; preds = %526
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %528 = load double, ptr %76, align 8, !tbaa !9
  %529 = load double, ptr %61, align 8, !tbaa !9
  %530 = fmul double %528, %529
  store double %530, ptr %95, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %531 = load double, ptr %76, align 8, !tbaa !9
  %532 = load double, ptr %63, align 8, !tbaa !9
  %533 = fmul double %531, %532
  store double %533, ptr %96, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %97) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef @.str.58)
  %534 = invoke noundef ptr @_ZN5DSENT5Model13getAreaResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %100, ptr noundef nonnull align 8 dereferenceable(32) %97)
          to label %535 unwind label %608

535:                                              ; preds = %527
  %536 = load double, ptr %95, align 8, !tbaa !9
  %537 = load i32, ptr %22, align 4, !tbaa !11
  %538 = sitofp i32 %537 to double
  %539 = fmul double %536, %538
  %540 = load ptr, ptr %534, align 8, !tbaa !33
  %541 = getelementptr inbounds ptr, ptr %540, i64 2
  %542 = load ptr, ptr %541, align 8
  invoke void %542(ptr noundef nonnull align 8 dereferenceable(64) %534, double noundef %539)
          to label %543 unwind label %608

543:                                              ; preds = %535
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %98) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef @.str.59)
  %544 = invoke noundef ptr @_ZN5DSENT5Model13getAreaResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %100, ptr noundef nonnull align 8 dereferenceable(32) %98)
          to label %545 unwind label %612

545:                                              ; preds = %543
  %546 = load double, ptr %96, align 8, !tbaa !9
  %547 = load i32, ptr %22, align 4, !tbaa !11
  %548 = sitofp i32 %547 to double
  %549 = fmul double %546, %548
  %550 = load ptr, ptr %544, align 8, !tbaa !33
  %551 = getelementptr inbounds ptr, ptr %550, i64 2
  %552 = load ptr, ptr %551, align 8
  invoke void %552(ptr noundef nonnull align 8 dereferenceable(64) %544, double noundef %549)
          to label %553 unwind label %612

553:                                              ; preds = %545
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %99) #8
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef @.str.15)
  %554 = invoke noundef ptr @_ZN5DSENT12OpticalModel12getModulatorERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(296) %100, ptr noundef nonnull align 8 dereferenceable(32) %99)
          to label %555 unwind label %616

555:                                              ; preds = %553
  %556 = load double, ptr %6, align 8, !tbaa !9
  %557 = load double, ptr %7, align 8, !tbaa !9
  invoke void @_ZN5DSENT16OpticalModulator9setLossesEdd(ptr noundef nonnull align 8 dereferenceable(105) %554, double noundef %556, double noundef %557)
          to label %558 unwind label %616

558:                                              ; preds = %555
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #8
  store i1 true, ptr %4, align 1
  store i32 1, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %621

559:                                              ; preds = %503, %501
  %560 = landingpad { ptr, i32 }
          cleanup
  %561 = extractvalue { ptr, i32 } %560, 0
  store ptr %561, ptr %10, align 8
  %562 = extractvalue { ptr, i32 } %560, 1
  store i32 %562, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #8
  br label %622

563:                                              ; preds = %505
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %10, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %11, align 4
  br label %571

567:                                              ; preds = %508
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %10, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  br label %571

571:                                              ; preds = %567, %563
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #8
  br label %622

572:                                              ; preds = %509
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %10, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %11, align 4
  br label %580

576:                                              ; preds = %512
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %10, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  br label %580

580:                                              ; preds = %576, %572
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #8
  br label %622

581:                                              ; preds = %513
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %10, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %11, align 4
  br label %589

585:                                              ; preds = %518
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %10, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  br label %589

589:                                              ; preds = %585, %581
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #8
  br label %622

590:                                              ; preds = %519
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %10, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %11, align 4
  br label %598

594:                                              ; preds = %522
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %10, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  br label %598

598:                                              ; preds = %594, %590
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #8
  br label %622

599:                                              ; preds = %523
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %10, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %11, align 4
  br label %607

603:                                              ; preds = %526
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %10, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  br label %607

607:                                              ; preds = %603, %599
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #8
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #8
  br label %622

608:                                              ; preds = %535, %527
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %10, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #8
  br label %620

612:                                              ; preds = %545, %543
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %10, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #8
  br label %620

616:                                              ; preds = %555, %553
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %10, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %11, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #8
  br label %620

620:                                              ; preds = %616, %612, %608
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %622

621:                                              ; preds = %558, %498
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  br label %623

622:                                              ; preds = %620, %607, %598, %589, %580, %571, %559
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  br label %624

623:                                              ; preds = %621, %409
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %631

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

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

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

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

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

629:                                              ; preds = %628, %414
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  br label %630

630:                                              ; preds = %629, %410
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %633

631:                                              ; preds = %623, %344, %339, %333, %328
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  %632 = load i1, ptr %4, align 1
  ret i1 %632

633:                                              ; preds = %630, %256, %205, %168
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %634

634:                                              ; preds = %633, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %635

635:                                              ; preds = %634, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %636

636:                                              ; preds = %635, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %637

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

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

639:                                              ; preds = %638
  %640 = load ptr, ptr %10, align 8
  %641 = load i32, ptr %11, align 4
  %642 = insertvalue { ptr, i32 } poison, ptr %640, 0
  %643 = insertvalue { ptr, i32 } %642, i32 %641, 1
  resume { ptr, i32 } %643

644:                                              ; preds = %220, %140
  unreachable
}

declare noundef ptr @_ZN5DSENT5Model13getAreaResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131), ptr noundef nonnull align 8 dereferenceable(32)) #1

declare noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32)) #1

declare noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72)) #1

declare noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40)) #1

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

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

; Function Attrs: nounwind
declare double @log(double noundef) #2

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

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

declare void @_ZN7LibUtil6String6formatERKS0_z(ptr dead_on_unwind writable sret(%"class.LibUtil::String") align 8, ptr noundef nonnull align 8 dereferenceable(32), ...) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #3

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT5Model15getInstanceNameEv(ptr noundef nonnull align 8 dereferenceable(131)) #1

declare void @_ZN7LibUtil6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1

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

declare ptr @__cxa_allocate_exception(i64)

; Function Attrs: nounwind
declare void @_ZN7LibUtil9ExceptionC1ERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZN7LibUtil9ExceptionD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #2

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #2

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

declare void @_ZN5DSENT14ElectricalLoad10setLoadCapEd(ptr noundef nonnull align 8 dereferenceable(96), double noundef) #1

declare void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32), double noundef) unnamed_addr #1

declare void @_ZN5DSENT16OpticalModulator9setLossesEdd(ptr noundef nonnull align 8 dereferenceable(105), double noundef, double noundef) #1

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

!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, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !10, i64 304}
!14 = !{!"_ZTSN5DSENT13RingModulatorE", !15, i64 0, !27, i64 296, !10, i64 304, !10, i64 312, !10, i64 320, !10, i64 328}
!15 = !{!"_ZTSN5DSENT12OpticalModelE", !16, i64 0, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288}
!16 = !{!"_ZTSN5DSENT15ElectricalModelE", !17, i64 0, !23, i64 136, !12, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232}
!17 = !{!"_ZTSN5DSENT5ModelE", !18, i64 8, !22, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !22, i64 128, !22, i64 129, !22, i64 130}
!18 = !{!"_ZTSN7LibUtil6StringE", !19, i64 0}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !20, i64 0, !21, i64 8, !7, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!"bool", !7, i64 0}
!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", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSN5DSENT18OpticalTransmitterE"}
!28 = !{!14, !10, i64 312}
!29 = !{!14, !10, i64 320}
!30 = !{!14, !10, i64 328}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!34, !34, i64 0}
!34 = !{!"vtable pointer", !8, i64 0}


; 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.LibUtil::String" = type { %"class.std::__cxx11::basic_string" }
%"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] }

@.str = external hidden unnamed_addr constant [9 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [34 x i8], align 1
@_ZTIN7LibUtil9ExceptionE = external constant ptr
@.str.47 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [11 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

declare void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) unnamed_addr #1

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

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

declare void @_ZNK5DSENT5Model12getParameterERKN7LibUtil6StringE(ptr dead_on_unwind writable sret(%"class.LibUtil::String") align 8, ptr noundef nonnull align 8 dereferenceable(131), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

declare noundef i32 @_ZNK7LibUtil6StringcviEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

declare noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

declare noundef ptr @_ZN5DSENT12OpticalModel12getModulatorERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(296), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

declare noundef ptr @_ZN5DSENT15ElectricalModel7getLoadERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

declare noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

declare noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131)) local_unnamed_addr #1

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5DSENT13RingModulator15designModulatorEdd(ptr noundef nonnull align 8 dereferenceable(336) %0, double noundef %1, double noundef %2) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.LibUtil::String", align 8
  %5 = alloca %"class.LibUtil::String", align 8
  %6 = alloca %"class.LibUtil::String", align 8
  %7 = alloca %"class.LibUtil::String", align 8
  %8 = alloca %"class.LibUtil::String", align 8
  %9 = alloca %"class.LibUtil::String", align 8
  %10 = alloca %"class.LibUtil::String", align 8
  %11 = alloca %"class.LibUtil::String", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.LibUtil::String", align 8
  %14 = alloca %"class.LibUtil::String", align 8
  %15 = alloca %"class.LibUtil::String", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.LibUtil::String", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.LibUtil::String", align 8
  %21 = alloca %"class.LibUtil::String", align 8
  %22 = alloca %"class.LibUtil::String", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.LibUtil::String", align 8
  %26 = alloca %"class.LibUtil::String", align 8
  %27 = alloca %"class.LibUtil::String", align 8
  %28 = alloca %"class.LibUtil::String", align 8
  %29 = alloca %"class.LibUtil::String", align 8
  %30 = alloca %"class.LibUtil::String", align 8
  %31 = alloca %"class.LibUtil::String", align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca %"class.LibUtil::String", align 8
  %39 = alloca %"class.LibUtil::String", align 8
  %40 = alloca %"class.LibUtil::String", align 8
  %41 = alloca %"class.LibUtil::String", align 8
  %42 = alloca %"class.LibUtil::String", align 8
  %43 = alloca %"class.LibUtil::String", align 8
  %44 = alloca %"class.LibUtil::String", align 8
  %45 = alloca %"class.LibUtil::String", align 8
  %46 = alloca %"class.LibUtil::String", align 8
  %47 = alloca %"class.LibUtil::String", align 8
  %48 = alloca %"class.LibUtil::String", align 8
  %49 = alloca %"class.LibUtil::String", align 8
  %50 = alloca %"class.LibUtil::String", align 8
  %51 = alloca %"class.LibUtil::String", align 8
  %52 = tail call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.40)
  %53 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %52, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %54 unwind label %91

54:                                               ; preds = %3
  %55 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %56 unwind label %91

56:                                               ; preds = %54
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str)
  invoke void @_ZNK5DSENT5Model12getParameterERKN7LibUtil6StringE(ptr dead_on_unwind nonnull writable sret(%"class.LibUtil::String") align 8 %5, ptr noundef nonnull align 8 dereferenceable(131) %0, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %57 unwind label %93

57:                                               ; preds = %56
  %58 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %59 unwind label %95

59:                                               ; preds = %57
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  %60 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.41)
  %61 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %60, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %62 unwind label %98

62:                                               ; preds = %59
  %63 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %64 unwind label %98

64:                                               ; preds = %62
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  %65 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.42)
  %66 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %65, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %67 unwind label %100

67:                                               ; preds = %64
  %68 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %69 unwind label %100

69:                                               ; preds = %67
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  %70 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.34)
  %71 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %72 unwind label %102

72:                                               ; preds = %69
  %73 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %71)
          to label %74 unwind label %102

74:                                               ; preds = %72
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  %75 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.11)
  %76 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK7LibUtil3MapINS_6StringEE3getERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %75, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %77 unwind label %104

77:                                               ; preds = %74
  %78 = invoke noundef i32 @_ZNK7LibUtil6StringcviEv(ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %79 unwind label %104

79:                                               ; preds = %77
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  %80 = fcmp ogt double %2, 0.000000e+00
  br i1 %80, label %125, label %81

81:                                               ; preds = %79
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.43)
  invoke void (ptr, ptr, ...) @_ZN7LibUtil6String6formatERKS0_z(ptr dead_on_unwind nonnull writable sret(%"class.LibUtil::String") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.44, i32 noundef 258)
          to label %82 unwind label %106

82:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #9
  %83 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT5Model15getInstanceNameEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
          to label %84 unwind label %108

84:                                               ; preds = %82
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %83)
          to label %85 unwind label %108

85:                                               ; preds = %84
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.46)
          to label %86 unwind label %110

86:                                               ; preds = %85
  invoke void @_ZN7LibUtil6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %87 unwind label %112

87:                                               ; preds = %86
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %88 unwind label %114

88:                                               ; preds = %87
  invoke void @_ZN7LibUtil6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %89 unwind label %116

89:                                               ; preds = %88
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  %90 = call ptr @__cxa_allocate_exception(i64 40) #9
  call void @_ZN7LibUtil9ExceptionC1ERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(40) %90, ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  invoke void @__cxa_throw(ptr nonnull %90, ptr nonnull @_ZTIN7LibUtil9ExceptionE, ptr nonnull @_ZN7LibUtil9ExceptionD1Ev) #10
          to label %367 unwind label %123

91:                                               ; preds = %54, %3
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9
  br label %366

93:                                               ; preds = %56
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %97

95:                                               ; preds = %57
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  br label %97

97:                                               ; preds = %95, %93
  %.pn = phi { ptr, i32 } [ %96, %95 ], [ %94, %93 ]
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  br label %366

98:                                               ; preds = %62, %59
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  br label %366

100:                                              ; preds = %67, %64
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  br label %366

102:                                              ; preds = %72, %69
  %103 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  br label %366

104:                                              ; preds = %77, %74
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %366

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

108:                                              ; preds = %84, %82
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %121

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

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

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

116:                                              ; preds = %88
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %118

118:                                              ; preds = %116, %114
  %.pn146 = phi { ptr, i32 } [ %117, %116 ], [ %115, %114 ]
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  br label %119

119:                                              ; preds = %118, %112
  %.pn146.pn = phi { ptr, i32 } [ %.pn146, %118 ], [ %113, %112 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br label %120

120:                                              ; preds = %119, %110
  %.pn146.pn.pn = phi { ptr, i32 } [ %.pn146.pn, %119 ], [ %111, %110 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  br label %121

121:                                              ; preds = %120, %108
  %.pn146.pn.pn.pn = phi { ptr, i32 } [ %.pn146.pn.pn, %120 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %122

122:                                              ; preds = %121, %106
  %.pn146.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn146.pn.pn.pn, %121 ], [ %107, %106 ]
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  br label %366

123:                                              ; preds = %89
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  br label %366

125:                                              ; preds = %79
  %126 = fcmp ogt double %1, 0.000000e+00
  br i1 %126, label %156, label %127

127:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.43)
  invoke void (ptr, ptr, ...) @_ZN7LibUtil6String6formatERKS0_z(ptr dead_on_unwind nonnull writable sret(%"class.LibUtil::String") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.44, i32 noundef 259)
          to label %128 unwind label %137

128:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #9
  %129 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT5Model15getInstanceNameEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
          to label %130 unwind label %139

130:                                              ; preds = %128
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %129)
          to label %131 unwind label %139

131:                                              ; preds = %130
  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.47)
          to label %132 unwind label %141

132:                                              ; preds = %131
  invoke void @_ZN7LibUtil6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %133 unwind label %143

133:                                              ; preds = %132
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %134 unwind label %145

134:                                              ; preds = %133
  invoke void @_ZN7LibUtil6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %135 unwind label %147

135:                                              ; preds = %134
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  %136 = call ptr @__cxa_allocate_exception(i64 40) #9
  call void @_ZN7LibUtil9ExceptionC1ERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(40) %136, ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  invoke void @__cxa_throw(ptr nonnull %136, ptr nonnull @_ZTIN7LibUtil9ExceptionE, ptr nonnull @_ZN7LibUtil9ExceptionD1Ev) #10
          to label %367 unwind label %154

137:                                              ; preds = %127
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %153

139:                                              ; preds = %130, %128
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %152

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

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

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

147:                                              ; preds = %134
  %148 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %149

149:                                              ; preds = %147, %145
  %.pn154 = phi { ptr, i32 } [ %148, %147 ], [ %146, %145 ]
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  br label %150

150:                                              ; preds = %149, %143
  %.pn154.pn = phi { ptr, i32 } [ %.pn154, %149 ], [ %144, %143 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %151

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

152:                                              ; preds = %151, %139
  %.pn154.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn, %151 ], [ %140, %139 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %153

153:                                              ; preds = %152, %137
  %.pn154.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn.pn, %152 ], [ %138, %137 ]
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  br label %366

154:                                              ; preds = %135
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  br label %366

156:                                              ; preds = %125
  %157 = fdiv double %2, 1.000000e+01
  %158 = call double @pow(double noundef 1.000000e+01, double noundef %157) #9
  %159 = fdiv double %1, -1.000000e+01
  %160 = call double @pow(double noundef 1.000000e+01, double noundef %159) #9
  %161 = getelementptr inbounds i8, ptr %0, i64 304
  %162 = load double, ptr %161, align 8, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %0, i64 312
  %164 = load double, ptr %163, align 8, !tbaa !25
  %165 = getelementptr inbounds i8, ptr %0, i64 320
  %166 = fmul double %162, 2.000000e+00
  %167 = fsub double 1.000000e+00, %160
  %168 = load <2 x double>, ptr %165, align 8, !tbaa !26
  %169 = insertelement <2 x double> poison, double %166, i64 0
  %170 = fcmp ult double %160, 1.000000e+00
  %171 = insertelement <2 x double> <double 1.000000e+00, double poison>, double %160, i64 1
  %172 = insertelement <2 x double> poison, double %68, i64 0
  %173 = insertelement <2 x double> %172, double %158, i64 1
  %174 = fdiv <2 x double> %171, %173
  %175 = insertelement <2 x double> %174, double %68, i64 0
  %176 = fsub <2 x double> <double 1.000000e+00, double 1.000000e+00>, %175
  %177 = extractelement <2 x double> %176, i64 0
  %178 = fdiv double %177, %167
  %179 = fadd double %178, -1.000000e+00
  %180 = call double @sqrt(double noundef %179) #9
  %181 = extractelement <2 x double> %176, i64 1
  %182 = fdiv double %177, %181
  %183 = fadd double %182, -1.000000e+00
  %184 = call double @sqrt(double noundef %183) #9
  %185 = fsub double %180, %184
  %186 = insertelement <2 x double> %169, double %185, i64 1
  %187 = fmul <2 x double> %168, %186
  %188 = extractelement <2 x double> %187, i64 0
  %189 = extractelement <2 x double> %187, i64 1
  %190 = fadd double %189, %188
  %191 = fdiv double %190, %188
  %square = fmul double %191, %191
  %192 = fadd double %square, -1.000000e+00
  %193 = fmul double %162, %192
  %194 = fmul double %63, %193
  %195 = fadd double %162, %193
  %196 = fdiv double %195, %162
  %197 = call double @sqrt(double noundef %196) #9
  %198 = fmul double %164, %197
  %199 = fdiv double %189, %193
  %200 = shufflevector <2 x double> %173, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %201 = fcmp ugt <2 x double> %174, %200
  %202 = extractelement <2 x i1> %201, i64 1
  %or.cond191 = and i1 %170, %202
  %203 = extractelement <2 x i1> %201, i64 0
  %or.cond193 = and i1 %203, %or.cond191
  %204 = fcmp ult double %198, %73
  %or.cond194 = select i1 %or.cond193, i1 %204, i1 false
  br i1 %or.cond194, label %205, label %.loopexit

205:                                              ; preds = %156
  %206 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  %207 = call noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72) %206)
  %208 = call noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40) %207)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.48)
  %209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7LibUtil3MapIdE3getERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(56) %208, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %210 unwind label %256

210:                                              ; preds = %205
  %211 = load double, ptr %209, align 8, !tbaa !26
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  %212 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  %213 = call noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72) %212)
  %214 = call noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40) %213)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.49)
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7LibUtil3MapIdE3getERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(56) %214, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %216 unwind label %258

216:                                              ; preds = %210
  %217 = load double, ptr %215, align 8, !tbaa !26
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  %218 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  %219 = call noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72) %218)
  %220 = call noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40) %219)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.50)
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7LibUtil3MapIdE3getERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(56) %220, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %222 unwind label %260

222:                                              ; preds = %216
  %223 = load double, ptr %221, align 8, !tbaa !26
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  %224 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  %225 = call noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72) %224)
  %226 = call noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40) %225)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.51)
  %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7LibUtil3MapIdE3getERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(56) %226, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %228 unwind label %262

228:                                              ; preds = %222
  %229 = load double, ptr %227, align 8, !tbaa !26
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #9
  %230 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  %231 = call noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72) %230)
  %232 = call noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40) %231)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.52)
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7LibUtil3MapIdE3getERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(56) %232, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %234 unwind label %264

234:                                              ; preds = %228
  %235 = load double, ptr %233, align 8, !tbaa !26
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #9
  %236 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.53)
  %237 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %236, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %238 unwind label %266

238:                                              ; preds = %234
  %239 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %237)
          to label %240 unwind label %266

240:                                              ; preds = %238
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #9
  %241 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.54)
  %242 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %241, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %243 unwind label %268

243:                                              ; preds = %240
  %244 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %242)
          to label %245 unwind label %268

245:                                              ; preds = %243
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  %246 = fsub double %194, %193
  %247 = fdiv double %194, %246
  %248 = call double @log(double noundef %247) #9
  %249 = fmul double %58, 4.000000e+00
  %250 = fdiv double 1.000000e+00, %249
  %251 = fmul double %217, %248
  %252 = fmul double %223, %251
  %253 = fmul double %239, %248
  %254 = call double @llvm.fmuladd.f64(double %253, double %199, double %252)
  %255 = fcmp ogt double %254, %250
  br i1 %255, label %.loopexit, label %270

256:                                              ; preds = %205
  %257 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  br label %366

258:                                              ; preds = %210
  %259 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  br label %366

260:                                              ; preds = %216
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  br label %366

262:                                              ; preds = %222
  %263 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #9
  br label %366

264:                                              ; preds = %228
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #9
  br label %366

266:                                              ; preds = %238, %234
  %267 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #9
  br label %366

268:                                              ; preds = %243, %240
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  br label %366

270:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #9
  store double 1.000000e+00, ptr %32, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #9
  %271 = fmul double %223, %248
  %272 = fadd double %199, %244
  %273 = fmul double %272, %271
  %274 = fsub double %250, %254
  %275 = fdiv double %273, %274
  store double %275, ptr %33, align 8, !tbaa !26
  %276 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33)
  %277 = load double, ptr %276, align 8, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #9
  store double 1.000000e+00, ptr %34, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #9
  %278 = fdiv double %194, %55
  store double %278, ptr %35, align 8, !tbaa !26
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35)
  %280 = load double, ptr %279, align 8, !tbaa !26
  %281 = fmul double %277, %280
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #9
  %282 = fsub double %250, %252
  br label %283

283:                                              ; preds = %.critedge, %270
  %.0138 = phi double [ %281, %270 ], [ %291, %.critedge ]
  %.pn162 = phi double [ %277, %270 ], [ %290, %.critedge ]
  %.0135 = phi i32 [ 0, %270 ], [ %292, %.critedge ]
  %.0137 = fmul double %211, %.pn162
  %284 = fcmp ogt double %.0137, %211
  %285 = and i32 %.0135, 1
  %286 = icmp eq i32 %285, 0
  %or.cond190 = or i1 %284, %286
  br i1 %or.cond190, label %.critedge, label %293

.critedge:                                        ; preds = %283
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #9
  store double 1.000000e+00, ptr %36, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #9
  %287 = fmul double %223, %.0137
  %288 = fdiv double %287, %282
  store double %288, ptr %37, align 8, !tbaa !26
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37)
  %290 = load double, ptr %289, align 8, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  %291 = fadd double %.0138, %290
  %292 = add nuw nsw i32 %.0135, 1
  %exitcond.not = icmp eq i32 %292, 22
  br i1 %exitcond.not, label %.loopexit, label %283, !llvm.loop !27

293:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.18)
  %294 = invoke noundef ptr @_ZN5DSENT15ElectricalModel7getLoadERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(240) %0, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %295 unwind label %333

295:                                              ; preds = %293
  invoke void @_ZN5DSENT14ElectricalLoad10setLoadCapEd(ptr noundef nonnull align 8 dereferenceable(96) %294, double noundef %.0137)
          to label %296 unwind label %333

296:                                              ; preds = %295
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  %297 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.22)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #9
  invoke void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32) %40, double noundef %277)
          to label %298 unwind label %335

298:                                              ; preds = %296
  invoke void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56) %297, ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %299 unwind label %337

299:                                              ; preds = %298
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  %300 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.55)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #9
  invoke void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32) %42, double noundef %.0137)
          to label %301 unwind label %340

301:                                              ; preds = %299
  invoke void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56) %300, ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %302 unwind label %342

302:                                              ; preds = %301
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #9
  %303 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.23)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #9
  %304 = fsub double %.0138, %277
  invoke void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32) %44, double noundef %304)
          to label %305 unwind label %345

305:                                              ; preds = %302
  invoke void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56) %303, ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %306 unwind label %347

306:                                              ; preds = %305
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  %307 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.56)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #9
  invoke void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32) %46, double noundef %194)
          to label %308 unwind label %350

308:                                              ; preds = %306
  invoke void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56) %307, ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %309 unwind label %352

309:                                              ; preds = %308
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #9
  %310 = call noundef ptr @_ZN5DSENT5Model16getGenPropertiesEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.57)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #9
  invoke void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32) %48, double noundef %199)
          to label %311 unwind label %355

311:                                              ; preds = %309
  invoke void @_ZN7LibUtil3MapINS_6StringEE3setERKS1_S4_(ptr noundef nonnull align 8 dereferenceable(56) %310, ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %312 unwind label %357

312:                                              ; preds = %311
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #9
  %313 = fmul double %235, %.0138
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull @.str.58)
  %314 = invoke noundef ptr @_ZN5DSENT5Model13getAreaResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %0, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %315 unwind label %360

315:                                              ; preds = %312
  %316 = fmul double %229, %.0138
  %317 = sitofp i32 %78 to double
  %318 = fmul double %316, %317
  %319 = load ptr, ptr %314, align 8, !tbaa !29
  %320 = getelementptr inbounds i8, ptr %319, i64 16
  %321 = load ptr, ptr %320, align 8
  invoke void %321(ptr noundef nonnull align 8 dereferenceable(64) %314, double noundef %318)
          to label %322 unwind label %360

322:                                              ; preds = %315
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.59)
  %323 = invoke noundef ptr @_ZN5DSENT5Model13getAreaResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %0, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %324 unwind label %362

324:                                              ; preds = %322
  %325 = fmul double %313, %317
  %326 = load ptr, ptr %323, align 8, !tbaa !29
  %327 = getelementptr inbounds i8, ptr %326, i64 16
  %328 = load ptr, ptr %327, align 8
  invoke void %328(ptr noundef nonnull align 8 dereferenceable(64) %323, double noundef %325)
          to label %329 unwind label %362

329:                                              ; preds = %324
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #9
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.15)
  %330 = invoke noundef ptr @_ZN5DSENT12OpticalModel12getModulatorERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(296) %0, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %331 unwind label %364

331:                                              ; preds = %329
  invoke void @_ZN5DSENT16OpticalModulator9setLossesEdd(ptr noundef nonnull align 8 dereferenceable(105) %330, double noundef %1, double noundef %2)
          to label %332 unwind label %364

332:                                              ; preds = %331
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #9
  br label %.loopexit

333:                                              ; preds = %295, %293
  %334 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  br label %366

335:                                              ; preds = %296
  %336 = landingpad { ptr, i32 }
          cleanup
  br label %339

337:                                              ; preds = %298
  %338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  br label %339

339:                                              ; preds = %337, %335
  %.pn163 = phi { ptr, i32 } [ %338, %337 ], [ %336, %335 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  br label %366

340:                                              ; preds = %299
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %344

342:                                              ; preds = %301
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  br label %344

344:                                              ; preds = %342, %340
  %.pn165 = phi { ptr, i32 } [ %343, %342 ], [ %341, %340 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #9
  br label %366

345:                                              ; preds = %302
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %349

347:                                              ; preds = %305
  %348 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  br label %349

349:                                              ; preds = %347, %345
  %.pn167 = phi { ptr, i32 } [ %348, %347 ], [ %346, %345 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  br label %366

350:                                              ; preds = %306
  %351 = landingpad { ptr, i32 }
          cleanup
  br label %354

352:                                              ; preds = %308
  %353 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  br label %354

354:                                              ; preds = %352, %350
  %.pn169 = phi { ptr, i32 } [ %353, %352 ], [ %351, %350 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #9
  br label %366

355:                                              ; preds = %309
  %356 = landingpad { ptr, i32 }
          cleanup
  br label %359

357:                                              ; preds = %311
  %358 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  br label %359

359:                                              ; preds = %357, %355
  %.pn171 = phi { ptr, i32 } [ %358, %357 ], [ %356, %355 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #9
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #9
  br label %366

360:                                              ; preds = %315, %312
  %361 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #9
  br label %366

362:                                              ; preds = %324, %322
  %363 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #9
  br label %366

364:                                              ; preds = %331, %329
  %365 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #9
  br label %366

.loopexit:                                        ; preds = %.critedge, %245, %332, %156
  %.4 = phi i1 [ false, %156 ], [ false, %245 ], [ true, %332 ], [ false, %.critedge ]
  ret i1 %.4

366:                                              ; preds = %97, %100, %104, %123, %122, %154, %153, %258, %262, %266, %333, %339, %344, %349, %354, %359, %364, %362, %360, %268, %264, %260, %256, %102, %98, %91
  %.pn173.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %92, %91 ], [ %.pn, %97 ], [ %99, %98 ], [ %101, %100 ], [ %103, %102 ], [ %105, %104 ], [ %124, %123 ], [ %.pn146.pn.pn.pn.pn, %122 ], [ %155, %154 ], [ %.pn154.pn.pn.pn.pn, %153 ], [ %257, %256 ], [ %259, %258 ], [ %261, %260 ], [ %263, %262 ], [ %265, %264 ], [ %267, %266 ], [ %269, %268 ], [ %.pn171, %359 ], [ %.pn169, %354 ], [ %.pn167, %349 ], [ %.pn165, %344 ], [ %.pn163, %339 ], [ %334, %333 ], [ %365, %364 ], [ %363, %362 ], [ %361, %360 ]
  resume { ptr, i32 } %.pn173.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

367:                                              ; preds = %135, %89
  unreachable
}

declare noundef ptr @_ZN5DSENT5Model13getAreaResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

declare noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

declare noundef ptr @_ZNK5DSENT9TechModel13getStdCellLibEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #1

declare noundef ptr @_ZNK5DSENT10StdCellLib15getStdCellCacheEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1

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

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

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

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

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

declare void @_ZN7LibUtil6String6formatERKS0_z(ptr dead_on_unwind writable sret(%"class.LibUtil::String") align 8, ptr noundef nonnull align 8 dereferenceable(32), ...) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT5Model15getInstanceNameEv(ptr noundef nonnull align 8 dereferenceable(131)) local_unnamed_addr #1

declare void @_ZN7LibUtil6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZN7LibUtil9ExceptionC1ERKNS_6StringE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZN7LibUtil9ExceptionD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #2

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

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

declare void @_ZN5DSENT14ElectricalLoad10setLoadCapEd(ptr noundef nonnull align 8 dereferenceable(96), double noundef) local_unnamed_addr #1

declare void @_ZN7LibUtil6StringC1Ed(ptr noundef nonnull align 8 dereferenceable(32), double noundef) unnamed_addr #1

declare void @_ZN5DSENT16OpticalModulator9setLossesEdd(ptr noundef nonnull align 8 dereferenceable(105), double noundef, double noundef) local_unnamed_addr #1

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

!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, !24, i64 304}
!6 = !{!"_ZTSN5DSENT13RingModulatorE", !7, i64 0, !23, i64 296, !24, i64 304, !24, i64 312, !24, i64 320, !24, i64 328}
!7 = !{!"_ZTSN5DSENT12OpticalModelE", !8, i64 0, !13, i64 240, !13, i64 248, !13, i64 256, !13, i64 264, !13, i64 272, !13, i64 280, !13, i64 288}
!8 = !{!"_ZTSN5DSENT15ElectricalModelE", !9, i64 0, !18, i64 136, !22, i64 160, !13, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !13, i64 200, !13, i64 208, !13, i64 216, !13, i64 224, !13, i64 232}
!9 = !{!"_ZTSN5DSENT5ModelE", !10, i64 8, !17, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !13, i64 120, !17, i64 128, !17, i64 129, !17, i64 130}
!10 = !{!"_ZTSN7LibUtil6StringE", !11, i64 0}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !12, i64 0, !16, i64 8, !14, i64 16}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !13, i64 0}
!13 = !{!"any pointer", !14, i64 0}
!14 = !{!"omnipotent char", !15, i64 0}
!15 = !{!"Simple C++ TBAA"}
!16 = !{!"long", !14, i64 0}
!17 = !{!"bool", !14, i64 0}
!18 = !{!"_ZTSSt6vectorIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!22 = !{!"int", !14, i64 0}
!23 = !{!"_ZTSN5DSENT18OpticalTransmitterE"}
!24 = !{!"double", !14, i64 0}
!25 = !{!6, !24, i64 312}
!26 = !{!24, !24, i64 0}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!30, !30, i64 0}
!30 = !{!"vtable pointer", !15, i64 0}


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