; LLVM IR from gem5/gem5 :: ext/mcpat/cacheunit.ll (ZN9CacheUnitC2EP7XMLNodeP14InputParameter)

; 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::__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.std::allocator" = type { i8 }
%class.CacheUnit = type { %class.McPATComponent, i32, %class.CacheParameters, %class.CacheStatistics, i32, i8, double, double }
%class.McPATComponent = type { ptr, %class.Component, ptr, %class.InputParameter, %"class.std::__cxx11::basic_string", double, %"class.std::vector", %class.McPATOutput, %class.statsDef, %class.statsDef, %class.powerDef, %class.powerDef }
%class.Component = type { %class.Area, %class.powerDef, %class.powerDef, double, double }
%class.Area = type { double, double, double }
%class.InputParameter = type { i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i8, i8, i32, i32, i8, double, double, i8, i32, i32, i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<McPATComponent *, std::allocator<McPATComponent *>>::_Vector_impl" }
%"struct.std::_Vector_base<McPATComponent *, std::allocator<McPATComponent *>>::_Vector_impl" = type { %"struct.std::_Vector_base<McPATComponent *, std::allocator<McPATComponent *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<McPATComponent *, std::allocator<McPATComponent *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.McPATOutput = type { double, double, double, double, double, double }
%class.statsDef = type { %class.statsComponents, %class.statsComponents, %class.statsComponents, %class.statsComponents, %class.statsComponents, %class.statsComponents, %class.statsComponents }
%class.statsComponents = type { double, double, double }
%class.powerDef = type { %class.powerComponents, %class.powerComponents, %class.powerComponents }
%class.powerComponents = type { double, double, double, double, double }
%class.CacheParameters = type { i32, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32 }
%class.CacheStatistics = type { double, double, double, double, i8, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, double, double }
%class.CacheArray = type { %class.McPATComponent, %class.InputParameter, i32, i8, i32, i8, %class.uca_org_t, double, %class.statsDef, %class.statsDef }
%class.uca_org_t = type { ptr, ptr, double, double, double, double, %class.powerDef, double, double, double, [100 x i8], double, i8, %struct.results_mem_array, %struct.results_mem_array }
%struct.results_mem_array = type { i32, i32, double, i32, i32, i32, i32, i32, i32, 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.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, %class.powerDef, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }

@_ZN9CacheUnit8is_cacheE = external dso_local global i8, align 1
@_ZN9CacheUnit8pure_camE = external dso_local global i8, align 1
@_ZN9CacheUnit9opt_localE = external dso_local global i8, align 1
@_ZN9CacheUnit18force_cache_configE = external dso_local global i8, align 1
@_ZTV9CacheUnit = external dso_local unnamed_addr constant { [6 x ptr] }, align 8
@.str = external hidden unnamed_addr constant [11 x i8], align 1
@_ZN14McPATComponent22physical_address_widthE = external global i32, align 4
@.str.1 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9CacheUnitC2EP7XMLNodeP14InputParameter(ptr noundef nonnull align 8 dereferenceable(1784) %0, ptr noundef %1, ptr noundef %2) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca i1, align 1
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca i1, align 1
  %24 = alloca ptr, align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca i1, align 1
  %28 = alloca ptr, align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", align 1
  %31 = alloca i1, align 1
  %32 = alloca ptr, align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca i1, align 1
  %36 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %37 = load ptr, ptr %4, align 8
  %38 = load ptr, ptr %5, align 8, !tbaa !5
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN14McPATComponentC2EP7XMLNodeP14InputParameter(ptr noundef nonnull align 8 dereferenceable(1352) %37, ptr noundef %38, ptr noundef %39)
  store ptr getelementptr inbounds inrange(-16, 32) ({ [6 x ptr] }, ptr @_ZTV9CacheUnit, i32 0, i32 0, i32 2), ptr %37, align 8, !tbaa !9
  %40 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %41 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %42 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 6
  store double 0.000000e+00, ptr %42, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  %43 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 4
  %44 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str)
          to label %45 unwind label %81

45:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  store ptr null, ptr %11, align 8, !tbaa !5
  invoke void @_ZN9CacheUnit29set_cache_param_from_xml_dataEv(ptr noundef nonnull align 8 dereferenceable(1784) %37)
          to label %46 unwind label %85

46:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %47 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %48 = getelementptr inbounds %class.CacheParameters, ptr %47, i32 0, i32 2
  %49 = load double, ptr %48, align 8, !tbaa !41
  store double %49, ptr %12, align 8, !tbaa !42
  %50 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %51 = getelementptr inbounds %class.CacheParameters, ptr %50, i32 0, i32 3
  %52 = load double, ptr %51, align 8, !tbaa !43
  store double %52, ptr %13, align 8, !tbaa !42
  %53 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %54 = getelementptr inbounds %class.CacheParameters, ptr %53, i32 0, i32 4
  %55 = load double, ptr %54, align 8, !tbaa !44
  store double %55, ptr %14, align 8, !tbaa !42
  %56 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %57 = getelementptr inbounds %class.CacheParameters, ptr %56, i32 0, i32 5
  %58 = load double, ptr %57, align 8, !tbaa !45
  store double %58, ptr %15, align 8, !tbaa !42
  %59 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %60 = getelementptr inbounds %class.CacheParameters, ptr %59, i32 0, i32 0
  %61 = load i32, ptr %60, align 8, !tbaa !46
  %62 = icmp eq i32 %61, 0
  br i1 %62, label %63, label %68

63:                                               ; preds = %46
  %64 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %65 = getelementptr inbounds %class.CacheParameters, ptr %64, i32 0, i32 51
  %66 = load i32, ptr %65, align 4, !tbaa !47
  %67 = icmp eq i32 %66, 3
  br i1 %67, label %78, label %68

68:                                               ; preds = %63, %46
  %69 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %70 = getelementptr inbounds %class.CacheParameters, ptr %69, i32 0, i32 0
  %71 = load i32, ptr %70, align 8, !tbaa !46
  %72 = icmp eq i32 %71, 0
  br i1 %72, label %73, label %89

73:                                               ; preds = %68
  %74 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %75 = getelementptr inbounds %class.CacheParameters, ptr %74, i32 0, i32 51
  %76 = load i32, ptr %75, align 4, !tbaa !47
  %77 = icmp eq i32 %76, 4
  br i1 %77, label %78, label %89

78:                                               ; preds = %73, %63
  %79 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !48
  %80 = add nsw i32 %79, 5
  store i32 %80, ptr %7, align 4, !tbaa !48
  br label %133

81:                                               ; preds = %3
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %9, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %10, align 4
  br label %1605

85:                                               ; preds = %45
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %9, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %10, align 4
  br label %1604

89:                                               ; preds = %73, %68
  %90 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !48
  %91 = load double, ptr %12, align 8, !tbaa !42
  %92 = load double, ptr %13, align 8, !tbaa !42
  %93 = fdiv double %91, %92
  %94 = load double, ptr %14, align 8, !tbaa !42
  %95 = fdiv double %93, %94
  %96 = call double @log2(double noundef %95) #8
  %97 = call double @llvm.ceil.f64(double %96)
  %98 = fptosi double %97 to i32
  %99 = sub nsw i32 %90, %98
  %100 = load double, ptr %13, align 8, !tbaa !42
  %101 = call double @log2(double noundef %100) #8
  %102 = call double @llvm.ceil.f64(double %101)
  %103 = fptosi double %102 to i32
  %104 = sub nsw i32 %99, %103
  %105 = add nsw i32 %104, 5
  store i32 %105, ptr %7, align 4, !tbaa !48
  %106 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %107 = getelementptr inbounds %class.CacheParameters, ptr %106, i32 0, i32 0
  %108 = load i32, ptr %107, align 8, !tbaa !46
  %109 = icmp eq i32 %108, 2
  br i1 %109, label %110, label %132

110:                                              ; preds = %89
  %111 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %112 = getelementptr inbounds %class.CacheParameters, ptr %111, i32 0, i32 54
  %113 = load i32, ptr %112, align 8, !tbaa !49
  %114 = sitofp i32 %113 to double
  %115 = fdiv double %114, 8.000000e+00
  %116 = call double @llvm.ceil.f64(double %115)
  %117 = fmul double %116, 8.000000e+00
  %118 = load double, ptr %13, align 8, !tbaa !42
  %119 = fmul double %118, 8.000000e+00
  %120 = fdiv double %117, %119
  %121 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 6
  store double %120, ptr %121, align 8, !tbaa !11
  %122 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 6
  %123 = load double, ptr %122, align 8, !tbaa !11
  %124 = fadd double 1.000000e+00, %123
  %125 = load double, ptr %13, align 8, !tbaa !42
  %126 = fmul double %125, %124
  store double %126, ptr %13, align 8, !tbaa !42
  %127 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 6
  %128 = load double, ptr %127, align 8, !tbaa !11
  %129 = fadd double 1.000000e+00, %128
  %130 = load double, ptr %12, align 8, !tbaa !42
  %131 = fmul double %130, %129
  store double %131, ptr %12, align 8, !tbaa !42
  br label %132

132:                                              ; preds = %110, %89
  br label %133

133:                                              ; preds = %132, %78
  %134 = load double, ptr %12, align 8, !tbaa !42
  %135 = fptosi double %134 to i32
  %136 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %137 = getelementptr inbounds %class.InputParameter, ptr %136, i32 0, i32 0
  store i32 %135, ptr %137, align 8, !tbaa !50
  %138 = load double, ptr %13, align 8, !tbaa !42
  %139 = fptosi double %138 to i32
  %140 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %141 = getelementptr inbounds %class.InputParameter, ptr %140, i32 0, i32 1
  store i32 %139, ptr %141, align 4, !tbaa !51
  %142 = load double, ptr %14, align 8, !tbaa !42
  %143 = fptosi double %142 to i32
  %144 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %145 = getelementptr inbounds %class.InputParameter, ptr %144, i32 0, i32 2
  store i32 %143, ptr %145, align 8, !tbaa !52
  %146 = load double, ptr %15, align 8, !tbaa !42
  %147 = fptosi double %146 to i32
  %148 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %149 = getelementptr inbounds %class.InputParameter, ptr %148, i32 0, i32 3
  store i32 %147, ptr %149, align 4, !tbaa !53
  %150 = load i32, ptr %7, align 4, !tbaa !48
  %151 = icmp sgt i32 %150, 0
  %152 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %153 = getelementptr inbounds %class.InputParameter, ptr %152, i32 0, i32 5
  %154 = zext i1 %151 to i8
  store i8 %154, ptr %153, align 4, !tbaa !54
  %155 = load i32, ptr %7, align 4, !tbaa !48
  %156 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %157 = getelementptr inbounds %class.InputParameter, ptr %156, i32 0, i32 6
  store i32 %155, ptr %157, align 8, !tbaa !55
  %158 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %159 = getelementptr inbounds %class.CacheParameters, ptr %158, i32 0, i32 51
  %160 = load i32, ptr %159, align 4, !tbaa !47
  %161 = icmp eq i32 %160, 0
  br i1 %161, label %162, label %171

162:                                              ; preds = %133
  %163 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %164 = getelementptr inbounds %class.InputParameter, ptr %163, i32 0, i32 1
  %165 = load i32, ptr %164, align 4, !tbaa !51
  %166 = uitofp i32 %165 to double
  %167 = fmul double %166, 8.000000e+00
  %168 = fptoui double %167 to i32
  %169 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %170 = getelementptr inbounds %class.InputParameter, ptr %169, i32 0, i32 4
  store i32 %168, ptr %170, align 8, !tbaa !56
  br label %181

171:                                              ; preds = %133
  %172 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %173 = getelementptr inbounds %class.InputParameter, ptr %172, i32 0, i32 1
  %174 = load i32, ptr %173, align 4, !tbaa !51
  %175 = uitofp i32 %174 to double
  %176 = fmul double %175, 8.000000e+00
  %177 = fdiv double %176, 2.000000e+00
  %178 = fptoui double %177 to i32
  %179 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %180 = getelementptr inbounds %class.InputParameter, ptr %179, i32 0, i32 4
  store i32 %178, ptr %180, align 8, !tbaa !56
  br label %181

181:                                              ; preds = %171, %162
  %182 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %183 = getelementptr inbounds %class.CacheParameters, ptr %182, i32 0, i32 20
  %184 = load i32, ptr %183, align 8, !tbaa !57
  %185 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %186 = getelementptr inbounds %class.InputParameter, ptr %185, i32 0, i32 7
  store i32 %184, ptr %186, align 4, !tbaa !58
  %187 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %188 = getelementptr inbounds %class.CacheParameters, ptr %187, i32 0, i32 6
  %189 = load double, ptr %188, align 8, !tbaa !59
  %190 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %191 = getelementptr inbounds %class.InputParameter, ptr %190, i32 0, i32 85
  store double %189, ptr %191, align 8, !tbaa !60
  %192 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %193 = getelementptr inbounds %class.CacheParameters, ptr %192, i32 0, i32 7
  %194 = load double, ptr %193, align 8, !tbaa !61
  %195 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %196 = getelementptr inbounds %class.InputParameter, ptr %195, i32 0, i32 86
  store double %194, ptr %196, align 8, !tbaa !62
  %197 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %198 = getelementptr inbounds %class.InputParameter, ptr %197, i32 0, i32 8
  store i32 0, ptr %198, align 8, !tbaa !63
  %199 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %200 = getelementptr inbounds %class.InputParameter, ptr %199, i32 0, i32 9
  store i32 0, ptr %200, align 4, !tbaa !64
  %201 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %202 = getelementptr inbounds %class.InputParameter, ptr %201, i32 0, i32 10
  store i32 0, ptr %202, align 8, !tbaa !65
  %203 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %204 = getelementptr inbounds %class.InputParameter, ptr %203, i32 0, i32 11
  store i32 1, ptr %204, align 4, !tbaa !66
  %205 = load i8, ptr @_ZN9CacheUnit8is_cacheE, align 1, !tbaa !67, !range !68, !noundef !69
  %206 = trunc i8 %205 to i1
  %207 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %208 = getelementptr inbounds %class.InputParameter, ptr %207, i32 0, i32 20
  %209 = zext i1 %206 to i8
  store i8 %209, ptr %208, align 1, !tbaa !70
  %210 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %211 = getelementptr inbounds %class.CacheParameters, ptr %210, i32 0, i32 50
  %212 = load i8, ptr %211, align 8, !tbaa !71, !range !68, !noundef !69
  %213 = trunc i8 %212 to i1
  %214 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %215 = getelementptr inbounds %class.InputParameter, ptr %214, i32 0, i32 21
  %216 = zext i1 %213 to i8
  store i8 %216, ptr %215, align 2, !tbaa !72
  %217 = load i8, ptr @_ZN9CacheUnit8pure_camE, align 1, !tbaa !67, !range !68, !noundef !69
  %218 = trunc i8 %217 to i1
  %219 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %220 = getelementptr inbounds %class.InputParameter, ptr %219, i32 0, i32 22
  %221 = zext i1 %218 to i8
  store i8 %221, ptr %220, align 1, !tbaa !73
  %222 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %223 = getelementptr inbounds %class.CacheParameters, ptr %222, i32 0, i32 25
  %224 = load i32, ptr %223, align 4, !tbaa !74
  %225 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %226 = getelementptr inbounds %class.InputParameter, ptr %225, i32 0, i32 14
  store i32 %224, ptr %226, align 8, !tbaa !75
  %227 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %228 = getelementptr inbounds %class.CacheParameters, ptr %227, i32 0, i32 26
  %229 = load i32, ptr %228, align 8, !tbaa !76
  %230 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %231 = getelementptr inbounds %class.InputParameter, ptr %230, i32 0, i32 15
  store i32 %229, ptr %231, align 4, !tbaa !77
  %232 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %233 = getelementptr inbounds %class.CacheParameters, ptr %232, i32 0, i32 27
  %234 = load i32, ptr %233, align 4, !tbaa !78
  %235 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %236 = getelementptr inbounds %class.InputParameter, ptr %235, i32 0, i32 16
  store i32 %234, ptr %236, align 8, !tbaa !79
  %237 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %238 = getelementptr inbounds %class.CacheParameters, ptr %237, i32 0, i32 28
  %239 = load i32, ptr %238, align 8, !tbaa !80
  %240 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %241 = getelementptr inbounds %class.InputParameter, ptr %240, i32 0, i32 17
  store i32 %239, ptr %241, align 4, !tbaa !81
  %242 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %243 = getelementptr inbounds %class.CacheParameters, ptr %242, i32 0, i32 29
  %244 = load i32, ptr %243, align 4, !tbaa !82
  %245 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %246 = getelementptr inbounds %class.InputParameter, ptr %245, i32 0, i32 18
  store i32 %244, ptr %246, align 8, !tbaa !83
  %247 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 10280) #9
          to label %248 unwind label %406

248:                                              ; preds = %181
  store i1 true, ptr %18, align 1
  %249 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 2
  %250 = load ptr, ptr %249, align 8, !tbaa !84
  %251 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %252 unwind label %410

252:                                              ; preds = %248
  %253 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %254 = getelementptr inbounds %class.CacheParameters, ptr %253, i32 0, i32 52
  %255 = load i32, ptr %254, align 8, !tbaa !85
  %256 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 5
  %257 = load double, ptr %256, align 8, !tbaa !86
  %258 = load i8, ptr @_ZN9CacheUnit9opt_localE, align 1, !tbaa !67, !range !68, !noundef !69
  %259 = trunc i8 %258 to i1
  %260 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %261 = getelementptr inbounds %class.CacheParameters, ptr %260, i32 0, i32 53
  %262 = load i32, ptr %261, align 4, !tbaa !87
  invoke void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280) %247, ptr noundef %250, ptr noundef %251, ptr noundef %16, i32 noundef %255, double noundef %257, i1 noundef zeroext %259, i32 noundef %262, i1 noundef zeroext true)
          to label %263 unwind label %414

263:                                              ; preds = %252
  store i1 false, ptr %18, align 1
  store ptr %247, ptr %11, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  %264 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %265 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %265, ptr %19, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP14McPATComponentSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %264, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %266 unwind label %422

266:                                              ; preds = %263
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  %267 = load ptr, ptr %11, align 8, !tbaa !5
  %268 = getelementptr inbounds %class.CacheArray, ptr %267, i32 0, i32 1
  %269 = getelementptr inbounds %class.InputParameter, ptr %268, i32 0, i32 14
  %270 = load i32, ptr %269, align 8, !tbaa !88
  %271 = load ptr, ptr %11, align 8, !tbaa !5
  %272 = getelementptr inbounds %class.CacheArray, ptr %271, i32 0, i32 1
  %273 = getelementptr inbounds %class.InputParameter, ptr %272, i32 0, i32 15
  %274 = load i32, ptr %273, align 4, !tbaa !92
  %275 = add i32 %270, %274
  %276 = load ptr, ptr %11, align 8, !tbaa !5
  %277 = getelementptr inbounds %class.CacheArray, ptr %276, i32 0, i32 1
  %278 = getelementptr inbounds %class.InputParameter, ptr %277, i32 0, i32 16
  %279 = load i32, ptr %278, align 8, !tbaa !93
  %280 = add i32 %275, %279
  store i32 %280, ptr %20, align 4, !tbaa !48
  %281 = load ptr, ptr %11, align 8, !tbaa !5
  %282 = getelementptr inbounds %class.McPATComponent, ptr %281, i32 0, i32 8
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %282)
          to label %283 unwind label %426

283:                                              ; preds = %266
  %284 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %285 = getelementptr inbounds %class.CacheStatistics, ptr %284, i32 0, i32 2
  %286 = load double, ptr %285, align 8, !tbaa !94
  %287 = load i32, ptr %20, align 4, !tbaa !48
  %288 = sitofp i32 %287 to double
  %289 = fmul double %286, %288
  %290 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %291 = getelementptr inbounds %class.CacheStatistics, ptr %290, i32 0, i32 0
  %292 = load double, ptr %291, align 8, !tbaa !95
  %293 = fmul double %289, %292
  %294 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %295 = getelementptr inbounds %class.CacheStatistics, ptr %294, i32 0, i32 18
  %296 = load double, ptr %295, align 8, !tbaa !96
  %297 = fmul double %293, %296
  %298 = load ptr, ptr %11, align 8, !tbaa !5
  %299 = getelementptr inbounds %class.McPATComponent, ptr %298, i32 0, i32 8
  %300 = getelementptr inbounds %class.statsDef, ptr %299, i32 0, i32 0
  %301 = getelementptr inbounds %class.statsComponents, ptr %300, i32 0, i32 0
  store double %297, ptr %301, align 8, !tbaa !97
  %302 = load ptr, ptr %11, align 8, !tbaa !5
  %303 = getelementptr inbounds %class.McPATComponent, ptr %302, i32 0, i32 8
  %304 = getelementptr inbounds %class.statsDef, ptr %303, i32 0, i32 0
  %305 = getelementptr inbounds %class.statsComponents, ptr %304, i32 0, i32 2
  store double 0.000000e+00, ptr %305, align 8, !tbaa !98
  %306 = load ptr, ptr %11, align 8, !tbaa !5
  %307 = getelementptr inbounds %class.McPATComponent, ptr %306, i32 0, i32 8
  %308 = getelementptr inbounds %class.statsDef, ptr %307, i32 0, i32 0
  %309 = getelementptr inbounds %class.statsComponents, ptr %308, i32 0, i32 0
  %310 = load double, ptr %309, align 8, !tbaa !97
  %311 = load ptr, ptr %11, align 8, !tbaa !5
  %312 = getelementptr inbounds %class.McPATComponent, ptr %311, i32 0, i32 8
  %313 = getelementptr inbounds %class.statsDef, ptr %312, i32 0, i32 0
  %314 = getelementptr inbounds %class.statsComponents, ptr %313, i32 0, i32 2
  %315 = load double, ptr %314, align 8, !tbaa !98
  %316 = fsub double %310, %315
  %317 = load ptr, ptr %11, align 8, !tbaa !5
  %318 = getelementptr inbounds %class.McPATComponent, ptr %317, i32 0, i32 8
  %319 = getelementptr inbounds %class.statsDef, ptr %318, i32 0, i32 0
  %320 = getelementptr inbounds %class.statsComponents, ptr %319, i32 0, i32 1
  store double %316, ptr %320, align 8, !tbaa !99
  %321 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %322 = getelementptr inbounds %class.CacheStatistics, ptr %321, i32 0, i32 3
  %323 = load double, ptr %322, align 8, !tbaa !100
  %324 = load i32, ptr %20, align 4, !tbaa !48
  %325 = sitofp i32 %324 to double
  %326 = fmul double %323, %325
  %327 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %328 = getelementptr inbounds %class.CacheStatistics, ptr %327, i32 0, i32 0
  %329 = load double, ptr %328, align 8, !tbaa !95
  %330 = fmul double %326, %329
  %331 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %332 = getelementptr inbounds %class.CacheStatistics, ptr %331, i32 0, i32 18
  %333 = load double, ptr %332, align 8, !tbaa !96
  %334 = fmul double %330, %333
  %335 = load ptr, ptr %11, align 8, !tbaa !5
  %336 = getelementptr inbounds %class.McPATComponent, ptr %335, i32 0, i32 8
  %337 = getelementptr inbounds %class.statsDef, ptr %336, i32 0, i32 1
  %338 = getelementptr inbounds %class.statsComponents, ptr %337, i32 0, i32 0
  store double %334, ptr %338, align 8, !tbaa !101
  %339 = load ptr, ptr %11, align 8, !tbaa !5
  %340 = getelementptr inbounds %class.McPATComponent, ptr %339, i32 0, i32 8
  %341 = getelementptr inbounds %class.statsDef, ptr %340, i32 0, i32 1
  %342 = getelementptr inbounds %class.statsComponents, ptr %341, i32 0, i32 2
  store double 0.000000e+00, ptr %342, align 8, !tbaa !102
  %343 = load ptr, ptr %11, align 8, !tbaa !5
  %344 = getelementptr inbounds %class.McPATComponent, ptr %343, i32 0, i32 8
  %345 = getelementptr inbounds %class.statsDef, ptr %344, i32 0, i32 1
  %346 = getelementptr inbounds %class.statsComponents, ptr %345, i32 0, i32 0
  %347 = load double, ptr %346, align 8, !tbaa !101
  %348 = load ptr, ptr %11, align 8, !tbaa !5
  %349 = getelementptr inbounds %class.McPATComponent, ptr %348, i32 0, i32 8
  %350 = getelementptr inbounds %class.statsDef, ptr %349, i32 0, i32 1
  %351 = getelementptr inbounds %class.statsComponents, ptr %350, i32 0, i32 2
  %352 = load double, ptr %351, align 8, !tbaa !102
  %353 = fsub double %347, %352
  %354 = load ptr, ptr %11, align 8, !tbaa !5
  %355 = getelementptr inbounds %class.McPATComponent, ptr %354, i32 0, i32 8
  %356 = getelementptr inbounds %class.statsDef, ptr %355, i32 0, i32 1
  %357 = getelementptr inbounds %class.statsComponents, ptr %356, i32 0, i32 1
  store double %353, ptr %357, align 8, !tbaa !103
  %358 = load ptr, ptr %11, align 8, !tbaa !5
  %359 = getelementptr inbounds %class.McPATComponent, ptr %358, i32 0, i32 8
  %360 = getelementptr inbounds %class.statsDef, ptr %359, i32 0, i32 2
  %361 = getelementptr inbounds %class.statsComponents, ptr %360, i32 0, i32 0
  store double 0.000000e+00, ptr %361, align 8, !tbaa !104
  %362 = load ptr, ptr %11, align 8, !tbaa !5
  %363 = getelementptr inbounds %class.McPATComponent, ptr %362, i32 0, i32 8
  %364 = getelementptr inbounds %class.statsDef, ptr %363, i32 0, i32 2
  %365 = getelementptr inbounds %class.statsComponents, ptr %364, i32 0, i32 2
  store double 0.000000e+00, ptr %365, align 8, !tbaa !105
  %366 = load ptr, ptr %11, align 8, !tbaa !5
  %367 = getelementptr inbounds %class.McPATComponent, ptr %366, i32 0, i32 8
  %368 = getelementptr inbounds %class.statsDef, ptr %367, i32 0, i32 2
  %369 = getelementptr inbounds %class.statsComponents, ptr %368, i32 0, i32 1
  store double 0.000000e+00, ptr %369, align 8, !tbaa !106
  %370 = load ptr, ptr %11, align 8, !tbaa !5
  %371 = getelementptr inbounds %class.McPATComponent, ptr %370, i32 0, i32 9
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %371)
          to label %372 unwind label %426

372:                                              ; preds = %283
  %373 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %374 = getelementptr inbounds %class.CacheStatistics, ptr %373, i32 0, i32 4
  %375 = load i8, ptr %374, align 8, !tbaa !107, !range !68, !noundef !69
  %376 = trunc i8 %375 to i1
  br i1 %376, label %377, label %430

377:                                              ; preds = %372
  %378 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %379 = getelementptr inbounds %class.CacheStatistics, ptr %378, i32 0, i32 5
  %380 = load double, ptr %379, align 8, !tbaa !108
  %381 = load ptr, ptr %11, align 8, !tbaa !5
  %382 = getelementptr inbounds %class.McPATComponent, ptr %381, i32 0, i32 9
  %383 = getelementptr inbounds %class.statsDef, ptr %382, i32 0, i32 3
  %384 = getelementptr inbounds %class.statsComponents, ptr %383, i32 0, i32 0
  store double %380, ptr %384, align 8, !tbaa !109
  %385 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %386 = getelementptr inbounds %class.CacheStatistics, ptr %385, i32 0, i32 6
  %387 = load double, ptr %386, align 8, !tbaa !110
  %388 = load ptr, ptr %11, align 8, !tbaa !5
  %389 = getelementptr inbounds %class.McPATComponent, ptr %388, i32 0, i32 9
  %390 = getelementptr inbounds %class.statsDef, ptr %389, i32 0, i32 4
  %391 = getelementptr inbounds %class.statsComponents, ptr %390, i32 0, i32 0
  store double %387, ptr %391, align 8, !tbaa !111
  %392 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %393 = getelementptr inbounds %class.CacheStatistics, ptr %392, i32 0, i32 7
  %394 = load double, ptr %393, align 8, !tbaa !112
  %395 = load ptr, ptr %11, align 8, !tbaa !5
  %396 = getelementptr inbounds %class.McPATComponent, ptr %395, i32 0, i32 9
  %397 = getelementptr inbounds %class.statsDef, ptr %396, i32 0, i32 5
  %398 = getelementptr inbounds %class.statsComponents, ptr %397, i32 0, i32 0
  store double %394, ptr %398, align 8, !tbaa !113
  %399 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %400 = getelementptr inbounds %class.CacheStatistics, ptr %399, i32 0, i32 8
  %401 = load double, ptr %400, align 8, !tbaa !114
  %402 = load ptr, ptr %11, align 8, !tbaa !5
  %403 = getelementptr inbounds %class.McPATComponent, ptr %402, i32 0, i32 9
  %404 = getelementptr inbounds %class.statsDef, ptr %403, i32 0, i32 6
  %405 = getelementptr inbounds %class.statsComponents, ptr %404, i32 0, i32 0
  store double %401, ptr %405, align 8, !tbaa !115
  br label %475

406:                                              ; preds = %181
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %9, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %10, align 4
  br label %1603

410:                                              ; preds = %248
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %9, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %10, align 4
  br label %418

414:                                              ; preds = %252
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %9, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br label %418

418:                                              ; preds = %414, %410
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  %419 = load i1, ptr %18, align 1
  br i1 %419, label %420, label %421

420:                                              ; preds = %418
  call void @_ZdlPvm(ptr noundef %247, i64 noundef 10280) #10
  br label %421

421:                                              ; preds = %420, %418
  br label %1603

422:                                              ; preds = %263
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %9, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %1603

426:                                              ; preds = %1514, %1511, %1426, %1276, %1273, %1188, %1035, %1032, %954, %803, %800, %715, %479, %283, %266
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %9, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %10, align 4
  br label %1602

430:                                              ; preds = %372
  %431 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %432 = getelementptr inbounds %class.CacheStatistics, ptr %431, i32 0, i32 9
  %433 = load double, ptr %432, align 8, !tbaa !116
  %434 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %435 = getelementptr inbounds %class.CacheStatistics, ptr %434, i32 0, i32 12
  %436 = load double, ptr %435, align 8, !tbaa !117
  %437 = fadd double %433, %436
  %438 = load ptr, ptr %11, align 8, !tbaa !5
  %439 = getelementptr inbounds %class.McPATComponent, ptr %438, i32 0, i32 9
  %440 = getelementptr inbounds %class.statsDef, ptr %439, i32 0, i32 3
  %441 = getelementptr inbounds %class.statsComponents, ptr %440, i32 0, i32 0
  store double %437, ptr %441, align 8, !tbaa !109
  %442 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %443 = getelementptr inbounds %class.CacheStatistics, ptr %442, i32 0, i32 10
  %444 = load double, ptr %443, align 8, !tbaa !118
  %445 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %446 = getelementptr inbounds %class.CacheStatistics, ptr %445, i32 0, i32 11
  %447 = load double, ptr %446, align 8, !tbaa !119
  %448 = fadd double %444, %447
  %449 = load ptr, ptr %11, align 8, !tbaa !5
  %450 = getelementptr inbounds %class.McPATComponent, ptr %449, i32 0, i32 9
  %451 = getelementptr inbounds %class.statsDef, ptr %450, i32 0, i32 4
  %452 = getelementptr inbounds %class.statsComponents, ptr %451, i32 0, i32 0
  store double %448, ptr %452, align 8, !tbaa !111
  %453 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %454 = getelementptr inbounds %class.CacheStatistics, ptr %453, i32 0, i32 9
  %455 = load double, ptr %454, align 8, !tbaa !116
  %456 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %457 = getelementptr inbounds %class.CacheStatistics, ptr %456, i32 0, i32 10
  %458 = load double, ptr %457, align 8, !tbaa !118
  %459 = fadd double %455, %458
  %460 = load ptr, ptr %11, align 8, !tbaa !5
  %461 = getelementptr inbounds %class.McPATComponent, ptr %460, i32 0, i32 9
  %462 = getelementptr inbounds %class.statsDef, ptr %461, i32 0, i32 5
  %463 = getelementptr inbounds %class.statsComponents, ptr %462, i32 0, i32 0
  store double %459, ptr %463, align 8, !tbaa !113
  %464 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %465 = getelementptr inbounds %class.CacheStatistics, ptr %464, i32 0, i32 11
  %466 = load double, ptr %465, align 8, !tbaa !119
  %467 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %468 = getelementptr inbounds %class.CacheStatistics, ptr %467, i32 0, i32 12
  %469 = load double, ptr %468, align 8, !tbaa !117
  %470 = fadd double %466, %469
  %471 = load ptr, ptr %11, align 8, !tbaa !5
  %472 = getelementptr inbounds %class.McPATComponent, ptr %471, i32 0, i32 9
  %473 = getelementptr inbounds %class.statsDef, ptr %472, i32 0, i32 6
  %474 = getelementptr inbounds %class.statsComponents, ptr %473, i32 0, i32 0
  store double %470, ptr %474, align 8, !tbaa !115
  br label %475

475:                                              ; preds = %430, %377
  %476 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 6
  %477 = load double, ptr %476, align 8, !tbaa !11
  %478 = fcmp ogt double %477, 0.000000e+00
  br i1 %478, label %479, label %616

479:                                              ; preds = %475
  %480 = load ptr, ptr %11, align 8, !tbaa !5
  %481 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 6
  %482 = load double, ptr %481, align 8, !tbaa !11
  invoke void @_ZN10CacheArray17setSBTDirOverheadEd(ptr noundef nonnull align 8 dereferenceable(10280) %480, double noundef %482)
          to label %483 unwind label %426

483:                                              ; preds = %479
  %484 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %485 = getelementptr inbounds %class.CacheStatistics, ptr %484, i32 0, i32 2
  %486 = load double, ptr %485, align 8, !tbaa !94
  %487 = load i32, ptr %20, align 4, !tbaa !48
  %488 = sitofp i32 %487 to double
  %489 = fmul double %486, %488
  %490 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %491 = getelementptr inbounds %class.CacheStatistics, ptr %490, i32 0, i32 1
  %492 = load double, ptr %491, align 8, !tbaa !120
  %493 = fmul double %489, %492
  %494 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %495 = getelementptr inbounds %class.CacheStatistics, ptr %494, i32 0, i32 18
  %496 = load double, ptr %495, align 8, !tbaa !96
  %497 = fsub double 1.000000e+00, %496
  %498 = fmul double %493, %497
  %499 = load ptr, ptr %11, align 8, !tbaa !5
  %500 = getelementptr inbounds %class.CacheArray, ptr %499, i32 0, i32 8
  %501 = getelementptr inbounds %class.statsDef, ptr %500, i32 0, i32 0
  %502 = getelementptr inbounds %class.statsComponents, ptr %501, i32 0, i32 0
  store double %498, ptr %502, align 8, !tbaa !121
  %503 = load ptr, ptr %11, align 8, !tbaa !5
  %504 = getelementptr inbounds %class.CacheArray, ptr %503, i32 0, i32 8
  %505 = getelementptr inbounds %class.statsDef, ptr %504, i32 0, i32 0
  %506 = getelementptr inbounds %class.statsComponents, ptr %505, i32 0, i32 2
  store double 0.000000e+00, ptr %506, align 8, !tbaa !122
  %507 = load ptr, ptr %11, align 8, !tbaa !5
  %508 = getelementptr inbounds %class.CacheArray, ptr %507, i32 0, i32 8
  %509 = getelementptr inbounds %class.statsDef, ptr %508, i32 0, i32 0
  %510 = getelementptr inbounds %class.statsComponents, ptr %509, i32 0, i32 0
  %511 = load double, ptr %510, align 8, !tbaa !121
  %512 = load ptr, ptr %11, align 8, !tbaa !5
  %513 = getelementptr inbounds %class.CacheArray, ptr %512, i32 0, i32 8
  %514 = getelementptr inbounds %class.statsDef, ptr %513, i32 0, i32 0
  %515 = getelementptr inbounds %class.statsComponents, ptr %514, i32 0, i32 2
  %516 = load double, ptr %515, align 8, !tbaa !122
  %517 = fsub double %511, %516
  %518 = load ptr, ptr %11, align 8, !tbaa !5
  %519 = getelementptr inbounds %class.CacheArray, ptr %518, i32 0, i32 8
  %520 = getelementptr inbounds %class.statsDef, ptr %519, i32 0, i32 0
  %521 = getelementptr inbounds %class.statsComponents, ptr %520, i32 0, i32 1
  store double %517, ptr %521, align 8, !tbaa !123
  %522 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %523 = getelementptr inbounds %class.CacheStatistics, ptr %522, i32 0, i32 19
  %524 = load double, ptr %523, align 8, !tbaa !124
  %525 = load i32, ptr %20, align 4, !tbaa !48
  %526 = sitofp i32 %525 to double
  %527 = fmul double %524, %526
  %528 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %529 = getelementptr inbounds %class.CacheStatistics, ptr %528, i32 0, i32 1
  %530 = load double, ptr %529, align 8, !tbaa !120
  %531 = fmul double %527, %530
  %532 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %533 = getelementptr inbounds %class.CacheStatistics, ptr %532, i32 0, i32 18
  %534 = load double, ptr %533, align 8, !tbaa !96
  %535 = fsub double 1.000000e+00, %534
  %536 = fmul double %531, %535
  %537 = load ptr, ptr %11, align 8, !tbaa !5
  %538 = getelementptr inbounds %class.CacheArray, ptr %537, i32 0, i32 8
  %539 = getelementptr inbounds %class.statsDef, ptr %538, i32 0, i32 1
  %540 = getelementptr inbounds %class.statsComponents, ptr %539, i32 0, i32 0
  store double %536, ptr %540, align 8, !tbaa !125
  %541 = load ptr, ptr %11, align 8, !tbaa !5
  %542 = getelementptr inbounds %class.CacheArray, ptr %541, i32 0, i32 8
  %543 = getelementptr inbounds %class.statsDef, ptr %542, i32 0, i32 1
  %544 = getelementptr inbounds %class.statsComponents, ptr %543, i32 0, i32 2
  store double 0.000000e+00, ptr %544, align 8, !tbaa !126
  %545 = load ptr, ptr %11, align 8, !tbaa !5
  %546 = getelementptr inbounds %class.CacheArray, ptr %545, i32 0, i32 8
  %547 = getelementptr inbounds %class.statsDef, ptr %546, i32 0, i32 1
  %548 = getelementptr inbounds %class.statsComponents, ptr %547, i32 0, i32 0
  %549 = load double, ptr %548, align 8, !tbaa !125
  %550 = load ptr, ptr %11, align 8, !tbaa !5
  %551 = getelementptr inbounds %class.CacheArray, ptr %550, i32 0, i32 8
  %552 = getelementptr inbounds %class.statsDef, ptr %551, i32 0, i32 1
  %553 = getelementptr inbounds %class.statsComponents, ptr %552, i32 0, i32 2
  %554 = load double, ptr %553, align 8, !tbaa !126
  %555 = fsub double %549, %554
  %556 = load ptr, ptr %11, align 8, !tbaa !5
  %557 = getelementptr inbounds %class.CacheArray, ptr %556, i32 0, i32 8
  %558 = getelementptr inbounds %class.statsDef, ptr %557, i32 0, i32 1
  %559 = getelementptr inbounds %class.statsComponents, ptr %558, i32 0, i32 1
  store double %555, ptr %559, align 8, !tbaa !127
  %560 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %561 = getelementptr inbounds %class.CacheStatistics, ptr %560, i32 0, i32 14
  %562 = load i32, ptr %561, align 8, !tbaa !128
  %563 = sitofp i32 %562 to double
  %564 = load ptr, ptr %11, align 8, !tbaa !5
  %565 = getelementptr inbounds %class.CacheArray, ptr %564, i32 0, i32 9
  %566 = getelementptr inbounds %class.statsDef, ptr %565, i32 0, i32 0
  %567 = getelementptr inbounds %class.statsComponents, ptr %566, i32 0, i32 0
  store double %563, ptr %567, align 8, !tbaa !129
  %568 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %569 = getelementptr inbounds %class.CacheStatistics, ptr %568, i32 0, i32 16
  %570 = load i32, ptr %569, align 8, !tbaa !130
  %571 = sitofp i32 %570 to double
  %572 = load ptr, ptr %11, align 8, !tbaa !5
  %573 = getelementptr inbounds %class.CacheArray, ptr %572, i32 0, i32 9
  %574 = getelementptr inbounds %class.statsDef, ptr %573, i32 0, i32 0
  %575 = getelementptr inbounds %class.statsComponents, ptr %574, i32 0, i32 2
  store double %571, ptr %575, align 8, !tbaa !131
  %576 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %577 = getelementptr inbounds %class.CacheStatistics, ptr %576, i32 0, i32 14
  %578 = load i32, ptr %577, align 8, !tbaa !128
  %579 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %580 = getelementptr inbounds %class.CacheStatistics, ptr %579, i32 0, i32 16
  %581 = load i32, ptr %580, align 8, !tbaa !130
  %582 = sub nsw i32 %578, %581
  %583 = sitofp i32 %582 to double
  %584 = load ptr, ptr %11, align 8, !tbaa !5
  %585 = getelementptr inbounds %class.CacheArray, ptr %584, i32 0, i32 9
  %586 = getelementptr inbounds %class.statsDef, ptr %585, i32 0, i32 0
  %587 = getelementptr inbounds %class.statsComponents, ptr %586, i32 0, i32 0
  store double %583, ptr %587, align 8, !tbaa !129
  %588 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %589 = getelementptr inbounds %class.CacheStatistics, ptr %588, i32 0, i32 15
  %590 = load i32, ptr %589, align 4, !tbaa !132
  %591 = sitofp i32 %590 to double
  %592 = load ptr, ptr %11, align 8, !tbaa !5
  %593 = getelementptr inbounds %class.CacheArray, ptr %592, i32 0, i32 9
  %594 = getelementptr inbounds %class.statsDef, ptr %593, i32 0, i32 1
  %595 = getelementptr inbounds %class.statsComponents, ptr %594, i32 0, i32 0
  store double %591, ptr %595, align 8, !tbaa !133
  %596 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %597 = getelementptr inbounds %class.CacheStatistics, ptr %596, i32 0, i32 17
  %598 = load i32, ptr %597, align 4, !tbaa !134
  %599 = sitofp i32 %598 to double
  %600 = load ptr, ptr %11, align 8, !tbaa !5
  %601 = getelementptr inbounds %class.CacheArray, ptr %600, i32 0, i32 9
  %602 = getelementptr inbounds %class.statsDef, ptr %601, i32 0, i32 1
  %603 = getelementptr inbounds %class.statsComponents, ptr %602, i32 0, i32 2
  store double %599, ptr %603, align 8, !tbaa !135
  %604 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %605 = getelementptr inbounds %class.CacheStatistics, ptr %604, i32 0, i32 15
  %606 = load i32, ptr %605, align 4, !tbaa !132
  %607 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %608 = getelementptr inbounds %class.CacheStatistics, ptr %607, i32 0, i32 17
  %609 = load i32, ptr %608, align 4, !tbaa !134
  %610 = sub nsw i32 %606, %609
  %611 = sitofp i32 %610 to double
  %612 = load ptr, ptr %11, align 8, !tbaa !5
  %613 = getelementptr inbounds %class.CacheArray, ptr %612, i32 0, i32 9
  %614 = getelementptr inbounds %class.statsDef, ptr %613, i32 0, i32 1
  %615 = getelementptr inbounds %class.statsComponents, ptr %614, i32 0, i32 1
  store double %611, ptr %615, align 8, !tbaa !136
  br label %616

616:                                              ; preds = %483, %475
  %617 = load i8, ptr @_ZN9CacheUnit18force_cache_configE, align 1, !tbaa !67, !range !68, !noundef !69
  %618 = trunc i8 %617 to i1
  %619 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %620 = getelementptr inbounds %class.InputParameter, ptr %619, i32 0, i32 49
  %621 = zext i1 %618 to i8
  store i8 %621, ptr %620, align 8, !tbaa !137
  %622 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %623 = getelementptr inbounds %class.CacheParameters, ptr %622, i32 0, i32 0
  %624 = load i32, ptr %623, align 8, !tbaa !46
  %625 = icmp eq i32 %624, 0
  br i1 %625, label %626, label %631

626:                                              ; preds = %616
  %627 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %628 = getelementptr inbounds %class.CacheParameters, ptr %627, i32 0, i32 51
  %629 = load i32, ptr %628, align 4, !tbaa !47
  %630 = icmp eq i32 %629, 3
  br i1 %630, label %1601, label %631

631:                                              ; preds = %626, %616
  %632 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %633 = getelementptr inbounds %class.CacheParameters, ptr %632, i32 0, i32 0
  %634 = load i32, ptr %633, align 8, !tbaa !46
  %635 = icmp eq i32 %634, 0
  br i1 %635, label %636, label %641

636:                                              ; preds = %631
  %637 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %638 = getelementptr inbounds %class.CacheParameters, ptr %637, i32 0, i32 51
  %639 = load i32, ptr %638, align 4, !tbaa !47
  %640 = icmp eq i32 %639, 4
  br i1 %640, label %1601, label %641

641:                                              ; preds = %636, %631
  %642 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !48
  %643 = add nsw i32 %642, 5
  store i32 %643, ptr %7, align 4, !tbaa !48
  %644 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !48
  %645 = load double, ptr %12, align 8, !tbaa !42
  %646 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %647 = getelementptr inbounds %class.CacheParameters, ptr %646, i32 0, i32 3
  %648 = load double, ptr %647, align 8, !tbaa !43
  %649 = fdiv double %645, %648
  %650 = call double @log2(double noundef %649) #8
  %651 = call double @llvm.ceil.f64(double %650)
  %652 = fptosi double %651 to i32
  %653 = add nsw i32 %644, %652
  %654 = sitofp i32 %653 to double
  %655 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %656 = getelementptr inbounds %class.CacheParameters, ptr %655, i32 0, i32 3
  %657 = load double, ptr %656, align 8, !tbaa !43
  %658 = call double @llvm.fmuladd.f64(double %657, double 8.000000e+00, double %654)
  %659 = fptosi double %658 to i32
  store i32 %659, ptr %8, align 4, !tbaa !48
  %660 = load i32, ptr %8, align 4, !tbaa !48
  %661 = sitofp i32 %660 to double
  %662 = fdiv double %661, 8.000000e+00
  %663 = call double @llvm.ceil.f64(double %662)
  %664 = fptosi double %663 to i32
  %665 = sitofp i32 %664 to double
  store double %665, ptr %13, align 8, !tbaa !42
  %666 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %667 = getelementptr inbounds %class.CacheParameters, ptr %666, i32 0, i32 8
  %668 = load i32, ptr %667, align 8, !tbaa !138
  %669 = sitofp i32 %668 to double
  %670 = load double, ptr %13, align 8, !tbaa !42
  %671 = fmul double %669, %670
  store double %671, ptr %12, align 8, !tbaa !42
  %672 = load double, ptr %12, align 8, !tbaa !42
  %673 = fptoui double %672 to i32
  %674 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %675 = getelementptr inbounds %class.InputParameter, ptr %674, i32 0, i32 0
  store i32 %673, ptr %675, align 8, !tbaa !50
  %676 = load double, ptr %13, align 8, !tbaa !42
  %677 = fptoui double %676 to i32
  %678 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %679 = getelementptr inbounds %class.InputParameter, ptr %678, i32 0, i32 1
  store i32 %677, ptr %679, align 4, !tbaa !51
  %680 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %681 = getelementptr inbounds %class.CacheParameters, ptr %680, i32 0, i32 12
  %682 = load i32, ptr %681, align 8, !tbaa !139
  %683 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %684 = getelementptr inbounds %class.InputParameter, ptr %683, i32 0, i32 2
  store i32 %682, ptr %684, align 8, !tbaa !52
  %685 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %686 = getelementptr inbounds %class.CacheParameters, ptr %685, i32 0, i32 16
  %687 = load i32, ptr %686, align 8, !tbaa !140
  %688 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %689 = getelementptr inbounds %class.InputParameter, ptr %688, i32 0, i32 3
  store i32 %687, ptr %689, align 4, !tbaa !53
  %690 = load i32, ptr %7, align 4, !tbaa !48
  %691 = icmp sgt i32 %690, 0
  %692 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %693 = getelementptr inbounds %class.InputParameter, ptr %692, i32 0, i32 5
  %694 = zext i1 %691 to i8
  store i8 %694, ptr %693, align 4, !tbaa !54
  %695 = load i32, ptr %7, align 4, !tbaa !48
  %696 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %697 = getelementptr inbounds %class.InputParameter, ptr %696, i32 0, i32 6
  store i32 %695, ptr %697, align 8, !tbaa !55
  %698 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %699 = getelementptr inbounds %class.CacheParameters, ptr %698, i32 0, i32 51
  %700 = load i32, ptr %699, align 4, !tbaa !47
  %701 = icmp eq i32 %700, 0
  br i1 %701, label %702, label %708

702:                                              ; preds = %641
  %703 = load double, ptr %13, align 8, !tbaa !42
  %704 = fmul double %703, 8.000000e+00
  %705 = fptoui double %704 to i32
  %706 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %707 = getelementptr inbounds %class.InputParameter, ptr %706, i32 0, i32 4
  store i32 %705, ptr %707, align 8, !tbaa !56
  br label %715

708:                                              ; preds = %641
  %709 = load double, ptr %13, align 8, !tbaa !42
  %710 = fmul double %709, 8.000000e+00
  %711 = fdiv double %710, 2.000000e+00
  %712 = fptoui double %711 to i32
  %713 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %714 = getelementptr inbounds %class.InputParameter, ptr %713, i32 0, i32 4
  store i32 %712, ptr %714, align 8, !tbaa !56
  br label %715

715:                                              ; preds = %708, %702
  %716 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %717 = getelementptr inbounds %class.CacheParameters, ptr %716, i32 0, i32 21
  %718 = load i32, ptr %717, align 4, !tbaa !141
  %719 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %720 = getelementptr inbounds %class.InputParameter, ptr %719, i32 0, i32 7
  store i32 %718, ptr %720, align 4, !tbaa !58
  %721 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %722 = getelementptr inbounds %class.InputParameter, ptr %721, i32 0, i32 8
  store i32 0, ptr %722, align 8, !tbaa !63
  %723 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %724 = getelementptr inbounds %class.InputParameter, ptr %723, i32 0, i32 9
  store i32 0, ptr %724, align 4, !tbaa !64
  %725 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %726 = getelementptr inbounds %class.InputParameter, ptr %725, i32 0, i32 10
  store i32 0, ptr %726, align 8, !tbaa !65
  %727 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %728 = getelementptr inbounds %class.InputParameter, ptr %727, i32 0, i32 11
  store i32 1, ptr %728, align 4, !tbaa !66
  %729 = load i8, ptr @_ZN9CacheUnit8is_cacheE, align 1, !tbaa !67, !range !68, !noundef !69
  %730 = trunc i8 %729 to i1
  %731 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %732 = getelementptr inbounds %class.InputParameter, ptr %731, i32 0, i32 20
  %733 = zext i1 %730 to i8
  store i8 %733, ptr %732, align 1, !tbaa !70
  %734 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %735 = getelementptr inbounds %class.CacheParameters, ptr %734, i32 0, i32 50
  %736 = load i8, ptr %735, align 8, !tbaa !71, !range !68, !noundef !69
  %737 = trunc i8 %736 to i1
  %738 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %739 = getelementptr inbounds %class.InputParameter, ptr %738, i32 0, i32 21
  %740 = zext i1 %737 to i8
  store i8 %740, ptr %739, align 2, !tbaa !72
  %741 = load i8, ptr @_ZN9CacheUnit8pure_camE, align 1, !tbaa !67, !range !68, !noundef !69
  %742 = trunc i8 %741 to i1
  %743 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %744 = getelementptr inbounds %class.InputParameter, ptr %743, i32 0, i32 22
  %745 = zext i1 %742 to i8
  store i8 %745, ptr %744, align 1, !tbaa !73
  %746 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %747 = getelementptr inbounds %class.CacheParameters, ptr %746, i32 0, i32 6
  %748 = load double, ptr %747, align 8, !tbaa !59
  %749 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %750 = getelementptr inbounds %class.InputParameter, ptr %749, i32 0, i32 85
  store double %748, ptr %750, align 8, !tbaa !60
  %751 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %752 = getelementptr inbounds %class.CacheParameters, ptr %751, i32 0, i32 7
  %753 = load double, ptr %752, align 8, !tbaa !61
  %754 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %755 = getelementptr inbounds %class.InputParameter, ptr %754, i32 0, i32 86
  store double %753, ptr %755, align 8, !tbaa !62
  %756 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %757 = getelementptr inbounds %class.CacheParameters, ptr %756, i32 0, i32 30
  %758 = load i32, ptr %757, align 8, !tbaa !142
  %759 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %760 = getelementptr inbounds %class.InputParameter, ptr %759, i32 0, i32 14
  store i32 %758, ptr %760, align 8, !tbaa !75
  %761 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %762 = getelementptr inbounds %class.CacheParameters, ptr %761, i32 0, i32 31
  %763 = load i32, ptr %762, align 4, !tbaa !143
  %764 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %765 = getelementptr inbounds %class.InputParameter, ptr %764, i32 0, i32 15
  store i32 %763, ptr %765, align 4, !tbaa !77
  %766 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %767 = getelementptr inbounds %class.CacheParameters, ptr %766, i32 0, i32 32
  %768 = load i32, ptr %767, align 8, !tbaa !144
  %769 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %770 = getelementptr inbounds %class.InputParameter, ptr %769, i32 0, i32 16
  store i32 %768, ptr %770, align 8, !tbaa !79
  %771 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %772 = getelementptr inbounds %class.CacheParameters, ptr %771, i32 0, i32 33
  %773 = load i32, ptr %772, align 4, !tbaa !145
  %774 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %775 = getelementptr inbounds %class.InputParameter, ptr %774, i32 0, i32 17
  store i32 %773, ptr %775, align 4, !tbaa !81
  %776 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %777 = getelementptr inbounds %class.CacheParameters, ptr %776, i32 0, i32 34
  %778 = load i32, ptr %777, align 8, !tbaa !146
  %779 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %780 = getelementptr inbounds %class.InputParameter, ptr %779, i32 0, i32 18
  store i32 %778, ptr %780, align 8, !tbaa !83
  %781 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 10280) #9
          to label %782 unwind label %426

782:                                              ; preds = %715
  store i1 true, ptr %23, align 1
  %783 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 2
  %784 = load ptr, ptr %783, align 8, !tbaa !84
  %785 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %786 unwind label %880

786:                                              ; preds = %782
  %787 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %788 = getelementptr inbounds %class.CacheParameters, ptr %787, i32 0, i32 52
  %789 = load i32, ptr %788, align 8, !tbaa !85
  %790 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 5
  %791 = load double, ptr %790, align 8, !tbaa !86
  %792 = load i8, ptr @_ZN9CacheUnit9opt_localE, align 1, !tbaa !67, !range !68, !noundef !69
  %793 = trunc i8 %792 to i1
  %794 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %795 = getelementptr inbounds %class.CacheParameters, ptr %794, i32 0, i32 53
  %796 = load i32, ptr %795, align 4, !tbaa !87
  invoke void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280) %781, ptr noundef %784, ptr noundef %785, ptr noundef %21, i32 noundef %789, double noundef %791, i1 noundef zeroext %793, i32 noundef %796, i1 noundef zeroext true)
          to label %797 unwind label %884

797:                                              ; preds = %786
  store i1 false, ptr %23, align 1
  store ptr %781, ptr %11, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #8
  %798 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %799 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %799, ptr %24, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP14McPATComponentSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %798, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %800 unwind label %892

800:                                              ; preds = %797
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  %801 = load ptr, ptr %11, align 8, !tbaa !5
  %802 = getelementptr inbounds %class.McPATComponent, ptr %801, i32 0, i32 8
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %802)
          to label %803 unwind label %426

803:                                              ; preds = %800
  %804 = load ptr, ptr %11, align 8, !tbaa !5
  %805 = getelementptr inbounds %class.McPATComponent, ptr %804, i32 0, i32 8
  %806 = getelementptr inbounds %class.statsDef, ptr %805, i32 0, i32 0
  %807 = getelementptr inbounds %class.statsComponents, ptr %806, i32 0, i32 0
  store double 0.000000e+00, ptr %807, align 8, !tbaa !97
  %808 = load ptr, ptr %11, align 8, !tbaa !5
  %809 = getelementptr inbounds %class.CacheArray, ptr %808, i32 0, i32 1
  %810 = getelementptr inbounds %class.InputParameter, ptr %809, i32 0, i32 18
  %811 = load i32, ptr %810, align 8, !tbaa !147
  %812 = uitofp i32 %811 to double
  %813 = load ptr, ptr %11, align 8, !tbaa !5
  %814 = getelementptr inbounds %class.McPATComponent, ptr %813, i32 0, i32 8
  %815 = getelementptr inbounds %class.statsDef, ptr %814, i32 0, i32 1
  %816 = getelementptr inbounds %class.statsComponents, ptr %815, i32 0, i32 0
  store double %812, ptr %816, align 8, !tbaa !101
  %817 = load ptr, ptr %11, align 8, !tbaa !5
  %818 = getelementptr inbounds %class.CacheArray, ptr %817, i32 0, i32 1
  %819 = getelementptr inbounds %class.InputParameter, ptr %818, i32 0, i32 18
  %820 = load i32, ptr %819, align 8, !tbaa !147
  %821 = uitofp i32 %820 to double
  %822 = load ptr, ptr %11, align 8, !tbaa !5
  %823 = getelementptr inbounds %class.McPATComponent, ptr %822, i32 0, i32 8
  %824 = getelementptr inbounds %class.statsDef, ptr %823, i32 0, i32 2
  %825 = getelementptr inbounds %class.statsComponents, ptr %824, i32 0, i32 0
  store double %821, ptr %825, align 8, !tbaa !104
  %826 = load ptr, ptr %11, align 8, !tbaa !5
  %827 = getelementptr inbounds %class.McPATComponent, ptr %826, i32 0, i32 9
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %827)
          to label %828 unwind label %426

828:                                              ; preds = %803
  %829 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %830 = getelementptr inbounds %class.CacheStatistics, ptr %829, i32 0, i32 11
  %831 = load double, ptr %830, align 8, !tbaa !119
  %832 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %833 = getelementptr inbounds %class.CacheStatistics, ptr %832, i32 0, i32 12
  %834 = load double, ptr %833, align 8, !tbaa !117
  %835 = fadd double %831, %834
  %836 = load ptr, ptr %11, align 8, !tbaa !5
  %837 = getelementptr inbounds %class.McPATComponent, ptr %836, i32 0, i32 9
  %838 = getelementptr inbounds %class.statsDef, ptr %837, i32 0, i32 0
  %839 = getelementptr inbounds %class.statsComponents, ptr %838, i32 0, i32 0
  store double %835, ptr %839, align 8, !tbaa !148
  %840 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %841 = getelementptr inbounds %class.CacheStatistics, ptr %840, i32 0, i32 11
  %842 = load double, ptr %841, align 8, !tbaa !119
  %843 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %844 = getelementptr inbounds %class.CacheStatistics, ptr %843, i32 0, i32 12
  %845 = load double, ptr %844, align 8, !tbaa !117
  %846 = fadd double %842, %845
  %847 = load ptr, ptr %11, align 8, !tbaa !5
  %848 = getelementptr inbounds %class.McPATComponent, ptr %847, i32 0, i32 9
  %849 = getelementptr inbounds %class.statsDef, ptr %848, i32 0, i32 1
  %850 = getelementptr inbounds %class.statsComponents, ptr %849, i32 0, i32 0
  store double %846, ptr %850, align 8, !tbaa !149
  %851 = load ptr, ptr %11, align 8, !tbaa !5
  %852 = getelementptr inbounds %class.McPATComponent, ptr %851, i32 0, i32 9
  %853 = getelementptr inbounds %class.statsDef, ptr %852, i32 0, i32 2
  %854 = getelementptr inbounds %class.statsComponents, ptr %853, i32 0, i32 0
  store double 0.000000e+00, ptr %854, align 8, !tbaa !150
  %855 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %856 = getelementptr inbounds %class.CacheParameters, ptr %855, i32 0, i32 0
  %857 = load i32, ptr %856, align 8, !tbaa !46
  %858 = icmp eq i32 %857, 2
  br i1 %858, label %859, label %896

859:                                              ; preds = %828
  %860 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %861 = getelementptr inbounds %class.CacheStatistics, ptr %860, i32 0, i32 17
  %862 = load i32, ptr %861, align 4, !tbaa !134
  %863 = sitofp i32 %862 to double
  %864 = load ptr, ptr %11, align 8, !tbaa !5
  %865 = getelementptr inbounds %class.McPATComponent, ptr %864, i32 0, i32 9
  %866 = getelementptr inbounds %class.statsDef, ptr %865, i32 0, i32 0
  %867 = getelementptr inbounds %class.statsComponents, ptr %866, i32 0, i32 0
  %868 = load double, ptr %867, align 8, !tbaa !148
  %869 = fadd double %868, %863
  store double %869, ptr %867, align 8, !tbaa !148
  %870 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %871 = getelementptr inbounds %class.CacheStatistics, ptr %870, i32 0, i32 17
  %872 = load i32, ptr %871, align 4, !tbaa !134
  %873 = sitofp i32 %872 to double
  %874 = load ptr, ptr %11, align 8, !tbaa !5
  %875 = getelementptr inbounds %class.McPATComponent, ptr %874, i32 0, i32 9
  %876 = getelementptr inbounds %class.statsDef, ptr %875, i32 0, i32 1
  %877 = getelementptr inbounds %class.statsComponents, ptr %876, i32 0, i32 0
  %878 = load double, ptr %877, align 8, !tbaa !149
  %879 = fadd double %878, %873
  store double %879, ptr %877, align 8, !tbaa !149
  br label %896

880:                                              ; preds = %782
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %9, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %10, align 4
  br label %888

884:                                              ; preds = %786
  %885 = landingpad { ptr, i32 }
          cleanup
  %886 = extractvalue { ptr, i32 } %885, 0
  store ptr %886, ptr %9, align 8
  %887 = extractvalue { ptr, i32 } %885, 1
  store i32 %887, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %888

888:                                              ; preds = %884, %880
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #8
  %889 = load i1, ptr %23, align 1
  br i1 %889, label %890, label %891

890:                                              ; preds = %888
  call void @_ZdlPvm(ptr noundef %781, i64 noundef 10280) #10
  br label %891

891:                                              ; preds = %890, %888
  br label %1602

892:                                              ; preds = %797
  %893 = landingpad { ptr, i32 }
          cleanup
  %894 = extractvalue { ptr, i32 } %893, 0
  store ptr %894, ptr %9, align 8
  %895 = extractvalue { ptr, i32 } %893, 1
  store i32 %895, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %1602

896:                                              ; preds = %859, %828
  %897 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !48
  %898 = add nsw i32 %897, 5
  store i32 %898, ptr %7, align 4, !tbaa !48
  %899 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %900 = getelementptr inbounds %class.CacheParameters, ptr %899, i32 0, i32 3
  %901 = load double, ptr %900, align 8, !tbaa !43
  %902 = fptosi double %901 to i32
  store i32 %902, ptr %8, align 4, !tbaa !48
  %903 = load i32, ptr %8, align 4, !tbaa !48
  %904 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %905 = getelementptr inbounds %class.CacheParameters, ptr %904, i32 0, i32 9
  %906 = load i32, ptr %905, align 4, !tbaa !151
  %907 = mul nsw i32 %903, %906
  %908 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %909 = getelementptr inbounds %class.InputParameter, ptr %908, i32 0, i32 0
  store i32 %907, ptr %909, align 8, !tbaa !50
  %910 = load i32, ptr %8, align 4, !tbaa !48
  %911 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %912 = getelementptr inbounds %class.InputParameter, ptr %911, i32 0, i32 1
  store i32 %910, ptr %912, align 4, !tbaa !51
  %913 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %914 = getelementptr inbounds %class.CacheParameters, ptr %913, i32 0, i32 13
  %915 = load i32, ptr %914, align 4, !tbaa !152
  %916 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %917 = getelementptr inbounds %class.InputParameter, ptr %916, i32 0, i32 2
  store i32 %915, ptr %917, align 8, !tbaa !52
  %918 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %919 = getelementptr inbounds %class.CacheParameters, ptr %918, i32 0, i32 17
  %920 = load i32, ptr %919, align 4, !tbaa !153
  %921 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %922 = getelementptr inbounds %class.InputParameter, ptr %921, i32 0, i32 3
  store i32 %920, ptr %922, align 4, !tbaa !53
  %923 = load i32, ptr %7, align 4, !tbaa !48
  %924 = icmp sgt i32 %923, 0
  %925 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %926 = getelementptr inbounds %class.InputParameter, ptr %925, i32 0, i32 5
  %927 = zext i1 %924 to i8
  store i8 %927, ptr %926, align 4, !tbaa !54
  %928 = load i32, ptr %7, align 4, !tbaa !48
  %929 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %930 = getelementptr inbounds %class.InputParameter, ptr %929, i32 0, i32 6
  store i32 %928, ptr %930, align 8, !tbaa !55
  %931 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %932 = getelementptr inbounds %class.CacheParameters, ptr %931, i32 0, i32 51
  %933 = load i32, ptr %932, align 4, !tbaa !47
  %934 = icmp eq i32 %933, 0
  br i1 %934, label %935, label %944

935:                                              ; preds = %896
  %936 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %937 = getelementptr inbounds %class.InputParameter, ptr %936, i32 0, i32 1
  %938 = load i32, ptr %937, align 4, !tbaa !51
  %939 = uitofp i32 %938 to double
  %940 = fmul double %939, 8.000000e+00
  %941 = fptoui double %940 to i32
  %942 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %943 = getelementptr inbounds %class.InputParameter, ptr %942, i32 0, i32 4
  store i32 %941, ptr %943, align 8, !tbaa !56
  br label %954

944:                                              ; preds = %896
  %945 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %946 = getelementptr inbounds %class.InputParameter, ptr %945, i32 0, i32 1
  %947 = load i32, ptr %946, align 4, !tbaa !51
  %948 = uitofp i32 %947 to double
  %949 = fmul double %948, 8.000000e+00
  %950 = fdiv double %949, 2.000000e+00
  %951 = fptoui double %950 to i32
  %952 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %953 = getelementptr inbounds %class.InputParameter, ptr %952, i32 0, i32 4
  store i32 %951, ptr %953, align 8, !tbaa !56
  br label %954

954:                                              ; preds = %944, %935
  %955 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %956 = getelementptr inbounds %class.CacheParameters, ptr %955, i32 0, i32 22
  %957 = load i32, ptr %956, align 8, !tbaa !154
  %958 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %959 = getelementptr inbounds %class.InputParameter, ptr %958, i32 0, i32 7
  store i32 %957, ptr %959, align 4, !tbaa !58
  %960 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %961 = getelementptr inbounds %class.InputParameter, ptr %960, i32 0, i32 8
  store i32 0, ptr %961, align 8, !tbaa !63
  %962 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %963 = getelementptr inbounds %class.InputParameter, ptr %962, i32 0, i32 9
  store i32 0, ptr %963, align 4, !tbaa !64
  %964 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %965 = getelementptr inbounds %class.InputParameter, ptr %964, i32 0, i32 10
  store i32 0, ptr %965, align 8, !tbaa !65
  %966 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %967 = getelementptr inbounds %class.InputParameter, ptr %966, i32 0, i32 11
  store i32 1, ptr %967, align 4, !tbaa !66
  %968 = load i8, ptr @_ZN9CacheUnit8is_cacheE, align 1, !tbaa !67, !range !68, !noundef !69
  %969 = trunc i8 %968 to i1
  %970 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %971 = getelementptr inbounds %class.InputParameter, ptr %970, i32 0, i32 20
  %972 = zext i1 %969 to i8
  store i8 %972, ptr %971, align 1, !tbaa !70
  %973 = load i8, ptr @_ZN9CacheUnit8pure_camE, align 1, !tbaa !67, !range !68, !noundef !69
  %974 = trunc i8 %973 to i1
  %975 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %976 = getelementptr inbounds %class.InputParameter, ptr %975, i32 0, i32 22
  %977 = zext i1 %974 to i8
  store i8 %977, ptr %976, align 1, !tbaa !73
  %978 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %979 = getelementptr inbounds %class.CacheParameters, ptr %978, i32 0, i32 6
  %980 = load double, ptr %979, align 8, !tbaa !59
  %981 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %982 = getelementptr inbounds %class.InputParameter, ptr %981, i32 0, i32 85
  store double %980, ptr %982, align 8, !tbaa !60
  %983 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %984 = getelementptr inbounds %class.CacheParameters, ptr %983, i32 0, i32 7
  %985 = load double, ptr %984, align 8, !tbaa !61
  %986 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %987 = getelementptr inbounds %class.InputParameter, ptr %986, i32 0, i32 86
  store double %985, ptr %987, align 8, !tbaa !62
  %988 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %989 = getelementptr inbounds %class.CacheParameters, ptr %988, i32 0, i32 35
  %990 = load i32, ptr %989, align 4, !tbaa !155
  %991 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %992 = getelementptr inbounds %class.InputParameter, ptr %991, i32 0, i32 14
  store i32 %990, ptr %992, align 8, !tbaa !75
  %993 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %994 = getelementptr inbounds %class.CacheParameters, ptr %993, i32 0, i32 36
  %995 = load i32, ptr %994, align 8, !tbaa !156
  %996 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %997 = getelementptr inbounds %class.InputParameter, ptr %996, i32 0, i32 15
  store i32 %995, ptr %997, align 4, !tbaa !77
  %998 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %999 = getelementptr inbounds %class.CacheParameters, ptr %998, i32 0, i32 37
  %1000 = load i32, ptr %999, align 4, !tbaa !157
  %1001 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1002 = getelementptr inbounds %class.InputParameter, ptr %1001, i32 0, i32 16
  store i32 %1000, ptr %1002, align 8, !tbaa !79
  %1003 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1004 = getelementptr inbounds %class.CacheParameters, ptr %1003, i32 0, i32 38
  %1005 = load i32, ptr %1004, align 8, !tbaa !158
  %1006 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1007 = getelementptr inbounds %class.InputParameter, ptr %1006, i32 0, i32 17
  store i32 %1005, ptr %1007, align 4, !tbaa !81
  %1008 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1009 = getelementptr inbounds %class.CacheParameters, ptr %1008, i32 0, i32 39
  %1010 = load i32, ptr %1009, align 4, !tbaa !159
  %1011 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1012 = getelementptr inbounds %class.InputParameter, ptr %1011, i32 0, i32 18
  store i32 %1010, ptr %1012, align 8, !tbaa !83
  %1013 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 10280) #9
          to label %1014 unwind label %426

1014:                                             ; preds = %954
  store i1 true, ptr %27, align 1
  %1015 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 2
  %1016 = load ptr, ptr %1015, align 8, !tbaa !84
  %1017 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %1018 unwind label %1112

1018:                                             ; preds = %1014
  %1019 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1020 = getelementptr inbounds %class.CacheParameters, ptr %1019, i32 0, i32 52
  %1021 = load i32, ptr %1020, align 8, !tbaa !85
  %1022 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 5
  %1023 = load double, ptr %1022, align 8, !tbaa !86
  %1024 = load i8, ptr @_ZN9CacheUnit9opt_localE, align 1, !tbaa !67, !range !68, !noundef !69
  %1025 = trunc i8 %1024 to i1
  %1026 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1027 = getelementptr inbounds %class.CacheParameters, ptr %1026, i32 0, i32 53
  %1028 = load i32, ptr %1027, align 4, !tbaa !87
  invoke void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280) %1013, ptr noundef %1016, ptr noundef %1017, ptr noundef %25, i32 noundef %1021, double noundef %1023, i1 noundef zeroext %1025, i32 noundef %1028, i1 noundef zeroext true)
          to label %1029 unwind label %1116

1029:                                             ; preds = %1018
  store i1 false, ptr %27, align 1
  store ptr %1013, ptr %11, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  %1030 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %1031 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %1031, ptr %28, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP14McPATComponentSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %1030, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %1032 unwind label %1124

1032:                                             ; preds = %1029
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  %1033 = load ptr, ptr %11, align 8, !tbaa !5
  %1034 = getelementptr inbounds %class.McPATComponent, ptr %1033, i32 0, i32 8
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %1034)
          to label %1035 unwind label %426

1035:                                             ; preds = %1032
  %1036 = load ptr, ptr %11, align 8, !tbaa !5
  %1037 = getelementptr inbounds %class.McPATComponent, ptr %1036, i32 0, i32 8
  %1038 = getelementptr inbounds %class.statsDef, ptr %1037, i32 0, i32 0
  %1039 = getelementptr inbounds %class.statsComponents, ptr %1038, i32 0, i32 0
  store double 0.000000e+00, ptr %1039, align 8, !tbaa !97
  %1040 = load ptr, ptr %11, align 8, !tbaa !5
  %1041 = getelementptr inbounds %class.CacheArray, ptr %1040, i32 0, i32 1
  %1042 = getelementptr inbounds %class.InputParameter, ptr %1041, i32 0, i32 18
  %1043 = load i32, ptr %1042, align 8, !tbaa !147
  %1044 = uitofp i32 %1043 to double
  %1045 = load ptr, ptr %11, align 8, !tbaa !5
  %1046 = getelementptr inbounds %class.McPATComponent, ptr %1045, i32 0, i32 8
  %1047 = getelementptr inbounds %class.statsDef, ptr %1046, i32 0, i32 1
  %1048 = getelementptr inbounds %class.statsComponents, ptr %1047, i32 0, i32 0
  store double %1044, ptr %1048, align 8, !tbaa !101
  %1049 = load ptr, ptr %11, align 8, !tbaa !5
  %1050 = getelementptr inbounds %class.CacheArray, ptr %1049, i32 0, i32 1
  %1051 = getelementptr inbounds %class.InputParameter, ptr %1050, i32 0, i32 18
  %1052 = load i32, ptr %1051, align 8, !tbaa !147
  %1053 = uitofp i32 %1052 to double
  %1054 = load ptr, ptr %11, align 8, !tbaa !5
  %1055 = getelementptr inbounds %class.McPATComponent, ptr %1054, i32 0, i32 8
  %1056 = getelementptr inbounds %class.statsDef, ptr %1055, i32 0, i32 2
  %1057 = getelementptr inbounds %class.statsComponents, ptr %1056, i32 0, i32 0
  store double %1053, ptr %1057, align 8, !tbaa !104
  %1058 = load ptr, ptr %11, align 8, !tbaa !5
  %1059 = getelementptr inbounds %class.McPATComponent, ptr %1058, i32 0, i32 9
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %1059)
          to label %1060 unwind label %426

1060:                                             ; preds = %1035
  %1061 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1062 = getelementptr inbounds %class.CacheStatistics, ptr %1061, i32 0, i32 11
  %1063 = load double, ptr %1062, align 8, !tbaa !119
  %1064 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1065 = getelementptr inbounds %class.CacheStatistics, ptr %1064, i32 0, i32 12
  %1066 = load double, ptr %1065, align 8, !tbaa !117
  %1067 = fadd double %1063, %1066
  %1068 = load ptr, ptr %11, align 8, !tbaa !5
  %1069 = getelementptr inbounds %class.McPATComponent, ptr %1068, i32 0, i32 9
  %1070 = getelementptr inbounds %class.statsDef, ptr %1069, i32 0, i32 0
  %1071 = getelementptr inbounds %class.statsComponents, ptr %1070, i32 0, i32 0
  store double %1067, ptr %1071, align 8, !tbaa !148
  %1072 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1073 = getelementptr inbounds %class.CacheStatistics, ptr %1072, i32 0, i32 11
  %1074 = load double, ptr %1073, align 8, !tbaa !119
  %1075 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1076 = getelementptr inbounds %class.CacheStatistics, ptr %1075, i32 0, i32 12
  %1077 = load double, ptr %1076, align 8, !tbaa !117
  %1078 = fadd double %1074, %1077
  %1079 = load ptr, ptr %11, align 8, !tbaa !5
  %1080 = getelementptr inbounds %class.McPATComponent, ptr %1079, i32 0, i32 9
  %1081 = getelementptr inbounds %class.statsDef, ptr %1080, i32 0, i32 1
  %1082 = getelementptr inbounds %class.statsComponents, ptr %1081, i32 0, i32 0
  store double %1078, ptr %1082, align 8, !tbaa !149
  %1083 = load ptr, ptr %11, align 8, !tbaa !5
  %1084 = getelementptr inbounds %class.McPATComponent, ptr %1083, i32 0, i32 9
  %1085 = getelementptr inbounds %class.statsDef, ptr %1084, i32 0, i32 2
  %1086 = getelementptr inbounds %class.statsComponents, ptr %1085, i32 0, i32 0
  store double 0.000000e+00, ptr %1086, align 8, !tbaa !150
  %1087 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1088 = getelementptr inbounds %class.CacheParameters, ptr %1087, i32 0, i32 0
  %1089 = load i32, ptr %1088, align 8, !tbaa !46
  %1090 = icmp eq i32 %1089, 2
  br i1 %1090, label %1091, label %1128

1091:                                             ; preds = %1060
  %1092 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1093 = getelementptr inbounds %class.CacheStatistics, ptr %1092, i32 0, i32 17
  %1094 = load i32, ptr %1093, align 4, !tbaa !134
  %1095 = sitofp i32 %1094 to double
  %1096 = load ptr, ptr %11, align 8, !tbaa !5
  %1097 = getelementptr inbounds %class.McPATComponent, ptr %1096, i32 0, i32 9
  %1098 = getelementptr inbounds %class.statsDef, ptr %1097, i32 0, i32 0
  %1099 = getelementptr inbounds %class.statsComponents, ptr %1098, i32 0, i32 0
  %1100 = load double, ptr %1099, align 8, !tbaa !148
  %1101 = fadd double %1100, %1095
  store double %1101, ptr %1099, align 8, !tbaa !148
  %1102 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1103 = getelementptr inbounds %class.CacheStatistics, ptr %1102, i32 0, i32 17
  %1104 = load i32, ptr %1103, align 4, !tbaa !134
  %1105 = sitofp i32 %1104 to double
  %1106 = load ptr, ptr %11, align 8, !tbaa !5
  %1107 = getelementptr inbounds %class.McPATComponent, ptr %1106, i32 0, i32 9
  %1108 = getelementptr inbounds %class.statsDef, ptr %1107, i32 0, i32 1
  %1109 = getelementptr inbounds %class.statsComponents, ptr %1108, i32 0, i32 0
  %1110 = load double, ptr %1109, align 8, !tbaa !149
  %1111 = fadd double %1110, %1105
  store double %1111, ptr %1109, align 8, !tbaa !149
  br label %1128

1112:                                             ; preds = %1014
  %1113 = landingpad { ptr, i32 }
          cleanup
  %1114 = extractvalue { ptr, i32 } %1113, 0
  store ptr %1114, ptr %9, align 8
  %1115 = extractvalue { ptr, i32 } %1113, 1
  store i32 %1115, ptr %10, align 4
  br label %1120

1116:                                             ; preds = %1018
  %1117 = landingpad { ptr, i32 }
          cleanup
  %1118 = extractvalue { ptr, i32 } %1117, 0
  store ptr %1118, ptr %9, align 8
  %1119 = extractvalue { ptr, i32 } %1117, 1
  store i32 %1119, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %1120

1120:                                             ; preds = %1116, %1112
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  %1121 = load i1, ptr %27, align 1
  br i1 %1121, label %1122, label %1123

1122:                                             ; preds = %1120
  call void @_ZdlPvm(ptr noundef %1013, i64 noundef 10280) #10
  br label %1123

1123:                                             ; preds = %1122, %1120
  br label %1602

1124:                                             ; preds = %1029
  %1125 = landingpad { ptr, i32 }
          cleanup
  %1126 = extractvalue { ptr, i32 } %1125, 0
  store ptr %1126, ptr %9, align 8
  %1127 = extractvalue { ptr, i32 } %1125, 1
  store i32 %1127, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %1602

1128:                                             ; preds = %1091, %1060
  %1129 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !48
  %1130 = add nsw i32 %1129, 5
  store i32 %1130, ptr %7, align 4, !tbaa !48
  %1131 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1132 = getelementptr inbounds %class.CacheParameters, ptr %1131, i32 0, i32 3
  %1133 = load double, ptr %1132, align 8, !tbaa !43
  store double %1133, ptr %13, align 8, !tbaa !42
  %1134 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1135 = getelementptr inbounds %class.CacheParameters, ptr %1134, i32 0, i32 10
  %1136 = load i32, ptr %1135, align 8, !tbaa !160
  %1137 = sitofp i32 %1136 to double
  %1138 = load double, ptr %13, align 8, !tbaa !42
  %1139 = fmul double %1137, %1138
  %1140 = fptoui double %1139 to i32
  %1141 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1142 = getelementptr inbounds %class.InputParameter, ptr %1141, i32 0, i32 0
  store i32 %1140, ptr %1142, align 8, !tbaa !50
  %1143 = load double, ptr %13, align 8, !tbaa !42
  %1144 = fptoui double %1143 to i32
  %1145 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1146 = getelementptr inbounds %class.InputParameter, ptr %1145, i32 0, i32 1
  store i32 %1144, ptr %1146, align 4, !tbaa !51
  %1147 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1148 = getelementptr inbounds %class.CacheParameters, ptr %1147, i32 0, i32 14
  %1149 = load i32, ptr %1148, align 8, !tbaa !161
  %1150 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1151 = getelementptr inbounds %class.InputParameter, ptr %1150, i32 0, i32 2
  store i32 %1149, ptr %1151, align 8, !tbaa !52
  %1152 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1153 = getelementptr inbounds %class.CacheParameters, ptr %1152, i32 0, i32 18
  %1154 = load i32, ptr %1153, align 8, !tbaa !162
  %1155 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1156 = getelementptr inbounds %class.InputParameter, ptr %1155, i32 0, i32 3
  store i32 %1154, ptr %1156, align 4, !tbaa !53
  %1157 = load i32, ptr %7, align 4, !tbaa !48
  %1158 = icmp sgt i32 %1157, 0
  %1159 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1160 = getelementptr inbounds %class.InputParameter, ptr %1159, i32 0, i32 5
  %1161 = zext i1 %1158 to i8
  store i8 %1161, ptr %1160, align 4, !tbaa !54
  %1162 = load i32, ptr %7, align 4, !tbaa !48
  %1163 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1164 = getelementptr inbounds %class.InputParameter, ptr %1163, i32 0, i32 6
  store i32 %1162, ptr %1164, align 8, !tbaa !55
  %1165 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1166 = getelementptr inbounds %class.CacheParameters, ptr %1165, i32 0, i32 51
  %1167 = load i32, ptr %1166, align 4, !tbaa !47
  %1168 = icmp eq i32 %1167, 0
  br i1 %1168, label %1169, label %1178

1169:                                             ; preds = %1128
  %1170 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1171 = getelementptr inbounds %class.InputParameter, ptr %1170, i32 0, i32 1
  %1172 = load i32, ptr %1171, align 4, !tbaa !51
  %1173 = uitofp i32 %1172 to double
  %1174 = fmul double %1173, 8.000000e+00
  %1175 = fptoui double %1174 to i32
  %1176 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1177 = getelementptr inbounds %class.InputParameter, ptr %1176, i32 0, i32 4
  store i32 %1175, ptr %1177, align 8, !tbaa !56
  br label %1188

1178:                                             ; preds = %1128
  %1179 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1180 = getelementptr inbounds %class.InputParameter, ptr %1179, i32 0, i32 1
  %1181 = load i32, ptr %1180, align 4, !tbaa !51
  %1182 = uitofp i32 %1181 to double
  %1183 = fmul double %1182, 8.000000e+00
  %1184 = fdiv double %1183, 2.000000e+00
  %1185 = fptoui double %1184 to i32
  %1186 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1187 = getelementptr inbounds %class.InputParameter, ptr %1186, i32 0, i32 4
  store i32 %1185, ptr %1187, align 8, !tbaa !56
  br label %1188

1188:                                             ; preds = %1178, %1169
  %1189 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1190 = getelementptr inbounds %class.CacheParameters, ptr %1189, i32 0, i32 23
  %1191 = load i32, ptr %1190, align 4, !tbaa !163
  %1192 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1193 = getelementptr inbounds %class.InputParameter, ptr %1192, i32 0, i32 7
  store i32 %1191, ptr %1193, align 4, !tbaa !58
  %1194 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1195 = getelementptr inbounds %class.InputParameter, ptr %1194, i32 0, i32 8
  store i32 0, ptr %1195, align 8, !tbaa !63
  %1196 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1197 = getelementptr inbounds %class.InputParameter, ptr %1196, i32 0, i32 9
  store i32 0, ptr %1197, align 4, !tbaa !64
  %1198 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1199 = getelementptr inbounds %class.InputParameter, ptr %1198, i32 0, i32 10
  store i32 0, ptr %1199, align 8, !tbaa !65
  %1200 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1201 = getelementptr inbounds %class.InputParameter, ptr %1200, i32 0, i32 11
  store i32 1, ptr %1201, align 4, !tbaa !66
  %1202 = load i8, ptr @_ZN9CacheUnit8is_cacheE, align 1, !tbaa !67, !range !68, !noundef !69
  %1203 = trunc i8 %1202 to i1
  %1204 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1205 = getelementptr inbounds %class.InputParameter, ptr %1204, i32 0, i32 20
  %1206 = zext i1 %1203 to i8
  store i8 %1206, ptr %1205, align 1, !tbaa !70
  %1207 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1208 = getelementptr inbounds %class.CacheParameters, ptr %1207, i32 0, i32 50
  %1209 = load i8, ptr %1208, align 8, !tbaa !71, !range !68, !noundef !69
  %1210 = trunc i8 %1209 to i1
  %1211 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1212 = getelementptr inbounds %class.InputParameter, ptr %1211, i32 0, i32 21
  %1213 = zext i1 %1210 to i8
  store i8 %1213, ptr %1212, align 2, !tbaa !72
  %1214 = load i8, ptr @_ZN9CacheUnit8pure_camE, align 1, !tbaa !67, !range !68, !noundef !69
  %1215 = trunc i8 %1214 to i1
  %1216 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1217 = getelementptr inbounds %class.InputParameter, ptr %1216, i32 0, i32 22
  %1218 = zext i1 %1215 to i8
  store i8 %1218, ptr %1217, align 1, !tbaa !73
  %1219 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1220 = getelementptr inbounds %class.CacheParameters, ptr %1219, i32 0, i32 6
  %1221 = load double, ptr %1220, align 8, !tbaa !59
  %1222 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1223 = getelementptr inbounds %class.InputParameter, ptr %1222, i32 0, i32 85
  store double %1221, ptr %1223, align 8, !tbaa !60
  %1224 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1225 = getelementptr inbounds %class.CacheParameters, ptr %1224, i32 0, i32 7
  %1226 = load double, ptr %1225, align 8, !tbaa !61
  %1227 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1228 = getelementptr inbounds %class.InputParameter, ptr %1227, i32 0, i32 86
  store double %1226, ptr %1228, align 8, !tbaa !62
  %1229 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1230 = getelementptr inbounds %class.CacheParameters, ptr %1229, i32 0, i32 40
  %1231 = load i32, ptr %1230, align 8, !tbaa !164
  %1232 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1233 = getelementptr inbounds %class.InputParameter, ptr %1232, i32 0, i32 14
  store i32 %1231, ptr %1233, align 8, !tbaa !75
  %1234 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1235 = getelementptr inbounds %class.CacheParameters, ptr %1234, i32 0, i32 41
  %1236 = load i32, ptr %1235, align 4, !tbaa !165
  %1237 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1238 = getelementptr inbounds %class.InputParameter, ptr %1237, i32 0, i32 15
  store i32 %1236, ptr %1238, align 4, !tbaa !77
  %1239 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1240 = getelementptr inbounds %class.CacheParameters, ptr %1239, i32 0, i32 42
  %1241 = load i32, ptr %1240, align 8, !tbaa !166
  %1242 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1243 = getelementptr inbounds %class.InputParameter, ptr %1242, i32 0, i32 16
  store i32 %1241, ptr %1243, align 8, !tbaa !79
  %1244 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1245 = getelementptr inbounds %class.CacheParameters, ptr %1244, i32 0, i32 43
  %1246 = load i32, ptr %1245, align 4, !tbaa !167
  %1247 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1248 = getelementptr inbounds %class.InputParameter, ptr %1247, i32 0, i32 17
  store i32 %1246, ptr %1248, align 4, !tbaa !81
  %1249 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1250 = getelementptr inbounds %class.CacheParameters, ptr %1249, i32 0, i32 44
  %1251 = load i32, ptr %1250, align 8, !tbaa !168
  %1252 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1253 = getelementptr inbounds %class.InputParameter, ptr %1252, i32 0, i32 18
  store i32 %1251, ptr %1253, align 8, !tbaa !83
  %1254 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 10280) #9
          to label %1255 unwind label %426

1255:                                             ; preds = %1188
  store i1 true, ptr %31, align 1
  %1256 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 2
  %1257 = load ptr, ptr %1256, align 8, !tbaa !84
  %1258 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %1259 unwind label %1345

1259:                                             ; preds = %1255
  %1260 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1261 = getelementptr inbounds %class.CacheParameters, ptr %1260, i32 0, i32 52
  %1262 = load i32, ptr %1261, align 8, !tbaa !85
  %1263 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 5
  %1264 = load double, ptr %1263, align 8, !tbaa !86
  %1265 = load i8, ptr @_ZN9CacheUnit9opt_localE, align 1, !tbaa !67, !range !68, !noundef !69
  %1266 = trunc i8 %1265 to i1
  %1267 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1268 = getelementptr inbounds %class.CacheParameters, ptr %1267, i32 0, i32 53
  %1269 = load i32, ptr %1268, align 4, !tbaa !87
  invoke void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280) %1254, ptr noundef %1257, ptr noundef %1258, ptr noundef %29, i32 noundef %1262, double noundef %1264, i1 noundef zeroext %1266, i32 noundef %1269, i1 noundef zeroext true)
          to label %1270 unwind label %1349

1270:                                             ; preds = %1259
  store i1 false, ptr %31, align 1
  store ptr %1254, ptr %11, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  %1271 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %1272 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %1272, ptr %32, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP14McPATComponentSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %1271, ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %1273 unwind label %1357

1273:                                             ; preds = %1270
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  %1274 = load ptr, ptr %11, align 8, !tbaa !5
  %1275 = getelementptr inbounds %class.McPATComponent, ptr %1274, i32 0, i32 8
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %1275)
          to label %1276 unwind label %426

1276:                                             ; preds = %1273
  %1277 = load ptr, ptr %11, align 8, !tbaa !5
  %1278 = getelementptr inbounds %class.McPATComponent, ptr %1277, i32 0, i32 8
  %1279 = getelementptr inbounds %class.statsDef, ptr %1278, i32 0, i32 0
  %1280 = getelementptr inbounds %class.statsComponents, ptr %1279, i32 0, i32 0
  store double 0.000000e+00, ptr %1280, align 8, !tbaa !97
  %1281 = load ptr, ptr %11, align 8, !tbaa !5
  %1282 = getelementptr inbounds %class.CacheArray, ptr %1281, i32 0, i32 1
  %1283 = getelementptr inbounds %class.InputParameter, ptr %1282, i32 0, i32 18
  %1284 = load i32, ptr %1283, align 8, !tbaa !147
  %1285 = uitofp i32 %1284 to double
  %1286 = load ptr, ptr %11, align 8, !tbaa !5
  %1287 = getelementptr inbounds %class.McPATComponent, ptr %1286, i32 0, i32 8
  %1288 = getelementptr inbounds %class.statsDef, ptr %1287, i32 0, i32 1
  %1289 = getelementptr inbounds %class.statsComponents, ptr %1288, i32 0, i32 0
  store double %1285, ptr %1289, align 8, !tbaa !101
  %1290 = load ptr, ptr %11, align 8, !tbaa !5
  %1291 = getelementptr inbounds %class.CacheArray, ptr %1290, i32 0, i32 1
  %1292 = getelementptr inbounds %class.InputParameter, ptr %1291, i32 0, i32 18
  %1293 = load i32, ptr %1292, align 8, !tbaa !147
  %1294 = uitofp i32 %1293 to double
  %1295 = load ptr, ptr %11, align 8, !tbaa !5
  %1296 = getelementptr inbounds %class.McPATComponent, ptr %1295, i32 0, i32 8
  %1297 = getelementptr inbounds %class.statsDef, ptr %1296, i32 0, i32 2
  %1298 = getelementptr inbounds %class.statsComponents, ptr %1297, i32 0, i32 0
  store double %1294, ptr %1298, align 8, !tbaa !104
  %1299 = load ptr, ptr %11, align 8, !tbaa !5
  %1300 = getelementptr inbounds %class.McPATComponent, ptr %1299, i32 0, i32 9
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %1300)
          to label %1301 unwind label %426

1301:                                             ; preds = %1276
  %1302 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1303 = getelementptr inbounds %class.CacheStatistics, ptr %1302, i32 0, i32 11
  %1304 = load double, ptr %1303, align 8, !tbaa !119
  %1305 = load ptr, ptr %11, align 8, !tbaa !5
  %1306 = getelementptr inbounds %class.McPATComponent, ptr %1305, i32 0, i32 9
  %1307 = getelementptr inbounds %class.statsDef, ptr %1306, i32 0, i32 0
  %1308 = getelementptr inbounds %class.statsComponents, ptr %1307, i32 0, i32 0
  store double %1304, ptr %1308, align 8, !tbaa !148
  %1309 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1310 = getelementptr inbounds %class.CacheStatistics, ptr %1309, i32 0, i32 11
  %1311 = load double, ptr %1310, align 8, !tbaa !119
  %1312 = load ptr, ptr %11, align 8, !tbaa !5
  %1313 = getelementptr inbounds %class.McPATComponent, ptr %1312, i32 0, i32 9
  %1314 = getelementptr inbounds %class.statsDef, ptr %1313, i32 0, i32 1
  %1315 = getelementptr inbounds %class.statsComponents, ptr %1314, i32 0, i32 0
  store double %1311, ptr %1315, align 8, !tbaa !149
  %1316 = load ptr, ptr %11, align 8, !tbaa !5
  %1317 = getelementptr inbounds %class.McPATComponent, ptr %1316, i32 0, i32 9
  %1318 = getelementptr inbounds %class.statsDef, ptr %1317, i32 0, i32 2
  %1319 = getelementptr inbounds %class.statsComponents, ptr %1318, i32 0, i32 0
  store double 0.000000e+00, ptr %1319, align 8, !tbaa !150
  %1320 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1321 = getelementptr inbounds %class.CacheParameters, ptr %1320, i32 0, i32 0
  %1322 = load i32, ptr %1321, align 8, !tbaa !46
  %1323 = icmp eq i32 %1322, 2
  br i1 %1323, label %1324, label %1361

1324:                                             ; preds = %1301
  %1325 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1326 = getelementptr inbounds %class.CacheStatistics, ptr %1325, i32 0, i32 17
  %1327 = load i32, ptr %1326, align 4, !tbaa !134
  %1328 = sitofp i32 %1327 to double
  %1329 = load ptr, ptr %11, align 8, !tbaa !5
  %1330 = getelementptr inbounds %class.McPATComponent, ptr %1329, i32 0, i32 9
  %1331 = getelementptr inbounds %class.statsDef, ptr %1330, i32 0, i32 0
  %1332 = getelementptr inbounds %class.statsComponents, ptr %1331, i32 0, i32 0
  %1333 = load double, ptr %1332, align 8, !tbaa !148
  %1334 = fadd double %1333, %1328
  store double %1334, ptr %1332, align 8, !tbaa !148
  %1335 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1336 = getelementptr inbounds %class.CacheStatistics, ptr %1335, i32 0, i32 17
  %1337 = load i32, ptr %1336, align 4, !tbaa !134
  %1338 = sitofp i32 %1337 to double
  %1339 = load ptr, ptr %11, align 8, !tbaa !5
  %1340 = getelementptr inbounds %class.McPATComponent, ptr %1339, i32 0, i32 9
  %1341 = getelementptr inbounds %class.statsDef, ptr %1340, i32 0, i32 1
  %1342 = getelementptr inbounds %class.statsComponents, ptr %1341, i32 0, i32 0
  %1343 = load double, ptr %1342, align 8, !tbaa !149
  %1344 = fadd double %1343, %1338
  store double %1344, ptr %1342, align 8, !tbaa !149
  br label %1361

1345:                                             ; preds = %1255
  %1346 = landingpad { ptr, i32 }
          cleanup
  %1347 = extractvalue { ptr, i32 } %1346, 0
  store ptr %1347, ptr %9, align 8
  %1348 = extractvalue { ptr, i32 } %1346, 1
  store i32 %1348, ptr %10, align 4
  br label %1353

1349:                                             ; preds = %1259
  %1350 = landingpad { ptr, i32 }
          cleanup
  %1351 = extractvalue { ptr, i32 } %1350, 0
  store ptr %1351, ptr %9, align 8
  %1352 = extractvalue { ptr, i32 } %1350, 1
  store i32 %1352, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %1353

1353:                                             ; preds = %1349, %1345
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  %1354 = load i1, ptr %31, align 1
  br i1 %1354, label %1355, label %1356

1355:                                             ; preds = %1353
  call void @_ZdlPvm(ptr noundef %1254, i64 noundef 10280) #10
  br label %1356

1356:                                             ; preds = %1355, %1353
  br label %1602

1357:                                             ; preds = %1270
  %1358 = landingpad { ptr, i32 }
          cleanup
  %1359 = extractvalue { ptr, i32 } %1358, 0
  store ptr %1359, ptr %9, align 8
  %1360 = extractvalue { ptr, i32 } %1358, 1
  store i32 %1360, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %1602

1361:                                             ; preds = %1324, %1301
  %1362 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1363 = getelementptr inbounds %class.CacheParameters, ptr %1362, i32 0, i32 11
  %1364 = load i32, ptr %1363, align 4, !tbaa !169
  %1365 = icmp sgt i32 %1364, 0
  br i1 %1365, label %1366, label %1600

1366:                                             ; preds = %1361
  %1367 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !48
  %1368 = add nsw i32 %1367, 5
  store i32 %1368, ptr %7, align 4, !tbaa !48
  %1369 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1370 = getelementptr inbounds %class.CacheParameters, ptr %1369, i32 0, i32 3
  %1371 = load double, ptr %1370, align 8, !tbaa !43
  store double %1371, ptr %13, align 8, !tbaa !42
  %1372 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1373 = getelementptr inbounds %class.CacheParameters, ptr %1372, i32 0, i32 11
  %1374 = load i32, ptr %1373, align 4, !tbaa !169
  %1375 = sitofp i32 %1374 to double
  %1376 = load double, ptr %13, align 8, !tbaa !42
  %1377 = fmul double %1375, %1376
  %1378 = fptoui double %1377 to i32
  %1379 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1380 = getelementptr inbounds %class.InputParameter, ptr %1379, i32 0, i32 0
  store i32 %1378, ptr %1380, align 8, !tbaa !50
  %1381 = load double, ptr %13, align 8, !tbaa !42
  %1382 = fptoui double %1381 to i32
  %1383 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1384 = getelementptr inbounds %class.InputParameter, ptr %1383, i32 0, i32 1
  store i32 %1382, ptr %1384, align 4, !tbaa !51
  %1385 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1386 = getelementptr inbounds %class.CacheParameters, ptr %1385, i32 0, i32 15
  %1387 = load i32, ptr %1386, align 4, !tbaa !170
  %1388 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1389 = getelementptr inbounds %class.InputParameter, ptr %1388, i32 0, i32 2
  store i32 %1387, ptr %1389, align 8, !tbaa !52
  %1390 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1391 = getelementptr inbounds %class.CacheParameters, ptr %1390, i32 0, i32 19
  %1392 = load i32, ptr %1391, align 4, !tbaa !171
  %1393 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1394 = getelementptr inbounds %class.InputParameter, ptr %1393, i32 0, i32 3
  store i32 %1392, ptr %1394, align 4, !tbaa !53
  %1395 = load i32, ptr %7, align 4, !tbaa !48
  %1396 = icmp sgt i32 %1395, 0
  %1397 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1398 = getelementptr inbounds %class.InputParameter, ptr %1397, i32 0, i32 5
  %1399 = zext i1 %1396 to i8
  store i8 %1399, ptr %1398, align 4, !tbaa !54
  %1400 = load i32, ptr %7, align 4, !tbaa !48
  %1401 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1402 = getelementptr inbounds %class.InputParameter, ptr %1401, i32 0, i32 6
  store i32 %1400, ptr %1402, align 8, !tbaa !55
  %1403 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1404 = getelementptr inbounds %class.CacheParameters, ptr %1403, i32 0, i32 51
  %1405 = load i32, ptr %1404, align 4, !tbaa !47
  %1406 = icmp eq i32 %1405, 0
  br i1 %1406, label %1407, label %1416

1407:                                             ; preds = %1366
  %1408 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1409 = getelementptr inbounds %class.InputParameter, ptr %1408, i32 0, i32 1
  %1410 = load i32, ptr %1409, align 4, !tbaa !51
  %1411 = uitofp i32 %1410 to double
  %1412 = fmul double %1411, 8.000000e+00
  %1413 = fptoui double %1412 to i32
  %1414 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1415 = getelementptr inbounds %class.InputParameter, ptr %1414, i32 0, i32 4
  store i32 %1413, ptr %1415, align 8, !tbaa !56
  br label %1426

1416:                                             ; preds = %1366
  %1417 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1418 = getelementptr inbounds %class.InputParameter, ptr %1417, i32 0, i32 1
  %1419 = load i32, ptr %1418, align 4, !tbaa !51
  %1420 = uitofp i32 %1419 to double
  %1421 = fmul double %1420, 8.000000e+00
  %1422 = fdiv double %1421, 2.000000e+00
  %1423 = fptoui double %1422 to i32
  %1424 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1425 = getelementptr inbounds %class.InputParameter, ptr %1424, i32 0, i32 4
  store i32 %1423, ptr %1425, align 8, !tbaa !56
  br label %1426

1426:                                             ; preds = %1416, %1407
  %1427 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1428 = getelementptr inbounds %class.CacheParameters, ptr %1427, i32 0, i32 24
  %1429 = load i32, ptr %1428, align 8, !tbaa !172
  %1430 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1431 = getelementptr inbounds %class.InputParameter, ptr %1430, i32 0, i32 7
  store i32 %1429, ptr %1431, align 4, !tbaa !58
  %1432 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1433 = getelementptr inbounds %class.InputParameter, ptr %1432, i32 0, i32 8
  store i32 0, ptr %1433, align 8, !tbaa !63
  %1434 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1435 = getelementptr inbounds %class.InputParameter, ptr %1434, i32 0, i32 9
  store i32 0, ptr %1435, align 4, !tbaa !64
  %1436 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1437 = getelementptr inbounds %class.InputParameter, ptr %1436, i32 0, i32 10
  store i32 0, ptr %1437, align 8, !tbaa !65
  %1438 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1439 = getelementptr inbounds %class.InputParameter, ptr %1438, i32 0, i32 11
  store i32 1, ptr %1439, align 4, !tbaa !66
  %1440 = load i8, ptr @_ZN9CacheUnit8is_cacheE, align 1, !tbaa !67, !range !68, !noundef !69
  %1441 = trunc i8 %1440 to i1
  %1442 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1443 = getelementptr inbounds %class.InputParameter, ptr %1442, i32 0, i32 20
  %1444 = zext i1 %1441 to i8
  store i8 %1444, ptr %1443, align 1, !tbaa !70
  %1445 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1446 = getelementptr inbounds %class.CacheParameters, ptr %1445, i32 0, i32 50
  %1447 = load i8, ptr %1446, align 8, !tbaa !71, !range !68, !noundef !69
  %1448 = trunc i8 %1447 to i1
  %1449 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1450 = getelementptr inbounds %class.InputParameter, ptr %1449, i32 0, i32 21
  %1451 = zext i1 %1448 to i8
  store i8 %1451, ptr %1450, align 2, !tbaa !72
  %1452 = load i8, ptr @_ZN9CacheUnit8pure_camE, align 1, !tbaa !67, !range !68, !noundef !69
  %1453 = trunc i8 %1452 to i1
  %1454 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1455 = getelementptr inbounds %class.InputParameter, ptr %1454, i32 0, i32 22
  %1456 = zext i1 %1453 to i8
  store i8 %1456, ptr %1455, align 1, !tbaa !73
  %1457 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1458 = getelementptr inbounds %class.CacheParameters, ptr %1457, i32 0, i32 6
  %1459 = load double, ptr %1458, align 8, !tbaa !59
  %1460 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1461 = getelementptr inbounds %class.InputParameter, ptr %1460, i32 0, i32 85
  store double %1459, ptr %1461, align 8, !tbaa !60
  %1462 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1463 = getelementptr inbounds %class.CacheParameters, ptr %1462, i32 0, i32 7
  %1464 = load double, ptr %1463, align 8, !tbaa !61
  %1465 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1466 = getelementptr inbounds %class.InputParameter, ptr %1465, i32 0, i32 86
  store double %1464, ptr %1466, align 8, !tbaa !62
  %1467 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1468 = getelementptr inbounds %class.CacheParameters, ptr %1467, i32 0, i32 45
  %1469 = load i32, ptr %1468, align 4, !tbaa !173
  %1470 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1471 = getelementptr inbounds %class.InputParameter, ptr %1470, i32 0, i32 14
  store i32 %1469, ptr %1471, align 8, !tbaa !75
  %1472 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1473 = getelementptr inbounds %class.CacheParameters, ptr %1472, i32 0, i32 46
  %1474 = load i32, ptr %1473, align 8, !tbaa !174
  %1475 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1476 = getelementptr inbounds %class.InputParameter, ptr %1475, i32 0, i32 15
  store i32 %1474, ptr %1476, align 4, !tbaa !77
  %1477 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1478 = getelementptr inbounds %class.CacheParameters, ptr %1477, i32 0, i32 47
  %1479 = load i32, ptr %1478, align 4, !tbaa !175
  %1480 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1481 = getelementptr inbounds %class.InputParameter, ptr %1480, i32 0, i32 16
  store i32 %1479, ptr %1481, align 8, !tbaa !79
  %1482 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1483 = getelementptr inbounds %class.CacheParameters, ptr %1482, i32 0, i32 48
  %1484 = load i32, ptr %1483, align 8, !tbaa !176
  %1485 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1486 = getelementptr inbounds %class.InputParameter, ptr %1485, i32 0, i32 17
  store i32 %1484, ptr %1486, align 4, !tbaa !81
  %1487 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1488 = getelementptr inbounds %class.CacheParameters, ptr %1487, i32 0, i32 49
  %1489 = load i32, ptr %1488, align 4, !tbaa !177
  %1490 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  %1491 = getelementptr inbounds %class.InputParameter, ptr %1490, i32 0, i32 18
  store i32 %1489, ptr %1491, align 8, !tbaa !83
  %1492 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 10280) #9
          to label %1493 unwind label %426

1493:                                             ; preds = %1426
  store i1 true, ptr %35, align 1
  %1494 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 2
  %1495 = load ptr, ptr %1494, align 8, !tbaa !84
  %1496 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %1497 unwind label %1583

1497:                                             ; preds = %1493
  %1498 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1499 = getelementptr inbounds %class.CacheParameters, ptr %1498, i32 0, i32 52
  %1500 = load i32, ptr %1499, align 8, !tbaa !85
  %1501 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 5
  %1502 = load double, ptr %1501, align 8, !tbaa !86
  %1503 = load i8, ptr @_ZN9CacheUnit9opt_localE, align 1, !tbaa !67, !range !68, !noundef !69
  %1504 = trunc i8 %1503 to i1
  %1505 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1506 = getelementptr inbounds %class.CacheParameters, ptr %1505, i32 0, i32 53
  %1507 = load i32, ptr %1506, align 4, !tbaa !87
  invoke void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280) %1492, ptr noundef %1495, ptr noundef %1496, ptr noundef %33, i32 noundef %1500, double noundef %1502, i1 noundef zeroext %1504, i32 noundef %1507, i1 noundef zeroext true)
          to label %1508 unwind label %1587

1508:                                             ; preds = %1497
  store i1 false, ptr %35, align 1
  store ptr %1492, ptr %11, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  %1509 = getelementptr inbounds %class.McPATComponent, ptr %37, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %1510 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %1510, ptr %36, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP14McPATComponentSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %1509, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %1511 unwind label %1595

1511:                                             ; preds = %1508
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  %1512 = load ptr, ptr %11, align 8, !tbaa !5
  %1513 = getelementptr inbounds %class.McPATComponent, ptr %1512, i32 0, i32 8
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %1513)
          to label %1514 unwind label %426

1514:                                             ; preds = %1511
  %1515 = load ptr, ptr %11, align 8, !tbaa !5
  %1516 = getelementptr inbounds %class.McPATComponent, ptr %1515, i32 0, i32 8
  %1517 = getelementptr inbounds %class.statsDef, ptr %1516, i32 0, i32 0
  %1518 = getelementptr inbounds %class.statsComponents, ptr %1517, i32 0, i32 0
  store double 0.000000e+00, ptr %1518, align 8, !tbaa !97
  %1519 = load ptr, ptr %11, align 8, !tbaa !5
  %1520 = getelementptr inbounds %class.CacheArray, ptr %1519, i32 0, i32 1
  %1521 = getelementptr inbounds %class.InputParameter, ptr %1520, i32 0, i32 18
  %1522 = load i32, ptr %1521, align 8, !tbaa !147
  %1523 = uitofp i32 %1522 to double
  %1524 = load ptr, ptr %11, align 8, !tbaa !5
  %1525 = getelementptr inbounds %class.McPATComponent, ptr %1524, i32 0, i32 8
  %1526 = getelementptr inbounds %class.statsDef, ptr %1525, i32 0, i32 1
  %1527 = getelementptr inbounds %class.statsComponents, ptr %1526, i32 0, i32 0
  store double %1523, ptr %1527, align 8, !tbaa !101
  %1528 = load ptr, ptr %11, align 8, !tbaa !5
  %1529 = getelementptr inbounds %class.CacheArray, ptr %1528, i32 0, i32 1
  %1530 = getelementptr inbounds %class.InputParameter, ptr %1529, i32 0, i32 18
  %1531 = load i32, ptr %1530, align 8, !tbaa !147
  %1532 = uitofp i32 %1531 to double
  %1533 = load ptr, ptr %11, align 8, !tbaa !5
  %1534 = getelementptr inbounds %class.McPATComponent, ptr %1533, i32 0, i32 8
  %1535 = getelementptr inbounds %class.statsDef, ptr %1534, i32 0, i32 2
  %1536 = getelementptr inbounds %class.statsComponents, ptr %1535, i32 0, i32 0
  store double %1532, ptr %1536, align 8, !tbaa !104
  %1537 = load ptr, ptr %11, align 8, !tbaa !5
  %1538 = getelementptr inbounds %class.McPATComponent, ptr %1537, i32 0, i32 9
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %1538)
          to label %1539 unwind label %426

1539:                                             ; preds = %1514
  %1540 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1541 = getelementptr inbounds %class.CacheStatistics, ptr %1540, i32 0, i32 12
  %1542 = load double, ptr %1541, align 8, !tbaa !117
  %1543 = load ptr, ptr %11, align 8, !tbaa !5
  %1544 = getelementptr inbounds %class.McPATComponent, ptr %1543, i32 0, i32 9
  %1545 = getelementptr inbounds %class.statsDef, ptr %1544, i32 0, i32 0
  %1546 = getelementptr inbounds %class.statsComponents, ptr %1545, i32 0, i32 0
  store double %1542, ptr %1546, align 8, !tbaa !148
  %1547 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1548 = getelementptr inbounds %class.CacheStatistics, ptr %1547, i32 0, i32 12
  %1549 = load double, ptr %1548, align 8, !tbaa !117
  %1550 = load ptr, ptr %11, align 8, !tbaa !5
  %1551 = getelementptr inbounds %class.McPATComponent, ptr %1550, i32 0, i32 9
  %1552 = getelementptr inbounds %class.statsDef, ptr %1551, i32 0, i32 1
  %1553 = getelementptr inbounds %class.statsComponents, ptr %1552, i32 0, i32 0
  store double %1549, ptr %1553, align 8, !tbaa !149
  %1554 = load ptr, ptr %11, align 8, !tbaa !5
  %1555 = getelementptr inbounds %class.McPATComponent, ptr %1554, i32 0, i32 9
  %1556 = getelementptr inbounds %class.statsDef, ptr %1555, i32 0, i32 2
  %1557 = getelementptr inbounds %class.statsComponents, ptr %1556, i32 0, i32 0
  store double 0.000000e+00, ptr %1557, align 8, !tbaa !150
  %1558 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 2
  %1559 = getelementptr inbounds %class.CacheParameters, ptr %1558, i32 0, i32 0
  %1560 = load i32, ptr %1559, align 8, !tbaa !46
  %1561 = icmp eq i32 %1560, 2
  br i1 %1561, label %1562, label %1599

1562:                                             ; preds = %1539
  %1563 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1564 = getelementptr inbounds %class.CacheStatistics, ptr %1563, i32 0, i32 17
  %1565 = load i32, ptr %1564, align 4, !tbaa !134
  %1566 = sitofp i32 %1565 to double
  %1567 = load ptr, ptr %11, align 8, !tbaa !5
  %1568 = getelementptr inbounds %class.McPATComponent, ptr %1567, i32 0, i32 9
  %1569 = getelementptr inbounds %class.statsDef, ptr %1568, i32 0, i32 0
  %1570 = getelementptr inbounds %class.statsComponents, ptr %1569, i32 0, i32 0
  %1571 = load double, ptr %1570, align 8, !tbaa !148
  %1572 = fadd double %1571, %1566
  store double %1572, ptr %1570, align 8, !tbaa !148
  %1573 = getelementptr inbounds %class.CacheUnit, ptr %37, i32 0, i32 3
  %1574 = getelementptr inbounds %class.CacheStatistics, ptr %1573, i32 0, i32 17
  %1575 = load i32, ptr %1574, align 4, !tbaa !134
  %1576 = sitofp i32 %1575 to double
  %1577 = load ptr, ptr %11, align 8, !tbaa !5
  %1578 = getelementptr inbounds %class.McPATComponent, ptr %1577, i32 0, i32 9
  %1579 = getelementptr inbounds %class.statsDef, ptr %1578, i32 0, i32 1
  %1580 = getelementptr inbounds %class.statsComponents, ptr %1579, i32 0, i32 0
  %1581 = load double, ptr %1580, align 8, !tbaa !149
  %1582 = fadd double %1581, %1576
  store double %1582, ptr %1580, align 8, !tbaa !149
  br label %1599

1583:                                             ; preds = %1493
  %1584 = landingpad { ptr, i32 }
          cleanup
  %1585 = extractvalue { ptr, i32 } %1584, 0
  store ptr %1585, ptr %9, align 8
  %1586 = extractvalue { ptr, i32 } %1584, 1
  store i32 %1586, ptr %10, align 4
  br label %1591

1587:                                             ; preds = %1497
  %1588 = landingpad { ptr, i32 }
          cleanup
  %1589 = extractvalue { ptr, i32 } %1588, 0
  store ptr %1589, ptr %9, align 8
  %1590 = extractvalue { ptr, i32 } %1588, 1
  store i32 %1590, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %1591

1591:                                             ; preds = %1587, %1583
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  %1592 = load i1, ptr %35, align 1
  br i1 %1592, label %1593, label %1594

1593:                                             ; preds = %1591
  call void @_ZdlPvm(ptr noundef %1492, i64 noundef 10280) #10
  br label %1594

1594:                                             ; preds = %1593, %1591
  br label %1602

1595:                                             ; preds = %1508
  %1596 = landingpad { ptr, i32 }
          cleanup
  %1597 = extractvalue { ptr, i32 } %1596, 0
  store ptr %1597, ptr %9, align 8
  %1598 = extractvalue { ptr, i32 } %1596, 1
  store i32 %1598, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %1602

1599:                                             ; preds = %1562, %1539
  br label %1600

1600:                                             ; preds = %1599, %1361
  br label %1601

1601:                                             ; preds = %1600, %636, %626
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  ret void

1602:                                             ; preds = %1595, %1594, %1357, %1356, %1124, %1123, %892, %891, %426
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %1603

1603:                                             ; preds = %1602, %422, %421, %406
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %1604

1604:                                             ; preds = %1603, %85
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %1605

1605:                                             ; preds = %1604, %81
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  call void @_ZN14McPATComponentD2Ev(ptr noundef nonnull align 8 dereferenceable(1352) %37) #8
  br label %1606

1606:                                             ; preds = %1605
  %1607 = load ptr, ptr %9, align 8
  %1608 = load i32, ptr %10, align 4
  %1609 = insertvalue { ptr, i32 } poison, ptr %1607, 0
  %1610 = insertvalue { ptr, i32 } %1609, i32 %1608, 1
  resume { ptr, i32 } %1610
}

declare void @_ZN14McPATComponentC2EP7XMLNodeP14InputParameter(ptr noundef nonnull align 8 dereferenceable(1352), ptr noundef, ptr noundef) unnamed_addr #1

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9CacheUnit29set_cache_param_from_xml_dataEv(ptr noundef nonnull align 8 dereferenceable(1784)) #0 align 2

; Function Attrs: nounwind
declare double @log2(double noundef) #3

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #5

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

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

declare void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280), ptr noundef, ptr noundef, ptr noundef, i32 noundef, double noundef, i1 noundef zeroext, i32 noundef, i1 noundef zeroext) unnamed_addr #1

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #7

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10CacheArray17setSBTDirOverheadEd(ptr noundef nonnull align 8 dereferenceable(10280), double noundef) #6 align 2

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

; Function Attrs: nounwind
declare void @_ZN14McPATComponentD2Ev(ptr noundef nonnull align 8 dereferenceable(1352)) unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !16, i64 1768}
!12 = !{!"_ZTS9CacheUnit", !13, i64 0, !20, i64 1352, !33, i64 1360, !39, i64 1616, !40, i64 1760, !21, i64 1764, !16, i64 1768, !16, i64 1776}
!13 = !{!"_ZTS14McPATComponent", !14, i64 8, !6, i64 288, !19, i64 296, !23, i64 664, !16, i64 696, !26, i64 704, !30, i64 728, !31, i64 776, !31, i64 944, !17, i64 1112, !17, i64 1232}
!14 = !{!"_ZTS9Component", !15, i64 0, !17, i64 24, !17, i64 144, !16, i64 264, !16, i64 272}
!15 = !{!"_ZTS4Area", !16, i64 0, !16, i64 8, !16, i64 16}
!16 = !{!"double", !7, i64 0}
!17 = !{!"_ZTS8powerDef", !18, i64 0, !18, i64 40, !18, i64 80}
!18 = !{!"_ZTS15powerComponents", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32}
!19 = !{!"_ZTS14InputParameter", !20, i64 0, !20, i64 4, !20, i64 8, !20, i64 12, !20, i64 16, !21, i64 20, !20, i64 24, !20, i64 28, !20, i64 32, !20, i64 36, !20, i64 40, !20, i64 44, !16, i64 48, !16, i64 56, !20, i64 64, !20, i64 68, !20, i64 72, !20, i64 76, !20, i64 80, !21, i64 84, !21, i64 85, !21, i64 86, !21, i64 87, !21, i64 88, !20, i64 92, !20, i64 96, !20, i64 100, !20, i64 104, !20, i64 108, !20, i64 112, !20, i64 116, !20, i64 120, !20, i64 124, !20, i64 128, !20, i64 132, !20, i64 136, !20, i64 140, !20, i64 144, !20, i64 148, !22, i64 152, !20, i64 156, !21, i64 160, !20, i64 164, !20, i64 168, !20, i64 172, !20, i64 176, !20, i64 180, !20, i64 184, !20, i64 188, !21, i64 192, !20, i64 196, !20, i64 200, !20, i64 204, !20, i64 208, !20, i64 212, !20, i64 216, !20, i64 220, !20, i64 224, !20, i64 228, !20, i64 232, !20, i64 236, !20, i64 240, !20, i64 244, !20, i64 248, !20, i64 252, !20, i64 256, !20, i64 260, !20, i64 264, !20, i64 268, !20, i64 272, !20, i64 276, !20, i64 280, !20, i64 284, !20, i64 288, !20, i64 292, !20, i64 296, !21, i64 300, !20, i64 304, !20, i64 308, !20, i64 312, !21, i64 316, !21, i64 317, !20, i64 320, !20, i64 324, !21, i64 328, !16, i64 336, !16, i64 344, !21, i64 352, !20, i64 356, !20, i64 360, !21, i64 364}
!20 = !{!"int", !7, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{!"_ZTS9Wire_type", !7, i64 0}
!23 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !24, i64 0, !25, i64 8, !7, i64 16}
!24 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!25 = !{!"long", !7, i64 0}
!26 = !{!"_ZTSSt6vectorIP14McPATComponentSaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIP14McPATComponentSaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIP14McPATComponentSaIS1_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIP14McPATComponentSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTS11McPATOutput", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40}
!31 = !{!"_ZTS8statsDef", !32, i64 0, !32, i64 24, !32, i64 48, !32, i64 72, !32, i64 96, !32, i64 120, !32, i64 144}
!32 = !{!"_ZTS15statsComponents", !16, i64 0, !16, i64 8, !16, i64 16}
!33 = !{!"_ZTS15CacheParameters", !34, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !20, i64 64, !20, i64 68, !20, i64 72, !20, i64 76, !20, i64 80, !20, i64 84, !20, i64 88, !20, i64 92, !20, i64 96, !20, i64 100, !20, i64 104, !20, i64 108, !35, i64 112, !35, i64 116, !35, i64 120, !35, i64 124, !35, i64 128, !20, i64 132, !20, i64 136, !20, i64 140, !20, i64 144, !20, i64 148, !20, i64 152, !20, i64 156, !20, i64 160, !20, i64 164, !20, i64 168, !20, i64 172, !20, i64 176, !20, i64 180, !20, i64 184, !20, i64 188, !20, i64 192, !20, i64 196, !20, i64 200, !20, i64 204, !20, i64 208, !20, i64 212, !20, i64 216, !20, i64 220, !20, i64 224, !20, i64 228, !21, i64 232, !36, i64 236, !37, i64 240, !38, i64 244, !20, i64 248}
!34 = !{!"_ZTS8Dir_type", !7, i64 0}
!35 = !{!"_ZTS11Access_mode", !7, i64 0}
!36 = !{!"_ZTS10CacheLevel", !7, i64 0}
!37 = !{!"_ZTS9Device_ty", !7, i64 0}
!38 = !{!"_ZTS9Core_type", !7, i64 0}
!39 = !{!"_ZTS15CacheStatistics", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !21, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !16, i64 96, !16, i64 104, !20, i64 112, !20, i64 116, !20, i64 120, !20, i64 124, !16, i64 128, !16, i64 136}
!40 = !{!"_ZTS10Cache_type", !7, i64 0}
!41 = !{!12, !16, i64 1376}
!42 = !{!16, !16, i64 0}
!43 = !{!12, !16, i64 1384}
!44 = !{!12, !16, i64 1392}
!45 = !{!12, !16, i64 1400}
!46 = !{!12, !34, i64 1360}
!47 = !{!12, !36, i64 1596}
!48 = !{!20, !20, i64 0}
!49 = !{!12, !20, i64 1608}
!50 = !{!13, !20, i64 296}
!51 = !{!13, !20, i64 300}
!52 = !{!13, !20, i64 304}
!53 = !{!13, !20, i64 308}
!54 = !{!13, !21, i64 316}
!55 = !{!13, !20, i64 320}
!56 = !{!13, !20, i64 312}
!57 = !{!12, !35, i64 1472}
!58 = !{!13, !20, i64 324}
!59 = !{!12, !16, i64 1408}
!60 = !{!13, !16, i64 632}
!61 = !{!12, !16, i64 1416}
!62 = !{!13, !16, i64 640}
!63 = !{!13, !20, i64 328}
!64 = !{!13, !20, i64 332}
!65 = !{!13, !20, i64 336}
!66 = !{!13, !20, i64 340}
!67 = !{!21, !21, i64 0}
!68 = !{i8 0, i8 2}
!69 = !{}
!70 = !{!13, !21, i64 381}
!71 = !{!12, !21, i64 1592}
!72 = !{!13, !21, i64 382}
!73 = !{!13, !21, i64 383}
!74 = !{!12, !20, i64 1492}
!75 = !{!13, !20, i64 360}
!76 = !{!12, !20, i64 1496}
!77 = !{!13, !20, i64 364}
!78 = !{!12, !20, i64 1500}
!79 = !{!13, !20, i64 368}
!80 = !{!12, !20, i64 1504}
!81 = !{!13, !20, i64 372}
!82 = !{!12, !20, i64 1508}
!83 = !{!13, !20, i64 376}
!84 = !{!13, !6, i64 288}
!85 = !{!12, !37, i64 1600}
!86 = !{!13, !16, i64 696}
!87 = !{!12, !38, i64 1604}
!88 = !{!89, !20, i64 1416}
!89 = !{!"_ZTS10CacheArray", !13, i64 0, !19, i64 1352, !37, i64 1720, !21, i64 1724, !38, i64 1728, !21, i64 1732, !90, i64 1736, !16, i64 9936, !31, i64 9944, !31, i64 10112}
!90 = !{!"_ZTS9uca_org_t", !6, i64 0, !6, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !17, i64 48, !16, i64 168, !16, i64 176, !16, i64 184, !7, i64 192, !16, i64 296, !21, i64 304, !91, i64 312, !91, i64 4256}
!91 = !{!"_ZTS17results_mem_array", !20, i64 0, !20, i64 4, !16, i64 8, !20, i64 16, !20, i64 20, !20, i64 24, !20, i64 28, !20, i64 32, !20, i64 36, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !16, i64 144, !16, i64 152, !16, i64 160, !16, i64 168, !16, i64 176, !16, i64 184, !16, i64 192, !16, i64 200, !16, i64 208, !16, i64 216, !16, i64 224, !16, i64 232, !16, i64 240, !16, i64 248, !16, i64 256, !16, i64 264, !17, i64 272, !17, i64 392, !17, i64 512, !17, i64 632, !17, i64 752, !17, i64 872, !17, i64 992, !17, i64 1112, !17, i64 1232, !17, i64 1352, !17, i64 1472, !17, i64 1592, !17, i64 1712, !17, i64 1832, !17, i64 1952, !17, i64 2072, !17, i64 2192, !17, i64 2312, !17, i64 2432, !17, i64 2552, !17, i64 2672, !17, i64 2792, !17, i64 2912, !17, i64 3032, !17, i64 3152, !17, i64 3272, !17, i64 3392, !17, i64 3512, !17, i64 3632, !16, i64 3752, !16, i64 3760, !16, i64 3768, !16, i64 3776, !16, i64 3784, !16, i64 3792, !16, i64 3800, !16, i64 3808, !16, i64 3816, !16, i64 3824, !16, i64 3832, !16, i64 3840, !16, i64 3848, !16, i64 3856, !16, i64 3864, !16, i64 3872, !16, i64 3880, !16, i64 3888, !16, i64 3896, !16, i64 3904, !16, i64 3912, !16, i64 3920, !16, i64 3928, !16, i64 3936}
!92 = !{!89, !20, i64 1420}
!93 = !{!89, !20, i64 1424}
!94 = !{!12, !16, i64 1632}
!95 = !{!12, !16, i64 1616}
!96 = !{!12, !16, i64 1744}
!97 = !{!13, !16, i64 776}
!98 = !{!13, !16, i64 792}
!99 = !{!13, !16, i64 784}
!100 = !{!12, !16, i64 1640}
!101 = !{!13, !16, i64 800}
!102 = !{!13, !16, i64 816}
!103 = !{!13, !16, i64 808}
!104 = !{!13, !16, i64 824}
!105 = !{!13, !16, i64 840}
!106 = !{!13, !16, i64 832}
!107 = !{!12, !21, i64 1648}
!108 = !{!12, !16, i64 1656}
!109 = !{!13, !16, i64 1016}
!110 = !{!12, !16, i64 1664}
!111 = !{!13, !16, i64 1040}
!112 = !{!12, !16, i64 1672}
!113 = !{!13, !16, i64 1064}
!114 = !{!12, !16, i64 1680}
!115 = !{!13, !16, i64 1088}
!116 = !{!12, !16, i64 1688}
!117 = !{!12, !16, i64 1712}
!118 = !{!12, !16, i64 1696}
!119 = !{!12, !16, i64 1704}
!120 = !{!12, !16, i64 1624}
!121 = !{!89, !16, i64 9944}
!122 = !{!89, !16, i64 9960}
!123 = !{!89, !16, i64 9952}
!124 = !{!12, !16, i64 1752}
!125 = !{!89, !16, i64 9968}
!126 = !{!89, !16, i64 9984}
!127 = !{!89, !16, i64 9976}
!128 = !{!12, !20, i64 1728}
!129 = !{!89, !16, i64 10112}
!130 = !{!12, !20, i64 1736}
!131 = !{!89, !16, i64 10128}
!132 = !{!12, !20, i64 1732}
!133 = !{!89, !16, i64 10136}
!134 = !{!12, !20, i64 1740}
!135 = !{!89, !16, i64 10152}
!136 = !{!89, !16, i64 10144}
!137 = !{!13, !21, i64 488}
!138 = !{!12, !20, i64 1424}
!139 = !{!12, !20, i64 1440}
!140 = !{!12, !20, i64 1456}
!141 = !{!12, !35, i64 1476}
!142 = !{!12, !20, i64 1512}
!143 = !{!12, !20, i64 1516}
!144 = !{!12, !20, i64 1520}
!145 = !{!12, !20, i64 1524}
!146 = !{!12, !20, i64 1528}
!147 = !{!89, !20, i64 1432}
!148 = !{!13, !16, i64 944}
!149 = !{!13, !16, i64 968}
!150 = !{!13, !16, i64 992}
!151 = !{!12, !20, i64 1428}
!152 = !{!12, !20, i64 1444}
!153 = !{!12, !20, i64 1460}
!154 = !{!12, !35, i64 1480}
!155 = !{!12, !20, i64 1532}
!156 = !{!12, !20, i64 1536}
!157 = !{!12, !20, i64 1540}
!158 = !{!12, !20, i64 1544}
!159 = !{!12, !20, i64 1548}
!160 = !{!12, !20, i64 1432}
!161 = !{!12, !20, i64 1448}
!162 = !{!12, !20, i64 1464}
!163 = !{!12, !35, i64 1484}
!164 = !{!12, !20, i64 1552}
!165 = !{!12, !20, i64 1556}
!166 = !{!12, !20, i64 1560}
!167 = !{!12, !20, i64 1564}
!168 = !{!12, !20, i64 1568}
!169 = !{!12, !20, i64 1436}
!170 = !{!12, !20, i64 1452}
!171 = !{!12, !20, i64 1468}
!172 = !{!12, !35, i64 1488}
!173 = !{!12, !20, i64 1572}
!174 = !{!12, !20, i64 1576}
!175 = !{!12, !20, i64 1580}
!176 = !{!12, !20, i64 1584}
!177 = !{!12, !20, i64 1588}


; 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::__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.std::allocator" = type { i8 }

@_ZN9CacheUnit8is_cacheE = external dso_local local_unnamed_addr global i8, align 1
@_ZN9CacheUnit8pure_camE = external dso_local local_unnamed_addr global i8, align 1
@_ZN9CacheUnit9opt_localE = external dso_local local_unnamed_addr global i8, align 1
@_ZN9CacheUnit18force_cache_configE = external dso_local local_unnamed_addr global i8, align 1
@_ZTV9CacheUnit = external dso_local unnamed_addr constant { [6 x ptr] }, align 8
@.str = external hidden unnamed_addr constant [11 x i8], align 1
@_ZN14McPATComponent22physical_address_widthE = external local_unnamed_addr global i32, align 4
@.str.1 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9CacheUnitC2EP7XMLNodeP14InputParameter(ptr noundef nonnull align 8 dereferenceable(1784) %0, ptr noundef %1, ptr noundef %2) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca ptr, align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca ptr, align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator", align 1
  %15 = alloca ptr, align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca ptr, align 8
  tail call void @_ZN14McPATComponentC2EP7XMLNodeP14InputParameter(ptr noundef nonnull align 8 dereferenceable(1352) %0, ptr noundef %1, ptr noundef %2)
  store ptr getelementptr inbounds inrange(-16, 32) (i8, ptr @_ZTV9CacheUnit, i64 16), ptr %0, align 8, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %0, i64 1768
  store double 0.000000e+00, ptr %19, align 8, !tbaa !8
  %20 = getelementptr inbounds i8, ptr %0, i64 664
  %21 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str)
          to label %22 unwind label %37

22:                                               ; preds = %3
  invoke void @_ZN9CacheUnit29set_cache_param_from_xml_dataEv(ptr noundef nonnull align 8 dereferenceable(1784) %0)
          to label %23 unwind label %39

23:                                               ; preds = %22
  %24 = getelementptr inbounds i8, ptr %0, i64 1360
  %25 = getelementptr inbounds i8, ptr %0, i64 1376
  %26 = getelementptr inbounds i8, ptr %0, i64 1384
  %27 = load <2 x double>, ptr %25, align 8, !tbaa !40
  %28 = getelementptr inbounds i8, ptr %0, i64 1392
  %29 = load <2 x double>, ptr %28, align 8, !tbaa !40
  %30 = load i32, ptr %24, align 8, !tbaa !41
  %31 = icmp eq i32 %30, 0
  %32 = getelementptr inbounds i8, ptr %0, i64 1596
  %33 = load i32, ptr %32, align 4
  %34 = add i32 %33, -3
  %35 = icmp ult i32 %34, 2
  %or.cond180 = select i1 %31, i1 %35, i1 false
  %36 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !42
  br i1 %or.cond180, label %72, label %41

37:                                               ; preds = %3
  %38 = landingpad { ptr, i32 }
          cleanup
  br label %536

39:                                               ; preds = %22
  %40 = landingpad { ptr, i32 }
          cleanup
  br label %536

41:                                               ; preds = %23
  %42 = extractelement <2 x double> %27, i64 0
  %43 = extractelement <2 x double> %27, i64 1
  %44 = fdiv double %42, %43
  %45 = extractelement <2 x double> %29, i64 0
  %46 = fdiv double %44, %45
  %47 = tail call double @log2(double noundef %46) #10
  %48 = tail call double @llvm.ceil.f64(double %47)
  %49 = fptosi double %48 to i32
  %50 = tail call double @log2(double noundef %43) #10
  %51 = tail call double @llvm.ceil.f64(double %50)
  %52 = fptosi double %51 to i32
  %53 = add i32 %49, %52
  %54 = sub i32 %36, %53
  %55 = load i32, ptr %24, align 8, !tbaa !41
  %56 = icmp eq i32 %55, 2
  br i1 %56, label %57, label %72

57:                                               ; preds = %41
  %58 = getelementptr inbounds i8, ptr %0, i64 1608
  %59 = load i32, ptr %58, align 8, !tbaa !43
  %60 = sitofp i32 %59 to double
  %61 = fmul double %60, 1.250000e-01
  %62 = tail call double @llvm.ceil.f64(double %61)
  %63 = insertelement <2 x double> %27, double %62, i64 0
  %64 = fmul <2 x double> %63, <double 8.000000e+00, double 8.000000e+00>
  %65 = extractelement <2 x double> %64, i64 0
  %66 = extractelement <2 x double> %64, i64 1
  %67 = fdiv double %65, %66
  store double %67, ptr %19, align 8, !tbaa !8
  %68 = fadd double %67, 1.000000e+00
  %69 = insertelement <2 x double> poison, double %68, i64 0
  %70 = shufflevector <2 x double> %69, <2 x double> poison, <2 x i32> zeroinitializer
  %71 = fmul <2 x double> %27, %70
  br label %72

72:                                               ; preds = %23, %41, %57
  %.0.in = phi i32 [ %54, %57 ], [ %54, %41 ], [ %36, %23 ]
  %73 = phi <2 x double> [ %71, %57 ], [ %27, %41 ], [ %27, %23 ]
  %.0 = add nsw i32 %.0.in, 5
  %74 = shufflevector <2 x double> %29, <2 x double> poison, <4 x i32> <i32 poison, i32 poison, i32 0, i32 1>
  %75 = shufflevector <2 x double> %73, <2 x double> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %76 = shufflevector <4 x double> %75, <4 x double> %74, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  %77 = fptosi <4 x double> %76 to <4 x i32>
  %78 = getelementptr inbounds i8, ptr %0, i64 296
  %79 = getelementptr inbounds i8, ptr %0, i64 300
  %80 = getelementptr inbounds i8, ptr %0, i64 304
  %81 = getelementptr inbounds i8, ptr %0, i64 308
  store <4 x i32> %77, ptr %78, align 8, !tbaa !42
  %82 = icmp sgt i32 %.0.in, -5
  %83 = getelementptr inbounds i8, ptr %0, i64 316
  %84 = zext i1 %82 to i8
  store i8 %84, ptr %83, align 4, !tbaa !44
  %85 = getelementptr inbounds i8, ptr %0, i64 320
  store i32 %.0, ptr %85, align 8, !tbaa !45
  %86 = load i32, ptr %32, align 4, !tbaa !46
  %87 = icmp eq i32 %86, 0
  %88 = extractelement <4 x i32> %77, i64 1
  %89 = uitofp i32 %88 to double
  %90 = fmul double %89, 8.000000e+00
  %91 = fmul double %90, 5.000000e-01
  %.sink.in = select i1 %87, double %90, double %91
  %.sink = fptoui double %.sink.in to i32
  %92 = getelementptr inbounds i8, ptr %0, i64 312
  store i32 %.sink, ptr %92, align 8
  %93 = getelementptr inbounds i8, ptr %0, i64 1472
  %94 = load i32, ptr %93, align 8, !tbaa !47
  %95 = getelementptr inbounds i8, ptr %0, i64 324
  store i32 %94, ptr %95, align 4, !tbaa !48
  %96 = getelementptr inbounds i8, ptr %0, i64 1408
  %97 = getelementptr inbounds i8, ptr %0, i64 632
  %98 = load <2 x double>, ptr %96, align 8, !tbaa !40
  store <2 x double> %98, ptr %97, align 8, !tbaa !40
  %99 = getelementptr inbounds i8, ptr %0, i64 328
  store <4 x i32> <i32 0, i32 0, i32 0, i32 1>, ptr %99, align 8, !tbaa !42
  %100 = load i8, ptr @_ZN9CacheUnit8is_cacheE, align 1, !tbaa !49, !range !50, !noundef !51
  %101 = getelementptr inbounds i8, ptr %0, i64 381
  store i8 %100, ptr %101, align 1, !tbaa !52
  %102 = getelementptr inbounds i8, ptr %0, i64 1592
  %103 = load i8, ptr %102, align 8, !tbaa !53, !range !50, !noundef !51
  %104 = getelementptr inbounds i8, ptr %0, i64 382
  store i8 %103, ptr %104, align 2, !tbaa !54
  %105 = load i8, ptr @_ZN9CacheUnit8pure_camE, align 1, !tbaa !49, !range !50, !noundef !51
  %106 = getelementptr inbounds i8, ptr %0, i64 383
  store i8 %105, ptr %106, align 1, !tbaa !55
  %107 = getelementptr inbounds i8, ptr %0, i64 1492
  %108 = getelementptr inbounds i8, ptr %0, i64 360
  %109 = load <4 x i32>, ptr %107, align 4, !tbaa !42
  store <4 x i32> %109, ptr %108, align 8, !tbaa !42
  %110 = getelementptr inbounds i8, ptr %0, i64 1508
  %111 = load i32, ptr %110, align 4, !tbaa !56
  %112 = getelementptr inbounds i8, ptr %0, i64 376
  store i32 %111, ptr %112, align 8, !tbaa !57
  %113 = invoke noalias noundef nonnull dereferenceable(10280) ptr @_Znwm(i64 noundef 10280) #11
          to label %114 unwind label %168

114:                                              ; preds = %72
  %115 = getelementptr inbounds i8, ptr %0, i64 288
  %116 = load ptr, ptr %115, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %117 unwind label %170

117:                                              ; preds = %114
  %118 = getelementptr inbounds i8, ptr %0, i64 1600
  %119 = load i32, ptr %118, align 8, !tbaa !59
  %120 = getelementptr inbounds i8, ptr %0, i64 696
  %121 = load double, ptr %120, align 8, !tbaa !60
  %122 = load i8, ptr @_ZN9CacheUnit9opt_localE, align 1, !tbaa !49, !range !50, !noundef !51
  %123 = trunc nuw i8 %122 to i1
  %124 = getelementptr inbounds i8, ptr %0, i64 1604
  %125 = load i32, ptr %124, align 4, !tbaa !61
  invoke void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280) %113, ptr noundef %116, ptr noundef nonnull %78, ptr noundef nonnull %4, i32 noundef %119, double noundef %121, i1 noundef zeroext %123, i32 noundef %125, i1 noundef zeroext true)
          to label %126 unwind label %172

126:                                              ; preds = %117
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  %127 = getelementptr inbounds i8, ptr %0, i64 704
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  store ptr %113, ptr %6, align 8, !tbaa !62
  invoke void @_ZNSt6vectorIP14McPATComponentSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %128 unwind label %175

128:                                              ; preds = %126
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  %129 = getelementptr inbounds i8, ptr %113, i64 1416
  %130 = load i32, ptr %129, align 8, !tbaa !63
  %131 = getelementptr inbounds i8, ptr %113, i64 1420
  %132 = load i32, ptr %131, align 4, !tbaa !67
  %133 = getelementptr inbounds i8, ptr %113, i64 1424
  %134 = load i32, ptr %133, align 8, !tbaa !68
  %135 = getelementptr inbounds i8, ptr %113, i64 776
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %135)
          to label %136 unwind label %177

136:                                              ; preds = %128
  %137 = add i32 %132, %130
  %138 = add i32 %137, %134
  %139 = getelementptr inbounds i8, ptr %0, i64 1616
  %140 = getelementptr inbounds i8, ptr %0, i64 1632
  %141 = load double, ptr %140, align 8, !tbaa !69
  %142 = sitofp i32 %138 to double
  %143 = fmul double %141, %142
  %144 = load double, ptr %139, align 8, !tbaa !70
  %145 = fmul double %143, %144
  %146 = getelementptr inbounds i8, ptr %0, i64 1744
  %147 = load double, ptr %146, align 8, !tbaa !71
  %148 = fmul double %145, %147
  store double %148, ptr %135, align 8, !tbaa !72
  %149 = getelementptr inbounds i8, ptr %113, i64 792
  store double 0.000000e+00, ptr %149, align 8, !tbaa !73
  %150 = getelementptr inbounds i8, ptr %113, i64 784
  store double %148, ptr %150, align 8, !tbaa !74
  %151 = getelementptr inbounds i8, ptr %0, i64 1640
  %152 = load double, ptr %151, align 8, !tbaa !75
  %153 = fmul double %152, %142
  %154 = fmul double %144, %153
  %155 = fmul double %147, %154
  %156 = getelementptr inbounds i8, ptr %113, i64 800
  store double %155, ptr %156, align 8, !tbaa !76
  %157 = getelementptr inbounds i8, ptr %113, i64 816
  store double 0.000000e+00, ptr %157, align 8, !tbaa !77
  %158 = getelementptr inbounds i8, ptr %113, i64 808
  store double %155, ptr %158, align 8, !tbaa !78
  %159 = getelementptr inbounds i8, ptr %113, i64 824
  %160 = getelementptr inbounds i8, ptr %113, i64 944
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %159, i8 0, i64 24, i1 false)
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %160)
          to label %161 unwind label %177

161:                                              ; preds = %136
  %162 = getelementptr inbounds i8, ptr %0, i64 1648
  %163 = load i8, ptr %162, align 8, !tbaa !79, !range !50, !noundef !51
  %164 = trunc nuw i8 %163 to i1
  br i1 %164, label %165, label %179

165:                                              ; preds = %161
  %166 = getelementptr inbounds i8, ptr %0, i64 1656
  %167 = load <4 x double>, ptr %166, align 8, !tbaa !40
  br label %185

168:                                              ; preds = %72
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %536

170:                                              ; preds = %114
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %174

172:                                              ; preds = %117
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #10
  br label %174

174:                                              ; preds = %172, %170
  %.pn = phi { ptr, i32 } [ %173, %172 ], [ %171, %170 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @_ZdlPvm(ptr noundef nonnull %113, i64 noundef 10280) #12
  br label %536

175:                                              ; preds = %126
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  br label %536

177:                                              ; preds = %510, %508, %469, %440, %438, %397, %370, %368, %330, %301, %299, %245, %136, %128
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %536

179:                                              ; preds = %161
  %180 = getelementptr inbounds i8, ptr %0, i64 1688
  %181 = load <4 x double>, ptr %180, align 8, !tbaa !40
  %182 = shufflevector <4 x double> %181, <4 x double> poison, <4 x i32> <i32 3, i32 0, i32 1, i32 2>
  %183 = fadd <4 x double> %181, %182
  %184 = shufflevector <4 x double> %183, <4 x double> poison, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  br label %185

185:                                              ; preds = %179, %165
  %186 = phi <4 x double> [ %167, %165 ], [ %184, %179 ]
  %187 = getelementptr inbounds i8, ptr %113, i64 1016
  %188 = extractelement <4 x double> %186, i64 0
  store double %188, ptr %187, align 8
  %189 = getelementptr inbounds i8, ptr %113, i64 1040
  %190 = extractelement <4 x double> %186, i64 1
  store double %190, ptr %189, align 8
  %191 = getelementptr inbounds i8, ptr %113, i64 1064
  %192 = extractelement <4 x double> %186, i64 2
  store double %192, ptr %191, align 8
  %193 = getelementptr inbounds i8, ptr %113, i64 1088
  %194 = extractelement <4 x double> %186, i64 3
  store double %194, ptr %193, align 8
  %195 = load double, ptr %19, align 8, !tbaa !8
  %196 = fcmp ogt double %195, 0.000000e+00
  br i1 %196, label %197, label %237

197:                                              ; preds = %185
  call void @_ZN10CacheArray17setSBTDirOverheadEd(ptr noundef nonnull align 8 dereferenceable(10280) %113, double noundef %195)
  %198 = load double, ptr %140, align 8, !tbaa !69
  %199 = fmul double %198, %142
  %200 = getelementptr inbounds i8, ptr %0, i64 1624
  %201 = load double, ptr %200, align 8, !tbaa !80
  %202 = fmul double %199, %201
  %203 = load double, ptr %146, align 8, !tbaa !71
  %204 = fsub double 1.000000e+00, %203
  %205 = fmul double %202, %204
  %206 = getelementptr inbounds i8, ptr %113, i64 9944
  store double %205, ptr %206, align 8, !tbaa !81
  %207 = getelementptr inbounds i8, ptr %113, i64 9960
  store double 0.000000e+00, ptr %207, align 8, !tbaa !82
  %208 = getelementptr inbounds i8, ptr %113, i64 9952
  store double %205, ptr %208, align 8, !tbaa !83
  %209 = getelementptr inbounds i8, ptr %0, i64 1752
  %210 = load double, ptr %209, align 8, !tbaa !84
  %211 = fmul double %210, %142
  %212 = fmul double %201, %211
  %213 = fmul double %204, %212
  %214 = getelementptr inbounds i8, ptr %113, i64 9968
  store double %213, ptr %214, align 8, !tbaa !85
  %215 = getelementptr inbounds i8, ptr %113, i64 9984
  store double 0.000000e+00, ptr %215, align 8, !tbaa !86
  %216 = getelementptr inbounds i8, ptr %113, i64 9976
  store double %213, ptr %216, align 8, !tbaa !87
  %217 = getelementptr inbounds i8, ptr %0, i64 1728
  %218 = load i32, ptr %217, align 8, !tbaa !88
  %219 = getelementptr inbounds i8, ptr %113, i64 10112
  %220 = getelementptr inbounds i8, ptr %0, i64 1736
  %221 = load i32, ptr %220, align 8, !tbaa !89
  %222 = sitofp i32 %221 to double
  %223 = getelementptr inbounds i8, ptr %113, i64 10128
  store double %222, ptr %223, align 8, !tbaa !90
  %224 = sub nsw i32 %218, %221
  %225 = sitofp i32 %224 to double
  store double %225, ptr %219, align 8, !tbaa !91
  %226 = getelementptr inbounds i8, ptr %0, i64 1732
  %227 = load i32, ptr %226, align 4, !tbaa !92
  %228 = sitofp i32 %227 to double
  %229 = getelementptr inbounds i8, ptr %113, i64 10136
  store double %228, ptr %229, align 8, !tbaa !93
  %230 = getelementptr inbounds i8, ptr %0, i64 1740
  %231 = load i32, ptr %230, align 4, !tbaa !94
  %232 = sitofp i32 %231 to double
  %233 = getelementptr inbounds i8, ptr %113, i64 10152
  store double %232, ptr %233, align 8, !tbaa !95
  %234 = sub nsw i32 %227, %231
  %235 = sitofp i32 %234 to double
  %236 = getelementptr inbounds i8, ptr %113, i64 10144
  store double %235, ptr %236, align 8, !tbaa !96
  br label %237

237:                                              ; preds = %197, %185
  %238 = load i8, ptr @_ZN9CacheUnit18force_cache_configE, align 1, !tbaa !49, !range !50, !noundef !51
  %239 = getelementptr inbounds i8, ptr %0, i64 488
  store i8 %238, ptr %239, align 8, !tbaa !97
  %240 = load i32, ptr %24, align 8, !tbaa !41
  %241 = icmp eq i32 %240, 0
  %242 = load i32, ptr %32, align 4
  %243 = add i32 %242, -3
  %244 = icmp ult i32 %243, 2
  %or.cond181 = select i1 %241, i1 %244, i1 false
  br i1 %or.cond181, label %535, label %245

245:                                              ; preds = %237
  %246 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !42
  %247 = add nsw i32 %246, 5
  %248 = load double, ptr %26, align 8, !tbaa !98
  %249 = extractelement <2 x double> %73, i64 0
  %250 = fdiv double %249, %248
  %251 = call double @log2(double noundef %250) #10
  %252 = call double @llvm.ceil.f64(double %251)
  %253 = fptosi double %252 to i32
  %254 = add nsw i32 %246, %253
  %255 = sitofp i32 %254 to double
  %256 = load double, ptr %26, align 8, !tbaa !98
  %257 = call double @llvm.fmuladd.f64(double %256, double 8.000000e+00, double %255)
  %258 = fptosi double %257 to i32
  %259 = sitofp i32 %258 to double
  %260 = fmul double %259, 1.250000e-01
  %261 = call double @llvm.ceil.f64(double %260)
  %262 = fptosi double %261 to i32
  %263 = sitofp i32 %262 to double
  %264 = getelementptr inbounds i8, ptr %0, i64 1424
  %265 = load i32, ptr %264, align 8, !tbaa !99
  %266 = sitofp i32 %265 to double
  %267 = fmul double %266, %263
  %268 = fptoui double %267 to i32
  store i32 %268, ptr %78, align 8, !tbaa !100
  store i32 %262, ptr %79, align 4, !tbaa !101
  %269 = getelementptr inbounds i8, ptr %0, i64 1440
  %270 = load i32, ptr %269, align 8, !tbaa !102
  store i32 %270, ptr %80, align 8, !tbaa !103
  %271 = getelementptr inbounds i8, ptr %0, i64 1456
  %272 = load i32, ptr %271, align 8, !tbaa !104
  store i32 %272, ptr %81, align 4, !tbaa !105
  %273 = icmp sgt i32 %246, -5
  %274 = zext i1 %273 to i8
  store i8 %274, ptr %83, align 4, !tbaa !44
  store i32 %247, ptr %85, align 8, !tbaa !45
  %275 = load i32, ptr %32, align 4, !tbaa !46
  %276 = icmp eq i32 %275, 0
  %277 = fmul double %263, 8.000000e+00
  %278 = fmul double %277, 5.000000e-01
  %.sink188.in = select i1 %276, double %277, double %278
  %.sink188 = fptoui double %.sink188.in to i32
  store i32 %.sink188, ptr %92, align 8
  %279 = getelementptr inbounds i8, ptr %0, i64 1476
  %280 = load i32, ptr %279, align 4, !tbaa !106
  store i32 %280, ptr %95, align 4, !tbaa !48
  store <4 x i32> <i32 0, i32 0, i32 0, i32 1>, ptr %99, align 8, !tbaa !42
  %281 = load i8, ptr @_ZN9CacheUnit8is_cacheE, align 1, !tbaa !49, !range !50, !noundef !51
  store i8 %281, ptr %101, align 1, !tbaa !52
  %282 = load i8, ptr %102, align 8, !tbaa !53, !range !50, !noundef !51
  store i8 %282, ptr %104, align 2, !tbaa !54
  %283 = load i8, ptr @_ZN9CacheUnit8pure_camE, align 1, !tbaa !49, !range !50, !noundef !51
  store i8 %283, ptr %106, align 1, !tbaa !55
  %284 = load <2 x double>, ptr %96, align 8, !tbaa !40
  store <2 x double> %284, ptr %97, align 8, !tbaa !40
  %285 = getelementptr inbounds i8, ptr %0, i64 1512
  %286 = load <4 x i32>, ptr %285, align 8, !tbaa !42
  store <4 x i32> %286, ptr %108, align 8, !tbaa !42
  %287 = getelementptr inbounds i8, ptr %0, i64 1528
  %288 = load i32, ptr %287, align 8, !tbaa !107
  store i32 %288, ptr %112, align 8, !tbaa !57
  %289 = invoke noalias noundef nonnull dereferenceable(10280) ptr @_Znwm(i64 noundef 10280) #11
          to label %290 unwind label %177

290:                                              ; preds = %245
  %291 = load ptr, ptr %115, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %292 unwind label %323

292:                                              ; preds = %290
  %293 = load i32, ptr %118, align 8, !tbaa !59
  %294 = load double, ptr %120, align 8, !tbaa !60
  %295 = load i8, ptr @_ZN9CacheUnit9opt_localE, align 1, !tbaa !49, !range !50, !noundef !51
  %296 = trunc nuw i8 %295 to i1
  %297 = load i32, ptr %124, align 4, !tbaa !61
  invoke void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280) %289, ptr noundef %291, ptr noundef nonnull %78, ptr noundef nonnull %7, i32 noundef %293, double noundef %294, i1 noundef zeroext %296, i32 noundef %297, i1 noundef zeroext true)
          to label %298 unwind label %325

298:                                              ; preds = %292
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #10
  store ptr %289, ptr %9, align 8, !tbaa !62
  invoke void @_ZNSt6vectorIP14McPATComponentSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %299 unwind label %328

299:                                              ; preds = %298
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  %300 = getelementptr inbounds i8, ptr %289, i64 776
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %300)
          to label %301 unwind label %177

301:                                              ; preds = %299
  store double 0.000000e+00, ptr %300, align 8, !tbaa !72
  %302 = getelementptr inbounds i8, ptr %289, i64 1432
  %303 = load i32, ptr %302, align 8, !tbaa !108
  %304 = uitofp i32 %303 to double
  %305 = getelementptr inbounds i8, ptr %289, i64 800
  store double %304, ptr %305, align 8, !tbaa !76
  %306 = getelementptr inbounds i8, ptr %289, i64 824
  store double %304, ptr %306, align 8, !tbaa !109
  %307 = getelementptr inbounds i8, ptr %289, i64 944
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %307)
          to label %308 unwind label %177

308:                                              ; preds = %301
  %309 = getelementptr inbounds i8, ptr %0, i64 1704
  %310 = load double, ptr %309, align 8, !tbaa !110
  %311 = getelementptr inbounds i8, ptr %0, i64 1712
  %312 = load double, ptr %311, align 8, !tbaa !111
  %313 = fadd double %310, %312
  store double %313, ptr %307, align 8, !tbaa !112
  %314 = getelementptr inbounds i8, ptr %289, i64 968
  store double %313, ptr %314, align 8, !tbaa !113
  %315 = getelementptr inbounds i8, ptr %289, i64 992
  store double 0.000000e+00, ptr %315, align 8, !tbaa !114
  %316 = load i32, ptr %24, align 8, !tbaa !41
  %317 = icmp eq i32 %316, 2
  br i1 %317, label %318, label %330

318:                                              ; preds = %308
  %319 = getelementptr inbounds i8, ptr %0, i64 1740
  %320 = load i32, ptr %319, align 4, !tbaa !94
  %321 = sitofp i32 %320 to double
  %322 = fadd double %313, %321
  store double %322, ptr %307, align 8, !tbaa !112
  store double %322, ptr %314, align 8, !tbaa !113
  br label %330

323:                                              ; preds = %290
  %324 = landingpad { ptr, i32 }
          cleanup
  br label %327

325:                                              ; preds = %292
  %326 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #10
  br label %327

327:                                              ; preds = %325, %323
  %.pn158 = phi { ptr, i32 } [ %326, %325 ], [ %324, %323 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #10
  call void @_ZdlPvm(ptr noundef nonnull %289, i64 noundef 10280) #12
  br label %536

328:                                              ; preds = %298
  %329 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  br label %536

330:                                              ; preds = %318, %308
  %331 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !42
  %332 = add nsw i32 %331, 5
  %333 = load double, ptr %26, align 8, !tbaa !98
  %334 = fptosi double %333 to i32
  %335 = getelementptr inbounds i8, ptr %0, i64 1428
  %336 = load i32, ptr %335, align 4, !tbaa !115
  %337 = mul nsw i32 %336, %334
  store i32 %337, ptr %78, align 8, !tbaa !100
  store i32 %334, ptr %79, align 4, !tbaa !101
  %338 = getelementptr inbounds i8, ptr %0, i64 1444
  %339 = load i32, ptr %338, align 4, !tbaa !116
  store i32 %339, ptr %80, align 8, !tbaa !103
  %340 = getelementptr inbounds i8, ptr %0, i64 1460
  %341 = load i32, ptr %340, align 4, !tbaa !117
  store i32 %341, ptr %81, align 4, !tbaa !105
  %342 = icmp sgt i32 %331, -5
  %343 = zext i1 %342 to i8
  store i8 %343, ptr %83, align 4, !tbaa !44
  store i32 %332, ptr %85, align 8, !tbaa !45
  %344 = load i32, ptr %32, align 4, !tbaa !46
  %345 = icmp eq i32 %344, 0
  %346 = uitofp i32 %334 to double
  %347 = fmul double %346, 8.000000e+00
  %348 = fmul double %347, 5.000000e-01
  %.sink189.in = select i1 %345, double %347, double %348
  %.sink189 = fptoui double %.sink189.in to i32
  store i32 %.sink189, ptr %92, align 8
  %349 = getelementptr inbounds i8, ptr %0, i64 1480
  %350 = load i32, ptr %349, align 8, !tbaa !118
  store i32 %350, ptr %95, align 4, !tbaa !48
  store <4 x i32> <i32 0, i32 0, i32 0, i32 1>, ptr %99, align 8, !tbaa !42
  %351 = load i8, ptr @_ZN9CacheUnit8is_cacheE, align 1, !tbaa !49, !range !50, !noundef !51
  store i8 %351, ptr %101, align 1, !tbaa !52
  %352 = load i8, ptr @_ZN9CacheUnit8pure_camE, align 1, !tbaa !49, !range !50, !noundef !51
  store i8 %352, ptr %106, align 1, !tbaa !55
  %353 = load <2 x double>, ptr %96, align 8, !tbaa !40
  store <2 x double> %353, ptr %97, align 8, !tbaa !40
  %354 = getelementptr inbounds i8, ptr %0, i64 1532
  %355 = load <4 x i32>, ptr %354, align 4, !tbaa !42
  store <4 x i32> %355, ptr %108, align 8, !tbaa !42
  %356 = getelementptr inbounds i8, ptr %0, i64 1548
  %357 = load i32, ptr %356, align 4, !tbaa !119
  store i32 %357, ptr %112, align 8, !tbaa !57
  %358 = invoke noalias noundef nonnull dereferenceable(10280) ptr @_Znwm(i64 noundef 10280) #11
          to label %359 unwind label %177

359:                                              ; preds = %330
  %360 = load ptr, ptr %115, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %361 unwind label %390

361:                                              ; preds = %359
  %362 = load i32, ptr %118, align 8, !tbaa !59
  %363 = load double, ptr %120, align 8, !tbaa !60
  %364 = load i8, ptr @_ZN9CacheUnit9opt_localE, align 1, !tbaa !49, !range !50, !noundef !51
  %365 = trunc nuw i8 %364 to i1
  %366 = load i32, ptr %124, align 4, !tbaa !61
  invoke void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280) %358, ptr noundef %360, ptr noundef nonnull %78, ptr noundef nonnull %10, i32 noundef %362, double noundef %363, i1 noundef zeroext %365, i32 noundef %366, i1 noundef zeroext true)
          to label %367 unwind label %392

367:                                              ; preds = %361
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  store ptr %358, ptr %12, align 8, !tbaa !62
  invoke void @_ZNSt6vectorIP14McPATComponentSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %368 unwind label %395

368:                                              ; preds = %367
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  %369 = getelementptr inbounds i8, ptr %358, i64 776
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %369)
          to label %370 unwind label %177

370:                                              ; preds = %368
  store double 0.000000e+00, ptr %369, align 8, !tbaa !72
  %371 = getelementptr inbounds i8, ptr %358, i64 1432
  %372 = load i32, ptr %371, align 8, !tbaa !108
  %373 = uitofp i32 %372 to double
  %374 = getelementptr inbounds i8, ptr %358, i64 800
  store double %373, ptr %374, align 8, !tbaa !76
  %375 = getelementptr inbounds i8, ptr %358, i64 824
  store double %373, ptr %375, align 8, !tbaa !109
  %376 = getelementptr inbounds i8, ptr %358, i64 944
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %376)
          to label %377 unwind label %177

377:                                              ; preds = %370
  %378 = load double, ptr %309, align 8, !tbaa !110
  %379 = load double, ptr %311, align 8, !tbaa !111
  %380 = fadd double %378, %379
  store double %380, ptr %376, align 8, !tbaa !112
  %381 = getelementptr inbounds i8, ptr %358, i64 968
  store double %380, ptr %381, align 8, !tbaa !113
  %382 = getelementptr inbounds i8, ptr %358, i64 992
  store double 0.000000e+00, ptr %382, align 8, !tbaa !114
  %383 = load i32, ptr %24, align 8, !tbaa !41
  %384 = icmp eq i32 %383, 2
  br i1 %384, label %385, label %397

385:                                              ; preds = %377
  %386 = getelementptr inbounds i8, ptr %0, i64 1740
  %387 = load i32, ptr %386, align 4, !tbaa !94
  %388 = sitofp i32 %387 to double
  %389 = fadd double %380, %388
  store double %389, ptr %376, align 8, !tbaa !112
  store double %389, ptr %381, align 8, !tbaa !113
  br label %397

390:                                              ; preds = %359
  %391 = landingpad { ptr, i32 }
          cleanup
  br label %394

392:                                              ; preds = %361
  %393 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  br label %394

394:                                              ; preds = %392, %390
  %.pn160 = phi { ptr, i32 } [ %393, %392 ], [ %391, %390 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @_ZdlPvm(ptr noundef nonnull %358, i64 noundef 10280) #12
  br label %536

395:                                              ; preds = %367
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  br label %536

397:                                              ; preds = %385, %377
  %398 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !42
  %399 = add nsw i32 %398, 5
  %400 = load double, ptr %26, align 8, !tbaa !98
  %401 = getelementptr inbounds i8, ptr %0, i64 1432
  %402 = load i32, ptr %401, align 8, !tbaa !120
  %403 = sitofp i32 %402 to double
  %404 = fmul double %400, %403
  %405 = fptoui double %404 to i32
  store i32 %405, ptr %78, align 8, !tbaa !100
  %406 = fptoui double %400 to i32
  store i32 %406, ptr %79, align 4, !tbaa !101
  %407 = getelementptr inbounds i8, ptr %0, i64 1448
  %408 = load i32, ptr %407, align 8, !tbaa !121
  store i32 %408, ptr %80, align 8, !tbaa !103
  %409 = getelementptr inbounds i8, ptr %0, i64 1464
  %410 = load i32, ptr %409, align 8, !tbaa !122
  store i32 %410, ptr %81, align 4, !tbaa !105
  %411 = icmp sgt i32 %398, -5
  %412 = zext i1 %411 to i8
  store i8 %412, ptr %83, align 4, !tbaa !44
  store i32 %399, ptr %85, align 8, !tbaa !45
  %413 = load i32, ptr %32, align 4, !tbaa !46
  %414 = icmp eq i32 %413, 0
  %415 = uitofp i32 %406 to double
  %416 = fmul double %415, 8.000000e+00
  %417 = fmul double %416, 5.000000e-01
  %.sink190.in = select i1 %414, double %416, double %417
  %.sink190 = fptoui double %.sink190.in to i32
  store i32 %.sink190, ptr %92, align 8
  %418 = getelementptr inbounds i8, ptr %0, i64 1484
  %419 = load i32, ptr %418, align 4, !tbaa !123
  store i32 %419, ptr %95, align 4, !tbaa !48
  store <4 x i32> <i32 0, i32 0, i32 0, i32 1>, ptr %99, align 8, !tbaa !42
  %420 = load i8, ptr @_ZN9CacheUnit8is_cacheE, align 1, !tbaa !49, !range !50, !noundef !51
  store i8 %420, ptr %101, align 1, !tbaa !52
  %421 = load i8, ptr %102, align 8, !tbaa !53, !range !50, !noundef !51
  store i8 %421, ptr %104, align 2, !tbaa !54
  %422 = load i8, ptr @_ZN9CacheUnit8pure_camE, align 1, !tbaa !49, !range !50, !noundef !51
  store i8 %422, ptr %106, align 1, !tbaa !55
  %423 = load <2 x double>, ptr %96, align 8, !tbaa !40
  store <2 x double> %423, ptr %97, align 8, !tbaa !40
  %424 = getelementptr inbounds i8, ptr %0, i64 1552
  %425 = load <4 x i32>, ptr %424, align 8, !tbaa !42
  store <4 x i32> %425, ptr %108, align 8, !tbaa !42
  %426 = getelementptr inbounds i8, ptr %0, i64 1568
  %427 = load i32, ptr %426, align 8, !tbaa !124
  store i32 %427, ptr %112, align 8, !tbaa !57
  %428 = invoke noalias noundef nonnull dereferenceable(10280) ptr @_Znwm(i64 noundef 10280) #11
          to label %429 unwind label %177

429:                                              ; preds = %397
  %430 = load ptr, ptr %115, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %431 unwind label %458

431:                                              ; preds = %429
  %432 = load i32, ptr %118, align 8, !tbaa !59
  %433 = load double, ptr %120, align 8, !tbaa !60
  %434 = load i8, ptr @_ZN9CacheUnit9opt_localE, align 1, !tbaa !49, !range !50, !noundef !51
  %435 = trunc nuw i8 %434 to i1
  %436 = load i32, ptr %124, align 4, !tbaa !61
  invoke void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280) %428, ptr noundef %430, ptr noundef nonnull %78, ptr noundef nonnull %13, i32 noundef %432, double noundef %433, i1 noundef zeroext %435, i32 noundef %436, i1 noundef zeroext true)
          to label %437 unwind label %460

437:                                              ; preds = %431
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  store ptr %428, ptr %15, align 8, !tbaa !62
  invoke void @_ZNSt6vectorIP14McPATComponentSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %438 unwind label %463

438:                                              ; preds = %437
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  %439 = getelementptr inbounds i8, ptr %428, i64 776
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %439)
          to label %440 unwind label %177

440:                                              ; preds = %438
  store double 0.000000e+00, ptr %439, align 8, !tbaa !72
  %441 = getelementptr inbounds i8, ptr %428, i64 1432
  %442 = load i32, ptr %441, align 8, !tbaa !108
  %443 = uitofp i32 %442 to double
  %444 = getelementptr inbounds i8, ptr %428, i64 800
  store double %443, ptr %444, align 8, !tbaa !76
  %445 = getelementptr inbounds i8, ptr %428, i64 824
  store double %443, ptr %445, align 8, !tbaa !109
  %446 = getelementptr inbounds i8, ptr %428, i64 944
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %446)
          to label %447 unwind label %177

447:                                              ; preds = %440
  %448 = load double, ptr %309, align 8, !tbaa !110
  store double %448, ptr %446, align 8, !tbaa !112
  %449 = getelementptr inbounds i8, ptr %428, i64 968
  store double %448, ptr %449, align 8, !tbaa !113
  %450 = getelementptr inbounds i8, ptr %428, i64 992
  store double 0.000000e+00, ptr %450, align 8, !tbaa !114
  %451 = load i32, ptr %24, align 8, !tbaa !41
  %452 = icmp eq i32 %451, 2
  br i1 %452, label %453, label %465

453:                                              ; preds = %447
  %454 = getelementptr inbounds i8, ptr %0, i64 1740
  %455 = load i32, ptr %454, align 4, !tbaa !94
  %456 = sitofp i32 %455 to double
  %457 = fadd double %448, %456
  store double %457, ptr %446, align 8, !tbaa !112
  store double %457, ptr %449, align 8, !tbaa !113
  br label %465

458:                                              ; preds = %429
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %462

460:                                              ; preds = %431
  %461 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #10
  br label %462

462:                                              ; preds = %460, %458
  %.pn162 = phi { ptr, i32 } [ %461, %460 ], [ %459, %458 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #10
  call void @_ZdlPvm(ptr noundef nonnull %428, i64 noundef 10280) #12
  br label %536

463:                                              ; preds = %437
  %464 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  br label %536

465:                                              ; preds = %453, %447
  %466 = getelementptr inbounds i8, ptr %0, i64 1436
  %467 = load i32, ptr %466, align 4, !tbaa !125
  %468 = icmp sgt i32 %467, 0
  br i1 %468, label %469, label %535

469:                                              ; preds = %465
  %470 = load i32, ptr @_ZN14McPATComponent22physical_address_widthE, align 4, !tbaa !42
  %471 = add nsw i32 %470, 5
  %472 = load double, ptr %26, align 8, !tbaa !98
  %473 = uitofp nneg i32 %467 to double
  %474 = fmul double %472, %473
  %475 = fptoui double %474 to i32
  store i32 %475, ptr %78, align 8, !tbaa !100
  %476 = fptoui double %472 to i32
  store i32 %476, ptr %79, align 4, !tbaa !101
  %477 = getelementptr inbounds i8, ptr %0, i64 1452
  %478 = load i32, ptr %477, align 4, !tbaa !126
  store i32 %478, ptr %80, align 8, !tbaa !103
  %479 = getelementptr inbounds i8, ptr %0, i64 1468
  %480 = load i32, ptr %479, align 4, !tbaa !127
  store i32 %480, ptr %81, align 4, !tbaa !105
  %481 = icmp sgt i32 %470, -5
  %482 = zext i1 %481 to i8
  store i8 %482, ptr %83, align 4, !tbaa !44
  store i32 %471, ptr %85, align 8, !tbaa !45
  %483 = load i32, ptr %32, align 4, !tbaa !46
  %484 = icmp eq i32 %483, 0
  %485 = uitofp i32 %476 to double
  %486 = fmul double %485, 8.000000e+00
  %487 = fmul double %486, 5.000000e-01
  %.sink191.in = select i1 %484, double %486, double %487
  %.sink191 = fptoui double %.sink191.in to i32
  store i32 %.sink191, ptr %92, align 8
  %488 = getelementptr inbounds i8, ptr %0, i64 1488
  %489 = load i32, ptr %488, align 8, !tbaa !128
  store i32 %489, ptr %95, align 4, !tbaa !48
  store <4 x i32> <i32 0, i32 0, i32 0, i32 1>, ptr %99, align 8, !tbaa !42
  %490 = load i8, ptr @_ZN9CacheUnit8is_cacheE, align 1, !tbaa !49, !range !50, !noundef !51
  store i8 %490, ptr %101, align 1, !tbaa !52
  %491 = load i8, ptr %102, align 8, !tbaa !53, !range !50, !noundef !51
  store i8 %491, ptr %104, align 2, !tbaa !54
  %492 = load i8, ptr @_ZN9CacheUnit8pure_camE, align 1, !tbaa !49, !range !50, !noundef !51
  store i8 %492, ptr %106, align 1, !tbaa !55
  %493 = load <2 x double>, ptr %96, align 8, !tbaa !40
  store <2 x double> %493, ptr %97, align 8, !tbaa !40
  %494 = getelementptr inbounds i8, ptr %0, i64 1572
  %495 = load <4 x i32>, ptr %494, align 4, !tbaa !42
  store <4 x i32> %495, ptr %108, align 8, !tbaa !42
  %496 = getelementptr inbounds i8, ptr %0, i64 1588
  %497 = load i32, ptr %496, align 4, !tbaa !129
  store i32 %497, ptr %112, align 8, !tbaa !57
  %498 = invoke noalias noundef nonnull dereferenceable(10280) ptr @_Znwm(i64 noundef 10280) #11
          to label %499 unwind label %177

499:                                              ; preds = %469
  %500 = load ptr, ptr %115, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %501 unwind label %528

501:                                              ; preds = %499
  %502 = load i32, ptr %118, align 8, !tbaa !59
  %503 = load double, ptr %120, align 8, !tbaa !60
  %504 = load i8, ptr @_ZN9CacheUnit9opt_localE, align 1, !tbaa !49, !range !50, !noundef !51
  %505 = trunc nuw i8 %504 to i1
  %506 = load i32, ptr %124, align 4, !tbaa !61
  invoke void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280) %498, ptr noundef %500, ptr noundef nonnull %78, ptr noundef nonnull %16, i32 noundef %502, double noundef %503, i1 noundef zeroext %505, i32 noundef %506, i1 noundef zeroext true)
          to label %507 unwind label %530

507:                                              ; preds = %501
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  store ptr %498, ptr %18, align 8, !tbaa !62
  invoke void @_ZNSt6vectorIP14McPATComponentSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %508 unwind label %533

508:                                              ; preds = %507
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  %509 = getelementptr inbounds i8, ptr %498, i64 776
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %509)
          to label %510 unwind label %177

510:                                              ; preds = %508
  store double 0.000000e+00, ptr %509, align 8, !tbaa !72
  %511 = getelementptr inbounds i8, ptr %498, i64 1432
  %512 = load i32, ptr %511, align 8, !tbaa !108
  %513 = uitofp i32 %512 to double
  %514 = getelementptr inbounds i8, ptr %498, i64 800
  store double %513, ptr %514, align 8, !tbaa !76
  %515 = getelementptr inbounds i8, ptr %498, i64 824
  store double %513, ptr %515, align 8, !tbaa !109
  %516 = getelementptr inbounds i8, ptr %498, i64 944
  invoke void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168) %516)
          to label %517 unwind label %177

517:                                              ; preds = %510
  %518 = load double, ptr %311, align 8, !tbaa !111
  store double %518, ptr %516, align 8, !tbaa !112
  %519 = getelementptr inbounds i8, ptr %498, i64 968
  store double %518, ptr %519, align 8, !tbaa !113
  %520 = getelementptr inbounds i8, ptr %498, i64 992
  store double 0.000000e+00, ptr %520, align 8, !tbaa !114
  %521 = load i32, ptr %24, align 8, !tbaa !41
  %522 = icmp eq i32 %521, 2
  br i1 %522, label %523, label %535

523:                                              ; preds = %517
  %524 = getelementptr inbounds i8, ptr %0, i64 1740
  %525 = load i32, ptr %524, align 4, !tbaa !94
  %526 = sitofp i32 %525 to double
  %527 = fadd double %518, %526
  store double %527, ptr %516, align 8, !tbaa !112
  store double %527, ptr %519, align 8, !tbaa !113
  br label %535

528:                                              ; preds = %499
  %529 = landingpad { ptr, i32 }
          cleanup
  br label %532

530:                                              ; preds = %501
  %531 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  br label %532

532:                                              ; preds = %530, %528
  %.pn164 = phi { ptr, i32 } [ %531, %530 ], [ %529, %528 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #10
  call void @_ZdlPvm(ptr noundef nonnull %498, i64 noundef 10280) #12
  br label %536

533:                                              ; preds = %507
  %534 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  br label %536

535:                                              ; preds = %237, %465, %523, %517
  ret void

536:                                              ; preds = %39, %177, %328, %395, %463, %533, %327, %394, %462, %532, %174, %175, %168, %37
  %.pn166.pn.pn.pn = phi { ptr, i32 } [ %38, %37 ], [ %40, %39 ], [ %176, %175 ], [ %.pn, %174 ], [ %169, %168 ], [ %178, %177 ], [ %534, %533 ], [ %.pn164, %532 ], [ %464, %463 ], [ %.pn162, %462 ], [ %396, %395 ], [ %.pn160, %394 ], [ %329, %328 ], [ %.pn158, %327 ]
  call void @_ZN14McPATComponentD2Ev(ptr noundef nonnull align 8 dereferenceable(1352) %0) #10
  resume { ptr, i32 } %.pn166.pn.pn.pn
}

declare void @_ZN14McPATComponentC2EP7XMLNodeP14InputParameter(ptr noundef nonnull align 8 dereferenceable(1352), ptr noundef, ptr noundef) unnamed_addr #1

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9CacheUnit29set_cache_param_from_xml_dataEv(ptr noundef nonnull align 8 dereferenceable(1784)) local_unnamed_addr #0 align 2

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #5

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

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

declare void @_ZN10CacheArrayC1EP7XMLNodePK14InputParameterNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE9Device_tydb9Core_typeb(ptr noundef nonnull align 8 dereferenceable(10280), ptr noundef, ptr noundef, ptr noundef, i32 noundef, double noundef, i1 noundef zeroext, i32 noundef, i1 noundef zeroext) unnamed_addr #1

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8statsDef5resetEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10CacheArray17setSBTDirOverheadEd(ptr noundef nonnull align 8 dereferenceable(10280), double noundef) local_unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !13, i64 1768}
!9 = !{!"_ZTS9CacheUnit", !10, i64 0, !19, i64 1352, !32, i64 1360, !38, i64 1616, !39, i64 1760, !20, i64 1764, !13, i64 1768, !13, i64 1776}
!10 = !{!"_ZTS14McPATComponent", !11, i64 8, !17, i64 288, !18, i64 296, !22, i64 664, !13, i64 696, !25, i64 704, !29, i64 728, !30, i64 776, !30, i64 944, !15, i64 1112, !15, i64 1232}
!11 = !{!"_ZTS9Component", !12, i64 0, !15, i64 24, !15, i64 144, !13, i64 264, !13, i64 272}
!12 = !{!"_ZTS4Area", !13, i64 0, !13, i64 8, !13, i64 16}
!13 = !{!"double", !14, i64 0}
!14 = !{!"omnipotent char", !7, i64 0}
!15 = !{!"_ZTS8powerDef", !16, i64 0, !16, i64 40, !16, i64 80}
!16 = !{!"_ZTS15powerComponents", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32}
!17 = !{!"any pointer", !14, i64 0}
!18 = !{!"_ZTS14InputParameter", !19, i64 0, !19, i64 4, !19, i64 8, !19, i64 12, !19, i64 16, !20, i64 20, !19, i64 24, !19, i64 28, !19, i64 32, !19, i64 36, !19, i64 40, !19, i64 44, !13, i64 48, !13, i64 56, !19, i64 64, !19, i64 68, !19, i64 72, !19, i64 76, !19, i64 80, !20, i64 84, !20, i64 85, !20, i64 86, !20, i64 87, !20, i64 88, !19, i64 92, !19, i64 96, !19, i64 100, !19, i64 104, !19, i64 108, !19, i64 112, !19, i64 116, !19, i64 120, !19, i64 124, !19, i64 128, !19, i64 132, !19, i64 136, !19, i64 140, !19, i64 144, !19, i64 148, !21, i64 152, !19, i64 156, !20, i64 160, !19, i64 164, !19, i64 168, !19, i64 172, !19, i64 176, !19, i64 180, !19, i64 184, !19, i64 188, !20, i64 192, !19, i64 196, !19, i64 200, !19, i64 204, !19, i64 208, !19, i64 212, !19, i64 216, !19, i64 220, !19, i64 224, !19, i64 228, !19, i64 232, !19, i64 236, !19, i64 240, !19, i64 244, !19, i64 248, !19, i64 252, !19, i64 256, !19, i64 260, !19, i64 264, !19, i64 268, !19, i64 272, !19, i64 276, !19, i64 280, !19, i64 284, !19, i64 288, !19, i64 292, !19, i64 296, !20, i64 300, !19, i64 304, !19, i64 308, !19, i64 312, !20, i64 316, !20, i64 317, !19, i64 320, !19, i64 324, !20, i64 328, !13, i64 336, !13, i64 344, !20, i64 352, !19, i64 356, !19, i64 360, !20, i64 364}
!19 = !{!"int", !14, i64 0}
!20 = !{!"bool", !14, i64 0}
!21 = !{!"_ZTS9Wire_type", !14, i64 0}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !23, i64 0, !24, i64 8, !14, i64 16}
!23 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !17, i64 0}
!24 = !{!"long", !14, i64 0}
!25 = !{!"_ZTSSt6vectorIP14McPATComponentSaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIP14McPATComponentSaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIP14McPATComponentSaIS1_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIP14McPATComponentSaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!29 = !{!"_ZTS11McPATOutput", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40}
!30 = !{!"_ZTS8statsDef", !31, i64 0, !31, i64 24, !31, i64 48, !31, i64 72, !31, i64 96, !31, i64 120, !31, i64 144}
!31 = !{!"_ZTS15statsComponents", !13, i64 0, !13, i64 8, !13, i64 16}
!32 = !{!"_ZTS15CacheParameters", !33, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !19, i64 64, !19, i64 68, !19, i64 72, !19, i64 76, !19, i64 80, !19, i64 84, !19, i64 88, !19, i64 92, !19, i64 96, !19, i64 100, !19, i64 104, !19, i64 108, !34, i64 112, !34, i64 116, !34, i64 120, !34, i64 124, !34, i64 128, !19, i64 132, !19, i64 136, !19, i64 140, !19, i64 144, !19, i64 148, !19, i64 152, !19, i64 156, !19, i64 160, !19, i64 164, !19, i64 168, !19, i64 172, !19, i64 176, !19, i64 180, !19, i64 184, !19, i64 188, !19, i64 192, !19, i64 196, !19, i64 200, !19, i64 204, !19, i64 208, !19, i64 212, !19, i64 216, !19, i64 220, !19, i64 224, !19, i64 228, !20, i64 232, !35, i64 236, !36, i64 240, !37, i64 244, !19, i64 248}
!33 = !{!"_ZTS8Dir_type", !14, i64 0}
!34 = !{!"_ZTS11Access_mode", !14, i64 0}
!35 = !{!"_ZTS10CacheLevel", !14, i64 0}
!36 = !{!"_ZTS9Device_ty", !14, i64 0}
!37 = !{!"_ZTS9Core_type", !14, i64 0}
!38 = !{!"_ZTS15CacheStatistics", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !20, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !13, i64 96, !13, i64 104, !19, i64 112, !19, i64 116, !19, i64 120, !19, i64 124, !13, i64 128, !13, i64 136}
!39 = !{!"_ZTS10Cache_type", !14, i64 0}
!40 = !{!13, !13, i64 0}
!41 = !{!9, !33, i64 1360}
!42 = !{!19, !19, i64 0}
!43 = !{!9, !19, i64 1608}
!44 = !{!10, !20, i64 316}
!45 = !{!10, !19, i64 320}
!46 = !{!9, !35, i64 1596}
!47 = !{!9, !34, i64 1472}
!48 = !{!10, !19, i64 324}
!49 = !{!20, !20, i64 0}
!50 = !{i8 0, i8 2}
!51 = !{}
!52 = !{!10, !20, i64 381}
!53 = !{!9, !20, i64 1592}
!54 = !{!10, !20, i64 382}
!55 = !{!10, !20, i64 383}
!56 = !{!9, !19, i64 1508}
!57 = !{!10, !19, i64 376}
!58 = !{!10, !17, i64 288}
!59 = !{!9, !36, i64 1600}
!60 = !{!10, !13, i64 696}
!61 = !{!9, !37, i64 1604}
!62 = !{!17, !17, i64 0}
!63 = !{!64, !19, i64 1416}
!64 = !{!"_ZTS10CacheArray", !10, i64 0, !18, i64 1352, !36, i64 1720, !20, i64 1724, !37, i64 1728, !20, i64 1732, !65, i64 1736, !13, i64 9936, !30, i64 9944, !30, i64 10112}
!65 = !{!"_ZTS9uca_org_t", !17, i64 0, !17, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !15, i64 48, !13, i64 168, !13, i64 176, !13, i64 184, !14, i64 192, !13, i64 296, !20, i64 304, !66, i64 312, !66, i64 4256}
!66 = !{!"_ZTS17results_mem_array", !19, i64 0, !19, i64 4, !13, i64 8, !19, i64 16, !19, i64 20, !19, i64 24, !19, i64 28, !19, i64 32, !19, i64 36, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !13, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !13, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !13, i64 200, !13, i64 208, !13, i64 216, !13, i64 224, !13, i64 232, !13, i64 240, !13, i64 248, !13, i64 256, !13, i64 264, !15, i64 272, !15, i64 392, !15, i64 512, !15, i64 632, !15, i64 752, !15, i64 872, !15, i64 992, !15, i64 1112, !15, i64 1232, !15, i64 1352, !15, i64 1472, !15, i64 1592, !15, i64 1712, !15, i64 1832, !15, i64 1952, !15, i64 2072, !15, i64 2192, !15, i64 2312, !15, i64 2432, !15, i64 2552, !15, i64 2672, !15, i64 2792, !15, i64 2912, !15, i64 3032, !15, i64 3152, !15, i64 3272, !15, i64 3392, !15, i64 3512, !15, i64 3632, !13, i64 3752, !13, i64 3760, !13, i64 3768, !13, i64 3776, !13, i64 3784, !13, i64 3792, !13, i64 3800, !13, i64 3808, !13, i64 3816, !13, i64 3824, !13, i64 3832, !13, i64 3840, !13, i64 3848, !13, i64 3856, !13, i64 3864, !13, i64 3872, !13, i64 3880, !13, i64 3888, !13, i64 3896, !13, i64 3904, !13, i64 3912, !13, i64 3920, !13, i64 3928, !13, i64 3936}
!67 = !{!64, !19, i64 1420}
!68 = !{!64, !19, i64 1424}
!69 = !{!9, !13, i64 1632}
!70 = !{!9, !13, i64 1616}
!71 = !{!9, !13, i64 1744}
!72 = !{!10, !13, i64 776}
!73 = !{!10, !13, i64 792}
!74 = !{!10, !13, i64 784}
!75 = !{!9, !13, i64 1640}
!76 = !{!10, !13, i64 800}
!77 = !{!10, !13, i64 816}
!78 = !{!10, !13, i64 808}
!79 = !{!9, !20, i64 1648}
!80 = !{!9, !13, i64 1624}
!81 = !{!64, !13, i64 9944}
!82 = !{!64, !13, i64 9960}
!83 = !{!64, !13, i64 9952}
!84 = !{!9, !13, i64 1752}
!85 = !{!64, !13, i64 9968}
!86 = !{!64, !13, i64 9984}
!87 = !{!64, !13, i64 9976}
!88 = !{!9, !19, i64 1728}
!89 = !{!9, !19, i64 1736}
!90 = !{!64, !13, i64 10128}
!91 = !{!64, !13, i64 10112}
!92 = !{!9, !19, i64 1732}
!93 = !{!64, !13, i64 10136}
!94 = !{!9, !19, i64 1740}
!95 = !{!64, !13, i64 10152}
!96 = !{!64, !13, i64 10144}
!97 = !{!10, !20, i64 488}
!98 = !{!9, !13, i64 1384}
!99 = !{!9, !19, i64 1424}
!100 = !{!10, !19, i64 296}
!101 = !{!10, !19, i64 300}
!102 = !{!9, !19, i64 1440}
!103 = !{!10, !19, i64 304}
!104 = !{!9, !19, i64 1456}
!105 = !{!10, !19, i64 308}
!106 = !{!9, !34, i64 1476}
!107 = !{!9, !19, i64 1528}
!108 = !{!64, !19, i64 1432}
!109 = !{!10, !13, i64 824}
!110 = !{!9, !13, i64 1704}
!111 = !{!9, !13, i64 1712}
!112 = !{!10, !13, i64 944}
!113 = !{!10, !13, i64 968}
!114 = !{!10, !13, i64 992}
!115 = !{!9, !19, i64 1428}
!116 = !{!9, !19, i64 1444}
!117 = !{!9, !19, i64 1460}
!118 = !{!9, !34, i64 1480}
!119 = !{!9, !19, i64 1548}
!120 = !{!9, !19, i64 1432}
!121 = !{!9, !19, i64 1448}
!122 = !{!9, !19, i64 1464}
!123 = !{!9, !34, i64 1484}
!124 = !{!9, !19, i64 1568}
!125 = !{!9, !19, i64 1436}
!126 = !{!9, !19, i64 1452}
!127 = !{!9, !19, i64 1468}
!128 = !{!9, !34, i64 1488}
!129 = !{!9, !19, i64 1588}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,MemCpyOptPass,MergedLoadStoreMotionPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass