; LLVM IR from gem5/gem5 :: ext/drampower/test/libdrampowertest (lib_test)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.Data::MemorySpecification" = type { ptr, %"class.std::__cxx11::basic_string", %"class.Data::MemoryType", [4 x i8], %"class.Data::MemArchitectureSpec", %"class.Data::MemTimingSpec", %"class.Data::MemPowerSpec", %"class.Data::Parametrisable" }
%"class.Data::MemoryType" = type { i32 }
%"class.Data::MemArchitectureSpec" = type <{ ptr, i64, i64, i64, i64, i64, i64, i64, i64, i8, i8, i8, [5 x i8], %"class.Data::Parametrisable" }>
%"class.Data::MemTimingSpec" = type { ptr, double, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, double, %"class.Data::Parametrisable" }
%"class.Data::MemPowerSpec" = type { ptr, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, %"class.Data::Parametrisable" }
%"class.Data::Parametrisable" = type { ptr, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Data::Parameter, std::allocator<Data::Parameter>>::_Vector_impl" }
%"struct.std::_Vector_base<Data::Parameter, std::allocator<Data::Parameter>>::_Vector_impl" = type { %"struct.std::_Vector_base<Data::Parameter, std::allocator<Data::Parameter>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Data::Parameter, std::allocator<Data::Parameter>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.libDRAMPower = type { %"class.std::vector.3", %"class.Data::MemorySpecification", %"class.Data::CommandAnalysis", i8, [7 x i8], %"class.Data::MemBankWiseParams", %"class.Data::MemoryPowerModel" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<Data::MemCommand, std::allocator<Data::MemCommand>>::_Vector_impl" }
%"struct.std::_Vector_base<Data::MemCommand, std::allocator<Data::MemCommand>>::_Vector_impl" = type { %"struct.std::_Vector_base<Data::MemCommand, std::allocator<Data::MemCommand>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Data::MemCommand, std::allocator<Data::MemCommand>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Data::CommandAnalysis" = type { %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", i64, %"class.std::vector.8", i64, i64, %"class.std::vector.8", i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, %"class.Data::MemorySpecification", i64, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.8", i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i64, i64, %"class.std::vector.8", i64 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<Data::CommandAnalysis::BankState, std::allocator<Data::CommandAnalysis::BankState>>::_Vector_impl" }
%"struct.std::_Vector_base<Data::CommandAnalysis::BankState, std::allocator<Data::CommandAnalysis::BankState>>::_Vector_impl" = type { %"struct.std::_Vector_base<Data::CommandAnalysis::BankState, std::allocator<Data::CommandAnalysis::BankState>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Data::CommandAnalysis::BankState, std::allocator<Data::CommandAnalysis::BankState>>::_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<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Data::MemBankWiseParams" = type <{ %"class.std::vector.18", i64, i64, i8, i8, [6 x i8] }>
%"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.Data::MemoryPowerModel" = type { i64, i64, %"struct.Data::MemoryPowerModel::Energy", %"struct.Data::MemoryPowerModel::Power" }
%"struct.Data::MemoryPowerModel::Energy" = type { double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, double, double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, double, double, double, double }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = 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 }
%"struct.Data::MemoryPowerModel::Power" = type { double, double, double, double, double, double }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@.str = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [91 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [23 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.2 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.Data::MemorySpecification", align 8
  %10 = alloca %class.libDRAMPower, align 8
  %11 = alloca i32, align 4
  %12 = alloca i64, align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  %19 = load i32, ptr %4, align 4, !tbaa !5
  %20 = icmp eq i32 %19, 2
  br i1 %20, label %21, label %22

21:                                               ; preds = %2
  br label %24

22:                                               ; preds = %2
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 49, ptr noundef @__PRETTY_FUNCTION__.main) #9
  unreachable

23:                                               ; No predecessors!
  br label %24

24:                                               ; preds = %23, %21
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  %25 = load ptr, ptr %5, align 8, !tbaa !9
  %26 = getelementptr inbounds ptr, ptr %25, i64 1
  %27 = load ptr, ptr %26, align 8, !tbaa !9
  %28 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef %27)
          to label %29 unwind label %274

29:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 768, ptr %9) #10
  invoke void @_ZN4Data19MemorySpecificationC1Ev(ptr noundef nonnull align 8 dereferenceable(736) %9)
          to label %30 unwind label %278

30:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 3152, ptr %10) #10
  invoke void @_ZN12libDRAMPowerC1ERKN4Data19MemorySpecificationEb(ptr noundef nonnull align 8 dereferenceable(3152) %10, ptr noundef nonnull align 8 dereferenceable(736) %9, i1 noundef zeroext false)
          to label %31 unwind label %282

31:                                               ; preds = %30
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  %32 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !11
  %33 = getelementptr i8, ptr %32, i64 -24
  %34 = load i64, ptr %33, align 8
  %35 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %34
  %36 = invoke noundef i32 @_ZNKSt8ios_base5flagsEv(ptr noundef nonnull align 8 dereferenceable(216) %35)
          to label %37 unwind label %286

37:                                               ; preds = %31
  store i32 %36, ptr %11, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  %38 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !11
  %39 = getelementptr i8, ptr %38, i64 -24
  %40 = load i64, ptr %39, align 8
  %41 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %40
  %42 = invoke noundef i64 @_ZNKSt8ios_base9precisionEv(ptr noundef nonnull align 8 dereferenceable(216) %41)
          to label %43 unwind label %290

43:                                               ; preds = %37
  store i64 %42, ptr %12, align 8, !tbaa !15
  %44 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !11
  %45 = getelementptr i8, ptr %44, i64 -24
  %46 = load i64, ptr %45, align 8
  %47 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %46
  %48 = invoke noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %47, i64 noundef 2)
          to label %49 unwind label %290

49:                                               ; preds = %43
  %50 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt5fixedRSt8ios_base)
          to label %51 unwind label %290

51:                                               ; preds = %49
  %52 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %53 unwind label %290

53:                                               ; preds = %51
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 0, i64 noundef 35)
          to label %54 unwind label %290

54:                                               ; preds = %53
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 7, i32 noundef 0, i64 noundef 50)
          to label %55 unwind label %290

55:                                               ; preds = %54
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 4, i64 noundef 51)
          to label %56 unwind label %290

56:                                               ; preds = %55
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 7, i32 noundef 4, i64 noundef 66)
          to label %57 unwind label %290

57:                                               ; preds = %56
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 0, i64 noundef 86)
          to label %58 unwind label %290

58:                                               ; preds = %57
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 7, i32 noundef 0, i64 noundef 101)
          to label %59 unwind label %290

59:                                               ; preds = %58
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 2, i64 noundef 102)
          to label %60 unwind label %290

60:                                               ; preds = %59
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 7, i32 noundef 2, i64 noundef 117)
          to label %61 unwind label %290

61:                                               ; preds = %60
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 5, i64 noundef 119)
          to label %62 unwind label %290

62:                                               ; preds = %61
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 7, i32 noundef 5, i64 noundef 134)
          to label %63 unwind label %290

63:                                               ; preds = %62
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 0, i64 noundef 137)
          to label %64 unwind label %290

64:                                               ; preds = %63
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 7, i32 noundef 0, i64 noundef 152)
          to label %65 unwind label %290

65:                                               ; preds = %64
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 3, i64 noundef 159)
          to label %66 unwind label %290

66:                                               ; preds = %65
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 7, i32 noundef 3, i64 noundef 174)
          to label %67 unwind label %290

67:                                               ; preds = %66
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 0, i64 noundef 195)
          to label %68 unwind label %290

68:                                               ; preds = %67
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 7, i32 noundef 0, i64 noundef 210)
          to label %69 unwind label %290

69:                                               ; preds = %68
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 4, i64 noundef 232)
          to label %70 unwind label %290

70:                                               ; preds = %69
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 8, i32 noundef 4, i64 noundef 247)
          to label %71 unwind label %290

71:                                               ; preds = %70
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 10, i32 noundef 3, i64 noundef 265)
          to label %72 unwind label %290

72:                                               ; preds = %71
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 14, i32 noundef 3, i64 noundef 300)
          to label %73 unwind label %290

73:                                               ; preds = %72
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 0, i64 noundef 350)
          to label %74 unwind label %290

74:                                               ; preds = %73
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 9, i32 noundef 0, i64 noundef 400)
          to label %75 unwind label %290

75:                                               ; preds = %74
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 9, i32 noundef 0, i64 noundef 450)
          to label %76 unwind label %290

76:                                               ; preds = %75
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 0, i64 noundef 500)
          to label %77 unwind label %290

77:                                               ; preds = %76
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 0, i32 noundef 0, i64 noundef 550)
          to label %78 unwind label %290

78:                                               ; preds = %77
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 3, i32 noundef 0, i64 noundef 600)
          to label %79 unwind label %290

79:                                               ; preds = %78
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %10, i32 noundef 3, i32 noundef 0, i64 noundef 650)
          to label %80 unwind label %290

80:                                               ; preds = %79
  invoke void @_ZN12libDRAMPower10calcEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %10)
          to label %81 unwind label %290

81:                                               ; preds = %80
  %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.2)
          to label %83 unwind label %290

83:                                               ; preds = %81
  %84 = getelementptr inbounds %class.libDRAMPower, ptr %10, i32 0, i32 2
  %85 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %84, i32 0, i32 0
  %86 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #10
  %87 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %13, i32 0, i32 0
  store ptr %86, ptr %87, align 8
  %88 = getelementptr inbounds %class.libDRAMPower, ptr %10, i32 0, i32 2
  %89 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %88, i32 0, i32 0
  %90 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #10
  %91 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %14, i32 0, i32 0
  store ptr %90, ptr %91, align 8
  %92 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %13, i32 0, i32 0
  %93 = load ptr, ptr %92, align 8
  %94 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %14, i32 0, i32 0
  %95 = load ptr, ptr %94, align 8
  %96 = invoke noundef i32 @_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiET0_T_S8_S7_(ptr %93, ptr %95, i32 noundef 0)
          to label %97 unwind label %290

97:                                               ; preds = %83
  %98 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %82, i32 noundef %96)
          to label %99 unwind label %290

99:                                               ; preds = %97
  %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %101 unwind label %290

101:                                              ; preds = %99
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.3)
          to label %103 unwind label %290

103:                                              ; preds = %101
  %104 = getelementptr inbounds %class.libDRAMPower, ptr %10, i32 0, i32 2
  %105 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %104, i32 0, i32 2
  %106 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %105) #10
  %107 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %15, i32 0, i32 0
  store ptr %106, ptr %107, align 8
  %108 = getelementptr inbounds %class.libDRAMPower, ptr %10, i32 0, i32 2
  %109 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %108, i32 0, i32 2
  %110 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %109) #10
  %111 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %16, i32 0, i32 0
  store ptr %110, ptr %111, align 8
  %112 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %15, i32 0, i32 0
  %113 = load ptr, ptr %112, align 8
  %114 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %16, i32 0, i32 0
  %115 = load ptr, ptr %114, align 8
  %116 = invoke noundef i32 @_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiET0_T_S8_S7_(ptr %113, ptr %115, i32 noundef 0)
          to label %117 unwind label %290

117:                                              ; preds = %103
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %102, i32 noundef %116)
          to label %119 unwind label %290

119:                                              ; preds = %117
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %121 unwind label %290

121:                                              ; preds = %119
  %122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.4)
          to label %123 unwind label %290

123:                                              ; preds = %121
  %124 = getelementptr inbounds %class.libDRAMPower, ptr %10, i32 0, i32 2
  %125 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %124, i32 0, i32 1
  %126 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %125) #10
  %127 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %17, i32 0, i32 0
  store ptr %126, ptr %127, align 8
  %128 = getelementptr inbounds %class.libDRAMPower, ptr %10, i32 0, i32 2
  %129 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %128, i32 0, i32 1
  %130 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %129) #10
  %131 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %18, i32 0, i32 0
  store ptr %130, ptr %131, align 8
  %132 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %17, i32 0, i32 0
  %133 = load ptr, ptr %132, align 8
  %134 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %18, i32 0, i32 0
  %135 = load ptr, ptr %134, align 8
  %136 = invoke noundef i32 @_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiET0_T_S8_S7_(ptr %133, ptr %135, i32 noundef 0)
          to label %137 unwind label %290

137:                                              ; preds = %123
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %122, i32 noundef %136)
          to label %139 unwind label %290

139:                                              ; preds = %137
  %140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %141 unwind label %290

141:                                              ; preds = %139
  %142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.5)
          to label %143 unwind label %290

143:                                              ; preds = %141
  %144 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %10)
          to label %145 unwind label %290

145:                                              ; preds = %143
  %146 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %144, i32 0, i32 0
  %147 = load double, ptr %146, align 8, !tbaa !17
  %148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %142, double noundef %147)
          to label %149 unwind label %290

149:                                              ; preds = %145
  %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef @.str.6)
          to label %151 unwind label %290

151:                                              ; preds = %149
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %153 unwind label %290

153:                                              ; preds = %151
  %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.7)
          to label %155 unwind label %290

155:                                              ; preds = %153
  %156 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %10)
          to label %157 unwind label %290

157:                                              ; preds = %155
  %158 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %156, i32 0, i32 2
  %159 = load double, ptr %158, align 8, !tbaa !24
  %160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %154, double noundef %159)
          to label %161 unwind label %290

161:                                              ; preds = %157
  %162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef @.str.6)
          to label %163 unwind label %290

163:                                              ; preds = %161
  %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %165 unwind label %290

165:                                              ; preds = %163
  %166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.8)
          to label %167 unwind label %290

167:                                              ; preds = %165
  %168 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %10)
          to label %169 unwind label %290

169:                                              ; preds = %167
  %170 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %168, i32 0, i32 4
  %171 = load double, ptr %170, align 8, !tbaa !25
  %172 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %166, double noundef %171)
          to label %173 unwind label %290

173:                                              ; preds = %169
  %174 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef @.str.6)
          to label %175 unwind label %290

175:                                              ; preds = %173
  %176 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %174, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %177 unwind label %290

177:                                              ; preds = %175
  %178 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.9)
          to label %179 unwind label %290

179:                                              ; preds = %177
  %180 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %10)
          to label %181 unwind label %290

181:                                              ; preds = %179
  %182 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %180, i32 0, i32 6
  %183 = load double, ptr %182, align 8, !tbaa !26
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %178, double noundef %183)
          to label %185 unwind label %290

185:                                              ; preds = %181
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef @.str.6)
          to label %187 unwind label %290

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %189 unwind label %290

189:                                              ; preds = %187
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %191 unwind label %290

191:                                              ; preds = %189
  %192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.10)
          to label %193 unwind label %290

193:                                              ; preds = %191
  %194 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %10)
          to label %195 unwind label %290

195:                                              ; preds = %193
  %196 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %194, i32 0, i32 11
  %197 = load double, ptr %196, align 8, !tbaa !27
  %198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %192, double noundef %197)
          to label %199 unwind label %290

199:                                              ; preds = %195
  %200 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef @.str.6)
          to label %201 unwind label %290

201:                                              ; preds = %199
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %203 unwind label %290

203:                                              ; preds = %201
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.11)
          to label %205 unwind label %290

205:                                              ; preds = %203
  %206 = getelementptr inbounds %"class.Data::MemorySpecification", ptr %9, i32 0, i32 4
  %207 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %206, i32 0, i32 3
  %208 = load i64, ptr %207, align 8, !tbaa !28
  %209 = sitofp i64 %208 to double
  %210 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %10)
          to label %211 unwind label %290

211:                                              ; preds = %205
  %212 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %210, i32 0, i32 11
  %213 = load double, ptr %212, align 8, !tbaa !27
  %214 = fmul double %209, %213
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %204, double noundef %214)
          to label %216 unwind label %290

216:                                              ; preds = %211
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef @.str.6)
          to label %218 unwind label %290

218:                                              ; preds = %216
  %219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %220 unwind label %290

220:                                              ; preds = %218
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.12)
          to label %222 unwind label %290

222:                                              ; preds = %220
  %223 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %10)
          to label %224 unwind label %290

224:                                              ; preds = %222
  %225 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %223, i32 0, i32 13
  %226 = load double, ptr %225, align 8, !tbaa !38
  %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %221, double noundef %226)
          to label %228 unwind label %290

228:                                              ; preds = %224
  %229 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %227, ptr noundef @.str.6)
          to label %230 unwind label %290

230:                                              ; preds = %228
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %229, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %232 unwind label %290

232:                                              ; preds = %230
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %234 unwind label %290

234:                                              ; preds = %232
  %235 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.13)
          to label %236 unwind label %290

236:                                              ; preds = %234
  %237 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %10)
          to label %238 unwind label %290

238:                                              ; preds = %236
  %239 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %237, i32 0, i32 19
  %240 = load double, ptr %239, align 8, !tbaa !39
  %241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %235, double noundef %240)
          to label %242 unwind label %290

242:                                              ; preds = %238
  %243 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %241, ptr noundef @.str.6)
          to label %244 unwind label %290

244:                                              ; preds = %242
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %246 unwind label %290

246:                                              ; preds = %244
  %247 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.14)
          to label %248 unwind label %290

248:                                              ; preds = %246
  %249 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK12libDRAMPower8getPowerEv(ptr noundef nonnull align 8 dereferenceable(3152) %10)
          to label %250 unwind label %290

250:                                              ; preds = %248
  %251 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %249, i32 0, i32 4
  %252 = load double, ptr %251, align 8, !tbaa !40
  %253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %247, double noundef %252)
          to label %254 unwind label %290

254:                                              ; preds = %250
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef @.str.15)
          to label %256 unwind label %290

256:                                              ; preds = %254
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %258 unwind label %290

258:                                              ; preds = %256
  %259 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !11
  %260 = getelementptr i8, ptr %259, i64 -24
  %261 = load i64, ptr %260, align 8
  %262 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %261
  %263 = load i32, ptr %11, align 4, !tbaa !13
  %264 = invoke noundef i32 @_ZNSt8ios_base5flagsESt13_Ios_Fmtflags(ptr noundef nonnull align 8 dereferenceable(216) %262, i32 noundef %263)
          to label %265 unwind label %290

265:                                              ; preds = %258
  %266 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !11
  %267 = getelementptr i8, ptr %266, i64 -24
  %268 = load i64, ptr %267, align 8
  %269 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %268
  %270 = load i64, ptr %12, align 8, !tbaa !15
  %271 = invoke noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %269, i64 noundef %270)
          to label %272 unwind label %290

272:                                              ; preds = %265
  store i32 0, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  call void @_ZN12libDRAMPowerD1Ev(ptr noundef nonnull align 8 dereferenceable(3152) %10) #10
  call void @llvm.lifetime.end.p0(i64 3152, ptr %10) #10
  call void @_ZN4Data19MemorySpecificationD1Ev(ptr noundef nonnull align 8 dereferenceable(736) %9) #10
  call void @llvm.lifetime.end.p0(i64 768, ptr %9) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #10
  %273 = load i32, ptr %3, align 4
  ret i32 %273

274:                                              ; preds = %24
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %7, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %8, align 4
  br label %297

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

282:                                              ; preds = %30
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %7, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %8, align 4
  br label %295

286:                                              ; preds = %31
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %7, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %8, align 4
  br label %294

290:                                              ; preds = %265, %258, %256, %254, %250, %248, %246, %244, %242, %238, %236, %234, %232, %230, %228, %224, %222, %220, %218, %216, %211, %205, %203, %201, %199, %195, %193, %191, %189, %187, %185, %181, %179, %177, %175, %173, %169, %167, %165, %163, %161, %157, %155, %153, %151, %149, %145, %143, %141, %139, %137, %123, %121, %119, %117, %103, %101, %99, %97, %83, %81, %80, %79, %78, %77, %76, %75, %74, %73, %72, %71, %70, %69, %68, %67, %66, %65, %64, %63, %62, %61, %60, %59, %58, %57, %56, %55, %54, %53, %51, %49, %43, %37
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %7, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  br label %294

294:                                              ; preds = %290, %286
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  call void @_ZN12libDRAMPowerD1Ev(ptr noundef nonnull align 8 dereferenceable(3152) %10) #10
  br label %295

295:                                              ; preds = %294, %282
  call void @llvm.lifetime.end.p0(i64 3152, ptr %10) #10
  call void @_ZN4Data19MemorySpecificationD1Ev(ptr noundef nonnull align 8 dereferenceable(736) %9) #10
  br label %296

296:                                              ; preds = %295, %278
  call void @llvm.lifetime.end.p0(i64 768, ptr %9) #10
  br label %297

297:                                              ; preds = %296, %274
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #10
  br label %298

298:                                              ; preds = %297
  %299 = load ptr, ptr %7, align 8
  %300 = load i32, ptr %8, align 4
  %301 = insertvalue { ptr, i32 } poison, ptr %299, 0
  %302 = insertvalue { ptr, i32 } %301, i32 %300, 1
  resume { ptr, i32 } %302
}

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4Data19MemorySpecificationC1Ev(ptr noundef nonnull align 8 dereferenceable(736)) unnamed_addr #5 align 2

declare void @_ZN12libDRAMPowerC1ERKN4Data19MemorySpecificationEb(ptr noundef nonnull align 8 dereferenceable(3152), ptr noundef nonnull align 8 dereferenceable(736), i1 noundef zeroext) unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNKSt8ios_base5flagsEv(ptr noundef nonnull align 8 dereferenceable(216)) #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt5fixedRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #5

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

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

declare void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152), i32 noundef, i32 noundef, i64 noundef) #6

declare void @_ZN12libDRAMPower10calcEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152)) #6

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiET0_T_S8_S7_(ptr, ptr, i32 noundef) #7

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

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

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

declare noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152)) #6

declare noundef nonnull align 8 dereferenceable(48) ptr @_ZNK12libDRAMPower8getPowerEv(ptr noundef nonnull align 8 dereferenceable(3152)) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt8ios_base5flagsESt13_Ios_Fmtflags(ptr noundef nonnull align 8 dereferenceable(216), i32 noundef) #3 align 2

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

; Function Attrs: nounwind
declare void @_ZN12libDRAMPowerD1Ev(ptr noundef nonnull align 8 dereferenceable(3152)) unnamed_addr #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4Data19MemorySpecificationD1Ev(ptr noundef nonnull align 8 dereferenceable(736)) unnamed_addr #7 align 2

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

attributes #0 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { noreturn 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { noreturn nounwind }
attributes #10 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSSt13_Ios_Fmtflags", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!18, !19, i64 0}
!18 = !{!"_ZTSN4Data16MemoryPowerModel6EnergyE", !19, i64 0, !20, i64 8, !19, i64 32, !20, i64 40, !19, i64 64, !20, i64 72, !19, i64 96, !20, i64 104, !19, i64 128, !20, i64 136, !20, i64 160, !19, i64 184, !20, i64 192, !19, i64 216, !20, i64 224, !19, i64 248, !20, i64 256, !19, i64 280, !20, i64 288, !19, i64 312, !20, i64 320, !19, i64 344, !19, i64 352, !19, i64 360, !20, i64 368, !19, i64 392, !20, i64 400, !19, i64 424, !20, i64 432, !19, i64 456, !20, i64 464, !19, i64 488, !20, i64 496, !19, i64 520, !20, i64 528, !19, i64 552, !20, i64 560, !19, i64 584, !20, i64 592, !19, i64 616, !20, i64 624, !19, i64 648, !20, i64 656, !19, i64 680, !20, i64 688, !19, i64 712, !20, i64 720, !19, i64 744, !20, i64 752, !19, i64 776, !20, i64 784, !19, i64 808, !19, i64 816, !19, i64 824, !19, i64 832, !19, i64 840}
!19 = !{!"double", !7, i64 0}
!20 = !{!"_ZTSSt6vectorIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!24 = !{!18, !19, i64 32}
!25 = !{!18, !19, i64 64}
!26 = !{!18, !19, i64 96}
!27 = !{!18, !19, i64 184}
!28 = !{!29, !16, i64 72}
!29 = !{!"_ZTSN4Data19MemorySpecificationE", !30, i64 8, !32, i64 40, !34, i64 48, !36, i64 160, !37, i64 456}
!30 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !31, i64 0, !16, i64 8, !7, i64 16}
!31 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!32 = !{!"_ZTSN4Data10MemoryTypeE", !33, i64 0}
!33 = !{!"_ZTSN4Data10MemoryType12MemoryType_tE", !7, i64 0}
!34 = !{!"_ZTSN4Data19MemArchitectureSpecE", !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !35, i64 72, !35, i64 73, !35, i64 74}
!35 = !{!"bool", !7, i64 0}
!36 = !{!"_ZTSN4Data13MemTimingSpecE", !19, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !16, i64 144, !16, i64 152, !16, i64 160, !16, i64 168, !16, i64 176, !16, i64 184, !16, i64 192, !16, i64 200, !16, i64 208, !16, i64 216, !16, i64 224, !16, i64 232, !16, i64 240, !16, i64 248, !19, i64 256}
!37 = !{!"_ZTSN4Data12MemPowerSpecE", !19, i64 8, !19, i64 16, !19, i64 24, !19, i64 32, !19, i64 40, !19, i64 48, !19, i64 56, !19, i64 64, !19, i64 72, !19, i64 80, !19, i64 88, !19, i64 96, !19, i64 104, !19, i64 112, !19, i64 120, !19, i64 128, !19, i64 136, !19, i64 144, !19, i64 152, !19, i64 160, !19, i64 168, !19, i64 176, !19, i64 184, !19, i64 192, !19, i64 200, !19, i64 208, !19, i64 216, !19, i64 224, !19, i64 232, !19, i64 240}
!38 = !{!18, !19, i64 216}
!39 = !{!18, !19, i64 312}
!40 = !{!41, !19, i64 32}
!41 = !{!"_ZTSN4Data16MemoryPowerModel5PowerE", !19, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !19, i64 32, !19, i64 40}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.Data::MemorySpecification" = type { ptr, %"class.std::__cxx11::basic_string", %"class.Data::MemoryType", [4 x i8], %"class.Data::MemArchitectureSpec", %"class.Data::MemTimingSpec", %"class.Data::MemPowerSpec", %"class.Data::Parametrisable" }
%"class.Data::MemoryType" = type { i32 }
%"class.Data::MemArchitectureSpec" = type <{ ptr, i64, i64, i64, i64, i64, i64, i64, i64, i8, i8, i8, [5 x i8], %"class.Data::Parametrisable" }>
%"class.Data::MemTimingSpec" = type { ptr, double, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, double, %"class.Data::Parametrisable" }
%"class.Data::MemPowerSpec" = type { ptr, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, %"class.Data::Parametrisable" }
%"class.Data::Parametrisable" = type { ptr, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Data::Parameter, std::allocator<Data::Parameter>>::_Vector_impl" }
%"struct.std::_Vector_base<Data::Parameter, std::allocator<Data::Parameter>>::_Vector_impl" = type { %"struct.std::_Vector_base<Data::Parameter, std::allocator<Data::Parameter>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Data::Parameter, std::allocator<Data::Parameter>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.libDRAMPower = type { %"class.std::vector.3", %"class.Data::MemorySpecification", %"class.Data::CommandAnalysis", i8, [7 x i8], %"class.Data::MemBankWiseParams", %"class.Data::MemoryPowerModel" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<Data::MemCommand, std::allocator<Data::MemCommand>>::_Vector_impl" }
%"struct.std::_Vector_base<Data::MemCommand, std::allocator<Data::MemCommand>>::_Vector_impl" = type { %"struct.std::_Vector_base<Data::MemCommand, std::allocator<Data::MemCommand>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Data::MemCommand, std::allocator<Data::MemCommand>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Data::CommandAnalysis" = type { %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", i64, %"class.std::vector.8", i64, i64, %"class.std::vector.8", i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, %"class.Data::MemorySpecification", i64, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.8", i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i64, i64, %"class.std::vector.8", i64 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<Data::CommandAnalysis::BankState, std::allocator<Data::CommandAnalysis::BankState>>::_Vector_impl" }
%"struct.std::_Vector_base<Data::CommandAnalysis::BankState, std::allocator<Data::CommandAnalysis::BankState>>::_Vector_impl" = type { %"struct.std::_Vector_base<Data::CommandAnalysis::BankState, std::allocator<Data::CommandAnalysis::BankState>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Data::CommandAnalysis::BankState, std::allocator<Data::CommandAnalysis::BankState>>::_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<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Data::MemBankWiseParams" = type <{ %"class.std::vector.18", i64, i64, i8, i8, [6 x i8] }>
%"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.Data::MemoryPowerModel" = type { i64, i64, %"struct.Data::MemoryPowerModel::Energy", %"struct.Data::MemoryPowerModel::Power" }
%"struct.Data::MemoryPowerModel::Energy" = type { double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, double, double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, %"class.std::vector.23", double, double, double, double, double }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = 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 }
%"struct.Data::MemoryPowerModel::Power" = type { double, double, double, double, double, double }

@.str = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [91 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [23 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.2 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.Data::MemorySpecification", align 8
  %5 = alloca %class.libDRAMPower, align 8
  %6 = icmp eq i32 %0, 2
  br i1 %6, label %8, label %7

7:                                                ; preds = %2
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 49, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #9
  unreachable

8:                                                ; preds = %2
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #10
  %9 = getelementptr inbounds i8, ptr %1, i64 8
  %10 = load ptr, ptr %9, align 8, !tbaa !5
  %11 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %10)
          to label %12 unwind label %217

12:                                               ; preds = %8
  call void @llvm.lifetime.start.p0(i64 768, ptr nonnull %4) #10
  invoke void @_ZN4Data19MemorySpecificationC1Ev(ptr noundef nonnull align 8 dereferenceable(736) %4)
          to label %13 unwind label %219

13:                                               ; preds = %12
  call void @llvm.lifetime.start.p0(i64 3152, ptr nonnull %5) #10
  invoke void @_ZN12libDRAMPowerC1ERKN4Data19MemorySpecificationEb(ptr noundef nonnull align 8 dereferenceable(3152) %5, ptr noundef nonnull align 8 dereferenceable(736) %4, i1 noundef zeroext false)
          to label %14 unwind label %221

14:                                               ; preds = %13
  %15 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !9
  %16 = getelementptr i8, ptr %15, i64 -24
  %17 = load i64, ptr %16, align 8
  %18 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %17
  %19 = call noundef i32 @_ZNKSt8ios_base5flagsEv(ptr noundef nonnull align 8 dereferenceable(216) %18)
  %20 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !9
  %21 = getelementptr i8, ptr %20, i64 -24
  %22 = load i64, ptr %21, align 8
  %23 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %22
  %24 = call noundef i64 @_ZNKSt8ios_base9precisionEv(ptr noundef nonnull align 8 dereferenceable(216) %23)
  %25 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !9
  %26 = getelementptr i8, ptr %25, i64 -24
  %27 = load i64, ptr %26, align 8
  %28 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %27
  %29 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %28, i64 noundef 2)
  %30 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt5fixedRSt8ios_base)
          to label %31 unwind label %223

31:                                               ; preds = %14
  %32 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %33 unwind label %223

33:                                               ; preds = %31
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 0, i64 noundef 35)
          to label %34 unwind label %223

34:                                               ; preds = %33
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 7, i32 noundef 0, i64 noundef 50)
          to label %35 unwind label %223

35:                                               ; preds = %34
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 4, i64 noundef 51)
          to label %36 unwind label %223

36:                                               ; preds = %35
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 7, i32 noundef 4, i64 noundef 66)
          to label %37 unwind label %223

37:                                               ; preds = %36
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 0, i64 noundef 86)
          to label %38 unwind label %223

38:                                               ; preds = %37
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 7, i32 noundef 0, i64 noundef 101)
          to label %39 unwind label %223

39:                                               ; preds = %38
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 2, i64 noundef 102)
          to label %40 unwind label %223

40:                                               ; preds = %39
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 7, i32 noundef 2, i64 noundef 117)
          to label %41 unwind label %223

41:                                               ; preds = %40
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 5, i64 noundef 119)
          to label %42 unwind label %223

42:                                               ; preds = %41
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 7, i32 noundef 5, i64 noundef 134)
          to label %43 unwind label %223

43:                                               ; preds = %42
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 0, i64 noundef 137)
          to label %44 unwind label %223

44:                                               ; preds = %43
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 7, i32 noundef 0, i64 noundef 152)
          to label %45 unwind label %223

45:                                               ; preds = %44
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 3, i64 noundef 159)
          to label %46 unwind label %223

46:                                               ; preds = %45
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 7, i32 noundef 3, i64 noundef 174)
          to label %47 unwind label %223

47:                                               ; preds = %46
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 0, i64 noundef 195)
          to label %48 unwind label %223

48:                                               ; preds = %47
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 7, i32 noundef 0, i64 noundef 210)
          to label %49 unwind label %223

49:                                               ; preds = %48
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 4, i64 noundef 232)
          to label %50 unwind label %223

50:                                               ; preds = %49
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 8, i32 noundef 4, i64 noundef 247)
          to label %51 unwind label %223

51:                                               ; preds = %50
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 10, i32 noundef 3, i64 noundef 265)
          to label %52 unwind label %223

52:                                               ; preds = %51
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 14, i32 noundef 3, i64 noundef 300)
          to label %53 unwind label %223

53:                                               ; preds = %52
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 0, i64 noundef 350)
          to label %54 unwind label %223

54:                                               ; preds = %53
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 9, i32 noundef 0, i64 noundef 400)
          to label %55 unwind label %223

55:                                               ; preds = %54
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 9, i32 noundef 0, i64 noundef 450)
          to label %56 unwind label %223

56:                                               ; preds = %55
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 0, i64 noundef 500)
          to label %57 unwind label %223

57:                                               ; preds = %56
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 0, i32 noundef 0, i64 noundef 550)
          to label %58 unwind label %223

58:                                               ; preds = %57
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 3, i32 noundef 0, i64 noundef 600)
          to label %59 unwind label %223

59:                                               ; preds = %58
  invoke void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152) %5, i32 noundef 3, i32 noundef 0, i64 noundef 650)
          to label %60 unwind label %223

60:                                               ; preds = %59
  invoke void @_ZN12libDRAMPower10calcEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %5)
          to label %61 unwind label %223

61:                                               ; preds = %60
  %62 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.2)
          to label %63 unwind label %223

63:                                               ; preds = %61
  %64 = getelementptr inbounds i8, ptr %5, i64 792
  %65 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #10
  %66 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #10
  %67 = call noundef i32 @_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiET0_T_S8_S7_(ptr %65, ptr %66, i32 noundef 0)
  %68 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %62, i32 noundef %67)
          to label %69 unwind label %223

69:                                               ; preds = %63
  %70 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %71 unwind label %223

71:                                               ; preds = %69
  %72 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.3)
          to label %73 unwind label %223

73:                                               ; preds = %71
  %74 = getelementptr inbounds i8, ptr %5, i64 840
  %75 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #10
  %76 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #10
  %77 = call noundef i32 @_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiET0_T_S8_S7_(ptr %75, ptr %76, i32 noundef 0)
  %78 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %72, i32 noundef %77)
          to label %79 unwind label %223

79:                                               ; preds = %73
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %81 unwind label %223

81:                                               ; preds = %79
  %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.4)
          to label %83 unwind label %223

83:                                               ; preds = %81
  %84 = getelementptr inbounds i8, ptr %5, i64 816
  %85 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %84) #10
  %86 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %84) #10
  %87 = call noundef i32 @_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiET0_T_S8_S7_(ptr %85, ptr %86, i32 noundef 0)
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %82, i32 noundef %87)
          to label %89 unwind label %223

89:                                               ; preds = %83
  %90 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %91 unwind label %223

91:                                               ; preds = %89
  %92 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.5)
          to label %93 unwind label %223

93:                                               ; preds = %91
  %94 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %5)
          to label %95 unwind label %223

95:                                               ; preds = %93
  %96 = load double, ptr %94, align 8, !tbaa !11
  %97 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %92, double noundef %96)
          to label %98 unwind label %223

98:                                               ; preds = %95
  %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull @.str.6)
          to label %100 unwind label %223

100:                                              ; preds = %98
  %101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %102 unwind label %223

102:                                              ; preds = %100
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.7)
          to label %104 unwind label %223

104:                                              ; preds = %102
  %105 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %5)
          to label %106 unwind label %223

106:                                              ; preds = %104
  %107 = getelementptr inbounds i8, ptr %105, i64 32
  %108 = load double, ptr %107, align 8, !tbaa !18
  %109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %103, double noundef %108)
          to label %110 unwind label %223

110:                                              ; preds = %106
  %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull @.str.6)
          to label %112 unwind label %223

112:                                              ; preds = %110
  %113 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %114 unwind label %223

114:                                              ; preds = %112
  %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.8)
          to label %116 unwind label %223

116:                                              ; preds = %114
  %117 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %5)
          to label %118 unwind label %223

118:                                              ; preds = %116
  %119 = getelementptr inbounds i8, ptr %117, i64 64
  %120 = load double, ptr %119, align 8, !tbaa !19
  %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %115, double noundef %120)
          to label %122 unwind label %223

122:                                              ; preds = %118
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull @.str.6)
          to label %124 unwind label %223

124:                                              ; preds = %122
  %125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %126 unwind label %223

126:                                              ; preds = %124
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.9)
          to label %128 unwind label %223

128:                                              ; preds = %126
  %129 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %5)
          to label %130 unwind label %223

130:                                              ; preds = %128
  %131 = getelementptr inbounds i8, ptr %129, i64 96
  %132 = load double, ptr %131, align 8, !tbaa !20
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %127, double noundef %132)
          to label %134 unwind label %223

134:                                              ; preds = %130
  %135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull @.str.6)
          to label %136 unwind label %223

136:                                              ; preds = %134
  %137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %138 unwind label %223

138:                                              ; preds = %136
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %140 unwind label %223

140:                                              ; preds = %138
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.10)
          to label %142 unwind label %223

142:                                              ; preds = %140
  %143 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %5)
          to label %144 unwind label %223

144:                                              ; preds = %142
  %145 = getelementptr inbounds i8, ptr %143, i64 184
  %146 = load double, ptr %145, align 8, !tbaa !21
  %147 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %141, double noundef %146)
          to label %148 unwind label %223

148:                                              ; preds = %144
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull @.str.6)
          to label %150 unwind label %223

150:                                              ; preds = %148
  %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %152 unwind label %223

152:                                              ; preds = %150
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.11)
          to label %154 unwind label %223

154:                                              ; preds = %152
  %155 = getelementptr inbounds i8, ptr %4, i64 72
  %156 = load i64, ptr %155, align 8, !tbaa !22
  %157 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %5)
          to label %158 unwind label %223

158:                                              ; preds = %154
  %159 = sitofp i64 %156 to double
  %160 = getelementptr inbounds i8, ptr %157, i64 184
  %161 = load double, ptr %160, align 8, !tbaa !21
  %162 = fmul double %161, %159
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %153, double noundef %162)
          to label %164 unwind label %223

164:                                              ; preds = %158
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef nonnull @.str.6)
          to label %166 unwind label %223

166:                                              ; preds = %164
  %167 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %168 unwind label %223

168:                                              ; preds = %166
  %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.12)
          to label %170 unwind label %223

170:                                              ; preds = %168
  %171 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %5)
          to label %172 unwind label %223

172:                                              ; preds = %170
  %173 = getelementptr inbounds i8, ptr %171, i64 216
  %174 = load double, ptr %173, align 8, !tbaa !33
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %169, double noundef %174)
          to label %176 unwind label %223

176:                                              ; preds = %172
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %175, ptr noundef nonnull @.str.6)
          to label %178 unwind label %223

178:                                              ; preds = %176
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %177, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %180 unwind label %223

180:                                              ; preds = %178
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %182 unwind label %223

182:                                              ; preds = %180
  %183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.13)
          to label %184 unwind label %223

184:                                              ; preds = %182
  %185 = invoke noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152) %5)
          to label %186 unwind label %223

186:                                              ; preds = %184
  %187 = getelementptr inbounds i8, ptr %185, i64 312
  %188 = load double, ptr %187, align 8, !tbaa !34
  %189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %183, double noundef %188)
          to label %190 unwind label %223

190:                                              ; preds = %186
  %191 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull @.str.6)
          to label %192 unwind label %223

192:                                              ; preds = %190
  %193 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %191, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %194 unwind label %223

194:                                              ; preds = %192
  %195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.14)
          to label %196 unwind label %223

196:                                              ; preds = %194
  %197 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK12libDRAMPower8getPowerEv(ptr noundef nonnull align 8 dereferenceable(3152) %5)
          to label %198 unwind label %223

198:                                              ; preds = %196
  %199 = getelementptr inbounds i8, ptr %197, i64 32
  %200 = load double, ptr %199, align 8, !tbaa !35
  %201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %195, double noundef %200)
          to label %202 unwind label %223

202:                                              ; preds = %198
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull @.str.15)
          to label %204 unwind label %223

204:                                              ; preds = %202
  %205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %203, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %206 unwind label %223

206:                                              ; preds = %204
  %207 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !9
  %208 = getelementptr i8, ptr %207, i64 -24
  %209 = load i64, ptr %208, align 8
  %210 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %209
  %211 = call noundef i32 @_ZNSt8ios_base5flagsESt13_Ios_Fmtflags(ptr noundef nonnull align 8 dereferenceable(216) %210, i32 noundef %19)
  %212 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !9
  %213 = getelementptr i8, ptr %212, i64 -24
  %214 = load i64, ptr %213, align 8
  %215 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %214
  %216 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %215, i64 noundef %24)
  call void @_ZN12libDRAMPowerD1Ev(ptr noundef nonnull align 8 dereferenceable(3152) %5) #10
  call void @llvm.lifetime.end.p0(i64 3152, ptr nonnull %5) #10
  call void @_ZN4Data19MemorySpecificationD1Ev(ptr noundef nonnull align 8 dereferenceable(736) %4) #10
  call void @llvm.lifetime.end.p0(i64 768, ptr nonnull %4) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #10
  ret i32 0

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

219:                                              ; preds = %12
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %226

221:                                              ; preds = %13
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %225

223:                                              ; preds = %204, %202, %198, %196, %194, %192, %190, %186, %184, %182, %180, %178, %176, %172, %170, %168, %166, %164, %158, %154, %152, %150, %148, %144, %142, %140, %138, %136, %134, %130, %128, %126, %124, %122, %118, %116, %114, %112, %110, %106, %104, %102, %100, %98, %95, %93, %91, %89, %83, %81, %79, %73, %71, %69, %63, %61, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %31, %14
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN12libDRAMPowerD1Ev(ptr noundef nonnull align 8 dereferenceable(3152) %5) #10
  br label %225

225:                                              ; preds = %223, %221
  %.pn = phi { ptr, i32 } [ %224, %223 ], [ %222, %221 ]
  call void @llvm.lifetime.end.p0(i64 3152, ptr nonnull %5) #10
  call void @_ZN4Data19MemorySpecificationD1Ev(ptr noundef nonnull align 8 dereferenceable(736) %4) #10
  br label %226

226:                                              ; preds = %225, %219
  %.pn.pn = phi { ptr, i32 } [ %.pn, %225 ], [ %220, %219 ]
  call void @llvm.lifetime.end.p0(i64 768, ptr nonnull %4) #10
  br label %227

227:                                              ; preds = %226, %217
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %226 ], [ %218, %217 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #10
  resume { ptr, i32 } %.pn.pn.pn
}

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4Data19MemorySpecificationC1Ev(ptr noundef nonnull align 8 dereferenceable(736)) unnamed_addr #5 align 2

declare void @_ZN12libDRAMPowerC1ERKN4Data19MemorySpecificationEb(ptr noundef nonnull align 8 dereferenceable(3152), ptr noundef nonnull align 8 dereferenceable(736), i1 noundef zeroext) unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNKSt8ios_base5flagsEv(ptr noundef nonnull align 8 dereferenceable(216)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt5fixedRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #5

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

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

declare void @_ZN12libDRAMPower9doCommandEN4Data10MemCommand4cmdsEil(ptr noundef nonnull align 8 dereferenceable(3152), i32 noundef, i32 noundef, i64 noundef) local_unnamed_addr #6

declare void @_ZN12libDRAMPower10calcEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152)) local_unnamed_addr #6

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiET0_T_S8_S7_(ptr, ptr, i32 noundef) local_unnamed_addr #7

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

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

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

declare noundef nonnull align 8 dereferenceable(848) ptr @_ZNK12libDRAMPower9getEnergyEv(ptr noundef nonnull align 8 dereferenceable(3152)) local_unnamed_addr #6

declare noundef nonnull align 8 dereferenceable(48) ptr @_ZNK12libDRAMPower8getPowerEv(ptr noundef nonnull align 8 dereferenceable(3152)) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt8ios_base5flagsESt13_Ios_Fmtflags(ptr noundef nonnull align 8 dereferenceable(216), i32 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: nounwind
declare void @_ZN12libDRAMPowerD1Ev(ptr noundef nonnull align 8 dereferenceable(3152)) unnamed_addr #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4Data19MemorySpecificationD1Ev(ptr noundef nonnull align 8 dereferenceable(736)) unnamed_addr #7 align 2

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

attributes #0 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { noreturn 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { noreturn nounwind }
attributes #10 = { 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 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"_ZTSN4Data16MemoryPowerModel6EnergyE", !13, i64 0, !14, i64 8, !13, i64 32, !14, i64 40, !13, i64 64, !14, i64 72, !13, i64 96, !14, i64 104, !13, i64 128, !14, i64 136, !14, i64 160, !13, i64 184, !14, i64 192, !13, i64 216, !14, i64 224, !13, i64 248, !14, i64 256, !13, i64 280, !14, i64 288, !13, i64 312, !14, i64 320, !13, i64 344, !13, i64 352, !13, i64 360, !14, i64 368, !13, i64 392, !14, i64 400, !13, i64 424, !14, i64 432, !13, i64 456, !14, i64 464, !13, i64 488, !14, i64 496, !13, i64 520, !14, i64 528, !13, i64 552, !14, i64 560, !13, i64 584, !14, i64 592, !13, i64 616, !14, i64 624, !13, i64 648, !14, i64 656, !13, i64 680, !14, i64 688, !13, i64 712, !14, i64 720, !13, i64 744, !14, i64 752, !13, i64 776, !14, i64 784, !13, i64 808, !13, i64 816, !13, i64 824, !13, i64 832, !13, i64 840}
!13 = !{!"double", !7, i64 0}
!14 = !{!"_ZTSSt6vectorIdSaIdEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!12, !13, i64 32}
!19 = !{!12, !13, i64 64}
!20 = !{!12, !13, i64 96}
!21 = !{!12, !13, i64 184}
!22 = !{!23, !26, i64 72}
!23 = !{!"_ZTSN4Data19MemorySpecificationE", !24, i64 8, !27, i64 40, !29, i64 48, !31, i64 160, !32, i64 456}
!24 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !25, i64 0, !26, i64 8, !7, i64 16}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSN4Data10MemoryTypeE", !28, i64 0}
!28 = !{!"_ZTSN4Data10MemoryType12MemoryType_tE", !7, i64 0}
!29 = !{!"_ZTSN4Data19MemArchitectureSpecE", !26, i64 8, !26, i64 16, !26, i64 24, !26, i64 32, !26, i64 40, !26, i64 48, !26, i64 56, !26, i64 64, !30, i64 72, !30, i64 73, !30, i64 74}
!30 = !{!"bool", !7, i64 0}
!31 = !{!"_ZTSN4Data13MemTimingSpecE", !13, i64 8, !26, i64 16, !26, i64 24, !26, i64 32, !26, i64 40, !26, i64 48, !26, i64 56, !26, i64 64, !26, i64 72, !26, i64 80, !26, i64 88, !26, i64 96, !26, i64 104, !26, i64 112, !26, i64 120, !26, i64 128, !26, i64 136, !26, i64 144, !26, i64 152, !26, i64 160, !26, i64 168, !26, i64 176, !26, i64 184, !26, i64 192, !26, i64 200, !26, i64 208, !26, i64 216, !26, i64 224, !26, i64 232, !26, i64 240, !26, i64 248, !13, i64 256}
!32 = !{!"_ZTSN4Data12MemPowerSpecE", !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !13, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !13, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !13, i64 200, !13, i64 208, !13, i64 216, !13, i64 224, !13, i64 232, !13, i64 240}
!33 = !{!12, !13, i64 216}
!34 = !{!12, !13, i64 312}
!35 = !{!36, !13, i64 32}
!36 = !{!"_ZTSN4Data16MemoryPowerModel5PowerE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40}


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