; LLVM IR from stonne-simulator/omega :: omega-code/stonne/src/other_main (pipelining_synth)

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

@__const.main.loop_order_agg = external hidden unnamed_addr constant [4 x i8], align 1
@__const.main.loop_order_cmb = external hidden unnamed_addr constant [4 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [45 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %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 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 i32, align 4
  %17 = alloca [4 x i8], align 1
  %18 = alloca [4 x i8], align 1
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca float, align 4
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca %class.Config, align 4
  %43 = alloca %class.Config, align 4
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator", align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator", align 1
  %48 = alloca ptr, align 8
  %49 = alloca %class.Config, align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator", align 1
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator", align 1
  %66 = alloca ptr, align 8
  %67 = alloca %class.Config, align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca ptr, align 8
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca ptr, align 8
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #11
  store i32 0, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #11
  store i32 1024, ptr %4, align 4, !tbaa !9
  store i32 512, ptr %5, align 4, !tbaa !9
  store i32 16, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #11
  store i32 512, ptr %7, align 4, !tbaa !9
  store i32 1, ptr %8, align 4, !tbaa !9
  store i32 1, ptr %9, align 4, !tbaa !9
  store i32 512, ptr %10, align 4, !tbaa !9
  store i32 1, ptr %11, align 4, !tbaa !9
  store i32 1, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #11
  store i32 512, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #11
  store i32 512, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %17, ptr align 1 @__const.main.loop_order_agg, i64 4, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 1 @__const.main.loop_order_cmb, i64 4, i1 false)
  %92 = load i32, ptr %3, align 4, !tbaa !5
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %94, label %153

94:                                               ; preds = %0
  %95 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %96 = load i8, ptr %95, align 1, !tbaa !11
  %97 = sext i8 %96 to i32
  %98 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 0
  %99 = load i8, ptr %98, align 1, !tbaa !11
  %100 = sext i8 %99 to i32
  %101 = icmp eq i32 %97, %100
  br i1 %101, label %102, label %121

102:                                              ; preds = %94
  %103 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 1
  %104 = load i8, ptr %103, align 1, !tbaa !11
  %105 = sext i8 %104 to i32
  %106 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 1
  %107 = load i8, ptr %106, align 1, !tbaa !11
  %108 = sext i8 %107 to i32
  %109 = icmp eq i32 %105, %108
  br i1 %109, label %110, label %121

110:                                              ; preds = %102
  %111 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %112 = load i8, ptr %111, align 1, !tbaa !11
  %113 = sext i8 %112 to i32
  %114 = icmp eq i32 %113, 86
  br i1 %114, label %120, label %115

115:                                              ; preds = %110
  %116 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %117 = load i8, ptr %116, align 1, !tbaa !11
  %118 = sext i8 %117 to i32
  %119 = icmp eq i32 %118, 70
  br i1 %119, label %120, label %121

120:                                              ; preds = %115, %110
  store i32 0, ptr %2, align 4, !tbaa !12
  br label %152

121:                                              ; preds = %115, %102, %94
  %122 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %123 = load i8, ptr %122, align 1, !tbaa !11
  %124 = sext i8 %123 to i32
  %125 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 0
  %126 = load i8, ptr %125, align 1, !tbaa !11
  %127 = sext i8 %126 to i32
  %128 = icmp eq i32 %124, %127
  br i1 %128, label %129, label %135

129:                                              ; preds = %121
  %130 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %131 = load i8, ptr %130, align 1, !tbaa !11
  %132 = sext i8 %131 to i32
  %133 = icmp eq i32 %132, 86
  br i1 %133, label %134, label %135

134:                                              ; preds = %129
  store i32 1, ptr %2, align 4, !tbaa !12
  br label %151

135:                                              ; preds = %129, %121
  %136 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %137 = load i8, ptr %136, align 1, !tbaa !11
  %138 = sext i8 %137 to i32
  %139 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 0
  %140 = load i8, ptr %139, align 1, !tbaa !11
  %141 = sext i8 %140 to i32
  %142 = icmp eq i32 %138, %141
  br i1 %142, label %143, label %149

143:                                              ; preds = %135
  %144 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %145 = load i8, ptr %144, align 1, !tbaa !11
  %146 = sext i8 %145 to i32
  %147 = icmp eq i32 %146, 70
  br i1 %147, label %148, label %149

148:                                              ; preds = %143
  store i32 2, ptr %2, align 4, !tbaa !12
  br label %150

149:                                              ; preds = %143, %135
  store i32 3, ptr %2, align 4, !tbaa !12
  br label %150

150:                                              ; preds = %149, %148
  br label %151

151:                                              ; preds = %150, %134
  br label %152

152:                                              ; preds = %151, %120
  br label %224

153:                                              ; preds = %0
  %154 = load i32, ptr %3, align 4, !tbaa !5
  %155 = icmp eq i32 %154, 1
  br i1 %155, label %156, label %223

156:                                              ; preds = %153
  %157 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %158 = load i8, ptr %157, align 1, !tbaa !11
  %159 = sext i8 %158 to i32
  %160 = icmp eq i32 %159, 78
  br i1 %160, label %161, label %176

161:                                              ; preds = %156
  %162 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 0
  %163 = load i8, ptr %162, align 1, !tbaa !11
  %164 = sext i8 %163 to i32
  %165 = icmp eq i32 %164, 86
  br i1 %165, label %166, label %176

166:                                              ; preds = %161
  %167 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 1
  %168 = load i8, ptr %167, align 1, !tbaa !11
  %169 = sext i8 %168 to i32
  %170 = icmp eq i32 %169, 70
  br i1 %170, label %171, label %176

171:                                              ; preds = %166
  %172 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 1
  %173 = load i8, ptr %172, align 1, !tbaa !11
  %174 = sext i8 %173 to i32
  %175 = icmp eq i32 %174, 71
  br i1 %175, label %196, label %176

176:                                              ; preds = %171, %166, %161, %156
  %177 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %178 = load i8, ptr %177, align 1, !tbaa !11
  %179 = sext i8 %178 to i32
  %180 = icmp eq i32 %179, 70
  br i1 %180, label %181, label %197

181:                                              ; preds = %176
  %182 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 0
  %183 = load i8, ptr %182, align 1, !tbaa !11
  %184 = sext i8 %183 to i32
  %185 = icmp eq i32 %184, 71
  br i1 %185, label %186, label %197

186:                                              ; preds = %181
  %187 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 1
  %188 = load i8, ptr %187, align 1, !tbaa !11
  %189 = sext i8 %188 to i32
  %190 = icmp eq i32 %189, 78
  br i1 %190, label %191, label %197

191:                                              ; preds = %186
  %192 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 1
  %193 = load i8, ptr %192, align 1, !tbaa !11
  %194 = sext i8 %193 to i32
  %195 = icmp eq i32 %194, 86
  br i1 %195, label %196, label %197

196:                                              ; preds = %191, %171
  store i32 0, ptr %2, align 4, !tbaa !12
  br label %222

197:                                              ; preds = %191, %186, %181, %176
  %198 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %199 = load i8, ptr %198, align 1, !tbaa !11
  %200 = sext i8 %199 to i32
  %201 = icmp eq i32 %200, 78
  br i1 %201, label %202, label %208

202:                                              ; preds = %197
  %203 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 0
  %204 = load i8, ptr %203, align 1, !tbaa !11
  %205 = sext i8 %204 to i32
  %206 = icmp eq i32 %205, 86
  br i1 %206, label %207, label %208

207:                                              ; preds = %202
  store i32 1, ptr %2, align 4, !tbaa !12
  br label %221

208:                                              ; preds = %202, %197
  %209 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %210 = load i8, ptr %209, align 1, !tbaa !11
  %211 = sext i8 %210 to i32
  %212 = icmp eq i32 %211, 70
  br i1 %212, label %213, label %219

213:                                              ; preds = %208
  %214 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 0
  %215 = load i8, ptr %214, align 1, !tbaa !11
  %216 = sext i8 %215 to i32
  %217 = icmp eq i32 %216, 71
  br i1 %217, label %218, label %219

218:                                              ; preds = %213
  store i32 2, ptr %2, align 4, !tbaa !12
  br label %220

219:                                              ; preds = %213, %208
  store i32 3, ptr %2, align 4, !tbaa !12
  br label %220

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

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

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

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

224:                                              ; preds = %223, %152
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str)
  %226 = getelementptr inbounds [4 x i8], ptr %17, i64 0, i64 0
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef %226)
  %228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %227, ptr noundef @.str.1)
  %229 = getelementptr inbounds [4 x i8], ptr %18, i64 0, i64 0
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef %229)
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %230, ptr noundef @.str.1)
  %232 = load i32, ptr %2, align 4, !tbaa !12
  %233 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %231, i32 noundef %232)
  %234 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef @.str)
  %235 = load i32, ptr %2, align 4, !tbaa !12
  %236 = icmp eq i32 %235, 0
  br i1 %236, label %237, label %266

237:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  store i32 0, ptr %19, align 4, !tbaa !9
  %238 = load i32, ptr %7, align 4, !tbaa !9
  %239 = load i32, ptr %10, align 4, !tbaa !9
  %240 = icmp sgt i32 %238, %239
  br i1 %240, label %241, label %243

241:                                              ; preds = %237
  %242 = load i32, ptr %7, align 4, !tbaa !9
  br label %245

243:                                              ; preds = %237
  %244 = load i32, ptr %10, align 4, !tbaa !9
  br label %245

245:                                              ; preds = %243, %241
  %246 = phi i32 [ %242, %241 ], [ %244, %243 ]
  store i32 %246, ptr %13, align 4, !tbaa !9
  %247 = load i32, ptr %9, align 4, !tbaa !9
  %248 = load i32, ptr %12, align 4, !tbaa !9
  %249 = icmp sgt i32 %247, %248
  br i1 %249, label %250, label %252

250:                                              ; preds = %245
  %251 = load i32, ptr %9, align 4, !tbaa !9
  br label %254

252:                                              ; preds = %245
  %253 = load i32, ptr %12, align 4, !tbaa !9
  br label %254

254:                                              ; preds = %252, %250
  %255 = phi i32 [ %251, %250 ], [ %253, %252 ]
  store i32 %255, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  %256 = load i32, ptr %13, align 4, !tbaa !9
  %257 = mul nsw i32 2, %256
  %258 = load i32, ptr %14, align 4, !tbaa !9
  %259 = mul nsw i32 %257, %258
  store i32 %259, ptr %20, align 4, !tbaa !9
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.2)
  %261 = load i32, ptr %19, align 4, !tbaa !9
  %262 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %260, i32 noundef %261)
  %263 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %262, ptr noundef @.str.3)
  %264 = load i32, ptr %20, align 4, !tbaa !9
  %265 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %263, i32 noundef %264)
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %266

266:                                              ; preds = %254, %224
  %267 = load i32, ptr %2, align 4, !tbaa !12
  %268 = icmp eq i32 %267, 1
  br i1 %268, label %269, label %1656

269:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #11
  store i32 0, ptr %21, align 4, !tbaa !9
  %270 = load i32, ptr %7, align 4, !tbaa !9
  %271 = load i32, ptr %10, align 4, !tbaa !9
  %272 = icmp sgt i32 %270, %271
  br i1 %272, label %273, label %275

273:                                              ; preds = %269
  %274 = load i32, ptr %7, align 4, !tbaa !9
  br label %277

275:                                              ; preds = %269
  %276 = load i32, ptr %10, align 4, !tbaa !9
  br label %277

277:                                              ; preds = %275, %273
  %278 = phi i32 [ %274, %273 ], [ %276, %275 ]
  store i32 %278, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #11
  %279 = load i32, ptr %13, align 4, !tbaa !9
  %280 = mul nsw i32 2, %279
  %281 = load i32, ptr %5, align 4, !tbaa !9
  %282 = mul nsw i32 %280, %281
  store i32 %282, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  store float 0x3FA99999A0000000, ptr %23, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %283 unwind label %305

283:                                              ; preds = %277
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #11
  %284 = load i32, ptr %4, align 4, !tbaa !9
  %285 = load i32, ptr %4, align 4, !tbaa !9
  %286 = invoke noundef ptr @_Z19generateMatrixDensejjf(i32 noundef %284, i32 noundef %285, float noundef 8.000000e+01)
          to label %287 unwind label %309

287:                                              ; preds = %283
  store ptr %286, ptr %28, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #11
  %288 = load i32, ptr %4, align 4, !tbaa !9
  %289 = load i32, ptr %4, align 4, !tbaa !9
  %290 = mul nsw i32 %288, %289
  %291 = sext i32 %290 to i64
  %292 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %291, i64 4)
  %293 = extractvalue { i64, i1 } %292, 1
  %294 = extractvalue { i64, i1 } %292, 0
  %295 = select i1 %293, i64 -1, i64 %294
  %296 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %295) #12
          to label %297 unwind label %313

297:                                              ; preds = %287
  store ptr %296, ptr %29, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #11
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %327, %297
  %299 = load i32, ptr %30, align 4, !tbaa !9
  %300 = load i32, ptr %4, align 4, !tbaa !9
  %301 = load i32, ptr %4, align 4, !tbaa !9
  %302 = mul nsw i32 %300, %301
  %303 = icmp slt i32 %299, %302
  br i1 %303, label %317, label %304

304:                                              ; preds = %298
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  br label %330

305:                                              ; preds = %277
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %26, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %27, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #11
  br label %1655

309:                                              ; preds = %283
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %26, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %27, align 4
  br label %1654

313:                                              ; preds = %287
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %26, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %27, align 4
  br label %1653

317:                                              ; preds = %298
  %318 = load ptr, ptr %28, align 8, !tbaa !16
  %319 = load i32, ptr %30, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds float, ptr %318, i64 %320
  %322 = load float, ptr %321, align 4, !tbaa !14
  %323 = load ptr, ptr %29, align 8, !tbaa !16
  %324 = load i32, ptr %30, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds float, ptr %323, i64 %325
  store float %322, ptr %326, align 4, !tbaa !14
  br label %327

327:                                              ; preds = %317
  %328 = load i32, ptr %30, align 4, !tbaa !9
  %329 = add nsw i32 %328, 1
  store i32 %329, ptr %30, align 4, !tbaa !9
  br label %298, !llvm.loop !18

330:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #11
  store i32 0, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  %331 = load ptr, ptr %29, align 8, !tbaa !16
  %332 = load i32, ptr %4, align 4, !tbaa !9
  %333 = load i32, ptr %4, align 4, !tbaa !9
  %334 = invoke noundef ptr @_Z24generateMinorIDFromDensePfjjRi15GENERATION_TYPE(ptr noundef %331, i32 noundef %332, i32 noundef %333, ptr noundef nonnull align 4 dereferenceable(4) %31, i32 noundef 0)
          to label %335 unwind label %348

335:                                              ; preds = %330
  store ptr %334, ptr %32, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #11
  %336 = load ptr, ptr %29, align 8, !tbaa !16
  %337 = load i32, ptr %4, align 4, !tbaa !9
  %338 = load i32, ptr %4, align 4, !tbaa !9
  %339 = invoke noundef ptr @_Z29generateMajorPointerFromDensePfjj15GENERATION_TYPE(ptr noundef %336, i32 noundef %337, i32 noundef %338, i32 noundef 0)
          to label %340 unwind label %352

340:                                              ; preds = %335
  store ptr %339, ptr %33, align 8, !tbaa !16
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.5)
          to label %342 unwind label %352

342:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #11
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %366, %342
  %344 = load i32, ptr %34, align 4, !tbaa !9
  %345 = load i32, ptr %4, align 4, !tbaa !9
  %346 = icmp sle i32 %344, %345
  br i1 %346, label %356, label %347

347:                                              ; preds = %343
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  br label %373

348:                                              ; preds = %330
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %26, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %27, align 4
  br label %1652

352:                                              ; preds = %373, %340, %335
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %26, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %27, align 4
  br label %1651

356:                                              ; preds = %343
  %357 = load ptr, ptr %33, align 8, !tbaa !16
  %358 = load i32, ptr %34, align 4, !tbaa !9
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds i32, ptr %357, i64 %359
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %361)
          to label %363 unwind label %369

363:                                              ; preds = %356
  %364 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %362, ptr noundef @.str.1)
          to label %365 unwind label %369

365:                                              ; preds = %363
  br label %366

366:                                              ; preds = %365
  %367 = load i32, ptr %34, align 4, !tbaa !9
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %34, align 4, !tbaa !9
  br label %343, !llvm.loop !20

369:                                              ; preds = %363, %356
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %26, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  br label %1651

373:                                              ; preds = %347
  %374 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.6)
          to label %375 unwind label %352

375:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %376 = load ptr, ptr %29, align 8, !tbaa !16
  %377 = load i32, ptr %4, align 4, !tbaa !9
  %378 = load i32, ptr %4, align 4, !tbaa !9
  %379 = invoke noundef ptr @_Z37generateMatrixSparseFromDenseNoBitmapPfjj15GENERATION_TYPE(ptr noundef %376, i32 noundef %377, i32 noundef %378, i32 noundef 0)
          to label %380 unwind label %402

380:                                              ; preds = %375
  store ptr %379, ptr %35, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #11
  %381 = load i32, ptr %4, align 4, !tbaa !9
  %382 = load i32, ptr %5, align 4, !tbaa !9
  %383 = invoke noundef ptr @_Z19generateMatrixDensejjf(i32 noundef %381, i32 noundef %382, float noundef 0.000000e+00)
          to label %384 unwind label %406

384:                                              ; preds = %380
  store ptr %383, ptr %36, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #11
  %385 = load i32, ptr %4, align 4, !tbaa !9
  %386 = load i32, ptr %5, align 4, !tbaa !9
  %387 = mul nsw i32 %385, %386
  %388 = sext i32 %387 to i64
  %389 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %388, i64 4)
  %390 = extractvalue { i64, i1 } %389, 1
  %391 = extractvalue { i64, i1 } %389, 0
  %392 = select i1 %390, i64 -1, i64 %391
  %393 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %392) #12
          to label %394 unwind label %410

394:                                              ; preds = %384
  store ptr %393, ptr %37, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #11
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %395

395:                                              ; preds = %424, %394
  %396 = load i32, ptr %38, align 4, !tbaa !9
  %397 = load i32, ptr %4, align 4, !tbaa !9
  %398 = load i32, ptr %5, align 4, !tbaa !9
  %399 = mul nsw i32 %397, %398
  %400 = icmp slt i32 %396, %399
  br i1 %400, label %414, label %401

401:                                              ; preds = %395
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %427

402:                                              ; preds = %375
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %26, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %27, align 4
  br label %1650

406:                                              ; preds = %380
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %26, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %27, align 4
  br label %1649

410:                                              ; preds = %384
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %26, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %27, align 4
  br label %1648

414:                                              ; preds = %395
  %415 = load ptr, ptr %36, align 8, !tbaa !16
  %416 = load i32, ptr %38, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds float, ptr %415, i64 %417
  %419 = load float, ptr %418, align 4, !tbaa !14
  %420 = load ptr, ptr %37, align 8, !tbaa !16
  %421 = load i32, ptr %38, align 4, !tbaa !9
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds float, ptr %420, i64 %422
  store float %419, ptr %423, align 4, !tbaa !14
  br label %424

424:                                              ; preds = %414
  %425 = load i32, ptr %38, align 4, !tbaa !9
  %426 = add nsw i32 %425, 1
  store i32 %426, ptr %38, align 4, !tbaa !9
  br label %395, !llvm.loop !21

427:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  %428 = load i32, ptr %4, align 4, !tbaa !9
  %429 = load i32, ptr %5, align 4, !tbaa !9
  %430 = mul nsw i32 %428, %429
  %431 = sext i32 %430 to i64
  %432 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %431, i64 4)
  %433 = extractvalue { i64, i1 } %432, 1
  %434 = extractvalue { i64, i1 } %432, 0
  %435 = select i1 %433, i64 -1, i64 %434
  %436 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %435) #12
          to label %437 unwind label %482

437:                                              ; preds = %427
  store ptr %436, ptr %39, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #11
  %438 = load i32, ptr %4, align 4, !tbaa !9
  %439 = load i32, ptr %5, align 4, !tbaa !9
  %440 = mul nsw i32 %438, %439
  %441 = sext i32 %440 to i64
  %442 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %441, i64 4)
  %443 = extractvalue { i64, i1 } %442, 1
  %444 = extractvalue { i64, i1 } %442, 0
  %445 = select i1 %443, i64 -1, i64 %444
  %446 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %445) #12
          to label %447 unwind label %486

447:                                              ; preds = %437
  store ptr %446, ptr %40, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #11
  %448 = load i32, ptr %4, align 4, !tbaa !9
  %449 = load i32, ptr %5, align 4, !tbaa !9
  %450 = mul nsw i32 %448, %449
  %451 = sext i32 %450 to i64
  %452 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %451, i64 4)
  %453 = extractvalue { i64, i1 } %452, 1
  %454 = extractvalue { i64, i1 } %452, 0
  %455 = select i1 %453, i64 -1, i64 %454
  %456 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %455) #12
          to label %457 unwind label %490

457:                                              ; preds = %447
  store ptr %456, ptr %41, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 160, ptr %42) #11
  invoke void @_ZN6ConfigC1Ev(ptr noundef nonnull align 4 dereferenceable(160) %42)
          to label %458 unwind label %494

458:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 160, ptr %43) #11
  invoke void @_ZN6ConfigC1Ev(ptr noundef nonnull align 4 dereferenceable(160) %43)
          to label %459 unwind label %498

459:                                              ; preds = %458
  %460 = load i32, ptr %15, align 4, !tbaa !9
  %461 = getelementptr inbounds %class.Config, ptr %42, i32 0, i32 3
  %462 = getelementptr inbounds %class.MSNetworkConfig, ptr %461, i32 0, i32 1
  store i32 %460, ptr %462, align 4, !tbaa !22
  %463 = load i32, ptr %15, align 4, !tbaa !9
  %464 = getelementptr inbounds %class.Config, ptr %42, i32 0, i32 8
  %465 = getelementptr inbounds %class.SDMemoryConfig, ptr %464, i32 0, i32 2
  store i32 %463, ptr %465, align 4, !tbaa !36
  %466 = load i32, ptr %15, align 4, !tbaa !9
  %467 = getelementptr inbounds %class.Config, ptr %42, i32 0, i32 8
  %468 = getelementptr inbounds %class.SDMemoryConfig, ptr %467, i32 0, i32 3
  store i32 %466, ptr %468, align 4, !tbaa !37
  %469 = getelementptr inbounds %class.Config, ptr %42, i32 0, i32 5
  %470 = getelementptr inbounds %class.ASNetworkConfig, ptr %469, i32 0, i32 1
  store i32 1, ptr %470, align 4, !tbaa !38
  %471 = getelementptr inbounds %class.Config, ptr %42, i32 0, i32 8
  %472 = getelementptr inbounds %class.SDMemoryConfig, ptr %471, i32 0, i32 0
  store i32 2, ptr %472, align 4, !tbaa !39
  %473 = getelementptr inbounds %class.Config, ptr %42, i32 0, i32 0
  store i32 0, ptr %473, align 4, !tbaa !40
  %474 = load i32, ptr %8, align 4, !tbaa !9
  %475 = icmp sgt i32 %474, 1
  br i1 %475, label %476, label %511

476:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %477 unwind label %502

477:                                              ; preds = %476
  %478 = invoke noundef i32 @_Z28get_type_reduce_network_typeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %44)
          to label %479 unwind label %506

479:                                              ; preds = %477
  %480 = getelementptr inbounds %class.Config, ptr %42, i32 0, i32 5
  %481 = getelementptr inbounds %class.ASNetworkConfig, ptr %480, i32 0, i32 0
  store i32 %478, ptr %481, align 4, !tbaa !41
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #11
  br label %526

482:                                              ; preds = %427
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %26, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %27, align 4
  br label %1647

486:                                              ; preds = %437
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %26, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %27, align 4
  br label %1646

490:                                              ; preds = %447
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %26, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %27, align 4
  br label %1645

494:                                              ; preds = %457
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %26, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %27, align 4
  br label %1644

498:                                              ; preds = %458
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %26, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %27, align 4
  br label %1643

502:                                              ; preds = %476
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %26, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %27, align 4
  br label %510

506:                                              ; preds = %477
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %26, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #11
  br label %510

510:                                              ; preds = %506, %502
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #11
  br label %1643

511:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %512 unwind label %517

512:                                              ; preds = %511
  %513 = invoke noundef i32 @_Z28get_type_reduce_network_typeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %46)
          to label %514 unwind label %521

514:                                              ; preds = %512
  %515 = getelementptr inbounds %class.Config, ptr %42, i32 0, i32 5
  %516 = getelementptr inbounds %class.ASNetworkConfig, ptr %515, i32 0, i32 0
  store i32 %513, ptr %516, align 4, !tbaa !41
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #11
  br label %526

517:                                              ; preds = %511
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %26, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %27, align 4
  br label %525

521:                                              ; preds = %512
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %26, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #11
  br label %525

525:                                              ; preds = %521, %517
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #11
  br label %1643

526:                                              ; preds = %514, %479
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %527 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 320) #12
          to label %528 unwind label %560

528:                                              ; preds = %526
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %49, ptr align 4 %42, i64 160, i1 false), !tbaa.struct !42
  invoke void @_ZN6StonneC1E6Config(ptr noundef nonnull align 8 dereferenceable(316) %527, ptr noundef byval(%class.Config) align 8 %49)
          to label %529 unwind label %564

529:                                              ; preds = %528
  store ptr %527, ptr %48, align 8, !tbaa !16
  %530 = load ptr, ptr %48, align 8, !tbaa !16
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %531 unwind label %560

531:                                              ; preds = %529
  %532 = load i32, ptr %5, align 4, !tbaa !9
  %533 = load i32, ptr %4, align 4, !tbaa !9
  %534 = load i32, ptr %4, align 4, !tbaa !9
  %535 = load ptr, ptr %35, align 8, !tbaa !16
  %536 = load ptr, ptr %37, align 8, !tbaa !16
  %537 = load ptr, ptr %32, align 8, !tbaa !16
  %538 = load ptr, ptr %33, align 8, !tbaa !16
  %539 = load ptr, ptr %41, align 8, !tbaa !16
  %540 = load i32, ptr %9, align 4, !tbaa !9
  %541 = load i32, ptr %8, align 4, !tbaa !9
  invoke void @_ZN6Stonne15loadSparseDenseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjjjPfS6_PjS7_S6_jj(ptr noundef nonnull align 8 dereferenceable(316) %530, ptr noundef %50, i32 noundef %532, i32 noundef %533, i32 noundef %534, ptr noundef %535, ptr noundef %536, ptr noundef %537, ptr noundef %538, ptr noundef %539, i32 noundef %540, i32 noundef %541)
          to label %542 unwind label %568

542:                                              ; preds = %531
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #11
  %543 = load ptr, ptr %48, align 8, !tbaa !16
  %544 = load ptr, ptr %39, align 8, !tbaa !16
  invoke void @_ZN6Stonne12loadClockingEPj(ptr noundef nonnull align 8 dereferenceable(316) %543, ptr noundef %544)
          to label %545 unwind label %560

545:                                              ; preds = %542
  %546 = load ptr, ptr %48, align 8, !tbaa !16
  invoke void @_ZN6Stonne3runEv(ptr noundef nonnull align 8 dereferenceable(316) %546)
          to label %547 unwind label %560

547:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #11
  %548 = load ptr, ptr %48, align 8, !tbaa !16
  %549 = invoke noundef i32 @_ZN6Stonne9getCyclesEv(ptr noundef nonnull align 8 dereferenceable(316) %548)
          to label %550 unwind label %572

550:                                              ; preds = %547
  store i32 %549, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #11
  %551 = load i32, ptr %5, align 4, !tbaa !9
  %552 = sub nsw i32 %551, 1
  store i32 %552, ptr %52, align 4, !tbaa !9
  br label %553

553:                                              ; preds = %586, %550
  %554 = load i32, ptr %52, align 4, !tbaa !9
  %555 = load i32, ptr %4, align 4, !tbaa !9
  %556 = load i32, ptr %5, align 4, !tbaa !9
  %557 = mul nsw i32 %555, %556
  %558 = icmp slt i32 %554, %557
  br i1 %558, label %576, label %559

559:                                              ; preds = %553
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #11
  br label %594

560:                                              ; preds = %545, %542, %529, %526
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %26, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %27, align 4
  br label %1642

564:                                              ; preds = %528
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %26, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %27, align 4
  call void @_ZdlPvm(ptr noundef %527, i64 noundef 320) #13
  br label %1642

568:                                              ; preds = %531
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %26, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #11
  br label %1642

572:                                              ; preds = %634, %547
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %26, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %27, align 4
  br label %1641

576:                                              ; preds = %553
  %577 = load ptr, ptr %39, align 8, !tbaa !16
  %578 = load i32, ptr %52, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds i32, ptr %577, i64 %579
  %581 = load i32, ptr %580, align 4, !tbaa !9
  %582 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %581)
          to label %583 unwind label %590

583:                                              ; preds = %576
  %584 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %582, ptr noundef @.str.1)
          to label %585 unwind label %590

585:                                              ; preds = %583
  br label %586

586:                                              ; preds = %585
  %587 = load i32, ptr %5, align 4, !tbaa !9
  %588 = load i32, ptr %52, align 4, !tbaa !9
  %589 = add nsw i32 %588, %587
  store i32 %589, ptr %52, align 4, !tbaa !9
  br label %553, !llvm.loop !47

590:                                              ; preds = %583, %576
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %26, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #11
  br label %1641

594:                                              ; preds = %559
  %595 = load ptr, ptr %28, align 8, !tbaa !16
  %596 = icmp eq ptr %595, null
  br i1 %596, label %598, label %597

597:                                              ; preds = %594
  call void @_ZdaPv(ptr noundef %595) #13
  br label %598

598:                                              ; preds = %597, %594
  %599 = load ptr, ptr %36, align 8, !tbaa !16
  %600 = icmp eq ptr %599, null
  br i1 %600, label %602, label %601

601:                                              ; preds = %598
  call void @_ZdaPv(ptr noundef %599) #13
  br label %602

602:                                              ; preds = %601, %598
  %603 = load ptr, ptr %29, align 8, !tbaa !16
  %604 = icmp eq ptr %603, null
  br i1 %604, label %606, label %605

605:                                              ; preds = %602
  call void @_ZdaPv(ptr noundef %603) #13
  br label %606

606:                                              ; preds = %605, %602
  %607 = load ptr, ptr %37, align 8, !tbaa !16
  %608 = icmp eq ptr %607, null
  br i1 %608, label %610, label %609

609:                                              ; preds = %606
  call void @_ZdaPv(ptr noundef %607) #13
  br label %610

610:                                              ; preds = %609, %606
  %611 = load ptr, ptr %32, align 8, !tbaa !16
  %612 = icmp eq ptr %611, null
  br i1 %612, label %614, label %613

613:                                              ; preds = %610
  call void @_ZdaPv(ptr noundef %611) #13
  br label %614

614:                                              ; preds = %613, %610
  %615 = load ptr, ptr %33, align 8, !tbaa !16
  %616 = icmp eq ptr %615, null
  br i1 %616, label %618, label %617

617:                                              ; preds = %614
  call void @_ZdaPv(ptr noundef %615) #13
  br label %618

618:                                              ; preds = %617, %614
  %619 = load ptr, ptr %35, align 8, !tbaa !16
  %620 = icmp eq ptr %619, null
  br i1 %620, label %622, label %621

621:                                              ; preds = %618
  call void @_ZdaPv(ptr noundef %619) #13
  br label %622

622:                                              ; preds = %621, %618
  %623 = load ptr, ptr %40, align 8, !tbaa !16
  %624 = icmp eq ptr %623, null
  br i1 %624, label %626, label %625

625:                                              ; preds = %622
  call void @_ZdaPv(ptr noundef %623) #13
  br label %626

626:                                              ; preds = %625, %622
  %627 = load ptr, ptr %41, align 8, !tbaa !16
  %628 = icmp eq ptr %627, null
  br i1 %628, label %630, label %629

629:                                              ; preds = %626
  call void @_ZdaPv(ptr noundef %627) #13
  br label %630

630:                                              ; preds = %629, %626
  %631 = load ptr, ptr %48, align 8, !tbaa !16
  %632 = icmp eq ptr %631, null
  br i1 %632, label %634, label %633

633:                                              ; preds = %630
  call void @_ZN6StonneD1Ev(ptr noundef nonnull align 8 dereferenceable(316) %631) #11
  call void @_ZdlPvm(ptr noundef %631, i64 noundef 320) #13
  br label %634

634:                                              ; preds = %633, %630
  %635 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.9)
          to label %636 unwind label %572

636:                                              ; preds = %634
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #11
  %637 = load i32, ptr %4, align 4, !tbaa !9
  %638 = load i32, ptr %5, align 4, !tbaa !9
  %639 = invoke noundef ptr @_Z19generateMatrixDensejjf(i32 noundef %637, i32 noundef %638, float noundef 0.000000e+00)
          to label %640 unwind label %658

640:                                              ; preds = %636
  store ptr %639, ptr %53, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #11
  %641 = load i32, ptr %4, align 4, !tbaa !9
  %642 = load i32, ptr %5, align 4, !tbaa !9
  %643 = mul nsw i32 %641, %642
  %644 = sext i32 %643 to i64
  %645 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %644, i64 4)
  %646 = extractvalue { i64, i1 } %645, 1
  %647 = extractvalue { i64, i1 } %645, 0
  %648 = select i1 %646, i64 -1, i64 %647
  %649 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %648) #12
          to label %650 unwind label %662

650:                                              ; preds = %640
  store ptr %649, ptr %54, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #11
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %651

651:                                              ; preds = %676, %650
  %652 = load i32, ptr %55, align 4, !tbaa !9
  %653 = load i32, ptr %4, align 4, !tbaa !9
  %654 = load i32, ptr %5, align 4, !tbaa !9
  %655 = mul nsw i32 %653, %654
  %656 = icmp slt i32 %652, %655
  br i1 %656, label %666, label %657

657:                                              ; preds = %651
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #11
  br label %679

658:                                              ; preds = %636
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %26, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %27, align 4
  br label %1640

662:                                              ; preds = %640
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %26, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %27, align 4
  br label %1639

666:                                              ; preds = %651
  %667 = load ptr, ptr %53, align 8, !tbaa !16
  %668 = load i32, ptr %55, align 4, !tbaa !9
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds float, ptr %667, i64 %669
  %671 = load float, ptr %670, align 4, !tbaa !14
  %672 = load ptr, ptr %54, align 8, !tbaa !16
  %673 = load i32, ptr %55, align 4, !tbaa !9
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds float, ptr %672, i64 %674
  store float %671, ptr %675, align 4, !tbaa !14
  br label %676

676:                                              ; preds = %666
  %677 = load i32, ptr %55, align 4, !tbaa !9
  %678 = add nsw i32 %677, 1
  store i32 %678, ptr %55, align 4, !tbaa !9
  br label %651, !llvm.loop !48

679:                                              ; preds = %657
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #11
  %680 = load i32, ptr %5, align 4, !tbaa !9
  %681 = load i32, ptr %6, align 4, !tbaa !9
  %682 = invoke noundef ptr @_Z19generateMatrixDensejjf(i32 noundef %680, i32 noundef %681, float noundef 0.000000e+00)
          to label %683 unwind label %701

683:                                              ; preds = %679
  store ptr %682, ptr %56, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #11
  %684 = load i32, ptr %5, align 4, !tbaa !9
  %685 = load i32, ptr %6, align 4, !tbaa !9
  %686 = mul nsw i32 %684, %685
  %687 = sext i32 %686 to i64
  %688 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %687, i64 4)
  %689 = extractvalue { i64, i1 } %688, 1
  %690 = extractvalue { i64, i1 } %688, 0
  %691 = select i1 %689, i64 -1, i64 %690
  %692 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %691) #12
          to label %693 unwind label %705

693:                                              ; preds = %683
  store ptr %692, ptr %57, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #11
  store i32 0, ptr %58, align 4, !tbaa !9
  br label %694

694:                                              ; preds = %719, %693
  %695 = load i32, ptr %58, align 4, !tbaa !9
  %696 = load i32, ptr %5, align 4, !tbaa !9
  %697 = load i32, ptr %6, align 4, !tbaa !9
  %698 = mul nsw i32 %696, %697
  %699 = icmp slt i32 %695, %698
  br i1 %699, label %709, label %700

700:                                              ; preds = %694
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #11
  br label %722

701:                                              ; preds = %679
  %702 = landingpad { ptr, i32 }
          cleanup
  %703 = extractvalue { ptr, i32 } %702, 0
  store ptr %703, ptr %26, align 8
  %704 = extractvalue { ptr, i32 } %702, 1
  store i32 %704, ptr %27, align 4
  br label %1638

705:                                              ; preds = %683
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %26, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %27, align 4
  br label %1637

709:                                              ; preds = %694
  %710 = load ptr, ptr %56, align 8, !tbaa !16
  %711 = load i32, ptr %58, align 4, !tbaa !9
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds float, ptr %710, i64 %712
  %714 = load float, ptr %713, align 4, !tbaa !14
  %715 = load ptr, ptr %57, align 8, !tbaa !16
  %716 = load i32, ptr %58, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds float, ptr %715, i64 %717
  store float %714, ptr %718, align 4, !tbaa !14
  br label %719

719:                                              ; preds = %709
  %720 = load i32, ptr %58, align 4, !tbaa !9
  %721 = add nsw i32 %720, 1
  store i32 %721, ptr %58, align 4, !tbaa !9
  br label %694, !llvm.loop !49

722:                                              ; preds = %700
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #11
  %723 = load i32, ptr %4, align 4, !tbaa !9
  %724 = load i32, ptr %6, align 4, !tbaa !9
  %725 = mul nsw i32 %723, %724
  %726 = sext i32 %725 to i64
  %727 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %726, i64 4)
  %728 = extractvalue { i64, i1 } %727, 1
  %729 = extractvalue { i64, i1 } %727, 0
  %730 = select i1 %728, i64 -1, i64 %729
  %731 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %730) #12
          to label %732 unwind label %775

732:                                              ; preds = %722
  store ptr %731, ptr %59, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #11
  %733 = load i32, ptr %4, align 4, !tbaa !9
  %734 = load i32, ptr %6, align 4, !tbaa !9
  %735 = mul nsw i32 %733, %734
  %736 = sext i32 %735 to i64
  %737 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %736, i64 4)
  %738 = extractvalue { i64, i1 } %737, 1
  %739 = extractvalue { i64, i1 } %737, 0
  %740 = select i1 %738, i64 -1, i64 %739
  %741 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %740) #12
          to label %742 unwind label %779

742:                                              ; preds = %732
  store ptr %741, ptr %60, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #11
  %743 = load i32, ptr %4, align 4, !tbaa !9
  %744 = load i32, ptr %6, align 4, !tbaa !9
  %745 = mul nsw i32 %743, %744
  %746 = sext i32 %745 to i64
  %747 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %746, i64 4)
  %748 = extractvalue { i64, i1 } %747, 1
  %749 = extractvalue { i64, i1 } %747, 0
  %750 = select i1 %748, i64 -1, i64 %749
  %751 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %750) #12
          to label %752 unwind label %783

752:                                              ; preds = %742
  store ptr %751, ptr %61, align 8, !tbaa !16
  %753 = load i32, ptr %16, align 4, !tbaa !9
  %754 = getelementptr inbounds %class.Config, ptr %43, i32 0, i32 3
  %755 = getelementptr inbounds %class.MSNetworkConfig, ptr %754, i32 0, i32 1
  store i32 %753, ptr %755, align 4, !tbaa !22
  %756 = load i32, ptr %16, align 4, !tbaa !9
  %757 = getelementptr inbounds %class.Config, ptr %43, i32 0, i32 8
  %758 = getelementptr inbounds %class.SDMemoryConfig, ptr %757, i32 0, i32 2
  store i32 %756, ptr %758, align 4, !tbaa !36
  %759 = load i32, ptr %16, align 4, !tbaa !9
  %760 = getelementptr inbounds %class.Config, ptr %43, i32 0, i32 8
  %761 = getelementptr inbounds %class.SDMemoryConfig, ptr %760, i32 0, i32 3
  store i32 %759, ptr %761, align 4, !tbaa !37
  %762 = getelementptr inbounds %class.Config, ptr %43, i32 0, i32 5
  %763 = getelementptr inbounds %class.ASNetworkConfig, ptr %762, i32 0, i32 1
  store i32 1, ptr %763, align 4, !tbaa !38
  %764 = getelementptr inbounds %class.Config, ptr %43, i32 0, i32 8
  %765 = getelementptr inbounds %class.SDMemoryConfig, ptr %764, i32 0, i32 0
  store i32 0, ptr %765, align 4, !tbaa !39
  %766 = getelementptr inbounds %class.Config, ptr %43, i32 0, i32 0
  store i32 0, ptr %766, align 4, !tbaa !40
  %767 = load i32, ptr %12, align 4, !tbaa !9
  %768 = icmp sgt i32 %767, 1
  br i1 %768, label %769, label %796

769:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %770 unwind label %787

770:                                              ; preds = %769
  %771 = invoke noundef i32 @_Z28get_type_reduce_network_typeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %62)
          to label %772 unwind label %791

772:                                              ; preds = %770
  %773 = getelementptr inbounds %class.Config, ptr %43, i32 0, i32 5
  %774 = getelementptr inbounds %class.ASNetworkConfig, ptr %773, i32 0, i32 0
  store i32 %771, ptr %774, align 4, !tbaa !41
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #11
  br label %811

775:                                              ; preds = %722
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %26, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %27, align 4
  br label %1636

779:                                              ; preds = %732
  %780 = landingpad { ptr, i32 }
          cleanup
  %781 = extractvalue { ptr, i32 } %780, 0
  store ptr %781, ptr %26, align 8
  %782 = extractvalue { ptr, i32 } %780, 1
  store i32 %782, ptr %27, align 4
  br label %1635

783:                                              ; preds = %742
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %26, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %27, align 4
  br label %1634

787:                                              ; preds = %769
  %788 = landingpad { ptr, i32 }
          cleanup
  %789 = extractvalue { ptr, i32 } %788, 0
  store ptr %789, ptr %26, align 8
  %790 = extractvalue { ptr, i32 } %788, 1
  store i32 %790, ptr %27, align 4
  br label %795

791:                                              ; preds = %770
  %792 = landingpad { ptr, i32 }
          cleanup
  %793 = extractvalue { ptr, i32 } %792, 0
  store ptr %793, ptr %26, align 8
  %794 = extractvalue { ptr, i32 } %792, 1
  store i32 %794, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #11
  br label %795

795:                                              ; preds = %791, %787
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #11
  br label %1634

796:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %797 unwind label %802

797:                                              ; preds = %796
  %798 = invoke noundef i32 @_Z28get_type_reduce_network_typeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %64)
          to label %799 unwind label %806

799:                                              ; preds = %797
  %800 = getelementptr inbounds %class.Config, ptr %43, i32 0, i32 5
  %801 = getelementptr inbounds %class.ASNetworkConfig, ptr %800, i32 0, i32 0
  store i32 %798, ptr %801, align 4, !tbaa !41
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #11
  br label %811

802:                                              ; preds = %796
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %26, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %27, align 4
  br label %810

806:                                              ; preds = %797
  %807 = landingpad { ptr, i32 }
          cleanup
  %808 = extractvalue { ptr, i32 } %807, 0
  store ptr %808, ptr %26, align 8
  %809 = extractvalue { ptr, i32 } %807, 1
  store i32 %809, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #11
  br label %810

810:                                              ; preds = %806, %802
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #11
  br label %1634

811:                                              ; preds = %799, %772
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #11
  %812 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 320) #12
          to label %813 unwind label %851

813:                                              ; preds = %811
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %67, ptr align 4 %43, i64 160, i1 false), !tbaa.struct !42
  invoke void @_ZN6StonneC1E6Config(ptr noundef nonnull align 8 dereferenceable(316) %812, ptr noundef byval(%class.Config) align 8 %67)
          to label %814 unwind label %855

814:                                              ; preds = %813
  store ptr %812, ptr %66, align 8, !tbaa !16
  %815 = load ptr, ptr %66, align 8, !tbaa !16
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %816 unwind label %851

816:                                              ; preds = %814
  %817 = load i32, ptr %6, align 4, !tbaa !9
  %818 = load i32, ptr %5, align 4, !tbaa !9
  %819 = load i32, ptr %4, align 4, !tbaa !9
  %820 = load ptr, ptr %54, align 8, !tbaa !16
  %821 = load ptr, ptr %57, align 8, !tbaa !16
  %822 = load ptr, ptr %61, align 8, !tbaa !16
  invoke void @_ZN6Stonne13loadDenseGEMMENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjjjPfS6_S6_8Dataflow(ptr noundef nonnull align 8 dereferenceable(316) %815, ptr noundef %68, i32 noundef %817, i32 noundef %818, i32 noundef %819, ptr noundef %820, ptr noundef %821, ptr noundef %822, i32 noundef 0)
          to label %823 unwind label %859

823:                                              ; preds = %816
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #11
  %824 = load ptr, ptr %66, align 8, !tbaa !16
  %825 = load ptr, ptr %59, align 8, !tbaa !16
  invoke void @_ZN6Stonne12loadClockingEPj(ptr noundef nonnull align 8 dereferenceable(316) %824, ptr noundef %825)
          to label %826 unwind label %851

826:                                              ; preds = %823
  %827 = load ptr, ptr %66, align 8, !tbaa !16
  %828 = load i32, ptr %11, align 4, !tbaa !9
  %829 = load i32, ptr %12, align 4, !tbaa !9
  %830 = load i32, ptr %10, align 4, !tbaa !9
  invoke void @_ZN6Stonne12loadGEMMTileEjjj(ptr noundef nonnull align 8 dereferenceable(316) %827, i32 noundef %828, i32 noundef %829, i32 noundef %830)
          to label %831 unwind label %851

831:                                              ; preds = %826
  %832 = load ptr, ptr %66, align 8, !tbaa !16
  invoke void @_ZN6Stonne3runEv(ptr noundef nonnull align 8 dereferenceable(316) %832)
          to label %833 unwind label %851

833:                                              ; preds = %831
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #11
  %834 = load i32, ptr %4, align 4, !tbaa !9
  %835 = load i32, ptr %6, align 4, !tbaa !9
  %836 = mul nsw i32 %834, %835
  %837 = sext i32 %836 to i64
  %838 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %837, i64 4)
  %839 = extractvalue { i64, i1 } %838, 1
  %840 = extractvalue { i64, i1 } %838, 0
  %841 = select i1 %839, i64 -1, i64 %840
  %842 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %841) #12
          to label %843 unwind label %863

843:                                              ; preds = %833
  store ptr %842, ptr %69, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #11
  store i32 0, ptr %70, align 4, !tbaa !9
  br label %844

844:                                              ; preds = %877, %843
  %845 = load i32, ptr %70, align 4, !tbaa !9
  %846 = load i32, ptr %4, align 4, !tbaa !9
  %847 = load i32, ptr %6, align 4, !tbaa !9
  %848 = mul nsw i32 %846, %847
  %849 = icmp slt i32 %845, %848
  br i1 %849, label %867, label %850

850:                                              ; preds = %844
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #11
  br label %880

851:                                              ; preds = %831, %826, %823, %814, %811
  %852 = landingpad { ptr, i32 }
          cleanup
  %853 = extractvalue { ptr, i32 } %852, 0
  store ptr %853, ptr %26, align 8
  %854 = extractvalue { ptr, i32 } %852, 1
  store i32 %854, ptr %27, align 4
  br label %1633

855:                                              ; preds = %813
  %856 = landingpad { ptr, i32 }
          cleanup
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %26, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %27, align 4
  call void @_ZdlPvm(ptr noundef %812, i64 noundef 320) #13
  br label %1633

859:                                              ; preds = %816
  %860 = landingpad { ptr, i32 }
          cleanup
  %861 = extractvalue { ptr, i32 } %860, 0
  store ptr %861, ptr %26, align 8
  %862 = extractvalue { ptr, i32 } %860, 1
  store i32 %862, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #11
  br label %1633

863:                                              ; preds = %833
  %864 = landingpad { ptr, i32 }
          cleanup
  %865 = extractvalue { ptr, i32 } %864, 0
  store ptr %865, ptr %26, align 8
  %866 = extractvalue { ptr, i32 } %864, 1
  store i32 %866, ptr %27, align 4
  br label %1632

867:                                              ; preds = %844
  %868 = load ptr, ptr %59, align 8, !tbaa !16
  %869 = load i32, ptr %70, align 4, !tbaa !9
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds i32, ptr %868, i64 %870
  %872 = load i32, ptr %871, align 4, !tbaa !9
  %873 = load ptr, ptr %69, align 8, !tbaa !16
  %874 = load i32, ptr %70, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds i32, ptr %873, i64 %875
  store i32 %872, ptr %876, align 4, !tbaa !9
  br label %877

877:                                              ; preds = %867
  %878 = load i32, ptr %70, align 4, !tbaa !9
  %879 = add nsw i32 %878, 1
  store i32 %879, ptr %70, align 4, !tbaa !9
  br label %844, !llvm.loop !50

880:                                              ; preds = %850
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #11
  store i32 0, ptr %71, align 4, !tbaa !9
  br label %881

881:                                              ; preds = %914, %880
  %882 = load i32, ptr %71, align 4, !tbaa !9
  %883 = load i32, ptr %4, align 4, !tbaa !9
  %884 = icmp slt i32 %882, %883
  br i1 %884, label %886, label %885

885:                                              ; preds = %881
  store i32 23, ptr %72, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #11
  br label %917

886:                                              ; preds = %881
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #11
  store i32 0, ptr %73, align 4, !tbaa !9
  br label %887

887:                                              ; preds = %910, %886
  %888 = load i32, ptr %73, align 4, !tbaa !9
  %889 = load i32, ptr %6, align 4, !tbaa !9
  %890 = icmp slt i32 %888, %889
  br i1 %890, label %892, label %891

891:                                              ; preds = %887
  store i32 26, ptr %72, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #11
  br label %913

892:                                              ; preds = %887
  %893 = load ptr, ptr %69, align 8, !tbaa !16
  %894 = load i32, ptr %73, align 4, !tbaa !9
  %895 = load i32, ptr %4, align 4, !tbaa !9
  %896 = mul nsw i32 %894, %895
  %897 = load i32, ptr %71, align 4, !tbaa !9
  %898 = add nsw i32 %896, %897
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds i32, ptr %893, i64 %899
  %901 = load i32, ptr %900, align 4, !tbaa !9
  %902 = load ptr, ptr %59, align 8, !tbaa !16
  %903 = load i32, ptr %71, align 4, !tbaa !9
  %904 = load i32, ptr %6, align 4, !tbaa !9
  %905 = mul nsw i32 %903, %904
  %906 = load i32, ptr %73, align 4, !tbaa !9
  %907 = add nsw i32 %905, %906
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds i32, ptr %902, i64 %908
  store i32 %901, ptr %909, align 4, !tbaa !9
  br label %910

910:                                              ; preds = %892
  %911 = load i32, ptr %73, align 4, !tbaa !9
  %912 = add nsw i32 %911, 1
  store i32 %912, ptr %73, align 4, !tbaa !9
  br label %887, !llvm.loop !51

913:                                              ; preds = %891
  br label %914

914:                                              ; preds = %913
  %915 = load i32, ptr %71, align 4, !tbaa !9
  %916 = add nsw i32 %915, 1
  store i32 %916, ptr %71, align 4, !tbaa !9
  br label %881, !llvm.loop !52

917:                                              ; preds = %885
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #11
  %918 = load ptr, ptr %66, align 8, !tbaa !16
  %919 = invoke noundef i32 @_ZN6Stonne9getCyclesEv(ptr noundef nonnull align 8 dereferenceable(316) %918)
          to label %920 unwind label %932

920:                                              ; preds = %917
  store i32 %919, ptr %74, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #11
  %921 = load i32, ptr %13, align 4, !tbaa !9
  %922 = load i32, ptr %6, align 4, !tbaa !9
  %923 = mul nsw i32 %921, %922
  %924 = sub nsw i32 %923, 1
  store i32 %924, ptr %75, align 4, !tbaa !9
  br label %925

925:                                              ; preds = %946, %920
  %926 = load i32, ptr %75, align 4, !tbaa !9
  %927 = load i32, ptr %4, align 4, !tbaa !9
  %928 = load i32, ptr %6, align 4, !tbaa !9
  %929 = mul nsw i32 %927, %928
  %930 = icmp slt i32 %926, %929
  br i1 %930, label %936, label %931

931:                                              ; preds = %925
  store i32 29, ptr %72, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #11
  br label %956

932:                                              ; preds = %1202, %1199, %1197, %1194, %1171, %917
  %933 = landingpad { ptr, i32 }
          cleanup
  %934 = extractvalue { ptr, i32 } %933, 0
  store ptr %934, ptr %26, align 8
  %935 = extractvalue { ptr, i32 } %933, 1
  store i32 %935, ptr %27, align 4
  br label %1631

936:                                              ; preds = %925
  %937 = load ptr, ptr %59, align 8, !tbaa !16
  %938 = load i32, ptr %75, align 4, !tbaa !9
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds i32, ptr %937, i64 %939
  %941 = load i32, ptr %940, align 4, !tbaa !9
  %942 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %941)
          to label %943 unwind label %952

943:                                              ; preds = %936
  %944 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %942, ptr noundef @.str.1)
          to label %945 unwind label %952

945:                                              ; preds = %943
  br label %946

946:                                              ; preds = %945
  %947 = load i32, ptr %13, align 4, !tbaa !9
  %948 = load i32, ptr %6, align 4, !tbaa !9
  %949 = mul nsw i32 %947, %948
  %950 = load i32, ptr %75, align 4, !tbaa !9
  %951 = add nsw i32 %950, %949
  store i32 %951, ptr %75, align 4, !tbaa !9
  br label %925, !llvm.loop !53

952:                                              ; preds = %943, %936
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %26, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #11
  br label %1631

956:                                              ; preds = %931
  %957 = load ptr, ptr %54, align 8, !tbaa !16
  %958 = icmp eq ptr %957, null
  br i1 %958, label %960, label %959

959:                                              ; preds = %956
  call void @_ZdaPv(ptr noundef %957) #13
  br label %960

960:                                              ; preds = %959, %956
  %961 = load ptr, ptr %57, align 8, !tbaa !16
  %962 = icmp eq ptr %961, null
  br i1 %962, label %964, label %963

963:                                              ; preds = %960
  call void @_ZdaPv(ptr noundef %961) #13
  br label %964

964:                                              ; preds = %963, %960
  %965 = load ptr, ptr %61, align 8, !tbaa !16
  %966 = icmp eq ptr %965, null
  br i1 %966, label %968, label %967

967:                                              ; preds = %964
  call void @_ZdaPv(ptr noundef %965) #13
  br label %968

968:                                              ; preds = %967, %964
  %969 = load ptr, ptr %60, align 8, !tbaa !16
  %970 = icmp eq ptr %969, null
  br i1 %970, label %972, label %971

971:                                              ; preds = %968
  call void @_ZdaPv(ptr noundef %969) #13
  br label %972

972:                                              ; preds = %971, %968
  %973 = load ptr, ptr %66, align 8, !tbaa !16
  %974 = icmp eq ptr %973, null
  br i1 %974, label %976, label %975

975:                                              ; preds = %972
  call void @_ZN6StonneD1Ev(ptr noundef nonnull align 8 dereferenceable(316) %973) #11
  call void @_ZdlPvm(ptr noundef %973, i64 noundef 320) #13
  br label %976

976:                                              ; preds = %975, %972
  %977 = load i32, ptr %7, align 4, !tbaa !9
  %978 = icmp eq i32 %977, 1
  br i1 %978, label %979, label %1205

979:                                              ; preds = %976
  %980 = load ptr, ptr %39, align 8, !tbaa !16
  %981 = load i32, ptr %13, align 4, !tbaa !9
  %982 = load i32, ptr %5, align 4, !tbaa !9
  %983 = mul nsw i32 %981, %982
  %984 = sub nsw i32 %983, 1
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds i32, ptr %980, i64 %985
  %987 = load i32, ptr %986, align 4, !tbaa !9
  store i32 %987, ptr %21, align 4, !tbaa !9
  %988 = load ptr, ptr %39, align 8, !tbaa !16
  %989 = load i32, ptr %13, align 4, !tbaa !9
  %990 = mul nsw i32 2, %989
  %991 = load i32, ptr %5, align 4, !tbaa !9
  %992 = mul nsw i32 %990, %991
  %993 = sub nsw i32 %992, 1
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds i32, ptr %988, i64 %994
  %996 = load i32, ptr %995, align 4, !tbaa !9
  %997 = load ptr, ptr %39, align 8, !tbaa !16
  %998 = load i32, ptr %13, align 4, !tbaa !9
  %999 = load i32, ptr %5, align 4, !tbaa !9
  %1000 = mul nsw i32 %998, %999
  %1001 = sub nsw i32 %1000, 1
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds i32, ptr %997, i64 %1002
  %1004 = load i32, ptr %1003, align 4, !tbaa !9
  %1005 = sub i32 %996, %1004
  %1006 = load ptr, ptr %59, align 8, !tbaa !16
  %1007 = load i32, ptr %13, align 4, !tbaa !9
  %1008 = load i32, ptr %6, align 4, !tbaa !9
  %1009 = mul nsw i32 %1007, %1008
  %1010 = sub nsw i32 %1009, 1
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds i32, ptr %1006, i64 %1011
  %1013 = load i32, ptr %1012, align 4, !tbaa !9
  %1014 = icmp ugt i32 %1005, %1013
  br i1 %1014, label %1015, label %1034

1015:                                             ; preds = %979
  %1016 = load ptr, ptr %39, align 8, !tbaa !16
  %1017 = load i32, ptr %13, align 4, !tbaa !9
  %1018 = mul nsw i32 2, %1017
  %1019 = load i32, ptr %5, align 4, !tbaa !9
  %1020 = mul nsw i32 %1018, %1019
  %1021 = sub nsw i32 %1020, 1
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds i32, ptr %1016, i64 %1022
  %1024 = load i32, ptr %1023, align 4, !tbaa !9
  %1025 = load ptr, ptr %39, align 8, !tbaa !16
  %1026 = load i32, ptr %13, align 4, !tbaa !9
  %1027 = load i32, ptr %5, align 4, !tbaa !9
  %1028 = mul nsw i32 %1026, %1027
  %1029 = sub nsw i32 %1028, 1
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds i32, ptr %1025, i64 %1030
  %1032 = load i32, ptr %1031, align 4, !tbaa !9
  %1033 = sub i32 %1024, %1032
  br label %1043

1034:                                             ; preds = %979
  %1035 = load ptr, ptr %59, align 8, !tbaa !16
  %1036 = load i32, ptr %13, align 4, !tbaa !9
  %1037 = load i32, ptr %6, align 4, !tbaa !9
  %1038 = mul nsw i32 %1036, %1037
  %1039 = sub nsw i32 %1038, 1
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds i32, ptr %1035, i64 %1040
  %1042 = load i32, ptr %1041, align 4, !tbaa !9
  br label %1043

1043:                                             ; preds = %1034, %1015
  %1044 = phi i32 [ %1033, %1015 ], [ %1042, %1034 ]
  %1045 = load i32, ptr %21, align 4, !tbaa !9
  %1046 = add i32 %1045, %1044
  store i32 %1046, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #11
  store i32 2, ptr %76, align 4, !tbaa !9
  br label %1047

1047:                                             ; preds = %1168, %1043
  %1048 = load i32, ptr %76, align 4, !tbaa !9
  %1049 = load i32, ptr %4, align 4, !tbaa !9
  %1050 = load i32, ptr %13, align 4, !tbaa !9
  %1051 = sdiv i32 %1049, %1050
  %1052 = icmp slt i32 %1048, %1051
  br i1 %1052, label %1054, label %1053

1053:                                             ; preds = %1047
  store i32 32, ptr %72, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #11
  br label %1171

1054:                                             ; preds = %1047
  %1055 = load ptr, ptr %39, align 8, !tbaa !16
  %1056 = load i32, ptr %76, align 4, !tbaa !9
  %1057 = load i32, ptr %5, align 4, !tbaa !9
  %1058 = mul nsw i32 %1056, %1057
  %1059 = load i32, ptr %5, align 4, !tbaa !9
  %1060 = add nsw i32 %1058, %1059
  %1061 = load i32, ptr %13, align 4, !tbaa !9
  %1062 = mul nsw i32 %1060, %1061
  %1063 = sub nsw i32 %1062, 1
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds i32, ptr %1055, i64 %1064
  %1066 = load i32, ptr %1065, align 4, !tbaa !9
  %1067 = load ptr, ptr %39, align 8, !tbaa !16
  %1068 = load i32, ptr %76, align 4, !tbaa !9
  %1069 = sub nsw i32 %1068, 1
  %1070 = load i32, ptr %5, align 4, !tbaa !9
  %1071 = mul nsw i32 %1069, %1070
  %1072 = load i32, ptr %5, align 4, !tbaa !9
  %1073 = add nsw i32 %1071, %1072
  %1074 = load i32, ptr %13, align 4, !tbaa !9
  %1075 = mul nsw i32 %1073, %1074
  %1076 = sub nsw i32 %1075, 1
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds i32, ptr %1067, i64 %1077
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  %1080 = sub i32 %1066, %1079
  %1081 = load ptr, ptr %59, align 8, !tbaa !16
  %1082 = load i32, ptr %76, align 4, !tbaa !9
  %1083 = sub nsw i32 %1082, 1
  %1084 = load i32, ptr %6, align 4, !tbaa !9
  %1085 = mul nsw i32 %1083, %1084
  %1086 = load i32, ptr %6, align 4, !tbaa !9
  %1087 = add nsw i32 %1085, %1086
  %1088 = load i32, ptr %13, align 4, !tbaa !9
  %1089 = mul nsw i32 %1087, %1088
  %1090 = sub nsw i32 %1089, 1
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds i32, ptr %1081, i64 %1091
  %1093 = load i32, ptr %1092, align 4, !tbaa !9
  %1094 = load ptr, ptr %59, align 8, !tbaa !16
  %1095 = load i32, ptr %76, align 4, !tbaa !9
  %1096 = sub nsw i32 %1095, 2
  %1097 = load i32, ptr %6, align 4, !tbaa !9
  %1098 = mul nsw i32 %1096, %1097
  %1099 = load i32, ptr %6, align 4, !tbaa !9
  %1100 = add nsw i32 %1098, %1099
  %1101 = load i32, ptr %13, align 4, !tbaa !9
  %1102 = mul nsw i32 %1100, %1101
  %1103 = sub nsw i32 %1102, 1
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds i32, ptr %1094, i64 %1104
  %1106 = load i32, ptr %1105, align 4, !tbaa !9
  %1107 = sub i32 %1093, %1106
  %1108 = icmp ugt i32 %1080, %1107
  br i1 %1108, label %1109, label %1136

1109:                                             ; preds = %1054
  %1110 = load ptr, ptr %39, align 8, !tbaa !16
  %1111 = load i32, ptr %13, align 4, !tbaa !9
  %1112 = load i32, ptr %76, align 4, !tbaa !9
  %1113 = load i32, ptr %5, align 4, !tbaa !9
  %1114 = mul nsw i32 %1112, %1113
  %1115 = load i32, ptr %5, align 4, !tbaa !9
  %1116 = add nsw i32 %1114, %1115
  %1117 = mul nsw i32 %1111, %1116
  %1118 = sub nsw i32 %1117, 1
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds i32, ptr %1110, i64 %1119
  %1121 = load i32, ptr %1120, align 4, !tbaa !9
  %1122 = load ptr, ptr %39, align 8, !tbaa !16
  %1123 = load i32, ptr %76, align 4, !tbaa !9
  %1124 = sub nsw i32 %1123, 1
  %1125 = load i32, ptr %5, align 4, !tbaa !9
  %1126 = mul nsw i32 %1124, %1125
  %1127 = load i32, ptr %5, align 4, !tbaa !9
  %1128 = add nsw i32 %1126, %1127
  %1129 = load i32, ptr %13, align 4, !tbaa !9
  %1130 = mul nsw i32 %1128, %1129
  %1131 = sub nsw i32 %1130, 1
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds i32, ptr %1122, i64 %1132
  %1134 = load i32, ptr %1133, align 4, !tbaa !9
  %1135 = sub i32 %1121, %1134
  br label %1164

1136:                                             ; preds = %1054
  %1137 = load ptr, ptr %59, align 8, !tbaa !16
  %1138 = load i32, ptr %76, align 4, !tbaa !9
  %1139 = sub nsw i32 %1138, 1
  %1140 = load i32, ptr %6, align 4, !tbaa !9
  %1141 = mul nsw i32 %1139, %1140
  %1142 = load i32, ptr %6, align 4, !tbaa !9
  %1143 = add nsw i32 %1141, %1142
  %1144 = load i32, ptr %13, align 4, !tbaa !9
  %1145 = mul nsw i32 %1143, %1144
  %1146 = sub nsw i32 %1145, 1
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds i32, ptr %1137, i64 %1147
  %1149 = load i32, ptr %1148, align 4, !tbaa !9
  %1150 = load ptr, ptr %59, align 8, !tbaa !16
  %1151 = load i32, ptr %76, align 4, !tbaa !9
  %1152 = sub nsw i32 %1151, 2
  %1153 = load i32, ptr %6, align 4, !tbaa !9
  %1154 = mul nsw i32 %1152, %1153
  %1155 = load i32, ptr %6, align 4, !tbaa !9
  %1156 = add nsw i32 %1154, %1155
  %1157 = load i32, ptr %13, align 4, !tbaa !9
  %1158 = mul nsw i32 %1156, %1157
  %1159 = sub nsw i32 %1158, 1
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds i32, ptr %1150, i64 %1160
  %1162 = load i32, ptr %1161, align 4, !tbaa !9
  %1163 = sub i32 %1149, %1162
  br label %1164

1164:                                             ; preds = %1136, %1109
  %1165 = phi i32 [ %1135, %1109 ], [ %1163, %1136 ]
  %1166 = load i32, ptr %21, align 4, !tbaa !9
  %1167 = add i32 %1166, %1165
  store i32 %1167, ptr %21, align 4, !tbaa !9
  br label %1168

1168:                                             ; preds = %1164
  %1169 = load i32, ptr %76, align 4, !tbaa !9
  %1170 = add nsw i32 %1169, 1
  store i32 %1170, ptr %76, align 4, !tbaa !9
  br label %1047, !llvm.loop !54

1171:                                             ; preds = %1053
  %1172 = load ptr, ptr %59, align 8, !tbaa !16
  %1173 = load i32, ptr %4, align 4, !tbaa !9
  %1174 = load i32, ptr %6, align 4, !tbaa !9
  %1175 = mul nsw i32 %1173, %1174
  %1176 = sub nsw i32 %1175, 1
  %1177 = sext i32 %1176 to i64
  %1178 = getelementptr inbounds i32, ptr %1172, i64 %1177
  %1179 = load i32, ptr %1178, align 4, !tbaa !9
  %1180 = load ptr, ptr %59, align 8, !tbaa !16
  %1181 = load i32, ptr %4, align 4, !tbaa !9
  %1182 = load i32, ptr %13, align 4, !tbaa !9
  %1183 = sub nsw i32 %1181, %1182
  %1184 = load i32, ptr %6, align 4, !tbaa !9
  %1185 = mul nsw i32 %1183, %1184
  %1186 = sub nsw i32 %1185, 1
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds i32, ptr %1180, i64 %1187
  %1189 = load i32, ptr %1188, align 4, !tbaa !9
  %1190 = sub i32 %1179, %1189
  %1191 = load i32, ptr %21, align 4, !tbaa !9
  %1192 = add i32 %1191, %1190
  store i32 %1192, ptr %21, align 4, !tbaa !9
  %1193 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.10)
          to label %1194 unwind label %932

1194:                                             ; preds = %1171
  %1195 = load i32, ptr %21, align 4, !tbaa !9
  %1196 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1193, i32 noundef %1195)
          to label %1197 unwind label %932

1197:                                             ; preds = %1194
  %1198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1196, ptr noundef @.str.11)
          to label %1199 unwind label %932

1199:                                             ; preds = %1197
  %1200 = load i32, ptr %22, align 4, !tbaa !9
  %1201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1198, i32 noundef %1200)
          to label %1202 unwind label %932

1202:                                             ; preds = %1199
  %1203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1201, ptr noundef @.str.12)
          to label %1204 unwind label %932

1204:                                             ; preds = %1202
  br label %1205

1205:                                             ; preds = %1204, %976
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #11
  %1206 = load i32, ptr %4, align 4, !tbaa !9
  %1207 = load i32, ptr %7, align 4, !tbaa !9
  %1208 = sdiv i32 %1206, %1207
  %1209 = sext i32 %1208 to i64
  %1210 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1209, i64 4)
  %1211 = extractvalue { i64, i1 } %1210, 1
  %1212 = extractvalue { i64, i1 } %1210, 0
  %1213 = select i1 %1211, i64 -1, i64 %1212
  %1214 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1213) #12
          to label %1215 unwind label %1223

1215:                                             ; preds = %1205
  store ptr %1214, ptr %77, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #11
  store i32 0, ptr %79, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #11
  store i32 0, ptr %80, align 4, !tbaa !9
  br label %1216

1216:                                             ; preds = %1315, %1215
  %1217 = load i32, ptr %80, align 4, !tbaa !9
  %1218 = load i32, ptr %4, align 4, !tbaa !9
  %1219 = load i32, ptr %7, align 4, !tbaa !9
  %1220 = sdiv i32 %1218, %1219
  %1221 = icmp slt i32 %1217, %1220
  br i1 %1221, label %1227, label %1222

1222:                                             ; preds = %1216
  store i32 35, ptr %72, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #11
  br label %1322

1223:                                             ; preds = %1205
  %1224 = landingpad { ptr, i32 }
          cleanup
  %1225 = extractvalue { ptr, i32 } %1224, 0
  store ptr %1225, ptr %26, align 8
  %1226 = extractvalue { ptr, i32 } %1224, 1
  store i32 %1226, ptr %27, align 4
  br label %1630

1227:                                             ; preds = %1216
  store i32 0, ptr %78, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #11
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %1228

1228:                                             ; preds = %1298, %1227
  %1229 = load i32, ptr %81, align 4, !tbaa !9
  %1230 = load i32, ptr %7, align 4, !tbaa !9
  %1231 = icmp slt i32 %1229, %1230
  br i1 %1231, label %1233, label %1232

1232:                                             ; preds = %1228
  store i32 38, ptr %72, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #11
  br label %1301

1233:                                             ; preds = %1228
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #11
  %1234 = load i32, ptr %80, align 4, !tbaa !9
  %1235 = load i32, ptr %7, align 4, !tbaa !9
  %1236 = mul nsw i32 %1234, %1235
  %1237 = load i32, ptr %81, align 4, !tbaa !9
  %1238 = add nsw i32 %1236, %1237
  store i32 %1238, ptr %82, align 4, !tbaa !9
  %1239 = load i32, ptr %82, align 4, !tbaa !9
  %1240 = icmp eq i32 %1239, 0
  br i1 %1240, label %1241, label %1248

1241:                                             ; preds = %1233
  %1242 = load ptr, ptr %39, align 8, !tbaa !16
  %1243 = load i32, ptr %5, align 4, !tbaa !9
  %1244 = sub nsw i32 %1243, 1
  %1245 = sext i32 %1244 to i64
  %1246 = getelementptr inbounds i32, ptr %1242, i64 %1245
  %1247 = load i32, ptr %1246, align 4, !tbaa !9
  store i32 %1247, ptr %78, align 4, !tbaa !9
  br label %1297

1248:                                             ; preds = %1233
  %1249 = load ptr, ptr %39, align 8, !tbaa !16
  %1250 = load i32, ptr %82, align 4, !tbaa !9
  %1251 = load i32, ptr %5, align 4, !tbaa !9
  %1252 = mul nsw i32 %1250, %1251
  %1253 = load i32, ptr %5, align 4, !tbaa !9
  %1254 = add nsw i32 %1252, %1253
  %1255 = sub nsw i32 %1254, 1
  %1256 = sext i32 %1255 to i64
  %1257 = getelementptr inbounds i32, ptr %1249, i64 %1256
  %1258 = load i32, ptr %1257, align 4, !tbaa !9
  %1259 = load ptr, ptr %39, align 8, !tbaa !16
  %1260 = load i32, ptr %82, align 4, !tbaa !9
  %1261 = sub nsw i32 %1260, 1
  %1262 = load i32, ptr %5, align 4, !tbaa !9
  %1263 = mul nsw i32 %1261, %1262
  %1264 = load i32, ptr %5, align 4, !tbaa !9
  %1265 = add nsw i32 %1263, %1264
  %1266 = sub nsw i32 %1265, 1
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds i32, ptr %1259, i64 %1267
  %1269 = load i32, ptr %1268, align 4, !tbaa !9
  %1270 = sub i32 %1258, %1269
  %1271 = load i32, ptr %78, align 4, !tbaa !9
  %1272 = icmp ugt i32 %1270, %1271
  br i1 %1272, label %1273, label %1296

1273:                                             ; preds = %1248
  %1274 = load ptr, ptr %39, align 8, !tbaa !16
  %1275 = load i32, ptr %82, align 4, !tbaa !9
  %1276 = load i32, ptr %5, align 4, !tbaa !9
  %1277 = mul nsw i32 %1275, %1276
  %1278 = load i32, ptr %5, align 4, !tbaa !9
  %1279 = add nsw i32 %1277, %1278
  %1280 = sub nsw i32 %1279, 1
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds i32, ptr %1274, i64 %1281
  %1283 = load i32, ptr %1282, align 4, !tbaa !9
  %1284 = load ptr, ptr %39, align 8, !tbaa !16
  %1285 = load i32, ptr %82, align 4, !tbaa !9
  %1286 = sub nsw i32 %1285, 1
  %1287 = load i32, ptr %5, align 4, !tbaa !9
  %1288 = mul nsw i32 %1286, %1287
  %1289 = load i32, ptr %5, align 4, !tbaa !9
  %1290 = add nsw i32 %1288, %1289
  %1291 = sub nsw i32 %1290, 1
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds i32, ptr %1284, i64 %1292
  %1294 = load i32, ptr %1293, align 4, !tbaa !9
  %1295 = sub i32 %1283, %1294
  store i32 %1295, ptr %78, align 4, !tbaa !9
  br label %1296

1296:                                             ; preds = %1273, %1248
  br label %1297

1297:                                             ; preds = %1296, %1241
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #11
  br label %1298

1298:                                             ; preds = %1297
  %1299 = load i32, ptr %81, align 4, !tbaa !9
  %1300 = add nsw i32 %1299, 1
  store i32 %1300, ptr %81, align 4, !tbaa !9
  br label %1228, !llvm.loop !55

1301:                                             ; preds = %1232
  %1302 = load i32, ptr %78, align 4, !tbaa !9
  %1303 = load i32, ptr %79, align 4, !tbaa !9
  %1304 = add nsw i32 %1303, %1302
  store i32 %1304, ptr %79, align 4, !tbaa !9
  %1305 = load i32, ptr %78, align 4, !tbaa !9
  %1306 = load ptr, ptr %77, align 8, !tbaa !16
  %1307 = load i32, ptr %80, align 4, !tbaa !9
  %1308 = sext i32 %1307 to i64
  %1309 = getelementptr inbounds i32, ptr %1306, i64 %1308
  store i32 %1305, ptr %1309, align 4, !tbaa !9
  %1310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.1)
          to label %1311 unwind label %1318

1311:                                             ; preds = %1301
  %1312 = load i32, ptr %78, align 4, !tbaa !9
  %1313 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1310, i32 noundef %1312)
          to label %1314 unwind label %1318

1314:                                             ; preds = %1311
  br label %1315

1315:                                             ; preds = %1314
  %1316 = load i32, ptr %80, align 4, !tbaa !9
  %1317 = add nsw i32 %1316, 1
  store i32 %1317, ptr %80, align 4, !tbaa !9
  br label %1216, !llvm.loop !56

1318:                                             ; preds = %1311, %1301
  %1319 = landingpad { ptr, i32 }
          cleanup
  %1320 = extractvalue { ptr, i32 } %1319, 0
  store ptr %1320, ptr %26, align 8
  %1321 = extractvalue { ptr, i32 } %1319, 1
  store i32 %1321, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #11
  br label %1629

1322:                                             ; preds = %1222
  %1323 = load i32, ptr %7, align 4, !tbaa !9
  %1324 = icmp ne i32 %1323, 1
  br i1 %1324, label %1325, label %1507

1325:                                             ; preds = %1322
  %1326 = load ptr, ptr %77, align 8, !tbaa !16
  %1327 = load i32, ptr %13, align 4, !tbaa !9
  %1328 = load i32, ptr %7, align 4, !tbaa !9
  %1329 = sdiv i32 %1327, %1328
  %1330 = sub nsw i32 %1329, 1
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds i32, ptr %1326, i64 %1331
  %1333 = load i32, ptr %1332, align 4, !tbaa !9
  store i32 %1333, ptr %21, align 4, !tbaa !9
  %1334 = load ptr, ptr %77, align 8, !tbaa !16
  %1335 = load i32, ptr %13, align 4, !tbaa !9
  %1336 = mul nsw i32 2, %1335
  %1337 = load i32, ptr %7, align 4, !tbaa !9
  %1338 = sdiv i32 %1336, %1337
  %1339 = sub nsw i32 %1338, 1
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds i32, ptr %1334, i64 %1340
  %1342 = load i32, ptr %1341, align 4, !tbaa !9
  %1343 = load ptr, ptr %59, align 8, !tbaa !16
  %1344 = load i32, ptr %13, align 4, !tbaa !9
  %1345 = load i32, ptr %6, align 4, !tbaa !9
  %1346 = mul nsw i32 %1344, %1345
  %1347 = sub nsw i32 %1346, 1
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds i32, ptr %1343, i64 %1348
  %1350 = load i32, ptr %1349, align 4, !tbaa !9
  %1351 = icmp ugt i32 %1342, %1350
  br i1 %1351, label %1352, label %1362

1352:                                             ; preds = %1325
  %1353 = load ptr, ptr %77, align 8, !tbaa !16
  %1354 = load i32, ptr %13, align 4, !tbaa !9
  %1355 = mul nsw i32 2, %1354
  %1356 = load i32, ptr %7, align 4, !tbaa !9
  %1357 = sdiv i32 %1355, %1356
  %1358 = sub nsw i32 %1357, 1
  %1359 = sext i32 %1358 to i64
  %1360 = getelementptr inbounds i32, ptr %1353, i64 %1359
  %1361 = load i32, ptr %1360, align 4, !tbaa !9
  br label %1371

1362:                                             ; preds = %1325
  %1363 = load ptr, ptr %59, align 8, !tbaa !16
  %1364 = load i32, ptr %13, align 4, !tbaa !9
  %1365 = load i32, ptr %6, align 4, !tbaa !9
  %1366 = mul nsw i32 %1364, %1365
  %1367 = sub nsw i32 %1366, 1
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds i32, ptr %1363, i64 %1368
  %1370 = load i32, ptr %1369, align 4, !tbaa !9
  br label %1371

1371:                                             ; preds = %1362, %1352
  %1372 = phi i32 [ %1361, %1352 ], [ %1370, %1362 ]
  %1373 = load i32, ptr %21, align 4, !tbaa !9
  %1374 = add i32 %1373, %1372
  store i32 %1374, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #11
  store i32 2, ptr %83, align 4, !tbaa !9
  br label %1375

1375:                                             ; preds = %1466, %1371
  %1376 = load i32, ptr %83, align 4, !tbaa !9
  %1377 = load i32, ptr %4, align 4, !tbaa !9
  %1378 = load i32, ptr %13, align 4, !tbaa !9
  %1379 = sdiv i32 %1377, %1378
  %1380 = icmp slt i32 %1376, %1379
  br i1 %1380, label %1382, label %1381

1381:                                             ; preds = %1375
  store i32 41, ptr %72, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #11
  br label %1469

1382:                                             ; preds = %1375
  %1383 = load ptr, ptr %77, align 8, !tbaa !16
  %1384 = load i32, ptr %83, align 4, !tbaa !9
  %1385 = add nsw i32 %1384, 1
  %1386 = load i32, ptr %13, align 4, !tbaa !9
  %1387 = mul nsw i32 %1385, %1386
  %1388 = load i32, ptr %7, align 4, !tbaa !9
  %1389 = sdiv i32 %1387, %1388
  %1390 = sub nsw i32 %1389, 1
  %1391 = sext i32 %1390 to i64
  %1392 = getelementptr inbounds i32, ptr %1383, i64 %1391
  %1393 = load i32, ptr %1392, align 4, !tbaa !9
  %1394 = load ptr, ptr %59, align 8, !tbaa !16
  %1395 = load i32, ptr %83, align 4, !tbaa !9
  %1396 = sub nsw i32 %1395, 1
  %1397 = load i32, ptr %6, align 4, !tbaa !9
  %1398 = mul nsw i32 %1396, %1397
  %1399 = load i32, ptr %6, align 4, !tbaa !9
  %1400 = add nsw i32 %1398, %1399
  %1401 = load i32, ptr %13, align 4, !tbaa !9
  %1402 = mul nsw i32 %1400, %1401
  %1403 = sub nsw i32 %1402, 1
  %1404 = sext i32 %1403 to i64
  %1405 = getelementptr inbounds i32, ptr %1394, i64 %1404
  %1406 = load i32, ptr %1405, align 4, !tbaa !9
  %1407 = load ptr, ptr %59, align 8, !tbaa !16
  %1408 = load i32, ptr %83, align 4, !tbaa !9
  %1409 = sub nsw i32 %1408, 2
  %1410 = load i32, ptr %6, align 4, !tbaa !9
  %1411 = mul nsw i32 %1409, %1410
  %1412 = load i32, ptr %6, align 4, !tbaa !9
  %1413 = add nsw i32 %1411, %1412
  %1414 = load i32, ptr %13, align 4, !tbaa !9
  %1415 = mul nsw i32 %1413, %1414
  %1416 = sub nsw i32 %1415, 1
  %1417 = sext i32 %1416 to i64
  %1418 = getelementptr inbounds i32, ptr %1407, i64 %1417
  %1419 = load i32, ptr %1418, align 4, !tbaa !9
  %1420 = sub i32 %1406, %1419
  %1421 = icmp ugt i32 %1393, %1420
  br i1 %1421, label %1422, label %1434

1422:                                             ; preds = %1382
  %1423 = load ptr, ptr %77, align 8, !tbaa !16
  %1424 = load i32, ptr %83, align 4, !tbaa !9
  %1425 = add nsw i32 %1424, 1
  %1426 = load i32, ptr %13, align 4, !tbaa !9
  %1427 = mul nsw i32 %1425, %1426
  %1428 = load i32, ptr %7, align 4, !tbaa !9
  %1429 = sdiv i32 %1427, %1428
  %1430 = sub nsw i32 %1429, 1
  %1431 = sext i32 %1430 to i64
  %1432 = getelementptr inbounds i32, ptr %1423, i64 %1431
  %1433 = load i32, ptr %1432, align 4, !tbaa !9
  br label %1462

1434:                                             ; preds = %1382
  %1435 = load ptr, ptr %59, align 8, !tbaa !16
  %1436 = load i32, ptr %83, align 4, !tbaa !9
  %1437 = sub nsw i32 %1436, 1
  %1438 = load i32, ptr %6, align 4, !tbaa !9
  %1439 = mul nsw i32 %1437, %1438
  %1440 = load i32, ptr %6, align 4, !tbaa !9
  %1441 = add nsw i32 %1439, %1440
  %1442 = load i32, ptr %13, align 4, !tbaa !9
  %1443 = mul nsw i32 %1441, %1442
  %1444 = sub nsw i32 %1443, 1
  %1445 = sext i32 %1444 to i64
  %1446 = getelementptr inbounds i32, ptr %1435, i64 %1445
  %1447 = load i32, ptr %1446, align 4, !tbaa !9
  %1448 = load ptr, ptr %59, align 8, !tbaa !16
  %1449 = load i32, ptr %83, align 4, !tbaa !9
  %1450 = sub nsw i32 %1449, 2
  %1451 = load i32, ptr %6, align 4, !tbaa !9
  %1452 = mul nsw i32 %1450, %1451
  %1453 = load i32, ptr %6, align 4, !tbaa !9
  %1454 = add nsw i32 %1452, %1453
  %1455 = load i32, ptr %13, align 4, !tbaa !9
  %1456 = mul nsw i32 %1454, %1455
  %1457 = sub nsw i32 %1456, 1
  %1458 = sext i32 %1457 to i64
  %1459 = getelementptr inbounds i32, ptr %1448, i64 %1458
  %1460 = load i32, ptr %1459, align 4, !tbaa !9
  %1461 = sub i32 %1447, %1460
  br label %1462

1462:                                             ; preds = %1434, %1422
  %1463 = phi i32 [ %1433, %1422 ], [ %1461, %1434 ]
  %1464 = load i32, ptr %21, align 4, !tbaa !9
  %1465 = add i32 %1464, %1463
  store i32 %1465, ptr %21, align 4, !tbaa !9
  br label %1466

1466:                                             ; preds = %1462
  %1467 = load i32, ptr %83, align 4, !tbaa !9
  %1468 = add nsw i32 %1467, 1
  store i32 %1468, ptr %83, align 4, !tbaa !9
  br label %1375, !llvm.loop !57

1469:                                             ; preds = %1381
  %1470 = load ptr, ptr %59, align 8, !tbaa !16
  %1471 = load i32, ptr %4, align 4, !tbaa !9
  %1472 = load i32, ptr %6, align 4, !tbaa !9
  %1473 = mul nsw i32 %1471, %1472
  %1474 = sub nsw i32 %1473, 1
  %1475 = sext i32 %1474 to i64
  %1476 = getelementptr inbounds i32, ptr %1470, i64 %1475
  %1477 = load i32, ptr %1476, align 4, !tbaa !9
  %1478 = load ptr, ptr %59, align 8, !tbaa !16
  %1479 = load i32, ptr %4, align 4, !tbaa !9
  %1480 = load i32, ptr %13, align 4, !tbaa !9
  %1481 = sub nsw i32 %1479, %1480
  %1482 = load i32, ptr %6, align 4, !tbaa !9
  %1483 = mul nsw i32 %1481, %1482
  %1484 = sub nsw i32 %1483, 1
  %1485 = sext i32 %1484 to i64
  %1486 = getelementptr inbounds i32, ptr %1478, i64 %1485
  %1487 = load i32, ptr %1486, align 4, !tbaa !9
  %1488 = sub i32 %1477, %1487
  %1489 = load i32, ptr %21, align 4, !tbaa !9
  %1490 = add i32 %1489, %1488
  store i32 %1490, ptr %21, align 4, !tbaa !9
  %1491 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.10)
          to label %1492 unwind label %1503

1492:                                             ; preds = %1469
  %1493 = load i32, ptr %21, align 4, !tbaa !9
  %1494 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1491, i32 noundef %1493)
          to label %1495 unwind label %1503

1495:                                             ; preds = %1492
  %1496 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1494, ptr noundef @.str.11)
          to label %1497 unwind label %1503

1497:                                             ; preds = %1495
  %1498 = load i32, ptr %22, align 4, !tbaa !9
  %1499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1496, i32 noundef %1498)
          to label %1500 unwind label %1503

1500:                                             ; preds = %1497
  %1501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1499, ptr noundef @.str.12)
          to label %1502 unwind label %1503

1502:                                             ; preds = %1500
  br label %1507

1503:                                             ; preds = %1526, %1523, %1521, %1519, %1516, %1514, %1512, %1509, %1507, %1500, %1497, %1495, %1492, %1469
  %1504 = landingpad { ptr, i32 }
          cleanup
  %1505 = extractvalue { ptr, i32 } %1504, 0
  store ptr %1505, ptr %26, align 8
  %1506 = extractvalue { ptr, i32 } %1504, 1
  store i32 %1506, ptr %27, align 4
  br label %1629

1507:                                             ; preds = %1502, %1322
  %1508 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.13)
          to label %1509 unwind label %1503

1509:                                             ; preds = %1507
  %1510 = load i32, ptr %51, align 4, !tbaa !9
  %1511 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1508, i32 noundef %1510)
          to label %1512 unwind label %1503

1512:                                             ; preds = %1509
  %1513 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1511, ptr noundef @.str.6)
          to label %1514 unwind label %1503

1514:                                             ; preds = %1512
  %1515 = 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 %1516 unwind label %1503

1516:                                             ; preds = %1514
  %1517 = load i32, ptr %74, align 4, !tbaa !9
  %1518 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1515, i32 noundef %1517)
          to label %1519 unwind label %1503

1519:                                             ; preds = %1516
  %1520 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1518, ptr noundef @.str.6)
          to label %1521 unwind label %1503

1521:                                             ; preds = %1519
  %1522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.15)
          to label %1523 unwind label %1503

1523:                                             ; preds = %1521
  %1524 = load i32, ptr %79, align 4, !tbaa !9
  %1525 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1522, i32 noundef %1524)
          to label %1526 unwind label %1503

1526:                                             ; preds = %1523
  %1527 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1525, ptr noundef @.str.6)
          to label %1528 unwind label %1503

1528:                                             ; preds = %1526
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #11
  %1529 = load i32, ptr %79, align 4, !tbaa !9
  %1530 = load i32, ptr %74, align 4, !tbaa !9
  %1531 = add i32 %1529, %1530
  store i32 %1531, ptr %84, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #11
  %1532 = load i32, ptr %4, align 4, !tbaa !9
  %1533 = load i32, ptr %5, align 4, !tbaa !9
  %1534 = mul nsw i32 %1532, %1533
  store i32 %1534, ptr %85, align 4, !tbaa !9
  %1535 = 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 %1536 unwind label %1585

1536:                                             ; preds = %1528
  %1537 = load i32, ptr %84, align 4, !tbaa !9
  %1538 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1535, i32 noundef %1537)
          to label %1539 unwind label %1585

1539:                                             ; preds = %1536
  %1540 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1538, ptr noundef @.str.17)
          to label %1541 unwind label %1585

1541:                                             ; preds = %1539
  %1542 = load i32, ptr %85, align 4, !tbaa !9
  %1543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1540, i32 noundef %1542)
          to label %1544 unwind label %1585

1544:                                             ; preds = %1541
  %1545 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1543, ptr noundef @.str.6)
          to label %1546 unwind label %1585

1546:                                             ; preds = %1544
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #11
  %1547 = load i32, ptr %4, align 4, !tbaa !9
  %1548 = load i32, ptr %10, align 4, !tbaa !9
  %1549 = sdiv i32 %1547, %1548
  %1550 = load i32, ptr %5, align 4, !tbaa !9
  %1551 = mul nsw i32 %1549, %1550
  %1552 = load i32, ptr %12, align 4, !tbaa !9
  %1553 = sdiv i32 %1551, %1552
  store i32 %1553, ptr %86, align 4, !tbaa !9
  %1554 = 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 %1555 unwind label %1589

1555:                                             ; preds = %1546
  %1556 = load i32, ptr %86, align 4, !tbaa !9
  %1557 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1554, i32 noundef %1556)
          to label %1558 unwind label %1589

1558:                                             ; preds = %1555
  %1559 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1557, ptr noundef @.str.6)
          to label %1560 unwind label %1589

1560:                                             ; preds = %1558
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #11
  %1561 = load i32, ptr %6, align 4, !tbaa !9
  %1562 = load i32, ptr %10, align 4, !tbaa !9
  %1563 = mul nsw i32 %1561, %1562
  %1564 = load i32, ptr %5, align 4, !tbaa !9
  %1565 = mul nsw i32 %1563, %1564
  %1566 = load i32, ptr %12, align 4, !tbaa !9
  %1567 = sdiv i32 %1565, %1566
  store i32 %1567, ptr %87, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #11
  %1568 = load i32, ptr %87, align 4, !tbaa !9
  %1569 = load i32, ptr %16, align 4, !tbaa !9
  %1570 = sdiv i32 %1568, %1569
  %1571 = load i32, ptr %87, align 4, !tbaa !9
  %1572 = load i32, ptr %16, align 4, !tbaa !9
  %1573 = srem i32 %1571, %1572
  %1574 = icmp ne i32 %1573, 0
  %1575 = zext i1 %1574 to i32
  %1576 = add nsw i32 %1570, %1575
  %1577 = load i32, ptr %4, align 4, !tbaa !9
  %1578 = mul nsw i32 %1576, %1577
  %1579 = load i32, ptr %10, align 4, !tbaa !9
  %1580 = sdiv i32 %1578, %1579
  store i32 %1580, ptr %88, align 4, !tbaa !9
  %1581 = load i32, ptr %5, align 4, !tbaa !9
  %1582 = load i32, ptr %12, align 4, !tbaa !9
  %1583 = icmp eq i32 %1581, %1582
  br i1 %1583, label %1584, label %1593

1584:                                             ; preds = %1560
  store i32 0, ptr %88, align 4, !tbaa !9
  br label %1593

1585:                                             ; preds = %1544, %1541, %1539, %1536, %1528
  %1586 = landingpad { ptr, i32 }
          cleanup
  %1587 = extractvalue { ptr, i32 } %1586, 0
  store ptr %1587, ptr %26, align 8
  %1588 = extractvalue { ptr, i32 } %1586, 1
  store i32 %1588, ptr %27, align 4
  br label %1628

1589:                                             ; preds = %1558, %1555, %1546
  %1590 = landingpad { ptr, i32 }
          cleanup
  %1591 = extractvalue { ptr, i32 } %1590, 0
  store ptr %1591, ptr %26, align 8
  %1592 = extractvalue { ptr, i32 } %1590, 1
  store i32 %1592, ptr %27, align 4
  br label %1627

1593:                                             ; preds = %1584, %1560
  %1594 = 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 %1595 unwind label %1618

1595:                                             ; preds = %1593
  %1596 = load i32, ptr %88, align 4, !tbaa !9
  %1597 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1594, i32 noundef %1596)
          to label %1598 unwind label %1618

1598:                                             ; preds = %1595
  %1599 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1597, ptr noundef @.str.6)
          to label %1600 unwind label %1618

1600:                                             ; preds = %1598
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #11
  %1601 = load i32, ptr %84, align 4, !tbaa !9
  %1602 = load i32, ptr %86, align 4, !tbaa !9
  %1603 = sub nsw i32 %1601, %1602
  %1604 = load i32, ptr %88, align 4, !tbaa !9
  %1605 = add nsw i32 %1603, %1604
  store i32 %1605, ptr %89, align 4, !tbaa !9
  %1606 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.20)
          to label %1607 unwind label %1622

1607:                                             ; preds = %1600
  %1608 = load i32, ptr %89, align 4, !tbaa !9
  %1609 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1606, i32 noundef %1608)
          to label %1610 unwind label %1622

1610:                                             ; preds = %1607
  %1611 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1609, ptr noundef @.str.21)
          to label %1612 unwind label %1622

1612:                                             ; preds = %1610
  %1613 = load i32, ptr %87, align 4, !tbaa !9
  %1614 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1611, i32 noundef %1613)
          to label %1615 unwind label %1622

1615:                                             ; preds = %1612
  %1616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1614, ptr noundef @.str.6)
          to label %1617 unwind label %1622

1617:                                             ; preds = %1615
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 160, ptr %43) #11
  call void @llvm.lifetime.end.p0(i64 160, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  br label %1656

1618:                                             ; preds = %1598, %1595, %1593
  %1619 = landingpad { ptr, i32 }
          cleanup
  %1620 = extractvalue { ptr, i32 } %1619, 0
  store ptr %1620, ptr %26, align 8
  %1621 = extractvalue { ptr, i32 } %1619, 1
  store i32 %1621, ptr %27, align 4
  br label %1626

1622:                                             ; preds = %1615, %1612, %1610, %1607, %1600
  %1623 = landingpad { ptr, i32 }
          cleanup
  %1624 = extractvalue { ptr, i32 } %1623, 0
  store ptr %1624, ptr %26, align 8
  %1625 = extractvalue { ptr, i32 } %1623, 1
  store i32 %1625, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #11
  br label %1626

1626:                                             ; preds = %1622, %1618
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #11
  br label %1627

1627:                                             ; preds = %1626, %1589
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #11
  br label %1628

1628:                                             ; preds = %1627, %1585
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #11
  br label %1629

1629:                                             ; preds = %1628, %1503, %1318
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #11
  br label %1630

1630:                                             ; preds = %1629, %1223
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  br label %1631

1631:                                             ; preds = %1630, %952, %932
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #11
  br label %1632

1632:                                             ; preds = %1631, %863
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  br label %1633

1633:                                             ; preds = %1632, %859, %855, %851
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  br label %1634

1634:                                             ; preds = %1633, %810, %795, %783
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  br label %1635

1635:                                             ; preds = %1634, %779
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  br label %1636

1636:                                             ; preds = %1635, %775
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #11
  br label %1637

1637:                                             ; preds = %1636, %705
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  br label %1638

1638:                                             ; preds = %1637, %701
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #11
  br label %1639

1639:                                             ; preds = %1638, %662
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  br label %1640

1640:                                             ; preds = %1639, %658
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #11
  br label %1641

1641:                                             ; preds = %1640, %590, %572
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  br label %1642

1642:                                             ; preds = %1641, %568, %564, %560
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  br label %1643

1643:                                             ; preds = %1642, %525, %510, %498
  call void @llvm.lifetime.end.p0(i64 160, ptr %43) #11
  br label %1644

1644:                                             ; preds = %1643, %494
  call void @llvm.lifetime.end.p0(i64 160, ptr %42) #11
  br label %1645

1645:                                             ; preds = %1644, %490
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  br label %1646

1646:                                             ; preds = %1645, %486
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  br label %1647

1647:                                             ; preds = %1646, %482
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  br label %1648

1648:                                             ; preds = %1647, %410
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  br label %1649

1649:                                             ; preds = %1648, %406
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  br label %1650

1650:                                             ; preds = %1649, %402
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  br label %1651

1651:                                             ; preds = %1650, %369, %352
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  br label %1652

1652:                                             ; preds = %1651, %348
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  br label %1653

1653:                                             ; preds = %1652, %313
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %1654

1654:                                             ; preds = %1653, %309
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #11
  br label %1655

1655:                                             ; preds = %1654, %305
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #11
  br label %1681

1656:                                             ; preds = %1617, %266
  %1657 = load i32, ptr %2, align 4, !tbaa !12
  %1658 = icmp eq i32 %1657, 2
  br i1 %1658, label %1659, label %1679

1659:                                             ; preds = %1656
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #11
  store i32 0, ptr %90, align 4, !tbaa !9
  %1660 = load i32, ptr %9, align 4, !tbaa !9
  %1661 = load i32, ptr %12, align 4, !tbaa !9
  %1662 = icmp sgt i32 %1660, %1661
  br i1 %1662, label %1663, label %1665

1663:                                             ; preds = %1659
  %1664 = load i32, ptr %9, align 4, !tbaa !9
  br label %1667

1665:                                             ; preds = %1659
  %1666 = load i32, ptr %12, align 4, !tbaa !9
  br label %1667

1667:                                             ; preds = %1665, %1663
  %1668 = phi i32 [ %1664, %1663 ], [ %1666, %1665 ]
  store i32 %1668, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #11
  %1669 = load i32, ptr %4, align 4, !tbaa !9
  %1670 = mul nsw i32 2, %1669
  %1671 = load i32, ptr %14, align 4, !tbaa !9
  %1672 = mul nsw i32 %1670, %1671
  store i32 %1672, ptr %91, align 4, !tbaa !9
  %1673 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.2)
  %1674 = load i32, ptr %90, align 4, !tbaa !9
  %1675 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1673, i32 noundef %1674)
  %1676 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1675, ptr noundef @.str.3)
  %1677 = load i32, ptr %91, align 4, !tbaa !9
  %1678 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1676, i32 noundef %1677)
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #11
  br label %1679

1679:                                             ; preds = %1667, %1656
  store i32 0, ptr %1, align 4
  store i32 1, ptr %72, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #11
  %1680 = load i32, ptr %1, align 4
  ret i32 %1680

1681:                                             ; preds = %1655
  %1682 = load ptr, ptr %26, align 8
  %1683 = load i32, ptr %27, align 4
  %1684 = insertvalue { ptr, i32 } poison, ptr %1682, 0
  %1685 = insertvalue { ptr, i32 } %1684, i32 %1683, 1
  resume { ptr, i32 } %1685
}

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

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

; 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

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

; 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 void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 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 #6 align 2

declare i32 @__gxx_personality_v0(...)

declare noundef ptr @_Z19generateMatrixDensejjf(i32 noundef, i32 noundef, float noundef) #4

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

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

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

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

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

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

declare noundef i32 @_Z28get_type_reduce_network_typeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef) #4

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

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

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) #9

declare void @_ZN6Stonne15loadSparseDenseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjjjPfS6_PjS7_S6_jj(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, i32 noundef, i32 noundef) #4

; 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 #6 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN6Stonne9getCyclesEv(ptr noundef nonnull align 8 dereferenceable(316)) #5 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #6 align 2

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

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

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

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

declare void @_ZN6Stonne12loadGEMMTileEjjj(ptr noundef nonnull align 8 dereferenceable(316), i32 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 #5 align 2

attributes #0 = { mustprogress norecurse 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: readwrite) }
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 = { 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 #6 = { 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 #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 #9 = { 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 #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 = { nounwind }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"_ZTS11KERNELORDER", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"_ZTS4GRAN", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"float", !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"any pointer", !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = distinct !{!21, !19}
!22 = !{!23, !10, i64 28}
!23 = !{!"_ZTS6Config", !10, i64 0, !24, i64 4, !25, i64 8, !26, i64 24, !28, i64 40, !29, i64 64, !31, i64 72, !32, i64 96, !33, i64 104}
!24 = !{!"_ZTS15DSNetworkConfig", !10, i64 0}
!25 = !{!"_ZTS13DSwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!26 = !{!"_ZTS15MSNetworkConfig", !27, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!27 = !{!"_ZTS19MultiplierNetwork_t", !7, i64 0}
!28 = !{!"_ZTS13MSwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!29 = !{!"_ZTS15ASNetworkConfig", !30, i64 0, !10, i64 4}
!30 = !{!"_ZTS15ReduceNetwork_t", !7, i64 0}
!31 = !{!"_ZTS13ASwitchConfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!32 = !{!"_ZTS17LookUpTableConfig", !10, i64 0, !10, i64 4}
!33 = !{!"_ZTS14SDMemoryConfig", !34, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !35, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!34 = !{!"_ZTS18MemoryController_t", !7, i64 0}
!35 = !{!"_ZTS17MemoryHierarchy_t", !7, i64 0}
!36 = !{!23, !10, i64 112}
!37 = !{!23, !10, i64 116}
!38 = !{!23, !10, i64 68}
!39 = !{!23, !34, i64 104}
!40 = !{!23, !10, i64 0}
!41 = !{!23, !30, i64 64}
!42 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 4, !43, i64 28, i64 4, !9, i64 32, i64 4, !9, i64 36, i64 4, !9, i64 40, i64 4, !9, i64 44, i64 4, !9, i64 48, i64 4, !9, i64 52, i64 4, !9, i64 56, i64 4, !9, i64 60, i64 4, !9, i64 64, i64 4, !44, i64 68, i64 4, !9, i64 72, i64 4, !9, i64 76, i64 4, !9, i64 80, i64 4, !9, i64 84, i64 4, !9, i64 88, i64 4, !9, i64 92, i64 4, !9, i64 96, i64 4, !9, i64 100, i64 4, !9, i64 104, i64 4, !45, i64 108, i64 4, !9, i64 112, i64 4, !9, i64 116, i64 4, !9, i64 120, i64 4, !9, i64 124, i64 4, !9, i64 128, i64 4, !9, i64 132, i64 4, !46, i64 136, i64 4, !9, i64 140, i64 4, !9, i64 144, i64 4, !9, i64 148, i64 4, !9, i64 152, i64 4, !9, i64 156, i64 4, !9}
!43 = !{!27, !27, i64 0}
!44 = !{!30, !30, i64 0}
!45 = !{!34, !34, i64 0}
!46 = !{!35, !35, i64 0}
!47 = distinct !{!47, !19}
!48 = distinct !{!48, !19}
!49 = distinct !{!49, !19}
!50 = distinct !{!50, !19}
!51 = distinct !{!51, !19}
!52 = distinct !{!52, !19}
!53 = distinct !{!53, !19}
!54 = distinct !{!54, !19}
!55 = distinct !{!55, !19}
!56 = distinct !{!56, !19}
!57 = distinct !{!57, !19}


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

@__const.main.loop_order_agg = external hidden unnamed_addr constant [4 x i8], align 1
@__const.main.loop_order_cmb = external hidden unnamed_addr constant [4 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [45 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca [4 x i8], align 4
  %2 = alloca [4 x i8], align 4
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca i32, align 4
  %6 = alloca %class.Config, align 8
  %7 = alloca %class.Config, align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) #11
  %14 = load i32, ptr @__const.main.loop_order_agg, align 1
  store i32 %14, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #11
  %15 = load i32, ptr @__const.main.loop_order_cmb, align 1
  store i32 %15, ptr %2, align 4
  %16 = trunc i32 %14 to i8
  %17 = trunc i32 %15 to i8
  %18 = icmp eq i8 %16, %17
  br i1 %18, label %19, label %.thread

19:                                               ; preds = %0
  %20 = lshr i32 %15, 8
  %21 = trunc i32 %20 to i8
  %22 = lshr i32 %14, 8
  %23 = trunc i32 %22 to i8
  %24 = icmp eq i8 %23, %21
  %25 = and i8 %16, -17
  %or.cond = icmp eq i8 %25, 70
  %or.cond562 = and i1 %or.cond, %24
  br i1 %or.cond562, label %29, label %26

26:                                               ; preds = %19
  %27 = icmp eq i8 %16, 86
  br i1 %27, label %29, label %.thread

.thread:                                          ; preds = %0, %26
  %28 = icmp eq i8 %16, 70
  %or.cond11 = and i1 %28, %18
  %.563 = select i1 %or.cond11, i32 2, i32 3
  br label %29

29:                                               ; preds = %.thread, %26, %19
  %30 = phi i1 [ true, %19 ], [ false, %26 ], [ false, %.thread ]
  %31 = phi i1 [ false, %19 ], [ true, %26 ], [ false, %.thread ]
  %32 = phi i1 [ false, %19 ], [ false, %26 ], [ %or.cond11, %.thread ]
  %.0 = phi i32 [ 0, %19 ], [ 1, %26 ], [ %.563, %.thread ]
  %33 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str)
  %34 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull %1)
  %35 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull @.str.1)
  %36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull %2)
  %37 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull @.str.1)
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef %.0)
  %39 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull @.str)
  br i1 %30, label %40, label %45

40:                                               ; preds = %29
  %41 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.2)
  %42 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %41, i32 noundef 0)
  %43 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull @.str.3)
  %44 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %43, i32 noundef 1024)
  br label %45

45:                                               ; preds = %40, %29
  br i1 %31, label %46, label %522

46:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %47 unwind label %72

47:                                               ; preds = %46
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #11
  %48 = invoke noundef ptr @_Z19generateMatrixDensejjf(i32 noundef 1024, i32 noundef 1024, float noundef 8.000000e+01)
          to label %49 unwind label %74

49:                                               ; preds = %47
  %50 = invoke noalias noundef nonnull dereferenceable(4194304) ptr @_Znam(i64 noundef 4194304) #12
          to label %vector.memcheck unwind label %76

vector.memcheck:                                  ; preds = %49
  %51 = ptrtoint ptr %48 to i64
  %52 = ptrtoint ptr %50 to i64
  %53 = sub i64 %52, %51
  %diff.check = icmp ult i64 %53, 32
  br i1 %diff.check, label %.preheader574, label %vector.body

vector.body:                                      ; preds = %vector.memcheck, %vector.body
  %index = phi i64 [ %index.next.3, %vector.body ], [ 0, %vector.memcheck ]
  %54 = getelementptr inbounds float, ptr %48, i64 %index
  %55 = getelementptr inbounds i8, ptr %54, i64 16
  %wide.load = load <4 x float>, ptr %54, align 4, !tbaa !5
  %wide.load663 = load <4 x float>, ptr %55, align 4, !tbaa !5
  %56 = getelementptr inbounds float, ptr %50, i64 %index
  %57 = getelementptr inbounds i8, ptr %56, i64 16
  store <4 x float> %wide.load, ptr %56, align 4, !tbaa !5
  store <4 x float> %wide.load663, ptr %57, align 4, !tbaa !5
  %index.next = or disjoint i64 %index, 8
  %58 = getelementptr inbounds float, ptr %48, i64 %index.next
  %59 = getelementptr inbounds i8, ptr %58, i64 16
  %wide.load.1 = load <4 x float>, ptr %58, align 4, !tbaa !5
  %wide.load663.1 = load <4 x float>, ptr %59, align 4, !tbaa !5
  %60 = getelementptr inbounds float, ptr %50, i64 %index.next
  %61 = getelementptr inbounds i8, ptr %60, i64 16
  store <4 x float> %wide.load.1, ptr %60, align 4, !tbaa !5
  store <4 x float> %wide.load663.1, ptr %61, align 4, !tbaa !5
  %index.next.1 = or disjoint i64 %index, 16
  %62 = getelementptr inbounds float, ptr %48, i64 %index.next.1
  %63 = getelementptr inbounds i8, ptr %62, i64 16
  %wide.load.2 = load <4 x float>, ptr %62, align 4, !tbaa !5
  %wide.load663.2 = load <4 x float>, ptr %63, align 4, !tbaa !5
  %64 = getelementptr inbounds float, ptr %50, i64 %index.next.1
  %65 = getelementptr inbounds i8, ptr %64, i64 16
  store <4 x float> %wide.load.2, ptr %64, align 4, !tbaa !5
  store <4 x float> %wide.load663.2, ptr %65, align 4, !tbaa !5
  %index.next.2 = or disjoint i64 %index, 24
  %66 = getelementptr inbounds float, ptr %48, i64 %index.next.2
  %67 = getelementptr inbounds i8, ptr %66, i64 16
  %wide.load.3 = load <4 x float>, ptr %66, align 4, !tbaa !5
  %wide.load663.3 = load <4 x float>, ptr %67, align 4, !tbaa !5
  %68 = getelementptr inbounds float, ptr %50, i64 %index.next.2
  %69 = getelementptr inbounds i8, ptr %68, i64 16
  store <4 x float> %wide.load.3, ptr %68, align 4, !tbaa !5
  store <4 x float> %wide.load663.3, ptr %69, align 4, !tbaa !5
  %index.next.3 = add nuw nsw i64 %index, 32
  %70 = icmp eq i64 %index.next.3, 1048576
  br i1 %70, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body, %.preheader574
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #11
  store i32 0, ptr %5, align 4, !tbaa !13
  %71 = invoke noundef ptr @_Z24generateMinorIDFromDensePfjjRi15GENERATION_TYPE(ptr noundef nonnull %50, i32 noundef 1024, i32 noundef 1024, ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef 0)
          to label %90 unwind label %96

72:                                               ; preds = %46
  %73 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #11
  br label %521

74:                                               ; preds = %47
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %520

76:                                               ; preds = %49
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %520

.preheader574:                                    ; preds = %vector.memcheck, %.preheader574
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.preheader574 ], [ 0, %vector.memcheck ]
  %78 = getelementptr inbounds float, ptr %48, i64 %indvars.iv
  %79 = load float, ptr %78, align 4, !tbaa !5
  %80 = getelementptr inbounds float, ptr %50, i64 %indvars.iv
  store float %79, ptr %80, align 4, !tbaa !5
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %81 = getelementptr inbounds float, ptr %48, i64 %indvars.iv.next
  %82 = load float, ptr %81, align 4, !tbaa !5
  %83 = getelementptr inbounds float, ptr %50, i64 %indvars.iv.next
  store float %82, ptr %83, align 4, !tbaa !5
  %indvars.iv.next.1 = or disjoint i64 %indvars.iv, 2
  %84 = getelementptr inbounds float, ptr %48, i64 %indvars.iv.next.1
  %85 = load float, ptr %84, align 4, !tbaa !5
  %86 = getelementptr inbounds float, ptr %50, i64 %indvars.iv.next.1
  store float %85, ptr %86, align 4, !tbaa !5
  %indvars.iv.next.2 = or disjoint i64 %indvars.iv, 3
  %87 = getelementptr inbounds float, ptr %48, i64 %indvars.iv.next.2
  %88 = load float, ptr %87, align 4, !tbaa !5
  %89 = getelementptr inbounds float, ptr %50, i64 %indvars.iv.next.2
  store float %88, ptr %89, align 4, !tbaa !5
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, 1048576
  br i1 %exitcond.not.3, label %middle.block, label %.preheader574, !llvm.loop !15

90:                                               ; preds = %middle.block
  %91 = invoke noundef ptr @_Z29generateMajorPointerFromDensePfjj15GENERATION_TYPE(ptr noundef nonnull %50, i32 noundef 1024, i32 noundef 1024, i32 noundef 0)
          to label %92 unwind label %98

92:                                               ; preds = %90
  %93 = 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.5)
          to label %.preheader573 unwind label %98

94:                                               ; preds = %105
  %95 = 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.6)
          to label %108 unwind label %98

96:                                               ; preds = %middle.block
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %519

98:                                               ; preds = %94, %92, %90
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %519

.preheader573:                                    ; preds = %92, %105
  %indvars.iv592 = phi i64 [ %indvars.iv.next593, %105 ], [ 0, %92 ]
  %100 = getelementptr inbounds i32, ptr %91, i64 %indvars.iv592
  %101 = load i32, ptr %100, align 4, !tbaa !13
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %101)
          to label %103 unwind label %106

103:                                              ; preds = %.preheader573
  %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.1)
          to label %105 unwind label %106

105:                                              ; preds = %103
  %indvars.iv.next593 = add nuw nsw i64 %indvars.iv592, 1
  %exitcond595.not = icmp eq i64 %indvars.iv.next593, 1025
  br i1 %exitcond595.not, label %94, label %.preheader573, !llvm.loop !16

106:                                              ; preds = %103, %.preheader573
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %519

108:                                              ; preds = %94
  %109 = invoke noundef ptr @_Z37generateMatrixSparseFromDenseNoBitmapPfjj15GENERATION_TYPE(ptr noundef nonnull %50, i32 noundef 1024, i32 noundef 1024, i32 noundef 0)
          to label %110 unwind label %135

110:                                              ; preds = %108
  %111 = invoke noundef ptr @_Z19generateMatrixDensejjf(i32 noundef 1024, i32 noundef 512, float noundef 0.000000e+00)
          to label %112 unwind label %137

112:                                              ; preds = %110
  %113 = invoke noalias noundef nonnull dereferenceable(2097152) ptr @_Znam(i64 noundef 2097152) #12
          to label %vector.memcheck664 unwind label %139

vector.memcheck664:                               ; preds = %112
  %114 = ptrtoint ptr %111 to i64
  %115 = ptrtoint ptr %113 to i64
  %116 = sub i64 %115, %114
  %diff.check665 = icmp ult i64 %116, 32
  br i1 %diff.check665, label %.preheader572, label %vector.body670

vector.body670:                                   ; preds = %vector.memcheck664, %vector.body670
  %index671 = phi i64 [ %index.next674.3, %vector.body670 ], [ 0, %vector.memcheck664 ]
  %117 = getelementptr inbounds float, ptr %111, i64 %index671
  %118 = getelementptr inbounds i8, ptr %117, i64 16
  %wide.load672 = load <4 x float>, ptr %117, align 4, !tbaa !5
  %wide.load673 = load <4 x float>, ptr %118, align 4, !tbaa !5
  %119 = getelementptr inbounds float, ptr %113, i64 %index671
  %120 = getelementptr inbounds i8, ptr %119, i64 16
  store <4 x float> %wide.load672, ptr %119, align 4, !tbaa !5
  store <4 x float> %wide.load673, ptr %120, align 4, !tbaa !5
  %index.next674 = or disjoint i64 %index671, 8
  %121 = getelementptr inbounds float, ptr %111, i64 %index.next674
  %122 = getelementptr inbounds i8, ptr %121, i64 16
  %wide.load672.1 = load <4 x float>, ptr %121, align 4, !tbaa !5
  %wide.load673.1 = load <4 x float>, ptr %122, align 4, !tbaa !5
  %123 = getelementptr inbounds float, ptr %113, i64 %index.next674
  %124 = getelementptr inbounds i8, ptr %123, i64 16
  store <4 x float> %wide.load672.1, ptr %123, align 4, !tbaa !5
  store <4 x float> %wide.load673.1, ptr %124, align 4, !tbaa !5
  %index.next674.1 = or disjoint i64 %index671, 16
  %125 = getelementptr inbounds float, ptr %111, i64 %index.next674.1
  %126 = getelementptr inbounds i8, ptr %125, i64 16
  %wide.load672.2 = load <4 x float>, ptr %125, align 4, !tbaa !5
  %wide.load673.2 = load <4 x float>, ptr %126, align 4, !tbaa !5
  %127 = getelementptr inbounds float, ptr %113, i64 %index.next674.1
  %128 = getelementptr inbounds i8, ptr %127, i64 16
  store <4 x float> %wide.load672.2, ptr %127, align 4, !tbaa !5
  store <4 x float> %wide.load673.2, ptr %128, align 4, !tbaa !5
  %index.next674.2 = or disjoint i64 %index671, 24
  %129 = getelementptr inbounds float, ptr %111, i64 %index.next674.2
  %130 = getelementptr inbounds i8, ptr %129, i64 16
  %wide.load672.3 = load <4 x float>, ptr %129, align 4, !tbaa !5
  %wide.load673.3 = load <4 x float>, ptr %130, align 4, !tbaa !5
  %131 = getelementptr inbounds float, ptr %113, i64 %index.next674.2
  %132 = getelementptr inbounds i8, ptr %131, i64 16
  store <4 x float> %wide.load672.3, ptr %131, align 4, !tbaa !5
  store <4 x float> %wide.load673.3, ptr %132, align 4, !tbaa !5
  %index.next674.3 = add nuw nsw i64 %index671, 32
  %133 = icmp eq i64 %index.next674.3, 524288
  br i1 %133, label %middle.block666, label %vector.body670, !llvm.loop !17

middle.block666:                                  ; preds = %vector.body670, %.preheader572
  %134 = invoke noalias noundef nonnull dereferenceable(2097152) ptr @_Znam(i64 noundef 2097152) #12
          to label %153 unwind label %164

135:                                              ; preds = %108
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %519

137:                                              ; preds = %110
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %519

139:                                              ; preds = %112
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %519

.preheader572:                                    ; preds = %vector.memcheck664, %.preheader572
  %indvars.iv596 = phi i64 [ %indvars.iv.next597.3, %.preheader572 ], [ 0, %vector.memcheck664 ]
  %141 = getelementptr inbounds float, ptr %111, i64 %indvars.iv596
  %142 = load float, ptr %141, align 4, !tbaa !5
  %143 = getelementptr inbounds float, ptr %113, i64 %indvars.iv596
  store float %142, ptr %143, align 4, !tbaa !5
  %indvars.iv.next597 = or disjoint i64 %indvars.iv596, 1
  %144 = getelementptr inbounds float, ptr %111, i64 %indvars.iv.next597
  %145 = load float, ptr %144, align 4, !tbaa !5
  %146 = getelementptr inbounds float, ptr %113, i64 %indvars.iv.next597
  store float %145, ptr %146, align 4, !tbaa !5
  %indvars.iv.next597.1 = or disjoint i64 %indvars.iv596, 2
  %147 = getelementptr inbounds float, ptr %111, i64 %indvars.iv.next597.1
  %148 = load float, ptr %147, align 4, !tbaa !5
  %149 = getelementptr inbounds float, ptr %113, i64 %indvars.iv.next597.1
  store float %148, ptr %149, align 4, !tbaa !5
  %indvars.iv.next597.2 = or disjoint i64 %indvars.iv596, 3
  %150 = getelementptr inbounds float, ptr %111, i64 %indvars.iv.next597.2
  %151 = load float, ptr %150, align 4, !tbaa !5
  %152 = getelementptr inbounds float, ptr %113, i64 %indvars.iv.next597.2
  store float %151, ptr %152, align 4, !tbaa !5
  %indvars.iv.next597.3 = add nuw nsw i64 %indvars.iv596, 4
  %exitcond599.not.3 = icmp eq i64 %indvars.iv.next597.3, 524288
  br i1 %exitcond599.not.3, label %middle.block666, label %.preheader572, !llvm.loop !18

153:                                              ; preds = %middle.block666
  %154 = invoke noalias noundef nonnull dereferenceable(2097152) ptr @_Znam(i64 noundef 2097152) #12
          to label %155 unwind label %166

155:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %6) #11
  invoke void @_ZN6ConfigC1Ev(ptr noundef nonnull align 4 dereferenceable(160) %6)
          to label %156 unwind label %168

156:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %7) #11
  invoke void @_ZN6ConfigC1Ev(ptr noundef nonnull align 4 dereferenceable(160) %7)
          to label %157 unwind label %170

157:                                              ; preds = %156
  %158 = getelementptr inbounds i8, ptr %6, i64 28
  store i32 512, ptr %158, align 4, !tbaa !19
  %159 = getelementptr inbounds i8, ptr %6, i64 104
  %160 = getelementptr inbounds i8, ptr %6, i64 112
  store i32 512, ptr %160, align 8, !tbaa !33
  %161 = getelementptr inbounds i8, ptr %6, i64 116
  store i32 512, ptr %161, align 4, !tbaa !34
  %162 = getelementptr inbounds i8, ptr %6, i64 64
  %163 = getelementptr inbounds i8, ptr %6, i64 68
  store i32 1, ptr %163, align 4, !tbaa !35
  store i32 2, ptr %159, align 8, !tbaa !36
  store i32 0, ptr %6, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %172 unwind label %176

164:                                              ; preds = %middle.block666
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %519

166:                                              ; preds = %153
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %519

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

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

172:                                              ; preds = %157
  %173 = invoke noundef i32 @_Z28get_type_reduce_network_typeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %8)
          to label %174 unwind label %178

174:                                              ; preds = %172
  store i32 %173, ptr %162, align 8, !tbaa !38
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #11
  %175 = invoke noalias noundef nonnull dereferenceable(320) ptr @_Znwm(i64 noundef 320) #12
          to label %181 unwind label %190

176:                                              ; preds = %157
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %180

178:                                              ; preds = %172
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  br label %180

180:                                              ; preds = %178, %176
  %.pn = phi { ptr, i32 } [ %179, %178 ], [ %177, %176 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #11
  br label %517

181:                                              ; preds = %174
  invoke void @_ZN6StonneC1E6Config(ptr noundef nonnull align 8 dereferenceable(316) %175, ptr noundef nonnull byval(%class.Config) align 8 %6)
          to label %182 unwind label %192

182:                                              ; preds = %181
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %183 unwind label %190

183:                                              ; preds = %182
  invoke void @_ZN6Stonne15loadSparseDenseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjjjPfS6_PjS7_S6_jj(ptr noundef nonnull align 8 dereferenceable(316) %175, ptr noundef nonnull %10, i32 noundef 512, i32 noundef 1024, i32 noundef 1024, ptr noundef %109, ptr noundef nonnull %113, ptr noundef %71, ptr noundef %91, ptr noundef nonnull %154, i32 noundef 1, i32 noundef 1)
          to label %184 unwind label %194

184:                                              ; preds = %183
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #11
  invoke void @_ZN6Stonne12loadClockingEPj(ptr noundef nonnull align 8 dereferenceable(316) %175, ptr noundef nonnull %134)
          to label %185 unwind label %190

185:                                              ; preds = %184
  invoke void @_ZN6Stonne3runEv(ptr noundef nonnull align 8 dereferenceable(316) %175)
          to label %186 unwind label %190

186:                                              ; preds = %185
  %187 = call noundef i32 @_ZN6Stonne9getCyclesEv(ptr noundef nonnull align 8 dereferenceable(316) %175)
  br label %198

188:                                              ; preds = %204
  %189 = icmp eq ptr %48, null
  br i1 %189, label %209, label %208

190:                                              ; preds = %185, %184, %182, %174
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %517

192:                                              ; preds = %181
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %175, i64 noundef 320) #13
  br label %517

194:                                              ; preds = %183
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #11
  br label %517

196:                                              ; preds = %221
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %517

198:                                              ; preds = %186, %204
  %indvars.iv600 = phi i64 [ 511, %186 ], [ %indvars.iv.next601, %204 ]
  %199 = getelementptr inbounds i32, ptr %134, i64 %indvars.iv600
  %200 = load i32, ptr %199, align 4, !tbaa !13
  %201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %200)
          to label %202 unwind label %206

202:                                              ; preds = %198
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull @.str.1)
          to label %204 unwind label %206

204:                                              ; preds = %202
  %indvars.iv.next601 = add nuw nsw i64 %indvars.iv600, 512
  %205 = icmp ult i64 %indvars.iv600, 523776
  br i1 %205, label %198, label %188, !llvm.loop !39

206:                                              ; preds = %202, %198
  %207 = landingpad { ptr, i32 }
          cleanup
  br label %517

208:                                              ; preds = %188
  call void @_ZdaPv(ptr noundef nonnull %48) #13
  br label %209

209:                                              ; preds = %208, %188
  %210 = icmp eq ptr %111, null
  br i1 %210, label %212, label %211

211:                                              ; preds = %209
  call void @_ZdaPv(ptr noundef nonnull %111) #13
  br label %212

212:                                              ; preds = %209, %211
  call void @_ZdaPv(ptr noundef nonnull %50) #13
  call void @_ZdaPv(ptr noundef nonnull %113) #13
  %213 = icmp eq ptr %71, null
  br i1 %213, label %215, label %214

214:                                              ; preds = %212
  call void @_ZdaPv(ptr noundef nonnull %71) #13
  br label %215

215:                                              ; preds = %214, %212
  %216 = icmp eq ptr %91, null
  br i1 %216, label %218, label %217

217:                                              ; preds = %215
  call void @_ZdaPv(ptr noundef nonnull %91) #13
  br label %218

218:                                              ; preds = %217, %215
  %219 = icmp eq ptr %109, null
  br i1 %219, label %221, label %220

220:                                              ; preds = %218
  call void @_ZdaPv(ptr noundef nonnull %109) #13
  br label %221

221:                                              ; preds = %218, %220
  call void @_ZdaPv(ptr noundef nonnull %154) #13
  call void @_ZN6StonneD1Ev(ptr noundef nonnull align 8 dereferenceable(316) %175) #11
  call void @_ZdlPvm(ptr noundef nonnull %175, i64 noundef 320) #13
  %222 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.9)
          to label %223 unwind label %196

223:                                              ; preds = %221
  %224 = invoke noundef ptr @_Z19generateMatrixDensejjf(i32 noundef 1024, i32 noundef 512, float noundef 0.000000e+00)
          to label %225 unwind label %248

225:                                              ; preds = %223
  %226 = invoke noalias noundef nonnull dereferenceable(2097152) ptr @_Znam(i64 noundef 2097152) #12
          to label %vector.memcheck675 unwind label %250

vector.memcheck675:                               ; preds = %225
  %227 = ptrtoint ptr %224 to i64
  %228 = ptrtoint ptr %226 to i64
  %229 = sub i64 %228, %227
  %diff.check676 = icmp ult i64 %229, 32
  br i1 %diff.check676, label %.preheader571, label %vector.body681

vector.body681:                                   ; preds = %vector.memcheck675, %vector.body681
  %index682 = phi i64 [ %index.next685.3, %vector.body681 ], [ 0, %vector.memcheck675 ]
  %230 = getelementptr inbounds float, ptr %224, i64 %index682
  %231 = getelementptr inbounds i8, ptr %230, i64 16
  %wide.load683 = load <4 x float>, ptr %230, align 4, !tbaa !5
  %wide.load684 = load <4 x float>, ptr %231, align 4, !tbaa !5
  %232 = getelementptr inbounds float, ptr %226, i64 %index682
  %233 = getelementptr inbounds i8, ptr %232, i64 16
  store <4 x float> %wide.load683, ptr %232, align 4, !tbaa !5
  store <4 x float> %wide.load684, ptr %233, align 4, !tbaa !5
  %index.next685 = or disjoint i64 %index682, 8
  %234 = getelementptr inbounds float, ptr %224, i64 %index.next685
  %235 = getelementptr inbounds i8, ptr %234, i64 16
  %wide.load683.1 = load <4 x float>, ptr %234, align 4, !tbaa !5
  %wide.load684.1 = load <4 x float>, ptr %235, align 4, !tbaa !5
  %236 = getelementptr inbounds float, ptr %226, i64 %index.next685
  %237 = getelementptr inbounds i8, ptr %236, i64 16
  store <4 x float> %wide.load683.1, ptr %236, align 4, !tbaa !5
  store <4 x float> %wide.load684.1, ptr %237, align 4, !tbaa !5
  %index.next685.1 = or disjoint i64 %index682, 16
  %238 = getelementptr inbounds float, ptr %224, i64 %index.next685.1
  %239 = getelementptr inbounds i8, ptr %238, i64 16
  %wide.load683.2 = load <4 x float>, ptr %238, align 4, !tbaa !5
  %wide.load684.2 = load <4 x float>, ptr %239, align 4, !tbaa !5
  %240 = getelementptr inbounds float, ptr %226, i64 %index.next685.1
  %241 = getelementptr inbounds i8, ptr %240, i64 16
  store <4 x float> %wide.load683.2, ptr %240, align 4, !tbaa !5
  store <4 x float> %wide.load684.2, ptr %241, align 4, !tbaa !5
  %index.next685.2 = or disjoint i64 %index682, 24
  %242 = getelementptr inbounds float, ptr %224, i64 %index.next685.2
  %243 = getelementptr inbounds i8, ptr %242, i64 16
  %wide.load683.3 = load <4 x float>, ptr %242, align 4, !tbaa !5
  %wide.load684.3 = load <4 x float>, ptr %243, align 4, !tbaa !5
  %244 = getelementptr inbounds float, ptr %226, i64 %index.next685.2
  %245 = getelementptr inbounds i8, ptr %244, i64 16
  store <4 x float> %wide.load683.3, ptr %244, align 4, !tbaa !5
  store <4 x float> %wide.load684.3, ptr %245, align 4, !tbaa !5
  %index.next685.3 = add nuw nsw i64 %index682, 32
  %246 = icmp eq i64 %index.next685.3, 524288
  br i1 %246, label %middle.block677, label %vector.body681, !llvm.loop !40

middle.block677:                                  ; preds = %vector.body681, %.preheader571
  %247 = invoke noundef ptr @_Z19generateMatrixDensejjf(i32 noundef 512, i32 noundef 16, float noundef 0.000000e+00)
          to label %264 unwind label %287

248:                                              ; preds = %223
  %249 = landingpad { ptr, i32 }
          cleanup
  br label %517

250:                                              ; preds = %225
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %517

.preheader571:                                    ; preds = %vector.memcheck675, %.preheader571
  %indvars.iv603 = phi i64 [ %indvars.iv.next604.3, %.preheader571 ], [ 0, %vector.memcheck675 ]
  %252 = getelementptr inbounds float, ptr %224, i64 %indvars.iv603
  %253 = load float, ptr %252, align 4, !tbaa !5
  %254 = getelementptr inbounds float, ptr %226, i64 %indvars.iv603
  store float %253, ptr %254, align 4, !tbaa !5
  %indvars.iv.next604 = or disjoint i64 %indvars.iv603, 1
  %255 = getelementptr inbounds float, ptr %224, i64 %indvars.iv.next604
  %256 = load float, ptr %255, align 4, !tbaa !5
  %257 = getelementptr inbounds float, ptr %226, i64 %indvars.iv.next604
  store float %256, ptr %257, align 4, !tbaa !5
  %indvars.iv.next604.1 = or disjoint i64 %indvars.iv603, 2
  %258 = getelementptr inbounds float, ptr %224, i64 %indvars.iv.next604.1
  %259 = load float, ptr %258, align 4, !tbaa !5
  %260 = getelementptr inbounds float, ptr %226, i64 %indvars.iv.next604.1
  store float %259, ptr %260, align 4, !tbaa !5
  %indvars.iv.next604.2 = or disjoint i64 %indvars.iv603, 3
  %261 = getelementptr inbounds float, ptr %224, i64 %indvars.iv.next604.2
  %262 = load float, ptr %261, align 4, !tbaa !5
  %263 = getelementptr inbounds float, ptr %226, i64 %indvars.iv.next604.2
  store float %262, ptr %263, align 4, !tbaa !5
  %indvars.iv.next604.3 = add nuw nsw i64 %indvars.iv603, 4
  %exitcond606.not.3 = icmp eq i64 %indvars.iv.next604.3, 524288
  br i1 %exitcond606.not.3, label %middle.block677, label %.preheader571, !llvm.loop !41

264:                                              ; preds = %middle.block677
  %265 = invoke noalias noundef nonnull dereferenceable(32768) ptr @_Znam(i64 noundef 32768) #12
          to label %vector.memcheck686 unwind label %289

vector.memcheck686:                               ; preds = %264
  %266 = ptrtoint ptr %247 to i64
  %267 = ptrtoint ptr %265 to i64
  %268 = sub i64 %267, %266
  %diff.check687 = icmp ult i64 %268, 32
  br i1 %diff.check687, label %.preheader570, label %vector.body692

vector.body692:                                   ; preds = %vector.memcheck686, %vector.body692
  %index693 = phi i64 [ %index.next696.3, %vector.body692 ], [ 0, %vector.memcheck686 ]
  %269 = getelementptr inbounds float, ptr %247, i64 %index693
  %270 = getelementptr inbounds i8, ptr %269, i64 16
  %wide.load694 = load <4 x float>, ptr %269, align 4, !tbaa !5
  %wide.load695 = load <4 x float>, ptr %270, align 4, !tbaa !5
  %271 = getelementptr inbounds float, ptr %265, i64 %index693
  %272 = getelementptr inbounds i8, ptr %271, i64 16
  store <4 x float> %wide.load694, ptr %271, align 4, !tbaa !5
  store <4 x float> %wide.load695, ptr %272, align 4, !tbaa !5
  %index.next696 = or disjoint i64 %index693, 8
  %273 = getelementptr inbounds float, ptr %247, i64 %index.next696
  %274 = getelementptr inbounds i8, ptr %273, i64 16
  %wide.load694.1 = load <4 x float>, ptr %273, align 4, !tbaa !5
  %wide.load695.1 = load <4 x float>, ptr %274, align 4, !tbaa !5
  %275 = getelementptr inbounds float, ptr %265, i64 %index.next696
  %276 = getelementptr inbounds i8, ptr %275, i64 16
  store <4 x float> %wide.load694.1, ptr %275, align 4, !tbaa !5
  store <4 x float> %wide.load695.1, ptr %276, align 4, !tbaa !5
  %index.next696.1 = or disjoint i64 %index693, 16
  %277 = getelementptr inbounds float, ptr %247, i64 %index.next696.1
  %278 = getelementptr inbounds i8, ptr %277, i64 16
  %wide.load694.2 = load <4 x float>, ptr %277, align 4, !tbaa !5
  %wide.load695.2 = load <4 x float>, ptr %278, align 4, !tbaa !5
  %279 = getelementptr inbounds float, ptr %265, i64 %index.next696.1
  %280 = getelementptr inbounds i8, ptr %279, i64 16
  store <4 x float> %wide.load694.2, ptr %279, align 4, !tbaa !5
  store <4 x float> %wide.load695.2, ptr %280, align 4, !tbaa !5
  %index.next696.2 = or disjoint i64 %index693, 24
  %281 = getelementptr inbounds float, ptr %247, i64 %index.next696.2
  %282 = getelementptr inbounds i8, ptr %281, i64 16
  %wide.load694.3 = load <4 x float>, ptr %281, align 4, !tbaa !5
  %wide.load695.3 = load <4 x float>, ptr %282, align 4, !tbaa !5
  %283 = getelementptr inbounds float, ptr %265, i64 %index.next696.2
  %284 = getelementptr inbounds i8, ptr %283, i64 16
  store <4 x float> %wide.load694.3, ptr %283, align 4, !tbaa !5
  store <4 x float> %wide.load695.3, ptr %284, align 4, !tbaa !5
  %index.next696.3 = add nuw nsw i64 %index693, 32
  %285 = icmp eq i64 %index.next696.3, 8192
  br i1 %285, label %middle.block688, label %vector.body692, !llvm.loop !42

middle.block688:                                  ; preds = %vector.body692, %.preheader570
  %286 = invoke noalias noundef nonnull dereferenceable(65536) ptr @_Znam(i64 noundef 65536) #12
          to label %303 unwind label %312

287:                                              ; preds = %middle.block677
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %517

289:                                              ; preds = %264
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %517

.preheader570:                                    ; preds = %vector.memcheck686, %.preheader570
  %indvars.iv607 = phi i64 [ %indvars.iv.next608.3, %.preheader570 ], [ 0, %vector.memcheck686 ]
  %291 = getelementptr inbounds float, ptr %247, i64 %indvars.iv607
  %292 = load float, ptr %291, align 4, !tbaa !5
  %293 = getelementptr inbounds float, ptr %265, i64 %indvars.iv607
  store float %292, ptr %293, align 4, !tbaa !5
  %indvars.iv.next608 = or disjoint i64 %indvars.iv607, 1
  %294 = getelementptr inbounds float, ptr %247, i64 %indvars.iv.next608
  %295 = load float, ptr %294, align 4, !tbaa !5
  %296 = getelementptr inbounds float, ptr %265, i64 %indvars.iv.next608
  store float %295, ptr %296, align 4, !tbaa !5
  %indvars.iv.next608.1 = or disjoint i64 %indvars.iv607, 2
  %297 = getelementptr inbounds float, ptr %247, i64 %indvars.iv.next608.1
  %298 = load float, ptr %297, align 4, !tbaa !5
  %299 = getelementptr inbounds float, ptr %265, i64 %indvars.iv.next608.1
  store float %298, ptr %299, align 4, !tbaa !5
  %indvars.iv.next608.2 = or disjoint i64 %indvars.iv607, 3
  %300 = getelementptr inbounds float, ptr %247, i64 %indvars.iv.next608.2
  %301 = load float, ptr %300, align 4, !tbaa !5
  %302 = getelementptr inbounds float, ptr %265, i64 %indvars.iv.next608.2
  store float %301, ptr %302, align 4, !tbaa !5
  %indvars.iv.next608.3 = add nuw nsw i64 %indvars.iv607, 4
  %exitcond610.not.3 = icmp eq i64 %indvars.iv.next608.3, 8192
  br i1 %exitcond610.not.3, label %middle.block688, label %.preheader570, !llvm.loop !43

303:                                              ; preds = %middle.block688
  %304 = invoke noalias noundef nonnull dereferenceable(65536) ptr @_Znam(i64 noundef 65536) #12
          to label %305 unwind label %314

305:                                              ; preds = %303
  %306 = getelementptr inbounds i8, ptr %7, i64 28
  store i32 512, ptr %306, align 4, !tbaa !19
  %307 = getelementptr inbounds i8, ptr %7, i64 104
  %308 = getelementptr inbounds i8, ptr %7, i64 112
  store i32 512, ptr %308, align 8, !tbaa !33
  %309 = getelementptr inbounds i8, ptr %7, i64 116
  store i32 512, ptr %309, align 4, !tbaa !34
  %310 = getelementptr inbounds i8, ptr %7, i64 64
  %311 = getelementptr inbounds i8, ptr %7, i64 68
  store i32 1, ptr %311, align 4, !tbaa !35
  store i32 0, ptr %307, align 8, !tbaa !36
  store i32 0, ptr %7, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %316 unwind label %320

312:                                              ; preds = %middle.block688
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %517

314:                                              ; preds = %303
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %517

316:                                              ; preds = %305
  %317 = invoke noundef i32 @_Z28get_type_reduce_network_typeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %11)
          to label %318 unwind label %322

318:                                              ; preds = %316
  store i32 %317, ptr %310, align 8, !tbaa !38
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #11
  %319 = invoke noalias noundef nonnull dereferenceable(320) ptr @_Znwm(i64 noundef 320) #12
          to label %325 unwind label %333

320:                                              ; preds = %305
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %324

322:                                              ; preds = %316
  %323 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #11
  br label %324

324:                                              ; preds = %322, %320
  %.pn525 = phi { ptr, i32 } [ %323, %322 ], [ %321, %320 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #11
  br label %517

325:                                              ; preds = %318
  invoke void @_ZN6StonneC1E6Config(ptr noundef nonnull align 8 dereferenceable(316) %319, ptr noundef nonnull byval(%class.Config) align 8 %7)
          to label %326 unwind label %335

326:                                              ; preds = %325
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %327 unwind label %333

327:                                              ; preds = %326
  invoke void @_ZN6Stonne13loadDenseGEMMENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjjjPfS6_S6_8Dataflow(ptr noundef nonnull align 8 dereferenceable(316) %319, ptr noundef nonnull %13, i32 noundef 16, i32 noundef 512, i32 noundef 1024, ptr noundef nonnull %226, ptr noundef nonnull %265, ptr noundef nonnull %304, i32 noundef 0)
          to label %328 unwind label %337

328:                                              ; preds = %327
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  invoke void @_ZN6Stonne12loadClockingEPj(ptr noundef nonnull align 8 dereferenceable(316) %319, ptr noundef nonnull %286)
          to label %329 unwind label %333

329:                                              ; preds = %328
  invoke void @_ZN6Stonne12loadGEMMTileEjjj(ptr noundef nonnull align 8 dereferenceable(316) %319, i32 noundef 1, i32 noundef 1, i32 noundef 512)
          to label %330 unwind label %333

330:                                              ; preds = %329
  invoke void @_ZN6Stonne3runEv(ptr noundef nonnull align 8 dereferenceable(316) %319)
          to label %331 unwind label %333

331:                                              ; preds = %330
  %332 = invoke noalias noundef nonnull dereferenceable(65536) ptr @_Znam(i64 noundef 65536) #12
          to label %.preheader569.preheader unwind label %339

.preheader569.preheader:                          ; preds = %331
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(65536) %332, ptr noundef nonnull align 4 dereferenceable(65536) %286, i64 65536, i1 false), !tbaa !13
  %invariant.gep633 = getelementptr inbounds i8, ptr %332, i64 4096
  %invariant.gep635 = getelementptr inbounds i8, ptr %332, i64 8192
  %invariant.gep637 = getelementptr inbounds i8, ptr %332, i64 12288
  %invariant.gep639 = getelementptr inbounds i8, ptr %332, i64 16384
  %invariant.gep641 = getelementptr inbounds i8, ptr %332, i64 20480
  %invariant.gep643 = getelementptr inbounds i8, ptr %332, i64 24576
  %invariant.gep645 = getelementptr inbounds i8, ptr %332, i64 28672
  %invariant.gep647 = getelementptr inbounds i8, ptr %332, i64 32768
  %invariant.gep649 = getelementptr inbounds i8, ptr %332, i64 36864
  %invariant.gep651 = getelementptr inbounds i8, ptr %332, i64 40960
  %invariant.gep653 = getelementptr inbounds i8, ptr %332, i64 45056
  %invariant.gep655 = getelementptr inbounds i8, ptr %332, i64 49152
  %invariant.gep657 = getelementptr inbounds i8, ptr %332, i64 53248
  %invariant.gep659 = getelementptr inbounds i8, ptr %332, i64 57344
  %invariant.gep661 = getelementptr inbounds i8, ptr %332, i64 61440
  br label %.preheader567

333:                                              ; preds = %330, %329, %328, %326, %318
  %334 = landingpad { ptr, i32 }
          cleanup
  br label %517

335:                                              ; preds = %325
  %336 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %319, i64 noundef 320) #13
  br label %517

337:                                              ; preds = %327
  %338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  br label %517

339:                                              ; preds = %331
  %340 = landingpad { ptr, i32 }
          cleanup
  br label %517

.preheader567:                                    ; preds = %.preheader569.preheader, %.preheader567
  %indvars.iv618 = phi i64 [ 0, %.preheader569.preheader ], [ %indvars.iv.next619, %.preheader567 ]
  %341 = shl nuw nsw i64 %indvars.iv618, 4
  %342 = getelementptr inbounds i32, ptr %332, i64 %indvars.iv618
  %343 = load i32, ptr %342, align 4, !tbaa !13
  %344 = getelementptr inbounds i32, ptr %286, i64 %341
  store i32 %343, ptr %344, align 4, !tbaa !13
  %gep634 = getelementptr inbounds i32, ptr %invariant.gep633, i64 %indvars.iv618
  %345 = load i32, ptr %gep634, align 4, !tbaa !13
  %346 = or disjoint i64 %341, 1
  %347 = getelementptr inbounds i32, ptr %286, i64 %346
  store i32 %345, ptr %347, align 4, !tbaa !13
  %gep636 = getelementptr inbounds i32, ptr %invariant.gep635, i64 %indvars.iv618
  %348 = load i32, ptr %gep636, align 4, !tbaa !13
  %349 = or disjoint i64 %341, 2
  %350 = getelementptr inbounds i32, ptr %286, i64 %349
  store i32 %348, ptr %350, align 4, !tbaa !13
  %gep638 = getelementptr inbounds i32, ptr %invariant.gep637, i64 %indvars.iv618
  %351 = load i32, ptr %gep638, align 4, !tbaa !13
  %352 = or disjoint i64 %341, 3
  %353 = getelementptr inbounds i32, ptr %286, i64 %352
  store i32 %351, ptr %353, align 4, !tbaa !13
  %gep640 = getelementptr inbounds i32, ptr %invariant.gep639, i64 %indvars.iv618
  %354 = load i32, ptr %gep640, align 4, !tbaa !13
  %355 = or disjoint i64 %341, 4
  %356 = getelementptr inbounds i32, ptr %286, i64 %355
  store i32 %354, ptr %356, align 4, !tbaa !13
  %gep642 = getelementptr inbounds i32, ptr %invariant.gep641, i64 %indvars.iv618
  %357 = load i32, ptr %gep642, align 4, !tbaa !13
  %358 = or disjoint i64 %341, 5
  %359 = getelementptr inbounds i32, ptr %286, i64 %358
  store i32 %357, ptr %359, align 4, !tbaa !13
  %gep644 = getelementptr inbounds i32, ptr %invariant.gep643, i64 %indvars.iv618
  %360 = load i32, ptr %gep644, align 4, !tbaa !13
  %361 = or disjoint i64 %341, 6
  %362 = getelementptr inbounds i32, ptr %286, i64 %361
  store i32 %360, ptr %362, align 4, !tbaa !13
  %gep646 = getelementptr inbounds i32, ptr %invariant.gep645, i64 %indvars.iv618
  %363 = load i32, ptr %gep646, align 4, !tbaa !13
  %364 = or disjoint i64 %341, 7
  %365 = getelementptr inbounds i32, ptr %286, i64 %364
  store i32 %363, ptr %365, align 4, !tbaa !13
  %gep648 = getelementptr inbounds i32, ptr %invariant.gep647, i64 %indvars.iv618
  %366 = load i32, ptr %gep648, align 4, !tbaa !13
  %367 = or disjoint i64 %341, 8
  %368 = getelementptr inbounds i32, ptr %286, i64 %367
  store i32 %366, ptr %368, align 4, !tbaa !13
  %gep650 = getelementptr inbounds i32, ptr %invariant.gep649, i64 %indvars.iv618
  %369 = load i32, ptr %gep650, align 4, !tbaa !13
  %370 = or disjoint i64 %341, 9
  %371 = getelementptr inbounds i32, ptr %286, i64 %370
  store i32 %369, ptr %371, align 4, !tbaa !13
  %gep652 = getelementptr inbounds i32, ptr %invariant.gep651, i64 %indvars.iv618
  %372 = load i32, ptr %gep652, align 4, !tbaa !13
  %373 = or disjoint i64 %341, 10
  %374 = getelementptr inbounds i32, ptr %286, i64 %373
  store i32 %372, ptr %374, align 4, !tbaa !13
  %gep654 = getelementptr inbounds i32, ptr %invariant.gep653, i64 %indvars.iv618
  %375 = load i32, ptr %gep654, align 4, !tbaa !13
  %376 = or disjoint i64 %341, 11
  %377 = getelementptr inbounds i32, ptr %286, i64 %376
  store i32 %375, ptr %377, align 4, !tbaa !13
  %gep656 = getelementptr inbounds i32, ptr %invariant.gep655, i64 %indvars.iv618
  %378 = load i32, ptr %gep656, align 4, !tbaa !13
  %379 = or disjoint i64 %341, 12
  %380 = getelementptr inbounds i32, ptr %286, i64 %379
  store i32 %378, ptr %380, align 4, !tbaa !13
  %gep658 = getelementptr inbounds i32, ptr %invariant.gep657, i64 %indvars.iv618
  %381 = load i32, ptr %gep658, align 4, !tbaa !13
  %382 = or disjoint i64 %341, 13
  %383 = getelementptr inbounds i32, ptr %286, i64 %382
  store i32 %381, ptr %383, align 4, !tbaa !13
  %gep660 = getelementptr inbounds i32, ptr %invariant.gep659, i64 %indvars.iv618
  %384 = load i32, ptr %gep660, align 4, !tbaa !13
  %385 = or disjoint i64 %341, 14
  %386 = getelementptr inbounds i32, ptr %286, i64 %385
  store i32 %384, ptr %386, align 4, !tbaa !13
  %gep662 = getelementptr inbounds i32, ptr %invariant.gep661, i64 %indvars.iv618
  %387 = load i32, ptr %gep662, align 4, !tbaa !13
  %388 = or disjoint i64 %341, 15
  %389 = getelementptr inbounds i32, ptr %286, i64 %388
  store i32 %387, ptr %389, align 4, !tbaa !13
  %indvars.iv.next619 = add nuw nsw i64 %indvars.iv618, 1
  %exitcond621.not = icmp eq i64 %indvars.iv.next619, 1024
  br i1 %exitcond621.not, label %390, label %.preheader567, !llvm.loop !44

390:                                              ; preds = %.preheader567
  %391 = call noundef i32 @_ZN6Stonne9getCyclesEv(ptr noundef nonnull align 8 dereferenceable(316) %319)
  %392 = getelementptr inbounds i8, ptr %286, i64 32764
  %393 = load i32, ptr %392, align 4, !tbaa !13
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %393)
          to label %395 unwind label %405

395:                                              ; preds = %390
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull @.str.1)
          to label %397 unwind label %405

397:                                              ; preds = %395
  %398 = getelementptr inbounds i8, ptr %286, i64 65532
  %399 = load i32, ptr %398, align 4, !tbaa !13
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %399)
          to label %401 unwind label %405

401:                                              ; preds = %397
  %402 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %400, ptr noundef nonnull @.str.1)
          to label %.peel.next unwind label %405

.peel.next:                                       ; preds = %401
  call void @_ZdaPv(ptr noundef nonnull %226) #13
  call void @_ZdaPv(ptr noundef nonnull %265) #13
  call void @_ZdaPv(ptr noundef nonnull %304) #13
  call void @_ZN6StonneD1Ev(ptr noundef nonnull align 8 dereferenceable(316) %319) #11
  call void @_ZdlPvm(ptr noundef nonnull %319, i64 noundef 320) #13
  %invariant.gep = getelementptr i8, ptr %134, i64 -4
  %403 = getelementptr inbounds i8, ptr %134, i64 2044
  %404 = load i32, ptr %403, align 4, !tbaa !13
  br label %408

405:                                              ; preds = %401, %397, %395, %390
  %406 = landingpad { ptr, i32 }
          cleanup
  br label %517

.loopexit:                                        ; preds = %408
  %407 = 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.1)
          to label %421 unwind label %441

408:                                              ; preds = %415, %.peel.next
  %indvars.iv625 = phi i64 [ 1, %.peel.next ], [ %indvars.iv.next626.1709, %415 ]
  %.0496586 = phi i32 [ %404, %.peel.next ], [ %spec.select.1708, %415 ]
  %409 = shl nuw nsw i64 %indvars.iv625, 9
  %410 = or disjoint i64 %409, 511
  %411 = getelementptr inbounds i32, ptr %134, i64 %410
  %412 = load i32, ptr %411, align 4, !tbaa !13
  %gep = getelementptr i32, ptr %invariant.gep, i64 %409
  %413 = load i32, ptr %gep, align 4, !tbaa !13
  %414 = sub i32 %412, %413
  %spec.select = call i32 @llvm.umax.i32(i32 %414, i32 %.0496586)
  %indvars.iv.next626 = add nuw nsw i64 %indvars.iv625, 1
  %exitcond628.not = icmp eq i64 %indvars.iv.next626, 512
  br i1 %exitcond628.not, label %.loopexit, label %415, !llvm.loop !45

415:                                              ; preds = %408
  %416 = shl nuw nsw i64 %indvars.iv.next626, 9
  %417 = or disjoint i64 %416, 511
  %418 = getelementptr inbounds i32, ptr %134, i64 %417
  %419 = load i32, ptr %418, align 4, !tbaa !13
  %420 = sub i32 %419, %412
  %spec.select.1708 = call i32 @llvm.umax.i32(i32 %420, i32 %spec.select)
  %indvars.iv.next626.1709 = add nuw nsw i64 %indvars.iv625, 2
  br label %408

421:                                              ; preds = %.loopexit
  %422 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %407, i32 noundef %spec.select)
          to label %.preheader.1.preheader unwind label %441

.preheader.1.preheader:                           ; preds = %421
  %invariant.gep710 = getelementptr i8, ptr %134, i64 1052668
  br label %.preheader.1

.preheader.1:                                     ; preds = %.preheader.1, %.preheader.1.preheader
  %indvars.iv625.1 = phi i64 [ 0, %.preheader.1.preheader ], [ %indvars.iv.next626.1.1, %.preheader.1 ]
  %.0496586.1 = phi i32 [ 0, %.preheader.1.preheader ], [ %spec.select.1.1, %.preheader.1 ]
  %423 = shl i64 %indvars.iv625.1, 9
  %424 = add nuw nsw i64 %423, 262144
  %425 = or disjoint i64 %424, 511
  %426 = getelementptr inbounds i32, ptr %134, i64 %425
  %427 = load i32, ptr %426, align 4, !tbaa !13
  %gep.1 = getelementptr i32, ptr %invariant.gep, i64 %424
  %428 = load i32, ptr %gep.1, align 4, !tbaa !13
  %429 = sub i32 %427, %428
  %spec.select.1 = call i32 @llvm.umax.i32(i32 %429, i32 %.0496586.1)
  %.idx = shl i64 %indvars.iv625.1, 11
  %gep711 = getelementptr i8, ptr %invariant.gep710, i64 %.idx
  %430 = load i32, ptr %gep711, align 4, !tbaa !13
  %431 = sub i32 %430, %427
  %spec.select.1.1 = call i32 @llvm.umax.i32(i32 %431, i32 %spec.select.1)
  %indvars.iv.next626.1.1 = add nuw nsw i64 %indvars.iv625.1, 2
  %exitcond628.1.not.1 = icmp eq i64 %indvars.iv.next626.1.1, 512
  br i1 %exitcond628.1.not.1, label %432, label %.preheader.1, !llvm.loop !47

432:                                              ; preds = %.preheader.1
  %433 = add nsw i32 %spec.select.1.1, %spec.select
  %434 = 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.1)
          to label %435 unwind label %441

435:                                              ; preds = %432
  %436 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %434, i32 noundef %spec.select.1.1)
          to label %437 unwind label %441

437:                                              ; preds = %435
  %438 = load i32, ptr %392, align 4, !tbaa !13
  %439 = load i32, ptr %398, align 4, !tbaa !13
  %440 = 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.10)
          to label %443 unwind label %454

441:                                              ; preds = %435, %432, %421, %.loopexit
  %442 = landingpad { ptr, i32 }
          cleanup
  br label %517

443:                                              ; preds = %437
  %.564 = call i32 @llvm.umax.i32(i32 %spec.select.1.1, i32 %438)
  %444 = sub i32 %spec.select, %438
  %445 = add i32 %444, %.564
  %446 = add i32 %445, %439
  %447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %440, i32 noundef %446)
          to label %448 unwind label %454

448:                                              ; preds = %443
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %447, ptr noundef nonnull @.str.11)
          to label %450 unwind label %454

450:                                              ; preds = %448
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %449, i32 noundef 524288)
          to label %452 unwind label %454

452:                                              ; preds = %450
  %453 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %451, ptr noundef nonnull @.str.12)
          to label %456 unwind label %454

454:                                              ; preds = %472, %470, %468, %466, %464, %462, %460, %458, %456, %452, %450, %448, %443, %437
  %455 = landingpad { ptr, i32 }
          cleanup
  br label %517

456:                                              ; preds = %452
  %457 = 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.13)
          to label %458 unwind label %454

458:                                              ; preds = %456
  %459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %457, i32 noundef %187)
          to label %460 unwind label %454

460:                                              ; preds = %458
  %461 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %459, ptr noundef nonnull @.str.6)
          to label %462 unwind label %454

462:                                              ; preds = %460
  %463 = 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 %464 unwind label %454

464:                                              ; preds = %462
  %465 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %463, i32 noundef %391)
          to label %466 unwind label %454

466:                                              ; preds = %464
  %467 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %465, ptr noundef nonnull @.str.6)
          to label %468 unwind label %454

468:                                              ; preds = %466
  %469 = 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.15)
          to label %470 unwind label %454

470:                                              ; preds = %468
  %471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %469, i32 noundef %433)
          to label %472 unwind label %454

472:                                              ; preds = %470
  %473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef nonnull @.str.6)
          to label %474 unwind label %454

474:                                              ; preds = %472
  %475 = add i32 %433, %391
  %476 = 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 %477 unwind label %493

477:                                              ; preds = %474
  %478 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %476, i32 noundef %475)
          to label %479 unwind label %493

479:                                              ; preds = %477
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull @.str.17)
          to label %481 unwind label %493

481:                                              ; preds = %479
  %482 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %480, i32 noundef 524288)
          to label %483 unwind label %493

483:                                              ; preds = %481
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %482, ptr noundef nonnull @.str.6)
          to label %485 unwind label %493

485:                                              ; preds = %483
  %486 = 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 %487 unwind label %495

487:                                              ; preds = %485
  %488 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %486, i32 noundef 1024)
          to label %489 unwind label %495

489:                                              ; preds = %487
  %490 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %488, ptr noundef nonnull @.str.6)
          to label %491 unwind label %495

491:                                              ; preds = %489
  %492 = 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 %497 unwind label %513

493:                                              ; preds = %483, %481, %479, %477, %474
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %517

495:                                              ; preds = %489, %487, %485
  %496 = landingpad { ptr, i32 }
          cleanup
  br label %517

497:                                              ; preds = %491
  %498 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %492, i32 noundef 16384)
          to label %499 unwind label %513

499:                                              ; preds = %497
  %500 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %498, ptr noundef nonnull @.str.6)
          to label %501 unwind label %513

501:                                              ; preds = %499
  %502 = 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.20)
          to label %503 unwind label %515

503:                                              ; preds = %501
  %504 = add nsw i32 %475, 15360
  %505 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %502, i32 noundef %504)
          to label %506 unwind label %515

506:                                              ; preds = %503
  %507 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %505, ptr noundef nonnull @.str.21)
          to label %508 unwind label %515

508:                                              ; preds = %506
  %509 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %507, i32 noundef 4194304)
          to label %510 unwind label %515

510:                                              ; preds = %508
  %511 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %509, ptr noundef nonnull @.str.6)
          to label %512 unwind label %515

512:                                              ; preds = %510
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #11
  br label %522

513:                                              ; preds = %499, %497, %491
  %514 = landingpad { ptr, i32 }
          cleanup
  br label %517

515:                                              ; preds = %510, %508, %506, %503, %501
  %516 = landingpad { ptr, i32 }
          cleanup
  br label %517

517:                                              ; preds = %190, %192, %194, %248, %287, %312, %314, %324, %339, %493, %513, %515, %495, %454, %441, %405, %337, %335, %333, %289, %250, %206, %196, %180, %170
  %.pn545.pn.pn = phi { ptr, i32 } [ %.pn, %180 ], [ %171, %170 ], [ %191, %190 ], [ %195, %194 ], [ %193, %192 ], [ %207, %206 ], [ %197, %196 ], [ %249, %248 ], [ %251, %250 ], [ %288, %287 ], [ %290, %289 ], [ %313, %312 ], [ %.pn525, %324 ], [ %315, %314 ], [ %334, %333 ], [ %338, %337 ], [ %336, %335 ], [ %340, %339 ], [ %406, %405 ], [ %442, %441 ], [ %455, %454 ], [ %494, %493 ], [ %496, %495 ], [ %516, %515 ], [ %514, %513 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %7) #11
  br label %518

518:                                              ; preds = %517, %168
  %.pn545.pn.pn.pn = phi { ptr, i32 } [ %.pn545.pn.pn, %517 ], [ %169, %168 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %6) #11
  br label %519

519:                                              ; preds = %98, %106, %137, %164, %166, %518, %139, %135, %96
  %.pn556.pn = phi { ptr, i32 } [ %97, %96 ], [ %107, %106 ], [ %99, %98 ], [ %136, %135 ], [ %138, %137 ], [ %140, %139 ], [ %165, %164 ], [ %.pn545.pn.pn.pn, %518 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11
  br label %520

520:                                              ; preds = %76, %519, %74
  %.pn556.pn.pn.pn = phi { ptr, i32 } [ %75, %74 ], [ %.pn556.pn, %519 ], [ %77, %76 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #11
  br label %521

521:                                              ; preds = %520, %72
  %.pn556.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn556.pn.pn.pn, %520 ], [ %73, %72 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #11
  resume { ptr, i32 } %.pn556.pn.pn.pn.pn

522:                                              ; preds = %512, %45
  br i1 %32, label %523, label %528

523:                                              ; preds = %522
  %524 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.2)
  %525 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %524, i32 noundef 0)
  %526 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %525, ptr noundef nonnull @.str.3)
  %527 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %526, i32 noundef 2048)
  br label %528

528:                                              ; preds = %523, %522
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #11
  ret i32 0
}

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

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

; 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

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 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 void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 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 #6 align 2

declare i32 @__gxx_personality_v0(...)

declare noundef ptr @_Z19generateMatrixDensejjf(i32 noundef, i32 noundef, float noundef) local_unnamed_addr #4

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

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

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

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

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

declare noundef i32 @_Z28get_type_reduce_network_typeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef) local_unnamed_addr #4

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #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) local_unnamed_addr #8

declare void @_ZN6Stonne15loadSparseDenseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjjjPfS6_PjS7_S6_jj(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, i32 noundef, i32 noundef) local_unnamed_addr #4

; 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 #6 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN6Stonne9getCyclesEv(ptr noundef nonnull align 8 dereferenceable(316)) local_unnamed_addr #5 align 2

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

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

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

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

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

declare void @_ZN6Stonne12loadGEMMTileEjjj(ptr noundef nonnull align 8 dereferenceable(316), i32 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 #5 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #10

attributes #0 = { mustprogress norecurse 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: readwrite) }
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 = { 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 #6 = { 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 #7 = { 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 #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 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #11 = { nounwind }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = distinct !{!15, !10, !11}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10, !11, !12}
!18 = distinct !{!18, !10, !11}
!19 = !{!20, !14, i64 28}
!20 = !{!"_ZTS6Config", !14, i64 0, !21, i64 4, !22, i64 8, !23, i64 24, !25, i64 40, !26, i64 64, !28, i64 72, !29, i64 96, !30, i64 104}
!21 = !{!"_ZTS15DSNetworkConfig", !14, i64 0}
!22 = !{!"_ZTS13DSwitchConfig", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!23 = !{!"_ZTS15MSNetworkConfig", !24, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!24 = !{!"_ZTS19MultiplierNetwork_t", !7, i64 0}
!25 = !{!"_ZTS13MSwitchConfig", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20}
!26 = !{!"_ZTS15ASNetworkConfig", !27, i64 0, !14, i64 4}
!27 = !{!"_ZTS15ReduceNetwork_t", !7, i64 0}
!28 = !{!"_ZTS13ASwitchConfig", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20}
!29 = !{!"_ZTS17LookUpTableConfig", !14, i64 0, !14, i64 4}
!30 = !{!"_ZTS14SDMemoryConfig", !31, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !32, i64 28, !14, i64 32, !14, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52}
!31 = !{!"_ZTS18MemoryController_t", !7, i64 0}
!32 = !{!"_ZTS17MemoryHierarchy_t", !7, i64 0}
!33 = !{!20, !14, i64 112}
!34 = !{!20, !14, i64 116}
!35 = !{!20, !14, i64 68}
!36 = !{!20, !31, i64 104}
!37 = !{!20, !14, i64 0}
!38 = !{!20, !27, i64 64}
!39 = distinct !{!39, !10}
!40 = distinct !{!40, !10, !11, !12}
!41 = distinct !{!41, !10, !11}
!42 = distinct !{!42, !10, !11, !12}
!43 = distinct !{!43, !10, !11}
!44 = distinct !{!44, !10}
!45 = distinct !{!45, !10, !46}
!46 = !{!"llvm.loop.peeled.count", i32 1}
!47 = distinct !{!47, !10}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MemCpyOptPass,PromotePass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass