; LLVM IR from gem5/gem5 :: ext/drampower/src (MemoryPowerModel)

; 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::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::EnergyDomain" = type { double, double }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.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.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::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.3" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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.Data::MemoryPowerModel" = type { i64, i64, %"struct.Data::MemoryPowerModel::Energy", %"struct.Data::MemoryPowerModel::Power" }
%"struct.Data::MemoryPowerModel::Energy" = type { double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, double, double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, %"class.std::vector", double, double, double, double, double }
%"struct.Data::MemoryPowerModel::Power" = type { double, double, double, double, double, double }
%"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.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.18", %"class.std::vector.18", %"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::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.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = 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.Data::MemBankWiseParams" = type <{ %"class.std::vector.23", i64, i64, i8, i8, [6 x i8] }>
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = 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 }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Data16MemoryPowerModel10power_calcERKNS_19MemorySpecificationERKNS_15CommandAnalysisEiRKNS_17MemBankWiseParamsE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull align 8 dereferenceable(736) %1, ptr noundef nonnull align 8 dereferenceable(1392) %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(42) %4) #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i64, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca double, align 8
  %45 = alloca %"class.std::vector.8", align 8
  %46 = alloca ptr, align 8
  %47 = alloca i32, align 4
  %48 = alloca %"class.std::vector.8", align 8
  %49 = alloca %"class.std::vector.8", align 8
  %50 = alloca %"class.std::vector.8", align 8
  %51 = alloca %"class.Data::EnergyDomain", align 8
  %52 = alloca %"class.std::vector.8", align 8
  %53 = alloca %"class.std::vector.8", align 8
  %54 = alloca %"class.std::vector.8", align 8
  %55 = alloca %"class.std::vector.8", align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca i64, align 8
  %63 = alloca i32, align 4
  %64 = alloca %"class.Data::EnergyDomain", align 8
  %65 = alloca %"class.std::vector.8", align 8
  %66 = alloca %"class.std::vector.8", align 8
  %67 = alloca %"class.std::vector.8", align 8
  %68 = alloca %"class.std::vector.8", align 8
  %69 = alloca i32, align 4
  %70 = alloca %"class.std::vector", align 8
  %71 = alloca %"class.std::vector", align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store i32 %3, ptr %9, align 4, !tbaa !9
  store ptr %4, ptr %10, align 8, !tbaa !5
  %72 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  %73 = load ptr, ptr %7, align 8, !tbaa !5
  %74 = getelementptr inbounds %"class.Data::MemorySpecification", ptr %73, i32 0, i32 5
  store ptr %74, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  %76 = getelementptr inbounds %"class.Data::MemorySpecification", ptr %75, i32 0, i32 4
  store ptr %76, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  %77 = load ptr, ptr %7, align 8, !tbaa !5
  %78 = getelementptr inbounds %"class.Data::MemorySpecification", ptr %77, i32 0, i32 6
  store ptr %78, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  %79 = load ptr, ptr %7, align 8, !tbaa !5
  %80 = getelementptr inbounds %"class.Data::MemorySpecification", ptr %79, i32 0, i32 4
  %81 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %80, i32 0, i32 2
  %82 = load i64, ptr %81, align 8, !tbaa !11
  store i64 %82, ptr %14, align 8, !tbaa !23
  %83 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %84 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %83, i32 0, i32 1
  %85 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  store double 0.000000e+00, ptr %15, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %85, ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  %86 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %87 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %86, i32 0, i32 3
  %88 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  store double 0.000000e+00, ptr %16, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %88, ptr noundef nonnull align 8 dereferenceable(8) %16)
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  %89 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %90 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %89, i32 0, i32 5
  %91 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  store double 0.000000e+00, ptr %17, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %91, ptr noundef nonnull align 8 dereferenceable(8) %17)
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  %92 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %93 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %92, i32 0, i32 7
  %94 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  store double 0.000000e+00, ptr %18, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %94, ptr noundef nonnull align 8 dereferenceable(8) %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  %95 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %96 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %95, i32 0, i32 9
  %97 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  store double 0.000000e+00, ptr %19, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %97, ptr noundef nonnull align 8 dereferenceable(8) %19)
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  %98 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %99 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %98, i32 0, i32 10
  %100 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  store double 0.000000e+00, ptr %20, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %99, i64 noundef %100, ptr noundef nonnull align 8 dereferenceable(8) %20)
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  %101 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %102 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %101, i32 0, i32 12
  %103 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  store double 0.000000e+00, ptr %21, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %103, ptr noundef nonnull align 8 dereferenceable(8) %21)
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  %104 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %105 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %104, i32 0, i32 14
  %106 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  store double 0.000000e+00, ptr %22, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %105, i64 noundef %106, ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  %107 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %108 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %107, i32 0, i32 16
  %109 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  store double 0.000000e+00, ptr %23, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %108, i64 noundef %109, ptr noundef nonnull align 8 dereferenceable(8) %23)
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  %110 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %111 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %110, i32 0, i32 18
  %112 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  store double 0.000000e+00, ptr %24, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %111, i64 noundef %112, ptr noundef nonnull align 8 dereferenceable(8) %24)
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  %113 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %114 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %113, i32 0, i32 24
  %115 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  store double 0.000000e+00, ptr %25, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %114, i64 noundef %115, ptr noundef nonnull align 8 dereferenceable(8) %25)
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  %116 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %117 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %116, i32 0, i32 26
  %118 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  store double 0.000000e+00, ptr %26, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %118, ptr noundef nonnull align 8 dereferenceable(8) %26)
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  %119 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %120 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %119, i32 0, i32 28
  %121 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  store double 0.000000e+00, ptr %27, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %121, ptr noundef nonnull align 8 dereferenceable(8) %27)
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  %122 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %123 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %122, i32 0, i32 30
  %124 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  store double 0.000000e+00, ptr %28, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %124, ptr noundef nonnull align 8 dereferenceable(8) %28)
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  %125 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %126 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %125, i32 0, i32 9
  %127 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  store double 0.000000e+00, ptr %29, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %126, i64 noundef %127, ptr noundef nonnull align 8 dereferenceable(8) %29)
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  %128 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %129 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %128, i32 0, i32 32
  %130 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  store double 0.000000e+00, ptr %30, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %130, ptr noundef nonnull align 8 dereferenceable(8) %30)
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  %131 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %132 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %131, i32 0, i32 34
  %133 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  store double 0.000000e+00, ptr %31, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %132, i64 noundef %133, ptr noundef nonnull align 8 dereferenceable(8) %31)
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  %134 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %135 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %134, i32 0, i32 36
  %136 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  store double 0.000000e+00, ptr %32, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %135, i64 noundef %136, ptr noundef nonnull align 8 dereferenceable(8) %32)
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  %137 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %138 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %137, i32 0, i32 38
  %139 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  store double 0.000000e+00, ptr %33, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %139, ptr noundef nonnull align 8 dereferenceable(8) %33)
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  %140 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %141 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %140, i32 0, i32 40
  %142 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  store double 0.000000e+00, ptr %34, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %141, i64 noundef %142, ptr noundef nonnull align 8 dereferenceable(8) %34)
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  %143 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %144 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %143, i32 0, i32 42
  %145 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  store double 0.000000e+00, ptr %35, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %145, ptr noundef nonnull align 8 dereferenceable(8) %35)
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  %146 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %147 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %146, i32 0, i32 44
  %148 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  store double 0.000000e+00, ptr %36, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %147, i64 noundef %148, ptr noundef nonnull align 8 dereferenceable(8) %36)
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  %149 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %150 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %149, i32 0, i32 46
  %151 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  store double 0.000000e+00, ptr %37, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %151, ptr noundef nonnull align 8 dereferenceable(8) %37)
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  %152 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %153 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %152, i32 0, i32 48
  %154 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  store double 0.000000e+00, ptr %38, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %154, ptr noundef nonnull align 8 dereferenceable(8) %38)
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  %155 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %156 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %155, i32 0, i32 50
  %157 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  store double 0.000000e+00, ptr %39, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %157, ptr noundef nonnull align 8 dereferenceable(8) %39)
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  %158 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %159 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %158, i32 0, i32 20
  %160 = load i64, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  store double 0.000000e+00, ptr %40, align 8, !tbaa !24
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %159, i64 noundef %160, ptr noundef nonnull align 8 dereferenceable(8) %40)
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  %161 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %162 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %161, i32 0, i32 0
  store double 0.000000e+00, ptr %162, align 8, !tbaa !25
  %163 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %164 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %163, i32 0, i32 2
  store double 0.000000e+00, ptr %164, align 8, !tbaa !33
  %165 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %166 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %165, i32 0, i32 4
  store double 0.000000e+00, ptr %166, align 8, !tbaa !34
  %167 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %168 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %167, i32 0, i32 6
  store double 0.000000e+00, ptr %168, align 8, !tbaa !35
  %169 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %170 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %169, i32 0, i32 8
  store double 0.000000e+00, ptr %170, align 8, !tbaa !36
  %171 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %172 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %171, i32 0, i32 11
  store double 0.000000e+00, ptr %172, align 8, !tbaa !37
  %173 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %174 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %173, i32 0, i32 13
  store double 0.000000e+00, ptr %174, align 8, !tbaa !38
  %175 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %176 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %175, i32 0, i32 15
  store double 0.000000e+00, ptr %176, align 8, !tbaa !39
  %177 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %178 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %177, i32 0, i32 17
  store double 0.000000e+00, ptr %178, align 8, !tbaa !40
  %179 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %180 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %179, i32 0, i32 21
  store double 0.000000e+00, ptr %180, align 8, !tbaa !41
  %181 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %182 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %181, i32 0, i32 23
  store double 0.000000e+00, ptr %182, align 8, !tbaa !42
  %183 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %184 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %183, i32 0, i32 25
  store double 0.000000e+00, ptr %184, align 8, !tbaa !43
  %185 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %186 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %185, i32 0, i32 27
  store double 0.000000e+00, ptr %186, align 8, !tbaa !44
  %187 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %188 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %187, i32 0, i32 29
  store double 0.000000e+00, ptr %188, align 8, !tbaa !45
  %189 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %190 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %189, i32 0, i32 31
  store double 0.000000e+00, ptr %190, align 8, !tbaa !46
  %191 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %192 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %191, i32 0, i32 33
  store double 0.000000e+00, ptr %192, align 8, !tbaa !47
  %193 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %194 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %193, i32 0, i32 35
  store double 0.000000e+00, ptr %194, align 8, !tbaa !48
  %195 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %196 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %195, i32 0, i32 37
  store double 0.000000e+00, ptr %196, align 8, !tbaa !49
  %197 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %198 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %197, i32 0, i32 39
  store double 0.000000e+00, ptr %198, align 8, !tbaa !50
  %199 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %200 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %199, i32 0, i32 41
  store double 0.000000e+00, ptr %200, align 8, !tbaa !51
  %201 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %202 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %201, i32 0, i32 43
  store double 0.000000e+00, ptr %202, align 8, !tbaa !52
  %203 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %204 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %203, i32 0, i32 45
  store double 0.000000e+00, ptr %204, align 8, !tbaa !53
  %205 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %206 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %205, i32 0, i32 47
  store double 0.000000e+00, ptr %206, align 8, !tbaa !54
  %207 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %208 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %207, i32 0, i32 49
  store double 0.000000e+00, ptr %208, align 8, !tbaa !55
  %209 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 3
  %210 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %209, i32 0, i32 0
  store double 0.000000e+00, ptr %210, align 8, !tbaa !56
  %211 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 3
  %212 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %211, i32 0, i32 1
  store double 0.000000e+00, ptr %212, align 8, !tbaa !57
  %213 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 3
  %214 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %213, i32 0, i32 2
  store double 0.000000e+00, ptr %214, align 8, !tbaa !58
  %215 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 3
  %216 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %215, i32 0, i32 3
  store double 0.000000e+00, ptr %216, align 8, !tbaa !59
  %217 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %218 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %217, i32 0, i32 51
  store double 0.000000e+00, ptr %218, align 8, !tbaa !60
  %219 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %220 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %219, i32 0, i32 52
  store double 0.000000e+00, ptr %220, align 8, !tbaa !61
  %221 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %222 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %221, i32 0, i32 53
  store double 0.000000e+00, ptr %222, align 8, !tbaa !62
  %223 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %224 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %223, i32 0, i32 54
  store double 0.000000e+00, ptr %224, align 8, !tbaa !63
  %225 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %226 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %225, i32 0, i32 55
  store double 0.000000e+00, ptr %226, align 8, !tbaa !64
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  %227 = load ptr, ptr %12, align 8, !tbaa !5
  %228 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %227, i32 0, i32 1
  %229 = load i64, ptr %228, align 8, !tbaa !65
  %230 = load ptr, ptr %12, align 8, !tbaa !5
  %231 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %230, i32 0, i32 4
  %232 = load i64, ptr %231, align 8, !tbaa !66
  %233 = sdiv i64 %229, %232
  store i64 %233, ptr %41, align 8, !tbaa !23
  %234 = load i32, ptr %9, align 4, !tbaa !9
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %236, label %375

236:                                              ; preds = %5
  %237 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN4Data16MemoryPowerModel13io_term_powerERKNS_19MemorySpecificationE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef nonnull align 8 dereferenceable(736) %237)
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  %238 = load ptr, ptr %12, align 8, !tbaa !5
  %239 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %238, i32 0, i32 7
  %240 = load i64, ptr %239, align 8, !tbaa !67
  %241 = load ptr, ptr %12, align 8, !tbaa !5
  %242 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %241, i32 0, i32 7
  %243 = load i64, ptr %242, align 8, !tbaa !67
  %244 = sdiv i64 %243, 8
  %245 = add nsw i64 %240, %244
  store i64 %245, ptr %42, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  %246 = load ptr, ptr %12, align 8, !tbaa !5
  %247 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %246, i32 0, i32 7
  %248 = load i64, ptr %247, align 8, !tbaa !67
  %249 = load ptr, ptr %12, align 8, !tbaa !5
  %250 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %249, i32 0, i32 7
  %251 = load i64, ptr %250, align 8, !tbaa !67
  %252 = sdiv i64 %251, 8
  %253 = add nsw i64 %248, %252
  %254 = load ptr, ptr %12, align 8, !tbaa !5
  %255 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %254, i32 0, i32 7
  %256 = load i64, ptr %255, align 8, !tbaa !67
  %257 = sdiv i64 %256, 8
  %258 = add nsw i64 %253, %257
  store i64 %258, ptr %43, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  %259 = load ptr, ptr %11, align 8, !tbaa !5
  %260 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %259, i32 0, i32 32
  %261 = load double, ptr %260, align 8, !tbaa !68
  %262 = load ptr, ptr %12, align 8, !tbaa !5
  %263 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %262, i32 0, i32 4
  %264 = load i64, ptr %263, align 8, !tbaa !66
  %265 = sitofp i64 %264 to double
  %266 = fdiv double %261, %265
  store double %266, ptr %44, align 8, !tbaa !24
  %267 = load ptr, ptr %8, align 8, !tbaa !5
  %268 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %267, i32 0, i32 2
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 8 dereferenceable(24) %268)
  %269 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %45)
          to label %270 unwind label %340

270:                                              ; preds = %236
  %271 = load ptr, ptr %12, align 8, !tbaa !5
  %272 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %271, i32 0, i32 1
  %273 = load i64, ptr %272, align 8, !tbaa !65
  %274 = mul nsw i64 %269, %273
  %275 = load double, ptr %44, align 8, !tbaa !24
  %276 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 3
  %277 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %276, i32 0, i32 0
  %278 = load double, ptr %277, align 8, !tbaa !56
  %279 = load i64, ptr %42, align 8, !tbaa !23
  %280 = invoke noundef double @_ZNK4Data16MemoryPowerModel16calcIoTermEnergyElddl(ptr noundef nonnull align 8 dereferenceable(912) %72, i64 noundef %274, double noundef %275, double noundef %278, i64 noundef %279)
          to label %281 unwind label %340

281:                                              ; preds = %270
  %282 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %283 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %282, i32 0, i32 51
  store double %280, ptr %283, align 8, !tbaa !60
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #4
  %284 = load ptr, ptr %8, align 8, !tbaa !5
  %285 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %284, i32 0, i32 3
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr noundef nonnull align 8 dereferenceable(24) %285)
  %286 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %48)
          to label %287 unwind label %344

287:                                              ; preds = %281
  %288 = load ptr, ptr %12, align 8, !tbaa !5
  %289 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %288, i32 0, i32 1
  %290 = load i64, ptr %289, align 8, !tbaa !65
  %291 = mul nsw i64 %286, %290
  %292 = load double, ptr %44, align 8, !tbaa !24
  %293 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 3
  %294 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %293, i32 0, i32 1
  %295 = load double, ptr %294, align 8, !tbaa !57
  %296 = load i64, ptr %43, align 8, !tbaa !23
  %297 = invoke noundef double @_ZNK4Data16MemoryPowerModel16calcIoTermEnergyElddl(ptr noundef nonnull align 8 dereferenceable(912) %72, i64 noundef %291, double noundef %292, double noundef %295, i64 noundef %296)
          to label %298 unwind label %344

298:                                              ; preds = %287
  %299 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %300 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %299, i32 0, i32 52
  store double %297, ptr %300, align 8, !tbaa !61
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #4
  %301 = load ptr, ptr %12, align 8, !tbaa !5
  %302 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %301, i32 0, i32 3
  %303 = load i64, ptr %302, align 8, !tbaa !69
  %304 = icmp sgt i64 %303, 1
  br i1 %304, label %305, label %356

305:                                              ; preds = %298
  %306 = load ptr, ptr %8, align 8, !tbaa !5
  %307 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %306, i32 0, i32 2
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 8 dereferenceable(24) %307)
  %308 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %49)
          to label %309 unwind label %348

309:                                              ; preds = %305
  %310 = load ptr, ptr %12, align 8, !tbaa !5
  %311 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %310, i32 0, i32 1
  %312 = load i64, ptr %311, align 8, !tbaa !65
  %313 = mul nsw i64 %308, %312
  %314 = load double, ptr %44, align 8, !tbaa !24
  %315 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 3
  %316 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %315, i32 0, i32 2
  %317 = load double, ptr %316, align 8, !tbaa !58
  %318 = load i64, ptr %42, align 8, !tbaa !23
  %319 = invoke noundef double @_ZNK4Data16MemoryPowerModel16calcIoTermEnergyElddl(ptr noundef nonnull align 8 dereferenceable(912) %72, i64 noundef %313, double noundef %314, double noundef %317, i64 noundef %318)
          to label %320 unwind label %348

320:                                              ; preds = %309
  %321 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %322 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %321, i32 0, i32 53
  store double %319, ptr %322, align 8, !tbaa !62
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #4
  %323 = load ptr, ptr %8, align 8, !tbaa !5
  %324 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %323, i32 0, i32 3
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 8 dereferenceable(24) %324)
  %325 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %50)
          to label %326 unwind label %352

326:                                              ; preds = %320
  %327 = load ptr, ptr %12, align 8, !tbaa !5
  %328 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %327, i32 0, i32 1
  %329 = load i64, ptr %328, align 8, !tbaa !65
  %330 = mul nsw i64 %325, %329
  %331 = load double, ptr %44, align 8, !tbaa !24
  %332 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 3
  %333 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %332, i32 0, i32 3
  %334 = load double, ptr %333, align 8, !tbaa !59
  %335 = load i64, ptr %43, align 8, !tbaa !23
  %336 = invoke noundef double @_ZNK4Data16MemoryPowerModel16calcIoTermEnergyElddl(ptr noundef nonnull align 8 dereferenceable(912) %72, i64 noundef %330, double noundef %331, double noundef %334, i64 noundef %335)
          to label %337 unwind label %352

337:                                              ; preds = %326
  %338 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %339 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %338, i32 0, i32 54
  store double %336, ptr %339, align 8, !tbaa !63
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #4
  br label %356

340:                                              ; preds = %270, %236
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %46, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #4
  br label %374

344:                                              ; preds = %287, %281
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %46, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #4
  br label %374

348:                                              ; preds = %309, %305
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %46, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #4
  br label %374

352:                                              ; preds = %326, %320
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %46, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #4
  br label %374

356:                                              ; preds = %337, %298
  %357 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %358 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %357, i32 0, i32 51
  %359 = load double, ptr %358, align 8, !tbaa !60
  %360 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %361 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %360, i32 0, i32 52
  %362 = load double, ptr %361, align 8, !tbaa !61
  %363 = fadd double %359, %362
  %364 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %365 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %364, i32 0, i32 53
  %366 = load double, ptr %365, align 8, !tbaa !62
  %367 = fadd double %363, %366
  %368 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %369 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %368, i32 0, i32 54
  %370 = load double, ptr %369, align 8, !tbaa !63
  %371 = fadd double %367, %370
  %372 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %373 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %372, i32 0, i32 55
  store double %371, ptr %373, align 8, !tbaa !64
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  br label %375

374:                                              ; preds = %352, %348, %344, %340
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  br label %1834

375:                                              ; preds = %356, %5
  %376 = load ptr, ptr %8, align 8, !tbaa !5
  %377 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %376, i32 0, i32 7
  %378 = load i64, ptr %377, align 8, !tbaa !70
  %379 = load ptr, ptr %8, align 8, !tbaa !5
  %380 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %379, i32 0, i32 6
  %381 = load i64, ptr %380, align 8, !tbaa !84
  %382 = add nsw i64 %378, %381
  %383 = load ptr, ptr %8, align 8, !tbaa !5
  %384 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %383, i32 0, i32 16
  %385 = load i64, ptr %384, align 8, !tbaa !85
  %386 = add nsw i64 %382, %385
  %387 = load ptr, ptr %8, align 8, !tbaa !5
  %388 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %387, i32 0, i32 18
  %389 = load i64, ptr %388, align 8, !tbaa !86
  %390 = add nsw i64 %386, %389
  %391 = load ptr, ptr %8, align 8, !tbaa !5
  %392 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %391, i32 0, i32 17
  %393 = load i64, ptr %392, align 8, !tbaa !87
  %394 = add nsw i64 %390, %393
  %395 = load ptr, ptr %8, align 8, !tbaa !5
  %396 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %395, i32 0, i32 19
  %397 = load i64, ptr %396, align 8, !tbaa !88
  %398 = add nsw i64 %394, %397
  %399 = load ptr, ptr %8, align 8, !tbaa !5
  %400 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %399, i32 0, i32 20
  %401 = load i64, ptr %400, align 8, !tbaa !89
  %402 = add nsw i64 %398, %401
  %403 = load ptr, ptr %8, align 8, !tbaa !5
  %404 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %403, i32 0, i32 24
  %405 = load i64, ptr %404, align 8, !tbaa !90
  %406 = add nsw i64 %402, %405
  %407 = load ptr, ptr %8, align 8, !tbaa !5
  %408 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %407, i32 0, i32 26
  %409 = load i64, ptr %408, align 8, !tbaa !91
  %410 = add nsw i64 %406, %409
  %411 = load ptr, ptr %8, align 8, !tbaa !5
  %412 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %411, i32 0, i32 28
  %413 = load i64, ptr %412, align 8, !tbaa !92
  %414 = add nsw i64 %410, %413
  %415 = load ptr, ptr %8, align 8, !tbaa !5
  %416 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %415, i32 0, i32 29
  %417 = load i64, ptr %416, align 8, !tbaa !93
  %418 = add nsw i64 %414, %417
  %419 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 1
  store i64 %418, ptr %419, align 8, !tbaa !94
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #4
  %420 = load ptr, ptr %13, align 8, !tbaa !5
  %421 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %420, i32 0, i32 24
  %422 = load double, ptr %421, align 8, !tbaa !95
  %423 = load ptr, ptr %11, align 8, !tbaa !5
  %424 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %423, i32 0, i32 32
  %425 = load double, ptr %424, align 8, !tbaa !68
  call void @_ZN4Data12EnergyDomainC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %51, double noundef %422, double noundef %425)
  %426 = load ptr, ptr %8, align 8, !tbaa !5
  %427 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %426, i32 0, i32 0
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %52, ptr noundef nonnull align 8 dereferenceable(24) %427)
  %428 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %52)
          to label %429 unwind label %623

429:                                              ; preds = %375
  %430 = load ptr, ptr %11, align 8, !tbaa !5
  %431 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %430, i32 0, i32 20
  %432 = load i64, ptr %431, align 8, !tbaa !96
  %433 = mul nsw i64 %428, %432
  %434 = load ptr, ptr %13, align 8, !tbaa !5
  %435 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %434, i32 0, i32 1
  %436 = load double, ptr %435, align 8, !tbaa !97
  %437 = load ptr, ptr %13, align 8, !tbaa !5
  %438 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %437, i32 0, i32 13
  %439 = load double, ptr %438, align 8, !tbaa !98
  %440 = fsub double %436, %439
  %441 = invoke noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %433, double noundef %440)
          to label %442 unwind label %623

442:                                              ; preds = %429
  %443 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %444 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %443, i32 0, i32 0
  store double %441, ptr %444, align 8, !tbaa !25
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #4
  %445 = load ptr, ptr %8, align 8, !tbaa !5
  %446 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %445, i32 0, i32 1
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(24) %446)
  %447 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %53)
          to label %448 unwind label %627

448:                                              ; preds = %442
  %449 = load ptr, ptr %11, align 8, !tbaa !5
  %450 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %449, i32 0, i32 2
  %451 = load i64, ptr %450, align 8, !tbaa !99
  %452 = load ptr, ptr %11, align 8, !tbaa !5
  %453 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %452, i32 0, i32 20
  %454 = load i64, ptr %453, align 8, !tbaa !96
  %455 = sub nsw i64 %451, %454
  %456 = mul nsw i64 %447, %455
  %457 = load ptr, ptr %13, align 8, !tbaa !5
  %458 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %457, i32 0, i32 1
  %459 = load double, ptr %458, align 8, !tbaa !97
  %460 = load ptr, ptr %13, align 8, !tbaa !5
  %461 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %460, i32 0, i32 7
  %462 = load double, ptr %461, align 8, !tbaa !100
  %463 = fsub double %459, %462
  %464 = invoke noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %456, double noundef %463)
          to label %465 unwind label %627

465:                                              ; preds = %448
  %466 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %467 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %466, i32 0, i32 2
  store double %464, ptr %467, align 8, !tbaa !33
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #4
  %468 = load ptr, ptr %8, align 8, !tbaa !5
  %469 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %468, i32 0, i32 2
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(24) %469)
  %470 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %54)
          to label %471 unwind label %631

471:                                              ; preds = %465
  %472 = load i64, ptr %41, align 8, !tbaa !23
  %473 = mul nsw i64 %470, %472
  %474 = load ptr, ptr %13, align 8, !tbaa !5
  %475 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %474, i32 0, i32 15
  %476 = load double, ptr %475, align 8, !tbaa !101
  %477 = load ptr, ptr %13, align 8, !tbaa !5
  %478 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %477, i32 0, i32 13
  %479 = load double, ptr %478, align 8, !tbaa !98
  %480 = fsub double %476, %479
  %481 = invoke noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %473, double noundef %480)
          to label %482 unwind label %631

482:                                              ; preds = %471
  %483 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %484 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %483, i32 0, i32 4
  store double %481, ptr %484, align 8, !tbaa !34
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #4
  %485 = load ptr, ptr %8, align 8, !tbaa !5
  %486 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %485, i32 0, i32 3
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %55, ptr noundef nonnull align 8 dereferenceable(24) %486)
  %487 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %55)
          to label %488 unwind label %635

488:                                              ; preds = %482
  %489 = load i64, ptr %41, align 8, !tbaa !23
  %490 = mul nsw i64 %487, %489
  %491 = load ptr, ptr %13, align 8, !tbaa !5
  %492 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %491, i32 0, i32 17
  %493 = load double, ptr %492, align 8, !tbaa !102
  %494 = load ptr, ptr %13, align 8, !tbaa !5
  %495 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %494, i32 0, i32 13
  %496 = load double, ptr %495, align 8, !tbaa !98
  %497 = fsub double %493, %496
  %498 = invoke noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %490, double noundef %497)
          to label %499 unwind label %635

499:                                              ; preds = %488
  %500 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %501 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %500, i32 0, i32 6
  store double %498, ptr %501, align 8, !tbaa !35
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #4
  %502 = load ptr, ptr %8, align 8, !tbaa !5
  %503 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %502, i32 0, i32 4
  %504 = load i64, ptr %503, align 8, !tbaa !103
  %505 = load ptr, ptr %11, align 8, !tbaa !5
  %506 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %505, i32 0, i32 18
  %507 = load i64, ptr %506, align 8, !tbaa !104
  %508 = mul nsw i64 %504, %507
  %509 = load ptr, ptr %13, align 8, !tbaa !5
  %510 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %509, i32 0, i32 19
  %511 = load double, ptr %510, align 8, !tbaa !105
  %512 = load ptr, ptr %13, align 8, !tbaa !5
  %513 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %512, i32 0, i32 13
  %514 = load double, ptr %513, align 8, !tbaa !98
  %515 = fsub double %511, %514
  %516 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %508, double noundef %515)
  %517 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %518 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %517, i32 0, i32 8
  store double %516, ptr %518, align 8, !tbaa !36
  %519 = load ptr, ptr %8, align 8, !tbaa !5
  %520 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %519, i32 0, i32 6
  %521 = load i64, ptr %520, align 8, !tbaa !84
  %522 = load ptr, ptr %13, align 8, !tbaa !5
  %523 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %522, i32 0, i32 7
  %524 = load double, ptr %523, align 8, !tbaa !100
  %525 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %521, double noundef %524)
  %526 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %527 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %526, i32 0, i32 13
  store double %525, ptr %527, align 8, !tbaa !38
  %528 = load ptr, ptr %8, align 8, !tbaa !5
  %529 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %528, i32 0, i32 7
  %530 = load i64, ptr %529, align 8, !tbaa !70
  %531 = load ptr, ptr %13, align 8, !tbaa !5
  %532 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %531, i32 0, i32 13
  %533 = load double, ptr %532, align 8, !tbaa !98
  %534 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %530, double noundef %533)
  %535 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %536 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %535, i32 0, i32 11
  store double %534, ptr %536, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  %537 = load ptr, ptr %10, align 8, !tbaa !5
  %538 = getelementptr inbounds %"class.Data::MemBankWiseParams", ptr %537, i32 0, i32 1
  %539 = load i64, ptr %538, align 8, !tbaa !106
  %540 = sitofp i64 %539 to double
  %541 = fdiv double %540, 1.000000e+02
  %542 = load ptr, ptr %13, align 8, !tbaa !5
  %543 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %542, i32 0, i32 13
  %544 = load double, ptr %543, align 8, !tbaa !98
  %545 = load ptr, ptr %13, align 8, !tbaa !5
  %546 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %545, i32 0, i32 7
  %547 = load double, ptr %546, align 8, !tbaa !100
  %548 = fsub double %544, %547
  %549 = load ptr, ptr %13, align 8, !tbaa !5
  %550 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %549, i32 0, i32 7
  %551 = load double, ptr %550, align 8, !tbaa !100
  %552 = call double @llvm.fmuladd.f64(double %541, double %548, double %551)
  store double %552, ptr %56, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  %553 = load ptr, ptr %8, align 8, !tbaa !5
  %554 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %553, i32 0, i32 7
  %555 = load i64, ptr %554, align 8, !tbaa !70
  %556 = load double, ptr %56, align 8, !tbaa !24
  %557 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %555, double noundef %556)
  store double %557, ptr %57, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  %558 = load ptr, ptr %10, align 8, !tbaa !5
  %559 = getelementptr inbounds %"class.Data::MemBankWiseParams", ptr %558, i32 0, i32 2
  %560 = load i64, ptr %559, align 8, !tbaa !112
  %561 = sitofp i64 %560 to double
  %562 = fdiv double %561, 1.000000e+02
  %563 = load ptr, ptr %13, align 8, !tbaa !5
  %564 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %563, i32 0, i32 22
  %565 = load double, ptr %564, align 8, !tbaa !113
  %566 = fmul double %562, %565
  store double %566, ptr %58, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #4
  %567 = load ptr, ptr %8, align 8, !tbaa !5
  %568 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %567, i32 0, i32 20
  %569 = load i64, ptr %568, align 8, !tbaa !89
  %570 = load double, ptr %58, align 8, !tbaa !24
  %571 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %569, double noundef %570)
  store double %571, ptr %59, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  %572 = load ptr, ptr %13, align 8, !tbaa !5
  %573 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %572, i32 0, i32 13
  %574 = load double, ptr %573, align 8, !tbaa !98
  %575 = load double, ptr %56, align 8, !tbaa !24
  %576 = load i64, ptr %14, align 8, !tbaa !23
  %577 = sub nsw i64 %576, 1
  %578 = sitofp i64 %577 to double
  %579 = call double @llvm.fmuladd.f64(double %575, double %578, double %574)
  %580 = load i64, ptr %14, align 8, !tbaa !23
  %581 = sitofp i64 %580 to double
  %582 = fdiv double %579, %581
  store double %582, ptr %60, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #4
  %583 = load ptr, ptr %13, align 8, !tbaa !5
  %584 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %583, i32 0, i32 21
  %585 = load double, ptr %584, align 8, !tbaa !114
  %586 = fcmp oeq double %585, 0.000000e+00
  br i1 %586, label %587, label %593

587:                                              ; preds = %499
  %588 = load ptr, ptr %13, align 8, !tbaa !5
  %589 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %588, i32 0, i32 1
  %590 = load double, ptr %589, align 8, !tbaa !97
  %591 = load double, ptr %60, align 8, !tbaa !24
  %592 = fsub double %590, %591
  br label %597

593:                                              ; preds = %499
  %594 = load ptr, ptr %13, align 8, !tbaa !5
  %595 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %594, i32 0, i32 21
  %596 = load double, ptr %595, align 8, !tbaa !114
  br label %597

597:                                              ; preds = %593, %587
  %598 = phi double [ %592, %587 ], [ %596, %593 ]
  store double %598, ptr %61, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #4
  %599 = load ptr, ptr %11, align 8, !tbaa !5
  %600 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %599, i32 0, i32 19
  %601 = load i64, ptr %600, align 8, !tbaa !115
  %602 = icmp eq i64 %601, 0
  br i1 %602, label %603, label %611

603:                                              ; preds = %597
  %604 = load ptr, ptr %11, align 8, !tbaa !5
  %605 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %604, i32 0, i32 20
  %606 = load i64, ptr %605, align 8, !tbaa !96
  %607 = load ptr, ptr %11, align 8, !tbaa !5
  %608 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %607, i32 0, i32 17
  %609 = load i64, ptr %608, align 8, !tbaa !116
  %610 = add nsw i64 %606, %609
  br label %615

611:                                              ; preds = %597
  %612 = load ptr, ptr %11, align 8, !tbaa !5
  %613 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %612, i32 0, i32 19
  %614 = load i64, ptr %613, align 8, !tbaa !115
  br label %615

615:                                              ; preds = %611, %603
  %616 = phi i64 [ %610, %603 ], [ %614, %611 ]
  store i64 %616, ptr %62, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #4
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %617

617:                                              ; preds = %1075, %615
  %618 = load i32, ptr %63, align 4, !tbaa !9
  %619 = zext i32 %618 to i64
  %620 = load i64, ptr %14, align 8, !tbaa !23
  %621 = icmp slt i64 %619, %620
  br i1 %621, label %639, label %622

622:                                              ; preds = %617
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  br label %1078

623:                                              ; preds = %429, %375
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %46, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #4
  br label %1833

627:                                              ; preds = %448, %442
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %46, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #4
  br label %1833

631:                                              ; preds = %471, %465
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %46, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #4
  br label %1833

635:                                              ; preds = %488, %482
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %46, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #4
  br label %1833

639:                                              ; preds = %617
  %640 = load ptr, ptr %8, align 8, !tbaa !5
  %641 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %640, i32 0, i32 0
  %642 = load i32, ptr %63, align 4, !tbaa !9
  %643 = zext i32 %642 to i64
  %644 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %641, i64 noundef %643) #4
  %645 = load i64, ptr %644, align 8, !tbaa !23
  %646 = load ptr, ptr %11, align 8, !tbaa !5
  %647 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %646, i32 0, i32 20
  %648 = load i64, ptr %647, align 8, !tbaa !96
  %649 = mul nsw i64 %645, %648
  %650 = load ptr, ptr %13, align 8, !tbaa !5
  %651 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %650, i32 0, i32 1
  %652 = load double, ptr %651, align 8, !tbaa !97
  %653 = load double, ptr %60, align 8, !tbaa !24
  %654 = fsub double %652, %653
  %655 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %649, double noundef %654)
  %656 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %657 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %656, i32 0, i32 1
  %658 = load i32, ptr %63, align 4, !tbaa !9
  %659 = zext i32 %658 to i64
  %660 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %657, i64 noundef %659) #4
  store double %655, ptr %660, align 8, !tbaa !24
  %661 = load ptr, ptr %8, align 8, !tbaa !5
  %662 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %661, i32 0, i32 1
  %663 = load i32, ptr %63, align 4, !tbaa !9
  %664 = zext i32 %663 to i64
  %665 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %662, i64 noundef %664) #4
  %666 = load i64, ptr %665, align 8, !tbaa !23
  %667 = load ptr, ptr %11, align 8, !tbaa !5
  %668 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %667, i32 0, i32 17
  %669 = load i64, ptr %668, align 8, !tbaa !116
  %670 = mul nsw i64 %666, %669
  %671 = load ptr, ptr %13, align 8, !tbaa !5
  %672 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %671, i32 0, i32 1
  %673 = load double, ptr %672, align 8, !tbaa !97
  %674 = load double, ptr %60, align 8, !tbaa !24
  %675 = fsub double %673, %674
  %676 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %670, double noundef %675)
  %677 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %678 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %677, i32 0, i32 3
  %679 = load i32, ptr %63, align 4, !tbaa !9
  %680 = zext i32 %679 to i64
  %681 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %678, i64 noundef %680) #4
  store double %676, ptr %681, align 8, !tbaa !24
  %682 = load ptr, ptr %8, align 8, !tbaa !5
  %683 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %682, i32 0, i32 2
  %684 = load i32, ptr %63, align 4, !tbaa !9
  %685 = zext i32 %684 to i64
  %686 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %683, i64 noundef %685) #4
  %687 = load i64, ptr %686, align 8, !tbaa !23
  %688 = load i64, ptr %41, align 8, !tbaa !23
  %689 = mul nsw i64 %687, %688
  %690 = load ptr, ptr %13, align 8, !tbaa !5
  %691 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %690, i32 0, i32 15
  %692 = load double, ptr %691, align 8, !tbaa !101
  %693 = load ptr, ptr %13, align 8, !tbaa !5
  %694 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %693, i32 0, i32 13
  %695 = load double, ptr %694, align 8, !tbaa !98
  %696 = fsub double %692, %695
  %697 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %689, double noundef %696)
  %698 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %699 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %698, i32 0, i32 5
  %700 = load i32, ptr %63, align 4, !tbaa !9
  %701 = zext i32 %700 to i64
  %702 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %699, i64 noundef %701) #4
  store double %697, ptr %702, align 8, !tbaa !24
  %703 = load ptr, ptr %8, align 8, !tbaa !5
  %704 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %703, i32 0, i32 3
  %705 = load i32, ptr %63, align 4, !tbaa !9
  %706 = zext i32 %705 to i64
  %707 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %704, i64 noundef %706) #4
  %708 = load i64, ptr %707, align 8, !tbaa !23
  %709 = load i64, ptr %41, align 8, !tbaa !23
  %710 = mul nsw i64 %708, %709
  %711 = load ptr, ptr %13, align 8, !tbaa !5
  %712 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %711, i32 0, i32 17
  %713 = load double, ptr %712, align 8, !tbaa !102
  %714 = load ptr, ptr %13, align 8, !tbaa !5
  %715 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %714, i32 0, i32 13
  %716 = load double, ptr %715, align 8, !tbaa !98
  %717 = fsub double %713, %716
  %718 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %710, double noundef %717)
  %719 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %720 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %719, i32 0, i32 7
  %721 = load i32, ptr %63, align 4, !tbaa !9
  %722 = zext i32 %721 to i64
  %723 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %720, i64 noundef %722) #4
  store double %718, ptr %723, align 8, !tbaa !24
  %724 = load ptr, ptr %8, align 8, !tbaa !5
  %725 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %724, i32 0, i32 4
  %726 = load i64, ptr %725, align 8, !tbaa !103
  %727 = load ptr, ptr %11, align 8, !tbaa !5
  %728 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %727, i32 0, i32 18
  %729 = load i64, ptr %728, align 8, !tbaa !104
  %730 = mul nsw i64 %726, %729
  %731 = load ptr, ptr %13, align 8, !tbaa !5
  %732 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %731, i32 0, i32 19
  %733 = load double, ptr %732, align 8, !tbaa !105
  %734 = load ptr, ptr %13, align 8, !tbaa !5
  %735 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %734, i32 0, i32 13
  %736 = load double, ptr %735, align 8, !tbaa !98
  %737 = fsub double %733, %736
  %738 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %730, double noundef %737)
  %739 = load i64, ptr %14, align 8, !tbaa !23
  %740 = sitofp i64 %739 to double
  %741 = fdiv double %738, %740
  %742 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %743 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %742, i32 0, i32 9
  %744 = load i32, ptr %63, align 4, !tbaa !9
  %745 = zext i32 %744 to i64
  %746 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %743, i64 noundef %745) #4
  store double %741, ptr %746, align 8, !tbaa !24
  %747 = load ptr, ptr %8, align 8, !tbaa !5
  %748 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %747, i32 0, i32 5
  %749 = load i32, ptr %63, align 4, !tbaa !9
  %750 = zext i32 %749 to i64
  %751 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %748, i64 noundef %750) #4
  %752 = load i64, ptr %751, align 8, !tbaa !23
  %753 = load i64, ptr %62, align 8, !tbaa !23
  %754 = mul nsw i64 %752, %753
  %755 = load double, ptr %61, align 8, !tbaa !24
  %756 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %754, double noundef %755)
  %757 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %758 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %757, i32 0, i32 10
  %759 = load i32, ptr %63, align 4, !tbaa !9
  %760 = zext i32 %759 to i64
  %761 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %758, i64 noundef %760) #4
  store double %756, ptr %761, align 8, !tbaa !24
  %762 = load ptr, ptr %8, align 8, !tbaa !5
  %763 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %762, i32 0, i32 6
  %764 = load i64, ptr %763, align 8, !tbaa !84
  %765 = load ptr, ptr %13, align 8, !tbaa !5
  %766 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %765, i32 0, i32 7
  %767 = load double, ptr %766, align 8, !tbaa !100
  %768 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %764, double noundef %767)
  %769 = load i64, ptr %14, align 8, !tbaa !23
  %770 = sitofp i64 %769 to double
  %771 = fdiv double %768, %770
  %772 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %773 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %772, i32 0, i32 14
  %774 = load i32, ptr %63, align 4, !tbaa !9
  %775 = zext i32 %774 to i64
  %776 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %773, i64 noundef %775) #4
  store double %771, ptr %776, align 8, !tbaa !24
  %777 = load ptr, ptr %8, align 8, !tbaa !5
  %778 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %777, i32 0, i32 8
  %779 = load i32, ptr %63, align 4, !tbaa !9
  %780 = zext i32 %779 to i64
  %781 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %778, i64 noundef %780) #4
  %782 = load i64, ptr %781, align 8, !tbaa !23
  %783 = load ptr, ptr %13, align 8, !tbaa !5
  %784 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %783, i32 0, i32 13
  %785 = load double, ptr %784, align 8, !tbaa !98
  %786 = load double, ptr %56, align 8, !tbaa !24
  %787 = fsub double %785, %786
  %788 = load i64, ptr %14, align 8, !tbaa !23
  %789 = sitofp i64 %788 to double
  %790 = fdiv double %787, %789
  %791 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %782, double noundef %790)
  %792 = load double, ptr %57, align 8, !tbaa !24
  %793 = load i64, ptr %14, align 8, !tbaa !23
  %794 = sitofp i64 %793 to double
  %795 = fdiv double %792, %794
  %796 = fadd double %791, %795
  %797 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %798 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %797, i32 0, i32 12
  %799 = load i32, ptr %63, align 4, !tbaa !9
  %800 = zext i32 %799 to i64
  %801 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %798, i64 noundef %800) #4
  store double %796, ptr %801, align 8, !tbaa !24
  %802 = load ptr, ptr %8, align 8, !tbaa !5
  %803 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %802, i32 0, i32 9
  %804 = load i64, ptr %803, align 8, !tbaa !117
  %805 = load ptr, ptr %13, align 8, !tbaa !5
  %806 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %805, i32 0, i32 13
  %807 = load double, ptr %806, align 8, !tbaa !98
  %808 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %804, double noundef %807)
  %809 = load i64, ptr %14, align 8, !tbaa !23
  %810 = sitofp i64 %809 to double
  %811 = fdiv double %808, %810
  %812 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %813 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %812, i32 0, i32 16
  %814 = load i32, ptr %63, align 4, !tbaa !9
  %815 = zext i32 %814 to i64
  %816 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %813, i64 noundef %815) #4
  store double %811, ptr %816, align 8, !tbaa !24
  %817 = load ptr, ptr %8, align 8, !tbaa !5
  %818 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %817, i32 0, i32 10
  %819 = load i64, ptr %818, align 8, !tbaa !118
  %820 = load ptr, ptr %13, align 8, !tbaa !5
  %821 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %820, i32 0, i32 7
  %822 = load double, ptr %821, align 8, !tbaa !100
  %823 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %819, double noundef %822)
  %824 = load i64, ptr %14, align 8, !tbaa !23
  %825 = sitofp i64 %824 to double
  %826 = fdiv double %823, %825
  %827 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %828 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %827, i32 0, i32 18
  %829 = load i32, ptr %63, align 4, !tbaa !9
  %830 = zext i32 %829 to i64
  %831 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %828, i64 noundef %830) #4
  store double %826, ptr %831, align 8, !tbaa !24
  %832 = load ptr, ptr %8, align 8, !tbaa !5
  %833 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %832, i32 0, i32 16
  %834 = load i64, ptr %833, align 8, !tbaa !85
  %835 = load ptr, ptr %13, align 8, !tbaa !5
  %836 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %835, i32 0, i32 11
  %837 = load double, ptr %836, align 8, !tbaa !119
  %838 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %834, double noundef %837)
  %839 = load i64, ptr %14, align 8, !tbaa !23
  %840 = sitofp i64 %839 to double
  %841 = fdiv double %838, %840
  %842 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %843 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %842, i32 0, i32 24
  %844 = load i32, ptr %63, align 4, !tbaa !9
  %845 = zext i32 %844 to i64
  %846 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %843, i64 noundef %845) #4
  store double %841, ptr %846, align 8, !tbaa !24
  %847 = load ptr, ptr %8, align 8, !tbaa !5
  %848 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %847, i32 0, i32 18
  %849 = load i64, ptr %848, align 8, !tbaa !86
  %850 = load ptr, ptr %13, align 8, !tbaa !5
  %851 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %850, i32 0, i32 5
  %852 = load double, ptr %851, align 8, !tbaa !120
  %853 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %849, double noundef %852)
  %854 = load i64, ptr %14, align 8, !tbaa !23
  %855 = sitofp i64 %854 to double
  %856 = fdiv double %853, %855
  %857 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %858 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %857, i32 0, i32 26
  %859 = load i32, ptr %63, align 4, !tbaa !9
  %860 = zext i32 %859 to i64
  %861 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %858, i64 noundef %860) #4
  store double %856, ptr %861, align 8, !tbaa !24
  %862 = load ptr, ptr %8, align 8, !tbaa !5
  %863 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %862, i32 0, i32 17
  %864 = load i64, ptr %863, align 8, !tbaa !87
  %865 = load ptr, ptr %13, align 8, !tbaa !5
  %866 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %865, i32 0, i32 9
  %867 = load double, ptr %866, align 8, !tbaa !121
  %868 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %864, double noundef %867)
  %869 = load i64, ptr %14, align 8, !tbaa !23
  %870 = sitofp i64 %869 to double
  %871 = fdiv double %868, %870
  %872 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %873 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %872, i32 0, i32 28
  %874 = load i32, ptr %63, align 4, !tbaa !9
  %875 = zext i32 %874 to i64
  %876 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %873, i64 noundef %875) #4
  store double %871, ptr %876, align 8, !tbaa !24
  %877 = load ptr, ptr %8, align 8, !tbaa !5
  %878 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %877, i32 0, i32 19
  %879 = load i64, ptr %878, align 8, !tbaa !88
  %880 = load ptr, ptr %13, align 8, !tbaa !5
  %881 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %880, i32 0, i32 3
  %882 = load double, ptr %881, align 8, !tbaa !122
  %883 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %879, double noundef %882)
  %884 = load i64, ptr %14, align 8, !tbaa !23
  %885 = sitofp i64 %884 to double
  %886 = fdiv double %883, %885
  %887 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %888 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %887, i32 0, i32 30
  %889 = load i32, ptr %63, align 4, !tbaa !9
  %890 = zext i32 %889 to i64
  %891 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %888, i64 noundef %890) #4
  store double %886, ptr %891, align 8, !tbaa !24
  %892 = load ptr, ptr %13, align 8, !tbaa !5
  %893 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %892, i32 0, i32 22
  %894 = load double, ptr %893, align 8, !tbaa !113
  %895 = load ptr, ptr %13, align 8, !tbaa !5
  %896 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %895, i32 0, i32 13
  %897 = load double, ptr %896, align 8, !tbaa !98
  %898 = load ptr, ptr %13, align 8, !tbaa !5
  %899 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %898, i32 0, i32 19
  %900 = load double, ptr %899, align 8, !tbaa !105
  %901 = load ptr, ptr %13, align 8, !tbaa !5
  %902 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %901, i32 0, i32 24
  %903 = load double, ptr %902, align 8, !tbaa !95
  %904 = load ptr, ptr %8, align 8, !tbaa !5
  %905 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %904, i32 0, i32 20
  %906 = load i64, ptr %905, align 8, !tbaa !89
  %907 = sitofp i64 %906 to double
  %908 = load ptr, ptr %8, align 8, !tbaa !5
  %909 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %908, i32 0, i32 24
  %910 = load i64, ptr %909, align 8, !tbaa !90
  %911 = sitofp i64 %910 to double
  %912 = load ptr, ptr %8, align 8, !tbaa !5
  %913 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %912, i32 0, i32 26
  %914 = load i64, ptr %913, align 8, !tbaa !91
  %915 = sitofp i64 %914 to double
  %916 = load ptr, ptr %8, align 8, !tbaa !5
  %917 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %916, i32 0, i32 28
  %918 = load i64, ptr %917, align 8, !tbaa !92
  %919 = sitofp i64 %918 to double
  %920 = load ptr, ptr %8, align 8, !tbaa !5
  %921 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %920, i32 0, i32 29
  %922 = load i64, ptr %921, align 8, !tbaa !93
  %923 = sitofp i64 %922 to double
  %924 = load ptr, ptr %11, align 8, !tbaa !5
  %925 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %924, i32 0, i32 32
  %926 = load double, ptr %925, align 8, !tbaa !68
  %927 = load double, ptr %59, align 8, !tbaa !24
  %928 = load ptr, ptr %10, align 8, !tbaa !5
  %929 = load i32, ptr %63, align 4, !tbaa !9
  %930 = load i64, ptr %14, align 8, !tbaa !23
  %931 = call noundef double @_ZN4Data16MemoryPowerModel15engy_sref_banksEdddddddddddRKNS_17MemBankWiseParamsEjl(double noundef %894, double noundef %897, double noundef %900, double noundef %903, double noundef %907, double noundef %911, double noundef %915, double noundef %919, double noundef %923, double noundef %926, double noundef %927, ptr noundef nonnull align 8 dereferenceable(42) %928, i32 noundef %929, i64 noundef %930)
  %932 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %933 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %932, i32 0, i32 32
  %934 = load i32, ptr %63, align 4, !tbaa !9
  %935 = zext i32 %934 to i64
  %936 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %933, i64 noundef %935) #4
  store double %931, ptr %936, align 8, !tbaa !24
  %937 = load ptr, ptr %8, align 8, !tbaa !5
  %938 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %937, i32 0, i32 24
  %939 = load i64, ptr %938, align 8, !tbaa !90
  %940 = load ptr, ptr %13, align 8, !tbaa !5
  %941 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %940, i32 0, i32 9
  %942 = load double, ptr %941, align 8, !tbaa !121
  %943 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %939, double noundef %942)
  %944 = load i64, ptr %14, align 8, !tbaa !23
  %945 = sitofp i64 %944 to double
  %946 = fdiv double %943, %945
  %947 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %948 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %947, i32 0, i32 36
  %949 = load i32, ptr %63, align 4, !tbaa !9
  %950 = zext i32 %949 to i64
  %951 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %948, i64 noundef %950) #4
  store double %946, ptr %951, align 8, !tbaa !24
  %952 = load ptr, ptr %8, align 8, !tbaa !5
  %953 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %952, i32 0, i32 26
  %954 = load i64, ptr %953, align 8, !tbaa !91
  %955 = load ptr, ptr %13, align 8, !tbaa !5
  %956 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %955, i32 0, i32 3
  %957 = load double, ptr %956, align 8, !tbaa !122
  %958 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %954, double noundef %957)
  %959 = load i64, ptr %14, align 8, !tbaa !23
  %960 = sitofp i64 %959 to double
  %961 = fdiv double %958, %960
  %962 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %963 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %962, i32 0, i32 38
  %964 = load i32, ptr %63, align 4, !tbaa !9
  %965 = zext i32 %964 to i64
  %966 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %963, i64 noundef %965) #4
  store double %961, ptr %966, align 8, !tbaa !24
  %967 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %968 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %967, i32 0, i32 36
  %969 = load i32, ptr %63, align 4, !tbaa !9
  %970 = zext i32 %969 to i64
  %971 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %968, i64 noundef %970) #4
  %972 = load double, ptr %971, align 8, !tbaa !24
  %973 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %974 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %973, i32 0, i32 38
  %975 = load i32, ptr %63, align 4, !tbaa !9
  %976 = zext i32 %975 to i64
  %977 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %974, i64 noundef %976) #4
  %978 = load double, ptr %977, align 8, !tbaa !24
  %979 = fadd double %972, %978
  %980 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %981 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %980, i32 0, i32 34
  %982 = load i32, ptr %63, align 4, !tbaa !9
  %983 = zext i32 %982 to i64
  %984 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %981, i64 noundef %983) #4
  store double %979, ptr %984, align 8, !tbaa !24
  %985 = load ptr, ptr %8, align 8, !tbaa !5
  %986 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %985, i32 0, i32 23
  %987 = load i64, ptr %986, align 8, !tbaa !123
  %988 = load ptr, ptr %13, align 8, !tbaa !5
  %989 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %988, i32 0, i32 7
  %990 = load double, ptr %989, align 8, !tbaa !100
  %991 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %987, double noundef %990)
  %992 = load i64, ptr %14, align 8, !tbaa !23
  %993 = sitofp i64 %992 to double
  %994 = fdiv double %991, %993
  %995 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %996 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %995, i32 0, i32 40
  %997 = load i32, ptr %63, align 4, !tbaa !9
  %998 = zext i32 %997 to i64
  %999 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %996, i64 noundef %998) #4
  store double %994, ptr %999, align 8, !tbaa !24
  %1000 = load ptr, ptr %8, align 8, !tbaa !5
  %1001 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1000, i32 0, i32 28
  %1002 = load i64, ptr %1001, align 8, !tbaa !92
  %1003 = load ptr, ptr %13, align 8, !tbaa !5
  %1004 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1003, i32 0, i32 13
  %1005 = load double, ptr %1004, align 8, !tbaa !98
  %1006 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1002, double noundef %1005)
  %1007 = load i64, ptr %14, align 8, !tbaa !23
  %1008 = sitofp i64 %1007 to double
  %1009 = fdiv double %1006, %1008
  %1010 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1011 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1010, i32 0, i32 44
  %1012 = load i32, ptr %63, align 4, !tbaa !9
  %1013 = zext i32 %1012 to i64
  %1014 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1011, i64 noundef %1013) #4
  store double %1009, ptr %1014, align 8, !tbaa !24
  %1015 = load ptr, ptr %8, align 8, !tbaa !5
  %1016 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1015, i32 0, i32 29
  %1017 = load i64, ptr %1016, align 8, !tbaa !93
  %1018 = load ptr, ptr %13, align 8, !tbaa !5
  %1019 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1018, i32 0, i32 7
  %1020 = load double, ptr %1019, align 8, !tbaa !100
  %1021 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1017, double noundef %1020)
  %1022 = load i64, ptr %14, align 8, !tbaa !23
  %1023 = sitofp i64 %1022 to double
  %1024 = fdiv double %1021, %1023
  %1025 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1026 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1025, i32 0, i32 46
  %1027 = load i32, ptr %63, align 4, !tbaa !9
  %1028 = zext i32 %1027 to i64
  %1029 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1026, i64 noundef %1028) #4
  store double %1024, ptr %1029, align 8, !tbaa !24
  %1030 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1031 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1030, i32 0, i32 43
  %1032 = load double, ptr %1031, align 8, !tbaa !52
  %1033 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1034 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1033, i32 0, i32 45
  %1035 = load double, ptr %1034, align 8, !tbaa !53
  %1036 = fadd double %1032, %1035
  %1037 = load i64, ptr %14, align 8, !tbaa !23
  %1038 = sitofp i64 %1037 to double
  %1039 = fdiv double %1036, %1038
  %1040 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1041 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1040, i32 0, i32 42
  %1042 = load i32, ptr %63, align 4, !tbaa !9
  %1043 = zext i32 %1042 to i64
  %1044 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1041, i64 noundef %1043) #4
  store double %1039, ptr %1044, align 8, !tbaa !24
  %1045 = load ptr, ptr %8, align 8, !tbaa !5
  %1046 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1045, i32 0, i32 21
  %1047 = load i64, ptr %1046, align 8, !tbaa !124
  %1048 = load ptr, ptr %13, align 8, !tbaa !5
  %1049 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1048, i32 0, i32 13
  %1050 = load double, ptr %1049, align 8, !tbaa !98
  %1051 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1047, double noundef %1050)
  %1052 = load i64, ptr %14, align 8, !tbaa !23
  %1053 = sitofp i64 %1052 to double
  %1054 = fdiv double %1051, %1053
  %1055 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1056 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1055, i32 0, i32 48
  %1057 = load i32, ptr %63, align 4, !tbaa !9
  %1058 = zext i32 %1057 to i64
  %1059 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1056, i64 noundef %1058) #4
  store double %1054, ptr %1059, align 8, !tbaa !24
  %1060 = load ptr, ptr %8, align 8, !tbaa !5
  %1061 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1060, i32 0, i32 22
  %1062 = load i64, ptr %1061, align 8, !tbaa !125
  %1063 = load ptr, ptr %13, align 8, !tbaa !5
  %1064 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1063, i32 0, i32 7
  %1065 = load double, ptr %1064, align 8, !tbaa !100
  %1066 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1062, double noundef %1065)
  %1067 = load i64, ptr %14, align 8, !tbaa !23
  %1068 = sitofp i64 %1067 to double
  %1069 = fdiv double %1066, %1068
  %1070 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1071 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1070, i32 0, i32 50
  %1072 = load i32, ptr %63, align 4, !tbaa !9
  %1073 = zext i32 %1072 to i64
  %1074 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1071, i64 noundef %1073) #4
  store double %1069, ptr %1074, align 8, !tbaa !24
  br label %1075

1075:                                             ; preds = %639
  %1076 = load i32, ptr %63, align 4, !tbaa !9
  %1077 = add i32 %1076, 1
  store i32 %1077, ptr %63, align 4, !tbaa !9
  br label %617, !llvm.loop !126

1078:                                             ; preds = %622
  %1079 = load ptr, ptr %8, align 8, !tbaa !5
  %1080 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1079, i32 0, i32 9
  %1081 = load i64, ptr %1080, align 8, !tbaa !117
  %1082 = load ptr, ptr %13, align 8, !tbaa !5
  %1083 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1082, i32 0, i32 13
  %1084 = load double, ptr %1083, align 8, !tbaa !98
  %1085 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1081, double noundef %1084)
  %1086 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1087 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1086, i32 0, i32 15
  store double %1085, ptr %1087, align 8, !tbaa !39
  %1088 = load ptr, ptr %8, align 8, !tbaa !5
  %1089 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1088, i32 0, i32 10
  %1090 = load i64, ptr %1089, align 8, !tbaa !118
  %1091 = load ptr, ptr %13, align 8, !tbaa !5
  %1092 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1091, i32 0, i32 7
  %1093 = load double, ptr %1092, align 8, !tbaa !100
  %1094 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1090, double noundef %1093)
  %1095 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1096 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1095, i32 0, i32 17
  store double %1094, ptr %1096, align 8, !tbaa !40
  %1097 = load ptr, ptr %8, align 8, !tbaa !5
  %1098 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1097, i32 0, i32 16
  %1099 = load i64, ptr %1098, align 8, !tbaa !85
  %1100 = load ptr, ptr %13, align 8, !tbaa !5
  %1101 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1100, i32 0, i32 11
  %1102 = load double, ptr %1101, align 8, !tbaa !119
  %1103 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1099, double noundef %1102)
  %1104 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1105 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1104, i32 0, i32 23
  store double %1103, ptr %1105, align 8, !tbaa !42
  %1106 = load ptr, ptr %8, align 8, !tbaa !5
  %1107 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1106, i32 0, i32 18
  %1108 = load i64, ptr %1107, align 8, !tbaa !86
  %1109 = load ptr, ptr %13, align 8, !tbaa !5
  %1110 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1109, i32 0, i32 5
  %1111 = load double, ptr %1110, align 8, !tbaa !120
  %1112 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1108, double noundef %1111)
  %1113 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1114 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1113, i32 0, i32 25
  store double %1112, ptr %1114, align 8, !tbaa !43
  %1115 = load ptr, ptr %8, align 8, !tbaa !5
  %1116 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1115, i32 0, i32 17
  %1117 = load i64, ptr %1116, align 8, !tbaa !87
  %1118 = load ptr, ptr %13, align 8, !tbaa !5
  %1119 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1118, i32 0, i32 9
  %1120 = load double, ptr %1119, align 8, !tbaa !121
  %1121 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1117, double noundef %1120)
  %1122 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1123 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1122, i32 0, i32 27
  store double %1121, ptr %1123, align 8, !tbaa !44
  %1124 = load ptr, ptr %8, align 8, !tbaa !5
  %1125 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1124, i32 0, i32 19
  %1126 = load i64, ptr %1125, align 8, !tbaa !88
  %1127 = load ptr, ptr %13, align 8, !tbaa !5
  %1128 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1127, i32 0, i32 3
  %1129 = load double, ptr %1128, align 8, !tbaa !122
  %1130 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1126, double noundef %1129)
  %1131 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1132 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1131, i32 0, i32 29
  store double %1130, ptr %1132, align 8, !tbaa !45
  %1133 = load ptr, ptr %13, align 8, !tbaa !5
  %1134 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1133, i32 0, i32 22
  %1135 = load double, ptr %1134, align 8, !tbaa !113
  %1136 = load ptr, ptr %13, align 8, !tbaa !5
  %1137 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1136, i32 0, i32 13
  %1138 = load double, ptr %1137, align 8, !tbaa !98
  %1139 = load ptr, ptr %13, align 8, !tbaa !5
  %1140 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1139, i32 0, i32 19
  %1141 = load double, ptr %1140, align 8, !tbaa !105
  %1142 = load ptr, ptr %13, align 8, !tbaa !5
  %1143 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1142, i32 0, i32 24
  %1144 = load double, ptr %1143, align 8, !tbaa !95
  %1145 = load ptr, ptr %8, align 8, !tbaa !5
  %1146 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1145, i32 0, i32 20
  %1147 = load i64, ptr %1146, align 8, !tbaa !89
  %1148 = sitofp i64 %1147 to double
  %1149 = load ptr, ptr %8, align 8, !tbaa !5
  %1150 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1149, i32 0, i32 24
  %1151 = load i64, ptr %1150, align 8, !tbaa !90
  %1152 = sitofp i64 %1151 to double
  %1153 = load ptr, ptr %8, align 8, !tbaa !5
  %1154 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1153, i32 0, i32 26
  %1155 = load i64, ptr %1154, align 8, !tbaa !91
  %1156 = sitofp i64 %1155 to double
  %1157 = load ptr, ptr %8, align 8, !tbaa !5
  %1158 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1157, i32 0, i32 28
  %1159 = load i64, ptr %1158, align 8, !tbaa !92
  %1160 = sitofp i64 %1159 to double
  %1161 = load ptr, ptr %8, align 8, !tbaa !5
  %1162 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1161, i32 0, i32 29
  %1163 = load i64, ptr %1162, align 8, !tbaa !93
  %1164 = sitofp i64 %1163 to double
  %1165 = load ptr, ptr %11, align 8, !tbaa !5
  %1166 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %1165, i32 0, i32 32
  %1167 = load double, ptr %1166, align 8, !tbaa !68
  %1168 = call noundef double @_ZN4Data16MemoryPowerModel9engy_srefEdddddddddd(double noundef %1135, double noundef %1138, double noundef %1141, double noundef %1144, double noundef %1148, double noundef %1152, double noundef %1156, double noundef %1160, double noundef %1164, double noundef %1167)
  %1169 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1170 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1169, i32 0, i32 31
  store double %1168, ptr %1170, align 8, !tbaa !46
  %1171 = load ptr, ptr %8, align 8, !tbaa !5
  %1172 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1171, i32 0, i32 24
  %1173 = load i64, ptr %1172, align 8, !tbaa !90
  %1174 = load ptr, ptr %13, align 8, !tbaa !5
  %1175 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1174, i32 0, i32 9
  %1176 = load double, ptr %1175, align 8, !tbaa !121
  %1177 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1173, double noundef %1176)
  %1178 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1179 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1178, i32 0, i32 35
  store double %1177, ptr %1179, align 8, !tbaa !48
  %1180 = load ptr, ptr %8, align 8, !tbaa !5
  %1181 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1180, i32 0, i32 26
  %1182 = load i64, ptr %1181, align 8, !tbaa !91
  %1183 = load ptr, ptr %13, align 8, !tbaa !5
  %1184 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1183, i32 0, i32 3
  %1185 = load double, ptr %1184, align 8, !tbaa !122
  %1186 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1182, double noundef %1185)
  %1187 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1188 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1187, i32 0, i32 37
  store double %1186, ptr %1188, align 8, !tbaa !49
  %1189 = load ptr, ptr %8, align 8, !tbaa !5
  %1190 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1189, i32 0, i32 28
  %1191 = load i64, ptr %1190, align 8, !tbaa !92
  %1192 = load ptr, ptr %13, align 8, !tbaa !5
  %1193 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1192, i32 0, i32 13
  %1194 = load double, ptr %1193, align 8, !tbaa !98
  %1195 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1191, double noundef %1194)
  %1196 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1197 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1196, i32 0, i32 43
  store double %1195, ptr %1197, align 8, !tbaa !52
  %1198 = load ptr, ptr %8, align 8, !tbaa !5
  %1199 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1198, i32 0, i32 29
  %1200 = load i64, ptr %1199, align 8, !tbaa !93
  %1201 = load ptr, ptr %13, align 8, !tbaa !5
  %1202 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1201, i32 0, i32 7
  %1203 = load double, ptr %1202, align 8, !tbaa !100
  %1204 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1200, double noundef %1203)
  %1205 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1206 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1205, i32 0, i32 45
  store double %1204, ptr %1206, align 8, !tbaa !53
  %1207 = load ptr, ptr %8, align 8, !tbaa !5
  %1208 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1207, i32 0, i32 23
  %1209 = load i64, ptr %1208, align 8, !tbaa !123
  %1210 = load ptr, ptr %13, align 8, !tbaa !5
  %1211 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1210, i32 0, i32 7
  %1212 = load double, ptr %1211, align 8, !tbaa !100
  %1213 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1209, double noundef %1212)
  %1214 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1215 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1214, i32 0, i32 39
  store double %1213, ptr %1215, align 8, !tbaa !50
  %1216 = load ptr, ptr %8, align 8, !tbaa !5
  %1217 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1216, i32 0, i32 21
  %1218 = load i64, ptr %1217, align 8, !tbaa !124
  %1219 = load ptr, ptr %13, align 8, !tbaa !5
  %1220 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1219, i32 0, i32 13
  %1221 = load double, ptr %1220, align 8, !tbaa !98
  %1222 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1218, double noundef %1221)
  %1223 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1224 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1223, i32 0, i32 47
  store double %1222, ptr %1224, align 8, !tbaa !54
  %1225 = load ptr, ptr %8, align 8, !tbaa !5
  %1226 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1225, i32 0, i32 22
  %1227 = load i64, ptr %1226, align 8, !tbaa !125
  %1228 = load ptr, ptr %13, align 8, !tbaa !5
  %1229 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1228, i32 0, i32 7
  %1230 = load double, ptr %1229, align 8, !tbaa !100
  %1231 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %51, i64 noundef %1227, double noundef %1230)
  %1232 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1233 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1232, i32 0, i32 49
  store double %1231, ptr %1233, align 8, !tbaa !55
  %1234 = load ptr, ptr %12, align 8, !tbaa !5
  %1235 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %1234, i32 0, i32 10
  %1236 = load i8, ptr %1235, align 1, !tbaa !128, !range !129, !noundef !130
  %1237 = trunc i8 %1236 to i1
  br i1 %1237, label %1238, label %1570

1238:                                             ; preds = %1078
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #4
  %1239 = load ptr, ptr %13, align 8, !tbaa !5
  %1240 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1239, i32 0, i32 25
  %1241 = load double, ptr %1240, align 8, !tbaa !131
  %1242 = load ptr, ptr %11, align 8, !tbaa !5
  %1243 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %1242, i32 0, i32 32
  %1244 = load double, ptr %1243, align 8, !tbaa !68
  call void @_ZN4Data12EnergyDomainC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %64, double noundef %1241, double noundef %1244)
  %1245 = load ptr, ptr %8, align 8, !tbaa !5
  %1246 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1245, i32 0, i32 0
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %1246)
  %1247 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %65)
          to label %1248 unwind label %1553

1248:                                             ; preds = %1238
  %1249 = load ptr, ptr %11, align 8, !tbaa !5
  %1250 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %1249, i32 0, i32 20
  %1251 = load i64, ptr %1250, align 8, !tbaa !96
  %1252 = mul nsw i64 %1247, %1251
  %1253 = load ptr, ptr %13, align 8, !tbaa !5
  %1254 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1253, i32 0, i32 2
  %1255 = load double, ptr %1254, align 8, !tbaa !132
  %1256 = load ptr, ptr %13, align 8, !tbaa !5
  %1257 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1256, i32 0, i32 14
  %1258 = load double, ptr %1257, align 8, !tbaa !133
  %1259 = fsub double %1255, %1258
  %1260 = invoke noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1252, double noundef %1259)
          to label %1261 unwind label %1553

1261:                                             ; preds = %1248
  %1262 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1263 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1262, i32 0, i32 0
  %1264 = load double, ptr %1263, align 8, !tbaa !25
  %1265 = fadd double %1264, %1260
  store double %1265, ptr %1263, align 8, !tbaa !25
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #4
  %1266 = load ptr, ptr %8, align 8, !tbaa !5
  %1267 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1266, i32 0, i32 1
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(24) %1267)
  %1268 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %66)
          to label %1269 unwind label %1557

1269:                                             ; preds = %1261
  %1270 = load ptr, ptr %11, align 8, !tbaa !5
  %1271 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %1270, i32 0, i32 2
  %1272 = load i64, ptr %1271, align 8, !tbaa !99
  %1273 = load ptr, ptr %11, align 8, !tbaa !5
  %1274 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %1273, i32 0, i32 20
  %1275 = load i64, ptr %1274, align 8, !tbaa !96
  %1276 = sub nsw i64 %1272, %1275
  %1277 = mul nsw i64 %1268, %1276
  %1278 = load ptr, ptr %13, align 8, !tbaa !5
  %1279 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1278, i32 0, i32 2
  %1280 = load double, ptr %1279, align 8, !tbaa !132
  %1281 = load ptr, ptr %13, align 8, !tbaa !5
  %1282 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1281, i32 0, i32 8
  %1283 = load double, ptr %1282, align 8, !tbaa !134
  %1284 = fsub double %1280, %1283
  %1285 = invoke noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1277, double noundef %1284)
          to label %1286 unwind label %1557

1286:                                             ; preds = %1269
  %1287 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1288 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1287, i32 0, i32 2
  %1289 = load double, ptr %1288, align 8, !tbaa !33
  %1290 = fadd double %1289, %1285
  store double %1290, ptr %1288, align 8, !tbaa !33
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #4
  %1291 = load ptr, ptr %8, align 8, !tbaa !5
  %1292 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1291, i32 0, i32 2
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %67, ptr noundef nonnull align 8 dereferenceable(24) %1292)
  %1293 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %67)
          to label %1294 unwind label %1561

1294:                                             ; preds = %1286
  %1295 = load i64, ptr %41, align 8, !tbaa !23
  %1296 = mul nsw i64 %1293, %1295
  %1297 = load ptr, ptr %13, align 8, !tbaa !5
  %1298 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1297, i32 0, i32 16
  %1299 = load double, ptr %1298, align 8, !tbaa !135
  %1300 = load ptr, ptr %13, align 8, !tbaa !5
  %1301 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1300, i32 0, i32 14
  %1302 = load double, ptr %1301, align 8, !tbaa !133
  %1303 = fsub double %1299, %1302
  %1304 = invoke noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1296, double noundef %1303)
          to label %1305 unwind label %1561

1305:                                             ; preds = %1294
  %1306 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1307 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1306, i32 0, i32 4
  %1308 = load double, ptr %1307, align 8, !tbaa !34
  %1309 = fadd double %1308, %1304
  store double %1309, ptr %1307, align 8, !tbaa !34
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #4
  %1310 = load ptr, ptr %8, align 8, !tbaa !5
  %1311 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1310, i32 0, i32 3
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %68, ptr noundef nonnull align 8 dereferenceable(24) %1311)
  %1312 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %68)
          to label %1313 unwind label %1565

1313:                                             ; preds = %1305
  %1314 = load i64, ptr %41, align 8, !tbaa !23
  %1315 = mul nsw i64 %1312, %1314
  %1316 = load ptr, ptr %13, align 8, !tbaa !5
  %1317 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1316, i32 0, i32 18
  %1318 = load double, ptr %1317, align 8, !tbaa !136
  %1319 = load ptr, ptr %13, align 8, !tbaa !5
  %1320 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1319, i32 0, i32 14
  %1321 = load double, ptr %1320, align 8, !tbaa !133
  %1322 = fsub double %1318, %1321
  %1323 = invoke noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1315, double noundef %1322)
          to label %1324 unwind label %1565

1324:                                             ; preds = %1313
  %1325 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1326 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1325, i32 0, i32 6
  %1327 = load double, ptr %1326, align 8, !tbaa !35
  %1328 = fadd double %1327, %1323
  store double %1328, ptr %1326, align 8, !tbaa !35
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #4
  %1329 = load ptr, ptr %8, align 8, !tbaa !5
  %1330 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1329, i32 0, i32 4
  %1331 = load i64, ptr %1330, align 8, !tbaa !103
  %1332 = load ptr, ptr %11, align 8, !tbaa !5
  %1333 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %1332, i32 0, i32 18
  %1334 = load i64, ptr %1333, align 8, !tbaa !104
  %1335 = mul nsw i64 %1331, %1334
  %1336 = load ptr, ptr %13, align 8, !tbaa !5
  %1337 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1336, i32 0, i32 20
  %1338 = load double, ptr %1337, align 8, !tbaa !137
  %1339 = load ptr, ptr %13, align 8, !tbaa !5
  %1340 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1339, i32 0, i32 14
  %1341 = load double, ptr %1340, align 8, !tbaa !133
  %1342 = fsub double %1338, %1341
  %1343 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1335, double noundef %1342)
  %1344 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1345 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1344, i32 0, i32 8
  %1346 = load double, ptr %1345, align 8, !tbaa !36
  %1347 = fadd double %1346, %1343
  store double %1347, ptr %1345, align 8, !tbaa !36
  %1348 = load ptr, ptr %8, align 8, !tbaa !5
  %1349 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1348, i32 0, i32 6
  %1350 = load i64, ptr %1349, align 8, !tbaa !84
  %1351 = load ptr, ptr %13, align 8, !tbaa !5
  %1352 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1351, i32 0, i32 8
  %1353 = load double, ptr %1352, align 8, !tbaa !134
  %1354 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1350, double noundef %1353)
  %1355 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1356 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1355, i32 0, i32 13
  %1357 = load double, ptr %1356, align 8, !tbaa !38
  %1358 = fadd double %1357, %1354
  store double %1358, ptr %1356, align 8, !tbaa !38
  %1359 = load ptr, ptr %8, align 8, !tbaa !5
  %1360 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1359, i32 0, i32 7
  %1361 = load i64, ptr %1360, align 8, !tbaa !70
  %1362 = load ptr, ptr %13, align 8, !tbaa !5
  %1363 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1362, i32 0, i32 14
  %1364 = load double, ptr %1363, align 8, !tbaa !133
  %1365 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1361, double noundef %1364)
  %1366 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1367 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1366, i32 0, i32 11
  %1368 = load double, ptr %1367, align 8, !tbaa !37
  %1369 = fadd double %1368, %1365
  store double %1369, ptr %1367, align 8, !tbaa !37
  %1370 = load ptr, ptr %8, align 8, !tbaa !5
  %1371 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1370, i32 0, i32 9
  %1372 = load i64, ptr %1371, align 8, !tbaa !117
  %1373 = load ptr, ptr %13, align 8, !tbaa !5
  %1374 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1373, i32 0, i32 14
  %1375 = load double, ptr %1374, align 8, !tbaa !133
  %1376 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1372, double noundef %1375)
  %1377 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1378 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1377, i32 0, i32 15
  %1379 = load double, ptr %1378, align 8, !tbaa !39
  %1380 = fadd double %1379, %1376
  store double %1380, ptr %1378, align 8, !tbaa !39
  %1381 = load ptr, ptr %8, align 8, !tbaa !5
  %1382 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1381, i32 0, i32 10
  %1383 = load i64, ptr %1382, align 8, !tbaa !118
  %1384 = load ptr, ptr %13, align 8, !tbaa !5
  %1385 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1384, i32 0, i32 8
  %1386 = load double, ptr %1385, align 8, !tbaa !134
  %1387 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1383, double noundef %1386)
  %1388 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1389 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1388, i32 0, i32 17
  %1390 = load double, ptr %1389, align 8, !tbaa !40
  %1391 = fadd double %1390, %1387
  store double %1391, ptr %1389, align 8, !tbaa !40
  %1392 = load ptr, ptr %8, align 8, !tbaa !5
  %1393 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1392, i32 0, i32 16
  %1394 = load i64, ptr %1393, align 8, !tbaa !85
  %1395 = load ptr, ptr %13, align 8, !tbaa !5
  %1396 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1395, i32 0, i32 12
  %1397 = load double, ptr %1396, align 8, !tbaa !138
  %1398 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1394, double noundef %1397)
  %1399 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1400 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1399, i32 0, i32 23
  %1401 = load double, ptr %1400, align 8, !tbaa !42
  %1402 = fadd double %1401, %1398
  store double %1402, ptr %1400, align 8, !tbaa !42
  %1403 = load ptr, ptr %8, align 8, !tbaa !5
  %1404 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1403, i32 0, i32 18
  %1405 = load i64, ptr %1404, align 8, !tbaa !86
  %1406 = load ptr, ptr %13, align 8, !tbaa !5
  %1407 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1406, i32 0, i32 6
  %1408 = load double, ptr %1407, align 8, !tbaa !139
  %1409 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1405, double noundef %1408)
  %1410 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1411 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1410, i32 0, i32 25
  %1412 = load double, ptr %1411, align 8, !tbaa !43
  %1413 = fadd double %1412, %1409
  store double %1413, ptr %1411, align 8, !tbaa !43
  %1414 = load ptr, ptr %8, align 8, !tbaa !5
  %1415 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1414, i32 0, i32 17
  %1416 = load i64, ptr %1415, align 8, !tbaa !87
  %1417 = load ptr, ptr %13, align 8, !tbaa !5
  %1418 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1417, i32 0, i32 10
  %1419 = load double, ptr %1418, align 8, !tbaa !140
  %1420 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1416, double noundef %1419)
  %1421 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1422 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1421, i32 0, i32 27
  %1423 = load double, ptr %1422, align 8, !tbaa !44
  %1424 = fadd double %1423, %1420
  store double %1424, ptr %1422, align 8, !tbaa !44
  %1425 = load ptr, ptr %8, align 8, !tbaa !5
  %1426 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1425, i32 0, i32 19
  %1427 = load i64, ptr %1426, align 8, !tbaa !88
  %1428 = load ptr, ptr %13, align 8, !tbaa !5
  %1429 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1428, i32 0, i32 4
  %1430 = load double, ptr %1429, align 8, !tbaa !141
  %1431 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1427, double noundef %1430)
  %1432 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1433 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1432, i32 0, i32 29
  %1434 = load double, ptr %1433, align 8, !tbaa !45
  %1435 = fadd double %1434, %1431
  store double %1435, ptr %1433, align 8, !tbaa !45
  %1436 = load ptr, ptr %13, align 8, !tbaa !5
  %1437 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1436, i32 0, i32 23
  %1438 = load double, ptr %1437, align 8, !tbaa !142
  %1439 = load ptr, ptr %13, align 8, !tbaa !5
  %1440 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1439, i32 0, i32 14
  %1441 = load double, ptr %1440, align 8, !tbaa !133
  %1442 = load ptr, ptr %13, align 8, !tbaa !5
  %1443 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1442, i32 0, i32 20
  %1444 = load double, ptr %1443, align 8, !tbaa !137
  %1445 = load ptr, ptr %13, align 8, !tbaa !5
  %1446 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1445, i32 0, i32 25
  %1447 = load double, ptr %1446, align 8, !tbaa !131
  %1448 = load ptr, ptr %8, align 8, !tbaa !5
  %1449 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1448, i32 0, i32 20
  %1450 = load i64, ptr %1449, align 8, !tbaa !89
  %1451 = sitofp i64 %1450 to double
  %1452 = load ptr, ptr %8, align 8, !tbaa !5
  %1453 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1452, i32 0, i32 24
  %1454 = load i64, ptr %1453, align 8, !tbaa !90
  %1455 = sitofp i64 %1454 to double
  %1456 = load ptr, ptr %8, align 8, !tbaa !5
  %1457 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1456, i32 0, i32 26
  %1458 = load i64, ptr %1457, align 8, !tbaa !91
  %1459 = sitofp i64 %1458 to double
  %1460 = load ptr, ptr %8, align 8, !tbaa !5
  %1461 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1460, i32 0, i32 28
  %1462 = load i64, ptr %1461, align 8, !tbaa !92
  %1463 = sitofp i64 %1462 to double
  %1464 = load ptr, ptr %8, align 8, !tbaa !5
  %1465 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1464, i32 0, i32 29
  %1466 = load i64, ptr %1465, align 8, !tbaa !93
  %1467 = sitofp i64 %1466 to double
  %1468 = load ptr, ptr %11, align 8, !tbaa !5
  %1469 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %1468, i32 0, i32 32
  %1470 = load double, ptr %1469, align 8, !tbaa !68
  %1471 = call noundef double @_ZN4Data16MemoryPowerModel9engy_srefEdddddddddd(double noundef %1438, double noundef %1441, double noundef %1444, double noundef %1447, double noundef %1451, double noundef %1455, double noundef %1459, double noundef %1463, double noundef %1467, double noundef %1470)
  %1472 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1473 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1472, i32 0, i32 31
  %1474 = load double, ptr %1473, align 8, !tbaa !46
  %1475 = fadd double %1474, %1471
  store double %1475, ptr %1473, align 8, !tbaa !46
  %1476 = load ptr, ptr %8, align 8, !tbaa !5
  %1477 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1476, i32 0, i32 24
  %1478 = load i64, ptr %1477, align 8, !tbaa !90
  %1479 = load ptr, ptr %13, align 8, !tbaa !5
  %1480 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1479, i32 0, i32 10
  %1481 = load double, ptr %1480, align 8, !tbaa !140
  %1482 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1478, double noundef %1481)
  %1483 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1484 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1483, i32 0, i32 35
  %1485 = load double, ptr %1484, align 8, !tbaa !48
  %1486 = fadd double %1485, %1482
  store double %1486, ptr %1484, align 8, !tbaa !48
  %1487 = load ptr, ptr %8, align 8, !tbaa !5
  %1488 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1487, i32 0, i32 26
  %1489 = load i64, ptr %1488, align 8, !tbaa !91
  %1490 = load ptr, ptr %13, align 8, !tbaa !5
  %1491 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1490, i32 0, i32 4
  %1492 = load double, ptr %1491, align 8, !tbaa !141
  %1493 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1489, double noundef %1492)
  %1494 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1495 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1494, i32 0, i32 37
  %1496 = load double, ptr %1495, align 8, !tbaa !49
  %1497 = fadd double %1496, %1493
  store double %1497, ptr %1495, align 8, !tbaa !49
  %1498 = load ptr, ptr %8, align 8, !tbaa !5
  %1499 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1498, i32 0, i32 28
  %1500 = load i64, ptr %1499, align 8, !tbaa !92
  %1501 = load ptr, ptr %13, align 8, !tbaa !5
  %1502 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1501, i32 0, i32 14
  %1503 = load double, ptr %1502, align 8, !tbaa !133
  %1504 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1500, double noundef %1503)
  %1505 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1506 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1505, i32 0, i32 43
  %1507 = load double, ptr %1506, align 8, !tbaa !52
  %1508 = fadd double %1507, %1504
  store double %1508, ptr %1506, align 8, !tbaa !52
  %1509 = load ptr, ptr %8, align 8, !tbaa !5
  %1510 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1509, i32 0, i32 29
  %1511 = load i64, ptr %1510, align 8, !tbaa !93
  %1512 = load ptr, ptr %13, align 8, !tbaa !5
  %1513 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1512, i32 0, i32 8
  %1514 = load double, ptr %1513, align 8, !tbaa !134
  %1515 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1511, double noundef %1514)
  %1516 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1517 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1516, i32 0, i32 45
  %1518 = load double, ptr %1517, align 8, !tbaa !53
  %1519 = fadd double %1518, %1515
  store double %1519, ptr %1517, align 8, !tbaa !53
  %1520 = load ptr, ptr %8, align 8, !tbaa !5
  %1521 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1520, i32 0, i32 23
  %1522 = load i64, ptr %1521, align 8, !tbaa !123
  %1523 = load ptr, ptr %13, align 8, !tbaa !5
  %1524 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1523, i32 0, i32 8
  %1525 = load double, ptr %1524, align 8, !tbaa !134
  %1526 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1522, double noundef %1525)
  %1527 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1528 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1527, i32 0, i32 39
  %1529 = load double, ptr %1528, align 8, !tbaa !50
  %1530 = fadd double %1529, %1526
  store double %1530, ptr %1528, align 8, !tbaa !50
  %1531 = load ptr, ptr %8, align 8, !tbaa !5
  %1532 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1531, i32 0, i32 21
  %1533 = load i64, ptr %1532, align 8, !tbaa !124
  %1534 = load ptr, ptr %13, align 8, !tbaa !5
  %1535 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1534, i32 0, i32 14
  %1536 = load double, ptr %1535, align 8, !tbaa !133
  %1537 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1533, double noundef %1536)
  %1538 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1539 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1538, i32 0, i32 47
  %1540 = load double, ptr %1539, align 8, !tbaa !54
  %1541 = fadd double %1540, %1537
  store double %1541, ptr %1539, align 8, !tbaa !54
  %1542 = load ptr, ptr %8, align 8, !tbaa !5
  %1543 = getelementptr inbounds %"class.Data::CommandAnalysis", ptr %1542, i32 0, i32 22
  %1544 = load i64, ptr %1543, align 8, !tbaa !125
  %1545 = load ptr, ptr %13, align 8, !tbaa !5
  %1546 = getelementptr inbounds %"class.Data::MemPowerSpec", ptr %1545, i32 0, i32 8
  %1547 = load double, ptr %1546, align 8, !tbaa !134
  %1548 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef %1544, double noundef %1547)
  %1549 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1550 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1549, i32 0, i32 49
  %1551 = load double, ptr %1550, align 8, !tbaa !55
  %1552 = fadd double %1551, %1548
  store double %1552, ptr %1550, align 8, !tbaa !55
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #4
  br label %1570

1553:                                             ; preds = %1248, %1238
  %1554 = landingpad { ptr, i32 }
          cleanup
  %1555 = extractvalue { ptr, i32 } %1554, 0
  store ptr %1555, ptr %46, align 8
  %1556 = extractvalue { ptr, i32 } %1554, 1
  store i32 %1556, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #4
  br label %1569

1557:                                             ; preds = %1269, %1261
  %1558 = landingpad { ptr, i32 }
          cleanup
  %1559 = extractvalue { ptr, i32 } %1558, 0
  store ptr %1559, ptr %46, align 8
  %1560 = extractvalue { ptr, i32 } %1558, 1
  store i32 %1560, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #4
  br label %1569

1561:                                             ; preds = %1294, %1286
  %1562 = landingpad { ptr, i32 }
          cleanup
  %1563 = extractvalue { ptr, i32 } %1562, 0
  store ptr %1563, ptr %46, align 8
  %1564 = extractvalue { ptr, i32 } %1562, 1
  store i32 %1564, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #4
  br label %1569

1565:                                             ; preds = %1313, %1305
  %1566 = landingpad { ptr, i32 }
          cleanup
  %1567 = extractvalue { ptr, i32 } %1566, 0
  store ptr %1567, ptr %46, align 8
  %1568 = extractvalue { ptr, i32 } %1566, 1
  store i32 %1568, ptr %47, align 4
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #4
  br label %1569

1569:                                             ; preds = %1565, %1561, %1557, %1553
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #4
  br label %1832

1570:                                             ; preds = %1324, %1078
  %1571 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1572 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1571, i32 0, i32 35
  %1573 = load double, ptr %1572, align 8, !tbaa !48
  %1574 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1575 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1574, i32 0, i32 37
  %1576 = load double, ptr %1575, align 8, !tbaa !49
  %1577 = fadd double %1573, %1576
  %1578 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1579 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1578, i32 0, i32 33
  store double %1577, ptr %1579, align 8, !tbaa !47
  %1580 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1581 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1580, i32 0, i32 43
  %1582 = load double, ptr %1581, align 8, !tbaa !52
  %1583 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1584 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1583, i32 0, i32 45
  %1585 = load double, ptr %1584, align 8, !tbaa !53
  %1586 = fadd double %1582, %1585
  %1587 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1588 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1587, i32 0, i32 41
  store double %1586, ptr %1588, align 8, !tbaa !51
  %1589 = load ptr, ptr %10, align 8, !tbaa !5
  %1590 = getelementptr inbounds %"class.Data::MemBankWiseParams", ptr %1589, i32 0, i32 3
  %1591 = load i8, ptr %1590, align 8, !tbaa !143, !range !129, !noundef !130
  %1592 = trunc i8 %1591 to i1
  br i1 %1592, label %1593, label %1718

1593:                                             ; preds = %1570
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #4
  store i32 0, ptr %69, align 4, !tbaa !9
  br label %1594

1594:                                             ; preds = %1700, %1593
  %1595 = load i32, ptr %69, align 4, !tbaa !9
  %1596 = zext i32 %1595 to i64
  %1597 = load i64, ptr %14, align 8, !tbaa !23
  %1598 = icmp slt i64 %1596, %1597
  br i1 %1598, label %1600, label %1599

1599:                                             ; preds = %1594
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  br label %1703

1600:                                             ; preds = %1594
  %1601 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1602 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1601, i32 0, i32 1
  %1603 = load i32, ptr %69, align 4, !tbaa !9
  %1604 = zext i32 %1603 to i64
  %1605 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1602, i64 noundef %1604) #4
  %1606 = load double, ptr %1605, align 8, !tbaa !24
  %1607 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1608 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1607, i32 0, i32 3
  %1609 = load i32, ptr %69, align 4, !tbaa !9
  %1610 = zext i32 %1609 to i64
  %1611 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1608, i64 noundef %1610) #4
  %1612 = load double, ptr %1611, align 8, !tbaa !24
  %1613 = fadd double %1606, %1612
  %1614 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1615 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1614, i32 0, i32 5
  %1616 = load i32, ptr %69, align 4, !tbaa !9
  %1617 = zext i32 %1616 to i64
  %1618 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1615, i64 noundef %1617) #4
  %1619 = load double, ptr %1618, align 8, !tbaa !24
  %1620 = fadd double %1613, %1619
  %1621 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1622 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1621, i32 0, i32 9
  %1623 = load i32, ptr %69, align 4, !tbaa !9
  %1624 = zext i32 %1623 to i64
  %1625 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1622, i64 noundef %1624) #4
  %1626 = load double, ptr %1625, align 8, !tbaa !24
  %1627 = fadd double %1620, %1626
  %1628 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1629 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1628, i32 0, i32 7
  %1630 = load i32, ptr %69, align 4, !tbaa !9
  %1631 = zext i32 %1630 to i64
  %1632 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1629, i64 noundef %1631) #4
  %1633 = load double, ptr %1632, align 8, !tbaa !24
  %1634 = fadd double %1627, %1633
  %1635 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1636 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1635, i32 0, i32 10
  %1637 = load i32, ptr %69, align 4, !tbaa !9
  %1638 = zext i32 %1637 to i64
  %1639 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1636, i64 noundef %1638) #4
  %1640 = load double, ptr %1639, align 8, !tbaa !24
  %1641 = fadd double %1634, %1640
  %1642 = load ptr, ptr %12, align 8, !tbaa !5
  %1643 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %1642, i32 0, i32 3
  %1644 = load i64, ptr %1643, align 8, !tbaa !69
  %1645 = sitofp i64 %1644 to double
  %1646 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1647 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1646, i32 0, i32 12
  %1648 = load i32, ptr %69, align 4, !tbaa !9
  %1649 = zext i32 %1648 to i64
  %1650 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1647, i64 noundef %1649) #4
  %1651 = load double, ptr %1650, align 8, !tbaa !24
  %1652 = call double @llvm.fmuladd.f64(double %1645, double %1651, double %1641)
  %1653 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1654 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1653, i32 0, i32 14
  %1655 = load i32, ptr %69, align 4, !tbaa !9
  %1656 = zext i32 %1655 to i64
  %1657 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1654, i64 noundef %1656) #4
  %1658 = load double, ptr %1657, align 8, !tbaa !24
  %1659 = fadd double %1652, %1658
  %1660 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1661 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1660, i32 0, i32 26
  %1662 = load i32, ptr %69, align 4, !tbaa !9
  %1663 = zext i32 %1662 to i64
  %1664 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1661, i64 noundef %1663) #4
  %1665 = load double, ptr %1664, align 8, !tbaa !24
  %1666 = fadd double %1659, %1665
  %1667 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1668 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1667, i32 0, i32 28
  %1669 = load i32, ptr %69, align 4, !tbaa !9
  %1670 = zext i32 %1669 to i64
  %1671 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1668, i64 noundef %1670) #4
  %1672 = load double, ptr %1671, align 8, !tbaa !24
  %1673 = fadd double %1666, %1672
  %1674 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1675 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1674, i32 0, i32 30
  %1676 = load i32, ptr %69, align 4, !tbaa !9
  %1677 = zext i32 %1676 to i64
  %1678 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1675, i64 noundef %1677) #4
  %1679 = load double, ptr %1678, align 8, !tbaa !24
  %1680 = fadd double %1673, %1679
  %1681 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1682 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1681, i32 0, i32 34
  %1683 = load i32, ptr %69, align 4, !tbaa !9
  %1684 = zext i32 %1683 to i64
  %1685 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1682, i64 noundef %1684) #4
  %1686 = load double, ptr %1685, align 8, !tbaa !24
  %1687 = fadd double %1680, %1686
  %1688 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1689 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1688, i32 0, i32 42
  %1690 = load i32, ptr %69, align 4, !tbaa !9
  %1691 = zext i32 %1690 to i64
  %1692 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1689, i64 noundef %1691) #4
  %1693 = load double, ptr %1692, align 8, !tbaa !24
  %1694 = fadd double %1687, %1693
  %1695 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1696 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1695, i32 0, i32 20
  %1697 = load i32, ptr %69, align 4, !tbaa !9
  %1698 = zext i32 %1697 to i64
  %1699 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1696, i64 noundef %1698) #4
  store double %1694, ptr %1699, align 8, !tbaa !24
  br label %1700

1700:                                             ; preds = %1600
  %1701 = load i32, ptr %69, align 4, !tbaa !9
  %1702 = add i32 %1701, 1
  store i32 %1702, ptr %69, align 4, !tbaa !9
  br label %1594, !llvm.loop !144

1703:                                             ; preds = %1599
  %1704 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1705 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1704, i32 0, i32 20
  call void @_ZNSt6vectorIdSaIdEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(24) %1705)
  %1706 = invoke noundef double @_ZNK4Data16MemoryPowerModel3sumIdEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %70)
          to label %1707 unwind label %1714

1707:                                             ; preds = %1703
  %1708 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1709 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1708, i32 0, i32 55
  %1710 = load double, ptr %1709, align 8, !tbaa !64
  %1711 = fadd double %1706, %1710
  %1712 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1713 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1712, i32 0, i32 21
  store double %1711, ptr %1713, align 8, !tbaa !41
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #4
  br label %1793

1714:                                             ; preds = %1703
  %1715 = landingpad { ptr, i32 }
          cleanup
  %1716 = extractvalue { ptr, i32 } %1715, 0
  store ptr %1716, ptr %46, align 8
  %1717 = extractvalue { ptr, i32 } %1715, 1
  store i32 %1717, ptr %47, align 4
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #4
  br label %1832

1718:                                             ; preds = %1570
  %1719 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1720 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1719, i32 0, i32 0
  %1721 = load double, ptr %1720, align 8, !tbaa !25
  %1722 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1723 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1722, i32 0, i32 2
  %1724 = load double, ptr %1723, align 8, !tbaa !33
  %1725 = fadd double %1721, %1724
  %1726 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1727 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1726, i32 0, i32 4
  %1728 = load double, ptr %1727, align 8, !tbaa !34
  %1729 = fadd double %1725, %1728
  %1730 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1731 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1730, i32 0, i32 6
  %1732 = load double, ptr %1731, align 8, !tbaa !35
  %1733 = fadd double %1729, %1732
  %1734 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1735 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1734, i32 0, i32 8
  %1736 = load double, ptr %1735, align 8, !tbaa !36
  %1737 = fadd double %1733, %1736
  %1738 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1739 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1738, i32 0, i32 55
  %1740 = load double, ptr %1739, align 8, !tbaa !64
  %1741 = fadd double %1737, %1740
  %1742 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1743 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1742, i32 0, i32 10
  call void @_ZNSt6vectorIdSaIdEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 8 dereferenceable(24) %1743)
  %1744 = invoke noundef double @_ZNK4Data16MemoryPowerModel3sumIdEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %72, ptr noundef %71)
          to label %1745 unwind label %1789

1745:                                             ; preds = %1718
  %1746 = fadd double %1741, %1744
  %1747 = load ptr, ptr %12, align 8, !tbaa !5
  %1748 = getelementptr inbounds %"class.Data::MemArchitectureSpec", ptr %1747, i32 0, i32 3
  %1749 = load i64, ptr %1748, align 8, !tbaa !69
  %1750 = sitofp i64 %1749 to double
  %1751 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1752 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1751, i32 0, i32 11
  %1753 = load double, ptr %1752, align 8, !tbaa !37
  %1754 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1755 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1754, i32 0, i32 13
  %1756 = load double, ptr %1755, align 8, !tbaa !38
  %1757 = fadd double %1753, %1756
  %1758 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1759 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1758, i32 0, i32 31
  %1760 = load double, ptr %1759, align 8, !tbaa !46
  %1761 = fadd double %1757, %1760
  %1762 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1763 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1762, i32 0, i32 23
  %1764 = load double, ptr %1763, align 8, !tbaa !42
  %1765 = fadd double %1761, %1764
  %1766 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1767 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1766, i32 0, i32 25
  %1768 = load double, ptr %1767, align 8, !tbaa !43
  %1769 = fadd double %1765, %1768
  %1770 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1771 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1770, i32 0, i32 27
  %1772 = load double, ptr %1771, align 8, !tbaa !44
  %1773 = fadd double %1769, %1772
  %1774 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1775 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1774, i32 0, i32 29
  %1776 = load double, ptr %1775, align 8, !tbaa !45
  %1777 = fadd double %1773, %1776
  %1778 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1779 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1778, i32 0, i32 33
  %1780 = load double, ptr %1779, align 8, !tbaa !47
  %1781 = fadd double %1777, %1780
  %1782 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1783 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1782, i32 0, i32 41
  %1784 = load double, ptr %1783, align 8, !tbaa !51
  %1785 = fadd double %1781, %1784
  %1786 = call double @llvm.fmuladd.f64(double %1750, double %1785, double %1746)
  %1787 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1788 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1787, i32 0, i32 21
  store double %1786, ptr %1788, align 8, !tbaa !41
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #4
  br label %1793

1789:                                             ; preds = %1718
  %1790 = landingpad { ptr, i32 }
          cleanup
  %1791 = extractvalue { ptr, i32 } %1790, 0
  store ptr %1791, ptr %46, align 8
  %1792 = extractvalue { ptr, i32 } %1790, 1
  store i32 %1792, ptr %47, align 4
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #4
  br label %1832

1793:                                             ; preds = %1745, %1707
  %1794 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1795 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1794, i32 0, i32 21
  %1796 = load double, ptr %1795, align 8, !tbaa !41
  %1797 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 1
  %1798 = load i64, ptr %1797, align 8, !tbaa !94
  %1799 = sitofp i64 %1798 to double
  %1800 = load ptr, ptr %11, align 8, !tbaa !5
  %1801 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %1800, i32 0, i32 32
  %1802 = load double, ptr %1801, align 8, !tbaa !68
  %1803 = fmul double %1799, %1802
  %1804 = fdiv double %1796, %1803
  %1805 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 3
  %1806 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %1805, i32 0, i32 5
  store double %1804, ptr %1806, align 8, !tbaa !145
  %1807 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 1
  %1808 = load i64, ptr %1807, align 8, !tbaa !94
  %1809 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 0
  %1810 = load i64, ptr %1809, align 8, !tbaa !146
  %1811 = add nsw i64 %1810, %1808
  store i64 %1811, ptr %1809, align 8, !tbaa !146
  %1812 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1813 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1812, i32 0, i32 21
  %1814 = load double, ptr %1813, align 8, !tbaa !41
  %1815 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1816 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1815, i32 0, i32 19
  %1817 = load double, ptr %1816, align 8, !tbaa !147
  %1818 = fadd double %1817, %1814
  store double %1818, ptr %1816, align 8, !tbaa !147
  %1819 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 2
  %1820 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Energy", ptr %1819, i32 0, i32 19
  %1821 = load double, ptr %1820, align 8, !tbaa !147
  %1822 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 0
  %1823 = load i64, ptr %1822, align 8, !tbaa !146
  %1824 = sitofp i64 %1823 to double
  %1825 = load ptr, ptr %11, align 8, !tbaa !5
  %1826 = getelementptr inbounds %"class.Data::MemTimingSpec", ptr %1825, i32 0, i32 32
  %1827 = load double, ptr %1826, align 8, !tbaa !68
  %1828 = fmul double %1824, %1827
  %1829 = fdiv double %1821, %1828
  %1830 = getelementptr inbounds %"class.Data::MemoryPowerModel", ptr %72, i32 0, i32 3
  %1831 = getelementptr inbounds %"struct.Data::MemoryPowerModel::Power", ptr %1830, i32 0, i32 4
  store double %1829, ptr %1831, align 8, !tbaa !148
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  ret void

1832:                                             ; preds = %1789, %1714, %1569
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  br label %1833

1833:                                             ; preds = %1832, %635, %631, %627, %623
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #4
  br label %1834

1834:                                             ; preds = %1833, %374
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  br label %1835

1835:                                             ; preds = %1834
  %1836 = load ptr, ptr %46, align 8
  %1837 = load i32, ptr %47, align 4
  %1838 = insertvalue { ptr, i32 } poison, ptr %1836, 0
  %1839 = insertvalue { ptr, i32 } %1838, i32 %1837, 1
  resume { ptr, i32 } %1839
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Data16MemoryPowerModel13io_term_powerERKNS_19MemorySpecificationE(ptr noundef nonnull align 8 dereferenceable(912), ptr noundef nonnull align 8 dereferenceable(736)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK4Data16MemoryPowerModel16calcIoTermEnergyElddl(ptr noundef nonnull align 8 dereferenceable(912), i64 noundef, double noundef, double noundef, i64 noundef) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Data12EnergyDomainC2Edd(ptr noundef nonnull align 8 dereferenceable(16), double noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, double noundef) #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN4Data16MemoryPowerModel15engy_sref_banksEdddddddddddRKNS_17MemBankWiseParamsEjl(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(42), i32 noundef, i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN4Data16MemoryPowerModel9engy_srefEdddddddddd(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !15, i64 64}
!12 = !{!"_ZTSN4Data19MemorySpecificationE", !13, i64 8, !16, i64 40, !18, i64 48, !20, i64 160, !22, i64 456}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !14, i64 0, !15, i64 8, !7, i64 16}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTSN4Data10MemoryTypeE", !17, i64 0}
!17 = !{!"_ZTSN4Data10MemoryType12MemoryType_tE", !7, i64 0}
!18 = !{!"_ZTSN4Data19MemArchitectureSpecE", !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !19, i64 72, !19, i64 73, !19, i64 74}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"_ZTSN4Data13MemTimingSpecE", !21, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !15, i64 120, !15, i64 128, !15, i64 136, !15, i64 144, !15, i64 152, !15, i64 160, !15, i64 168, !15, i64 176, !15, i64 184, !15, i64 192, !15, i64 200, !15, i64 208, !15, i64 216, !15, i64 224, !15, i64 232, !15, i64 240, !15, i64 248, !21, i64 256}
!21 = !{!"double", !7, i64 0}
!22 = !{!"_ZTSN4Data12MemPowerSpecE", !21, i64 8, !21, i64 16, !21, i64 24, !21, i64 32, !21, i64 40, !21, i64 48, !21, i64 56, !21, i64 64, !21, i64 72, !21, i64 80, !21, i64 88, !21, i64 96, !21, i64 104, !21, i64 112, !21, i64 120, !21, i64 128, !21, i64 136, !21, i64 144, !21, i64 152, !21, i64 160, !21, i64 168, !21, i64 176, !21, i64 184, !21, i64 192, !21, i64 200, !21, i64 208, !21, i64 216, !21, i64 224, !21, i64 232, !21, i64 240}
!23 = !{!15, !15, i64 0}
!24 = !{!21, !21, i64 0}
!25 = !{!26, !21, i64 16}
!26 = !{!"_ZTSN4Data16MemoryPowerModelE", !15, i64 0, !15, i64 8, !27, i64 16, !32, i64 864}
!27 = !{!"_ZTSN4Data16MemoryPowerModel6EnergyE", !21, i64 0, !28, i64 8, !21, i64 32, !28, i64 40, !21, i64 64, !28, i64 72, !21, i64 96, !28, i64 104, !21, i64 128, !28, i64 136, !28, i64 160, !21, i64 184, !28, i64 192, !21, i64 216, !28, i64 224, !21, i64 248, !28, i64 256, !21, i64 280, !28, i64 288, !21, i64 312, !28, i64 320, !21, i64 344, !21, i64 352, !21, i64 360, !28, i64 368, !21, i64 392, !28, i64 400, !21, i64 424, !28, i64 432, !21, i64 456, !28, i64 464, !21, i64 488, !28, i64 496, !21, i64 520, !28, i64 528, !21, i64 552, !28, i64 560, !21, i64 584, !28, i64 592, !21, i64 616, !28, i64 624, !21, i64 648, !28, i64 656, !21, i64 680, !28, i64 688, !21, i64 712, !28, i64 720, !21, i64 744, !28, i64 752, !21, i64 776, !28, i64 784, !21, i64 808, !21, i64 816, !21, i64 824, !21, i64 832, !21, i64 840}
!28 = !{!"_ZTSSt6vectorIdSaIdEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSN4Data16MemoryPowerModel5PowerE", !21, i64 0, !21, i64 8, !21, i64 16, !21, i64 24, !21, i64 32, !21, i64 40}
!33 = !{!26, !21, i64 48}
!34 = !{!26, !21, i64 80}
!35 = !{!26, !21, i64 112}
!36 = !{!26, !21, i64 144}
!37 = !{!26, !21, i64 200}
!38 = !{!26, !21, i64 232}
!39 = !{!26, !21, i64 264}
!40 = !{!26, !21, i64 296}
!41 = !{!26, !21, i64 360}
!42 = !{!26, !21, i64 376}
!43 = !{!26, !21, i64 408}
!44 = !{!26, !21, i64 440}
!45 = !{!26, !21, i64 472}
!46 = !{!26, !21, i64 504}
!47 = !{!26, !21, i64 536}
!48 = !{!26, !21, i64 568}
!49 = !{!26, !21, i64 600}
!50 = !{!26, !21, i64 632}
!51 = !{!26, !21, i64 664}
!52 = !{!26, !21, i64 696}
!53 = !{!26, !21, i64 728}
!54 = !{!26, !21, i64 760}
!55 = !{!26, !21, i64 792}
!56 = !{!26, !21, i64 864}
!57 = !{!26, !21, i64 872}
!58 = !{!26, !21, i64 880}
!59 = !{!26, !21, i64 888}
!60 = !{!26, !21, i64 824}
!61 = !{!26, !21, i64 832}
!62 = !{!26, !21, i64 840}
!63 = !{!26, !21, i64 848}
!64 = !{!26, !21, i64 856}
!65 = !{!18, !15, i64 8}
!66 = !{!18, !15, i64 32}
!67 = !{!18, !15, i64 56}
!68 = !{!20, !21, i64 256}
!69 = !{!18, !15, i64 24}
!70 = !{!71, !15, i64 136}
!71 = !{!"_ZTSN4Data15CommandAnalysisE", !72, i64 0, !72, i64 24, !72, i64 48, !72, i64 72, !15, i64 96, !72, i64 104, !15, i64 128, !15, i64 136, !72, i64 144, !15, i64 168, !15, i64 176, !15, i64 184, !15, i64 192, !15, i64 200, !15, i64 208, !15, i64 216, !15, i64 224, !15, i64 232, !15, i64 240, !15, i64 248, !15, i64 256, !15, i64 264, !15, i64 272, !15, i64 280, !15, i64 288, !15, i64 296, !15, i64 304, !15, i64 312, !15, i64 320, !15, i64 328, !12, i64 336, !15, i64 1104, !76, i64 1112, !76, i64 1136, !76, i64 1160, !80, i64 1184, !80, i64 1208, !72, i64 1232, !15, i64 1256, !15, i64 1264, !15, i64 1272, !15, i64 1280, !15, i64 1288, !15, i64 1296, !15, i64 1304, !15, i64 1312, !15, i64 1320, !15, i64 1328, !10, i64 1336, !15, i64 1344, !15, i64 1352, !72, i64 1360, !15, i64 1384}
!72 = !{!"_ZTSSt6vectorIlSaIlEE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!76 = !{!"_ZTSSt6vectorIN4Data10MemCommandESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSSt12_Vector_baseIN4Data10MemCommandESaIS1_EE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN4Data10MemCommandESaIS1_EE12_Vector_implE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN4Data10MemCommandESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!80 = !{!"_ZTSSt6vectorIN4Data15CommandAnalysis9BankStateESaIS2_EE", !81, i64 0}
!81 = !{!"_ZTSSt12_Vector_baseIN4Data15CommandAnalysis9BankStateESaIS2_EE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIN4Data15CommandAnalysis9BankStateESaIS2_EE12_Vector_implE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIN4Data15CommandAnalysis9BankStateESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!84 = !{!71, !15, i64 128}
!85 = !{!71, !15, i64 224}
!86 = !{!71, !15, i64 240}
!87 = !{!71, !15, i64 232}
!88 = !{!71, !15, i64 248}
!89 = !{!71, !15, i64 256}
!90 = !{!71, !15, i64 288}
!91 = !{!71, !15, i64 304}
!92 = !{!71, !15, i64 320}
!93 = !{!71, !15, i64 328}
!94 = !{!26, !15, i64 8}
!95 = !{!22, !21, i64 192}
!96 = !{!20, !15, i64 160}
!97 = !{!22, !21, i64 8}
!98 = !{!22, !21, i64 104}
!99 = !{!20, !15, i64 16}
!100 = !{!22, !21, i64 56}
!101 = !{!22, !21, i64 120}
!102 = !{!22, !21, i64 136}
!103 = !{!71, !15, i64 96}
!104 = !{!20, !15, i64 144}
!105 = !{!22, !21, i64 152}
!106 = !{!107, !15, i64 24}
!107 = !{!"_ZTSN4Data17MemBankWiseParamsE", !108, i64 0, !15, i64 24, !15, i64 32, !19, i64 40, !19, i64 41}
!108 = !{!"_ZTSSt6vectorIjSaIjEE", !109, i64 0}
!109 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !110, i64 0}
!110 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !111, i64 0}
!111 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!112 = !{!107, !15, i64 32}
!113 = !{!22, !21, i64 176}
!114 = !{!22, !21, i64 168}
!115 = !{!20, !15, i64 152}
!116 = !{!20, !15, i64 136}
!117 = !{!71, !15, i64 168}
!118 = !{!71, !15, i64 176}
!119 = !{!22, !21, i64 88}
!120 = !{!22, !21, i64 40}
!121 = !{!22, !21, i64 72}
!122 = !{!22, !21, i64 24}
!123 = !{!71, !15, i64 280}
!124 = !{!71, !15, i64 264}
!125 = !{!71, !15, i64 272}
!126 = distinct !{!126, !127}
!127 = !{!"llvm.loop.mustprogress"}
!128 = !{!18, !19, i64 73}
!129 = !{i8 0, i8 2}
!130 = !{}
!131 = !{!22, !21, i64 200}
!132 = !{!22, !21, i64 16}
!133 = !{!22, !21, i64 112}
!134 = !{!22, !21, i64 64}
!135 = !{!22, !21, i64 128}
!136 = !{!22, !21, i64 144}
!137 = !{!22, !21, i64 160}
!138 = !{!22, !21, i64 96}
!139 = !{!22, !21, i64 48}
!140 = !{!22, !21, i64 80}
!141 = !{!22, !21, i64 32}
!142 = !{!22, !21, i64 184}
!143 = !{!107, !19, i64 40}
!144 = distinct !{!144, !127}
!145 = !{!26, !21, i64 904}
!146 = !{!26, !15, i64 0}
!147 = !{!26, !21, i64 328}
!148 = !{!26, !21, i64 896}


; 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::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::EnergyDomain" = type { double, double }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Data16MemoryPowerModel10power_calcERKNS_19MemorySpecificationERKNS_15CommandAnalysisEiRKNS_17MemBankWiseParamsE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull align 8 dereferenceable(736) %1, ptr noundef nonnull align 8 dereferenceable(1392) %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(42) %4) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca %"class.std::vector.8", align 8
  %33 = alloca %"class.std::vector.8", align 8
  %34 = alloca %"class.std::vector.8", align 8
  %35 = alloca %"class.std::vector.8", align 8
  %36 = alloca %"class.Data::EnergyDomain", align 8
  %37 = alloca %"class.std::vector.8", align 8
  %38 = alloca %"class.std::vector.8", align 8
  %39 = alloca %"class.std::vector.8", align 8
  %40 = alloca %"class.std::vector.8", align 8
  %41 = alloca %"class.Data::EnergyDomain", align 8
  %42 = alloca %"class.std::vector.8", align 8
  %43 = alloca %"class.std::vector.8", align 8
  %44 = alloca %"class.std::vector.8", align 8
  %45 = alloca %"class.std::vector.8", align 8
  %46 = alloca %"class.std::vector", align 8
  %47 = alloca %"class.std::vector", align 8
  %48 = getelementptr inbounds i8, ptr %1, i64 64
  %49 = load i64, ptr %48, align 8, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %0, i64 16
  %51 = getelementptr inbounds i8, ptr %0, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  store double 0.000000e+00, ptr %6, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %6)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  %52 = getelementptr inbounds i8, ptr %0, i64 56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  store double 0.000000e+00, ptr %7, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %7)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  %53 = getelementptr inbounds i8, ptr %0, i64 88
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  store double 0.000000e+00, ptr %8, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %8)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  %54 = getelementptr inbounds i8, ptr %0, i64 120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  store double 0.000000e+00, ptr %9, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  %55 = getelementptr inbounds i8, ptr %0, i64 152
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  store double 0.000000e+00, ptr %10, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %10)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  %56 = getelementptr inbounds i8, ptr %0, i64 176
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  store double 0.000000e+00, ptr %11, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %11)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  %57 = getelementptr inbounds i8, ptr %0, i64 208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  store double 0.000000e+00, ptr %12, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  %58 = getelementptr inbounds i8, ptr %0, i64 240
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  store double 0.000000e+00, ptr %13, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %13)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  %59 = getelementptr inbounds i8, ptr %0, i64 272
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  store double 0.000000e+00, ptr %14, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  %60 = getelementptr inbounds i8, ptr %0, i64 304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  store double 0.000000e+00, ptr %15, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %60, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  %61 = getelementptr inbounds i8, ptr %0, i64 384
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  store double 0.000000e+00, ptr %16, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %16)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  %62 = getelementptr inbounds i8, ptr %0, i64 416
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  store double 0.000000e+00, ptr %17, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %17)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  %63 = getelementptr inbounds i8, ptr %0, i64 448
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  store double 0.000000e+00, ptr %18, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  %64 = getelementptr inbounds i8, ptr %0, i64 480
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  store double 0.000000e+00, ptr %19, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %19)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  store double 0.000000e+00, ptr %20, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %20)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  %65 = getelementptr inbounds i8, ptr %0, i64 512
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  store double 0.000000e+00, ptr %21, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %21)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  %66 = getelementptr inbounds i8, ptr %0, i64 544
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  store double 0.000000e+00, ptr %22, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  %67 = getelementptr inbounds i8, ptr %0, i64 576
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  store double 0.000000e+00, ptr %23, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %23)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  %68 = getelementptr inbounds i8, ptr %0, i64 608
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  store double 0.000000e+00, ptr %24, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %24)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  %69 = getelementptr inbounds i8, ptr %0, i64 640
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  store double 0.000000e+00, ptr %25, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %25)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  %70 = getelementptr inbounds i8, ptr %0, i64 672
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  store double 0.000000e+00, ptr %26, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %26)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  %71 = getelementptr inbounds i8, ptr %0, i64 704
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  store double 0.000000e+00, ptr %27, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %71, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %27)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  %72 = getelementptr inbounds i8, ptr %0, i64 736
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  store double 0.000000e+00, ptr %28, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %28)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  %73 = getelementptr inbounds i8, ptr %0, i64 768
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  store double 0.000000e+00, ptr %29, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %29)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  %74 = getelementptr inbounds i8, ptr %0, i64 800
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  store double 0.000000e+00, ptr %30, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %30)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  %75 = getelementptr inbounds i8, ptr %0, i64 336
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  store double 0.000000e+00, ptr %31, align 8, !tbaa !20
  call void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef %49, ptr noundef nonnull align 8 dereferenceable(8) %31)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  store double 0.000000e+00, ptr %50, align 8, !tbaa !21
  %76 = getelementptr inbounds i8, ptr %0, i64 48
  store double 0.000000e+00, ptr %76, align 8, !tbaa !29
  %77 = getelementptr inbounds i8, ptr %0, i64 80
  store double 0.000000e+00, ptr %77, align 8, !tbaa !30
  %78 = getelementptr inbounds i8, ptr %0, i64 112
  store double 0.000000e+00, ptr %78, align 8, !tbaa !31
  %79 = getelementptr inbounds i8, ptr %0, i64 144
  store double 0.000000e+00, ptr %79, align 8, !tbaa !32
  %80 = getelementptr inbounds i8, ptr %0, i64 200
  store double 0.000000e+00, ptr %80, align 8, !tbaa !33
  %81 = getelementptr inbounds i8, ptr %0, i64 232
  store double 0.000000e+00, ptr %81, align 8, !tbaa !34
  %82 = getelementptr inbounds i8, ptr %0, i64 264
  store double 0.000000e+00, ptr %82, align 8, !tbaa !35
  %83 = getelementptr inbounds i8, ptr %0, i64 296
  store double 0.000000e+00, ptr %83, align 8, !tbaa !36
  %84 = getelementptr inbounds i8, ptr %0, i64 360
  store double 0.000000e+00, ptr %84, align 8, !tbaa !37
  %85 = getelementptr inbounds i8, ptr %0, i64 376
  store double 0.000000e+00, ptr %85, align 8, !tbaa !38
  %86 = getelementptr inbounds i8, ptr %0, i64 408
  store double 0.000000e+00, ptr %86, align 8, !tbaa !39
  %87 = getelementptr inbounds i8, ptr %0, i64 440
  store double 0.000000e+00, ptr %87, align 8, !tbaa !40
  %88 = getelementptr inbounds i8, ptr %0, i64 472
  store double 0.000000e+00, ptr %88, align 8, !tbaa !41
  %89 = getelementptr inbounds i8, ptr %0, i64 504
  store double 0.000000e+00, ptr %89, align 8, !tbaa !42
  %90 = getelementptr inbounds i8, ptr %0, i64 536
  store double 0.000000e+00, ptr %90, align 8, !tbaa !43
  %91 = getelementptr inbounds i8, ptr %0, i64 568
  store double 0.000000e+00, ptr %91, align 8, !tbaa !44
  %92 = getelementptr inbounds i8, ptr %0, i64 600
  store double 0.000000e+00, ptr %92, align 8, !tbaa !45
  %93 = getelementptr inbounds i8, ptr %0, i64 632
  store double 0.000000e+00, ptr %93, align 8, !tbaa !46
  %94 = getelementptr inbounds i8, ptr %0, i64 664
  store double 0.000000e+00, ptr %94, align 8, !tbaa !47
  %95 = getelementptr inbounds i8, ptr %0, i64 696
  store double 0.000000e+00, ptr %95, align 8, !tbaa !48
  %96 = getelementptr inbounds i8, ptr %0, i64 728
  store double 0.000000e+00, ptr %96, align 8, !tbaa !49
  %97 = getelementptr inbounds i8, ptr %0, i64 760
  store double 0.000000e+00, ptr %97, align 8, !tbaa !50
  %98 = getelementptr inbounds i8, ptr %0, i64 792
  store double 0.000000e+00, ptr %98, align 8, !tbaa !51
  %99 = getelementptr inbounds i8, ptr %0, i64 864
  %100 = getelementptr inbounds i8, ptr %0, i64 872
  %101 = getelementptr inbounds i8, ptr %0, i64 880
  %102 = getelementptr inbounds i8, ptr %0, i64 888
  %103 = getelementptr inbounds i8, ptr %0, i64 824
  %104 = getelementptr inbounds i8, ptr %0, i64 832
  %105 = getelementptr inbounds i8, ptr %0, i64 840
  %106 = getelementptr inbounds i8, ptr %0, i64 848
  %107 = getelementptr inbounds i8, ptr %0, i64 856
  %108 = getelementptr inbounds i8, ptr %1, i64 56
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %103, i8 0, i64 72, i1 false)
  %109 = load i64, ptr %108, align 8, !tbaa !52
  %110 = getelementptr inbounds i8, ptr %1, i64 80
  %111 = load i64, ptr %110, align 8, !tbaa !53
  %112 = sdiv i64 %109, %111
  %.not = icmp eq i32 %3, 0
  br i1 %.not, label %170, label %113

113:                                              ; preds = %5
  call void @_ZN4Data16MemoryPowerModel13io_term_powerERKNS_19MemorySpecificationE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull align 8 dereferenceable(736) %1)
  %114 = getelementptr inbounds i8, ptr %1, i64 104
  %115 = load i64, ptr %114, align 8, !tbaa !54
  %116 = sdiv i64 %115, 8
  %117 = add nsw i64 %116, %115
  %118 = add nsw i64 %117, %116
  %119 = getelementptr inbounds i8, ptr %1, i64 416
  %120 = load double, ptr %119, align 8, !tbaa !55
  %121 = load i64, ptr %110, align 8, !tbaa !53
  %122 = sitofp i64 %121 to double
  %123 = fdiv double %120, %122
  %124 = getelementptr inbounds i8, ptr %2, i64 48
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %124)
  %125 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %32)
          to label %126 unwind label %154

126:                                              ; preds = %113
  %127 = load i64, ptr %108, align 8, !tbaa !52
  %128 = mul nsw i64 %127, %125
  %129 = load double, ptr %99, align 8, !tbaa !56
  %130 = call noundef double @_ZNK4Data16MemoryPowerModel16calcIoTermEnergyElddl(ptr noundef nonnull align 8 dereferenceable(912) %0, i64 noundef %128, double noundef %123, double noundef %129, i64 noundef %117)
  store double %130, ptr %103, align 8, !tbaa !57
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #6
  %131 = getelementptr inbounds i8, ptr %2, i64 72
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %131)
  %132 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %33)
          to label %133 unwind label %156

133:                                              ; preds = %126
  %134 = load i64, ptr %108, align 8, !tbaa !52
  %135 = mul nsw i64 %134, %132
  %136 = load double, ptr %100, align 8, !tbaa !58
  %137 = call noundef double @_ZNK4Data16MemoryPowerModel16calcIoTermEnergyElddl(ptr noundef nonnull align 8 dereferenceable(912) %0, i64 noundef %135, double noundef %123, double noundef %136, i64 noundef %118)
  store double %137, ptr %104, align 8, !tbaa !59
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #6
  %138 = getelementptr inbounds i8, ptr %1, i64 72
  %139 = load i64, ptr %138, align 8, !tbaa !60
  %140 = icmp sgt i64 %139, 1
  br i1 %140, label %141, label %162

141:                                              ; preds = %133
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(24) %124)
  %142 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %34)
          to label %143 unwind label %158

143:                                              ; preds = %141
  %144 = load i64, ptr %108, align 8, !tbaa !52
  %145 = mul nsw i64 %144, %142
  %146 = load double, ptr %101, align 8, !tbaa !61
  %147 = call noundef double @_ZNK4Data16MemoryPowerModel16calcIoTermEnergyElddl(ptr noundef nonnull align 8 dereferenceable(912) %0, i64 noundef %145, double noundef %123, double noundef %146, i64 noundef %117)
  store double %147, ptr %105, align 8, !tbaa !62
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #6
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef nonnull align 8 dereferenceable(24) %131)
  %148 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %35)
          to label %149 unwind label %160

149:                                              ; preds = %143
  %150 = load i64, ptr %108, align 8, !tbaa !52
  %151 = mul nsw i64 %150, %148
  %152 = load double, ptr %102, align 8, !tbaa !63
  %153 = call noundef double @_ZNK4Data16MemoryPowerModel16calcIoTermEnergyElddl(ptr noundef nonnull align 8 dereferenceable(912) %0, i64 noundef %151, double noundef %123, double noundef %152, i64 noundef %118)
  store double %153, ptr %106, align 8, !tbaa !64
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #6
  br label %162

154:                                              ; preds = %113
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #6
  br label %824

156:                                              ; preds = %126
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #6
  br label %824

158:                                              ; preds = %141
  %159 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #6
  br label %824

160:                                              ; preds = %143
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #6
  br label %824

162:                                              ; preds = %149, %133
  %163 = load double, ptr %103, align 8, !tbaa !57
  %164 = load double, ptr %104, align 8, !tbaa !59
  %165 = fadd double %163, %164
  %166 = load double, ptr %105, align 8, !tbaa !62
  %167 = fadd double %165, %166
  %168 = load double, ptr %106, align 8, !tbaa !64
  %169 = fadd double %167, %168
  store double %169, ptr %107, align 8, !tbaa !65
  br label %170

170:                                              ; preds = %162, %5
  %171 = getelementptr inbounds i8, ptr %2, i64 136
  %172 = load i64, ptr %171, align 8, !tbaa !66
  %173 = getelementptr inbounds i8, ptr %2, i64 128
  %174 = load i64, ptr %173, align 8, !tbaa !81
  %175 = getelementptr inbounds i8, ptr %2, i64 224
  %176 = getelementptr inbounds i8, ptr %2, i64 240
  %177 = getelementptr inbounds i8, ptr %2, i64 232
  %178 = getelementptr inbounds i8, ptr %2, i64 248
  %179 = load <4 x i64>, ptr %175, align 8, !tbaa !82
  %180 = getelementptr inbounds i8, ptr %2, i64 256
  %181 = load i64, ptr %180, align 8, !tbaa !83
  %182 = getelementptr inbounds i8, ptr %2, i64 288
  %183 = load i64, ptr %182, align 8, !tbaa !84
  %184 = getelementptr inbounds i8, ptr %2, i64 304
  %185 = load i64, ptr %184, align 8, !tbaa !85
  %186 = getelementptr inbounds i8, ptr %2, i64 320
  %187 = load i64, ptr %186, align 8, !tbaa !86
  %188 = getelementptr inbounds i8, ptr %2, i64 328
  %189 = load i64, ptr %188, align 8, !tbaa !87
  %190 = call i64 @llvm.vector.reduce.add.v4i64(<4 x i64> %179)
  %op.rdx = add i64 %190, %174
  %op.rdx390 = add i64 %172, %181
  %op.rdx391 = add i64 %183, %185
  %op.rdx392 = add i64 %187, %189
  %op.rdx393 = add i64 %op.rdx, %op.rdx390
  %op.rdx394 = add i64 %op.rdx391, %op.rdx392
  %op.rdx395 = add i64 %op.rdx393, %op.rdx394
  %191 = getelementptr inbounds i8, ptr %0, i64 8
  store i64 %op.rdx395, ptr %191, align 8, !tbaa !88
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #6
  %192 = getelementptr inbounds i8, ptr %1, i64 648
  %193 = load double, ptr %192, align 8, !tbaa !89
  %194 = getelementptr inbounds i8, ptr %1, i64 416
  %195 = load double, ptr %194, align 8, !tbaa !55
  call void @_ZN4Data12EnergyDomainC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %36, double noundef %193, double noundef %195)
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %2)
  %196 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %37)
          to label %197 unwind label %373

197:                                              ; preds = %170
  %198 = getelementptr inbounds i8, ptr %1, i64 320
  %199 = load i64, ptr %198, align 8, !tbaa !90
  %200 = mul nsw i64 %199, %196
  %201 = getelementptr inbounds i8, ptr %1, i64 464
  %202 = load double, ptr %201, align 8, !tbaa !91
  %203 = getelementptr inbounds i8, ptr %1, i64 560
  %204 = load double, ptr %203, align 8, !tbaa !92
  %205 = fsub double %202, %204
  %206 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %200, double noundef %205)
  store double %206, ptr %50, align 8, !tbaa !21
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  %207 = getelementptr inbounds i8, ptr %2, i64 24
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %207)
  %208 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %38)
          to label %209 unwind label %375

209:                                              ; preds = %197
  %210 = getelementptr inbounds i8, ptr %1, i64 176
  %211 = load i64, ptr %210, align 8, !tbaa !93
  %212 = load i64, ptr %198, align 8, !tbaa !90
  %213 = sub nsw i64 %211, %212
  %214 = mul nsw i64 %213, %208
  %215 = load double, ptr %201, align 8, !tbaa !91
  %216 = getelementptr inbounds i8, ptr %1, i64 512
  %217 = load double, ptr %216, align 8, !tbaa !94
  %218 = fsub double %215, %217
  %219 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %214, double noundef %218)
  store double %219, ptr %76, align 8, !tbaa !29
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #6
  %220 = getelementptr inbounds i8, ptr %2, i64 48
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %220)
  %221 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %39)
          to label %222 unwind label %377

222:                                              ; preds = %209
  %223 = mul nsw i64 %221, %112
  %224 = getelementptr inbounds i8, ptr %1, i64 576
  %225 = load double, ptr %224, align 8, !tbaa !95
  %226 = load double, ptr %203, align 8, !tbaa !92
  %227 = fsub double %225, %226
  %228 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %223, double noundef %227)
  store double %228, ptr %77, align 8, !tbaa !30
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #6
  %229 = getelementptr inbounds i8, ptr %2, i64 72
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %229)
  %230 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %40)
          to label %231 unwind label %379

231:                                              ; preds = %222
  %232 = mul nsw i64 %230, %112
  %233 = getelementptr inbounds i8, ptr %1, i64 592
  %234 = load double, ptr %233, align 8, !tbaa !96
  %235 = load double, ptr %203, align 8, !tbaa !92
  %236 = fsub double %234, %235
  %237 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %232, double noundef %236)
  store double %237, ptr %78, align 8, !tbaa !31
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #6
  %238 = getelementptr inbounds i8, ptr %2, i64 96
  %239 = load i64, ptr %238, align 8, !tbaa !97
  %240 = getelementptr inbounds i8, ptr %1, i64 304
  %241 = load i64, ptr %240, align 8, !tbaa !98
  %242 = mul nsw i64 %241, %239
  %243 = getelementptr inbounds i8, ptr %1, i64 608
  %244 = load double, ptr %243, align 8, !tbaa !99
  %245 = load double, ptr %203, align 8, !tbaa !92
  %246 = fsub double %244, %245
  %247 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %242, double noundef %246)
  store double %247, ptr %79, align 8, !tbaa !32
  %248 = load i64, ptr %173, align 8, !tbaa !81
  %249 = load double, ptr %216, align 8, !tbaa !94
  %250 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %248, double noundef %249)
  store double %250, ptr %81, align 8, !tbaa !34
  %251 = load i64, ptr %171, align 8, !tbaa !66
  %252 = load double, ptr %203, align 8, !tbaa !92
  %253 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %251, double noundef %252)
  store double %253, ptr %80, align 8, !tbaa !33
  %254 = getelementptr inbounds i8, ptr %4, i64 24
  %255 = load i64, ptr %254, align 8, !tbaa !100
  %256 = sitofp i64 %255 to double
  %257 = fdiv double %256, 1.000000e+02
  %258 = load double, ptr %203, align 8, !tbaa !92
  %259 = load double, ptr %216, align 8, !tbaa !94
  %260 = fsub double %258, %259
  %261 = call double @llvm.fmuladd.f64(double %257, double %260, double %259)
  %262 = load i64, ptr %171, align 8, !tbaa !66
  %263 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %262, double noundef %261)
  %264 = getelementptr inbounds i8, ptr %4, i64 32
  %265 = load i64, ptr %264, align 8, !tbaa !106
  %266 = sitofp i64 %265 to double
  %267 = fdiv double %266, 1.000000e+02
  %268 = getelementptr inbounds i8, ptr %1, i64 632
  %269 = load double, ptr %268, align 8, !tbaa !107
  %270 = fmul double %269, %267
  %271 = load i64, ptr %180, align 8, !tbaa !83
  %272 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %271, double noundef %270)
  %273 = load double, ptr %203, align 8, !tbaa !92
  %274 = add nsw i64 %49, -1
  %275 = sitofp i64 %274 to double
  %276 = call double @llvm.fmuladd.f64(double %261, double %275, double %273)
  %277 = sitofp i64 %49 to double
  %278 = fdiv double %276, %277
  %279 = getelementptr inbounds i8, ptr %1, i64 624
  %280 = load double, ptr %279, align 8, !tbaa !108
  %281 = fcmp oeq double %280, 0.000000e+00
  %282 = load double, ptr %201, align 8
  %283 = fsub double %282, %278
  %284 = select i1 %281, double %283, double %280
  %285 = getelementptr inbounds i8, ptr %1, i64 312
  %286 = load i64, ptr %285, align 8, !tbaa !109
  %287 = icmp eq i64 %286, 0
  %288 = load i64, ptr %198, align 8
  %289 = getelementptr inbounds i8, ptr %1, i64 296
  %290 = load i64, ptr %289, align 8
  %291 = add nsw i64 %290, %288
  %292 = select i1 %287, i64 %291, i64 %286
  %293 = icmp sgt i64 %49, 0
  br i1 %293, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %231
  %294 = getelementptr inbounds i8, ptr %2, i64 104
  %295 = getelementptr inbounds i8, ptr %2, i64 144
  %296 = fdiv double %263, %277
  %297 = getelementptr inbounds i8, ptr %2, i64 168
  %298 = getelementptr inbounds i8, ptr %2, i64 176
  %299 = getelementptr inbounds i8, ptr %1, i64 544
  %300 = getelementptr inbounds i8, ptr %1, i64 496
  %301 = getelementptr inbounds i8, ptr %1, i64 528
  %302 = getelementptr inbounds i8, ptr %1, i64 480
  %303 = getelementptr inbounds i8, ptr %2, i64 280
  %304 = getelementptr inbounds i8, ptr %2, i64 264
  %305 = getelementptr inbounds i8, ptr %2, i64 272
  br label %381

._crit_edge.loopexit:                             ; preds = %381
  %.pre = load double, ptr %203, align 8, !tbaa !92
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %231
  %306 = phi double [ %.pre, %._crit_edge.loopexit ], [ %273, %231 ]
  %307 = getelementptr inbounds i8, ptr %2, i64 168
  %308 = load i64, ptr %307, align 8, !tbaa !110
  %309 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %308, double noundef %306)
  store double %309, ptr %82, align 8, !tbaa !35
  %310 = getelementptr inbounds i8, ptr %2, i64 176
  %311 = load i64, ptr %310, align 8, !tbaa !111
  %312 = load double, ptr %216, align 8, !tbaa !94
  %313 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %311, double noundef %312)
  store double %313, ptr %83, align 8, !tbaa !36
  %314 = load i64, ptr %175, align 8, !tbaa !112
  %315 = getelementptr inbounds i8, ptr %1, i64 544
  %316 = load double, ptr %315, align 8, !tbaa !113
  %317 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %314, double noundef %316)
  store double %317, ptr %85, align 8, !tbaa !38
  %318 = load i64, ptr %176, align 8, !tbaa !114
  %319 = getelementptr inbounds i8, ptr %1, i64 496
  %320 = load double, ptr %319, align 8, !tbaa !115
  %321 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %318, double noundef %320)
  store double %321, ptr %86, align 8, !tbaa !39
  %322 = load i64, ptr %177, align 8, !tbaa !116
  %323 = getelementptr inbounds i8, ptr %1, i64 528
  %324 = load double, ptr %323, align 8, !tbaa !117
  %325 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %322, double noundef %324)
  store double %325, ptr %87, align 8, !tbaa !40
  %326 = load i64, ptr %178, align 8, !tbaa !118
  %327 = getelementptr inbounds i8, ptr %1, i64 480
  %328 = load double, ptr %327, align 8, !tbaa !119
  %329 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %326, double noundef %328)
  store double %329, ptr %88, align 8, !tbaa !41
  %330 = load double, ptr %268, align 8, !tbaa !107
  %331 = load double, ptr %203, align 8, !tbaa !92
  %332 = load double, ptr %243, align 8, !tbaa !99
  %333 = load double, ptr %192, align 8, !tbaa !89
  %334 = load i64, ptr %180, align 8, !tbaa !83
  %335 = sitofp i64 %334 to double
  %336 = load i64, ptr %182, align 8, !tbaa !84
  %337 = sitofp i64 %336 to double
  %338 = load i64, ptr %184, align 8, !tbaa !85
  %339 = sitofp i64 %338 to double
  %340 = load i64, ptr %186, align 8, !tbaa !86
  %341 = sitofp i64 %340 to double
  %342 = load i64, ptr %188, align 8, !tbaa !87
  %343 = sitofp i64 %342 to double
  %344 = load double, ptr %194, align 8, !tbaa !55
  %345 = call noundef double @_ZN4Data16MemoryPowerModel9engy_srefEdddddddddd(double noundef %330, double noundef %331, double noundef %332, double noundef %333, double noundef %335, double noundef %337, double noundef %339, double noundef %341, double noundef %343, double noundef %344)
  store double %345, ptr %89, align 8, !tbaa !42
  %346 = load i64, ptr %182, align 8, !tbaa !84
  %347 = load double, ptr %323, align 8, !tbaa !117
  %348 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %346, double noundef %347)
  store double %348, ptr %91, align 8, !tbaa !44
  %349 = load i64, ptr %184, align 8, !tbaa !85
  %350 = load double, ptr %327, align 8, !tbaa !119
  %351 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %349, double noundef %350)
  store double %351, ptr %92, align 8, !tbaa !45
  %352 = load i64, ptr %186, align 8, !tbaa !86
  %353 = load double, ptr %203, align 8, !tbaa !92
  %354 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %352, double noundef %353)
  store double %354, ptr %95, align 8, !tbaa !48
  %355 = load i64, ptr %188, align 8, !tbaa !87
  %356 = load double, ptr %216, align 8, !tbaa !94
  %357 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %355, double noundef %356)
  store double %357, ptr %96, align 8, !tbaa !49
  %358 = getelementptr inbounds i8, ptr %2, i64 280
  %359 = load i64, ptr %358, align 8, !tbaa !120
  %360 = load double, ptr %216, align 8, !tbaa !94
  %361 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %359, double noundef %360)
  store double %361, ptr %93, align 8, !tbaa !46
  %362 = getelementptr inbounds i8, ptr %2, i64 264
  %363 = load i64, ptr %362, align 8, !tbaa !121
  %364 = load double, ptr %203, align 8, !tbaa !92
  %365 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %363, double noundef %364)
  store double %365, ptr %97, align 8, !tbaa !50
  %366 = getelementptr inbounds i8, ptr %2, i64 272
  %367 = load i64, ptr %366, align 8, !tbaa !122
  %368 = load double, ptr %216, align 8, !tbaa !94
  %369 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %367, double noundef %368)
  store double %369, ptr %98, align 8, !tbaa !51
  %370 = getelementptr inbounds i8, ptr %1, i64 121
  %371 = load i8, ptr %370, align 1, !tbaa !123, !range !124, !noundef !125
  %372 = trunc nuw i8 %371 to i1
  br i1 %372, label %538, label %704

373:                                              ; preds = %170
  %374 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  br label %823

375:                                              ; preds = %197
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #6
  br label %823

377:                                              ; preds = %209
  %378 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #6
  br label %823

379:                                              ; preds = %222
  %380 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #6
  br label %823

381:                                              ; preds = %.lr.ph, %381
  %382 = phi i64 [ 0, %.lr.ph ], [ %536, %381 ]
  %.0364384 = phi i32 [ 0, %.lr.ph ], [ %535, %381 ]
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %382) #6
  %384 = load i64, ptr %383, align 8, !tbaa !82
  %385 = load i64, ptr %198, align 8, !tbaa !90
  %386 = mul nsw i64 %385, %384
  %387 = load double, ptr %201, align 8, !tbaa !91
  %388 = fsub double %387, %278
  %389 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %386, double noundef %388)
  %390 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %382) #6
  store double %389, ptr %390, align 8, !tbaa !20
  %391 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %207, i64 noundef %382) #6
  %392 = load i64, ptr %391, align 8, !tbaa !82
  %393 = load i64, ptr %289, align 8, !tbaa !126
  %394 = mul nsw i64 %393, %392
  %395 = load double, ptr %201, align 8, !tbaa !91
  %396 = fsub double %395, %278
  %397 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %394, double noundef %396)
  %398 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %382) #6
  store double %397, ptr %398, align 8, !tbaa !20
  %399 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %220, i64 noundef %382) #6
  %400 = load i64, ptr %399, align 8, !tbaa !82
  %401 = mul nsw i64 %400, %112
  %402 = load double, ptr %224, align 8, !tbaa !95
  %403 = load double, ptr %203, align 8, !tbaa !92
  %404 = fsub double %402, %403
  %405 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %401, double noundef %404)
  %406 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %382) #6
  store double %405, ptr %406, align 8, !tbaa !20
  %407 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %229, i64 noundef %382) #6
  %408 = load i64, ptr %407, align 8, !tbaa !82
  %409 = mul nsw i64 %408, %112
  %410 = load double, ptr %233, align 8, !tbaa !96
  %411 = load double, ptr %203, align 8, !tbaa !92
  %412 = fsub double %410, %411
  %413 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %409, double noundef %412)
  %414 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %382) #6
  store double %413, ptr %414, align 8, !tbaa !20
  %415 = load i64, ptr %238, align 8, !tbaa !97
  %416 = load i64, ptr %240, align 8, !tbaa !98
  %417 = mul nsw i64 %416, %415
  %418 = load double, ptr %243, align 8, !tbaa !99
  %419 = load double, ptr %203, align 8, !tbaa !92
  %420 = fsub double %418, %419
  %421 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %417, double noundef %420)
  %422 = fdiv double %421, %277
  %423 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %382) #6
  store double %422, ptr %423, align 8, !tbaa !20
  %424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %294, i64 noundef %382) #6
  %425 = load i64, ptr %424, align 8, !tbaa !82
  %426 = mul nsw i64 %425, %292
  %427 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %426, double noundef %284)
  %428 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %382) #6
  store double %427, ptr %428, align 8, !tbaa !20
  %429 = load i64, ptr %173, align 8, !tbaa !81
  %430 = load double, ptr %216, align 8, !tbaa !94
  %431 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %429, double noundef %430)
  %432 = fdiv double %431, %277
  %433 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %382) #6
  store double %432, ptr %433, align 8, !tbaa !20
  %434 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %295, i64 noundef %382) #6
  %435 = load i64, ptr %434, align 8, !tbaa !82
  %436 = load double, ptr %203, align 8, !tbaa !92
  %437 = fsub double %436, %261
  %438 = fdiv double %437, %277
  %439 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %435, double noundef %438)
  %440 = fadd double %296, %439
  %441 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %382) #6
  store double %440, ptr %441, align 8, !tbaa !20
  %442 = load i64, ptr %297, align 8, !tbaa !110
  %443 = load double, ptr %203, align 8, !tbaa !92
  %444 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %442, double noundef %443)
  %445 = fdiv double %444, %277
  %446 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %382) #6
  store double %445, ptr %446, align 8, !tbaa !20
  %447 = load i64, ptr %298, align 8, !tbaa !111
  %448 = load double, ptr %216, align 8, !tbaa !94
  %449 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %447, double noundef %448)
  %450 = fdiv double %449, %277
  %451 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %60, i64 noundef %382) #6
  store double %450, ptr %451, align 8, !tbaa !20
  %452 = load i64, ptr %175, align 8, !tbaa !112
  %453 = load double, ptr %299, align 8, !tbaa !113
  %454 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %452, double noundef %453)
  %455 = fdiv double %454, %277
  %456 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %382) #6
  store double %455, ptr %456, align 8, !tbaa !20
  %457 = load i64, ptr %176, align 8, !tbaa !114
  %458 = load double, ptr %300, align 8, !tbaa !115
  %459 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %457, double noundef %458)
  %460 = fdiv double %459, %277
  %461 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %382) #6
  store double %460, ptr %461, align 8, !tbaa !20
  %462 = load i64, ptr %177, align 8, !tbaa !116
  %463 = load double, ptr %301, align 8, !tbaa !117
  %464 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %462, double noundef %463)
  %465 = fdiv double %464, %277
  %466 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %382) #6
  store double %465, ptr %466, align 8, !tbaa !20
  %467 = load i64, ptr %178, align 8, !tbaa !118
  %468 = load double, ptr %302, align 8, !tbaa !119
  %469 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %467, double noundef %468)
  %470 = fdiv double %469, %277
  %471 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %382) #6
  store double %470, ptr %471, align 8, !tbaa !20
  %472 = load double, ptr %268, align 8, !tbaa !107
  %473 = load double, ptr %203, align 8, !tbaa !92
  %474 = load double, ptr %243, align 8, !tbaa !99
  %475 = load double, ptr %192, align 8, !tbaa !89
  %476 = load i64, ptr %180, align 8, !tbaa !83
  %477 = sitofp i64 %476 to double
  %478 = load i64, ptr %182, align 8, !tbaa !84
  %479 = sitofp i64 %478 to double
  %480 = load i64, ptr %184, align 8, !tbaa !85
  %481 = sitofp i64 %480 to double
  %482 = load i64, ptr %186, align 8, !tbaa !86
  %483 = sitofp i64 %482 to double
  %484 = load i64, ptr %188, align 8, !tbaa !87
  %485 = sitofp i64 %484 to double
  %486 = load double, ptr %194, align 8, !tbaa !55
  %487 = call noundef double @_ZN4Data16MemoryPowerModel15engy_sref_banksEdddddddddddRKNS_17MemBankWiseParamsEjl(double noundef %472, double noundef %473, double noundef %474, double noundef %475, double noundef %477, double noundef %479, double noundef %481, double noundef %483, double noundef %485, double noundef %486, double noundef %272, ptr noundef nonnull align 8 dereferenceable(42) %4, i32 noundef %.0364384, i64 noundef %49)
  %488 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %382) #6
  store double %487, ptr %488, align 8, !tbaa !20
  %489 = load i64, ptr %182, align 8, !tbaa !84
  %490 = load double, ptr %301, align 8, !tbaa !117
  %491 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %489, double noundef %490)
  %492 = fdiv double %491, %277
  %493 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %382) #6
  store double %492, ptr %493, align 8, !tbaa !20
  %494 = load i64, ptr %184, align 8, !tbaa !85
  %495 = load double, ptr %302, align 8, !tbaa !119
  %496 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %494, double noundef %495)
  %497 = fdiv double %496, %277
  %498 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %382) #6
  store double %497, ptr %498, align 8, !tbaa !20
  %499 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %382) #6
  %500 = load double, ptr %499, align 8, !tbaa !20
  %501 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %382) #6
  %502 = load double, ptr %501, align 8, !tbaa !20
  %503 = fadd double %500, %502
  %504 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %382) #6
  store double %503, ptr %504, align 8, !tbaa !20
  %505 = load i64, ptr %303, align 8, !tbaa !120
  %506 = load double, ptr %216, align 8, !tbaa !94
  %507 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %505, double noundef %506)
  %508 = fdiv double %507, %277
  %509 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %382) #6
  store double %508, ptr %509, align 8, !tbaa !20
  %510 = load i64, ptr %186, align 8, !tbaa !86
  %511 = load double, ptr %203, align 8, !tbaa !92
  %512 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %510, double noundef %511)
  %513 = fdiv double %512, %277
  %514 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %71, i64 noundef %382) #6
  store double %513, ptr %514, align 8, !tbaa !20
  %515 = load i64, ptr %188, align 8, !tbaa !87
  %516 = load double, ptr %216, align 8, !tbaa !94
  %517 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %515, double noundef %516)
  %518 = fdiv double %517, %277
  %519 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %382) #6
  store double %518, ptr %519, align 8, !tbaa !20
  %520 = load double, ptr %95, align 8, !tbaa !48
  %521 = load double, ptr %96, align 8, !tbaa !49
  %522 = fadd double %520, %521
  %523 = fdiv double %522, %277
  %524 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %382) #6
  store double %523, ptr %524, align 8, !tbaa !20
  %525 = load i64, ptr %304, align 8, !tbaa !121
  %526 = load double, ptr %203, align 8, !tbaa !92
  %527 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %525, double noundef %526)
  %528 = fdiv double %527, %277
  %529 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %382) #6
  store double %528, ptr %529, align 8, !tbaa !20
  %530 = load i64, ptr %305, align 8, !tbaa !122
  %531 = load double, ptr %216, align 8, !tbaa !94
  %532 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %36, i64 noundef %530, double noundef %531)
  %533 = fdiv double %532, %277
  %534 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %382) #6
  store double %533, ptr %534, align 8, !tbaa !20
  %535 = add i32 %.0364384, 1
  %536 = zext i32 %535 to i64
  %537 = icmp ugt i64 %49, %536
  br i1 %537, label %381, label %._crit_edge.loopexit, !llvm.loop !127

538:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #6
  %539 = getelementptr inbounds i8, ptr %1, i64 656
  %540 = load double, ptr %539, align 8, !tbaa !129
  %541 = load double, ptr %194, align 8, !tbaa !55
  call void @_ZN4Data12EnergyDomainC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %41, double noundef %540, double noundef %541)
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %2)
  %542 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %42)
          to label %543 unwind label %695

543:                                              ; preds = %538
  %544 = load i64, ptr %198, align 8, !tbaa !90
  %545 = mul nsw i64 %544, %542
  %546 = getelementptr inbounds i8, ptr %1, i64 472
  %547 = load double, ptr %546, align 8, !tbaa !130
  %548 = getelementptr inbounds i8, ptr %1, i64 568
  %549 = load double, ptr %548, align 8, !tbaa !131
  %550 = fsub double %547, %549
  %551 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %545, double noundef %550)
  %552 = load double, ptr %50, align 8, !tbaa !21
  %553 = fadd double %551, %552
  store double %553, ptr %50, align 8, !tbaa !21
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #6
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(24) %207)
  %554 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %43)
          to label %555 unwind label %697

555:                                              ; preds = %543
  %556 = load i64, ptr %210, align 8, !tbaa !93
  %557 = load i64, ptr %198, align 8, !tbaa !90
  %558 = sub nsw i64 %556, %557
  %559 = mul nsw i64 %558, %554
  %560 = load double, ptr %546, align 8, !tbaa !130
  %561 = getelementptr inbounds i8, ptr %1, i64 520
  %562 = load double, ptr %561, align 8, !tbaa !132
  %563 = fsub double %560, %562
  %564 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %559, double noundef %563)
  %565 = load double, ptr %76, align 8, !tbaa !29
  %566 = fadd double %564, %565
  store double %566, ptr %76, align 8, !tbaa !29
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #6
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(24) %220)
  %567 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %44)
          to label %568 unwind label %699

568:                                              ; preds = %555
  %569 = mul nsw i64 %567, %112
  %570 = getelementptr inbounds i8, ptr %1, i64 584
  %571 = load double, ptr %570, align 8, !tbaa !133
  %572 = load double, ptr %548, align 8, !tbaa !131
  %573 = fsub double %571, %572
  %574 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %569, double noundef %573)
  %575 = load double, ptr %77, align 8, !tbaa !30
  %576 = fadd double %574, %575
  store double %576, ptr %77, align 8, !tbaa !30
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #6
  call void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 8 dereferenceable(24) %229)
  %577 = invoke noundef i64 @_ZNK4Data16MemoryPowerModel3sumIlEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %45)
          to label %578 unwind label %701

578:                                              ; preds = %568
  %579 = mul nsw i64 %577, %112
  %580 = getelementptr inbounds i8, ptr %1, i64 600
  %581 = load double, ptr %580, align 8, !tbaa !134
  %582 = load double, ptr %548, align 8, !tbaa !131
  %583 = fsub double %581, %582
  %584 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %579, double noundef %583)
  %585 = load double, ptr %78, align 8, !tbaa !31
  %586 = fadd double %584, %585
  store double %586, ptr %78, align 8, !tbaa !31
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #6
  %587 = load i64, ptr %238, align 8, !tbaa !97
  %588 = load i64, ptr %240, align 8, !tbaa !98
  %589 = mul nsw i64 %588, %587
  %590 = getelementptr inbounds i8, ptr %1, i64 616
  %591 = load double, ptr %590, align 8, !tbaa !135
  %592 = load double, ptr %548, align 8, !tbaa !131
  %593 = fsub double %591, %592
  %594 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %589, double noundef %593)
  %595 = load double, ptr %79, align 8, !tbaa !32
  %596 = fadd double %594, %595
  store double %596, ptr %79, align 8, !tbaa !32
  %597 = load i64, ptr %173, align 8, !tbaa !81
  %598 = load double, ptr %561, align 8, !tbaa !132
  %599 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %597, double noundef %598)
  %600 = load double, ptr %81, align 8, !tbaa !34
  %601 = fadd double %599, %600
  store double %601, ptr %81, align 8, !tbaa !34
  %602 = load i64, ptr %171, align 8, !tbaa !66
  %603 = load double, ptr %548, align 8, !tbaa !131
  %604 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %602, double noundef %603)
  %605 = load double, ptr %80, align 8, !tbaa !33
  %606 = fadd double %604, %605
  store double %606, ptr %80, align 8, !tbaa !33
  %607 = load i64, ptr %307, align 8, !tbaa !110
  %608 = load double, ptr %548, align 8, !tbaa !131
  %609 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %607, double noundef %608)
  %610 = load double, ptr %82, align 8, !tbaa !35
  %611 = fadd double %609, %610
  store double %611, ptr %82, align 8, !tbaa !35
  %612 = load i64, ptr %310, align 8, !tbaa !111
  %613 = load double, ptr %561, align 8, !tbaa !132
  %614 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %612, double noundef %613)
  %615 = load double, ptr %83, align 8, !tbaa !36
  %616 = fadd double %614, %615
  store double %616, ptr %83, align 8, !tbaa !36
  %617 = load i64, ptr %175, align 8, !tbaa !112
  %618 = getelementptr inbounds i8, ptr %1, i64 552
  %619 = load double, ptr %618, align 8, !tbaa !136
  %620 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %617, double noundef %619)
  %621 = load double, ptr %85, align 8, !tbaa !38
  %622 = fadd double %620, %621
  store double %622, ptr %85, align 8, !tbaa !38
  %623 = load i64, ptr %176, align 8, !tbaa !114
  %624 = getelementptr inbounds i8, ptr %1, i64 504
  %625 = load double, ptr %624, align 8, !tbaa !137
  %626 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %623, double noundef %625)
  %627 = load double, ptr %86, align 8, !tbaa !39
  %628 = fadd double %626, %627
  store double %628, ptr %86, align 8, !tbaa !39
  %629 = load i64, ptr %177, align 8, !tbaa !116
  %630 = getelementptr inbounds i8, ptr %1, i64 536
  %631 = load double, ptr %630, align 8, !tbaa !138
  %632 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %629, double noundef %631)
  %633 = load double, ptr %87, align 8, !tbaa !40
  %634 = fadd double %632, %633
  store double %634, ptr %87, align 8, !tbaa !40
  %635 = load i64, ptr %178, align 8, !tbaa !118
  %636 = getelementptr inbounds i8, ptr %1, i64 488
  %637 = load double, ptr %636, align 8, !tbaa !139
  %638 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %635, double noundef %637)
  %639 = load double, ptr %88, align 8, !tbaa !41
  %640 = fadd double %638, %639
  store double %640, ptr %88, align 8, !tbaa !41
  %641 = getelementptr inbounds i8, ptr %1, i64 640
  %642 = load double, ptr %641, align 8, !tbaa !140
  %643 = load double, ptr %548, align 8, !tbaa !131
  %644 = load double, ptr %590, align 8, !tbaa !135
  %645 = load double, ptr %539, align 8, !tbaa !129
  %646 = load i64, ptr %180, align 8, !tbaa !83
  %647 = sitofp i64 %646 to double
  %648 = load i64, ptr %182, align 8, !tbaa !84
  %649 = sitofp i64 %648 to double
  %650 = load i64, ptr %184, align 8, !tbaa !85
  %651 = sitofp i64 %650 to double
  %652 = load i64, ptr %186, align 8, !tbaa !86
  %653 = sitofp i64 %652 to double
  %654 = load i64, ptr %188, align 8, !tbaa !87
  %655 = sitofp i64 %654 to double
  %656 = load double, ptr %194, align 8, !tbaa !55
  %657 = call noundef double @_ZN4Data16MemoryPowerModel9engy_srefEdddddddddd(double noundef %642, double noundef %643, double noundef %644, double noundef %645, double noundef %647, double noundef %649, double noundef %651, double noundef %653, double noundef %655, double noundef %656)
  %658 = load double, ptr %89, align 8, !tbaa !42
  %659 = fadd double %657, %658
  store double %659, ptr %89, align 8, !tbaa !42
  %660 = load i64, ptr %182, align 8, !tbaa !84
  %661 = load double, ptr %630, align 8, !tbaa !138
  %662 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %660, double noundef %661)
  %663 = load double, ptr %91, align 8, !tbaa !44
  %664 = fadd double %662, %663
  store double %664, ptr %91, align 8, !tbaa !44
  %665 = load i64, ptr %184, align 8, !tbaa !85
  %666 = load double, ptr %636, align 8, !tbaa !139
  %667 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %665, double noundef %666)
  %668 = load double, ptr %92, align 8, !tbaa !45
  %669 = fadd double %667, %668
  store double %669, ptr %92, align 8, !tbaa !45
  %670 = load i64, ptr %186, align 8, !tbaa !86
  %671 = load double, ptr %548, align 8, !tbaa !131
  %672 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %670, double noundef %671)
  %673 = load double, ptr %95, align 8, !tbaa !48
  %674 = fadd double %672, %673
  store double %674, ptr %95, align 8, !tbaa !48
  %675 = load i64, ptr %188, align 8, !tbaa !87
  %676 = load double, ptr %561, align 8, !tbaa !132
  %677 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %675, double noundef %676)
  %678 = load double, ptr %96, align 8, !tbaa !49
  %679 = fadd double %677, %678
  store double %679, ptr %96, align 8, !tbaa !49
  %680 = load i64, ptr %358, align 8, !tbaa !120
  %681 = load double, ptr %561, align 8, !tbaa !132
  %682 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %680, double noundef %681)
  %683 = load double, ptr %93, align 8, !tbaa !46
  %684 = fadd double %682, %683
  store double %684, ptr %93, align 8, !tbaa !46
  %685 = load i64, ptr %362, align 8, !tbaa !121
  %686 = load double, ptr %548, align 8, !tbaa !131
  %687 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %685, double noundef %686)
  %688 = load double, ptr %97, align 8, !tbaa !50
  %689 = fadd double %687, %688
  store double %689, ptr %97, align 8, !tbaa !50
  %690 = load i64, ptr %366, align 8, !tbaa !122
  %691 = load double, ptr %561, align 8, !tbaa !132
  %692 = call noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %690, double noundef %691)
  %693 = load double, ptr %98, align 8, !tbaa !51
  %694 = fadd double %692, %693
  store double %694, ptr %98, align 8, !tbaa !51
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #6
  br label %704

695:                                              ; preds = %538
  %696 = landingpad { ptr, i32 }
          cleanup
  br label %703

697:                                              ; preds = %543
  %698 = landingpad { ptr, i32 }
          cleanup
  br label %703

699:                                              ; preds = %555
  %700 = landingpad { ptr, i32 }
          cleanup
  br label %703

701:                                              ; preds = %568
  %702 = landingpad { ptr, i32 }
          cleanup
  br label %703

703:                                              ; preds = %701, %699, %697, %695
  %.sink = phi ptr [ %45, %701 ], [ %44, %699 ], [ %43, %697 ], [ %42, %695 ]
  %.pn378 = phi { ptr, i32 } [ %702, %701 ], [ %700, %699 ], [ %698, %697 ], [ %696, %695 ]
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.sink) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #6
  br label %823

704:                                              ; preds = %578, %._crit_edge
  %705 = load double, ptr %91, align 8, !tbaa !44
  %706 = load double, ptr %92, align 8, !tbaa !45
  %707 = fadd double %705, %706
  store double %707, ptr %90, align 8, !tbaa !43
  %708 = load double, ptr %95, align 8, !tbaa !48
  %709 = load double, ptr %96, align 8, !tbaa !49
  %710 = fadd double %708, %709
  store double %710, ptr %94, align 8, !tbaa !47
  %711 = getelementptr inbounds i8, ptr %4, i64 40
  %712 = load i8, ptr %711, align 8, !tbaa !141, !range !124, !noundef !125
  %713 = trunc nuw i8 %712 to i1
  br i1 %713, label %.preheader, label %767

.preheader:                                       ; preds = %704
  br i1 %293, label %.lr.ph386, label %._crit_edge387

.lr.ph386:                                        ; preds = %.preheader
  %714 = getelementptr inbounds i8, ptr %1, i64 72
  br label %716

._crit_edge387:                                   ; preds = %716, %.preheader
  call void @_ZNSt6vectorIdSaIdEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(24) %75)
  %715 = invoke noundef double @_ZNK4Data16MemoryPowerModel3sumIdEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %46)
          to label %762 unwind label %765

716:                                              ; preds = %.lr.ph386, %716
  %717 = phi i64 [ 0, %.lr.ph386 ], [ %760, %716 ]
  %.0385 = phi i32 [ 0, %.lr.ph386 ], [ %759, %716 ]
  %718 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %717) #6
  %719 = load double, ptr %718, align 8, !tbaa !20
  %720 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %717) #6
  %721 = load double, ptr %720, align 8, !tbaa !20
  %722 = fadd double %719, %721
  %723 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %717) #6
  %724 = load double, ptr %723, align 8, !tbaa !20
  %725 = fadd double %722, %724
  %726 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %717) #6
  %727 = load double, ptr %726, align 8, !tbaa !20
  %728 = fadd double %725, %727
  %729 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %717) #6
  %730 = load double, ptr %729, align 8, !tbaa !20
  %731 = fadd double %728, %730
  %732 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %717) #6
  %733 = load double, ptr %732, align 8, !tbaa !20
  %734 = fadd double %731, %733
  %735 = load i64, ptr %714, align 8, !tbaa !60
  %736 = sitofp i64 %735 to double
  %737 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %717) #6
  %738 = load double, ptr %737, align 8, !tbaa !20
  %739 = call double @llvm.fmuladd.f64(double %736, double %738, double %734)
  %740 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %717) #6
  %741 = load double, ptr %740, align 8, !tbaa !20
  %742 = fadd double %739, %741
  %743 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %717) #6
  %744 = load double, ptr %743, align 8, !tbaa !20
  %745 = fadd double %742, %744
  %746 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %717) #6
  %747 = load double, ptr %746, align 8, !tbaa !20
  %748 = fadd double %745, %747
  %749 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %717) #6
  %750 = load double, ptr %749, align 8, !tbaa !20
  %751 = fadd double %748, %750
  %752 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %717) #6
  %753 = load double, ptr %752, align 8, !tbaa !20
  %754 = fadd double %751, %753
  %755 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %717) #6
  %756 = load double, ptr %755, align 8, !tbaa !20
  %757 = fadd double %754, %756
  %758 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef %717) #6
  store double %757, ptr %758, align 8, !tbaa !20
  %759 = add i32 %.0385, 1
  %760 = zext i32 %759 to i64
  %761 = icmp ugt i64 %49, %760
  br i1 %761, label %716, label %._crit_edge387, !llvm.loop !142

762:                                              ; preds = %._crit_edge387
  %763 = load double, ptr %107, align 8, !tbaa !65
  %764 = fadd double %715, %763
  br label %805

765:                                              ; preds = %._crit_edge387
  %766 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #6
  br label %823

767:                                              ; preds = %704
  %768 = load double, ptr %50, align 8, !tbaa !21
  %769 = load double, ptr %76, align 8, !tbaa !29
  %770 = load double, ptr %77, align 8, !tbaa !30
  %771 = load double, ptr %78, align 8, !tbaa !31
  %772 = load double, ptr %79, align 8, !tbaa !32
  %773 = load double, ptr %107, align 8, !tbaa !65
  call void @_ZNSt6vectorIdSaIdEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 8 dereferenceable(24) %56)
  %774 = invoke noundef double @_ZNK4Data16MemoryPowerModel3sumIdEET_St6vectorIS2_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(912) %0, ptr noundef nonnull %47)
          to label %775 unwind label %803

775:                                              ; preds = %767
  %776 = fadd double %768, %769
  %777 = fadd double %776, %770
  %778 = fadd double %777, %771
  %779 = fadd double %778, %772
  %780 = fadd double %779, %773
  %781 = fadd double %780, %774
  %782 = getelementptr inbounds i8, ptr %1, i64 72
  %783 = load i64, ptr %782, align 8, !tbaa !60
  %784 = sitofp i64 %783 to double
  %785 = load double, ptr %80, align 8, !tbaa !33
  %786 = load double, ptr %81, align 8, !tbaa !34
  %787 = fadd double %785, %786
  %788 = load double, ptr %89, align 8, !tbaa !42
  %789 = fadd double %787, %788
  %790 = load double, ptr %85, align 8, !tbaa !38
  %791 = fadd double %789, %790
  %792 = load double, ptr %86, align 8, !tbaa !39
  %793 = fadd double %791, %792
  %794 = load double, ptr %87, align 8, !tbaa !40
  %795 = fadd double %793, %794
  %796 = load double, ptr %88, align 8, !tbaa !41
  %797 = fadd double %795, %796
  %798 = load double, ptr %90, align 8, !tbaa !43
  %799 = fadd double %797, %798
  %800 = load double, ptr %94, align 8, !tbaa !47
  %801 = fadd double %799, %800
  %802 = call double @llvm.fmuladd.f64(double %784, double %801, double %781)
  br label %805

803:                                              ; preds = %767
  %804 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #6
  br label %823

805:                                              ; preds = %775, %762
  %.sink389 = phi double [ %802, %775 ], [ %764, %762 ]
  %.sink388 = phi ptr [ %47, %775 ], [ %46, %762 ]
  store double %.sink389, ptr %84, align 8, !tbaa !37
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.sink388) #6
  %806 = load double, ptr %84, align 8, !tbaa !37
  %807 = load i64, ptr %191, align 8, !tbaa !88
  %808 = load <2 x double>, ptr %194, align 8
  %809 = load i64, ptr %0, align 8, !tbaa !143
  %810 = add nsw i64 %809, %807
  store i64 %810, ptr %0, align 8, !tbaa !143
  %811 = getelementptr inbounds i8, ptr %0, i64 328
  %812 = load double, ptr %811, align 8, !tbaa !144
  %813 = fadd double %806, %812
  store double %813, ptr %811, align 8, !tbaa !144
  %814 = getelementptr inbounds i8, ptr %0, i64 896
  %815 = insertelement <2 x i64> poison, i64 %810, i64 0
  %816 = insertelement <2 x i64> %815, i64 %807, i64 1
  %817 = sitofp <2 x i64> %816 to <2 x double>
  %818 = shufflevector <2 x double> %808, <2 x double> poison, <2 x i32> zeroinitializer
  %819 = fmul <2 x double> %818, %817
  %820 = insertelement <2 x double> poison, double %813, i64 0
  %821 = insertelement <2 x double> %820, double %806, i64 1
  %822 = fdiv <2 x double> %821, %819
  store <2 x double> %822, ptr %814, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #6
  ret void

823:                                              ; preds = %703, %765, %803, %379, %377, %375, %373
  %.pn380.pn = phi { ptr, i32 } [ %380, %379 ], [ %378, %377 ], [ %376, %375 ], [ %374, %373 ], [ %766, %765 ], [ %804, %803 ], [ %.pn378, %703 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #6
  br label %824

824:                                              ; preds = %154, %156, %158, %160, %823
  %.pn380.pn.pn = phi { ptr, i32 } [ %.pn380.pn, %823 ], [ %161, %160 ], [ %159, %158 ], [ %157, %156 ], [ %155, %154 ]
  resume { ptr, i32 } %.pn380.pn.pn
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEE6assignEmRKd(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Data16MemoryPowerModel13io_term_powerERKNS_19MemorySpecificationE(ptr noundef nonnull align 8 dereferenceable(912), ptr noundef nonnull align 8 dereferenceable(736)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK4Data16MemoryPowerModel16calcIoTermEnergyElddl(ptr noundef nonnull align 8 dereferenceable(912), i64 noundef, double noundef, double noundef, i64 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Data12EnergyDomainC2Edd(ptr noundef nonnull align 8 dereferenceable(16), double noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK4Data12EnergyDomain13calcTivEnergyEld(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, double noundef) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN4Data16MemoryPowerModel15engy_sref_banksEdddddddddddRKNS_17MemBankWiseParamsEjl(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(42), i32 noundef, i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN4Data16MemoryPowerModel9engy_srefEdddddddddd(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.vector.reduce.add.v4i64(<4 x i64>) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !12, i64 64}
!6 = !{!"_ZTSN4Data19MemorySpecificationE", !7, i64 8, !13, i64 40, !15, i64 48, !17, i64 160, !19, i64 456}
!7 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !8, i64 0, !12, i64 8, !10, i64 16}
!8 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"long", !10, i64 0}
!13 = !{!"_ZTSN4Data10MemoryTypeE", !14, i64 0}
!14 = !{!"_ZTSN4Data10MemoryType12MemoryType_tE", !10, i64 0}
!15 = !{!"_ZTSN4Data19MemArchitectureSpecE", !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !16, i64 72, !16, i64 73, !16, i64 74}
!16 = !{!"bool", !10, i64 0}
!17 = !{!"_ZTSN4Data13MemTimingSpecE", !18, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !12, i64 176, !12, i64 184, !12, i64 192, !12, i64 200, !12, i64 208, !12, i64 216, !12, i64 224, !12, i64 232, !12, i64 240, !12, i64 248, !18, i64 256}
!18 = !{!"double", !10, i64 0}
!19 = !{!"_ZTSN4Data12MemPowerSpecE", !18, i64 8, !18, i64 16, !18, i64 24, !18, i64 32, !18, i64 40, !18, i64 48, !18, i64 56, !18, i64 64, !18, i64 72, !18, i64 80, !18, i64 88, !18, i64 96, !18, i64 104, !18, i64 112, !18, i64 120, !18, i64 128, !18, i64 136, !18, i64 144, !18, i64 152, !18, i64 160, !18, i64 168, !18, i64 176, !18, i64 184, !18, i64 192, !18, i64 200, !18, i64 208, !18, i64 216, !18, i64 224, !18, i64 232, !18, i64 240}
!20 = !{!18, !18, i64 0}
!21 = !{!22, !18, i64 16}
!22 = !{!"_ZTSN4Data16MemoryPowerModelE", !12, i64 0, !12, i64 8, !23, i64 16, !28, i64 864}
!23 = !{!"_ZTSN4Data16MemoryPowerModel6EnergyE", !18, i64 0, !24, i64 8, !18, i64 32, !24, i64 40, !18, i64 64, !24, i64 72, !18, i64 96, !24, i64 104, !18, i64 128, !24, i64 136, !24, i64 160, !18, i64 184, !24, i64 192, !18, i64 216, !24, i64 224, !18, i64 248, !24, i64 256, !18, i64 280, !24, i64 288, !18, i64 312, !24, i64 320, !18, i64 344, !18, i64 352, !18, i64 360, !24, i64 368, !18, i64 392, !24, i64 400, !18, i64 424, !24, i64 432, !18, i64 456, !24, i64 464, !18, i64 488, !24, i64 496, !18, i64 520, !24, i64 528, !18, i64 552, !24, i64 560, !18, i64 584, !24, i64 592, !18, i64 616, !24, i64 624, !18, i64 648, !24, i64 656, !18, i64 680, !24, i64 688, !18, i64 712, !24, i64 720, !18, i64 744, !24, i64 752, !18, i64 776, !24, i64 784, !18, i64 808, !18, i64 816, !18, i64 824, !18, i64 832, !18, i64 840}
!24 = !{!"_ZTSSt6vectorIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!28 = !{!"_ZTSN4Data16MemoryPowerModel5PowerE", !18, i64 0, !18, i64 8, !18, i64 16, !18, i64 24, !18, i64 32, !18, i64 40}
!29 = !{!22, !18, i64 48}
!30 = !{!22, !18, i64 80}
!31 = !{!22, !18, i64 112}
!32 = !{!22, !18, i64 144}
!33 = !{!22, !18, i64 200}
!34 = !{!22, !18, i64 232}
!35 = !{!22, !18, i64 264}
!36 = !{!22, !18, i64 296}
!37 = !{!22, !18, i64 360}
!38 = !{!22, !18, i64 376}
!39 = !{!22, !18, i64 408}
!40 = !{!22, !18, i64 440}
!41 = !{!22, !18, i64 472}
!42 = !{!22, !18, i64 504}
!43 = !{!22, !18, i64 536}
!44 = !{!22, !18, i64 568}
!45 = !{!22, !18, i64 600}
!46 = !{!22, !18, i64 632}
!47 = !{!22, !18, i64 664}
!48 = !{!22, !18, i64 696}
!49 = !{!22, !18, i64 728}
!50 = !{!22, !18, i64 760}
!51 = !{!22, !18, i64 792}
!52 = !{!15, !12, i64 8}
!53 = !{!15, !12, i64 32}
!54 = !{!15, !12, i64 56}
!55 = !{!17, !18, i64 256}
!56 = !{!22, !18, i64 864}
!57 = !{!22, !18, i64 824}
!58 = !{!22, !18, i64 872}
!59 = !{!22, !18, i64 832}
!60 = !{!15, !12, i64 24}
!61 = !{!22, !18, i64 880}
!62 = !{!22, !18, i64 840}
!63 = !{!22, !18, i64 888}
!64 = !{!22, !18, i64 848}
!65 = !{!22, !18, i64 856}
!66 = !{!67, !12, i64 136}
!67 = !{!"_ZTSN4Data15CommandAnalysisE", !68, i64 0, !68, i64 24, !68, i64 48, !68, i64 72, !12, i64 96, !68, i64 104, !12, i64 128, !12, i64 136, !68, i64 144, !12, i64 168, !12, i64 176, !12, i64 184, !12, i64 192, !12, i64 200, !12, i64 208, !12, i64 216, !12, i64 224, !12, i64 232, !12, i64 240, !12, i64 248, !12, i64 256, !12, i64 264, !12, i64 272, !12, i64 280, !12, i64 288, !12, i64 296, !12, i64 304, !12, i64 312, !12, i64 320, !12, i64 328, !6, i64 336, !12, i64 1104, !72, i64 1112, !72, i64 1136, !72, i64 1160, !76, i64 1184, !76, i64 1208, !68, i64 1232, !12, i64 1256, !12, i64 1264, !12, i64 1272, !12, i64 1280, !12, i64 1288, !12, i64 1296, !12, i64 1304, !12, i64 1312, !12, i64 1320, !12, i64 1328, !80, i64 1336, !12, i64 1344, !12, i64 1352, !68, i64 1360, !12, i64 1384}
!68 = !{!"_ZTSSt6vectorIlSaIlEE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!72 = !{!"_ZTSSt6vectorIN4Data10MemCommandESaIS1_EE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseIN4Data10MemCommandESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN4Data10MemCommandESaIS1_EE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN4Data10MemCommandESaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!76 = !{!"_ZTSSt6vectorIN4Data15CommandAnalysis9BankStateESaIS2_EE", !77, i64 0}
!77 = !{!"_ZTSSt12_Vector_baseIN4Data15CommandAnalysis9BankStateESaIS2_EE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN4Data15CommandAnalysis9BankStateESaIS2_EE12_Vector_implE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN4Data15CommandAnalysis9BankStateESaIS2_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!80 = !{!"int", !10, i64 0}
!81 = !{!67, !12, i64 128}
!82 = !{!12, !12, i64 0}
!83 = !{!67, !12, i64 256}
!84 = !{!67, !12, i64 288}
!85 = !{!67, !12, i64 304}
!86 = !{!67, !12, i64 320}
!87 = !{!67, !12, i64 328}
!88 = !{!22, !12, i64 8}
!89 = !{!19, !18, i64 192}
!90 = !{!17, !12, i64 160}
!91 = !{!19, !18, i64 8}
!92 = !{!19, !18, i64 104}
!93 = !{!17, !12, i64 16}
!94 = !{!19, !18, i64 56}
!95 = !{!19, !18, i64 120}
!96 = !{!19, !18, i64 136}
!97 = !{!67, !12, i64 96}
!98 = !{!17, !12, i64 144}
!99 = !{!19, !18, i64 152}
!100 = !{!101, !12, i64 24}
!101 = !{!"_ZTSN4Data17MemBankWiseParamsE", !102, i64 0, !12, i64 24, !12, i64 32, !16, i64 40, !16, i64 41}
!102 = !{!"_ZTSSt6vectorIjSaIjEE", !103, i64 0}
!103 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!106 = !{!101, !12, i64 32}
!107 = !{!19, !18, i64 176}
!108 = !{!19, !18, i64 168}
!109 = !{!17, !12, i64 152}
!110 = !{!67, !12, i64 168}
!111 = !{!67, !12, i64 176}
!112 = !{!67, !12, i64 224}
!113 = !{!19, !18, i64 88}
!114 = !{!67, !12, i64 240}
!115 = !{!19, !18, i64 40}
!116 = !{!67, !12, i64 232}
!117 = !{!19, !18, i64 72}
!118 = !{!67, !12, i64 248}
!119 = !{!19, !18, i64 24}
!120 = !{!67, !12, i64 280}
!121 = !{!67, !12, i64 264}
!122 = !{!67, !12, i64 272}
!123 = !{!15, !16, i64 73}
!124 = !{i8 0, i8 2}
!125 = !{}
!126 = !{!17, !12, i64 136}
!127 = distinct !{!127, !128}
!128 = !{!"llvm.loop.mustprogress"}
!129 = !{!19, !18, i64 200}
!130 = !{!19, !18, i64 16}
!131 = !{!19, !18, i64 112}
!132 = !{!19, !18, i64 64}
!133 = !{!19, !18, i64 128}
!134 = !{!19, !18, i64 144}
!135 = !{!19, !18, i64 160}
!136 = !{!19, !18, i64 96}
!137 = !{!19, !18, i64 48}
!138 = !{!19, !18, i64 80}
!139 = !{!19, !18, i64 32}
!140 = !{!19, !18, i64 184}
!141 = !{!101, !16, i64 40}
!142 = distinct !{!142, !128}
!143 = !{!22, !12, i64 0}
!144 = !{!22, !18, i64 328}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,VectorCombinePass