; LLVM IR from ggarra13/mrv2 :: src/lib/mrvCore/mrvCPU.ll (Z10GetCpuCapsB5cxx11P9cpucaps_s)

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

%struct.cpucaps_s = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%"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::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }

@gCpuCaps = external dso_local global %struct.cpucaps_s, align 4
@.str = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z10GetCpuCapsB5cxx11P9cpucaps_s(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %6 = alloca [4 x i32], align 16
  %7 = alloca [4 x i32], align 16
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca [1024 x i8], align 16
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 376, ptr %5) #7
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %5)
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #7
  %15 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %15, i8 0, i64 16, i1 false)
  %16 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %16, i8 0, i64 16, i1 false)
  %17 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memset.p0.i64(ptr align 4 %17, i8 0, i64 72, i1 false)
  %18 = load ptr, ptr %4, align 8, !tbaa !5
  %19 = getelementptr inbounds %struct.cpucaps_s, ptr %18, i32 0, i32 14
  store i32 1, ptr %19, align 4, !tbaa !9
  %20 = load ptr, ptr %4, align 8, !tbaa !5
  %21 = getelementptr inbounds %struct.cpucaps_s, ptr %20, i32 0, i32 15
  store i32 32, ptr %21, align 4, !tbaa !12
  %22 = invoke noundef zeroext i1 @_ZL9has_cpuidv()
          to label %23 unwind label %30

23:                                               ; preds = %2
  br i1 %22, label %34, label %24

24:                                               ; preds = %23
  %25 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str)
          to label %26 unwind label %30

26:                                               ; preds = %24
  %27 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %28 unwind label %30

28:                                               ; preds = %26
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(112) %5)
          to label %29 unwind label %30

29:                                               ; preds = %28
  store i32 1, ptr %10, align 4
  br label %372

30:                                               ; preds = %34, %28, %26, %24, %2
  %31 = landingpad { ptr, i32 }
          cleanup
  %32 = extractvalue { ptr, i32 } %31, 0
  store ptr %32, ptr %8, align 8
  %33 = extractvalue { ptr, i32 } %31, 1
  store i32 %33, ptr %9, align 4
  br label %373

34:                                               ; preds = %23
  %35 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  invoke void @_ZL8do_cpuidjPj(i32 noundef 0, ptr noundef %35)
          to label %36 unwind label %30

36:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 1024, ptr %11) #7
  %37 = getelementptr inbounds [1024 x i8], ptr %11, i64 0, i64 0
  %38 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 1
  %39 = load i32, ptr %38, align 4, !tbaa !13
  %40 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 3
  %41 = load i32, ptr %40, align 4, !tbaa !13
  %42 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 2
  %43 = load i32, ptr %42, align 8, !tbaa !13
  %44 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %45 = load i32, ptr %44, align 16, !tbaa !13
  %46 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %37, i64 noundef 1023, ptr noundef @.str.1, i32 noundef %39, i32 noundef %41, i32 noundef %43, i32 noundef %45) #7
  %47 = getelementptr inbounds [1024 x i8], ptr %11, i64 0, i64 0
  %48 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %49 = getelementptr inbounds i32, ptr %48, i64 1
  %50 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %51 = getelementptr inbounds i32, ptr %50, i64 3
  %52 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %53 = getelementptr inbounds i32, ptr %52, i64 2
  %54 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %55 = load i32, ptr %54, align 16, !tbaa !13
  %56 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %47, i64 noundef 1023, ptr noundef @.str.2, ptr noundef %49, ptr noundef %51, ptr noundef %53, i32 noundef %55) #7
  %57 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %58 = load i32, ptr %57, align 16, !tbaa !13
  %59 = icmp uge i32 %58, 1
  br i1 %59, label %60, label %227

60:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %61 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 0
  invoke void @_ZL8do_cpuidjPj(i32 noundef 1, ptr noundef %61)
          to label %62 unwind label %87

62:                                               ; preds = %60
  %63 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 0
  %64 = load i32, ptr %63, align 16, !tbaa !13
  %65 = lshr i32 %64, 8
  %66 = and i32 %65, 15
  %67 = load ptr, ptr %4, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.cpucaps_s, ptr %67, i32 0, i32 0
  store i32 %66, ptr %68, align 4, !tbaa !14
  %69 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 0
  %70 = load i32, ptr %69, align 16, !tbaa !13
  %71 = lshr i32 %70, 4
  %72 = and i32 %71, 15
  %73 = load ptr, ptr %4, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.cpucaps_s, ptr %73, i32 0, i32 1
  store i32 %72, ptr %74, align 4, !tbaa !15
  %75 = load ptr, ptr %4, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.cpucaps_s, ptr %75, i32 0, i32 0
  %77 = load i32, ptr %76, align 4, !tbaa !14
  %78 = icmp eq i32 %77, 15
  br i1 %78, label %79, label %91

79:                                               ; preds = %62
  %80 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 0
  %81 = load i32, ptr %80, align 16, !tbaa !13
  %82 = lshr i32 %81, 20
  %83 = and i32 %82, 255
  %84 = add i32 15, %83
  %85 = load ptr, ptr %4, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.cpucaps_s, ptr %85, i32 0, i32 0
  store i32 %84, ptr %86, align 4, !tbaa !14
  br label %91

87:                                               ; preds = %224, %222, %217, %215, %210, %208, %203, %200, %198, %195, %182, %60
  %88 = landingpad { ptr, i32 }
          cleanup
  %89 = extractvalue { ptr, i32 } %88, 0
  store ptr %89, ptr %8, align 8
  %90 = extractvalue { ptr, i32 } %88, 1
  store i32 %90, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %371

91:                                               ; preds = %79, %62
  %92 = load ptr, ptr %4, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.cpucaps_s, ptr %92, i32 0, i32 0
  %94 = load i32, ptr %93, align 4, !tbaa !14
  %95 = icmp eq i32 %94, 15
  br i1 %95, label %101, label %96

96:                                               ; preds = %91
  %97 = load ptr, ptr %4, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.cpucaps_s, ptr %97, i32 0, i32 0
  %99 = load i32, ptr %98, align 4, !tbaa !14
  %100 = icmp eq i32 %99, 6
  br i1 %100, label %101, label %111

101:                                              ; preds = %96, %91
  %102 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 0
  %103 = load i32, ptr %102, align 16, !tbaa !13
  %104 = lshr i32 %103, 16
  %105 = and i32 %104, 15
  %106 = shl i32 %105, 4
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.cpucaps_s, ptr %107, i32 0, i32 1
  %109 = load i32, ptr %108, align 4, !tbaa !15
  %110 = or i32 %109, %106
  store i32 %110, ptr %108, align 4, !tbaa !15
  br label %111

111:                                              ; preds = %101, %96
  %112 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 0
  %113 = load i32, ptr %112, align 16, !tbaa !13
  %114 = and i32 %113, 15
  %115 = load ptr, ptr %4, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.cpucaps_s, ptr %115, i32 0, i32 2
  store i32 %114, ptr %116, align 4, !tbaa !16
  %117 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 3
  %118 = load i32, ptr %117, align 4, !tbaa !13
  %119 = and i32 %118, 256
  %120 = lshr i32 %119, 8
  %121 = load ptr, ptr %4, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.cpucaps_s, ptr %121, i32 0, i32 17
  store i32 %120, ptr %122, align 4, !tbaa !17
  %123 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 3
  %124 = load i32, ptr %123, align 4, !tbaa !13
  %125 = and i32 %124, 8388608
  %126 = lshr i32 %125, 23
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.cpucaps_s, ptr %127, i32 0, i32 3
  store i32 %126, ptr %128, align 4, !tbaa !18
  %129 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 3
  %130 = load i32, ptr %129, align 4, !tbaa !13
  %131 = and i32 %130, 33554432
  %132 = lshr i32 %131, 25
  %133 = load ptr, ptr %4, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.cpucaps_s, ptr %133, i32 0, i32 7
  store i32 %132, ptr %134, align 4, !tbaa !19
  %135 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 3
  %136 = load i32, ptr %135, align 4, !tbaa !13
  %137 = and i32 %136, 67108864
  %138 = lshr i32 %137, 26
  %139 = load ptr, ptr %4, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.cpucaps_s, ptr %139, i32 0, i32 8
  store i32 %138, ptr %140, align 4, !tbaa !20
  %141 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 2
  %142 = load i32, ptr %141, align 8, !tbaa !13
  %143 = and i32 %142, 1
  %144 = load ptr, ptr %4, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.cpucaps_s, ptr %144, i32 0, i32 9
  store i32 %143, ptr %145, align 4, !tbaa !21
  %146 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 2
  %147 = load i32, ptr %146, align 8, !tbaa !13
  %148 = and i32 %147, 512
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.cpucaps_s, ptr %149, i32 0, i32 10
  store i32 %148, ptr %150, align 4, !tbaa !22
  %151 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 2
  %152 = load i32, ptr %151, align 8, !tbaa !13
  %153 = and i32 %152, 524288
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.cpucaps_s, ptr %154, i32 0, i32 11
  store i32 %153, ptr %155, align 4, !tbaa !23
  %156 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 2
  %157 = load i32, ptr %156, align 8, !tbaa !13
  %158 = and i32 %157, 1048576
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.cpucaps_s, ptr %159, i32 0, i32 12
  store i32 %158, ptr %160, align 4, !tbaa !24
  %161 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 2
  %162 = load i32, ptr %161, align 8, !tbaa !13
  %163 = and i32 %162, 33554432
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.cpucaps_s, ptr %164, i32 0, i32 13
  store i32 %163, ptr %165, align 4, !tbaa !25
  %166 = load ptr, ptr %4, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.cpucaps_s, ptr %166, i32 0, i32 7
  %168 = load i32, ptr %167, align 4, !tbaa !19
  %169 = load ptr, ptr %4, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.cpucaps_s, ptr %169, i32 0, i32 4
  store i32 %168, ptr %170, align 4, !tbaa !26
  %171 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 1
  %172 = load i32, ptr %171, align 4, !tbaa !13
  %173 = lshr i32 %172, 8
  %174 = and i32 %173, 255
  %175 = mul i32 %174, 8
  store i32 %175, ptr %14, align 4, !tbaa !13
  %176 = load i32, ptr %14, align 4, !tbaa !13
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %178, label %182

178:                                              ; preds = %111
  %179 = load i32, ptr %14, align 4, !tbaa !13
  %180 = load ptr, ptr %4, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.cpucaps_s, ptr %180, i32 0, i32 15
  store i32 %179, ptr %181, align 4, !tbaa !12
  br label %182

182:                                              ; preds = %178, %111
  %183 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %184 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 0
  %185 = invoke noundef ptr @_Z18GetCpuFriendlyNameRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEPjS6_(ptr noundef nonnull align 8 dereferenceable(112) %5, ptr noundef %183, ptr noundef %184)
          to label %186 unwind label %87

186:                                              ; preds = %182
  store ptr %185, ptr %12, align 8, !tbaa !5
  store ptr %185, ptr %13, align 8, !tbaa !5
  br label %187

187:                                              ; preds = %192, %186
  %188 = load ptr, ptr %13, align 8, !tbaa !5
  %189 = load i8, ptr %188, align 1, !tbaa !27
  %190 = sext i8 %189 to i32
  %191 = icmp eq i32 %190, 32
  br i1 %191, label %192, label %195

192:                                              ; preds = %187
  %193 = load ptr, ptr %13, align 8, !tbaa !5
  %194 = getelementptr inbounds i8, ptr %193, i32 1
  store ptr %194, ptr %13, align 8, !tbaa !5
  br label %187, !llvm.loop !28

195:                                              ; preds = %187
  %196 = load ptr, ptr %13, align 8, !tbaa !5
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %196)
          to label %198 unwind label %87

198:                                              ; preds = %195
  %199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %197, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %200 unwind label %87

200:                                              ; preds = %198
  %201 = load ptr, ptr %12, align 8, !tbaa !5
  call void @free(ptr noundef %201) #7
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.3)
          to label %203 unwind label %87

203:                                              ; preds = %200
  %204 = load ptr, ptr %4, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.cpucaps_s, ptr %204, i32 0, i32 0
  %206 = load i32, ptr %205, align 4, !tbaa !14
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %202, i32 noundef %206)
          to label %208 unwind label %87

208:                                              ; preds = %203
  %209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef @.str.4)
          to label %210 unwind label %87

210:                                              ; preds = %208
  %211 = load ptr, ptr %4, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.cpucaps_s, ptr %211, i32 0, i32 1
  %213 = load i32, ptr %212, align 4, !tbaa !15
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %209, i32 noundef %213)
          to label %215 unwind label %87

215:                                              ; preds = %210
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef @.str.5)
          to label %217 unwind label %87

217:                                              ; preds = %215
  %218 = load ptr, ptr %4, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.cpucaps_s, ptr %218, i32 0, i32 2
  %220 = load i32, ptr %219, align 4, !tbaa !16
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %216, i32 noundef %220)
          to label %222 unwind label %87

222:                                              ; preds = %217
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef @.str.6)
          to label %224 unwind label %87

224:                                              ; preds = %222
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %223, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %226 unwind label %87

226:                                              ; preds = %224
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %227

227:                                              ; preds = %226, %36
  %228 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  invoke void @_ZL8do_cpuidjPj(i32 noundef -2147483648, ptr noundef %228)
          to label %229 unwind label %264

229:                                              ; preds = %227
  %230 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %231 = load i32, ptr %230, align 16, !tbaa !13
  %232 = icmp uge i32 %231, -2147483647
  br i1 %232, label %233, label %268

233:                                              ; preds = %229
  %234 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 0
  invoke void @_ZL8do_cpuidjPj(i32 noundef -2147483647, ptr noundef %234)
          to label %235 unwind label %264

235:                                              ; preds = %233
  %236 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 3
  %237 = load i32, ptr %236, align 4, !tbaa !13
  %238 = and i32 %237, 8388608
  %239 = lshr i32 %238, 23
  %240 = load ptr, ptr %4, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.cpucaps_s, ptr %240, i32 0, i32 3
  %242 = load i32, ptr %241, align 4, !tbaa !18
  %243 = or i32 %242, %239
  store i32 %243, ptr %241, align 4, !tbaa !18
  %244 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 3
  %245 = load i32, ptr %244, align 4, !tbaa !13
  %246 = and i32 %245, 4194304
  %247 = lshr i32 %246, 22
  %248 = load ptr, ptr %4, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.cpucaps_s, ptr %248, i32 0, i32 4
  %250 = load i32, ptr %249, align 4, !tbaa !26
  %251 = or i32 %250, %247
  store i32 %251, ptr %249, align 4, !tbaa !26
  %252 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 3
  %253 = load i32, ptr %252, align 4, !tbaa !13
  %254 = and i32 %253, -2147483648
  %255 = lshr i32 %254, 31
  %256 = load ptr, ptr %4, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.cpucaps_s, ptr %256, i32 0, i32 5
  store i32 %255, ptr %257, align 4, !tbaa !30
  %258 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 3
  %259 = load i32, ptr %258, align 4, !tbaa !13
  %260 = and i32 %259, 1073741824
  %261 = lshr i32 %260, 30
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.cpucaps_s, ptr %262, i32 0, i32 6
  store i32 %261, ptr %263, align 4, !tbaa !31
  br label %268

264:                                              ; preds = %369, %367, %364, %358, %352, %346, %340, %334, %328, %322, %316, %310, %304, %298, %285, %272, %233, %227
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %8, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %9, align 4
  br label %371

268:                                              ; preds = %235, %229
  %269 = getelementptr inbounds [4 x i32], ptr %6, i64 0, i64 0
  %270 = load i32, ptr %269, align 16, !tbaa !13
  %271 = icmp uge i32 %270, -2147483642
  br i1 %271, label %272, label %280

272:                                              ; preds = %268
  %273 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 0
  invoke void @_ZL8do_cpuidjPj(i32 noundef -2147483642, ptr noundef %273)
          to label %274 unwind label %264

274:                                              ; preds = %272
  %275 = getelementptr inbounds [4 x i32], ptr %7, i64 0, i64 2
  %276 = load i32, ptr %275, align 8, !tbaa !13
  %277 = and i32 %276, 255
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.cpucaps_s, ptr %278, i32 0, i32 15
  store i32 %277, ptr %279, align 4, !tbaa !12
  br label %280

280:                                              ; preds = %274, %268
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.cpucaps_s, ptr %281, i32 0, i32 7
  %283 = load i32, ptr %282, align 4, !tbaa !19
  %284 = icmp ne i32 %283, 0
  br i1 %284, label %285, label %287

285:                                              ; preds = %280
  invoke void @_ZL23check_os_katmai_supportv()
          to label %286 unwind label %264

286:                                              ; preds = %285
  br label %287

287:                                              ; preds = %286, %280
  %288 = load ptr, ptr %4, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.cpucaps_s, ptr %288, i32 0, i32 7
  %290 = load i32, ptr %289, align 4, !tbaa !19
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %295, label %292

292:                                              ; preds = %287
  %293 = load ptr, ptr %4, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.cpucaps_s, ptr %293, i32 0, i32 8
  store i32 0, ptr %294, align 4, !tbaa !20
  br label %295

295:                                              ; preds = %292, %287
  %296 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 3), align 4, !tbaa !18
  %297 = icmp ne i32 %296, 0
  br i1 %297, label %298, label %301

298:                                              ; preds = %295
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.7)
          to label %300 unwind label %264

300:                                              ; preds = %298
  br label %301

301:                                              ; preds = %300, %295
  %302 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 4), align 4, !tbaa !26
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %307

304:                                              ; preds = %301
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.8)
          to label %306 unwind label %264

306:                                              ; preds = %304
  br label %307

307:                                              ; preds = %306, %301
  %308 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 5), align 4, !tbaa !30
  %309 = icmp ne i32 %308, 0
  br i1 %309, label %310, label %313

310:                                              ; preds = %307
  %311 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.9)
          to label %312 unwind label %264

312:                                              ; preds = %310
  br label %313

313:                                              ; preds = %312, %307
  %314 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 6), align 4, !tbaa !31
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %319

316:                                              ; preds = %313
  %317 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.10)
          to label %318 unwind label %264

318:                                              ; preds = %316
  br label %319

319:                                              ; preds = %318, %313
  %320 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 7), align 4, !tbaa !19
  %321 = icmp ne i32 %320, 0
  br i1 %321, label %322, label %325

322:                                              ; preds = %319
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.11)
          to label %324 unwind label %264

324:                                              ; preds = %322
  br label %325

325:                                              ; preds = %324, %319
  %326 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 8), align 4, !tbaa !20
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %331

328:                                              ; preds = %325
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.12)
          to label %330 unwind label %264

330:                                              ; preds = %328
  br label %331

331:                                              ; preds = %330, %325
  %332 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 9), align 4, !tbaa !21
  %333 = icmp ne i32 %332, 0
  br i1 %333, label %334, label %337

334:                                              ; preds = %331
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.13)
          to label %336 unwind label %264

336:                                              ; preds = %334
  br label %337

337:                                              ; preds = %336, %331
  %338 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 10), align 4, !tbaa !22
  %339 = icmp ne i32 %338, 0
  br i1 %339, label %340, label %343

340:                                              ; preds = %337
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.14)
          to label %342 unwind label %264

342:                                              ; preds = %340
  br label %343

343:                                              ; preds = %342, %337
  %344 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 11), align 4, !tbaa !23
  %345 = icmp ne i32 %344, 0
  br i1 %345, label %346, label %349

346:                                              ; preds = %343
  %347 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.15)
          to label %348 unwind label %264

348:                                              ; preds = %346
  br label %349

349:                                              ; preds = %348, %343
  %350 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 12), align 4, !tbaa !24
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %352, label %355

352:                                              ; preds = %349
  %353 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.16)
          to label %354 unwind label %264

354:                                              ; preds = %352
  br label %355

355:                                              ; preds = %354, %349
  %356 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 13), align 4, !tbaa !25
  %357 = icmp ne i32 %356, 0
  br i1 %357, label %358, label %361

358:                                              ; preds = %355
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.17)
          to label %360 unwind label %264

360:                                              ; preds = %358
  br label %361

361:                                              ; preds = %360, %355
  %362 = load i32, ptr getelementptr inbounds (%struct.cpucaps_s, ptr @gCpuCaps, i32 0, i32 16), align 4, !tbaa !32
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %364, label %367

364:                                              ; preds = %361
  %365 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @.str.18)
          to label %366 unwind label %264

366:                                              ; preds = %364
  br label %367

367:                                              ; preds = %366, %361
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %369 unwind label %264

369:                                              ; preds = %367
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(112) %5)
          to label %370 unwind label %264

370:                                              ; preds = %369
  store i32 1, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1024, ptr %11) #7
  br label %372

371:                                              ; preds = %264, %87
  call void @llvm.lifetime.end.p0(i64 1024, ptr %11) #7
  br label %373

372:                                              ; preds = %370, %29
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #7
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %5) #7
  call void @llvm.lifetime.end.p0(i64 376, ptr %5) #7
  ret void

373:                                              ; preds = %371, %30
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #7
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %5) #7
  call void @llvm.lifetime.end.p0(i64 376, ptr %5) #7
  br label %374

374:                                              ; preds = %373
  %375 = load ptr, ptr %8, align 8
  %376 = load i32, ptr %9, align 4
  %377 = insertvalue { ptr, i32 } poison, ptr %375, 0
  %378 = insertvalue { ptr, i32 } %377, i32 %376, 1
  resume { ptr, i32 } %378
}

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9has_cpuidv() #3

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL8do_cpuidjPj(i32 noundef, ptr noundef) #3

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z18GetCpuFriendlyNameRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEPjS6_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef, ptr noundef) #0

; Function Attrs: nounwind
declare void @free(ptr noundef) #5

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL23check_os_katmai_supportv() #3

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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, !11, i64 56}
!10 = !{!"_ZTS9cpucaps_s", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68}
!11 = !{!"int", !7, i64 0}
!12 = !{!10, !11, i64 60}
!13 = !{!11, !11, i64 0}
!14 = !{!10, !11, i64 0}
!15 = !{!10, !11, i64 4}
!16 = !{!10, !11, i64 8}
!17 = !{!10, !11, i64 68}
!18 = !{!10, !11, i64 12}
!19 = !{!10, !11, i64 28}
!20 = !{!10, !11, i64 32}
!21 = !{!10, !11, i64 36}
!22 = !{!10, !11, i64 40}
!23 = !{!10, !11, i64 44}
!24 = !{!10, !11, i64 48}
!25 = !{!10, !11, i64 52}
!26 = !{!10, !11, i64 16}
!27 = !{!7, !7, i64 0}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!10, !11, i64 20}
!31 = !{!10, !11, i64 24}
!32 = !{!10, !11, i64 64}


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

%struct.cpucaps_s = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%"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::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }

@gCpuCaps = external dso_local local_unnamed_addr global %struct.cpucaps_s, align 4
@.str = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z10GetCpuCapsB5cxx11P9cpucaps_s(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr nocapture noundef %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %4 = alloca [4 x i32], align 16
  %5 = alloca [4 x i32], align 16
  %6 = alloca [1024 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %3) #8
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %3)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %4, i8 0, i64 16, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %5, i8 0, i64 16, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(72) %1, i8 0, i64 72, i1 false)
  %7 = getelementptr inbounds i8, ptr %1, i64 56
  store i32 1, ptr %7, align 4, !tbaa !5
  %8 = getelementptr inbounds i8, ptr %1, i64 60
  store i32 32, ptr %8, align 4, !tbaa !10
  %9 = call noundef zeroext i1 @_ZL9has_cpuidv()
  br i1 %9, label %17, label %10

10:                                               ; preds = %2
  %11 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @.str)
          to label %12 unwind label %15

12:                                               ; preds = %10
  %13 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %14 unwind label %15

14:                                               ; preds = %12
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(112) %3)
          to label %192 unwind label %15

15:                                               ; preds = %14, %12, %10
  %16 = landingpad { ptr, i32 }
          cleanup
  br label %193

17:                                               ; preds = %2
  call void @_ZL8do_cpuidjPj(i32 noundef 0, ptr noundef nonnull %4)
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %6) #8
  %18 = getelementptr inbounds i8, ptr %4, i64 4
  %19 = load i32, ptr %18, align 4, !tbaa !11
  %20 = getelementptr inbounds i8, ptr %4, i64 12
  %21 = load i32, ptr %20, align 4, !tbaa !11
  %22 = getelementptr inbounds i8, ptr %4, i64 8
  %23 = load i32, ptr %22, align 8, !tbaa !11
  %24 = load i32, ptr %4, align 16, !tbaa !11
  %25 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %6, i64 noundef 1023, ptr noundef nonnull @.str.1, i32 noundef %19, i32 noundef %21, i32 noundef %23, i32 noundef %24) #8
  %26 = load i32, ptr %4, align 16, !tbaa !11
  %27 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %6, i64 noundef 1023, ptr noundef nonnull @.str.2, ptr noundef nonnull %18, ptr noundef nonnull %20, ptr noundef nonnull %22, i32 noundef %26) #8
  %28 = load i32, ptr %4, align 16, !tbaa !11
  %.not = icmp eq i32 %28, 0
  br i1 %.not, label %107, label %29

29:                                               ; preds = %17
  call void @_ZL8do_cpuidjPj(i32 noundef 1, ptr noundef nonnull %5)
  %30 = load i32, ptr %5, align 16, !tbaa !11
  %31 = lshr i32 %30, 8
  %32 = and i32 %31, 15
  store i32 %32, ptr %1, align 4, !tbaa !12
  %33 = lshr i32 %30, 4
  %34 = and i32 %33, 15
  %35 = getelementptr inbounds i8, ptr %1, i64 4
  store i32 %34, ptr %35, align 4, !tbaa !13
  %36 = icmp eq i32 %32, 15
  br i1 %36, label %37, label %thread-pre-split

37:                                               ; preds = %29
  %38 = lshr i32 %30, 20
  %39 = and i32 %38, 255
  %40 = add nuw nsw i32 %39, 15
  store i32 %40, ptr %1, align 4, !tbaa !12
  br label %thread-pre-split

41:                                               ; preds = %105, %103, %100, %98, %95, %93, %90, %88, %86, %84, %79
  %42 = landingpad { ptr, i32 }
          cleanup
  br label %191

thread-pre-split:                                 ; preds = %29, %37
  %43 = phi i32 [ %40, %37 ], [ %32, %29 ]
  switch i32 %43, label %48 [
    i32 15, label %44
    i32 6, label %44
  ]

44:                                               ; preds = %thread-pre-split, %thread-pre-split
  %45 = lshr i32 %30, 12
  %46 = and i32 %45, 240
  %47 = or disjoint i32 %34, %46
  store i32 %47, ptr %35, align 4, !tbaa !13
  br label %48

48:                                               ; preds = %thread-pre-split, %44
  %49 = and i32 %30, 15
  %50 = getelementptr inbounds i8, ptr %1, i64 8
  store i32 %49, ptr %50, align 4, !tbaa !14
  %51 = getelementptr inbounds i8, ptr %5, i64 12
  %52 = load i32, ptr %51, align 4, !tbaa !11
  %53 = lshr i32 %52, 8
  %54 = and i32 %53, 1
  %55 = getelementptr inbounds i8, ptr %1, i64 68
  store i32 %54, ptr %55, align 4, !tbaa !15
  %56 = lshr i32 %52, 23
  %57 = and i32 %56, 1
  %58 = getelementptr inbounds i8, ptr %1, i64 12
  store i32 %57, ptr %58, align 4, !tbaa !16
  %59 = lshr i32 %52, 25
  %60 = and i32 %59, 1
  %61 = getelementptr inbounds i8, ptr %1, i64 28
  store i32 %60, ptr %61, align 4, !tbaa !17
  %62 = lshr i32 %52, 26
  %63 = and i32 %62, 1
  %64 = getelementptr inbounds i8, ptr %1, i64 32
  store i32 %63, ptr %64, align 4, !tbaa !18
  %65 = getelementptr inbounds i8, ptr %5, i64 8
  %66 = load i32, ptr %65, align 8, !tbaa !11
  %67 = getelementptr inbounds i8, ptr %1, i64 36
  %68 = insertelement <4 x i32> poison, i32 %66, i64 0
  %69 = shufflevector <4 x i32> %68, <4 x i32> poison, <4 x i32> zeroinitializer
  %70 = and <4 x i32> %69, <i32 1, i32 512, i32 524288, i32 1048576>
  store <4 x i32> %70, ptr %67, align 4, !tbaa !11
  %71 = and i32 %66, 33554432
  %72 = getelementptr inbounds i8, ptr %1, i64 52
  store i32 %71, ptr %72, align 4, !tbaa !19
  %73 = getelementptr inbounds i8, ptr %1, i64 16
  store i32 %60, ptr %73, align 4, !tbaa !20
  %74 = getelementptr inbounds i8, ptr %5, i64 4
  %75 = load i32, ptr %74, align 4, !tbaa !11
  %76 = lshr i32 %75, 5
  %77 = and i32 %76, 2040
  %.not46 = icmp eq i32 %77, 0
  br i1 %.not46, label %79, label %78

78:                                               ; preds = %48
  store i32 %77, ptr %8, align 4, !tbaa !10
  br label %79

79:                                               ; preds = %78, %48
  %80 = invoke noundef ptr @_Z18GetCpuFriendlyNameRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEPjS6_(ptr noundef nonnull align 8 dereferenceable(112) %3, ptr noundef nonnull %4, ptr noundef nonnull %5)
          to label %.preheader unwind label %41

.preheader:                                       ; preds = %79, %.preheader
  %.041 = phi ptr [ %83, %.preheader ], [ %80, %79 ]
  %81 = load i8, ptr %.041, align 1, !tbaa !21
  %82 = icmp eq i8 %81, 32
  %83 = getelementptr inbounds i8, ptr %.041, i64 1
  br i1 %82, label %.preheader, label %84, !llvm.loop !22

84:                                               ; preds = %.preheader
  %85 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %.041)
          to label %86 unwind label %41

86:                                               ; preds = %84
  %87 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %88 unwind label %41

88:                                               ; preds = %86
  call void @free(ptr noundef %80) #8
  %89 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @.str.3)
          to label %90 unwind label %41

90:                                               ; preds = %88
  %91 = load i32, ptr %1, align 4, !tbaa !12
  %92 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %89, i32 noundef %91)
          to label %93 unwind label %41

93:                                               ; preds = %90
  %94 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull @.str.4)
          to label %95 unwind label %41

95:                                               ; preds = %93
  %96 = load i32, ptr %35, align 4, !tbaa !13
  %97 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %94, i32 noundef %96)
          to label %98 unwind label %41

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

100:                                              ; preds = %98
  %101 = load i32, ptr %50, align 4, !tbaa !14
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %99, i32 noundef %101)
          to label %103 unwind label %41

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

105:                                              ; preds = %103
  %106 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %107 unwind label %41

107:                                              ; preds = %105, %17
  call void @_ZL8do_cpuidjPj(i32 noundef -2147483648, ptr noundef nonnull %4)
  %108 = load i32, ptr %4, align 16, !tbaa !11
  %109 = icmp ugt i32 %108, -2147483648
  br i1 %109, label %112, label %.thread

110:                                              ; preds = %189, %187, %185, %181, %177, %173, %169, %165, %161, %157, %153, %149, %145, %141
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %191

112:                                              ; preds = %107
  call void @_ZL8do_cpuidjPj(i32 noundef -2147483647, ptr noundef nonnull %5)
  %113 = getelementptr inbounds i8, ptr %5, i64 12
  %114 = load i32, ptr %113, align 4, !tbaa !11
  %115 = lshr i32 %114, 23
  %116 = and i32 %115, 1
  %117 = getelementptr inbounds i8, ptr %1, i64 12
  %118 = load i32, ptr %117, align 4, !tbaa !16
  %119 = or i32 %116, %118
  store i32 %119, ptr %117, align 4, !tbaa !16
  %120 = lshr i32 %114, 22
  %121 = and i32 %120, 1
  %122 = getelementptr inbounds i8, ptr %1, i64 16
  %123 = load i32, ptr %122, align 4, !tbaa !20
  %124 = or i32 %123, %121
  store i32 %124, ptr %122, align 4, !tbaa !20
  %125 = lshr i32 %114, 31
  %126 = getelementptr inbounds i8, ptr %1, i64 20
  store i32 %125, ptr %126, align 4, !tbaa !24
  %127 = lshr i32 %114, 30
  %128 = and i32 %127, 1
  %129 = getelementptr inbounds i8, ptr %1, i64 24
  store i32 %128, ptr %129, align 4, !tbaa !25
  %.pr63 = load i32, ptr %4, align 16, !tbaa !11
  %130 = icmp ugt i32 %.pr63, -2147483643
  br i1 %130, label %131, label %.thread

131:                                              ; preds = %112
  call void @_ZL8do_cpuidjPj(i32 noundef -2147483642, ptr noundef nonnull %5)
  %132 = getelementptr inbounds i8, ptr %5, i64 8
  %133 = load i32, ptr %132, align 8, !tbaa !11
  %134 = and i32 %133, 255
  store i32 %134, ptr %8, align 4, !tbaa !10
  br label %.thread

.thread:                                          ; preds = %107, %131, %112
  %135 = getelementptr inbounds i8, ptr %1, i64 28
  %136 = load i32, ptr %135, align 4, !tbaa !17
  %.not47 = icmp eq i32 %136, 0
  br i1 %.not47, label %.thread65, label %137

137:                                              ; preds = %.thread
  call void @_ZL23check_os_katmai_supportv()
  %.pr64 = load i32, ptr %135, align 4, !tbaa !17
  %.not48 = icmp eq i32 %.pr64, 0
  br i1 %.not48, label %.thread65, label %139

.thread65:                                        ; preds = %.thread, %137
  %138 = getelementptr inbounds i8, ptr %1, i64 32
  store i32 0, ptr %138, align 4, !tbaa !18
  br label %139

139:                                              ; preds = %.thread65, %137
  %140 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 12), align 4, !tbaa !16
  %.not49 = icmp eq i32 %140, 0
  br i1 %.not49, label %143, label %141

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

143:                                              ; preds = %141, %139
  %144 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 16), align 4, !tbaa !20
  %.not50 = icmp eq i32 %144, 0
  br i1 %.not50, label %147, label %145

145:                                              ; preds = %143
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @.str.8)
          to label %147 unwind label %110

147:                                              ; preds = %145, %143
  %148 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 20), align 4, !tbaa !24
  %.not51 = icmp eq i32 %148, 0
  br i1 %.not51, label %151, label %149

149:                                              ; preds = %147
  %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @.str.9)
          to label %151 unwind label %110

151:                                              ; preds = %149, %147
  %152 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 24), align 4, !tbaa !25
  %.not52 = icmp eq i32 %152, 0
  br i1 %.not52, label %155, label %153

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

155:                                              ; preds = %153, %151
  %156 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 28), align 4, !tbaa !17
  %.not53 = icmp eq i32 %156, 0
  br i1 %.not53, label %159, label %157

157:                                              ; preds = %155
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @.str.11)
          to label %159 unwind label %110

159:                                              ; preds = %157, %155
  %160 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 32), align 4, !tbaa !18
  %.not54 = icmp eq i32 %160, 0
  br i1 %.not54, label %163, label %161

161:                                              ; preds = %159
  %162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @.str.12)
          to label %163 unwind label %110

163:                                              ; preds = %161, %159
  %164 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 36), align 4, !tbaa !26
  %.not55 = icmp eq i32 %164, 0
  br i1 %.not55, label %167, label %165

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

167:                                              ; preds = %165, %163
  %168 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 40), align 4, !tbaa !27
  %.not56 = icmp eq i32 %168, 0
  br i1 %.not56, label %171, label %169

169:                                              ; preds = %167
  %170 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @.str.14)
          to label %171 unwind label %110

171:                                              ; preds = %169, %167
  %172 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 44), align 4, !tbaa !28
  %.not57 = icmp eq i32 %172, 0
  br i1 %.not57, label %175, label %173

173:                                              ; preds = %171
  %174 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @.str.15)
          to label %175 unwind label %110

175:                                              ; preds = %173, %171
  %176 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 48), align 4, !tbaa !29
  %.not58 = icmp eq i32 %176, 0
  br i1 %.not58, label %179, label %177

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

179:                                              ; preds = %177, %175
  %180 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 52), align 4, !tbaa !19
  %.not59 = icmp eq i32 %180, 0
  br i1 %.not59, label %183, label %181

181:                                              ; preds = %179
  %182 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @.str.17)
          to label %183 unwind label %110

183:                                              ; preds = %181, %179
  %184 = load i32, ptr getelementptr inbounds (i8, ptr @gCpuCaps, i64 64), align 4, !tbaa !30
  %.not60 = icmp eq i32 %184, 0
  br i1 %.not60, label %187, label %185

185:                                              ; preds = %183
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @.str.18)
          to label %187 unwind label %110

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

189:                                              ; preds = %187
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(112) %3)
          to label %190 unwind label %110

190:                                              ; preds = %189
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %6) #8
  br label %192

191:                                              ; preds = %110, %41
  %.pn = phi { ptr, i32 } [ %111, %110 ], [ %42, %41 ]
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %6) #8
  br label %193

192:                                              ; preds = %14, %190
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #8
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %3) #8
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %3) #8
  ret void

193:                                              ; preds = %191, %15
  %.pn.pn = phi { ptr, i32 } [ %.pn, %191 ], [ %16, %15 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #8
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %3) #8
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn.pn
}

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9has_cpuidv() local_unnamed_addr #3

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL8do_cpuidjPj(i32 noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z18GetCpuFriendlyNameRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEPjS6_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL23check_os_katmai_supportv() local_unnamed_addr #3

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

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

!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, !7, i64 56}
!6 = !{!"_ZTS9cpucaps_s", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!6, !7, i64 60}
!11 = !{!7, !7, i64 0}
!12 = !{!6, !7, i64 0}
!13 = !{!6, !7, i64 4}
!14 = !{!6, !7, i64 8}
!15 = !{!6, !7, i64 68}
!16 = !{!6, !7, i64 12}
!17 = !{!6, !7, i64 28}
!18 = !{!6, !7, i64 32}
!19 = !{!6, !7, i64 52}
!20 = !{!6, !7, i64 16}
!21 = !{!8, !8, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!6, !7, i64 20}
!25 = !{!6, !7, i64 24}
!26 = !{!6, !7, i64 36}
!27 = !{!6, !7, i64 40}
!28 = !{!6, !7, i64 44}
!29 = !{!6, !7, i64 48}
!30 = !{!6, !7, i64 64}


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