; LLVM IR from gem5/gem5 :: ext/mcpat/bus_interconnect.ll (ZN15BusInterconnect15set_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.BusInterconnect = type { %class.McPATComponent, ptr, i32, %class.InputParameter, double, double, double, double, %class.BusInterconnectParameters, %class.BusInterconnectStatistics, %class.uca_org_t, %class.statsDef, 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.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::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.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.BusInterconnectParameters = type { double, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, i8, double, i8, i8, double, double, double, i32 }
%class.BusInterconnectStatistics = 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 }

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN15BusInterconnect15set_param_statsEv(ptr noundef nonnull align 8 dereferenceable(10280) %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.BusInterconnect, ptr %12, i32 0, i32 8
  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.2)
  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 = %227, %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 %230

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.2, 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.3, 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.4, 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.5, ptr noundef null)
  call void @_ZN14McPATComponent20warnMissingParamNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %12, ptr noundef %33)
  br label %226

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

38:                                               ; preds = %34
  %39 = load ptr, ptr %8, align 8, !tbaa !5
  %40 = call double @atof(ptr noundef %39) #9
  %41 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %42 = getelementptr inbounds %class.BusInterconnectParameters, ptr %41, i32 0, i32 0
  store double %40, ptr %42, align 8, !tbaa !31
  br label %225

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

47:                                               ; preds = %43
  %48 = load ptr, ptr %8, align 8, !tbaa !5
  %49 = call i32 @atoi(ptr noundef %48) #9
  %50 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %51 = getelementptr inbounds %class.BusInterconnectParameters, ptr %50, i32 0, i32 1
  store i32 %49, ptr %51, align 8, !tbaa !37
  br label %224

52:                                               ; preds = %43
  %53 = load ptr, ptr %7, align 8, !tbaa !5
  %54 = call i32 @strcmp(ptr noundef %53, ptr noundef @.str.8) #9
  %55 = icmp eq i32 %54, 0
  br i1 %55, label %56, label %61

56:                                               ; preds = %52
  %57 = load ptr, ptr %8, align 8, !tbaa !5
  %58 = call double @atof(ptr noundef %57) #9
  %59 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %60 = getelementptr inbounds %class.BusInterconnectParameters, ptr %59, i32 0, i32 9
  store double %58, ptr %60, align 8, !tbaa !38
  br label %223

61:                                               ; preds = %52
  %62 = load ptr, ptr %7, align 8, !tbaa !5
  %63 = call i32 @strcmp(ptr noundef %62, ptr noundef @.str.9) #9
  %64 = icmp eq i32 %63, 0
  br i1 %64, label %65, label %70

65:                                               ; preds = %61
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = call double @atof(ptr noundef %66) #9
  %68 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %69 = getelementptr inbounds %class.BusInterconnectParameters, ptr %68, i32 0, i32 10
  store double %67, ptr %69, align 8, !tbaa !39
  br label %222

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

74:                                               ; preds = %70
  %75 = load ptr, ptr %8, align 8, !tbaa !5
  %76 = call i32 @atoi(ptr noundef %75) #9
  %77 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %78 = getelementptr inbounds %class.BusInterconnectParameters, ptr %77, i32 0, i32 8
  store i32 %76, ptr %78, align 4, !tbaa !40
  br label %221

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

83:                                               ; preds = %79
  %84 = load ptr, ptr %8, align 8, !tbaa !5
  %85 = call i32 @atoi(ptr noundef %84) #9
  %86 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %87 = getelementptr inbounds %class.BusInterconnectParameters, ptr %86, i32 0, i32 2
  store i32 %85, ptr %87, align 4, !tbaa !41
  br label %220

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

92:                                               ; preds = %88
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = call i32 @atoi(ptr noundef %93) #9
  %95 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %96 = getelementptr inbounds %class.BusInterconnectParameters, ptr %95, i32 0, i32 3
  store i32 %94, ptr %96, align 8, !tbaa !42
  br label %219

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

101:                                              ; preds = %97
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  %103 = call i32 @atoi(ptr noundef %102) #9
  %104 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %105 = getelementptr inbounds %class.BusInterconnectParameters, ptr %104, i32 0, i32 5
  store i32 %103, ptr %105, align 8, !tbaa !43
  br label %218

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

110:                                              ; preds = %106
  %111 = load ptr, ptr %8, align 8, !tbaa !5
  %112 = call double @atof(ptr noundef %111) #9
  %113 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %114 = getelementptr inbounds %class.BusInterconnectParameters, ptr %113, i32 0, i32 11
  store double %112, ptr %114, align 8, !tbaa !44
  br label %217

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

119:                                              ; preds = %115
  %120 = load ptr, ptr %8, align 8, !tbaa !5
  %121 = call i32 @atoi(ptr noundef %120) #9
  %122 = icmp ne i32 %121, 0
  %123 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %124 = getelementptr inbounds %class.BusInterconnectParameters, ptr %123, i32 0, i32 12
  %125 = zext i1 %122 to i8
  store i8 %125, ptr %124, align 8, !tbaa !45
  br label %216

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

130:                                              ; preds = %126
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  %132 = call double @atof(ptr noundef %131) #9
  %133 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %134 = getelementptr inbounds %class.BusInterconnectParameters, ptr %133, i32 0, i32 13
  store double %132, ptr %134, align 8, !tbaa !46
  br label %215

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

139:                                              ; preds = %135
  %140 = load ptr, ptr %8, align 8, !tbaa !5
  %141 = call i32 @atoi(ptr noundef %140) #9
  %142 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %143 = getelementptr inbounds %class.BusInterconnectParameters, ptr %142, i32 0, i32 6
  store i32 %141, ptr %143, align 4, !tbaa !47
  br label %214

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

148:                                              ; preds = %144
  %149 = load ptr, ptr %8, align 8, !tbaa !5
  %150 = call double @atof(ptr noundef %149) #9
  %151 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %152 = getelementptr inbounds %class.BusInterconnectParameters, ptr %151, i32 0, i32 16
  store double %150, ptr %152, align 8, !tbaa !48
  br label %213

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

157:                                              ; preds = %153
  %158 = load ptr, ptr %8, align 8, !tbaa !5
  %159 = call double @atof(ptr noundef %158) #9
  %160 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 4
  store double %159, ptr %160, align 8, !tbaa !49
  br label %212

161:                                              ; preds = %153
  %162 = load ptr, ptr %7, align 8, !tbaa !5
  %163 = call i32 @strcmp(ptr noundef %162, ptr noundef @.str.20) #9
  %164 = icmp eq i32 %163, 0
  br i1 %164, label %165, label %170

165:                                              ; preds = %161
  %166 = load ptr, ptr %8, align 8, !tbaa !5
  %167 = call double @atof(ptr noundef %166) #9
  %168 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %169 = getelementptr inbounds %class.BusInterconnectParameters, ptr %168, i32 0, i32 17
  store double %167, ptr %169, align 8, !tbaa !50
  br label %211

170:                                              ; preds = %161
  %171 = load ptr, ptr %7, align 8, !tbaa !5
  %172 = call i32 @strcmp(ptr noundef %171, ptr noundef @.str.21) #9
  %173 = icmp eq i32 %172, 0
  br i1 %173, label %174, label %179

174:                                              ; preds = %170
  %175 = load ptr, ptr %8, align 8, !tbaa !5
  %176 = call double @atof(ptr noundef %175) #9
  %177 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %178 = getelementptr inbounds %class.BusInterconnectParameters, ptr %177, i32 0, i32 18
  store double %176, ptr %178, align 8, !tbaa !51
  br label %210

179:                                              ; preds = %170
  %180 = load ptr, ptr %7, align 8, !tbaa !5
  %181 = call i32 @strcmp(ptr noundef %180, ptr noundef @.str.22) #9
  %182 = icmp eq i32 %181, 0
  br i1 %182, label %183, label %189

183:                                              ; preds = %179
  %184 = load ptr, ptr %8, align 8, !tbaa !5
  %185 = call double @atof(ptr noundef %184) #9
  %186 = fptosi double %185 to i32
  %187 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %188 = getelementptr inbounds %class.BusInterconnectParameters, ptr %187, i32 0, i32 19
  store i32 %186, ptr %188, align 8, !tbaa !52
  br label %209

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

193:                                              ; preds = %189
  %194 = load ptr, ptr %8, align 8, !tbaa !5
  %195 = call i32 @atoi(ptr noundef %194) #9
  store i32 %195, ptr %5, align 4, !tbaa !30
  br label %208

196:                                              ; preds = %189
  %197 = load ptr, ptr %7, align 8, !tbaa !5
  %198 = call i32 @strcmp(ptr noundef %197, ptr noundef @.str.24) #9
  %199 = icmp eq i32 %198, 0
  br i1 %199, label %200, label %205

200:                                              ; preds = %196
  %201 = load ptr, ptr %8, align 8, !tbaa !5
  %202 = call i32 @atoi(ptr noundef %201) #9
  %203 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 3
  %204 = getelementptr inbounds %class.InputParameter, ptr %203, i32 0, i32 39
  store i32 %202, ptr %204, align 8, !tbaa !53
  br label %207

205:                                              ; preds = %196
  %206 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN14McPATComponent21warnUnrecognizedParamEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %12, ptr noundef %206)
  br label %207

207:                                              ; preds = %205, %200
  br label %208

208:                                              ; preds = %207, %193
  br label %209

209:                                              ; preds = %208, %183
  br label %210

210:                                              ; preds = %209, %174
  br label %211

211:                                              ; preds = %210, %165
  br label %212

212:                                              ; preds = %211, %157
  br label %213

213:                                              ; preds = %212, %148
  br label %214

214:                                              ; preds = %213, %139
  br label %215

215:                                              ; preds = %214, %130
  br label %216

216:                                              ; preds = %215, %119
  br label %217

217:                                              ; preds = %216, %110
  br label %218

218:                                              ; preds = %217, %101
  br label %219

219:                                              ; preds = %218, %92
  br label %220

220:                                              ; preds = %219, %83
  br label %221

221:                                              ; preds = %220, %74
  br label %222

222:                                              ; preds = %221, %65
  br label %223

223:                                              ; preds = %222, %56
  br label %224

224:                                              ; preds = %223, %47
  br label %225

225:                                              ; preds = %224, %38
  br label %226

226:                                              ; preds = %225, %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 %227

227:                                              ; preds = %226
  %228 = load i32, ptr %4, align 4, !tbaa !30
  %229 = add nsw i32 %228, 1
  store i32 %229, ptr %4, align 4, !tbaa !30
  br label %17, !llvm.loop !54

230:                                              ; preds = %17
  %231 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %232 = getelementptr inbounds %class.BusInterconnectParameters, ptr %231, i32 0, i32 0
  %233 = load double, ptr %232, align 8, !tbaa !31
  %234 = fmul double %233, 1.000000e+06
  store double %234, ptr %232, align 8, !tbaa !31
  %235 = load i32, ptr %5, align 4, !tbaa !30
  %236 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 3
  %237 = getelementptr inbounds %class.InputParameter, ptr %236, i32 0, i32 37
  store i32 %235, ptr %237, align 8, !tbaa !56
  %238 = load i32, ptr %5, align 4, !tbaa !30
  %239 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 3
  %240 = getelementptr inbounds %class.InputParameter, ptr %239, i32 0, i32 38
  store i32 %238, ptr %240, align 4, !tbaa !57
  %241 = getelementptr inbounds %class.McPATComponent, ptr %12, i32 0, i32 2
  %242 = load ptr, ptr %241, align 8, !tbaa !9
  %243 = call noundef i32 @_ZNK7XMLNode10nChildNodeEPKc(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef @.str.25)
  store i32 %243, ptr %3, align 4, !tbaa !30
  store i32 0, ptr %4, align 4, !tbaa !30
  br label %244

244:                                              ; preds = %284, %230
  %245 = load i32, ptr %4, align 4, !tbaa !30
  %246 = load i32, ptr %3, align 4, !tbaa !30
  %247 = icmp slt i32 %245, %246
  br i1 %247, label %248, label %287

248:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %249 = getelementptr inbounds %class.McPATComponent, ptr %12, i32 0, i32 2
  %250 = load ptr, ptr %249, align 8, !tbaa !9
  %251 = call noundef ptr @_ZNK7XMLNode15getChildNodePtrEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef @.str.25, ptr noundef %4)
  store ptr %251, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %252 = load ptr, ptr %9, align 8, !tbaa !5
  %253 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef @.str.3, ptr noundef null)
  store ptr %253, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %254 = load ptr, ptr %9, align 8, !tbaa !5
  %255 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %254, ptr noundef @.str.4, ptr noundef null)
  store ptr %255, ptr %11, align 8, !tbaa !5
  %256 = load ptr, ptr %10, align 8, !tbaa !5
  %257 = icmp ne ptr %256, null
  br i1 %257, label %261, label %258

258:                                              ; preds = %248
  %259 = load ptr, ptr %9, align 8, !tbaa !5
  %260 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef @.str.5, ptr noundef null)
  call void @_ZN14McPATComponent19warnMissingStatNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %12, ptr noundef %260)
  br label %283

261:                                              ; preds = %248
  %262 = load ptr, ptr %10, align 8, !tbaa !5
  %263 = call i32 @strcmp(ptr noundef %262, ptr noundef @.str.26) #9
  %264 = icmp eq i32 %263, 0
  br i1 %264, label %265, label %270

265:                                              ; preds = %261
  %266 = load ptr, ptr %11, align 8, !tbaa !5
  %267 = call double @atof(ptr noundef %266) #9
  %268 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 9
  %269 = getelementptr inbounds %class.BusInterconnectStatistics, ptr %268, i32 0, i32 0
  store double %267, ptr %269, align 8, !tbaa !58
  br label %282

270:                                              ; preds = %261
  %271 = load ptr, ptr %10, align 8, !tbaa !5
  %272 = call i32 @strcmp(ptr noundef %271, ptr noundef @.str.27) #9
  %273 = icmp eq i32 %272, 0
  br i1 %273, label %274, label %279

274:                                              ; preds = %270
  %275 = load ptr, ptr %11, align 8, !tbaa !5
  %276 = call double @atof(ptr noundef %275) #9
  %277 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 9
  %278 = getelementptr inbounds %class.BusInterconnectStatistics, ptr %277, i32 0, i32 1
  store double %276, ptr %278, align 8, !tbaa !59
  br label %281

279:                                              ; preds = %270
  %280 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN14McPATComponent20warnUnrecognizedStatEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %12, ptr noundef %280)
  br label %281

281:                                              ; preds = %279, %274
  br label %282

282:                                              ; preds = %281, %265
  br label %283

283:                                              ; preds = %282, %258
  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 %284

284:                                              ; preds = %283
  %285 = load i32, ptr %4, align 4, !tbaa !30
  %286 = add nsw i32 %285, 1
  store i32 %286, ptr %4, align 4, !tbaa !30
  br label %244, !llvm.loop !60

287:                                              ; preds = %244
  %288 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %289 = getelementptr inbounds %class.BusInterconnectParameters, ptr %288, i32 0, i32 0
  %290 = load double, ptr %289, align 8, !tbaa !31
  %291 = getelementptr inbounds %class.McPATComponent, ptr %12, i32 0, i32 5
  store double %290, ptr %291, align 8, !tbaa !61
  %292 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %293 = getelementptr inbounds %class.BusInterconnectParameters, ptr %292, i32 0, i32 2
  %294 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %295 = getelementptr inbounds %class.BusInterconnectParameters, ptr %294, i32 0, i32 3
  %296 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %293, ptr noundef nonnull align 4 dereferenceable(4) %295)
  %297 = load i32, ptr %296, align 4, !tbaa !30
  %298 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %299 = getelementptr inbounds %class.BusInterconnectParameters, ptr %298, i32 0, i32 4
  store i32 %297, ptr %299, align 4, !tbaa !62
  %300 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %301 = getelementptr inbounds %class.BusInterconnectParameters, ptr %300, i32 0, i32 11
  %302 = load double, ptr %301, align 8, !tbaa !44
  %303 = fcmp ole double %302, 1.000000e+00
  br i1 %303, label %304, label %305

304:                                              ; preds = %287
  br label %307

305:                                              ; preds = %287
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str.29, i32 noundef 161, ptr noundef @__PRETTY_FUNCTION__._ZN15BusInterconnect15set_param_statsEv) #10
  unreachable

306:                                              ; No predecessors!
  br label %307

307:                                              ; preds = %306, %304
  %308 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 8
  %309 = getelementptr inbounds %class.BusInterconnectParameters, ptr %308, i32 0, i32 13
  %310 = load double, ptr %309, align 8, !tbaa !46
  %311 = fcmp ole double %310, 1.000000e+00
  br i1 %311, label %312, label %313

312:                                              ; preds = %307
  br label %315

313:                                              ; preds = %307
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str.29, i32 noundef 162, ptr noundef @__PRETTY_FUNCTION__._ZN15BusInterconnect15set_param_statsEv) #10
  unreachable

314:                                              ; No predecessors!
  br label %315

315:                                              ; preds = %314, %312
  %316 = getelementptr inbounds %class.BusInterconnect, ptr %12, i32 0, i32 4
  %317 = load double, ptr %316, align 8, !tbaa !49
  %318 = fcmp ogt double %317, 0.000000e+00
  br i1 %318, label %319, label %320

319:                                              ; preds = %315
  br label %322

320:                                              ; preds = %315
  call void @__assert_fail(ptr noundef @.str.31, ptr noundef @.str.29, i32 noundef 163, ptr noundef @__PRETTY_FUNCTION__._ZN15BusInterconnect15set_param_statsEv) #10
  unreachable

321:                                              ; No predecessors!
  br label %322

322:                                              ; preds = %321, %319
  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 double @atof(ptr noundef nonnull) #5

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare i32 @atoi(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, !13, i64 1768}
!32 = !{!"_ZTS15BusInterconnect", !10, i64 0, !6, i64 1352, !17, i64 1360, !16, i64 1368, !13, i64 1736, !13, i64 1744, !13, i64 1752, !13, i64 1760, !33, i64 1768, !34, i64 1888, !35, i64 1904, !28, i64 10104, !13, i64 10272}
!33 = !{!"_ZTS25BusInterconnectParameters", !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, !13, i64 40, !13, i64 48, !13, i64 56, !18, i64 64, !13, i64 72, !18, i64 80, !18, i64 81, !13, i64 88, !13, i64 96, !13, i64 104, !17, i64 112}
!34 = !{!"_ZTS25BusInterconnectStatistics", !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, !17, i64 1776}
!38 = !{!32, !13, i64 1808}
!39 = !{!32, !13, i64 1816}
!40 = !{!32, !17, i64 1804}
!41 = !{!32, !17, i64 1780}
!42 = !{!32, !17, i64 1784}
!43 = !{!32, !17, i64 1792}
!44 = !{!32, !13, i64 1824}
!45 = !{!32, !18, i64 1832}
!46 = !{!32, !13, i64 1840}
!47 = !{!32, !17, i64 1796}
!48 = !{!32, !13, i64 1856}
!49 = !{!32, !13, i64 1736}
!50 = !{!32, !13, i64 1864}
!51 = !{!32, !13, i64 1872}
!52 = !{!32, !17, i64 1880}
!53 = !{!32, !19, i64 1520}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = !{!32, !17, i64 1512}
!57 = !{!32, !17, i64 1516}
!58 = !{!32, !13, i64 1888}
!59 = !{!32, !13, i64 1896}
!60 = distinct !{!60, !55}
!61 = !{!10, !13, i64 696}
!62 = !{!32, !17, i64 1788}


; 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.2 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [73 x i8], align 1
@__PRETTY_FUNCTION__._ZN15BusInterconnect15set_param_statsEv = external hidden unnamed_addr constant [40 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN15BusInterconnect15set_param_statsEv(ptr noundef nonnull align 8 dereferenceable(10280) %0) local_unnamed_addr #0 align 2 {
  %2 = alloca i32, align 4
  %3 = getelementptr inbounds i8, ptr %0, i64 1768
  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.2)
  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 1520
  %9 = getelementptr inbounds i8, ptr %0, i64 1880
  %10 = getelementptr inbounds i8, ptr %0, i64 1872
  %11 = getelementptr inbounds i8, ptr %0, i64 1864
  %12 = getelementptr inbounds i8, ptr %0, i64 1736
  %13 = getelementptr inbounds i8, ptr %0, i64 1856
  %14 = getelementptr inbounds i8, ptr %0, i64 1796
  %15 = getelementptr inbounds i8, ptr %0, i64 1840
  %16 = getelementptr inbounds i8, ptr %0, i64 1832
  %17 = getelementptr inbounds i8, ptr %0, i64 1824
  %18 = getelementptr inbounds i8, ptr %0, i64 1792
  %19 = getelementptr inbounds i8, ptr %0, i64 1784
  %20 = getelementptr inbounds i8, ptr %0, i64 1780
  %21 = getelementptr inbounds i8, ptr %0, i64 1804
  %22 = getelementptr inbounds i8, ptr %0, i64 1816
  %23 = getelementptr inbounds i8, ptr %0, i64 1808
  %24 = getelementptr inbounds i8, ptr %0, i64 1776
  br label %25

25:                                               ; preds = %.lr.ph, %131
  %.060 = phi i32 [ undef, %.lr.ph ], [ %.1, %131 ]
  %26 = load ptr, ptr %4, align 8, !tbaa !5
  %27 = call noundef ptr @_ZNK7XMLNode15getChildNodePtrEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull @.str.2, ptr noundef nonnull %2)
  %28 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull @.str.3, ptr noundef null)
  %29 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull @.str.4, ptr noundef null)
  %.not59 = icmp eq ptr %28, null
  br i1 %.not59, label %30, label %32

30:                                               ; preds = %25
  %31 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull @.str.5, ptr noundef null)
  call void @_ZN14McPATComponent20warnMissingParamNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %0, ptr noundef %31)
  br label %131

32:                                               ; preds = %25
  %33 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(1) @.str.6) #9
  %34 = icmp eq i32 %33, 0
  br i1 %34, label %35, label %37

35:                                               ; preds = %32
  %36 = call double @atof(ptr noundef %29) #9
  store double %36, ptr %3, align 8, !tbaa !30
  br label %131

37:                                               ; preds = %32
  %38 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(1) @.str.7) #9
  %39 = icmp eq i32 %38, 0
  br i1 %39, label %40, label %42

40:                                               ; preds = %37
  %41 = call i32 @atoi(ptr nocapture noundef %29) #9
  store i32 %41, ptr %24, align 8, !tbaa !36
  br label %131

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

45:                                               ; preds = %42
  %46 = call double @atof(ptr noundef %29) #9
  store double %46, ptr %23, align 8, !tbaa !37
  br label %131

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

50:                                               ; preds = %47
  %51 = call double @atof(ptr noundef %29) #9
  store double %51, ptr %22, align 8, !tbaa !38
  br label %131

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

55:                                               ; preds = %52
  %56 = call i32 @atoi(ptr nocapture noundef %29) #9
  store i32 %56, ptr %21, align 4, !tbaa !39
  br label %131

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

60:                                               ; preds = %57
  %61 = call i32 @atoi(ptr nocapture noundef %29) #9
  store i32 %61, ptr %20, align 4, !tbaa !40
  br label %131

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

65:                                               ; preds = %62
  %66 = call i32 @atoi(ptr nocapture noundef %29) #9
  store i32 %66, ptr %19, align 8, !tbaa !41
  br label %131

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

70:                                               ; preds = %67
  %71 = call i32 @atoi(ptr nocapture noundef %29) #9
  store i32 %71, ptr %18, align 8, !tbaa !42
  br label %131

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

75:                                               ; preds = %72
  %76 = call double @atof(ptr noundef %29) #9
  store double %76, ptr %17, align 8, !tbaa !43
  br label %131

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

80:                                               ; preds = %77
  %81 = call i32 @atoi(ptr nocapture noundef %29) #9
  %82 = icmp ne i32 %81, 0
  %83 = zext i1 %82 to i8
  store i8 %83, ptr %16, align 8, !tbaa !44
  br label %131

84:                                               ; preds = %77
  %85 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(1) @.str.16) #9
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %87, label %89

87:                                               ; preds = %84
  %88 = call double @atof(ptr noundef %29) #9
  store double %88, ptr %15, align 8, !tbaa !45
  br label %131

89:                                               ; preds = %84
  %90 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(1) @.str.17) #9
  %91 = icmp eq i32 %90, 0
  br i1 %91, label %92, label %94

92:                                               ; preds = %89
  %93 = call i32 @atoi(ptr nocapture noundef %29) #9
  store i32 %93, ptr %14, align 4, !tbaa !46
  br label %131

94:                                               ; preds = %89
  %95 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(1) @.str.18) #9
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %97, label %99

97:                                               ; preds = %94
  %98 = call double @atof(ptr noundef %29) #9
  store double %98, ptr %13, align 8, !tbaa !47
  br label %131

99:                                               ; preds = %94
  %100 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(1) @.str.19) #9
  %101 = icmp eq i32 %100, 0
  br i1 %101, label %102, label %104

102:                                              ; preds = %99
  %103 = call double @atof(ptr noundef %29) #9
  store double %103, ptr %12, align 8, !tbaa !48
  br label %131

104:                                              ; preds = %99
  %105 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(1) @.str.20) #9
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %107, label %109

107:                                              ; preds = %104
  %108 = call double @atof(ptr noundef %29) #9
  store double %108, ptr %11, align 8, !tbaa !49
  br label %131

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

112:                                              ; preds = %109
  %113 = call double @atof(ptr noundef %29) #9
  store double %113, ptr %10, align 8, !tbaa !50
  br label %131

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

117:                                              ; preds = %114
  %118 = call double @atof(ptr noundef %29) #9
  %119 = fptosi double %118 to i32
  store i32 %119, ptr %9, align 8, !tbaa !51
  br label %131

120:                                              ; preds = %114
  %121 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(1) @.str.23) #9
  %122 = icmp eq i32 %121, 0
  br i1 %122, label %123, label %125

123:                                              ; preds = %120
  %124 = call i32 @atoi(ptr nocapture noundef %29) #9
  br label %131

125:                                              ; preds = %120
  %126 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(1) @.str.24) #9
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %130

128:                                              ; preds = %125
  %129 = call i32 @atoi(ptr nocapture noundef %29) #9
  store i32 %129, ptr %8, align 8, !tbaa !52
  br label %131

130:                                              ; preds = %125
  call void @_ZN14McPATComponent21warnUnrecognizedParamEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %0, ptr noundef nonnull %28)
  br label %131

131:                                              ; preds = %35, %45, %55, %65, %75, %87, %97, %107, %117, %128, %130, %123, %112, %102, %92, %80, %70, %60, %50, %40, %30
  %.1 = phi i32 [ %.060, %35 ], [ %.060, %40 ], [ %.060, %45 ], [ %.060, %50 ], [ %.060, %55 ], [ %.060, %60 ], [ %.060, %65 ], [ %.060, %70 ], [ %.060, %75 ], [ %.060, %80 ], [ %.060, %87 ], [ %.060, %92 ], [ %.060, %97 ], [ %.060, %102 ], [ %.060, %107 ], [ %.060, %112 ], [ %.060, %117 ], [ %124, %123 ], [ %.060, %128 ], [ %.060, %130 ], [ %.060, %30 ]
  %132 = load i32, ptr %2, align 4, !tbaa !29
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr %2, align 4, !tbaa !29
  %134 = icmp slt i32 %133, %6
  br i1 %134, label %25, label %._crit_edge, !llvm.loop !53

._crit_edge:                                      ; preds = %131, %1
  %.0.lcssa = phi i32 [ undef, %1 ], [ %.1, %131 ]
  %135 = load double, ptr %3, align 8, !tbaa !30
  %136 = fmul double %135, 1.000000e+06
  store double %136, ptr %3, align 8, !tbaa !30
  %137 = getelementptr inbounds i8, ptr %0, i64 1512
  store i32 %.0.lcssa, ptr %137, align 8, !tbaa !55
  %138 = getelementptr inbounds i8, ptr %0, i64 1516
  store i32 %.0.lcssa, ptr %138, align 4, !tbaa !56
  %139 = load ptr, ptr %4, align 8, !tbaa !5
  %140 = call noundef i32 @_ZNK7XMLNode10nChildNodeEPKc(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull @.str.25)
  store i32 0, ptr %2, align 4, !tbaa !29
  %141 = icmp sgt i32 %140, 0
  br i1 %141, label %.lr.ph62, label %._crit_edge63

.lr.ph62:                                         ; preds = %._crit_edge
  %142 = getelementptr inbounds i8, ptr %0, i64 1896
  %143 = getelementptr inbounds i8, ptr %0, i64 1888
  br label %144

144:                                              ; preds = %.lr.ph62, %162
  %145 = load ptr, ptr %4, align 8, !tbaa !5
  %146 = call noundef ptr @_ZNK7XMLNode15getChildNodePtrEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull @.str.25, ptr noundef nonnull %2)
  %147 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull @.str.3, ptr noundef null)
  %148 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull @.str.4, ptr noundef null)
  %.not = icmp eq ptr %147, null
  br i1 %.not, label %149, label %151

149:                                              ; preds = %144
  %150 = call noundef ptr @_ZNK7XMLNode12getAttributeEPKcPi(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull @.str.5, ptr noundef null)
  call void @_ZN14McPATComponent19warnMissingStatNameEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %0, ptr noundef %150)
  br label %162

151:                                              ; preds = %144
  %152 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %147, ptr noundef nonnull dereferenceable(1) @.str.26) #9
  %153 = icmp eq i32 %152, 0
  br i1 %153, label %154, label %156

154:                                              ; preds = %151
  %155 = call double @atof(ptr noundef %148) #9
  store double %155, ptr %143, align 8, !tbaa !57
  br label %162

156:                                              ; preds = %151
  %157 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %147, ptr noundef nonnull dereferenceable(1) @.str.27) #9
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %159, label %161

159:                                              ; preds = %156
  %160 = call double @atof(ptr noundef %148) #9
  store double %160, ptr %142, align 8, !tbaa !58
  br label %162

161:                                              ; preds = %156
  call void @_ZN14McPATComponent20warnUnrecognizedStatEPKc(ptr noundef nonnull align 8 dereferenceable(1352) %0, ptr noundef nonnull %147)
  br label %162

162:                                              ; preds = %154, %161, %159, %149
  %163 = load i32, ptr %2, align 4, !tbaa !29
  %164 = add nsw i32 %163, 1
  store i32 %164, ptr %2, align 4, !tbaa !29
  %165 = icmp slt i32 %164, %140
  br i1 %165, label %144, label %._crit_edge63, !llvm.loop !59

._crit_edge63:                                    ; preds = %162, %._crit_edge
  %166 = load double, ptr %3, align 8, !tbaa !30
  %167 = getelementptr inbounds i8, ptr %0, i64 696
  store double %166, ptr %167, align 8, !tbaa !60
  %168 = getelementptr inbounds i8, ptr %0, i64 1780
  %169 = getelementptr inbounds i8, ptr %0, i64 1784
  %170 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %168, ptr noundef nonnull align 4 dereferenceable(4) %169)
  %171 = load i32, ptr %170, align 4, !tbaa !29
  %172 = getelementptr inbounds i8, ptr %0, i64 1788
  store i32 %171, ptr %172, align 4, !tbaa !61
  %173 = getelementptr inbounds i8, ptr %0, i64 1824
  %174 = load double, ptr %173, align 8, !tbaa !43
  %175 = fcmp ugt double %174, 1.000000e+00
  br i1 %175, label %176, label %177

176:                                              ; preds = %._crit_edge63
  call void @__assert_fail(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.29, i32 noundef 161, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN15BusInterconnect15set_param_statsEv) #10
  unreachable

177:                                              ; preds = %._crit_edge63
  %178 = getelementptr inbounds i8, ptr %0, i64 1840
  %179 = load double, ptr %178, align 8, !tbaa !45
  %180 = fcmp ugt double %179, 1.000000e+00
  br i1 %180, label %181, label %182

181:                                              ; preds = %177
  call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.29, i32 noundef 162, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN15BusInterconnect15set_param_statsEv) #10
  unreachable

182:                                              ; preds = %177
  %183 = getelementptr inbounds i8, ptr %0, i64 1736
  %184 = load double, ptr %183, align 8, !tbaa !48
  %185 = fcmp ogt double %184, 0.000000e+00
  br i1 %185, label %187, label %186

186:                                              ; preds = %182
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.29, i32 noundef 163, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN15BusInterconnect15set_param_statsEv) #10
  unreachable

187:                                              ; preds = %182
  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 double @atof(ptr nocapture noundef nonnull) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(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, !9, i64 1768}
!31 = !{!"_ZTS15BusInterconnect", !6, i64 0, !14, i64 1352, !16, i64 1360, !15, i64 1368, !9, i64 1736, !9, i64 1744, !9, i64 1752, !9, i64 1760, !32, i64 1768, !33, i64 1888, !34, i64 1904, !27, i64 10104, !9, i64 10272}
!32 = !{!"_ZTS25BusInterconnectParameters", !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, !9, i64 40, !9, i64 48, !9, i64 56, !17, i64 64, !9, i64 72, !17, i64 80, !17, i64 81, !9, i64 88, !9, i64 96, !9, i64 104, !16, i64 112}
!33 = !{!"_ZTS25BusInterconnectStatistics", !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, !16, i64 1776}
!37 = !{!31, !9, i64 1808}
!38 = !{!31, !9, i64 1816}
!39 = !{!31, !16, i64 1804}
!40 = !{!31, !16, i64 1780}
!41 = !{!31, !16, i64 1784}
!42 = !{!31, !16, i64 1792}
!43 = !{!31, !9, i64 1824}
!44 = !{!31, !17, i64 1832}
!45 = !{!31, !9, i64 1840}
!46 = !{!31, !16, i64 1796}
!47 = !{!31, !9, i64 1856}
!48 = !{!31, !9, i64 1736}
!49 = !{!31, !9, i64 1864}
!50 = !{!31, !9, i64 1872}
!51 = !{!31, !16, i64 1880}
!52 = !{!31, !18, i64 1520}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = !{!31, !16, i64 1512}
!56 = !{!31, !16, i64 1516}
!57 = !{!31, !9, i64 1888}
!58 = !{!31, !9, i64 1896}
!59 = distinct !{!59, !54}
!60 = !{!6, !9, i64 696}
!61 = !{!31, !16, i64 1788}


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