; LLVM IR from stonne-simulator/omega :: omega-code/stonne/src/other_main/main_exec.ll (Z20runSparseGEMMCommandiPPc)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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 }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%class.Config = type { i32, %class.DSNetworkConfig, %class.DSwitchConfig, %class.MSNetworkConfig, %class.MSwitchConfig, %class.ASNetworkConfig, %class.ASwitchConfig, %class.LookUpTableConfig, %class.SDMemoryConfig }
%class.DSNetworkConfig = type { i32 }
%class.DSwitchConfig = type { i32, i32, i32, i32 }
%class.MSNetworkConfig = type { i32, i32, i32, i32 }
%class.MSwitchConfig = type { i32, i32, i32, i32, i32, i32 }
%class.ASNetworkConfig = type { i32, i32 }
%class.ASwitchConfig = type { i32, i32, i32, i32, i32, i32 }
%class.LookUpTableConfig = type { i32, i32 }
%class.SDMemoryConfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.11 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__._Z20runSparseGEMMCommandiPPc = external hidden unnamed_addr constant [40 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z20runSparseGEMMCommandiPPc(i32 noundef %0, ptr noundef %1) #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca float, align 4
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %class.Config, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %class.Config, align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca float, align 4
  store i32 %0, ptr %3, align 4, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #12
  store float 0x3FA99999A0000000, ptr %5, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %33 unwind label %152

33:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #12
  store i32 4, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #12
  store i32 4, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #12
  store i32 8, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #12
  store i32 20, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #12
  store i32 20, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #12
  store i32 1, ptr %15, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 160, ptr %16) #12
  invoke void @_ZN6ConfigC1Ev(ptr noundef nonnull align 4 dereferenceable(160) %16)
          to label %34 unwind label %156

34:                                               ; preds = %33
  %35 = getelementptr inbounds %class.Config, ptr %16, i32 0, i32 8
  %36 = getelementptr inbounds %class.SDMemoryConfig, ptr %35, i32 0, i32 0
  store i32 1, ptr %36, align 4, !tbaa !15
  %37 = load i32, ptr %3, align 4, !tbaa !5
  %38 = load ptr, ptr %4, align 8, !tbaa !9
  invoke void @_Z26configSparseGEMMParametersiPPcR6ConfigRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERjSA_SA_SA_SA_R8Dataflow(i32 noundef %37, ptr noundef %38, ptr noundef nonnull align 4 dereferenceable(160) %16, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %39 unwind label %156

39:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #12
  %40 = load i32, ptr %10, align 4, !tbaa !5
  %41 = load i32, ptr %12, align 4, !tbaa !5
  %42 = load i32, ptr %13, align 4, !tbaa !5
  %43 = invoke noundef ptr @_Z19generateMatrixDensejjj(i32 noundef %40, i32 noundef %41, i32 noundef %42)
          to label %44 unwind label %160

44:                                               ; preds = %39
  store ptr %43, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #12
  %45 = load i32, ptr %12, align 4, !tbaa !5
  %46 = load i32, ptr %11, align 4, !tbaa !5
  %47 = load i32, ptr %14, align 4, !tbaa !5
  %48 = invoke noundef ptr @_Z19generateMatrixDensejjj(i32 noundef %45, i32 noundef %46, i32 noundef %47)
          to label %49 unwind label %164

49:                                               ; preds = %44
  store ptr %48, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #12
  %50 = load i32, ptr %10, align 4, !tbaa !5
  %51 = load i32, ptr %11, align 4, !tbaa !5
  %52 = mul i32 %50, %51
  %53 = zext i32 %52 to i64
  %54 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %53, i64 4)
  %55 = extractvalue { i64, i1 } %54, 1
  %56 = extractvalue { i64, i1 } %54, 0
  %57 = select i1 %55, i64 -1, i64 %56
  %58 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %57) #13
          to label %59 unwind label %168

59:                                               ; preds = %49
  store ptr %58, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #12
  %60 = load i32, ptr %10, align 4, !tbaa !5
  %61 = load i32, ptr %11, align 4, !tbaa !5
  %62 = mul i32 %60, %61
  %63 = zext i32 %62 to i64
  %64 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %63, i64 4)
  %65 = extractvalue { i64, i1 } %64, 1
  %66 = extractvalue { i64, i1 } %64, 0
  %67 = select i1 %65, i64 -1, i64 %66
  %68 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %67) #13
          to label %69 unwind label %172

69:                                               ; preds = %59
  store ptr %68, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #12
  %70 = load i32, ptr %10, align 4, !tbaa !5
  %71 = load i32, ptr %11, align 4, !tbaa !5
  %72 = mul i32 %70, %71
  %73 = zext i32 %72 to i64
  %74 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %73, i64 4)
  %75 = extractvalue { i64, i1 } %74, 1
  %76 = extractvalue { i64, i1 } %74, 0
  %77 = select i1 %75, i64 -1, i64 %76
  %78 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #13
          to label %79 unwind label %176

79:                                               ; preds = %69
  store ptr %78, ptr %21, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #12
  %80 = load ptr, ptr %17, align 8, !tbaa !9
  %81 = load i32, ptr %10, align 4, !tbaa !5
  %82 = load i32, ptr %12, align 4, !tbaa !5
  %83 = invoke noundef ptr @_Z23generateBitMapFromDensePfjj15GENERATION_TYPE(ptr noundef %80, i32 noundef %81, i32 noundef %82, i32 noundef 0)
          to label %84 unwind label %180

84:                                               ; preds = %79
  store ptr %83, ptr %22, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #12
  %85 = load ptr, ptr %18, align 8, !tbaa !9
  %86 = load i32, ptr %12, align 4, !tbaa !5
  %87 = load i32, ptr %11, align 4, !tbaa !5
  %88 = invoke noundef ptr @_Z23generateBitMapFromDensePfjj15GENERATION_TYPE(ptr noundef %85, i32 noundef %86, i32 noundef %87, i32 noundef 1)
          to label %89 unwind label %184

89:                                               ; preds = %84
  store ptr %88, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #12
  %90 = load ptr, ptr %17, align 8, !tbaa !9
  %91 = load ptr, ptr %22, align 8, !tbaa !9
  %92 = load i32, ptr %10, align 4, !tbaa !5
  %93 = load i32, ptr %12, align 4, !tbaa !5
  %94 = invoke noundef ptr @_Z29generateMatrixSparseFromDensePfPjjj15GENERATION_TYPE(ptr noundef %90, ptr noundef %91, i32 noundef %92, i32 noundef %93, i32 noundef 0)
          to label %95 unwind label %188

95:                                               ; preds = %89
  store ptr %94, ptr %24, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #12
  %96 = load ptr, ptr %18, align 8, !tbaa !9
  %97 = load ptr, ptr %23, align 8, !tbaa !9
  %98 = load i32, ptr %12, align 4, !tbaa !5
  %99 = load i32, ptr %11, align 4, !tbaa !5
  %100 = invoke noundef ptr @_Z29generateMatrixSparseFromDensePfPjjj15GENERATION_TYPE(ptr noundef %96, ptr noundef %97, i32 noundef %98, i32 noundef %99, i32 noundef 1)
          to label %101 unwind label %192

101:                                              ; preds = %95
  store ptr %100, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #12
  %102 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 320) #13
          to label %103 unwind label %196

103:                                              ; preds = %101
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %27, ptr align 4 %16, i64 160, i1 false), !tbaa.struct !29
  invoke void @_ZN6StonneC1E6Config(ptr noundef nonnull align 8 dereferenceable(316) %102, ptr noundef byval(%class.Config) align 8 %27)
          to label %104 unwind label %200

104:                                              ; preds = %103
  store ptr %102, ptr %26, align 8, !tbaa !9
  %105 = load ptr, ptr %26, align 8, !tbaa !9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %106 unwind label %196

106:                                              ; preds = %104
  %107 = load i32, ptr %11, align 4, !tbaa !5
  %108 = load i32, ptr %12, align 4, !tbaa !5
  %109 = load i32, ptr %10, align 4, !tbaa !5
  %110 = load ptr, ptr %24, align 8, !tbaa !9
  %111 = load ptr, ptr %25, align 8, !tbaa !9
  %112 = load ptr, ptr %22, align 8, !tbaa !9
  %113 = load ptr, ptr %23, align 8, !tbaa !9
  %114 = load ptr, ptr %20, align 8, !tbaa !9
  %115 = load ptr, ptr %21, align 8, !tbaa !9
  %116 = load i32, ptr %15, align 4, !tbaa !13
  invoke void @_ZN6Stonne8loadGEMMENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjjjPfS6_PjS7_S6_S7_8Dataflow(ptr noundef nonnull align 8 dereferenceable(316) %105, ptr noundef %28, i32 noundef %107, i32 noundef %108, i32 noundef %109, ptr noundef %110, ptr noundef %111, ptr noundef %112, ptr noundef %113, ptr noundef %114, ptr noundef %115, i32 noundef %116)
          to label %117 unwind label %204

117:                                              ; preds = %106
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #12
  %118 = load ptr, ptr %26, align 8, !tbaa !9
  invoke void @_ZN6Stonne3runEv(ptr noundef nonnull align 8 dereferenceable(316) %118)
          to label %119 unwind label %196

119:                                              ; preds = %117
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.16)
          to label %121 unwind label %196

121:                                              ; preds = %119
  %122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %123 unwind label %196

123:                                              ; preds = %121
  %124 = load ptr, ptr %17, align 8, !tbaa !9
  %125 = load ptr, ptr %18, align 8, !tbaa !9
  %126 = load ptr, ptr %19, align 8, !tbaa !9
  %127 = load i32, ptr %10, align 4, !tbaa !5
  %128 = load i32, ptr %11, align 4, !tbaa !5
  %129 = load i32, ptr %12, align 4, !tbaa !5
  invoke void @_Z8cpu_gemmPfS_S_jjj(ptr noundef %124, ptr noundef %125, ptr noundef %126, i32 noundef %127, i32 noundef %128, i32 noundef %129)
          to label %130 unwind label %196

130:                                              ; preds = %123
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.17)
          to label %132 unwind label %196

132:                                              ; preds = %130
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %134 unwind label %196

134:                                              ; preds = %132
  %135 = load ptr, ptr %19, align 8, !tbaa !9
  %136 = load i32, ptr %10, align 4, !tbaa !5
  %137 = load i32, ptr %11, align 4, !tbaa !5
  invoke void @_Z16printDenseMatrixPfjj(ptr noundef %135, i32 noundef %136, i32 noundef %137)
          to label %138 unwind label %196

138:                                              ; preds = %134
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.18)
          to label %140 unwind label %196

140:                                              ; preds = %138
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %142 unwind label %196

142:                                              ; preds = %140
  %143 = load ptr, ptr %20, align 8, !tbaa !9
  %144 = load i32, ptr %10, align 4, !tbaa !5
  %145 = load i32, ptr %11, align 4, !tbaa !5
  invoke void @_Z16printDenseMatrixPfjj(ptr noundef %143, i32 noundef %144, i32 noundef %145)
          to label %146 unwind label %196

146:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #12
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %147

147:                                              ; preds = %331, %146
  %148 = load i32, ptr %29, align 4, !tbaa !5
  %149 = load i32, ptr %10, align 4, !tbaa !5
  %150 = icmp ult i32 %148, %149
  br i1 %150, label %208, label %151

151:                                              ; preds = %147
  store i32 2, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #12
  br label %334

152:                                              ; preds = %2
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %8, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %9, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #12
  br label %392

156:                                              ; preds = %34, %33
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %8, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %9, align 4
  br label %391

160:                                              ; preds = %39
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %8, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %9, align 4
  br label %390

164:                                              ; preds = %44
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %8, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %9, align 4
  br label %389

168:                                              ; preds = %49
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %8, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %9, align 4
  br label %388

172:                                              ; preds = %59
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %8, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %9, align 4
  br label %387

176:                                              ; preds = %69
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %8, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %9, align 4
  br label %386

180:                                              ; preds = %79
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %8, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %9, align 4
  br label %385

184:                                              ; preds = %84
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %8, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %9, align 4
  br label %384

188:                                              ; preds = %89
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %8, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %9, align 4
  br label %383

192:                                              ; preds = %95
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %8, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %9, align 4
  br label %382

196:                                              ; preds = %338, %336, %334, %142, %140, %138, %134, %132, %130, %123, %121, %119, %117, %104, %101
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %8, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %9, align 4
  br label %381

200:                                              ; preds = %103
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %8, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %102, i64 noundef 320) #14
  br label %381

204:                                              ; preds = %106
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %8, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #12
  br label %381

208:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #12
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %209

209:                                              ; preds = %327, %208
  %210 = load i32, ptr %31, align 4, !tbaa !5
  %211 = load i32, ptr %11, align 4, !tbaa !5
  %212 = icmp ult i32 %210, %211
  br i1 %212, label %214, label %213

213:                                              ; preds = %209
  store i32 5, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #12
  br label %330

214:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #12
  %215 = load ptr, ptr %19, align 8, !tbaa !9
  %216 = load i32, ptr %29, align 4, !tbaa !5
  %217 = load i32, ptr %11, align 4, !tbaa !5
  %218 = mul i32 %216, %217
  %219 = load i32, ptr %31, align 4, !tbaa !5
  %220 = add i32 %218, %219
  %221 = zext i32 %220 to i64
  %222 = getelementptr inbounds float, ptr %215, i64 %221
  %223 = load float, ptr %222, align 4, !tbaa !11
  %224 = load ptr, ptr %20, align 8, !tbaa !9
  %225 = load i32, ptr %29, align 4, !tbaa !5
  %226 = load i32, ptr %11, align 4, !tbaa !5
  %227 = mul i32 %225, %226
  %228 = load i32, ptr %31, align 4, !tbaa !5
  %229 = add i32 %227, %228
  %230 = zext i32 %229 to i64
  %231 = getelementptr inbounds float, ptr %224, i64 %230
  %232 = load float, ptr %231, align 4, !tbaa !11
  %233 = fsub float %223, %232
  %234 = invoke noundef float @_ZSt4fabsf(float noundef %233)
          to label %235 unwind label %322

235:                                              ; preds = %214
  store float %234, ptr %32, align 4, !tbaa !11
  %236 = load float, ptr %32, align 4, !tbaa !11
  %237 = load float, ptr %5, align 4, !tbaa !11
  %238 = fcmp ogt float %236, %237
  br i1 %238, label %239, label %326

239:                                              ; preds = %235
  %240 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.19)
          to label %241 unwind label %322

241:                                              ; preds = %239
  %242 = load i32, ptr %29, align 4, !tbaa !5
  %243 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %240, i32 noundef %242)
          to label %244 unwind label %322

244:                                              ; preds = %241
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef @.str.20)
          to label %246 unwind label %322

246:                                              ; preds = %244
  %247 = load i32, ptr %31, align 4, !tbaa !5
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %245, i32 noundef %247)
          to label %249 unwind label %322

249:                                              ; preds = %246
  %250 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef @.str.21)
          to label %251 unwind label %322

251:                                              ; preds = %249
  %252 = load ptr, ptr %20, align 8, !tbaa !9
  %253 = load i32, ptr %29, align 4, !tbaa !5
  %254 = load i32, ptr %11, align 4, !tbaa !5
  %255 = mul i32 %253, %254
  %256 = load i32, ptr %31, align 4, !tbaa !5
  %257 = add i32 %255, %256
  %258 = zext i32 %257 to i64
  %259 = getelementptr inbounds float, ptr %252, i64 %258
  %260 = load float, ptr %259, align 4, !tbaa !11
  %261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %250, float noundef %260)
          to label %262 unwind label %322

262:                                              ; preds = %251
  %263 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef @.str.22)
          to label %264 unwind label %322

264:                                              ; preds = %262
  %265 = load ptr, ptr %19, align 8, !tbaa !9
  %266 = load i32, ptr %29, align 4, !tbaa !5
  %267 = load i32, ptr %11, align 4, !tbaa !5
  %268 = mul i32 %266, %267
  %269 = load i32, ptr %31, align 4, !tbaa !5
  %270 = add i32 %268, %269
  %271 = zext i32 %270 to i64
  %272 = getelementptr inbounds float, ptr %265, i64 %271
  %273 = load float, ptr %272, align 4, !tbaa !11
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %263, float noundef %273)
          to label %275 unwind label %322

275:                                              ; preds = %264
  %276 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %277 unwind label %322

277:                                              ; preds = %275
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.11)
          to label %279 unwind label %322

279:                                              ; preds = %277
  %280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %278, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %281 unwind label %322

281:                                              ; preds = %279
  %282 = load ptr, ptr %17, align 8, !tbaa !9
  %283 = icmp eq ptr %282, null
  br i1 %283, label %285, label %284

284:                                              ; preds = %281
  call void @_ZdaPv(ptr noundef %282) #14
  br label %285

285:                                              ; preds = %284, %281
  %286 = load ptr, ptr %18, align 8, !tbaa !9
  %287 = icmp eq ptr %286, null
  br i1 %287, label %289, label %288

288:                                              ; preds = %285
  call void @_ZdaPv(ptr noundef %286) #14
  br label %289

289:                                              ; preds = %288, %285
  %290 = load ptr, ptr %22, align 8, !tbaa !9
  %291 = icmp eq ptr %290, null
  br i1 %291, label %293, label %292

292:                                              ; preds = %289
  call void @_ZdaPv(ptr noundef %290) #14
  br label %293

293:                                              ; preds = %292, %289
  %294 = load ptr, ptr %23, align 8, !tbaa !9
  %295 = icmp eq ptr %294, null
  br i1 %295, label %297, label %296

296:                                              ; preds = %293
  call void @_ZdaPv(ptr noundef %294) #14
  br label %297

297:                                              ; preds = %296, %293
  %298 = load ptr, ptr %24, align 8, !tbaa !9
  %299 = icmp eq ptr %298, null
  br i1 %299, label %301, label %300

300:                                              ; preds = %297
  call void @_ZdaPv(ptr noundef %298) #14
  br label %301

301:                                              ; preds = %300, %297
  %302 = load ptr, ptr %25, align 8, !tbaa !9
  %303 = icmp eq ptr %302, null
  br i1 %303, label %305, label %304

304:                                              ; preds = %301
  call void @_ZdaPv(ptr noundef %302) #14
  br label %305

305:                                              ; preds = %304, %301
  %306 = load ptr, ptr %19, align 8, !tbaa !9
  %307 = icmp eq ptr %306, null
  br i1 %307, label %309, label %308

308:                                              ; preds = %305
  call void @_ZdaPv(ptr noundef %306) #14
  br label %309

309:                                              ; preds = %308, %305
  %310 = load ptr, ptr %20, align 8, !tbaa !9
  %311 = icmp eq ptr %310, null
  br i1 %311, label %313, label %312

312:                                              ; preds = %309
  call void @_ZdaPv(ptr noundef %310) #14
  br label %313

313:                                              ; preds = %312, %309
  %314 = load ptr, ptr %21, align 8, !tbaa !9
  %315 = icmp eq ptr %314, null
  br i1 %315, label %317, label %316

316:                                              ; preds = %313
  call void @_ZdaPv(ptr noundef %314) #14
  br label %317

317:                                              ; preds = %316, %313
  %318 = load ptr, ptr %26, align 8, !tbaa !9
  %319 = icmp eq ptr %318, null
  br i1 %319, label %321, label %320

320:                                              ; preds = %317
  call void @_ZN6StonneD1Ev(ptr noundef nonnull align 8 dereferenceable(316) %318) #12
  call void @_ZdlPvm(ptr noundef %318, i64 noundef 320) #14
  br label %321

321:                                              ; preds = %320, %317
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.13, i32 noundef 245, ptr noundef @__PRETTY_FUNCTION__._Z20runSparseGEMMCommandiPPc) #15
  unreachable

322:                                              ; preds = %279, %277, %275, %264, %262, %251, %249, %246, %244, %241, %239, %214
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %8, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #12
  br label %381

326:                                              ; preds = %235
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #12
  br label %327

327:                                              ; preds = %326
  %328 = load i32, ptr %31, align 4, !tbaa !5
  %329 = add nsw i32 %328, 1
  store i32 %329, ptr %31, align 4, !tbaa !5
  br label %209, !llvm.loop !34

330:                                              ; preds = %213
  br label %331

331:                                              ; preds = %330
  %332 = load i32, ptr %29, align 4, !tbaa !5
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr %29, align 4, !tbaa !5
  br label %147, !llvm.loop !36

334:                                              ; preds = %151
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.14)
          to label %336 unwind label %196

336:                                              ; preds = %334
  %337 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %335, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %338 unwind label %196

338:                                              ; preds = %336
  %339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %340 unwind label %196

340:                                              ; preds = %338
  %341 = load ptr, ptr %17, align 8, !tbaa !9
  %342 = icmp eq ptr %341, null
  br i1 %342, label %344, label %343

343:                                              ; preds = %340
  call void @_ZdaPv(ptr noundef %341) #14
  br label %344

344:                                              ; preds = %343, %340
  %345 = load ptr, ptr %18, align 8, !tbaa !9
  %346 = icmp eq ptr %345, null
  br i1 %346, label %348, label %347

347:                                              ; preds = %344
  call void @_ZdaPv(ptr noundef %345) #14
  br label %348

348:                                              ; preds = %347, %344
  %349 = load ptr, ptr %22, align 8, !tbaa !9
  %350 = icmp eq ptr %349, null
  br i1 %350, label %352, label %351

351:                                              ; preds = %348
  call void @_ZdaPv(ptr noundef %349) #14
  br label %352

352:                                              ; preds = %351, %348
  %353 = load ptr, ptr %23, align 8, !tbaa !9
  %354 = icmp eq ptr %353, null
  br i1 %354, label %356, label %355

355:                                              ; preds = %352
  call void @_ZdaPv(ptr noundef %353) #14
  br label %356

356:                                              ; preds = %355, %352
  %357 = load ptr, ptr %24, align 8, !tbaa !9
  %358 = icmp eq ptr %357, null
  br i1 %358, label %360, label %359

359:                                              ; preds = %356
  call void @_ZdaPv(ptr noundef %357) #14
  br label %360

360:                                              ; preds = %359, %356
  %361 = load ptr, ptr %25, align 8, !tbaa !9
  %362 = icmp eq ptr %361, null
  br i1 %362, label %364, label %363

363:                                              ; preds = %360
  call void @_ZdaPv(ptr noundef %361) #14
  br label %364

364:                                              ; preds = %363, %360
  %365 = load ptr, ptr %19, align 8, !tbaa !9
  %366 = icmp eq ptr %365, null
  br i1 %366, label %368, label %367

367:                                              ; preds = %364
  call void @_ZdaPv(ptr noundef %365) #14
  br label %368

368:                                              ; preds = %367, %364
  %369 = load ptr, ptr %20, align 8, !tbaa !9
  %370 = icmp eq ptr %369, null
  br i1 %370, label %372, label %371

371:                                              ; preds = %368
  call void @_ZdaPv(ptr noundef %369) #14
  br label %372

372:                                              ; preds = %371, %368
  %373 = load ptr, ptr %21, align 8, !tbaa !9
  %374 = icmp eq ptr %373, null
  br i1 %374, label %376, label %375

375:                                              ; preds = %372
  call void @_ZdaPv(ptr noundef %373) #14
  br label %376

376:                                              ; preds = %375, %372
  %377 = load ptr, ptr %26, align 8, !tbaa !9
  %378 = icmp eq ptr %377, null
  br i1 %378, label %380, label %379

379:                                              ; preds = %376
  call void @_ZN6StonneD1Ev(ptr noundef nonnull align 8 dereferenceable(316) %377) #12
  call void @_ZdlPvm(ptr noundef %377, i64 noundef 320) #14
  br label %380

380:                                              ; preds = %379, %376
  store i32 1, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #12
  call void @llvm.lifetime.end.p0(i64 160, ptr %16) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #12
  ret i1 true

381:                                              ; preds = %322, %204, %200, %196
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #12
  br label %382

382:                                              ; preds = %381, %192
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #12
  br label %383

383:                                              ; preds = %382, %188
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #12
  br label %384

384:                                              ; preds = %383, %184
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #12
  br label %385

385:                                              ; preds = %384, %180
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #12
  br label %386

386:                                              ; preds = %385, %176
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #12
  br label %387

387:                                              ; preds = %386, %172
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #12
  br label %388

388:                                              ; preds = %387, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #12
  br label %389

389:                                              ; preds = %388, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #12
  br label %390

390:                                              ; preds = %389, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #12
  br label %391

391:                                              ; preds = %390, %156
  call void @llvm.lifetime.end.p0(i64 160, ptr %16) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #12
  br label %392

392:                                              ; preds = %391, %152
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #12
  br label %393

393:                                              ; preds = %392
  %394 = load ptr, ptr %8, align 8
  %395 = load i32, ptr %9, align 4
  %396 = insertvalue { ptr, i32 } poison, ptr %394, 0
  %397 = insertvalue { ptr, i32 } %396, i32 %395, 1
  resume { ptr, i32 } %397
}

; 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) #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 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)) #3

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

declare void @_ZN6ConfigC1Ev(ptr noundef nonnull align 4 dereferenceable(160)) unnamed_addr #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #5

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

declare void @_ZN6StonneC1E6Config(ptr noundef nonnull align 8 dereferenceable(316), ptr noundef byval(%class.Config) align 8) unnamed_addr #4

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

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

declare void @_ZN6Stonne3runEv(ptr noundef nonnull align 8 dereferenceable(316)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) #9

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #8

; Function Attrs: nounwind
declare void @_ZN6StonneD1Ev(ptr noundef nonnull align 8 dereferenceable(316)) unnamed_addr #10

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z26configSparseGEMMParametersiPPcR6ConfigRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERjSA_SA_SA_SA_R8Dataflow(i32 noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

declare noundef ptr @_Z19generateMatrixDensejjj(i32 noundef, i32 noundef, i32 noundef) #4

declare noundef ptr @_Z23generateBitMapFromDensePfjj15GENERATION_TYPE(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #4

declare noundef ptr @_Z29generateMatrixSparseFromDensePfPjjj15GENERATION_TYPE(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) #4

declare void @_ZN6Stonne8loadGEMMENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjjjPfS6_PjS7_S6_S7_8Dataflow(ptr noundef nonnull align 8 dereferenceable(316), ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #4

declare void @_Z8cpu_gemmPfS_S_jjj(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) #4

declare void @_Z16printDenseMatrixPfjj(ptr noundef, i32 noundef, i32 noundef) #4

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { 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 #4 = { "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 #10 = { 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 #11 = { 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 #12 = { nounwind }
attributes #13 = { builtin allocsize(0) }
attributes #14 = { builtin nounwind }
attributes #15 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTS8Dataflow", !7, i64 0}
!15 = !{!16, !27, i64 104}
!16 = !{!"_ZTS6Config", !6, i64 0, !17, i64 4, !18, i64 8, !19, i64 24, !21, i64 40, !22, i64 64, !24, i64 72, !25, i64 96, !26, i64 104}
!17 = !{!"_ZTS15DSNetworkConfig", !6, i64 0}
!18 = !{!"_ZTS13DSwitchConfig", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12}
!19 = !{!"_ZTS15MSNetworkConfig", !20, i64 0, !6, i64 4, !6, i64 8, !6, i64 12}
!20 = !{!"_ZTS19MultiplierNetwork_t", !7, i64 0}
!21 = !{!"_ZTS13MSwitchConfig", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20}
!22 = !{!"_ZTS15ASNetworkConfig", !23, i64 0, !6, i64 4}
!23 = !{!"_ZTS15ReduceNetwork_t", !7, i64 0}
!24 = !{!"_ZTS13ASwitchConfig", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20}
!25 = !{!"_ZTS17LookUpTableConfig", !6, i64 0, !6, i64 4}
!26 = !{!"_ZTS14SDMemoryConfig", !27, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !28, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52}
!27 = !{!"_ZTS18MemoryController_t", !7, i64 0}
!28 = !{!"_ZTS17MemoryHierarchy_t", !7, i64 0}
!29 = !{i64 0, i64 4, !5, i64 4, i64 4, !5, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 4, !5, i64 20, i64 4, !5, i64 24, i64 4, !30, i64 28, i64 4, !5, i64 32, i64 4, !5, i64 36, i64 4, !5, i64 40, i64 4, !5, i64 44, i64 4, !5, i64 48, i64 4, !5, i64 52, i64 4, !5, i64 56, i64 4, !5, i64 60, i64 4, !5, i64 64, i64 4, !31, i64 68, i64 4, !5, i64 72, i64 4, !5, i64 76, i64 4, !5, i64 80, i64 4, !5, i64 84, i64 4, !5, i64 88, i64 4, !5, i64 92, i64 4, !5, i64 96, i64 4, !5, i64 100, i64 4, !5, i64 104, i64 4, !32, i64 108, i64 4, !5, i64 112, i64 4, !5, i64 116, i64 4, !5, i64 120, i64 4, !5, i64 124, i64 4, !5, i64 128, i64 4, !5, i64 132, i64 4, !33, i64 136, i64 4, !5, i64 140, i64 4, !5, i64 144, i64 4, !5, i64 148, i64 4, !5, i64 152, i64 4, !5, i64 156, i64 4, !5}
!30 = !{!20, !20, i64 0}
!31 = !{!23, !23, i64 0}
!32 = !{!27, !27, i64 0}
!33 = !{!28, !28, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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 }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%class.Config = type { i32, %class.DSNetworkConfig, %class.DSwitchConfig, %class.MSNetworkConfig, %class.MSwitchConfig, %class.ASNetworkConfig, %class.ASwitchConfig, %class.LookUpTableConfig, %class.SDMemoryConfig }
%class.DSNetworkConfig = type { i32 }
%class.DSwitchConfig = type { i32, i32, i32, i32 }
%class.MSNetworkConfig = type { i32, i32, i32, i32 }
%class.MSwitchConfig = type { i32, i32, i32, i32, i32, i32 }
%class.ASNetworkConfig = type { i32, i32 }
%class.ASwitchConfig = type { i32, i32, i32, i32, i32, i32 }
%class.LookUpTableConfig = type { i32, i32 }
%class.SDMemoryConfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.11 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__._Z20runSparseGEMMCommandiPPc = external hidden unnamed_addr constant [40 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z20runSparseGEMMCommandiPPc(i32 noundef %0, ptr noundef %1) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %class.Config, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %13 unwind label %89

13:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #10
  store i32 4, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10
  store i32 4, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #10
  store i32 8, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #10
  store i32 20, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #10
  store i32 20, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #10
  store i32 1, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %11) #10
  invoke void @_ZN6ConfigC1Ev(ptr noundef nonnull align 4 dereferenceable(160) %11)
          to label %14 unwind label %91

14:                                               ; preds = %13
  %15 = getelementptr inbounds i8, ptr %11, i64 104
  store i32 1, ptr %15, align 8, !tbaa !11
  invoke void @_Z26configSparseGEMMParametersiPPcR6ConfigRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERjSA_SA_SA_SA_R8Dataflow(i32 noundef %0, ptr noundef %1, ptr noundef nonnull align 4 dereferenceable(160) %11, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %16 unwind label %91

16:                                               ; preds = %14
  %17 = load i32, ptr %5, align 4, !tbaa !5
  %18 = load i32, ptr %7, align 4, !tbaa !5
  %19 = load i32, ptr %8, align 4, !tbaa !5
  %20 = invoke noundef ptr @_Z19generateMatrixDensejjj(i32 noundef %17, i32 noundef %18, i32 noundef %19)
          to label %21 unwind label %93

21:                                               ; preds = %16
  %22 = load i32, ptr %7, align 4, !tbaa !5
  %23 = load i32, ptr %6, align 4, !tbaa !5
  %24 = load i32, ptr %9, align 4, !tbaa !5
  %25 = invoke noundef ptr @_Z19generateMatrixDensejjj(i32 noundef %22, i32 noundef %23, i32 noundef %24)
          to label %26 unwind label %95

26:                                               ; preds = %21
  %27 = load i32, ptr %5, align 4, !tbaa !5
  %28 = load i32, ptr %6, align 4, !tbaa !5
  %29 = mul i32 %28, %27
  %30 = zext i32 %29 to i64
  %31 = shl nuw nsw i64 %30, 2
  %32 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %31) #11
          to label %33 unwind label %97

33:                                               ; preds = %26
  %34 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %31) #11
          to label %35 unwind label %99

35:                                               ; preds = %33
  %36 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %31) #11
          to label %37 unwind label %101

37:                                               ; preds = %35
  %38 = load i32, ptr %7, align 4, !tbaa !5
  %39 = invoke noundef ptr @_Z23generateBitMapFromDensePfjj15GENERATION_TYPE(ptr noundef %20, i32 noundef %27, i32 noundef %38, i32 noundef 0)
          to label %40 unwind label %103

40:                                               ; preds = %37
  %41 = load i32, ptr %7, align 4, !tbaa !5
  %42 = load i32, ptr %6, align 4, !tbaa !5
  %43 = invoke noundef ptr @_Z23generateBitMapFromDensePfjj15GENERATION_TYPE(ptr noundef %25, i32 noundef %41, i32 noundef %42, i32 noundef 1)
          to label %44 unwind label %105

44:                                               ; preds = %40
  %45 = load i32, ptr %5, align 4, !tbaa !5
  %46 = load i32, ptr %7, align 4, !tbaa !5
  %47 = invoke noundef ptr @_Z29generateMatrixSparseFromDensePfPjjj15GENERATION_TYPE(ptr noundef %20, ptr noundef %39, i32 noundef %45, i32 noundef %46, i32 noundef 0)
          to label %48 unwind label %107

48:                                               ; preds = %44
  %49 = load i32, ptr %7, align 4, !tbaa !5
  %50 = load i32, ptr %6, align 4, !tbaa !5
  %51 = invoke noundef ptr @_Z29generateMatrixSparseFromDensePfPjjj15GENERATION_TYPE(ptr noundef %25, ptr noundef %43, i32 noundef %49, i32 noundef %50, i32 noundef 1)
          to label %52 unwind label %109

52:                                               ; preds = %48
  %53 = invoke noalias noundef nonnull dereferenceable(320) ptr @_Znwm(i64 noundef 320) #11
          to label %54 unwind label %111

54:                                               ; preds = %52
  invoke void @_ZN6StonneC1E6Config(ptr noundef nonnull align 8 dereferenceable(316) %53, ptr noundef nonnull byval(%class.Config) align 8 %11)
          to label %55 unwind label %113

55:                                               ; preds = %54
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %56 unwind label %111

56:                                               ; preds = %55
  %57 = load i32, ptr %6, align 4, !tbaa !5
  %58 = load i32, ptr %7, align 4, !tbaa !5
  %59 = load i32, ptr %5, align 4, !tbaa !5
  %60 = load i32, ptr %10, align 4, !tbaa !9
  invoke void @_ZN6Stonne8loadGEMMENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjjjPfS6_PjS7_S6_S7_8Dataflow(ptr noundef nonnull align 8 dereferenceable(316) %53, ptr noundef nonnull %12, i32 noundef %57, i32 noundef %58, i32 noundef %59, ptr noundef %47, ptr noundef %51, ptr noundef %39, ptr noundef %43, ptr noundef nonnull %34, ptr noundef nonnull %36, i32 noundef %60)
          to label %61 unwind label %115

61:                                               ; preds = %56
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  invoke void @_ZN6Stonne3runEv(ptr noundef nonnull align 8 dereferenceable(316) %53)
          to label %62 unwind label %111

62:                                               ; preds = %61
  %63 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.16)
          to label %64 unwind label %111

64:                                               ; preds = %62
  %65 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %66 unwind label %111

66:                                               ; preds = %64
  %67 = load i32, ptr %5, align 4, !tbaa !5
  %68 = load i32, ptr %6, align 4, !tbaa !5
  %69 = load i32, ptr %7, align 4, !tbaa !5
  invoke void @_Z8cpu_gemmPfS_S_jjj(ptr noundef %20, ptr noundef %25, ptr noundef nonnull %32, i32 noundef %67, i32 noundef %68, i32 noundef %69)
          to label %70 unwind label %111

70:                                               ; preds = %66
  %71 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.17)
          to label %72 unwind label %111

72:                                               ; preds = %70
  %73 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %74 unwind label %111

74:                                               ; preds = %72
  %75 = load i32, ptr %5, align 4, !tbaa !5
  %76 = load i32, ptr %6, align 4, !tbaa !5
  invoke void @_Z16printDenseMatrixPfjj(ptr noundef nonnull %32, i32 noundef %75, i32 noundef %76)
          to label %77 unwind label %111

77:                                               ; preds = %74
  %78 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.18)
          to label %79 unwind label %111

79:                                               ; preds = %77
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %81 unwind label %111

81:                                               ; preds = %79
  %82 = load i32, ptr %5, align 4, !tbaa !5
  %83 = load i32, ptr %6, align 4, !tbaa !5
  invoke void @_Z16printDenseMatrixPfjj(ptr noundef nonnull %34, i32 noundef %82, i32 noundef %83)
          to label %.preheader101 unwind label %111

.preheader101:                                    ; preds = %81
  %84 = load i32, ptr %5, align 4, !tbaa !5
  %.not = icmp eq i32 %84, 0
  %85 = load i32, ptr %6, align 4
  %.not107 = icmp eq i32 %85, 0
  %or.cond = select i1 %.not, i1 true, i1 %.not107
  br i1 %or.cond, label %._crit_edge106, label %.preheader

.preheader:                                       ; preds = %.preheader101, %._crit_edge
  %86 = phi i32 [ %117, %._crit_edge ], [ %84, %.preheader101 ]
  %87 = phi i32 [ %118, %._crit_edge ], [ %85, %.preheader101 ]
  %.063105 = phi i32 [ %119, %._crit_edge ], [ 0, %.preheader101 ]
  %.not108 = icmp eq i32 %87, 0
  br i1 %.not108, label %._crit_edge, label %.lr.ph

._crit_edge106:                                   ; preds = %._crit_edge, %.preheader101
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.14)
          to label %191 unwind label %111

89:                                               ; preds = %2
  %90 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #10
  br label %215

91:                                               ; preds = %14, %13
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %214

93:                                               ; preds = %16
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %214

95:                                               ; preds = %21
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %214

97:                                               ; preds = %26
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %214

99:                                               ; preds = %33
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %214

101:                                              ; preds = %35
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %214

103:                                              ; preds = %37
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %214

105:                                              ; preds = %40
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %214

107:                                              ; preds = %44
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %214

109:                                              ; preds = %48
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %214

111:                                              ; preds = %193, %191, %._crit_edge106, %81, %79, %77, %74, %72, %70, %66, %64, %62, %61, %55, %52
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %214

113:                                              ; preds = %54
  %114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %53, i64 noundef 320) #12
  br label %214

115:                                              ; preds = %56
  %116 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  br label %214

._crit_edge.loopexit:                             ; preds = %187
  %.pre = load i32, ptr %5, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader
  %117 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %86, %.preheader ]
  %118 = phi i32 [ %189, %._crit_edge.loopexit ], [ 0, %.preheader ]
  %119 = add nuw nsw i32 %.063105, 1
  %120 = icmp ult i32 %119, %117
  br i1 %120, label %.preheader, label %._crit_edge106, !llvm.loop !25

.lr.ph:                                           ; preds = %.preheader, %187
  %121 = phi i32 [ %189, %187 ], [ %87, %.preheader ]
  %.062104 = phi i32 [ %188, %187 ], [ 0, %.preheader ]
  %122 = mul i32 %121, %.063105
  %123 = add i32 %122, %.062104
  %124 = zext i32 %123 to i64
  %125 = getelementptr inbounds float, ptr %32, i64 %124
  %126 = load float, ptr %125, align 4, !tbaa !28
  %127 = getelementptr inbounds float, ptr %34, i64 %124
  %128 = load float, ptr %127, align 4, !tbaa !28
  %129 = fsub float %126, %128
  %130 = call noundef float @_ZSt4fabsf(float noundef %129)
  %131 = fcmp ogt float %130, 0x3FA99999A0000000
  br i1 %131, label %132, label %187

132:                                              ; preds = %.lr.ph
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.19)
          to label %134 unwind label %185

134:                                              ; preds = %132
  %135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %133, i32 noundef %.063105)
          to label %136 unwind label %185

136:                                              ; preds = %134
  %137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull @.str.20)
          to label %138 unwind label %185

138:                                              ; preds = %136
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %137, i32 noundef %.062104)
          to label %140 unwind label %185

140:                                              ; preds = %138
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull @.str.21)
          to label %142 unwind label %185

142:                                              ; preds = %140
  %143 = load i32, ptr %6, align 4, !tbaa !5
  %144 = mul i32 %143, %.063105
  %145 = add i32 %144, %.062104
  %146 = zext i32 %145 to i64
  %147 = getelementptr inbounds float, ptr %34, i64 %146
  %148 = load float, ptr %147, align 4, !tbaa !28
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %141, float noundef %148)
          to label %150 unwind label %185

150:                                              ; preds = %142
  %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull @.str.22)
          to label %152 unwind label %185

152:                                              ; preds = %150
  %153 = load i32, ptr %6, align 4, !tbaa !5
  %154 = mul i32 %153, %.063105
  %155 = add i32 %154, %.062104
  %156 = zext i32 %155 to i64
  %157 = getelementptr inbounds float, ptr %32, i64 %156
  %158 = load float, ptr %157, align 4, !tbaa !28
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %151, float noundef %158)
          to label %160 unwind label %185

160:                                              ; preds = %152
  %161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %162 unwind label %185

162:                                              ; preds = %160
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.11)
          to label %164 unwind label %185

164:                                              ; preds = %162
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %166 unwind label %185

166:                                              ; preds = %164
  %167 = icmp eq ptr %20, null
  br i1 %167, label %169, label %168

168:                                              ; preds = %166
  call void @_ZdaPv(ptr noundef nonnull %20) #12
  br label %169

169:                                              ; preds = %168, %166
  %170 = icmp eq ptr %25, null
  br i1 %170, label %172, label %171

171:                                              ; preds = %169
  call void @_ZdaPv(ptr noundef nonnull %25) #12
  br label %172

172:                                              ; preds = %171, %169
  %173 = icmp eq ptr %39, null
  br i1 %173, label %175, label %174

174:                                              ; preds = %172
  call void @_ZdaPv(ptr noundef nonnull %39) #12
  br label %175

175:                                              ; preds = %174, %172
  %176 = icmp eq ptr %43, null
  br i1 %176, label %178, label %177

177:                                              ; preds = %175
  call void @_ZdaPv(ptr noundef nonnull %43) #12
  br label %178

178:                                              ; preds = %177, %175
  %179 = icmp eq ptr %47, null
  br i1 %179, label %181, label %180

180:                                              ; preds = %178
  call void @_ZdaPv(ptr noundef nonnull %47) #12
  br label %181

181:                                              ; preds = %180, %178
  %182 = icmp eq ptr %51, null
  br i1 %182, label %184, label %183

183:                                              ; preds = %181
  call void @_ZdaPv(ptr noundef nonnull %51) #12
  br label %184

184:                                              ; preds = %181, %183
  call void @_ZdaPv(ptr noundef nonnull %32) #12
  call void @_ZdaPv(ptr noundef nonnull %34) #12
  call void @_ZdaPv(ptr noundef nonnull %36) #12
  call void @_ZN6StonneD1Ev(ptr noundef nonnull align 8 dereferenceable(316) %53) #10
  call void @_ZdlPvm(ptr noundef nonnull %53, i64 noundef 320) #12
  call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.13, i32 noundef 245, ptr noundef nonnull @__PRETTY_FUNCTION__._Z20runSparseGEMMCommandiPPc) #13
  unreachable

185:                                              ; preds = %164, %162, %160, %152, %150, %142, %140, %138, %136, %134, %132
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %214

187:                                              ; preds = %.lr.ph
  %188 = add nuw nsw i32 %.062104, 1
  %189 = load i32, ptr %6, align 4, !tbaa !5
  %190 = icmp ult i32 %188, %189
  br i1 %190, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !30

191:                                              ; preds = %._crit_edge106
  %192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %193 unwind label %111

193:                                              ; preds = %191
  %194 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %195 unwind label %111

195:                                              ; preds = %193
  %196 = icmp eq ptr %20, null
  br i1 %196, label %198, label %197

197:                                              ; preds = %195
  call void @_ZdaPv(ptr noundef nonnull %20) #12
  br label %198

198:                                              ; preds = %197, %195
  %199 = icmp eq ptr %25, null
  br i1 %199, label %201, label %200

200:                                              ; preds = %198
  call void @_ZdaPv(ptr noundef nonnull %25) #12
  br label %201

201:                                              ; preds = %200, %198
  %202 = icmp eq ptr %39, null
  br i1 %202, label %204, label %203

203:                                              ; preds = %201
  call void @_ZdaPv(ptr noundef nonnull %39) #12
  br label %204

204:                                              ; preds = %203, %201
  %205 = icmp eq ptr %43, null
  br i1 %205, label %207, label %206

206:                                              ; preds = %204
  call void @_ZdaPv(ptr noundef nonnull %43) #12
  br label %207

207:                                              ; preds = %206, %204
  %208 = icmp eq ptr %47, null
  br i1 %208, label %210, label %209

209:                                              ; preds = %207
  call void @_ZdaPv(ptr noundef nonnull %47) #12
  br label %210

210:                                              ; preds = %209, %207
  %211 = icmp eq ptr %51, null
  br i1 %211, label %213, label %212

212:                                              ; preds = %210
  call void @_ZdaPv(ptr noundef nonnull %51) #12
  br label %213

213:                                              ; preds = %210, %212
  call void @_ZdaPv(ptr noundef nonnull %32) #12
  call void @_ZdaPv(ptr noundef nonnull %34) #12
  call void @_ZdaPv(ptr noundef nonnull %36) #12
  call void @_ZN6StonneD1Ev(ptr noundef nonnull align 8 dereferenceable(316) %53) #10
  call void @_ZdlPvm(ptr noundef nonnull %53, i64 noundef 320) #12
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #10
  ret i1 true

214:                                              ; preds = %93, %97, %101, %105, %109, %185, %115, %113, %111, %107, %103, %99, %95, %91
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %92, %91 ], [ %94, %93 ], [ %96, %95 ], [ %98, %97 ], [ %100, %99 ], [ %102, %101 ], [ %104, %103 ], [ %106, %105 ], [ %108, %107 ], [ %110, %109 ], [ %186, %185 ], [ %112, %111 ], [ %116, %115 ], [ %114, %113 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #10
  br label %215

215:                                              ; preds = %214, %89
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %214 ], [ %90, %89 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #10
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

; 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 #3

; 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 #2 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)) #3

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

declare void @_ZN6ConfigC1Ev(ptr noundef nonnull align 4 dereferenceable(160)) unnamed_addr #4

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

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

declare void @_ZN6StonneC1E6Config(ptr noundef nonnull align 8 dereferenceable(316), ptr noundef byval(%class.Config) align 8) unnamed_addr #4

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

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

declare void @_ZN6Stonne3runEv(ptr noundef nonnull align 8 dereferenceable(316)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) local_unnamed_addr #7

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z26configSparseGEMMParametersiPPcR6ConfigRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERjSA_SA_SA_SA_R8Dataflow(i32 noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

declare noundef ptr @_Z19generateMatrixDensejjj(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

declare noundef ptr @_Z23generateBitMapFromDensePfjj15GENERATION_TYPE(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

declare noundef ptr @_Z29generateMatrixSparseFromDensePfPjjj15GENERATION_TYPE(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

declare void @_ZN6Stonne8loadGEMMENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjjjPfS6_PjS7_S6_S7_8Dataflow(ptr noundef nonnull align 8 dereferenceable(316), ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

declare void @_Z8cpu_gemmPfS_S_jjj(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

declare void @_Z16printDenseMatrixPfjj(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { 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 #4 = { "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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 #10 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { builtin nounwind }
attributes #13 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTS8Dataflow", !7, i64 0}
!11 = !{!12, !23, i64 104}
!12 = !{!"_ZTS6Config", !6, i64 0, !13, i64 4, !14, i64 8, !15, i64 24, !17, i64 40, !18, i64 64, !20, i64 72, !21, i64 96, !22, i64 104}
!13 = !{!"_ZTS15DSNetworkConfig", !6, i64 0}
!14 = !{!"_ZTS13DSwitchConfig", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12}
!15 = !{!"_ZTS15MSNetworkConfig", !16, i64 0, !6, i64 4, !6, i64 8, !6, i64 12}
!16 = !{!"_ZTS19MultiplierNetwork_t", !7, i64 0}
!17 = !{!"_ZTS13MSwitchConfig", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20}
!18 = !{!"_ZTS15ASNetworkConfig", !19, i64 0, !6, i64 4}
!19 = !{!"_ZTS15ReduceNetwork_t", !7, i64 0}
!20 = !{!"_ZTS13ASwitchConfig", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20}
!21 = !{!"_ZTS17LookUpTableConfig", !6, i64 0, !6, i64 4}
!22 = !{!"_ZTS14SDMemoryConfig", !23, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !24, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52}
!23 = !{!"_ZTS18MemoryController_t", !7, i64 0}
!24 = !{!"_ZTS17MemoryHierarchy_t", !7, i64 0}
!25 = distinct !{!25, !26, !27}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!"llvm.loop.unswitch.partial.disable"}
!28 = !{!29, !29, i64 0}
!29 = !{!"float", !7, i64 0}
!30 = distinct !{!30, !26}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,ReassociatePass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass