; LLVM IR from gem5/gem5 :: ext/mcpat/noc.ll (ZN13OnChipNetwork15set_param_statsEv)

; 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.OnChipNetwork = type { %class.McPATComponent, ptr, ptr, %class.Component, i32, %class.InputParameter, double, double, double, double, %class.OnChipNetworkParameters, %class.OnChipNetworkStatistics, %class.uca_org_t, %class.statsDef, i8, i8, %"class.std::__cxx11::basic_string" }
%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.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.powerDef = type { %class.powerComponents, %class.powerComponents, %class.powerComponents }
%class.powerComponents = type { double, double, double, double, double }
%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.OnChipNetworkParameters = type { double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, i8, i8, double, double, double, i32 }
%class.OnChipNetworkStatistics = type { double, double }
%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 }
%class.statsDef = type { %class.statsComponents, %class.statsComponents, %class.statsComponents, %class.statsComponents, %class.statsComponents, %class.statsComponents, %class.statsComponents }
%class.statsComponents = type { double, double, double }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }

@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [60 x i8], align 1
@__PRETTY_FUNCTION__._ZN13OnChipNetwork15set_param_statsEv = external hidden unnamed_addr constant [38 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13OnChipNetwork15set_param_statsEv(ptr noundef nonnull align 8 dereferenceable(10600) %0) #0 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %12 = load ptr, ptr %2, align 8
  %13 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  call void @llvm.memset.p0.i64(ptr align 8 %13, i8 0, i64 120, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #8
  %14 = getelementptr inbounds %class.McPATComponent, ptr %12, i32 0, i32 2
  %15 = load ptr, ptr %14, align 8, !tbaa !9
  %16 = call noundef i32 @_ZNK7XMLNode10nChildNodeEPKc(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef @.str.4)
  store i32 %16, ptr %3, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #8
  store i32 0, ptr %4, align 4, !tbaa !30
  br label %17

17:                                               ; preds = %258, %1
  %18 = load i32, ptr %4, align 4, !tbaa !30
  %19 = load i32, ptr %3, align 4, !tbaa !30
  %20 = icmp slt i32 %18, %19
  br i1 %20, label %21, label %261

21:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  %22 = getelementptr inbounds %class.McPATComponent, ptr %12, i32 0, i32 2
  %23 = load ptr, ptr %22, align 8, !tbaa !9
  %24 = call noundef ptr @_ZNK7XMLNode15getChildNodePtrEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef @.str.4, ptr noundef %4)
  store ptr %24, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  %25 = load ptr, ptr %6, align 8, !tbaa !5
  %26 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef @.str.5, ptr noundef null)
  store ptr %26, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %27 = load ptr, ptr %6, align 8, !tbaa !5
  %28 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef @.str.6, ptr noundef null)
  store ptr %28, ptr %8, align 8, !tbaa !5
  %29 = load ptr, ptr %7, align 8, !tbaa !5
  %30 = icmp ne ptr %29, null
  br i1 %30, label %34, label %31

31:                                               ; preds = %21
  %32 = load ptr, ptr %6, align 8, !tbaa !5
  %33 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef @.str.7, ptr noundef null)
  call void @_ZN14McPATComponent20warnMissingParamNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %12, ptr noundef %33)
  br label %257

34:                                               ; preds = %21
  %35 = load ptr, ptr %7, align 8, !tbaa !5
  %36 = call i32 @strcmp(ptr noundef %35, ptr noundef @.str.8) #9
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %38, label %45

38:                                               ; preds = %34
  %39 = load ptr, ptr %8, align 8, !tbaa !5
  %40 = call i32 @atoi(ptr noundef %39) #9
  %41 = icmp ne i32 %40, 0
  %42 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %43 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %42, i32 0, i32 16
  %44 = zext i1 %41 to i8
  store i8 %44, ptr %43, align 1, !tbaa !31
  br label %256

45:                                               ; preds = %34
  %46 = load ptr, ptr %7, align 8, !tbaa !5
  %47 = call i32 @strcmp(ptr noundef %46, ptr noundef @.str.9) #9
  %48 = icmp eq i32 %47, 0
  br i1 %48, label %49, label %54

49:                                               ; preds = %45
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = call double @atof(ptr noundef %50) #9
  %52 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %53 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %52, i32 0, i32 0
  store double %51, ptr %53, align 8, !tbaa !37
  br label %255

54:                                               ; preds = %45
  %55 = load ptr, ptr %7, align 8, !tbaa !5
  %56 = call i32 @strcmp(ptr noundef %55, ptr noundef @.str.10) #9
  %57 = icmp eq i32 %56, 0
  br i1 %57, label %58, label %63

58:                                               ; preds = %54
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  %60 = call i32 @atoi(ptr noundef %59) #9
  %61 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %62 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %61, i32 0, i32 1
  store i32 %60, ptr %62, align 8, !tbaa !38
  br label %254

63:                                               ; preds = %54
  %64 = load ptr, ptr %7, align 8, !tbaa !5
  %65 = call i32 @strcmp(ptr noundef %64, ptr noundef @.str.11) #9
  %66 = icmp eq i32 %65, 0
  br i1 %66, label %67, label %71

67:                                               ; preds = %63
  %68 = load ptr, ptr %8, align 8, !tbaa !5
  %69 = call double @atof(ptr noundef %68) #9
  %70 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 6
  store double %69, ptr %70, align 8, !tbaa !39
  br label %253

71:                                               ; preds = %63
  %72 = load ptr, ptr %7, align 8, !tbaa !5
  %73 = call i32 @strcmp(ptr noundef %72, ptr noundef @.str.12) #9
  %74 = icmp eq i32 %73, 0
  br i1 %74, label %75, label %80

75:                                               ; preds = %71
  %76 = load ptr, ptr %8, align 8, !tbaa !5
  %77 = call double @atof(ptr noundef %76) #9
  %78 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %79 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %78, i32 0, i32 11
  store double %77, ptr %79, align 8, !tbaa !40
  br label %252

80:                                               ; preds = %71
  %81 = load ptr, ptr %7, align 8, !tbaa !5
  %82 = call i32 @strcmp(ptr noundef %81, ptr noundef @.str.13) #9
  %83 = icmp eq i32 %82, 0
  br i1 %83, label %84, label %89

84:                                               ; preds = %80
  %85 = load ptr, ptr %8, align 8, !tbaa !5
  %86 = call double @atof(ptr noundef %85) #9
  %87 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %88 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %87, i32 0, i32 12
  store double %86, ptr %88, align 8, !tbaa !41
  br label %251

89:                                               ; preds = %80
  %90 = load ptr, ptr %7, align 8, !tbaa !5
  %91 = call i32 @strcmp(ptr noundef %90, ptr noundef @.str.14) #9
  %92 = icmp eq i32 %91, 0
  br i1 %92, label %93, label %98

93:                                               ; preds = %89
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = call i32 @atoi(ptr noundef %94) #9
  %96 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %97 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %96, i32 0, i32 2
  store i32 %95, ptr %97, align 4, !tbaa !42
  br label %250

98:                                               ; preds = %89
  %99 = load ptr, ptr %7, align 8, !tbaa !5
  %100 = call i32 @strcmp(ptr noundef %99, ptr noundef @.str.15) #9
  %101 = icmp eq i32 %100, 0
  br i1 %101, label %102, label %107

102:                                              ; preds = %98
  %103 = load ptr, ptr %8, align 8, !tbaa !5
  %104 = call i32 @atoi(ptr noundef %103) #9
  %105 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %106 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %105, i32 0, i32 3
  store i32 %104, ptr %106, align 8, !tbaa !43
  br label %249

107:                                              ; preds = %98
  %108 = load ptr, ptr %7, align 8, !tbaa !5
  %109 = call i32 @strcmp(ptr noundef %108, ptr noundef @.str.16) #9
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %111, label %116

111:                                              ; preds = %107
  %112 = load ptr, ptr %8, align 8, !tbaa !5
  %113 = call i32 @atoi(ptr noundef %112) #9
  %114 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %115 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %114, i32 0, i32 5
  store i32 %113, ptr %115, align 8, !tbaa !44
  br label %248

116:                                              ; preds = %107
  %117 = load ptr, ptr %7, align 8, !tbaa !5
  %118 = call i32 @strcmp(ptr noundef %117, ptr noundef @.str.17) #9
  %119 = icmp eq i32 %118, 0
  br i1 %119, label %120, label %125

120:                                              ; preds = %116
  %121 = load ptr, ptr %8, align 8, !tbaa !5
  %122 = call i32 @atoi(ptr noundef %121) #9
  %123 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %124 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %123, i32 0, i32 8
  store i32 %122, ptr %124, align 4, !tbaa !45
  br label %247

125:                                              ; preds = %116
  %126 = load ptr, ptr %7, align 8, !tbaa !5
  %127 = call i32 @strcmp(ptr noundef %126, ptr noundef @.str.18) #9
  %128 = icmp eq i32 %127, 0
  br i1 %128, label %129, label %134

129:                                              ; preds = %125
  %130 = load ptr, ptr %8, align 8, !tbaa !5
  %131 = call i32 @atoi(ptr noundef %130) #9
  %132 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %133 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %132, i32 0, i32 9
  store i32 %131, ptr %133, align 8, !tbaa !46
  br label %246

134:                                              ; preds = %125
  %135 = load ptr, ptr %7, align 8, !tbaa !5
  %136 = call i32 @strcmp(ptr noundef %135, ptr noundef @.str.19) #9
  %137 = icmp eq i32 %136, 0
  br i1 %137, label %138, label %143

138:                                              ; preds = %134
  %139 = load ptr, ptr %8, align 8, !tbaa !5
  %140 = call double @atof(ptr noundef %139) #9
  %141 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %142 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %141, i32 0, i32 13
  store double %140, ptr %142, align 8, !tbaa !47
  br label %245

143:                                              ; preds = %134
  %144 = load ptr, ptr %7, align 8, !tbaa !5
  %145 = call i32 @strcmp(ptr noundef %144, ptr noundef @.str.20) #9
  %146 = icmp eq i32 %145, 0
  br i1 %146, label %147, label %152

147:                                              ; preds = %143
  %148 = load ptr, ptr %8, align 8, !tbaa !5
  %149 = call double @atof(ptr noundef %148) #9
  %150 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %151 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %150, i32 0, i32 14
  store double %149, ptr %151, align 8, !tbaa !48
  br label %244

152:                                              ; preds = %143
  %153 = load ptr, ptr %7, align 8, !tbaa !5
  %154 = call i32 @strcmp(ptr noundef %153, ptr noundef @.str.21) #9
  %155 = icmp eq i32 %154, 0
  br i1 %155, label %156, label %163

156:                                              ; preds = %152
  %157 = load ptr, ptr %8, align 8, !tbaa !5
  %158 = call i32 @atoi(ptr noundef %157) #9
  %159 = icmp ne i32 %158, 0
  %160 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %161 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %160, i32 0, i32 15
  %162 = zext i1 %159 to i8
  store i8 %162, ptr %161, align 8, !tbaa !49
  br label %243

163:                                              ; preds = %152
  %164 = load ptr, ptr %7, align 8, !tbaa !5
  %165 = call i32 @strcmp(ptr noundef %164, ptr noundef @.str.22) #9
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %167, label %172

167:                                              ; preds = %163
  %168 = load ptr, ptr %8, align 8, !tbaa !5
  %169 = call i32 @atoi(ptr noundef %168) #9
  %170 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %171 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %170, i32 0, i32 6
  store i32 %169, ptr %171, align 4, !tbaa !50
  br label %242

172:                                              ; preds = %163
  %173 = load ptr, ptr %7, align 8, !tbaa !5
  %174 = call i32 @strcmp(ptr noundef %173, ptr noundef @.str.23) #9
  %175 = icmp eq i32 %174, 0
  br i1 %175, label %176, label %181

176:                                              ; preds = %172
  %177 = load ptr, ptr %8, align 8, !tbaa !5
  %178 = call i32 @atoi(ptr noundef %177) #9
  %179 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %180 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %179, i32 0, i32 7
  store i32 %178, ptr %180, align 8, !tbaa !51
  br label %241

181:                                              ; preds = %172
  %182 = load ptr, ptr %7, align 8, !tbaa !5
  %183 = call i32 @strcmp(ptr noundef %182, ptr noundef @.str.24) #9
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %185, label %190

185:                                              ; preds = %181
  %186 = load ptr, ptr %8, align 8, !tbaa !5
  %187 = call double @atof(ptr noundef %186) #9
  %188 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %189 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %188, i32 0, i32 17
  store double %187, ptr %189, align 8, !tbaa !52
  br label %240

190:                                              ; preds = %181
  %191 = load ptr, ptr %7, align 8, !tbaa !5
  %192 = call i32 @strcmp(ptr noundef %191, ptr noundef @.str.25) #9
  %193 = icmp eq i32 %192, 0
  br i1 %193, label %194, label %199

194:                                              ; preds = %190
  %195 = load ptr, ptr %8, align 8, !tbaa !5
  %196 = call double @atof(ptr noundef %195) #9
  %197 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %198 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %197, i32 0, i32 18
  store double %196, ptr %198, align 8, !tbaa !53
  br label %239

199:                                              ; preds = %190
  %200 = load ptr, ptr %7, align 8, !tbaa !5
  %201 = call i32 @strcmp(ptr noundef %200, ptr noundef @.str.26) #9
  %202 = icmp eq i32 %201, 0
  br i1 %202, label %203, label %208

203:                                              ; preds = %199
  %204 = load ptr, ptr %8, align 8, !tbaa !5
  %205 = call double @atof(ptr noundef %204) #9
  %206 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %207 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %206, i32 0, i32 19
  store double %205, ptr %207, align 8, !tbaa !54
  br label %238

208:                                              ; preds = %199
  %209 = load ptr, ptr %7, align 8, !tbaa !5
  %210 = call i32 @strcmp(ptr noundef %209, ptr noundef @.str.27) #9
  %211 = icmp eq i32 %210, 0
  br i1 %211, label %212, label %217

212:                                              ; preds = %208
  %213 = load ptr, ptr %8, align 8, !tbaa !5
  %214 = call i32 @atoi(ptr noundef %213) #9
  %215 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %216 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %215, i32 0, i32 20
  store i32 %214, ptr %216, align 8, !tbaa !55
  br label %237

217:                                              ; preds = %208
  %218 = load ptr, ptr %7, align 8, !tbaa !5
  %219 = call i32 @strcmp(ptr noundef %218, ptr noundef @.str.28) #9
  %220 = icmp eq i32 %219, 0
  br i1 %220, label %221, label %224

221:                                              ; preds = %217
  %222 = load ptr, ptr %8, align 8, !tbaa !5
  %223 = call i32 @atoi(ptr noundef %222) #9
  store i32 %223, ptr %5, align 4, !tbaa !30
  br label %236

224:                                              ; preds = %217
  %225 = load ptr, ptr %7, align 8, !tbaa !5
  %226 = call i32 @strcmp(ptr noundef %225, ptr noundef @.str.29) #9
  %227 = icmp eq i32 %226, 0
  br i1 %227, label %228, label %233

228:                                              ; preds = %224
  %229 = load ptr, ptr %8, align 8, !tbaa !5
  %230 = call i32 @atoi(ptr noundef %229) #9
  %231 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 5
  %232 = getelementptr inbounds %class.InputParameter, ptr %231, i32 0, i32 39
  store i32 %230, ptr %232, align 8, !tbaa !56
  br label %235

233:                                              ; preds = %224
  %234 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN14McPATComponent21warnUnrecognizedParamEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %12, ptr noundef %234)
  br label %235

235:                                              ; preds = %233, %228
  br label %236

236:                                              ; preds = %235, %221
  br label %237

237:                                              ; preds = %236, %212
  br label %238

238:                                              ; preds = %237, %203
  br label %239

239:                                              ; preds = %238, %194
  br label %240

240:                                              ; preds = %239, %185
  br label %241

241:                                              ; preds = %240, %176
  br label %242

242:                                              ; preds = %241, %167
  br label %243

243:                                              ; preds = %242, %156
  br label %244

244:                                              ; preds = %243, %147
  br label %245

245:                                              ; preds = %244, %138
  br label %246

246:                                              ; preds = %245, %129
  br label %247

247:                                              ; preds = %246, %120
  br label %248

248:                                              ; preds = %247, %111
  br label %249

249:                                              ; preds = %248, %102
  br label %250

250:                                              ; preds = %249, %93
  br label %251

251:                                              ; preds = %250, %84
  br label %252

252:                                              ; preds = %251, %75
  br label %253

253:                                              ; preds = %252, %67
  br label %254

254:                                              ; preds = %253, %58
  br label %255

255:                                              ; preds = %254, %49
  br label %256

256:                                              ; preds = %255, %38
  br label %257

257:                                              ; preds = %256, %31
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  br label %258

258:                                              ; preds = %257
  %259 = load i32, ptr %4, align 4, !tbaa !30
  %260 = add nsw i32 %259, 1
  store i32 %260, ptr %4, align 4, !tbaa !30
  br label %17, !llvm.loop !57

261:                                              ; preds = %17
  %262 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %263 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %262, i32 0, i32 0
  %264 = load double, ptr %263, align 8, !tbaa !37
  %265 = fmul double %264, 1.000000e+06
  store double %265, ptr %263, align 8, !tbaa !37
  %266 = load i32, ptr %5, align 4, !tbaa !30
  %267 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 5
  %268 = getelementptr inbounds %class.InputParameter, ptr %267, i32 0, i32 37
  store i32 %266, ptr %268, align 8, !tbaa !59
  %269 = load i32, ptr %5, align 4, !tbaa !30
  %270 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 5
  %271 = getelementptr inbounds %class.InputParameter, ptr %270, i32 0, i32 38
  store i32 %269, ptr %271, align 4, !tbaa !60
  %272 = getelementptr inbounds %class.McPATComponent, ptr %12, i32 0, i32 2
  %273 = load ptr, ptr %272, align 8, !tbaa !9
  %274 = call noundef i32 @_ZNK7XMLNode10nChildNodeEPKc(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef @.str.30)
  store i32 %274, ptr %3, align 4, !tbaa !30
  store i32 0, ptr %4, align 4, !tbaa !30
  br label %275

275:                                              ; preds = %315, %261
  %276 = load i32, ptr %4, align 4, !tbaa !30
  %277 = load i32, ptr %3, align 4, !tbaa !30
  %278 = icmp slt i32 %276, %277
  br i1 %278, label %279, label %318

279:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %280 = getelementptr inbounds %class.McPATComponent, ptr %12, i32 0, i32 2
  %281 = load ptr, ptr %280, align 8, !tbaa !9
  %282 = call noundef ptr @_ZNK7XMLNode15getChildNodePtrEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef @.str.30, ptr noundef %4)
  store ptr %282, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %283 = load ptr, ptr %9, align 8, !tbaa !5
  %284 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef @.str.5, ptr noundef null)
  store ptr %284, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %285 = load ptr, ptr %9, align 8, !tbaa !5
  %286 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef @.str.6, ptr noundef null)
  store ptr %286, ptr %11, align 8, !tbaa !5
  %287 = load ptr, ptr %10, align 8, !tbaa !5
  %288 = icmp ne ptr %287, null
  br i1 %288, label %292, label %289

289:                                              ; preds = %279
  %290 = load ptr, ptr %9, align 8, !tbaa !5
  %291 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef @.str.7, ptr noundef null)
  call void @_ZN14McPATComponent19warnMissingStatNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %12, ptr noundef %291)
  br label %314

292:                                              ; preds = %279
  %293 = load ptr, ptr %10, align 8, !tbaa !5
  %294 = call i32 @strcmp(ptr noundef %293, ptr noundef @.str.31) #9
  %295 = icmp eq i32 %294, 0
  br i1 %295, label %296, label %301

296:                                              ; preds = %292
  %297 = load ptr, ptr %11, align 8, !tbaa !5
  %298 = call double @atof(ptr noundef %297) #9
  %299 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 11
  %300 = getelementptr inbounds %class.OnChipNetworkStatistics, ptr %299, i32 0, i32 0
  store double %298, ptr %300, align 8, !tbaa !61
  br label %313

301:                                              ; preds = %292
  %302 = load ptr, ptr %10, align 8, !tbaa !5
  %303 = call i32 @strcmp(ptr noundef %302, ptr noundef @.str.32) #9
  %304 = icmp eq i32 %303, 0
  br i1 %304, label %305, label %310

305:                                              ; preds = %301
  %306 = load ptr, ptr %11, align 8, !tbaa !5
  %307 = call double @atof(ptr noundef %306) #9
  %308 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 11
  %309 = getelementptr inbounds %class.OnChipNetworkStatistics, ptr %308, i32 0, i32 1
  store double %307, ptr %309, align 8, !tbaa !62
  br label %312

310:                                              ; preds = %301
  %311 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN14McPATComponent20warnUnrecognizedStatEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %12, ptr noundef %311)
  br label %312

312:                                              ; preds = %310, %305
  br label %313

313:                                              ; preds = %312, %296
  br label %314

314:                                              ; preds = %313, %289
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  br label %315

315:                                              ; preds = %314
  %316 = load i32, ptr %4, align 4, !tbaa !30
  %317 = add nsw i32 %316, 1
  store i32 %317, ptr %4, align 4, !tbaa !30
  br label %275, !llvm.loop !63

318:                                              ; preds = %275
  %319 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %320 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %319, i32 0, i32 0
  %321 = load double, ptr %320, align 8, !tbaa !37
  %322 = getelementptr inbounds %class.McPATComponent, ptr %12, i32 0, i32 5
  store double %321, ptr %322, align 8, !tbaa !64
  %323 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %324 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %323, i32 0, i32 2
  %325 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %326 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %325, i32 0, i32 3
  %327 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %324, ptr noundef nonnull align 4 dereferenceable(4) %326)
  %328 = load i32, ptr %327, align 4, !tbaa !30
  %329 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %330 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %329, i32 0, i32 4
  store i32 %328, ptr %330, align 4, !tbaa !65
  %331 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %332 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %331, i32 0, i32 16
  %333 = load i8, ptr %332, align 1, !tbaa !31, !range !66, !noundef !67
  %334 = trunc i8 %333 to i1
  br i1 %334, label %335, label %347

335:                                              ; preds = %318
  %336 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %337 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %336, i32 0, i32 2
  %338 = load i32, ptr %337, align 4, !tbaa !42
  %339 = sub nsw i32 %338, 1
  %340 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %341 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %340, i32 0, i32 3
  %342 = load i32, ptr %341, align 8, !tbaa !43
  %343 = sub nsw i32 %342, 1
  %344 = add nsw i32 %339, %343
  %345 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %346 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %345, i32 0, i32 5
  store i32 %344, ptr %346, align 8, !tbaa !44
  br label %347

347:                                              ; preds = %335, %318
  %348 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %349 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %348, i32 0, i32 8
  %350 = load i32, ptr %349, align 4, !tbaa !45
  %351 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %352 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %351, i32 0, i32 9
  %353 = load i32, ptr %352, align 8, !tbaa !46
  %354 = mul nsw i32 %350, %353
  %355 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %356 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %355, i32 0, i32 10
  store i32 %354, ptr %356, align 4, !tbaa !68
  %357 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %358 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %357, i32 0, i32 13
  %359 = load double, ptr %358, align 8, !tbaa !47
  %360 = fcmp ole double %359, 1.000000e+00
  br i1 %360, label %361, label %362

361:                                              ; preds = %347
  br label %364

362:                                              ; preds = %347
  call void @__assert_fail(ptr noundef @.str.33, ptr noundef @.str.34, i32 noundef 256, ptr noundef @__PRETTY_FUNCTION__._ZN13OnChipNetwork15set_param_statsEv) #10
  unreachable

363:                                              ; No predecessors!
  br label %364

364:                                              ; preds = %363, %361
  %365 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 10
  %366 = getelementptr inbounds %class.OnChipNetworkParameters, ptr %365, i32 0, i32 14
  %367 = load double, ptr %366, align 8, !tbaa !48
  %368 = fcmp ole double %367, 1.000000e+00
  br i1 %368, label %369, label %370

369:                                              ; preds = %364
  br label %372

370:                                              ; preds = %364
  call void @__assert_fail(ptr noundef @.str.35, ptr noundef @.str.34, i32 noundef 257, ptr noundef @__PRETTY_FUNCTION__._ZN13OnChipNetwork15set_param_statsEv) #10
  unreachable

371:                                              ; No predecessors!
  br label %372

372:                                              ; preds = %371, %369
  %373 = getelementptr inbounds %class.OnChipNetwork, ptr %12, i32 0, i32 6
  %374 = load double, ptr %373, align 8, !tbaa !39
  %375 = fcmp ogt double %374, 0.000000e+00
  br i1 %375, label %376, label %377

376:                                              ; preds = %372
  br label %379

377:                                              ; preds = %372
  call void @__assert_fail(ptr noundef @.str.36, ptr noundef @.str.34, i32 noundef 258, ptr noundef @__PRETTY_FUNCTION__._ZN13OnChipNetwork15set_param_statsEv) #10
  unreachable

378:                                              ; No predecessors!
  br label %379

379:                                              ; preds = %378, %376
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #8
  ret void
}

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

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

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

declare noundef i32 @_ZNK7XMLNode10nChildNodeEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

declare noundef ptr @_ZNK7XMLNode15getChildNodePtrEPKcPi(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef) #3

declare noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef) #3

declare void @_ZN14McPATComponent20warnMissingParamNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352), ptr noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #5

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare double @atof(ptr noundef nonnull) #5

declare void @_ZN14McPATComponent21warnUnrecognizedParamEPKc(ptr noundef nonnull align 8 dereferenceable(1352), ptr noundef) #3

declare void @_ZN14McPATComponent19warnMissingStatNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352), ptr noundef) #3

declare void @_ZN14McPATComponent20warnUnrecognizedStatEPKc(ptr noundef nonnull align 8 dereferenceable(1352), ptr noundef) #3

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { "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 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { nounwind willreturn memory(read) }
attributes #10 = { noreturn 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, !6, i64 288}
!10 = !{!"_ZTS14McPATComponent", !11, i64 8, !6, i64 288, !16, i64 296, !20, i64 664, !13, i64 696, !23, i64 704, !27, i64 728, !28, i64 776, !28, i64 944, !14, i64 1112, !14, i64 1232}
!11 = !{!"_ZTS9Component", !12, i64 0, !14, i64 24, !14, i64 144, !13, i64 264, !13, i64 272}
!12 = !{!"_ZTS4Area", !13, i64 0, !13, i64 8, !13, i64 16}
!13 = !{!"double", !7, i64 0}
!14 = !{!"_ZTS8powerDef", !15, i64 0, !15, i64 40, !15, i64 80}
!15 = !{!"_ZTS15powerComponents", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32}
!16 = !{!"_ZTS14InputParameter", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12, !17, i64 16, !18, i64 20, !17, i64 24, !17, i64 28, !17, i64 32, !17, i64 36, !17, i64 40, !17, i64 44, !13, i64 48, !13, i64 56, !17, i64 64, !17, i64 68, !17, i64 72, !17, i64 76, !17, i64 80, !18, i64 84, !18, i64 85, !18, i64 86, !18, i64 87, !18, i64 88, !17, i64 92, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !17, i64 136, !17, i64 140, !17, i64 144, !17, i64 148, !19, i64 152, !17, i64 156, !18, i64 160, !17, i64 164, !17, i64 168, !17, i64 172, !17, i64 176, !17, i64 180, !17, i64 184, !17, i64 188, !18, i64 192, !17, i64 196, !17, i64 200, !17, i64 204, !17, i64 208, !17, i64 212, !17, i64 216, !17, i64 220, !17, i64 224, !17, i64 228, !17, i64 232, !17, i64 236, !17, i64 240, !17, i64 244, !17, i64 248, !17, i64 252, !17, i64 256, !17, i64 260, !17, i64 264, !17, i64 268, !17, i64 272, !17, i64 276, !17, i64 280, !17, i64 284, !17, i64 288, !17, i64 292, !17, i64 296, !18, i64 300, !17, i64 304, !17, i64 308, !17, i64 312, !18, i64 316, !18, i64 317, !17, i64 320, !17, i64 324, !18, i64 328, !13, i64 336, !13, i64 344, !18, i64 352, !17, i64 356, !17, i64 360, !18, i64 364}
!17 = !{!"int", !7, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = !{!"_ZTS9Wire_type", !7, i64 0}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !22, i64 8, !7, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!"_ZTSSt6vectorIP14McPATComponentSaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIP14McPATComponentSaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIP14McPATComponentSaIS1_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIP14McPATComponentSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTS11McPATOutput", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40}
!28 = !{!"_ZTS8statsDef", !29, i64 0, !29, i64 24, !29, i64 48, !29, i64 72, !29, i64 96, !29, i64 120, !29, i64 144}
!29 = !{!"_ZTS15statsComponents", !13, i64 0, !13, i64 8, !13, i64 16}
!30 = !{!17, !17, i64 0}
!31 = !{!32, !18, i64 2137}
!32 = !{!"_ZTS13OnChipNetwork", !10, i64 0, !6, i64 1352, !6, i64 1360, !11, i64 1368, !17, i64 1648, !16, i64 1656, !13, i64 2024, !13, i64 2032, !13, i64 2040, !13, i64 2048, !33, i64 2056, !34, i64 2176, !35, i64 2192, !28, i64 10392, !18, i64 10560, !18, i64 10561, !20, i64 10568}
!33 = !{!"_ZTS23OnChipNetworkParameters", !13, i64 0, !17, i64 8, !17, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28, !17, i64 32, !17, i64 36, !17, i64 40, !17, i64 44, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !18, i64 80, !18, i64 81, !13, i64 88, !13, i64 96, !13, i64 104, !17, i64 112}
!34 = !{!"_ZTS23OnChipNetworkStatistics", !13, i64 0, !13, i64 8}
!35 = !{!"_ZTS9uca_org_t", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !14, i64 48, !13, i64 168, !13, i64 176, !13, i64 184, !7, i64 192, !13, i64 296, !18, i64 304, !36, i64 312, !36, i64 4256}
!36 = !{!"_ZTS17results_mem_array", !17, i64 0, !17, i64 4, !13, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28, !17, i64 32, !17, 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, !14, i64 272, !14, i64 392, !14, i64 512, !14, i64 632, !14, i64 752, !14, i64 872, !14, i64 992, !14, i64 1112, !14, i64 1232, !14, i64 1352, !14, i64 1472, !14, i64 1592, !14, i64 1712, !14, i64 1832, !14, i64 1952, !14, i64 2072, !14, i64 2192, !14, i64 2312, !14, i64 2432, !14, i64 2552, !14, i64 2672, !14, i64 2792, !14, i64 2912, !14, i64 3032, !14, i64 3152, !14, i64 3272, !14, i64 3392, !14, i64 3512, !14, 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}
!37 = !{!32, !13, i64 2056}
!38 = !{!32, !17, i64 2064}
!39 = !{!32, !13, i64 2024}
!40 = !{!32, !13, i64 2104}
!41 = !{!32, !13, i64 2112}
!42 = !{!32, !17, i64 2068}
!43 = !{!32, !17, i64 2072}
!44 = !{!32, !17, i64 2080}
!45 = !{!32, !17, i64 2092}
!46 = !{!32, !17, i64 2096}
!47 = !{!32, !13, i64 2120}
!48 = !{!32, !13, i64 2128}
!49 = !{!32, !18, i64 2136}
!50 = !{!32, !17, i64 2084}
!51 = !{!32, !17, i64 2088}
!52 = !{!32, !13, i64 2144}
!53 = !{!32, !13, i64 2152}
!54 = !{!32, !13, i64 2160}
!55 = !{!32, !17, i64 2168}
!56 = !{!32, !19, i64 1808}
!57 = distinct !{!57, !58}
!58 = !{!"llvm.loop.mustprogress"}
!59 = !{!32, !17, i64 1800}
!60 = !{!32, !17, i64 1804}
!61 = !{!32, !13, i64 2176}
!62 = !{!32, !13, i64 2184}
!63 = distinct !{!63, !58}
!64 = !{!10, !13, i64 696}
!65 = !{!32, !17, i64 2076}
!66 = !{i8 0, i8 2}
!67 = !{}
!68 = !{!32, !17, i64 2100}


; 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"

@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [60 x i8], align 1
@__PRETTY_FUNCTION__._ZN13OnChipNetwork15set_param_statsEv = external hidden unnamed_addr constant [38 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13OnChipNetwork15set_param_statsEv(ptr noundef nonnull align 8 dereferenceable(10600) %0) local_unnamed_addr #0 align 2 {
  %2 = alloca i32, align 4
  %3 = getelementptr inbounds i8, ptr %0, i64 2056
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %3, i8 0, i64 120, i1 false)
  %4 = getelementptr inbounds i8, ptr %0, i64 288
  %5 = load ptr, ptr %4, align 8, !tbaa !5
  %6 = tail call noundef i32 @_ZNK7XMLNode10nChildNodeEPKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull @.str.4)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #8
  store i32 0, ptr %2, align 4, !tbaa !29
  %7 = icmp sgt i32 %6, 0
  br i1 %7, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %1
  %8 = getelementptr inbounds i8, ptr %0, i64 1808
  %9 = getelementptr inbounds i8, ptr %0, i64 2168
  %10 = getelementptr inbounds i8, ptr %0, i64 2160
  %11 = getelementptr inbounds i8, ptr %0, i64 2152
  %12 = getelementptr inbounds i8, ptr %0, i64 2144
  %13 = getelementptr inbounds i8, ptr %0, i64 2088
  %14 = getelementptr inbounds i8, ptr %0, i64 2084
  %15 = getelementptr inbounds i8, ptr %0, i64 2136
  %16 = getelementptr inbounds i8, ptr %0, i64 2128
  %17 = getelementptr inbounds i8, ptr %0, i64 2120
  %18 = getelementptr inbounds i8, ptr %0, i64 2096
  %19 = getelementptr inbounds i8, ptr %0, i64 2092
  %20 = getelementptr inbounds i8, ptr %0, i64 2080
  %21 = getelementptr inbounds i8, ptr %0, i64 2072
  %22 = getelementptr inbounds i8, ptr %0, i64 2068
  %23 = getelementptr inbounds i8, ptr %0, i64 2112
  %24 = getelementptr inbounds i8, ptr %0, i64 2104
  %25 = getelementptr inbounds i8, ptr %0, i64 2024
  %26 = getelementptr inbounds i8, ptr %0, i64 2064
  %27 = getelementptr inbounds i8, ptr %0, i64 2137
  br label %28

28:                                               ; preds = %.lr.ph, %150
  %.066 = phi i32 [ undef, %.lr.ph ], [ %.1, %150 ]
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = call noundef ptr @_ZNK7XMLNode15getChildNodePtrEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull @.str.4, ptr noundef nonnull %2)
  %31 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull @.str.5, ptr noundef null)
  %32 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull @.str.6, ptr noundef null)
  %.not65 = icmp eq ptr %31, null
  br i1 %.not65, label %33, label %35

33:                                               ; preds = %28
  %34 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull @.str.7, ptr noundef null)
  call void @_ZN14McPATComponent20warnMissingParamNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %0, ptr noundef %34)
  br label %150

35:                                               ; preds = %28
  %36 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.8) #9
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %38, label %42

38:                                               ; preds = %35
  %39 = call i32 @atoi(ptr nocapture noundef %32) #9
  %40 = icmp ne i32 %39, 0
  %41 = zext i1 %40 to i8
  store i8 %41, ptr %27, align 1, !tbaa !30
  br label %150

42:                                               ; preds = %35
  %43 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.9) #9
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %47

45:                                               ; preds = %42
  %46 = call double @atof(ptr noundef %32) #9
  store double %46, ptr %3, align 8, !tbaa !36
  br label %150

47:                                               ; preds = %42
  %48 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.10) #9
  %49 = icmp eq i32 %48, 0
  br i1 %49, label %50, label %52

50:                                               ; preds = %47
  %51 = call i32 @atoi(ptr nocapture noundef %32) #9
  store i32 %51, ptr %26, align 8, !tbaa !37
  br label %150

52:                                               ; preds = %47
  %53 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.11) #9
  %54 = icmp eq i32 %53, 0
  br i1 %54, label %55, label %57

55:                                               ; preds = %52
  %56 = call double @atof(ptr noundef %32) #9
  store double %56, ptr %25, align 8, !tbaa !38
  br label %150

57:                                               ; preds = %52
  %58 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.12) #9
  %59 = icmp eq i32 %58, 0
  br i1 %59, label %60, label %62

60:                                               ; preds = %57
  %61 = call double @atof(ptr noundef %32) #9
  store double %61, ptr %24, align 8, !tbaa !39
  br label %150

62:                                               ; preds = %57
  %63 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.13) #9
  %64 = icmp eq i32 %63, 0
  br i1 %64, label %65, label %67

65:                                               ; preds = %62
  %66 = call double @atof(ptr noundef %32) #9
  store double %66, ptr %23, align 8, !tbaa !40
  br label %150

67:                                               ; preds = %62
  %68 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.14) #9
  %69 = icmp eq i32 %68, 0
  br i1 %69, label %70, label %72

70:                                               ; preds = %67
  %71 = call i32 @atoi(ptr nocapture noundef %32) #9
  store i32 %71, ptr %22, align 4, !tbaa !41
  br label %150

72:                                               ; preds = %67
  %73 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.15) #9
  %74 = icmp eq i32 %73, 0
  br i1 %74, label %75, label %77

75:                                               ; preds = %72
  %76 = call i32 @atoi(ptr nocapture noundef %32) #9
  store i32 %76, ptr %21, align 8, !tbaa !42
  br label %150

77:                                               ; preds = %72
  %78 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.16) #9
  %79 = icmp eq i32 %78, 0
  br i1 %79, label %80, label %82

80:                                               ; preds = %77
  %81 = call i32 @atoi(ptr nocapture noundef %32) #9
  store i32 %81, ptr %20, align 8, !tbaa !43
  br label %150

82:                                               ; preds = %77
  %83 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.17) #9
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %87

85:                                               ; preds = %82
  %86 = call i32 @atoi(ptr nocapture noundef %32) #9
  store i32 %86, ptr %19, align 4, !tbaa !44
  br label %150

87:                                               ; preds = %82
  %88 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.18) #9
  %89 = icmp eq i32 %88, 0
  br i1 %89, label %90, label %92

90:                                               ; preds = %87
  %91 = call i32 @atoi(ptr nocapture noundef %32) #9
  store i32 %91, ptr %18, align 8, !tbaa !45
  br label %150

92:                                               ; preds = %87
  %93 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.19) #9
  %94 = icmp eq i32 %93, 0
  br i1 %94, label %95, label %97

95:                                               ; preds = %92
  %96 = call double @atof(ptr noundef %32) #9
  store double %96, ptr %17, align 8, !tbaa !46
  br label %150

97:                                               ; preds = %92
  %98 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.20) #9
  %99 = icmp eq i32 %98, 0
  br i1 %99, label %100, label %102

100:                                              ; preds = %97
  %101 = call double @atof(ptr noundef %32) #9
  store double %101, ptr %16, align 8, !tbaa !47
  br label %150

102:                                              ; preds = %97
  %103 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.21) #9
  %104 = icmp eq i32 %103, 0
  br i1 %104, label %105, label %109

105:                                              ; preds = %102
  %106 = call i32 @atoi(ptr nocapture noundef %32) #9
  %107 = icmp ne i32 %106, 0
  %108 = zext i1 %107 to i8
  store i8 %108, ptr %15, align 8, !tbaa !48
  br label %150

109:                                              ; preds = %102
  %110 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.22) #9
  %111 = icmp eq i32 %110, 0
  br i1 %111, label %112, label %114

112:                                              ; preds = %109
  %113 = call i32 @atoi(ptr nocapture noundef %32) #9
  store i32 %113, ptr %14, align 4, !tbaa !49
  br label %150

114:                                              ; preds = %109
  %115 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.23) #9
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %117, label %119

117:                                              ; preds = %114
  %118 = call i32 @atoi(ptr nocapture noundef %32) #9
  store i32 %118, ptr %13, align 8, !tbaa !50
  br label %150

119:                                              ; preds = %114
  %120 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.24) #9
  %121 = icmp eq i32 %120, 0
  br i1 %121, label %122, label %124

122:                                              ; preds = %119
  %123 = call double @atof(ptr noundef %32) #9
  store double %123, ptr %12, align 8, !tbaa !51
  br label %150

124:                                              ; preds = %119
  %125 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.25) #9
  %126 = icmp eq i32 %125, 0
  br i1 %126, label %127, label %129

127:                                              ; preds = %124
  %128 = call double @atof(ptr noundef %32) #9
  store double %128, ptr %11, align 8, !tbaa !52
  br label %150

129:                                              ; preds = %124
  %130 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.26) #9
  %131 = icmp eq i32 %130, 0
  br i1 %131, label %132, label %134

132:                                              ; preds = %129
  %133 = call double @atof(ptr noundef %32) #9
  store double %133, ptr %10, align 8, !tbaa !53
  br label %150

134:                                              ; preds = %129
  %135 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.27) #9
  %136 = icmp eq i32 %135, 0
  br i1 %136, label %137, label %139

137:                                              ; preds = %134
  %138 = call i32 @atoi(ptr nocapture noundef %32) #9
  store i32 %138, ptr %9, align 8, !tbaa !54
  br label %150

139:                                              ; preds = %134
  %140 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.28) #9
  %141 = icmp eq i32 %140, 0
  br i1 %141, label %142, label %144

142:                                              ; preds = %139
  %143 = call i32 @atoi(ptr nocapture noundef %32) #9
  br label %150

144:                                              ; preds = %139
  %145 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.29) #9
  %146 = icmp eq i32 %145, 0
  br i1 %146, label %147, label %149

147:                                              ; preds = %144
  %148 = call i32 @atoi(ptr nocapture noundef %32) #9
  store i32 %148, ptr %8, align 8, !tbaa !55
  br label %150

149:                                              ; preds = %144
  call void @_ZN14McPATComponent21warnUnrecognizedParamEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %0, ptr noundef nonnull %31)
  br label %150

150:                                              ; preds = %38, %50, %60, %70, %80, %90, %100, %112, %122, %132, %142, %149, %147, %137, %127, %117, %105, %95, %85, %75, %65, %55, %45, %33
  %.1 = phi i32 [ %.066, %38 ], [ %.066, %45 ], [ %.066, %50 ], [ %.066, %55 ], [ %.066, %60 ], [ %.066, %65 ], [ %.066, %70 ], [ %.066, %75 ], [ %.066, %80 ], [ %.066, %85 ], [ %.066, %90 ], [ %.066, %95 ], [ %.066, %100 ], [ %.066, %105 ], [ %.066, %112 ], [ %.066, %117 ], [ %.066, %122 ], [ %.066, %127 ], [ %.066, %132 ], [ %.066, %137 ], [ %143, %142 ], [ %.066, %147 ], [ %.066, %149 ], [ %.066, %33 ]
  %151 = load i32, ptr %2, align 4, !tbaa !29
  %152 = add nsw i32 %151, 1
  store i32 %152, ptr %2, align 4, !tbaa !29
  %153 = icmp slt i32 %152, %6
  br i1 %153, label %28, label %._crit_edge, !llvm.loop !56

._crit_edge:                                      ; preds = %150, %1
  %.0.lcssa = phi i32 [ undef, %1 ], [ %.1, %150 ]
  %154 = load double, ptr %3, align 8, !tbaa !36
  %155 = fmul double %154, 1.000000e+06
  store double %155, ptr %3, align 8, !tbaa !36
  %156 = getelementptr inbounds i8, ptr %0, i64 1800
  store i32 %.0.lcssa, ptr %156, align 8, !tbaa !58
  %157 = getelementptr inbounds i8, ptr %0, i64 1804
  store i32 %.0.lcssa, ptr %157, align 4, !tbaa !59
  %158 = load ptr, ptr %4, align 8, !tbaa !5
  %159 = call noundef i32 @_ZNK7XMLNode10nChildNodeEPKc(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull @.str.30)
  store i32 0, ptr %2, align 4, !tbaa !29
  %160 = icmp sgt i32 %159, 0
  br i1 %160, label %.lr.ph68, label %._crit_edge69

.lr.ph68:                                         ; preds = %._crit_edge
  %161 = getelementptr inbounds i8, ptr %0, i64 2184
  %162 = getelementptr inbounds i8, ptr %0, i64 2176
  br label %163

163:                                              ; preds = %.lr.ph68, %181
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = call noundef ptr @_ZNK7XMLNode15getChildNodePtrEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull @.str.30, ptr noundef nonnull %2)
  %166 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull @.str.5, ptr noundef null)
  %167 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull @.str.6, ptr noundef null)
  %.not = icmp eq ptr %166, null
  br i1 %.not, label %168, label %170

168:                                              ; preds = %163
  %169 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull @.str.7, ptr noundef null)
  call void @_ZN14McPATComponent19warnMissingStatNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %0, ptr noundef %169)
  br label %181

170:                                              ; preds = %163
  %171 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %166, ptr noundef nonnull dereferenceable(1) @.str.31) #9
  %172 = icmp eq i32 %171, 0
  br i1 %172, label %173, label %175

173:                                              ; preds = %170
  %174 = call double @atof(ptr noundef %167) #9
  store double %174, ptr %162, align 8, !tbaa !60
  br label %181

175:                                              ; preds = %170
  %176 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %166, ptr noundef nonnull dereferenceable(1) @.str.32) #9
  %177 = icmp eq i32 %176, 0
  br i1 %177, label %178, label %180

178:                                              ; preds = %175
  %179 = call double @atof(ptr noundef %167) #9
  store double %179, ptr %161, align 8, !tbaa !61
  br label %181

180:                                              ; preds = %175
  call void @_ZN14McPATComponent20warnUnrecognizedStatEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %0, ptr noundef nonnull %166)
  br label %181

181:                                              ; preds = %173, %180, %178, %168
  %182 = load i32, ptr %2, align 4, !tbaa !29
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr %2, align 4, !tbaa !29
  %184 = icmp slt i32 %183, %159
  br i1 %184, label %163, label %._crit_edge69, !llvm.loop !62

._crit_edge69:                                    ; preds = %181, %._crit_edge
  %185 = load double, ptr %3, align 8, !tbaa !36
  %186 = getelementptr inbounds i8, ptr %0, i64 696
  store double %185, ptr %186, align 8, !tbaa !63
  %187 = getelementptr inbounds i8, ptr %0, i64 2068
  %188 = getelementptr inbounds i8, ptr %0, i64 2072
  %189 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %187, ptr noundef nonnull align 4 dereferenceable(4) %188)
  %190 = load i32, ptr %189, align 4, !tbaa !29
  %191 = getelementptr inbounds i8, ptr %0, i64 2076
  store i32 %190, ptr %191, align 4, !tbaa !64
  %192 = getelementptr inbounds i8, ptr %0, i64 2137
  %193 = load i8, ptr %192, align 1, !tbaa !30, !range !65, !noundef !66
  %194 = trunc nuw i8 %193 to i1
  br i1 %194, label %195, label %201

195:                                              ; preds = %._crit_edge69
  %196 = load i32, ptr %187, align 4, !tbaa !41
  %197 = load i32, ptr %188, align 8, !tbaa !42
  %198 = add i32 %196, -2
  %199 = add i32 %198, %197
  %200 = getelementptr inbounds i8, ptr %0, i64 2080
  store i32 %199, ptr %200, align 8, !tbaa !43
  br label %201

201:                                              ; preds = %195, %._crit_edge69
  %202 = getelementptr inbounds i8, ptr %0, i64 2092
  %203 = load i32, ptr %202, align 4, !tbaa !44
  %204 = getelementptr inbounds i8, ptr %0, i64 2096
  %205 = load i32, ptr %204, align 8, !tbaa !45
  %206 = mul nsw i32 %205, %203
  %207 = getelementptr inbounds i8, ptr %0, i64 2100
  store i32 %206, ptr %207, align 4, !tbaa !67
  %208 = getelementptr inbounds i8, ptr %0, i64 2120
  %209 = load double, ptr %208, align 8, !tbaa !46
  %210 = fcmp ugt double %209, 1.000000e+00
  br i1 %210, label %211, label %212

211:                                              ; preds = %201
  call void @__assert_fail(ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.34, i32 noundef 256, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13OnChipNetwork15set_param_statsEv) #10
  unreachable

212:                                              ; preds = %201
  %213 = getelementptr inbounds i8, ptr %0, i64 2128
  %214 = load double, ptr %213, align 8, !tbaa !47
  %215 = fcmp ugt double %214, 1.000000e+00
  br i1 %215, label %216, label %217

216:                                              ; preds = %212
  call void @__assert_fail(ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.34, i32 noundef 257, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13OnChipNetwork15set_param_statsEv) #10
  unreachable

217:                                              ; preds = %212
  %218 = getelementptr inbounds i8, ptr %0, i64 2024
  %219 = load double, ptr %218, align 8, !tbaa !38
  %220 = fcmp ogt double %219, 0.000000e+00
  br i1 %220, label %222, label %221

221:                                              ; preds = %217
  call void @__assert_fail(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.34, i32 noundef 258, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13OnChipNetwork15set_param_statsEv) #10
  unreachable

222:                                              ; preds = %217
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #8
  ret void
}

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

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

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

declare noundef i32 @_ZNK7XMLNode10nChildNodeEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

declare noundef ptr @_ZNK7XMLNode15getChildNodePtrEPKcPi(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef) local_unnamed_addr #3

declare noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN14McPATComponent20warnMissingParamNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare double @atof(ptr nocapture noundef nonnull) local_unnamed_addr #5

declare void @_ZN14McPATComponent21warnUnrecognizedParamEPKc(ptr noundef nonnull align 8 dereferenceable(1352), ptr noundef) local_unnamed_addr #3

declare void @_ZN14McPATComponent19warnMissingStatNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352), ptr noundef) local_unnamed_addr #3

declare void @_ZN14McPATComponent20warnUnrecognizedStatEPKc(ptr noundef nonnull align 8 dereferenceable(1352), ptr noundef) local_unnamed_addr #3

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { "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 nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { nounwind willreturn memory(read) }
attributes #10 = { noreturn 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, !14, i64 288}
!6 = !{!"_ZTS14McPATComponent", !7, i64 8, !14, i64 288, !15, i64 296, !19, i64 664, !9, i64 696, !22, i64 704, !26, i64 728, !27, i64 776, !27, i64 944, !12, i64 1112, !12, i64 1232}
!7 = !{!"_ZTS9Component", !8, i64 0, !12, i64 24, !12, i64 144, !9, i64 264, !9, i64 272}
!8 = !{!"_ZTS4Area", !9, i64 0, !9, i64 8, !9, i64 16}
!9 = !{!"double", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTS8powerDef", !13, i64 0, !13, i64 40, !13, i64 80}
!13 = !{!"_ZTS15powerComponents", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32}
!14 = !{!"any pointer", !10, i64 0}
!15 = !{!"_ZTS14InputParameter", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12, !16, i64 16, !17, i64 20, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !9, i64 48, !9, i64 56, !16, i64 64, !16, i64 68, !16, i64 72, !16, i64 76, !16, i64 80, !17, i64 84, !17, i64 85, !17, i64 86, !17, i64 87, !17, i64 88, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !16, i64 144, !16, i64 148, !18, i64 152, !16, i64 156, !17, i64 160, !16, i64 164, !16, i64 168, !16, i64 172, !16, i64 176, !16, i64 180, !16, i64 184, !16, i64 188, !17, i64 192, !16, i64 196, !16, i64 200, !16, i64 204, !16, i64 208, !16, i64 212, !16, i64 216, !16, i64 220, !16, i64 224, !16, i64 228, !16, i64 232, !16, i64 236, !16, i64 240, !16, i64 244, !16, i64 248, !16, i64 252, !16, i64 256, !16, i64 260, !16, i64 264, !16, i64 268, !16, i64 272, !16, i64 276, !16, i64 280, !16, i64 284, !16, i64 288, !16, i64 292, !16, i64 296, !17, i64 300, !16, i64 304, !16, i64 308, !16, i64 312, !17, i64 316, !17, i64 317, !16, i64 320, !16, i64 324, !17, i64 328, !9, i64 336, !9, i64 344, !17, i64 352, !16, i64 356, !16, i64 360, !17, i64 364}
!16 = !{!"int", !10, i64 0}
!17 = !{!"bool", !10, i64 0}
!18 = !{!"_ZTS9Wire_type", !10, i64 0}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !20, i64 0, !21, i64 8, !10, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !14, i64 0}
!21 = !{!"long", !10, i64 0}
!22 = !{!"_ZTSSt6vectorIP14McPATComponentSaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIP14McPATComponentSaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIP14McPATComponentSaIS1_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIP14McPATComponentSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!26 = !{!"_ZTS11McPATOutput", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40}
!27 = !{!"_ZTS8statsDef", !28, i64 0, !28, i64 24, !28, i64 48, !28, i64 72, !28, i64 96, !28, i64 120, !28, i64 144}
!28 = !{!"_ZTS15statsComponents", !9, i64 0, !9, i64 8, !9, i64 16}
!29 = !{!16, !16, i64 0}
!30 = !{!31, !17, i64 2137}
!31 = !{!"_ZTS13OnChipNetwork", !6, i64 0, !14, i64 1352, !14, i64 1360, !7, i64 1368, !16, i64 1648, !15, i64 1656, !9, i64 2024, !9, i64 2032, !9, i64 2040, !9, i64 2048, !32, i64 2056, !33, i64 2176, !34, i64 2192, !27, i64 10392, !17, i64 10560, !17, i64 10561, !19, i64 10568}
!32 = !{!"_ZTS23OnChipNetworkParameters", !9, i64 0, !16, i64 8, !16, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !9, i64 48, !9, i64 56, !9, i64 64, !9, i64 72, !17, i64 80, !17, i64 81, !9, i64 88, !9, i64 96, !9, i64 104, !16, i64 112}
!33 = !{!"_ZTS23OnChipNetworkStatistics", !9, i64 0, !9, i64 8}
!34 = !{!"_ZTS9uca_org_t", !14, i64 0, !14, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !12, i64 48, !9, i64 168, !9, i64 176, !9, i64 184, !10, i64 192, !9, i64 296, !17, i64 304, !35, i64 312, !35, i64 4256}
!35 = !{!"_ZTS17results_mem_array", !16, i64 0, !16, i64 4, !9, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !9, i64 40, !9, i64 48, !9, i64 56, !9, i64 64, !9, i64 72, !9, i64 80, !9, i64 88, !9, i64 96, !9, i64 104, !9, i64 112, !9, i64 120, !9, i64 128, !9, i64 136, !9, i64 144, !9, i64 152, !9, i64 160, !9, i64 168, !9, i64 176, !9, i64 184, !9, i64 192, !9, i64 200, !9, i64 208, !9, i64 216, !9, i64 224, !9, i64 232, !9, i64 240, !9, i64 248, !9, i64 256, !9, i64 264, !12, i64 272, !12, i64 392, !12, i64 512, !12, i64 632, !12, i64 752, !12, i64 872, !12, i64 992, !12, i64 1112, !12, i64 1232, !12, i64 1352, !12, i64 1472, !12, i64 1592, !12, i64 1712, !12, i64 1832, !12, i64 1952, !12, i64 2072, !12, i64 2192, !12, i64 2312, !12, i64 2432, !12, i64 2552, !12, i64 2672, !12, i64 2792, !12, i64 2912, !12, i64 3032, !12, i64 3152, !12, i64 3272, !12, i64 3392, !12, i64 3512, !12, i64 3632, !9, i64 3752, !9, i64 3760, !9, i64 3768, !9, i64 3776, !9, i64 3784, !9, i64 3792, !9, i64 3800, !9, i64 3808, !9, i64 3816, !9, i64 3824, !9, i64 3832, !9, i64 3840, !9, i64 3848, !9, i64 3856, !9, i64 3864, !9, i64 3872, !9, i64 3880, !9, i64 3888, !9, i64 3896, !9, i64 3904, !9, i64 3912, !9, i64 3920, !9, i64 3928, !9, i64 3936}
!36 = !{!31, !9, i64 2056}
!37 = !{!31, !16, i64 2064}
!38 = !{!31, !9, i64 2024}
!39 = !{!31, !9, i64 2104}
!40 = !{!31, !9, i64 2112}
!41 = !{!31, !16, i64 2068}
!42 = !{!31, !16, i64 2072}
!43 = !{!31, !16, i64 2080}
!44 = !{!31, !16, i64 2092}
!45 = !{!31, !16, i64 2096}
!46 = !{!31, !9, i64 2120}
!47 = !{!31, !9, i64 2128}
!48 = !{!31, !17, i64 2136}
!49 = !{!31, !16, i64 2084}
!50 = !{!31, !16, i64 2088}
!51 = !{!31, !9, i64 2144}
!52 = !{!31, !9, i64 2152}
!53 = !{!31, !9, i64 2160}
!54 = !{!31, !16, i64 2168}
!55 = !{!31, !18, i64 1808}
!56 = distinct !{!56, !57}
!57 = !{!"llvm.loop.mustprogress"}
!58 = !{!31, !16, i64 1800}
!59 = !{!31, !16, i64 1804}
!60 = !{!31, !9, i64 2176}
!61 = !{!31, !9, i64 2184}
!62 = distinct !{!62, !57}
!63 = !{!6, !9, i64 696}
!64 = !{!31, !16, i64 2076}
!65 = !{i8 0, i8 2}
!66 = !{}
!67 = !{!31, !16, i64 2100}


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