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

; 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
@_ZN5DSENT9Constants2piE = external constant double, align 8
@_ZN5DSENT9Constants1cE = external constant double, align 8
@_ZN5DSENT9Constants1kE = external constant double, align 8
@_ZN5DSENT9Constants2e0E = external constant double, align 8
@_ZN5DSENT9Constants2esE = external constant double, align 8
@_ZN5DSENT9Constants1qE = external constant double, align 8
@.str.27 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [23 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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5DSENT13RingModulator14precomputeTechEv(ptr noundef nonnull align 8 dereferenceable(336) %0) #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca double, align 8
  %4 = alloca %"class.LibUtil::String", align 8
  %5 = alloca %"class.LibUtil::String", align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca %"class.LibUtil::String", align 8
  %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 double, align 8
  %23 = alloca %"class.LibUtil::String", align 8
  %24 = alloca double, align 8
  %25 = alloca %"class.LibUtil::String", align 8
  %26 = alloca double, align 8
  %27 = alloca %"class.LibUtil::String", align 8
  %28 = alloca double, align 8
  %29 = alloca %"class.LibUtil::String", align 8
  %30 = alloca double, align 8
  %31 = alloca %"class.LibUtil::String", align 8
  %32 = alloca double, align 8
  %33 = alloca %"class.LibUtil::String", align 8
  %34 = alloca double, align 8
  %35 = alloca %"class.LibUtil::String", align 8
  %36 = alloca double, align 8
  %37 = alloca %"class.LibUtil::String", align 8
  %38 = alloca double, align 8
  %39 = alloca %"class.LibUtil::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
  store ptr %0, ptr %2, align 8, !tbaa !5
  %49 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef @.str)
  invoke void @_ZNK5DSENT5Model12getParameterERKN7LibUtil6StringE(ptr dead_on_unwind writable sret(%"class.LibUtil::String") align 8 %4, ptr noundef nonnull align 8 dereferenceable(131) %49, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %50 unwind label %203

50:                                               ; preds = %1
  %51 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %52 unwind label %207

52:                                               ; preds = %50
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #5
  store double %51, ptr %3, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  %53 = load double, ptr @_ZN5DSENT9Constants2piE, align 8, !tbaa !9
  store double %53, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %54 = load double, ptr @_ZN5DSENT9Constants1cE, align 8, !tbaa !9
  store double %54, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  %55 = load double, ptr @_ZN5DSENT9Constants1kE, align 8, !tbaa !9
  store double %55, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  %56 = load double, ptr @_ZN5DSENT9Constants2e0E, align 8, !tbaa !9
  store double %56, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  %57 = load double, ptr @_ZN5DSENT9Constants2esE, align 8, !tbaa !9
  store double %57, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %58 = load double, ptr @_ZN5DSENT9Constants1qE, align 8, !tbaa !9
  store double %58, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %59 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.27)
  %60 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %59, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %61 unwind label %212

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

63:                                               ; preds = %61
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #5
  store double %62, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %64 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.28)
  %65 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %64, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %66 unwind label %216

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

68:                                               ; preds = %66
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #5
  store double %67, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %69 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.29)
  %70 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %69, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %71 unwind label %220

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

73:                                               ; preds = %71
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #5
  store double %72, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %74 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.30)
  %75 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %74, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %76 unwind label %224

76:                                               ; preds = %73
  %77 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %78 unwind label %224

78:                                               ; preds = %76
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #5
  store double %77, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %79 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.31)
  %80 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %79, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %81 unwind label %228

81:                                               ; preds = %78
  %82 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %80)
          to label %83 unwind label %228

83:                                               ; preds = %81
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  store double %82, ptr %22, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %84 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.32)
  %85 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %84, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %86 unwind label %232

86:                                               ; preds = %83
  %87 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %85)
          to label %88 unwind label %232

88:                                               ; preds = %86
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #5
  store double %87, ptr %24, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %89 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.33)
  %90 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %89, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %91 unwind label %236

91:                                               ; preds = %88
  %92 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %90)
          to label %93 unwind label %236

93:                                               ; preds = %91
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  store double %92, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  %94 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.34)
  %95 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %94, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %96 unwind label %240

96:                                               ; preds = %93
  %97 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %95)
          to label %98 unwind label %240

98:                                               ; preds = %96
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #5
  store double %97, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %99 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.35)
  %100 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %99, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %101 unwind label %244

101:                                              ; preds = %98
  %102 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %100)
          to label %103 unwind label %244

103:                                              ; preds = %101
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #5
  store double %102, ptr %30, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %104 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.36)
  %105 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %104, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %106 unwind label %248

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

108:                                              ; preds = %106
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #5
  store double %107, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  %109 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.37)
  %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) %35)
          to label %111 unwind label %252

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

113:                                              ; preds = %111
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #5
  store double %112, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %114 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef @.str.38)
  %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) %37)
          to label %116 unwind label %256

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

118:                                              ; preds = %116
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #5
  store double %117, ptr %36, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  %119 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %49)
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #5
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.39)
  %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) %39)
          to label %121 unwind label %260

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

123:                                              ; preds = %121
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #5
  store double %122, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  %124 = load double, ptr %9, align 8, !tbaa !9
  %125 = load double, ptr %16, align 8, !tbaa !9
  %126 = fdiv double %124, %125
  store double %126, ptr %40, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  %127 = load double, ptr %3, align 8, !tbaa !9
  store double %127, ptr %41, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  %128 = load double, ptr %40, align 8, !tbaa !9
  %129 = load double, ptr %41, align 8, !tbaa !9
  %130 = fdiv double %128, %129
  store double %130, ptr %43, align 8, !tbaa !9
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %38)
  %132 = load double, ptr %131, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  store double %132, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  %133 = load double, ptr %8, align 8, !tbaa !9
  %134 = fmul double 2.000000e+00, %133
  %135 = load double, ptr %34, align 8, !tbaa !9
  %136 = fmul double %134, %135
  store double %136, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %137 = load double, ptr %10, align 8, !tbaa !9
  %138 = load double, ptr %14, align 8, !tbaa !9
  %139 = fmul double %137, %138
  %140 = load double, ptr %13, align 8, !tbaa !9
  %141 = fdiv double %139, %140
  %142 = load double, ptr %20, align 8, !tbaa !9
  %143 = load double, ptr %22, align 8, !tbaa !9
  %144 = fmul double %142, %143
  %145 = load double, ptr %24, align 8, !tbaa !9
  %146 = load double, ptr %24, align 8, !tbaa !9
  %147 = fmul double %145, %146
  %148 = fdiv double %144, %147
  %149 = call double @log(double noundef %148) #5
  %150 = fmul double %141, %149
  store double %150, ptr %45, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  %151 = load double, ptr %11, align 8, !tbaa !9
  %152 = fmul double 2.000000e+00, %151
  %153 = load double, ptr %12, align 8, !tbaa !9
  %154 = fmul double %152, %153
  %155 = load double, ptr %13, align 8, !tbaa !9
  %156 = fdiv double %154, %155
  %157 = load double, ptr %45, align 8, !tbaa !9
  %158 = fmul double %156, %157
  %159 = load double, ptr %20, align 8, !tbaa !9
  %160 = load double, ptr %22, align 8, !tbaa !9
  %161 = fadd double %159, %160
  %162 = fmul double %158, %161
  %163 = load double, ptr %20, align 8, !tbaa !9
  %164 = load double, ptr %22, align 8, !tbaa !9
  %165 = fmul double %163, %164
  %166 = fdiv double %162, %165
  %167 = call double @sqrt(double noundef %166) #5
  store double %167, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  %168 = load double, ptr %11, align 8, !tbaa !9
  %169 = load double, ptr %12, align 8, !tbaa !9
  %170 = fmul double %168, %169
  %171 = load double, ptr %44, align 8, !tbaa !9
  %172 = fmul double %170, %171
  %173 = load double, ptr %26, align 8, !tbaa !9
  %174 = fmul double %172, %173
  %175 = load double, ptr %30, align 8, !tbaa !9
  %176 = fmul double %174, %175
  %177 = load double, ptr %46, align 8, !tbaa !9
  %178 = fdiv double %176, %177
  store double %178, ptr %47, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  %179 = load double, ptr %13, align 8, !tbaa !9
  %180 = load double, ptr %36, align 8, !tbaa !9
  %181 = fmul double %179, %180
  %182 = load double, ptr %44, align 8, !tbaa !9
  %183 = load double, ptr %28, align 8, !tbaa !9
  %184 = fmul double %182, %183
  %185 = load double, ptr %30, align 8, !tbaa !9
  %186 = fmul double %184, %185
  %187 = fmul double %181, %186
  %188 = load double, ptr %18, align 8, !tbaa !9
  %189 = fmul double 2.000000e+00, %188
  %190 = load double, ptr %42, align 8, !tbaa !9
  %191 = fmul double %189, %190
  %192 = load double, ptr %32, align 8, !tbaa !9
  %193 = fmul double %191, %192
  %194 = fdiv double %187, %193
  store double %194, ptr %48, align 8, !tbaa !9
  %195 = load double, ptr %45, align 8, !tbaa !9
  %196 = getelementptr inbounds %"class.DSENT::RingModulator", ptr %49, i32 0, i32 2
  store double %195, ptr %196, align 8, !tbaa !11
  %197 = load double, ptr %46, align 8, !tbaa !9
  %198 = getelementptr inbounds %"class.DSENT::RingModulator", ptr %49, i32 0, i32 3
  store double %197, ptr %198, align 8, !tbaa !27
  %199 = load double, ptr %47, align 8, !tbaa !9
  %200 = getelementptr inbounds %"class.DSENT::RingModulator", ptr %49, i32 0, i32 4
  store double %199, ptr %200, align 8, !tbaa !28
  %201 = load double, ptr %48, align 8, !tbaa !9
  %202 = getelementptr inbounds %"class.DSENT::RingModulator", ptr %49, i32 0, i32 5
  store double %201, ptr %202, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  ret void

203:                                              ; preds = %1
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %6, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %7, align 4
  br label %211

207:                                              ; preds = %50
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %6, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #5
  br label %211

211:                                              ; preds = %207, %203
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #5
  br label %276

212:                                              ; preds = %61, %52
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %6, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #5
  br label %275

216:                                              ; preds = %66, %63
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %6, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #5
  br label %274

220:                                              ; preds = %71, %68
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %6, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #5
  br label %273

224:                                              ; preds = %76, %73
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %6, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #5
  br label %272

228:                                              ; preds = %81, %78
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %6, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  br label %271

232:                                              ; preds = %86, %83
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %6, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #5
  br label %270

236:                                              ; preds = %91, %88
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %6, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  br label %269

240:                                              ; preds = %96, %93
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %6, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #5
  br label %268

244:                                              ; preds = %101, %98
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %6, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #5
  br label %267

248:                                              ; preds = %106, %103
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %6, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #5
  br label %266

252:                                              ; preds = %111, %108
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %6, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #5
  br label %265

256:                                              ; preds = %116, %113
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %6, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #5
  br label %264

260:                                              ; preds = %121, %118
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %6, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  br label %264

264:                                              ; preds = %260, %256
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  br label %265

265:                                              ; preds = %264, %252
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  br label %266

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

267:                                              ; preds = %266, %244
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  br label %268

268:                                              ; preds = %267, %240
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  br label %269

269:                                              ; preds = %268, %236
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  br label %270

270:                                              ; preds = %269, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  br label %271

271:                                              ; preds = %270, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  br label %272

272:                                              ; preds = %271, %224
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  br label %273

273:                                              ; preds = %272, %220
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  br label %274

274:                                              ; preds = %273, %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %275

275:                                              ; preds = %274, %212
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  br label %276

276:                                              ; preds = %275, %211
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  br label %277

277:                                              ; preds = %276
  %278 = load ptr, ptr %6, align 8
  %279 = load i32, ptr %7, align 4
  %280 = insertvalue { ptr, i32 } poison, ptr %278, 0
  %281 = insertvalue { ptr, i32 } %280, i32 %279, 1
  resume { ptr, i32 } %281
}

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !10, i64 304}
!12 = !{!"_ZTSN5DSENT13RingModulatorE", !13, i64 0, !26, i64 296, !10, i64 304, !10, i64 312, !10, i64 320, !10, i64 328}
!13 = !{!"_ZTSN5DSENT12OpticalModelE", !14, i64 0, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288}
!14 = !{!"_ZTSN5DSENT15ElectricalModelE", !15, i64 0, !21, i64 136, !25, 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}
!15 = !{!"_ZTSN5DSENT5ModelE", !16, i64 8, !20, 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, !20, i64 128, !20, i64 129, !20, i64 130}
!16 = !{!"_ZTSN7LibUtil6StringE", !17, i64 0}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !18, i64 0, !19, i64 8, !7, i64 16}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!19 = !{!"long", !7, i64 0}
!20 = !{!"bool", !7, i64 0}
!21 = !{!"_ZTSSt6vectorIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"int", !7, i64 0}
!26 = !{!"_ZTSN5DSENT18OpticalTransmitterE"}
!27 = !{!12, !10, i64 312}
!28 = !{!12, !10, i64 320}
!29 = !{!12, !10, i64 328}


; 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
@_ZN5DSENT9Constants2piE = external local_unnamed_addr constant double, align 8
@_ZN5DSENT9Constants1cE = external local_unnamed_addr constant double, align 8
@_ZN5DSENT9Constants1kE = external local_unnamed_addr constant double, align 8
@_ZN5DSENT9Constants2e0E = external local_unnamed_addr constant double, align 8
@_ZN5DSENT9Constants2esE = external local_unnamed_addr constant double, align 8
@_ZN5DSENT9Constants1qE = external local_unnamed_addr constant double, align 8
@.str.27 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [23 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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5DSENT13RingModulator14precomputeTechEv(ptr noundef nonnull align 8 dereferenceable(336) %0) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.LibUtil::String", align 8
  %3 = alloca %"class.LibUtil::String", align 8
  %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.LibUtil::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 double, align 8
  %17 = alloca %"class.LibUtil::String", align 8
  %18 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str)
  invoke void @_ZNK5DSENT5Model12getParameterERKN7LibUtil6StringE(ptr dead_on_unwind nonnull writable sret(%"class.LibUtil::String") align 8 %2, ptr noundef nonnull align 8 dereferenceable(131) %0, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %19 unwind label %136

19:                                               ; preds = %1
  %20 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %21 unwind label %138

21:                                               ; preds = %19
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #6
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  %22 = load double, ptr @_ZN5DSENT9Constants2piE, align 8, !tbaa !5
  %23 = load double, ptr @_ZN5DSENT9Constants1cE, align 8, !tbaa !5
  %24 = load double, ptr @_ZN5DSENT9Constants1kE, align 8, !tbaa !5
  %25 = load double, ptr @_ZN5DSENT9Constants2e0E, align 8, !tbaa !5
  %26 = load double, ptr @_ZN5DSENT9Constants2esE, align 8, !tbaa !5
  %27 = load double, ptr @_ZN5DSENT9Constants1qE, align 8, !tbaa !5
  %28 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.27)
  %29 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %28, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %30 unwind label %141

30:                                               ; preds = %21
  %31 = invoke noundef double @_ZNK7LibUtil6StringcvdEv(ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %32 unwind label %141

32:                                               ; preds = %30
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  %33 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.28)
  %34 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %33, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %35 unwind label %143

35:                                               ; preds = %32
  %36 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %37 unwind label %143

37:                                               ; preds = %35
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  %38 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.29)
  %39 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %38, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %40 unwind label %145

40:                                               ; preds = %37
  %41 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %42 unwind label %145

42:                                               ; preds = %40
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  %43 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.30)
  %44 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %43, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %45 unwind label %147

45:                                               ; preds = %42
  %46 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %47 unwind label %147

47:                                               ; preds = %45
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  %48 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.31)
  %49 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %48, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %50 unwind label %149

50:                                               ; preds = %47
  %51 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %52 unwind label %149

52:                                               ; preds = %50
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  %53 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.32)
  %54 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %53, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %55 unwind label %151

55:                                               ; preds = %52
  %56 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %57 unwind label %151

57:                                               ; preds = %55
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  %58 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.33)
  %59 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %58, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %60 unwind label %153

60:                                               ; preds = %57
  %61 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %62 unwind label %153

62:                                               ; preds = %60
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  %63 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.34)
  %64 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %63, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %65 unwind label %155

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

67:                                               ; preds = %65
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  %68 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.35)
  %69 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %68, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %70 unwind label %157

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

72:                                               ; preds = %70
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  %73 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.36)
  %74 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %73, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %75 unwind label %159

75:                                               ; preds = %72
  %76 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %77 unwind label %159

77:                                               ; preds = %75
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  %78 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.37)
  %79 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %78, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %80 unwind label %161

80:                                               ; preds = %77
  %81 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %79)
          to label %82 unwind label %161

82:                                               ; preds = %80
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  %83 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.38)
  %84 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %83, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %85 unwind label %163

85:                                               ; preds = %82
  %86 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %84)
          to label %87 unwind label %163

87:                                               ; preds = %85
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %88 = call noundef ptr @_ZNK5DSENT5Model12getTechModelEv(ptr noundef nonnull align 8 dereferenceable(131) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #6
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.39)
  %89 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5DSENT9TechModel3getERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(72) %88, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %90 unwind label %165

90:                                               ; preds = %87
  %91 = invoke noundef double @_ZNK7LibUtil6String8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %92 unwind label %165

92:                                               ; preds = %90
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  store double %91, ptr %16, align 8, !tbaa !5
  %93 = fdiv double %23, %36
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  %94 = fdiv double %93, %20
  store double %94, ptr %18, align 8, !tbaa !5
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %16)
  %96 = load double, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  %97 = fmul double %22, 2.000000e+00
  %98 = fmul double %97, %81
  %99 = fmul double %24, %31
  %100 = fdiv double %99, %27
  %101 = fmul double %46, %51
  %102 = fmul double %56, %56
  %103 = fdiv double %101, %102
  %104 = call double @log(double noundef %103) #6
  %105 = fmul double %100, %104
  %106 = fmul double %25, 2.000000e+00
  %107 = fmul double %106, %26
  %108 = fdiv double %107, %27
  %109 = fmul double %108, %105
  %110 = fadd double %46, %51
  %111 = fmul double %110, %109
  %112 = fdiv double %111, %101
  %113 = call double @sqrt(double noundef %112) #6
  %114 = fmul double %25, %26
  %115 = fmul double %27, %86
  %116 = fmul double %41, 2.000000e+00
  %117 = fmul double %116, %96
  %118 = fmul double %76, %117
  %119 = getelementptr inbounds i8, ptr %0, i64 304
  store double %105, ptr %119, align 8, !tbaa !9
  %120 = getelementptr inbounds i8, ptr %0, i64 312
  store double %113, ptr %120, align 8, !tbaa !26
  %121 = getelementptr inbounds i8, ptr %0, i64 320
  %122 = insertelement <2 x double> poison, double %114, i64 0
  %123 = insertelement <2 x double> %122, double %66, i64 1
  %124 = insertelement <2 x double> poison, double %98, i64 0
  %125 = shufflevector <2 x double> %124, <2 x double> poison, <2 x i32> zeroinitializer
  %126 = fmul <2 x double> %123, %125
  %127 = insertelement <2 x double> poison, double %61, i64 0
  %128 = insertelement <2 x double> %127, double %71, i64 1
  %129 = fmul <2 x double> %128, %126
  %130 = insertelement <2 x double> poison, double %71, i64 0
  %131 = insertelement <2 x double> %130, double %115, i64 1
  %132 = fmul <2 x double> %131, %129
  %133 = insertelement <2 x double> poison, double %113, i64 0
  %134 = insertelement <2 x double> %133, double %118, i64 1
  %135 = fdiv <2 x double> %132, %134
  store <2 x double> %135, ptr %121, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  ret void

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

138:                                              ; preds = %19
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #6
  br label %140

140:                                              ; preds = %138, %136
  %.pn = phi { ptr, i32 } [ %139, %138 ], [ %137, %136 ]
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  br label %167

141:                                              ; preds = %30, %21
  %142 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  br label %167

143:                                              ; preds = %35, %32
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %167

145:                                              ; preds = %40, %37
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  br label %167

147:                                              ; preds = %45, %42
  %148 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br label %167

149:                                              ; preds = %50, %47
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  br label %167

151:                                              ; preds = %55, %52
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %167

153:                                              ; preds = %60, %57
  %154 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %167

155:                                              ; preds = %65, %62
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %167

157:                                              ; preds = %70, %67
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %167

159:                                              ; preds = %75, %72
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br label %167

161:                                              ; preds = %80, %77
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br label %167

163:                                              ; preds = %85, %82
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  br label %167

165:                                              ; preds = %90, %87
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  br label %167

167:                                              ; preds = %141, %145, %149, %153, %157, %161, %165, %163, %159, %155, %151, %147, %143, %140
  %.pn57.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn, %140 ], [ %142, %141 ], [ %144, %143 ], [ %146, %145 ], [ %148, %147 ], [ %150, %149 ], [ %152, %151 ], [ %154, %153 ], [ %156, %155 ], [ %158, %157 ], [ %160, %159 ], [ %162, %161 ], [ %166, %165 ], [ %164, %163 ]
  resume { ptr, i32 } %.pn57.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

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

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

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 = { 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 #5 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 304}
!10 = !{!"_ZTSN5DSENT13RingModulatorE", !11, i64 0, !25, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328}
!11 = !{!"_ZTSN5DSENT12OpticalModelE", !12, i64 0, !17, i64 240, !17, i64 248, !17, i64 256, !17, i64 264, !17, i64 272, !17, i64 280, !17, i64 288}
!12 = !{!"_ZTSN5DSENT15ElectricalModelE", !13, i64 0, !20, i64 136, !24, i64 160, !17, i64 168, !17, i64 176, !17, i64 184, !17, i64 192, !17, i64 200, !17, i64 208, !17, i64 216, !17, i64 224, !17, i64 232}
!13 = !{!"_ZTSN5DSENT5ModelE", !14, i64 8, !19, i64 40, !17, i64 48, !17, i64 56, !17, i64 64, !17, i64 72, !17, i64 80, !17, i64 88, !17, i64 96, !17, i64 104, !17, i64 112, !17, i64 120, !19, i64 128, !19, i64 129, !19, i64 130}
!14 = !{!"_ZTSN7LibUtil6StringE", !15, i64 0}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !16, i64 0, !18, i64 8, !7, i64 16}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !17, i64 0}
!17 = !{!"any pointer", !7, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"_ZTSSt6vectorIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!24 = !{!"int", !7, i64 0}
!25 = !{!"_ZTSN5DSENT18OpticalTransmitterE"}
!26 = !{!10, !6, i64 312}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass