; LLVM IR from gem5/gem5 :: ext/dsent/model/electrical/BroadcastHTree.ll (ZN5DSENT14BroadcastHTree8useModelEv)

; 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::TransitionInfo" = type { double, double, double, double, double, double }
%"class.DSENT::BroadcastHTree" = type { %"class.DSENT::ElectricalModel", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.13", %"class.std::vector.18", %"class.std::vector.3", 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.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<DSENT::ElectricalLoad *, std::allocator<DSENT::ElectricalLoad *>>::_Vector_impl" }
%"struct.std::_Vector_base<DSENT::ElectricalLoad *, std::allocator<DSENT::ElectricalLoad *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DSENT::ElectricalLoad *, std::allocator<DSENT::ElectricalLoad *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DSENT::ElectricalLoad *, std::allocator<DSENT::ElectricalLoad *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<DSENT::ElectricalTimingTree *, std::allocator<DSENT::ElectricalTimingTree *>>::_Vector_impl" }
%"struct.std::_Vector_base<DSENT::ElectricalTimingTree *, std::allocator<DSENT::ElectricalTimingTree *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DSENT::ElectricalTimingTree *, std::allocator<DSENT::ElectricalTimingTree *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DSENT::ElectricalTimingTree *, std::allocator<DSENT::ElectricalTimingTree *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<DSENT::StdCell *, std::allocator<DSENT::StdCell *>>::_Vector_impl" }
%"struct.std::_Vector_base<DSENT::StdCell *, std::allocator<DSENT::StdCell *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DSENT::StdCell *, std::allocator<DSENT::StdCell *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DSENT::StdCell *, std::allocator<DSENT::StdCell *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [8 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 @_ZNK7LibUtil6String6toUIntEv(ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIPN5DSENT7StdCellESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5DSENT14BroadcastHTree8useModelEv(ptr noundef nonnull align 8 dereferenceable(384) %0) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %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 i32, align 4
  %9 = alloca %"class.LibUtil::String", align 8
  %10 = alloca %"class.LibUtil::String", align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.LibUtil::String", align 8
  %13 = alloca double, align 8
  %14 = alloca %"class.DSENT::TransitionInfo", align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %"class.LibUtil::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.LibUtil::String", align 8
  %24 = alloca %"class.LibUtil::String", align 8
  %25 = alloca %"class.LibUtil::String", align 8
  %26 = alloca i32, align 4
  %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
  store ptr %0, ptr %2, align 8, !tbaa !5
  %32 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #7
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef @.str.1)
  invoke void @_ZNK5DSENT5Model12getParameterERKN7LibUtil6StringE(ptr dead_on_unwind writable sret(%"class.LibUtil::String") align 8 %4, ptr noundef nonnull align 8 dereferenceable(131) %32, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %33 unwind label %62

33:                                               ; preds = %1
  %34 = invoke noundef i32 @_ZNK7LibUtil6String6toUIntEv(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %35 unwind label %66

35:                                               ; preds = %33
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #7
  store i32 %34, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #7
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str)
  invoke void @_ZNK5DSENT5Model12getParameterERKN7LibUtil6StringE(ptr dead_on_unwind writable sret(%"class.LibUtil::String") align 8 %9, ptr noundef nonnull align 8 dereferenceable(131) %32, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %36 unwind label %71

36:                                               ; preds = %35
  %37 = invoke noundef i32 @_ZNK7LibUtil6String6toUIntEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %38 unwind label %75

38:                                               ; preds = %36
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  store i32 %37, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #7
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.22)
  %39 = invoke noundef ptr @_ZN5DSENT15ElectricalModel12getInputPortERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(240) %32, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %40 unwind label %80

40:                                               ; preds = %38
  %41 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK5DSENT8PortInfo17getTransitionInfoEv(ptr noundef nonnull align 8 dereferenceable(88) %39)
          to label %42 unwind label %80

42:                                               ; preds = %40
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  store ptr %41, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %43 = load ptr, ptr %11, align 8, !tbaa !5
  %44 = call noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions00Ev(ptr noundef nonnull align 8 dereferenceable(48) %43)
  %45 = load ptr, ptr %11, align 8, !tbaa !5
  %46 = call noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions11Ev(ptr noundef nonnull align 8 dereferenceable(48) %45)
  %47 = fadd double %44, %46
  %48 = fdiv double %47, 2.000000e+00
  store double %48, ptr %13, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 48, ptr %14) #7
  %49 = load double, ptr %13, align 8, !tbaa !11
  %50 = load ptr, ptr %11, align 8, !tbaa !5
  %51 = call noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions01Ev(ptr noundef nonnull align 8 dereferenceable(48) %50)
  %52 = load double, ptr %13, align 8, !tbaa !11
  call void @_ZN5DSENT14TransitionInfoC1Eddd(ptr noundef nonnull align 8 dereferenceable(48) %14, double noundef %49, double noundef %51, double noundef %52)
  %53 = load ptr, ptr %32, align 8, !tbaa !13
  %54 = getelementptr inbounds ptr, ptr %53, i64 10
  %55 = load ptr, ptr %54, align 8
  invoke void %55(ptr noundef nonnull align 8 dereferenceable(384) %32)
          to label %56 unwind label %84

56:                                               ; preds = %42
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  store double 0.000000e+00, ptr %15, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  store double 0.000000e+00, ptr %16, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 1, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %57

57:                                               ; preds = %152, %56
  %58 = load i32, ptr %18, align 4, !tbaa !9
  %59 = load i32, ptr %8, align 4, !tbaa !9
  %60 = icmp ult i32 %58, %59
  br i1 %60, label %88, label %61

61:                                               ; preds = %57
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %187

62:                                               ; preds = %1
  %63 = landingpad { ptr, i32 }
          cleanup
  %64 = extractvalue { ptr, i32 } %63, 0
  store ptr %64, ptr %6, align 8
  %65 = extractvalue { ptr, i32 } %63, 1
  store i32 %65, ptr %7, align 4
  br label %70

66:                                               ; preds = %33
  %67 = landingpad { ptr, i32 }
          cleanup
  %68 = extractvalue { ptr, i32 } %67, 0
  store ptr %68, ptr %6, align 8
  %69 = extractvalue { ptr, i32 } %67, 1
  store i32 %69, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  br label %70

70:                                               ; preds = %66, %62
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #7
  br label %417

71:                                               ; preds = %35
  %72 = landingpad { ptr, i32 }
          cleanup
  %73 = extractvalue { ptr, i32 } %72, 0
  store ptr %73, ptr %6, align 8
  %74 = extractvalue { ptr, i32 } %72, 1
  store i32 %74, ptr %7, align 4
  br label %79

75:                                               ; preds = %36
  %76 = landingpad { ptr, i32 }
          cleanup
  %77 = extractvalue { ptr, i32 } %76, 0
  store ptr %77, ptr %6, align 8
  %78 = extractvalue { ptr, i32 } %76, 1
  store i32 %78, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %79

79:                                               ; preds = %75, %71
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  br label %416

80:                                               ; preds = %40, %38
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %6, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  br label %415

84:                                               ; preds = %42
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %6, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %7, align 4
  br label %414

88:                                               ; preds = %57
  %89 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 1
  %90 = load i32, ptr %18, align 4, !tbaa !9
  %91 = zext i32 %90 to i64
  %92 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %91) #7
  %93 = load ptr, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.40)
          to label %94 unwind label %155

94:                                               ; preds = %88
  invoke void @_ZN5DSENT15ElectricalModel24assignPortTransitionInfoEPS0_RKN7LibUtil6StringERKNS_14TransitionInfoE(ptr noundef nonnull align 8 dereferenceable(240) %32, ptr noundef %93, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(48) %14)
          to label %95 unwind label %159

95:                                               ; preds = %94
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  %96 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 1
  %97 = load i32, ptr %18, align 4, !tbaa !9
  %98 = zext i32 %97 to i64
  %99 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %98) #7
  %100 = load ptr, ptr %99, align 8, !tbaa !5
  invoke void @_ZN5DSENT5Model3useEv(ptr noundef nonnull align 8 dereferenceable(131) %100)
          to label %101 unwind label %164

101:                                              ; preds = %95
  %102 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 1
  %103 = load i32, ptr %18, align 4, !tbaa !9
  %104 = zext i32 %103 to i64
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %104) #7
  %106 = load ptr, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.60)
          to label %107 unwind label %168

107:                                              ; preds = %101
  %108 = invoke noundef ptr @_ZN5DSENT5Model17getNddPowerResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %106, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %109 unwind label %172

109:                                              ; preds = %107
  %110 = load ptr, ptr %108, align 8, !tbaa !13
  %111 = getelementptr inbounds ptr, ptr %110, i64 5
  %112 = load ptr, ptr %111, align 8
  %113 = invoke noundef double %112(ptr noundef nonnull align 8 dereferenceable(64) %108)
          to label %114 unwind label %172

114:                                              ; preds = %109
  %115 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 4
  %116 = load i32, ptr %18, align 4, !tbaa !9
  %117 = zext i32 %116 to i64
  %118 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %117) #7
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = uitofp i32 %119 to double
  %121 = fmul double %113, %120
  %122 = load i32, ptr %17, align 4, !tbaa !9
  %123 = uitofp i32 %122 to double
  %124 = load double, ptr %16, align 8, !tbaa !11
  %125 = call double @llvm.fmuladd.f64(double %121, double %123, double %124)
  store double %125, ptr %16, align 8, !tbaa !11
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  %126 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 1
  %127 = load i32, ptr %18, align 4, !tbaa !9
  %128 = zext i32 %127 to i64
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %126, i64 noundef %128) #7
  %130 = load ptr, ptr %129, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.28)
          to label %131 unwind label %177

131:                                              ; preds = %114
  %132 = invoke noundef ptr @_ZN5DSENT5Model14getEventResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %130, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %133 unwind label %181

133:                                              ; preds = %131
  %134 = load ptr, ptr %132, align 8, !tbaa !13
  %135 = getelementptr inbounds ptr, ptr %134, i64 5
  %136 = load ptr, ptr %135, align 8
  %137 = invoke noundef double %136(ptr noundef nonnull align 8 dereferenceable(64) %132)
          to label %138 unwind label %181

138:                                              ; preds = %133
  %139 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 4
  %140 = load i32, ptr %18, align 4, !tbaa !9
  %141 = zext i32 %140 to i64
  %142 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %139, i64 noundef %141) #7
  %143 = load i32, ptr %142, align 4, !tbaa !9
  %144 = uitofp i32 %143 to double
  %145 = fmul double %137, %144
  %146 = load i32, ptr %17, align 4, !tbaa !9
  %147 = uitofp i32 %146 to double
  %148 = load double, ptr %15, align 8, !tbaa !11
  %149 = call double @llvm.fmuladd.f64(double %145, double %147, double %148)
  store double %149, ptr %15, align 8, !tbaa !11
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  %150 = load i32, ptr %17, align 4, !tbaa !9
  %151 = mul i32 %150, 2
  store i32 %151, ptr %17, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %138
  %153 = load i32, ptr %18, align 4, !tbaa !9
  %154 = add i32 %153, 1
  store i32 %154, ptr %18, align 4, !tbaa !9
  br label %57, !llvm.loop !15

155:                                              ; preds = %88
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %6, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %7, align 4
  br label %163

159:                                              ; preds = %94
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %6, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %163

163:                                              ; preds = %159, %155
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  br label %186

164:                                              ; preds = %95
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %6, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %7, align 4
  br label %186

168:                                              ; preds = %101
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %6, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %7, align 4
  br label %176

172:                                              ; preds = %109, %107
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %6, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %176

176:                                              ; preds = %172, %168
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  br label %186

177:                                              ; preds = %114
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %6, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %7, align 4
  br label %185

181:                                              ; preds = %133, %131
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %6, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %185

185:                                              ; preds = %181, %177
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  br label %186

186:                                              ; preds = %185, %176, %164, %163
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %413

187:                                              ; preds = %61
  %188 = load i32, ptr %3, align 4, !tbaa !9
  %189 = uitofp i32 %188 to double
  %190 = load double, ptr %15, align 8, !tbaa !11
  %191 = fmul double %190, %189
  store double %191, ptr %15, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef @.str.35)
          to label %192 unwind label %247

192:                                              ; preds = %187
  %193 = invoke noundef ptr @_ZN5DSENT5Model14getEventResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %32, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %194 unwind label %251

194:                                              ; preds = %192
  %195 = load double, ptr %15, align 8, !tbaa !11
  %196 = load ptr, ptr %193, align 8, !tbaa !13
  %197 = getelementptr inbounds ptr, ptr %196, i64 2
  %198 = load ptr, ptr %197, align 8
  invoke void %198(ptr noundef nonnull align 8 dereferenceable(64) %193, double noundef %195)
          to label %199 unwind label %251

199:                                              ; preds = %194
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  store double 0.000000e+00, ptr %15, align 8, !tbaa !11
  %200 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 7
  %201 = load ptr, ptr %200, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.40)
          to label %202 unwind label %256

202:                                              ; preds = %199
  invoke void @_ZN5DSENT15ElectricalModel24assignPortTransitionInfoEPS0_RKN7LibUtil6StringERKNS_14TransitionInfoE(ptr noundef nonnull align 8 dereferenceable(240) %32, ptr noundef %201, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(48) %14)
          to label %203 unwind label %260

203:                                              ; preds = %202
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  %204 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 7
  %205 = load ptr, ptr %204, align 8, !tbaa !17
  invoke void @_ZN5DSENT5Model3useEv(ptr noundef nonnull align 8 dereferenceable(131) %205)
          to label %206 unwind label %265

206:                                              ; preds = %203
  %207 = load i32, ptr %8, align 4, !tbaa !9
  %208 = uitofp i32 %207 to double
  %209 = fsub double %208, 1.000000e+00
  %210 = call double @pow(double noundef 2.000000e+00, double noundef %209) #7
  %211 = fptoui double %210 to i32
  store i32 %211, ptr %17, align 4, !tbaa !9
  %212 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 7
  %213 = load ptr, ptr %212, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.60)
          to label %214 unwind label %269

214:                                              ; preds = %206
  %215 = invoke noundef ptr @_ZN5DSENT5Model17getNddPowerResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %213, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %216 unwind label %273

216:                                              ; preds = %214
  %217 = load ptr, ptr %215, align 8, !tbaa !13
  %218 = getelementptr inbounds ptr, ptr %217, i64 5
  %219 = load ptr, ptr %218, align 8
  %220 = invoke noundef double %219(ptr noundef nonnull align 8 dereferenceable(64) %215)
          to label %221 unwind label %273

221:                                              ; preds = %216
  %222 = load i32, ptr %17, align 4, !tbaa !9
  %223 = uitofp i32 %222 to double
  %224 = load double, ptr %16, align 8, !tbaa !11
  %225 = call double @llvm.fmuladd.f64(double %220, double %223, double %224)
  store double %225, ptr %16, align 8, !tbaa !11
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  %226 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 7
  %227 = load ptr, ptr %226, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.28)
          to label %228 unwind label %278

228:                                              ; preds = %221
  %229 = invoke noundef ptr @_ZN5DSENT5Model14getEventResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %227, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %230 unwind label %282

230:                                              ; preds = %228
  %231 = load ptr, ptr %229, align 8, !tbaa !13
  %232 = getelementptr inbounds ptr, ptr %231, i64 5
  %233 = load ptr, ptr %232, align 8
  %234 = invoke noundef double %233(ptr noundef nonnull align 8 dereferenceable(64) %229)
          to label %235 unwind label %282

235:                                              ; preds = %230
  %236 = load i32, ptr %17, align 4, !tbaa !9
  %237 = uitofp i32 %236 to double
  %238 = load double, ptr %15, align 8, !tbaa !11
  %239 = call double @llvm.fmuladd.f64(double %234, double %237, double %238)
  store double %239, ptr %15, align 8, !tbaa !11
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %335, %235
  %241 = load i32, ptr %26, align 4, !tbaa !9
  %242 = zext i32 %241 to i64
  %243 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 5
  %244 = call noundef i64 @_ZNKSt6vectorIPN5DSENT7StdCellESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %243) #7
  %245 = icmp ult i64 %242, %244
  br i1 %245, label %287, label %246

246:                                              ; preds = %240
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %370

247:                                              ; preds = %187
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %6, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %7, align 4
  br label %255

251:                                              ; preds = %194, %192
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %6, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %255

255:                                              ; preds = %251, %247
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  br label %413

256:                                              ; preds = %199
  %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
  br label %264

260:                                              ; preds = %202
  %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) %23) #7
  br label %264

264:                                              ; preds = %260, %256
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  br label %413

265:                                              ; preds = %203
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %6, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %7, align 4
  br label %413

269:                                              ; preds = %206
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %6, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %7, align 4
  br label %277

273:                                              ; preds = %216, %214
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %6, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %277

277:                                              ; preds = %273, %269
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  br label %413

278:                                              ; preds = %221
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %6, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %7, align 4
  br label %286

282:                                              ; preds = %230, %228
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %6, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %286

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

287:                                              ; preds = %240
  %288 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 5
  %289 = load i32, ptr %26, align 4, !tbaa !9
  %290 = zext i32 %289 to i64
  %291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %288, i64 noundef %290) #7
  %292 = load ptr, ptr %291, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.40)
          to label %293 unwind label %338

293:                                              ; preds = %287
  invoke void @_ZN5DSENT15ElectricalModel24assignPortTransitionInfoEPS0_RKN7LibUtil6StringERKNS_14TransitionInfoE(ptr noundef nonnull align 8 dereferenceable(240) %32, ptr noundef %292, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(48) %14)
          to label %294 unwind label %342

294:                                              ; preds = %293
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  %295 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 5
  %296 = load i32, ptr %26, align 4, !tbaa !9
  %297 = zext i32 %296 to i64
  %298 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %295, i64 noundef %297) #7
  %299 = load ptr, ptr %298, align 8, !tbaa !5
  invoke void @_ZN5DSENT5Model3useEv(ptr noundef nonnull align 8 dereferenceable(131) %299)
          to label %300 unwind label %347

300:                                              ; preds = %294
  %301 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 5
  %302 = load i32, ptr %26, align 4, !tbaa !9
  %303 = zext i32 %302 to i64
  %304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %301, i64 noundef %303) #7
  %305 = load ptr, ptr %304, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.60)
          to label %306 unwind label %351

306:                                              ; preds = %300
  %307 = invoke noundef ptr @_ZN5DSENT5Model17getNddPowerResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %305, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %308 unwind label %355

308:                                              ; preds = %306
  %309 = load ptr, ptr %307, align 8, !tbaa !13
  %310 = getelementptr inbounds ptr, ptr %309, i64 5
  %311 = load ptr, ptr %310, align 8
  %312 = invoke noundef double %311(ptr noundef nonnull align 8 dereferenceable(64) %307)
          to label %313 unwind label %355

313:                                              ; preds = %308
  %314 = load i32, ptr %17, align 4, !tbaa !9
  %315 = uitofp i32 %314 to double
  %316 = load double, ptr %16, align 8, !tbaa !11
  %317 = call double @llvm.fmuladd.f64(double %312, double %315, double %316)
  store double %317, ptr %16, align 8, !tbaa !11
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  %318 = getelementptr inbounds %"class.DSENT::BroadcastHTree", ptr %32, i32 0, i32 5
  %319 = load i32, ptr %26, align 4, !tbaa !9
  %320 = zext i32 %319 to i64
  %321 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %318, i64 noundef %320) #7
  %322 = load ptr, ptr %321, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.28)
          to label %323 unwind label %360

323:                                              ; preds = %313
  %324 = invoke noundef ptr @_ZN5DSENT5Model14getEventResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %322, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %325 unwind label %364

325:                                              ; preds = %323
  %326 = load ptr, ptr %324, align 8, !tbaa !13
  %327 = getelementptr inbounds ptr, ptr %326, i64 5
  %328 = load ptr, ptr %327, align 8
  %329 = invoke noundef double %328(ptr noundef nonnull align 8 dereferenceable(64) %324)
          to label %330 unwind label %364

330:                                              ; preds = %325
  %331 = load i32, ptr %17, align 4, !tbaa !9
  %332 = uitofp i32 %331 to double
  %333 = load double, ptr %15, align 8, !tbaa !11
  %334 = call double @llvm.fmuladd.f64(double %329, double %332, double %333)
  store double %334, ptr %15, align 8, !tbaa !11
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  br label %335

335:                                              ; preds = %330
  %336 = load i32, ptr %26, align 4, !tbaa !9
  %337 = add i32 %336, 1
  store i32 %337, ptr %26, align 4, !tbaa !9
  br label %240, !llvm.loop !46

338:                                              ; preds = %287
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %6, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %7, align 4
  br label %346

342:                                              ; preds = %293
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %6, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %346

346:                                              ; preds = %342, %338
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  br label %369

347:                                              ; preds = %294
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %6, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %7, align 4
  br label %369

351:                                              ; preds = %300
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %6, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %7, align 4
  br label %359

355:                                              ; preds = %308, %306
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %6, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %359

359:                                              ; preds = %355, %351
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  br label %369

360:                                              ; preds = %313
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %6, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %7, align 4
  br label %368

364:                                              ; preds = %325, %323
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %6, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %368

368:                                              ; preds = %364, %360
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  br label %369

369:                                              ; preds = %368, %359, %347, %346
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %413

370:                                              ; preds = %246
  %371 = load i32, ptr %3, align 4, !tbaa !9
  %372 = uitofp i32 %371 to double
  %373 = load double, ptr %16, align 8, !tbaa !11
  %374 = fmul double %373, %372
  store double %374, ptr %16, align 8, !tbaa !11
  %375 = load i32, ptr %3, align 4, !tbaa !9
  %376 = uitofp i32 %375 to double
  %377 = load double, ptr %15, align 8, !tbaa !11
  %378 = fmul double %377, %376
  store double %378, ptr %15, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.34)
          to label %379 unwind label %395

379:                                              ; preds = %370
  %380 = invoke noundef ptr @_ZN5DSENT5Model14getEventResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %32, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %381 unwind label %399

381:                                              ; preds = %379
  %382 = load double, ptr %15, align 8, !tbaa !11
  %383 = load ptr, ptr %380, align 8, !tbaa !13
  %384 = getelementptr inbounds ptr, ptr %383, i64 2
  %385 = load ptr, ptr %384, align 8
  invoke void %385(ptr noundef nonnull align 8 dereferenceable(64) %380, double noundef %382)
          to label %386 unwind label %399

386:                                              ; preds = %381
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.60)
          to label %387 unwind label %404

387:                                              ; preds = %386
  %388 = invoke noundef ptr @_ZN5DSENT5Model17getNddPowerResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %32, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %389 unwind label %408

389:                                              ; preds = %387
  %390 = load double, ptr %16, align 8, !tbaa !11
  %391 = load ptr, ptr %388, align 8, !tbaa !13
  %392 = getelementptr inbounds ptr, ptr %391, i64 2
  %393 = load ptr, ptr %392, align 8
  invoke void %393(ptr noundef nonnull align 8 dereferenceable(64) %388, double noundef %390)
          to label %394 unwind label %408

394:                                              ; preds = %389
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @_ZN5DSENT14TransitionInfoD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  ret void

395:                                              ; preds = %370
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %6, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %7, align 4
  br label %403

399:                                              ; preds = %381, %379
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %6, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %403

403:                                              ; preds = %399, %395
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  br label %413

404:                                              ; preds = %386
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %6, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %7, align 4
  br label %412

408:                                              ; preds = %389, %387
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %6, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %7, align 4
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %412

412:                                              ; preds = %408, %404
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  br label %413

413:                                              ; preds = %412, %403, %369, %286, %277, %265, %264, %255, %186
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %414

414:                                              ; preds = %413, %84
  call void @_ZN5DSENT14TransitionInfoD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %415

415:                                              ; preds = %414, %80
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  br label %416

416:                                              ; preds = %415, %79
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  br label %417

417:                                              ; preds = %416, %70
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  br label %418

418:                                              ; preds = %417
  %419 = load ptr, ptr %6, align 8
  %420 = load i32, ptr %7, align 4
  %421 = insertvalue { ptr, i32 } poison, ptr %419, 0
  %422 = insertvalue { ptr, i32 } %421, i32 %420, 1
  resume { ptr, i32 } %422
}

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

declare noundef nonnull align 8 dereferenceable(48) ptr @_ZNK5DSENT8PortInfo17getTransitionInfoEv(ptr noundef nonnull align 8 dereferenceable(88)) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions00Ev(ptr noundef nonnull align 8 dereferenceable(48)) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions11Ev(ptr noundef nonnull align 8 dereferenceable(48)) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions01Ev(ptr noundef nonnull align 8 dereferenceable(48)) #6 align 2

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

declare void @_ZN5DSENT15ElectricalModel24assignPortTransitionInfoEPS0_RKN7LibUtil6StringERKNS_14TransitionInfoE(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(48)) #1

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

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

; Function Attrs: nounwind
declare void @_ZN5DSENT14TransitionInfoD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #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 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = { 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 #7 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!18, !6, i64 368}
!18 = !{!"_ZTSN5DSENT14BroadcastHTreeE", !19, i64 0, !30, i64 240, !34, i64 264, !38, i64 288, !42, i64 312, !30, i64 336, !6, i64 360, !6, i64 368, !6, i64 376}
!19 = !{!"_ZTSN5DSENT15ElectricalModelE", !20, i64 0, !26, i64 136, !10, 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}
!20 = !{!"_ZTSN5DSENT5ModelE", !21, i64 8, !25, 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, !25, i64 128, !25, i64 129, !25, i64 130}
!21 = !{!"_ZTSN7LibUtil6StringE", !22, i64 0}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !23, i64 0, !24, i64 8, !7, i64 16}
!23 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!24 = !{!"long", !7, i64 0}
!25 = !{!"bool", !7, i64 0}
!26 = !{!"_ZTSSt6vectorIdSaIdEE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSSt6vectorIPN5DSENT7StdCellESaIS2_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIPN5DSENT7StdCellESaIS2_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT7StdCellESaIS2_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT7StdCellESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTSSt6vectorIPN5DSENT14ElectricalLoadESaIS2_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIPN5DSENT14ElectricalLoadESaIS2_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT14ElectricalLoadESaIS2_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT14ElectricalLoadESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorIPN5DSENT20ElectricalTimingTreeESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIPN5DSENT20ElectricalTimingTreeESaIS2_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT20ElectricalTimingTreeESaIS2_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT20ElectricalTimingTreeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTSSt6vectorIjSaIjEE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = distinct !{!46, !16}


; 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] }
%"class.DSENT::TransitionInfo" = type { double, double, double, double, double, double }

@.str = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [8 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 @_ZNK7LibUtil6String6toUIntEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) 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 nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIPN5DSENT7StdCellESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5DSENT14BroadcastHTree8useModelEv(ptr noundef nonnull align 8 dereferenceable(384) %0) unnamed_addr #5 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.DSENT::TransitionInfo", 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 %"class.LibUtil::String", align 8
  %17 = alloca %"class.LibUtil::String", align 8
  %18 = alloca %"class.LibUtil::String", align 8
  %19 = alloca %"class.LibUtil::String", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.1)
  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 %20 unwind label %42

20:                                               ; preds = %1
  %21 = invoke noundef i32 @_ZNK7LibUtil6String6toUIntEv(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %22 unwind label %44

22:                                               ; preds = %20
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str)
  invoke void @_ZNK5DSENT5Model12getParameterERKN7LibUtil6StringE(ptr dead_on_unwind nonnull writable sret(%"class.LibUtil::String") align 8 %4, ptr noundef nonnull align 8 dereferenceable(131) %0, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %23 unwind label %47

23:                                               ; preds = %22
  %24 = invoke noundef i32 @_ZNK7LibUtil6String6toUIntEv(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %25 unwind label %49

25:                                               ; preds = %23
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  call void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.22)
  %26 = invoke noundef ptr @_ZN5DSENT15ElectricalModel12getInputPortERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(240) %0, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %27 unwind label %52

27:                                               ; preds = %25
  %28 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK5DSENT8PortInfo17getTransitionInfoEv(ptr noundef nonnull align 8 dereferenceable(88) %26)
          to label %29 unwind label %52

29:                                               ; preds = %27
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  %30 = call noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions00Ev(ptr noundef nonnull align 8 dereferenceable(48) %28)
  %31 = call noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions11Ev(ptr noundef nonnull align 8 dereferenceable(48) %28)
  %32 = fadd double %30, %31
  %33 = fmul double %32, 5.000000e-01
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) #7
  %34 = call noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions01Ev(ptr noundef nonnull align 8 dereferenceable(48) %28)
  call void @_ZN5DSENT14TransitionInfoC1Eddd(ptr noundef nonnull align 8 dereferenceable(48) %7, double noundef %33, double noundef %34, double noundef %33)
  %35 = load ptr, ptr %0, align 8, !tbaa !5
  %36 = getelementptr inbounds i8, ptr %35, i64 80
  %37 = load ptr, ptr %36, align 8
  invoke void %37(ptr noundef nonnull align 8 dereferenceable(384) %0)
          to label %.preheader unwind label %54

.preheader:                                       ; preds = %29
  %.not = icmp eq i32 %24, 0
  br i1 %.not, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader
  %38 = getelementptr inbounds i8, ptr %0, i64 240
  %39 = getelementptr inbounds i8, ptr %0, i64 312
  %wide.trip.count = zext i32 %24 to i64
  br label %56

._crit_edge:                                      ; preds = %89, %.preheader
  %.048.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %94, %89 ]
  %.047.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %79, %89 ]
  %40 = uitofp i32 %21 to double
  %41 = fmul double %.048.lcssa, %40
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.35)
          to label %113 unwind label %154

42:                                               ; preds = %1
  %43 = landingpad { ptr, i32 }
          cleanup
  br label %46

44:                                               ; preds = %20
  %45 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  br label %46

46:                                               ; preds = %44, %42
  %.pn = phi { ptr, i32 } [ %45, %44 ], [ %43, %42 ]
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #7
  br label %252

47:                                               ; preds = %22
  %48 = landingpad { ptr, i32 }
          cleanup
  br label %51

49:                                               ; preds = %23
  %50 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  br label %51

51:                                               ; preds = %49, %47
  %.pn76 = phi { ptr, i32 } [ %50, %49 ], [ %48, %47 ]
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %252

52:                                               ; preds = %27, %25
  %53 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br label %252

54:                                               ; preds = %29
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %251

56:                                               ; preds = %.lr.ph, %89
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %89 ]
  %.046139 = phi i32 [ 1, %.lr.ph ], [ %95, %89 ]
  %.047138 = phi double [ 0.000000e+00, %.lr.ph ], [ %79, %89 ]
  %.048137 = phi double [ 0.000000e+00, %.lr.ph ], [ %94, %89 ]
  %57 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %indvars.iv) #7
  %58 = load ptr, ptr %57, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.40)
          to label %59 unwind label %96

59:                                               ; preds = %56
  invoke void @_ZN5DSENT15ElectricalModel24assignPortTransitionInfoEPS0_RKN7LibUtil6StringERKNS_14TransitionInfoE(ptr noundef nonnull align 8 dereferenceable(240) %0, ptr noundef %58, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(48) %7)
          to label %60 unwind label %98

60:                                               ; preds = %59
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %indvars.iv) #7
  %62 = load ptr, ptr %61, align 8, !tbaa !8
  invoke void @_ZN5DSENT5Model3useEv(ptr noundef nonnull align 8 dereferenceable(131) %62)
          to label %63 unwind label %101

63:                                               ; preds = %60
  %64 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %indvars.iv) #7
  %65 = load ptr, ptr %64, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.60)
          to label %66 unwind label %103

66:                                               ; preds = %63
  %67 = invoke noundef ptr @_ZN5DSENT5Model17getNddPowerResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %65, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %68 unwind label %105

68:                                               ; preds = %66
  %69 = load ptr, ptr %67, align 8, !tbaa !5
  %70 = getelementptr inbounds i8, ptr %69, i64 40
  %71 = load ptr, ptr %70, align 8
  %72 = invoke noundef double %71(ptr noundef nonnull align 8 dereferenceable(64) %67)
          to label %73 unwind label %105

73:                                               ; preds = %68
  %74 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %indvars.iv) #7
  %75 = load i32, ptr %74, align 4, !tbaa !11
  %76 = uitofp i32 %75 to double
  %77 = fmul double %72, %76
  %78 = uitofp i32 %.046139 to double
  %79 = call double @llvm.fmuladd.f64(double %77, double %78, double %.047138)
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  %80 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %indvars.iv) #7
  %81 = load ptr, ptr %80, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.28)
          to label %82 unwind label %108

82:                                               ; preds = %73
  %83 = invoke noundef ptr @_ZN5DSENT5Model14getEventResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %81, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %84 unwind label %110

84:                                               ; preds = %82
  %85 = load ptr, ptr %83, align 8, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %85, i64 40
  %87 = load ptr, ptr %86, align 8
  %88 = invoke noundef double %87(ptr noundef nonnull align 8 dereferenceable(64) %83)
          to label %89 unwind label %110

89:                                               ; preds = %84
  %90 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %indvars.iv) #7
  %91 = load i32, ptr %90, align 4, !tbaa !11
  %92 = uitofp i32 %91 to double
  %93 = fmul double %88, %92
  %94 = call double @llvm.fmuladd.f64(double %93, double %78, double %.048137)
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  %95 = shl i32 %.046139, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %56, !llvm.loop !13

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

98:                                               ; preds = %59
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  br label %100

100:                                              ; preds = %98, %96
  %.pn97 = phi { ptr, i32 } [ %99, %98 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  br label %251

101:                                              ; preds = %60
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %251

103:                                              ; preds = %63
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %107

105:                                              ; preds = %68, %66
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %107

107:                                              ; preds = %105, %103
  %.pn99 = phi { ptr, i32 } [ %106, %105 ], [ %104, %103 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %251

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

110:                                              ; preds = %84, %82
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %112

112:                                              ; preds = %110, %108
  %.pn101 = phi { ptr, i32 } [ %111, %110 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  br label %251

113:                                              ; preds = %._crit_edge
  %114 = invoke noundef ptr @_ZN5DSENT5Model14getEventResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %0, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %115 unwind label %156

115:                                              ; preds = %113
  %116 = load ptr, ptr %114, align 8, !tbaa !5
  %117 = getelementptr inbounds i8, ptr %116, i64 16
  %118 = load ptr, ptr %117, align 8
  invoke void %118(ptr noundef nonnull align 8 dereferenceable(64) %114, double noundef %41)
          to label %119 unwind label %156

119:                                              ; preds = %115
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  %120 = getelementptr inbounds i8, ptr %0, i64 368
  %121 = load ptr, ptr %120, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.40)
          to label %122 unwind label %159

122:                                              ; preds = %119
  invoke void @_ZN5DSENT15ElectricalModel24assignPortTransitionInfoEPS0_RKN7LibUtil6StringERKNS_14TransitionInfoE(ptr noundef nonnull align 8 dereferenceable(240) %0, ptr noundef %121, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(48) %7)
          to label %123 unwind label %161

123:                                              ; preds = %122
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  %124 = load ptr, ptr %120, align 8, !tbaa !15
  invoke void @_ZN5DSENT5Model3useEv(ptr noundef nonnull align 8 dereferenceable(131) %124)
          to label %125 unwind label %164

125:                                              ; preds = %123
  %126 = uitofp i32 %24 to double
  %127 = fadd double %126, -1.000000e+00
  %exp2 = call double @exp2(double %127)
  %128 = fptoui double %exp2 to i32
  %129 = load ptr, ptr %120, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.60)
          to label %130 unwind label %166

130:                                              ; preds = %125
  %131 = invoke noundef ptr @_ZN5DSENT5Model17getNddPowerResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %129, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %132 unwind label %168

132:                                              ; preds = %130
  %133 = load ptr, ptr %131, align 8, !tbaa !5
  %134 = getelementptr inbounds i8, ptr %133, i64 40
  %135 = load ptr, ptr %134, align 8
  %136 = invoke noundef double %135(ptr noundef nonnull align 8 dereferenceable(64) %131)
          to label %137 unwind label %168

137:                                              ; preds = %132
  %138 = uitofp i32 %128 to double
  %139 = call double @llvm.fmuladd.f64(double %136, double %138, double %.047.lcssa)
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  %140 = load ptr, ptr %120, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.28)
          to label %141 unwind label %171

141:                                              ; preds = %137
  %142 = invoke noundef ptr @_ZN5DSENT5Model14getEventResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %140, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %143 unwind label %173

143:                                              ; preds = %141
  %144 = load ptr, ptr %142, align 8, !tbaa !5
  %145 = getelementptr inbounds i8, ptr %144, i64 40
  %146 = load ptr, ptr %145, align 8
  %147 = invoke noundef double %146(ptr noundef nonnull align 8 dereferenceable(64) %142)
          to label %148 unwind label %173

148:                                              ; preds = %143
  %149 = call double @llvm.fmuladd.f64(double %147, double %138, double 0.000000e+00)
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  %150 = getelementptr inbounds i8, ptr %0, i64 336
  %151 = call noundef i64 @_ZNKSt6vectorIPN5DSENT7StdCellESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %150) #7
  %.not150 = icmp eq i64 %151, 0
  br i1 %.not150, label %._crit_edge147, label %.lr.ph146

._crit_edge147:                                   ; preds = %204, %148
  %.149.lcssa = phi double [ %149, %148 ], [ %205, %204 ]
  %.1.lcssa = phi double [ %139, %148 ], [ %194, %204 ]
  %152 = fmul double %.1.lcssa, %40
  %153 = fmul double %.149.lcssa, %40
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.34)
          to label %227 unwind label %241

154:                                              ; preds = %._crit_edge
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %158

156:                                              ; preds = %115, %113
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %158

158:                                              ; preds = %156, %154
  %.pn78 = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %251

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

161:                                              ; preds = %122
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %163

163:                                              ; preds = %161, %159
  %.pn80 = phi { ptr, i32 } [ %162, %161 ], [ %160, %159 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %251

164:                                              ; preds = %123
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %251

166:                                              ; preds = %125
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %170

168:                                              ; preds = %132, %130
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %170

170:                                              ; preds = %168, %166
  %.pn82 = phi { ptr, i32 } [ %169, %168 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %251

171:                                              ; preds = %137
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %175

173:                                              ; preds = %143, %141
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %175

175:                                              ; preds = %173, %171
  %.pn84 = phi { ptr, i32 } [ %174, %173 ], [ %172, %171 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %251

.lr.ph146:                                        ; preds = %148, %204
  %176 = phi i64 [ %207, %204 ], [ 0, %148 ]
  %.0144 = phi i32 [ %206, %204 ], [ 0, %148 ]
  %.1143 = phi double [ %194, %204 ], [ %139, %148 ]
  %.149142 = phi double [ %205, %204 ], [ %149, %148 ]
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %176) #7
  %178 = load ptr, ptr %177, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.40)
          to label %179 unwind label %210

179:                                              ; preds = %.lr.ph146
  invoke void @_ZN5DSENT15ElectricalModel24assignPortTransitionInfoEPS0_RKN7LibUtil6StringERKNS_14TransitionInfoE(ptr noundef nonnull align 8 dereferenceable(240) %0, ptr noundef %178, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(48) %7)
          to label %180 unwind label %212

180:                                              ; preds = %179
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %176) #7
  %182 = load ptr, ptr %181, align 8, !tbaa !8
  invoke void @_ZN5DSENT5Model3useEv(ptr noundef nonnull align 8 dereferenceable(131) %182)
          to label %183 unwind label %215

183:                                              ; preds = %180
  %184 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %176) #7
  %185 = load ptr, ptr %184, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.60)
          to label %186 unwind label %217

186:                                              ; preds = %183
  %187 = invoke noundef ptr @_ZN5DSENT5Model17getNddPowerResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %185, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %188 unwind label %219

188:                                              ; preds = %186
  %189 = load ptr, ptr %187, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %189, i64 40
  %191 = load ptr, ptr %190, align 8
  %192 = invoke noundef double %191(ptr noundef nonnull align 8 dereferenceable(64) %187)
          to label %193 unwind label %219

193:                                              ; preds = %188
  %194 = call double @llvm.fmuladd.f64(double %192, double %138, double %.1143)
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  %195 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5DSENT7StdCellESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %176) #7
  %196 = load ptr, ptr %195, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.28)
          to label %197 unwind label %222

197:                                              ; preds = %193
  %198 = invoke noundef ptr @_ZN5DSENT5Model14getEventResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %196, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %199 unwind label %224

199:                                              ; preds = %197
  %200 = load ptr, ptr %198, align 8, !tbaa !5
  %201 = getelementptr inbounds i8, ptr %200, i64 40
  %202 = load ptr, ptr %201, align 8
  %203 = invoke noundef double %202(ptr noundef nonnull align 8 dereferenceable(64) %198)
          to label %204 unwind label %224

204:                                              ; preds = %199
  %205 = call double @llvm.fmuladd.f64(double %203, double %138, double %.149142)
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  %206 = add i32 %.0144, 1
  %207 = zext i32 %206 to i64
  %208 = call noundef i64 @_ZNKSt6vectorIPN5DSENT7StdCellESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %150) #7
  %209 = icmp ugt i64 %208, %207
  br i1 %209, label %.lr.ph146, label %._crit_edge147, !llvm.loop !44

210:                                              ; preds = %.lr.ph146
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %214

212:                                              ; preds = %179
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %214

214:                                              ; preds = %212, %210
  %.pn90 = phi { ptr, i32 } [ %213, %212 ], [ %211, %210 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %251

215:                                              ; preds = %180
  %216 = landingpad { ptr, i32 }
          cleanup
  br label %251

217:                                              ; preds = %183
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %221

219:                                              ; preds = %188, %186
  %220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %221

221:                                              ; preds = %219, %217
  %.pn92 = phi { ptr, i32 } [ %220, %219 ], [ %218, %217 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %251

222:                                              ; preds = %193
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %226

224:                                              ; preds = %199, %197
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %226

226:                                              ; preds = %224, %222
  %.pn94 = phi { ptr, i32 } [ %225, %224 ], [ %223, %222 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %251

227:                                              ; preds = %._crit_edge147
  %228 = invoke noundef ptr @_ZN5DSENT5Model14getEventResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %0, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %229 unwind label %243

229:                                              ; preds = %227
  %230 = load ptr, ptr %228, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %230, i64 16
  %232 = load ptr, ptr %231, align 8
  invoke void %232(ptr noundef nonnull align 8 dereferenceable(64) %228, double noundef %153)
          to label %233 unwind label %243

233:                                              ; preds = %229
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  invoke void @_ZN7LibUtil6StringC1EPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.60)
          to label %234 unwind label %246

234:                                              ; preds = %233
  %235 = invoke noundef ptr @_ZN5DSENT5Model17getNddPowerResultERKN7LibUtil6StringE(ptr noundef nonnull align 8 dereferenceable(131) %0, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %236 unwind label %248

236:                                              ; preds = %234
  %237 = load ptr, ptr %235, align 8, !tbaa !5
  %238 = getelementptr inbounds i8, ptr %237, i64 16
  %239 = load ptr, ptr %238, align 8
  invoke void %239(ptr noundef nonnull align 8 dereferenceable(64) %235, double noundef %152)
          to label %240 unwind label %248

240:                                              ; preds = %236
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @_ZN5DSENT14TransitionInfoD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %7) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #7
  ret void

241:                                              ; preds = %._crit_edge147
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %245

243:                                              ; preds = %229, %227
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %245

245:                                              ; preds = %243, %241
  %.pn86 = phi { ptr, i32 } [ %244, %243 ], [ %242, %241 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %251

246:                                              ; preds = %233
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %250

248:                                              ; preds = %236, %234
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7LibUtil6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %250

250:                                              ; preds = %248, %246
  %.pn88 = phi { ptr, i32 } [ %249, %248 ], [ %247, %246 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %251

251:                                              ; preds = %158, %163, %164, %170, %175, %245, %250, %112, %107, %101, %100, %226, %221, %215, %214, %54
  %.pn101.pn.pn.pn = phi { ptr, i32 } [ %55, %54 ], [ %.pn88, %250 ], [ %.pn86, %245 ], [ %.pn84, %175 ], [ %.pn82, %170 ], [ %165, %164 ], [ %.pn80, %163 ], [ %.pn78, %158 ], [ %.pn101, %112 ], [ %.pn99, %107 ], [ %102, %101 ], [ %.pn97, %100 ], [ %.pn94, %226 ], [ %.pn92, %221 ], [ %216, %215 ], [ %.pn90, %214 ]
  call void @_ZN5DSENT14TransitionInfoD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %7) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #7
  br label %252

252:                                              ; preds = %51, %251, %52, %46
  %.pn101.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn, %46 ], [ %.pn76, %51 ], [ %.pn101.pn.pn.pn, %251 ], [ %53, %52 ]
  resume { ptr, i32 } %.pn101.pn.pn.pn.pn.pn.pn
}

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

declare noundef nonnull align 8 dereferenceable(48) ptr @_ZNK5DSENT8PortInfo17getTransitionInfoEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions00Ev(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions11Ev(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK5DSENT14TransitionInfo22getNumberTransitions01Ev(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #6 align 2

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

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

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

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

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

declare double @exp2(double) local_unnamed_addr

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 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = { 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 #7 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !10, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !9, i64 368}
!16 = !{!"_ZTSN5DSENT14BroadcastHTreeE", !17, i64 0, !28, i64 240, !32, i64 264, !36, i64 288, !40, i64 312, !28, i64 336, !9, i64 360, !9, i64 368, !9, i64 376}
!17 = !{!"_ZTSN5DSENT15ElectricalModelE", !18, i64 0, !24, i64 136, !12, i64 160, !9, i64 168, !9, i64 176, !9, i64 184, !9, i64 192, !9, i64 200, !9, i64 208, !9, i64 216, !9, i64 224, !9, i64 232}
!18 = !{!"_ZTSN5DSENT5ModelE", !19, i64 8, !23, i64 40, !9, i64 48, !9, i64 56, !9, i64 64, !9, i64 72, !9, i64 80, !9, i64 88, !9, i64 96, !9, i64 104, !9, i64 112, !9, i64 120, !23, i64 128, !23, i64 129, !23, i64 130}
!19 = !{!"_ZTSN7LibUtil6StringE", !20, i64 0}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !22, i64 8, !10, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !9, i64 0}
!22 = !{!"long", !10, i64 0}
!23 = !{!"bool", !10, i64 0}
!24 = !{!"_ZTSSt6vectorIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!28 = !{!"_ZTSSt6vectorIPN5DSENT7StdCellESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIPN5DSENT7StdCellESaIS2_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT7StdCellESaIS2_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT7StdCellESaIS2_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!32 = !{!"_ZTSSt6vectorIPN5DSENT14ElectricalLoadESaIS2_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIPN5DSENT14ElectricalLoadESaIS2_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT14ElectricalLoadESaIS2_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT14ElectricalLoadESaIS2_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!36 = !{!"_ZTSSt6vectorIPN5DSENT20ElectricalTimingTreeESaIS2_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIPN5DSENT20ElectricalTimingTreeESaIS2_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT20ElectricalTimingTreeESaIS2_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIPN5DSENT20ElectricalTimingTreeESaIS2_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!40 = !{!"_ZTSSt6vectorIjSaIjEE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!44 = distinct !{!44, !14}


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