; LLVM IR from libxsmm/libxsmm :: samples/xgemm (gemm_kernel)

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

%struct.gemm_def = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.fusion_args = type { ptr, ptr }

@is_reference_kernel = external dso_local global i32, align 4
@tests_executed = external dso_local global i64, align 8
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [55 x i8], align 1
@stderr = external global ptr, align 8
@.str.22 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [77 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [23 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [32 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_return_success_code(i32 noundef) #0

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %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 i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca %struct.gemm_def, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca float, align 4
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca [512 x i8], align 16
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca %struct.fusion_args, align 8
  %66 = alloca %struct.fusion_args, align 8
  %67 = alloca i32, align 4
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca i32, align 4
  %73 = alloca ptr, align 8
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca ptr, align 8
  %77 = alloca ptr, align 8
  %78 = alloca i32, align 4
  %79 = alloca ptr, align 8
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca ptr, align 8
  %83 = alloca ptr, align 8
  %84 = alloca float, align 4
  %85 = alloca i32, align 4
  %86 = alloca ptr, align 8
  %87 = alloca ptr, align 8
  %88 = alloca float, align 4
  %89 = alloca i32, align 4
  %90 = alloca ptr, align 8
  %91 = alloca ptr, align 8
  %92 = alloca float, align 4
  %93 = alloca ptr, align 8
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca i8, align 1
  %101 = alloca i8, align 1
  %102 = alloca i8, align 1
  %103 = alloca i8, align 1
  %104 = alloca i8, align 1
  %105 = alloca i8, align 1
  %106 = alloca i32, align 4
  %107 = alloca i32, align 4
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca ptr, align 8
  %111 = alloca i8, align 1
  %112 = alloca i32, align 4
  %113 = alloca ptr, align 8
  %114 = alloca float, align 4
  %115 = alloca ptr, align 8
  %116 = alloca i8, align 1
  %117 = alloca i8, align 1
  %118 = alloca i8, align 1
  %119 = alloca float, align 4
  %120 = alloca float, align 4
  %121 = alloca i16, align 2
  %122 = alloca i16, align 2
  %123 = alloca i32, align 4
  %124 = alloca i32, align 4
  %125 = alloca i32, align 4
  %126 = alloca i32, align 4
  %127 = alloca ptr, align 8
  %128 = alloca i8, align 1
  %129 = alloca i32, align 4
  %130 = alloca ptr, align 8
  %131 = alloca float, align 4
  %132 = alloca ptr, align 8
  %133 = alloca i8, align 1
  %134 = alloca i8, align 1
  %135 = alloca i8, align 1
  %136 = alloca float, align 4
  %137 = alloca float, align 4
  %138 = alloca i32, align 4
  %139 = alloca i32, align 4
  %140 = alloca i32, align 4
  %141 = alloca i32, align 4
  %142 = alloca ptr, align 8
  %143 = alloca ptr, align 8
  %144 = alloca i8, align 1
  %145 = alloca i8, align 1
  %146 = alloca i8, align 1
  %147 = alloca i32, align 4
  %148 = alloca i32, align 4
  %149 = alloca i8, align 1
  %150 = alloca i8, align 1
  %151 = alloca i32, align 4
  %152 = alloca i32, align 4
  %153 = alloca ptr, align 8
  %154 = alloca ptr, align 8
  %155 = alloca ptr, align 8
  %156 = alloca float, align 4
  %157 = alloca ptr, align 8
  %158 = alloca i32, align 4
  %159 = alloca i32, align 4
  %160 = alloca i32, align 4
  %161 = alloca ptr, align 8
  %162 = alloca ptr, align 8
  %163 = alloca i8, align 1
  %164 = alloca i8, align 1
  %165 = alloca i8, align 1
  %166 = alloca ptr, align 8
  %167 = alloca ptr, align 8
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #10
  store ptr null, ptr %6, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  store ptr null, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  store ptr null, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  store ptr null, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  store i32 0, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  store i32 0, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  store i32 0, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  store i32 0, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  store i32 0, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  store i32 0, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  store i32 0, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  store i32 0, ptr %21, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  store i32 0, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  store i32 0, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  store i32 0, ptr %24, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  store i32 0, ptr %25, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  store i32 0, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  store double 0.000000e+00, ptr %27, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  store i32 1, ptr %29, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  store i32 0, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  store i32 0, ptr %31, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  store double 0.000000e+00, ptr %32, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  store i32 0, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  store ptr null, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  store ptr null, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  store i32 0, ptr %36, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #10
  store double 0.000000e+00, ptr %37, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  store i32 0, ptr %39, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  store i32 0, ptr %41, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  store i32 0, ptr %42, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  store i32 0, ptr %43, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 232, ptr %44) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  store i32 1, ptr %45, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  store i32 0, ptr %46, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  store i32 0, ptr %47, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  store float 0x3FD99999A0000000, ptr %48, align 4, !tbaa !13
  %168 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 39
  store i32 0, ptr %168, align 8, !tbaa !15
  %169 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  store i32 0, ptr %169, align 8, !tbaa !17
  %170 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  store i32 0, ptr %170, align 4, !tbaa !18
  %171 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  store i32 0, ptr %171, align 8, !tbaa !19
  %172 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  store i32 0, ptr %172, align 4, !tbaa !20
  %173 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  store i32 0, ptr %173, align 4, !tbaa !21
  %174 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  store i32 0, ptr %174, align 8, !tbaa !22
  %175 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  store i32 0, ptr %175, align 4, !tbaa !23
  %176 = load i32, ptr %4, align 4, !tbaa !5
  %177 = icmp eq i32 %176, 25
  br i1 %177, label %187, label %178

178:                                              ; preds = %2
  %179 = load i32, ptr %4, align 4, !tbaa !5
  %180 = icmp eq i32 %179, 26
  br i1 %180, label %187, label %181

181:                                              ; preds = %178
  %182 = load i32, ptr %4, align 4, !tbaa !5
  %183 = icmp eq i32 %182, 27
  br i1 %183, label %187, label %184

184:                                              ; preds = %181
  %185 = load i32, ptr %4, align 4, !tbaa !5
  %186 = icmp eq i32 %185, 28
  br i1 %186, label %187, label %490

187:                                              ; preds = %184, %181, %178, %2
  %188 = load ptr, ptr %5, align 8, !tbaa !9
  %189 = getelementptr inbounds ptr, ptr %188, i64 1
  %190 = load ptr, ptr %189, align 8, !tbaa !9
  store ptr %190, ptr %6, align 8, !tbaa !9
  %191 = load ptr, ptr %5, align 8, !tbaa !9
  %192 = getelementptr inbounds ptr, ptr %191, i64 2
  %193 = load ptr, ptr %192, align 8, !tbaa !9
  store ptr %193, ptr %7, align 8, !tbaa !9
  %194 = load ptr, ptr %5, align 8, !tbaa !9
  %195 = getelementptr inbounds ptr, ptr %194, i64 3
  %196 = load ptr, ptr %195, align 8, !tbaa !9
  store ptr %196, ptr %8, align 8, !tbaa !9
  %197 = load ptr, ptr %5, align 8, !tbaa !9
  %198 = getelementptr inbounds ptr, ptr %197, i64 4
  %199 = load ptr, ptr %198, align 8, !tbaa !9
  store ptr %199, ptr %9, align 8, !tbaa !9
  %200 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 47
  store i32 0, ptr %200, align 8, !tbaa !24
  %201 = load ptr, ptr %5, align 8, !tbaa !9
  %202 = getelementptr inbounds ptr, ptr %201, i64 1
  %203 = load ptr, ptr %202, align 8, !tbaa !9
  %204 = call i32 @strcmp(ptr noundef %203, ptr noundef @.str) #11
  %205 = icmp eq i32 %204, 0
  br i1 %205, label %206, label %209

206:                                              ; preds = %187
  %207 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 39
  store i32 1, ptr %207, align 8, !tbaa !15
  store i32 12, ptr %10, align 4, !tbaa !5
  %208 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 47
  store i32 1, ptr %208, align 8, !tbaa !24
  br label %320

209:                                              ; preds = %187
  %210 = load ptr, ptr %5, align 8, !tbaa !9
  %211 = getelementptr inbounds ptr, ptr %210, i64 1
  %212 = load ptr, ptr %211, align 8, !tbaa !9
  %213 = call i32 @strcmp(ptr noundef %212, ptr noundef @.str.1) #11
  %214 = icmp eq i32 %213, 0
  br i1 %214, label %215, label %233

215:                                              ; preds = %209
  %216 = load ptr, ptr %5, align 8, !tbaa !9
  %217 = getelementptr inbounds ptr, ptr %216, i64 2
  %218 = load ptr, ptr %217, align 8, !tbaa !9
  %219 = call i32 @strcmp(ptr noundef %218, ptr noundef @.str.2) #11
  %220 = icmp eq i32 %219, 0
  br i1 %220, label %221, label %223

221:                                              ; preds = %215
  %222 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 39
  store i32 1, ptr %222, align 8, !tbaa !15
  store i32 13, ptr %10, align 4, !tbaa !5
  br label %223

223:                                              ; preds = %221, %215
  %224 = load ptr, ptr %5, align 8, !tbaa !9
  %225 = getelementptr inbounds ptr, ptr %224, i64 2
  %226 = load ptr, ptr %225, align 8, !tbaa !9
  %227 = call i32 @strcmp(ptr noundef %226, ptr noundef @.str.3) #11
  %228 = icmp eq i32 %227, 0
  br i1 %228, label %229, label %231

229:                                              ; preds = %223
  %230 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  store i32 1, ptr %230, align 8, !tbaa !17
  store i32 12, ptr %10, align 4, !tbaa !5
  br label %231

231:                                              ; preds = %229, %223
  %232 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 47
  store i32 1, ptr %232, align 8, !tbaa !24
  br label %319

233:                                              ; preds = %209
  %234 = load ptr, ptr %5, align 8, !tbaa !9
  %235 = getelementptr inbounds ptr, ptr %234, i64 1
  %236 = load ptr, ptr %235, align 8, !tbaa !9
  %237 = call i32 @strcmp(ptr noundef %236, ptr noundef @.str.4) #11
  %238 = icmp eq i32 %237, 0
  br i1 %238, label %239, label %264

239:                                              ; preds = %233
  %240 = load ptr, ptr %5, align 8, !tbaa !9
  %241 = getelementptr inbounds ptr, ptr %240, i64 2
  %242 = load ptr, ptr %241, align 8, !tbaa !9
  %243 = call i32 @strcmp(ptr noundef %242, ptr noundef @.str.5) #11
  %244 = icmp eq i32 %243, 0
  br i1 %244, label %245, label %247

245:                                              ; preds = %239
  %246 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  store i32 1, ptr %246, align 4, !tbaa !18
  store i32 12, ptr %10, align 4, !tbaa !5
  br label %247

247:                                              ; preds = %245, %239
  %248 = load ptr, ptr %5, align 8, !tbaa !9
  %249 = getelementptr inbounds ptr, ptr %248, i64 2
  %250 = load ptr, ptr %249, align 8, !tbaa !9
  %251 = call i32 @strcmp(ptr noundef %250, ptr noundef @.str.6) #11
  %252 = icmp eq i32 %251, 0
  br i1 %252, label %253, label %255

253:                                              ; preds = %247
  %254 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  store i32 1, ptr %254, align 8, !tbaa !19
  store i32 12, ptr %10, align 4, !tbaa !5
  br label %255

255:                                              ; preds = %253, %247
  %256 = load ptr, ptr %5, align 8, !tbaa !9
  %257 = getelementptr inbounds ptr, ptr %256, i64 2
  %258 = load ptr, ptr %257, align 8, !tbaa !9
  %259 = call i32 @strcmp(ptr noundef %258, ptr noundef @.str.7) #11
  %260 = icmp eq i32 %259, 0
  br i1 %260, label %261, label %263

261:                                              ; preds = %255
  %262 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  store i32 1, ptr %262, align 4, !tbaa !20
  store i32 12, ptr %10, align 4, !tbaa !5
  br label %263

263:                                              ; preds = %261, %255
  br label %318

264:                                              ; preds = %233
  %265 = load ptr, ptr %5, align 8, !tbaa !9
  %266 = getelementptr inbounds ptr, ptr %265, i64 1
  %267 = load ptr, ptr %266, align 8, !tbaa !9
  %268 = call i32 @strcmp(ptr noundef %267, ptr noundef @.str.8) #11
  %269 = icmp eq i32 %268, 0
  br i1 %269, label %270, label %278

270:                                              ; preds = %264
  %271 = load ptr, ptr %5, align 8, !tbaa !9
  %272 = getelementptr inbounds ptr, ptr %271, i64 2
  %273 = load ptr, ptr %272, align 8, !tbaa !9
  %274 = call i32 @strcmp(ptr noundef %273, ptr noundef @.str.5) #11
  %275 = icmp eq i32 %274, 0
  br i1 %275, label %276, label %278

276:                                              ; preds = %270
  %277 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  store i32 1, ptr %277, align 4, !tbaa !21
  store i32 2, ptr %10, align 4, !tbaa !5
  br label %317

278:                                              ; preds = %270, %264
  %279 = load ptr, ptr %5, align 8, !tbaa !9
  %280 = getelementptr inbounds ptr, ptr %279, i64 1
  %281 = load ptr, ptr %280, align 8, !tbaa !9
  %282 = call i32 @strcmp(ptr noundef %281, ptr noundef @.str.8) #11
  %283 = icmp eq i32 %282, 0
  br i1 %283, label %284, label %298

284:                                              ; preds = %278
  %285 = load ptr, ptr %5, align 8, !tbaa !9
  %286 = getelementptr inbounds ptr, ptr %285, i64 2
  %287 = load ptr, ptr %286, align 8, !tbaa !9
  %288 = call i32 @strcmp(ptr noundef %287, ptr noundef @.str.2) #11
  %289 = icmp eq i32 %288, 0
  br i1 %289, label %290, label %298

290:                                              ; preds = %284
  %291 = load ptr, ptr %5, align 8, !tbaa !9
  %292 = getelementptr inbounds ptr, ptr %291, i64 17
  %293 = load ptr, ptr %292, align 8, !tbaa !9
  %294 = call i32 @atoi(ptr noundef %293) #11
  %295 = icmp sgt i32 %294, 0
  br i1 %295, label %296, label %298

296:                                              ; preds = %290
  %297 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  store i32 1, ptr %297, align 8, !tbaa !22
  store i32 3, ptr %10, align 4, !tbaa !5
  br label %316

298:                                              ; preds = %290, %284, %278
  %299 = load ptr, ptr %5, align 8, !tbaa !9
  %300 = getelementptr inbounds ptr, ptr %299, i64 1
  %301 = load ptr, ptr %300, align 8, !tbaa !9
  %302 = call i32 @strcmp(ptr noundef %301, ptr noundef @.str.9) #11
  %303 = icmp eq i32 %302, 0
  br i1 %303, label %304, label %312

304:                                              ; preds = %298
  %305 = load ptr, ptr %5, align 8, !tbaa !9
  %306 = getelementptr inbounds ptr, ptr %305, i64 2
  %307 = load ptr, ptr %306, align 8, !tbaa !9
  %308 = call i32 @strcmp(ptr noundef %307, ptr noundef @.str.5) #11
  %309 = icmp eq i32 %308, 0
  br i1 %309, label %310, label %312

310:                                              ; preds = %304
  %311 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  store i32 1, ptr %311, align 4, !tbaa !23
  store i32 2, ptr %10, align 4, !tbaa !5
  br label %315

312:                                              ; preds = %304, %298
  %313 = load ptr, ptr %6, align 8, !tbaa !9
  %314 = call i32 @char_to_libxsmm_datatype(ptr noundef %313)
  store i32 %314, ptr %10, align 4, !tbaa !5
  br label %315

315:                                              ; preds = %312, %310
  br label %316

316:                                              ; preds = %315, %296
  br label %317

317:                                              ; preds = %316, %276
  br label %318

318:                                              ; preds = %317, %263
  br label %319

319:                                              ; preds = %318, %231
  br label %320

320:                                              ; preds = %319, %206
  %321 = load ptr, ptr %7, align 8, !tbaa !9
  %322 = call i32 @char_to_libxsmm_datatype(ptr noundef %321)
  store i32 %322, ptr %11, align 4, !tbaa !5
  %323 = load ptr, ptr %8, align 8, !tbaa !9
  %324 = call i32 @char_to_libxsmm_datatype(ptr noundef %323)
  store i32 %324, ptr %12, align 4, !tbaa !5
  %325 = load ptr, ptr %9, align 8, !tbaa !9
  %326 = call i32 @char_to_libxsmm_datatype(ptr noundef %325)
  store i32 %326, ptr %13, align 4, !tbaa !5
  %327 = load ptr, ptr %5, align 8, !tbaa !9
  %328 = getelementptr inbounds ptr, ptr %327, i64 5
  %329 = load ptr, ptr %328, align 8, !tbaa !9
  %330 = call i32 @atoi(ptr noundef %329) #11
  store i32 %330, ptr %17, align 4, !tbaa !5
  %331 = load ptr, ptr %5, align 8, !tbaa !9
  %332 = getelementptr inbounds ptr, ptr %331, i64 6
  %333 = load ptr, ptr %332, align 8, !tbaa !9
  %334 = call i32 @atoi(ptr noundef %333) #11
  store i32 %334, ptr %18, align 4, !tbaa !5
  %335 = load ptr, ptr %5, align 8, !tbaa !9
  %336 = getelementptr inbounds ptr, ptr %335, i64 7
  %337 = load ptr, ptr %336, align 8, !tbaa !9
  %338 = call i32 @atoi(ptr noundef %337) #11
  store i32 %338, ptr %19, align 4, !tbaa !5
  %339 = load ptr, ptr %5, align 8, !tbaa !9
  %340 = getelementptr inbounds ptr, ptr %339, i64 8
  %341 = load ptr, ptr %340, align 8, !tbaa !9
  %342 = call i32 @atoi(ptr noundef %341) #11
  store i32 %342, ptr %14, align 4, !tbaa !5
  %343 = load ptr, ptr %5, align 8, !tbaa !9
  %344 = getelementptr inbounds ptr, ptr %343, i64 9
  %345 = load ptr, ptr %344, align 8, !tbaa !9
  %346 = call i32 @atoi(ptr noundef %345) #11
  store i32 %346, ptr %15, align 4, !tbaa !5
  %347 = load ptr, ptr %5, align 8, !tbaa !9
  %348 = getelementptr inbounds ptr, ptr %347, i64 10
  %349 = load ptr, ptr %348, align 8, !tbaa !9
  %350 = call i32 @atoi(ptr noundef %349) #11
  store i32 %350, ptr %16, align 4, !tbaa !5
  %351 = load ptr, ptr %5, align 8, !tbaa !9
  %352 = getelementptr inbounds ptr, ptr %351, i64 11
  %353 = load ptr, ptr %352, align 8, !tbaa !9
  %354 = call double @atof(ptr noundef %353) #11
  store double %354, ptr %27, align 8, !tbaa !11
  %355 = load ptr, ptr %5, align 8, !tbaa !9
  %356 = getelementptr inbounds ptr, ptr %355, i64 12
  %357 = load ptr, ptr %356, align 8, !tbaa !9
  %358 = call double @atof(ptr noundef %357) #11
  store double %358, ptr %28, align 8, !tbaa !11
  %359 = load ptr, ptr %5, align 8, !tbaa !9
  %360 = getelementptr inbounds ptr, ptr %359, i64 13
  %361 = load ptr, ptr %360, align 8, !tbaa !9
  %362 = call i32 @atoi(ptr noundef %361) #11
  store i32 %362, ptr %20, align 4, !tbaa !5
  %363 = load ptr, ptr %5, align 8, !tbaa !9
  %364 = getelementptr inbounds ptr, ptr %363, i64 14
  %365 = load ptr, ptr %364, align 8, !tbaa !9
  %366 = call i32 @atoi(ptr noundef %365) #11
  store i32 %366, ptr %21, align 4, !tbaa !5
  %367 = load ptr, ptr %5, align 8, !tbaa !9
  %368 = getelementptr inbounds ptr, ptr %367, i64 15
  %369 = load ptr, ptr %368, align 8, !tbaa !9
  %370 = call i32 @atoi(ptr noundef %369) #11
  store i32 %370, ptr %22, align 4, !tbaa !5
  %371 = load ptr, ptr %5, align 8, !tbaa !9
  %372 = getelementptr inbounds ptr, ptr %371, i64 16
  %373 = load ptr, ptr %372, align 8, !tbaa !9
  %374 = call i32 @atoi(ptr noundef %373) #11
  store i32 %374, ptr %23, align 4, !tbaa !5
  %375 = load ptr, ptr %5, align 8, !tbaa !9
  %376 = getelementptr inbounds ptr, ptr %375, i64 17
  %377 = load ptr, ptr %376, align 8, !tbaa !9
  %378 = call i32 @atoi(ptr noundef %377) #11
  store i32 %378, ptr %24, align 4, !tbaa !5
  %379 = load ptr, ptr %5, align 8, !tbaa !9
  %380 = getelementptr inbounds ptr, ptr %379, i64 18
  %381 = load ptr, ptr %380, align 8, !tbaa !9
  %382 = call i32 @atoi(ptr noundef %381) #11
  store i32 %382, ptr %25, align 4, !tbaa !5
  %383 = load ptr, ptr %5, align 8, !tbaa !9
  %384 = getelementptr inbounds ptr, ptr %383, i64 19
  %385 = load ptr, ptr %384, align 8, !tbaa !9
  %386 = call i32 @atoi(ptr noundef %385) #11
  store i32 %386, ptr %26, align 4, !tbaa !5
  %387 = load ptr, ptr %5, align 8, !tbaa !9
  %388 = getelementptr inbounds ptr, ptr %387, i64 20
  %389 = load ptr, ptr %388, align 8, !tbaa !9
  %390 = call i32 @strcmp(ptr noundef @.str.10, ptr noundef %389) #11
  %391 = icmp eq i32 %390, 0
  br i1 %391, label %392, label %393

392:                                              ; preds = %320
  store i32 0, ptr %43, align 4, !tbaa !5
  br label %402

393:                                              ; preds = %320
  %394 = load ptr, ptr %5, align 8, !tbaa !9
  %395 = getelementptr inbounds ptr, ptr %394, i64 20
  %396 = load ptr, ptr %395, align 8, !tbaa !9
  %397 = call i32 @strcmp(ptr noundef @.str.11, ptr noundef %396) #11
  %398 = icmp eq i32 %397, 0
  br i1 %398, label %399, label %400

399:                                              ; preds = %393
  store i32 1, ptr %43, align 4, !tbaa !5
  br label %401

400:                                              ; preds = %393
  call void @print_help()
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

401:                                              ; preds = %399
  br label %402

402:                                              ; preds = %401, %392
  %403 = load ptr, ptr %5, align 8, !tbaa !9
  %404 = getelementptr inbounds ptr, ptr %403, i64 21
  %405 = load ptr, ptr %404, align 8, !tbaa !9
  %406 = call i32 @strcmp(ptr noundef @.str.12, ptr noundef %405) #11
  %407 = icmp eq i32 %406, 0
  br i1 %407, label %408, label %409

408:                                              ; preds = %402
  store i32 0, ptr %30, align 4, !tbaa !5
  br label %442

409:                                              ; preds = %402
  %410 = load ptr, ptr %5, align 8, !tbaa !9
  %411 = getelementptr inbounds ptr, ptr %410, i64 21
  %412 = load ptr, ptr %411, align 8, !tbaa !9
  %413 = call i32 @strcmp(ptr noundef @.str.13, ptr noundef %412) #11
  %414 = icmp eq i32 %413, 0
  br i1 %414, label %415, label %416

415:                                              ; preds = %409
  store i32 1, ptr %30, align 4, !tbaa !5
  br label %441

416:                                              ; preds = %409
  %417 = load ptr, ptr %5, align 8, !tbaa !9
  %418 = getelementptr inbounds ptr, ptr %417, i64 21
  %419 = load ptr, ptr %418, align 8, !tbaa !9
  %420 = call i32 @strcmp(ptr noundef @.str.14, ptr noundef %419) #11
  %421 = icmp eq i32 %420, 0
  br i1 %421, label %422, label %423

422:                                              ; preds = %416
  store i32 2, ptr %30, align 4, !tbaa !5
  br label %440

423:                                              ; preds = %416
  %424 = load ptr, ptr %5, align 8, !tbaa !9
  %425 = getelementptr inbounds ptr, ptr %424, i64 21
  %426 = load ptr, ptr %425, align 8, !tbaa !9
  %427 = call i32 @strcmp(ptr noundef @.str.15, ptr noundef %426) #11
  %428 = icmp eq i32 %427, 0
  br i1 %428, label %429, label %430

429:                                              ; preds = %423
  store i32 3, ptr %30, align 4, !tbaa !5
  br label %439

430:                                              ; preds = %423
  %431 = load ptr, ptr %5, align 8, !tbaa !9
  %432 = getelementptr inbounds ptr, ptr %431, i64 21
  %433 = load ptr, ptr %432, align 8, !tbaa !9
  %434 = call i32 @strcmp(ptr noundef @.str.16, ptr noundef %433) #11
  %435 = icmp eq i32 %434, 0
  br i1 %435, label %436, label %437

436:                                              ; preds = %430
  store i32 4, ptr %30, align 4, !tbaa !5
  br label %438

437:                                              ; preds = %430
  call void @print_help()
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

438:                                              ; preds = %436
  br label %439

439:                                              ; preds = %438, %429
  br label %440

440:                                              ; preds = %439, %422
  br label %441

441:                                              ; preds = %440, %415
  br label %442

442:                                              ; preds = %441, %408
  %443 = load i32, ptr %30, align 4, !tbaa !5
  %444 = icmp eq i32 %443, 4
  br i1 %444, label %445, label %451

445:                                              ; preds = %442
  %446 = load ptr, ptr %5, align 8, !tbaa !9
  %447 = getelementptr inbounds ptr, ptr %446, i64 22
  %448 = load ptr, ptr %447, align 8, !tbaa !9
  %449 = call double @atof(ptr noundef %448) #11
  %450 = fptrunc double %449 to float
  store float %450, ptr %48, align 4, !tbaa !13
  br label %456

451:                                              ; preds = %442
  %452 = load ptr, ptr %5, align 8, !tbaa !9
  %453 = getelementptr inbounds ptr, ptr %452, i64 22
  %454 = load ptr, ptr %453, align 8, !tbaa !9
  %455 = call i32 @atoi(ptr noundef %454) #11
  store i32 %455, ptr %29, align 4, !tbaa !5
  br label %456

456:                                              ; preds = %451, %445
  %457 = load ptr, ptr %5, align 8, !tbaa !9
  %458 = getelementptr inbounds ptr, ptr %457, i64 23
  %459 = load ptr, ptr %458, align 8, !tbaa !9
  %460 = call i32 @atoi(ptr noundef %459) #11
  store i32 %460, ptr %31, align 4, !tbaa !5
  %461 = load ptr, ptr %5, align 8, !tbaa !9
  %462 = getelementptr inbounds ptr, ptr %461, i64 24
  %463 = load ptr, ptr %462, align 8, !tbaa !9
  %464 = call i32 @atoi(ptr noundef %463) #11
  store i32 %464, ptr %40, align 4, !tbaa !5
  %465 = load i32, ptr %4, align 4, !tbaa !5
  %466 = icmp sge i32 %465, 26
  br i1 %466, label %467, label %472

467:                                              ; preds = %456
  %468 = load ptr, ptr %5, align 8, !tbaa !9
  %469 = getelementptr inbounds ptr, ptr %468, i64 25
  %470 = load ptr, ptr %469, align 8, !tbaa !9
  %471 = call i32 @atoi(ptr noundef %470) #11
  store i32 %471, ptr %39, align 4, !tbaa !5
  br label %473

472:                                              ; preds = %456
  store i32 0, ptr %39, align 4, !tbaa !5
  br label %473

473:                                              ; preds = %472, %467
  %474 = load i32, ptr %4, align 4, !tbaa !5
  %475 = icmp sge i32 %474, 27
  br i1 %475, label %476, label %481

476:                                              ; preds = %473
  %477 = load ptr, ptr %5, align 8, !tbaa !9
  %478 = getelementptr inbounds ptr, ptr %477, i64 26
  %479 = load ptr, ptr %478, align 8, !tbaa !9
  %480 = call i32 @atoi(ptr noundef %479) #11
  store i32 %480, ptr %41, align 4, !tbaa !5
  br label %481

481:                                              ; preds = %476, %473
  %482 = load i32, ptr %4, align 4, !tbaa !5
  %483 = icmp sge i32 %482, 28
  br i1 %483, label %484, label %489

484:                                              ; preds = %481
  %485 = load ptr, ptr %5, align 8, !tbaa !9
  %486 = getelementptr inbounds ptr, ptr %485, i64 27
  %487 = load ptr, ptr %486, align 8, !tbaa !9
  %488 = call i32 @atoi(ptr noundef %487) #11
  store i32 %488, ptr %42, align 4, !tbaa !5
  br label %489

489:                                              ; preds = %484, %481
  store i32 0, ptr %33, align 4, !tbaa !5
  store i32 1, ptr %36, align 4, !tbaa !5
  br label %774

490:                                              ; preds = %184
  %491 = load i32, ptr %4, align 4, !tbaa !5
  %492 = icmp eq i32 %491, 20
  br i1 %492, label %502, label %493

493:                                              ; preds = %490
  %494 = load i32, ptr %4, align 4, !tbaa !5
  %495 = icmp eq i32 %494, 21
  br i1 %495, label %502, label %496

496:                                              ; preds = %493
  %497 = load i32, ptr %4, align 4, !tbaa !5
  %498 = icmp eq i32 %497, 22
  br i1 %498, label %502, label %499

499:                                              ; preds = %496
  %500 = load i32, ptr %4, align 4, !tbaa !5
  %501 = icmp eq i32 %500, 23
  br i1 %501, label %502, label %772

502:                                              ; preds = %499, %496, %493, %490
  store i32 1, ptr %33, align 4, !tbaa !5
  %503 = load ptr, ptr %5, align 8, !tbaa !9
  %504 = getelementptr inbounds ptr, ptr %503, i64 1
  %505 = load ptr, ptr %504, align 8, !tbaa !9
  store ptr %505, ptr %6, align 8, !tbaa !9
  %506 = load ptr, ptr %5, align 8, !tbaa !9
  %507 = getelementptr inbounds ptr, ptr %506, i64 2
  %508 = load ptr, ptr %507, align 8, !tbaa !9
  store ptr %508, ptr %7, align 8, !tbaa !9
  %509 = load ptr, ptr %5, align 8, !tbaa !9
  %510 = getelementptr inbounds ptr, ptr %509, i64 3
  %511 = load ptr, ptr %510, align 8, !tbaa !9
  store ptr %511, ptr %8, align 8, !tbaa !9
  %512 = load ptr, ptr %5, align 8, !tbaa !9
  %513 = getelementptr inbounds ptr, ptr %512, i64 4
  %514 = load ptr, ptr %513, align 8, !tbaa !9
  store ptr %514, ptr %9, align 8, !tbaa !9
  %515 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 47
  store i32 0, ptr %515, align 8, !tbaa !24
  %516 = load ptr, ptr %5, align 8, !tbaa !9
  %517 = getelementptr inbounds ptr, ptr %516, i64 1
  %518 = load ptr, ptr %517, align 8, !tbaa !9
  %519 = call i32 @strcmp(ptr noundef %518, ptr noundef @.str) #11
  %520 = icmp eq i32 %519, 0
  br i1 %520, label %521, label %524

521:                                              ; preds = %502
  %522 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 39
  store i32 1, ptr %522, align 8, !tbaa !15
  store i32 12, ptr %10, align 4, !tbaa !5
  %523 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 47
  store i32 1, ptr %523, align 8, !tbaa !24
  br label %635

524:                                              ; preds = %502
  %525 = load ptr, ptr %5, align 8, !tbaa !9
  %526 = getelementptr inbounds ptr, ptr %525, i64 1
  %527 = load ptr, ptr %526, align 8, !tbaa !9
  %528 = call i32 @strcmp(ptr noundef %527, ptr noundef @.str.1) #11
  %529 = icmp eq i32 %528, 0
  br i1 %529, label %530, label %548

530:                                              ; preds = %524
  %531 = load ptr, ptr %5, align 8, !tbaa !9
  %532 = getelementptr inbounds ptr, ptr %531, i64 2
  %533 = load ptr, ptr %532, align 8, !tbaa !9
  %534 = call i32 @strcmp(ptr noundef %533, ptr noundef @.str.2) #11
  %535 = icmp eq i32 %534, 0
  br i1 %535, label %536, label %538

536:                                              ; preds = %530
  %537 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 39
  store i32 1, ptr %537, align 8, !tbaa !15
  store i32 13, ptr %10, align 4, !tbaa !5
  br label %538

538:                                              ; preds = %536, %530
  %539 = load ptr, ptr %5, align 8, !tbaa !9
  %540 = getelementptr inbounds ptr, ptr %539, i64 2
  %541 = load ptr, ptr %540, align 8, !tbaa !9
  %542 = call i32 @strcmp(ptr noundef %541, ptr noundef @.str.3) #11
  %543 = icmp eq i32 %542, 0
  br i1 %543, label %544, label %546

544:                                              ; preds = %538
  %545 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  store i32 1, ptr %545, align 8, !tbaa !17
  store i32 12, ptr %10, align 4, !tbaa !5
  br label %546

546:                                              ; preds = %544, %538
  %547 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 47
  store i32 1, ptr %547, align 8, !tbaa !24
  br label %634

548:                                              ; preds = %524
  %549 = load ptr, ptr %5, align 8, !tbaa !9
  %550 = getelementptr inbounds ptr, ptr %549, i64 1
  %551 = load ptr, ptr %550, align 8, !tbaa !9
  %552 = call i32 @strcmp(ptr noundef %551, ptr noundef @.str.4) #11
  %553 = icmp eq i32 %552, 0
  br i1 %553, label %554, label %579

554:                                              ; preds = %548
  %555 = load ptr, ptr %5, align 8, !tbaa !9
  %556 = getelementptr inbounds ptr, ptr %555, i64 2
  %557 = load ptr, ptr %556, align 8, !tbaa !9
  %558 = call i32 @strcmp(ptr noundef %557, ptr noundef @.str.5) #11
  %559 = icmp eq i32 %558, 0
  br i1 %559, label %560, label %562

560:                                              ; preds = %554
  %561 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  store i32 1, ptr %561, align 4, !tbaa !18
  store i32 12, ptr %10, align 4, !tbaa !5
  br label %562

562:                                              ; preds = %560, %554
  %563 = load ptr, ptr %5, align 8, !tbaa !9
  %564 = getelementptr inbounds ptr, ptr %563, i64 2
  %565 = load ptr, ptr %564, align 8, !tbaa !9
  %566 = call i32 @strcmp(ptr noundef %565, ptr noundef @.str.6) #11
  %567 = icmp eq i32 %566, 0
  br i1 %567, label %568, label %570

568:                                              ; preds = %562
  %569 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  store i32 1, ptr %569, align 8, !tbaa !19
  store i32 12, ptr %10, align 4, !tbaa !5
  br label %570

570:                                              ; preds = %568, %562
  %571 = load ptr, ptr %5, align 8, !tbaa !9
  %572 = getelementptr inbounds ptr, ptr %571, i64 2
  %573 = load ptr, ptr %572, align 8, !tbaa !9
  %574 = call i32 @strcmp(ptr noundef %573, ptr noundef @.str.7) #11
  %575 = icmp eq i32 %574, 0
  br i1 %575, label %576, label %578

576:                                              ; preds = %570
  %577 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  store i32 1, ptr %577, align 4, !tbaa !20
  store i32 12, ptr %10, align 4, !tbaa !5
  br label %578

578:                                              ; preds = %576, %570
  br label %633

579:                                              ; preds = %548
  %580 = load ptr, ptr %5, align 8, !tbaa !9
  %581 = getelementptr inbounds ptr, ptr %580, i64 1
  %582 = load ptr, ptr %581, align 8, !tbaa !9
  %583 = call i32 @strcmp(ptr noundef %582, ptr noundef @.str.8) #11
  %584 = icmp eq i32 %583, 0
  br i1 %584, label %585, label %593

585:                                              ; preds = %579
  %586 = load ptr, ptr %5, align 8, !tbaa !9
  %587 = getelementptr inbounds ptr, ptr %586, i64 2
  %588 = load ptr, ptr %587, align 8, !tbaa !9
  %589 = call i32 @strcmp(ptr noundef %588, ptr noundef @.str.5) #11
  %590 = icmp eq i32 %589, 0
  br i1 %590, label %591, label %593

591:                                              ; preds = %585
  %592 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  store i32 1, ptr %592, align 4, !tbaa !21
  store i32 2, ptr %10, align 4, !tbaa !5
  br label %632

593:                                              ; preds = %585, %579
  %594 = load ptr, ptr %5, align 8, !tbaa !9
  %595 = getelementptr inbounds ptr, ptr %594, i64 1
  %596 = load ptr, ptr %595, align 8, !tbaa !9
  %597 = call i32 @strcmp(ptr noundef %596, ptr noundef @.str.8) #11
  %598 = icmp eq i32 %597, 0
  br i1 %598, label %599, label %613

599:                                              ; preds = %593
  %600 = load ptr, ptr %5, align 8, !tbaa !9
  %601 = getelementptr inbounds ptr, ptr %600, i64 2
  %602 = load ptr, ptr %601, align 8, !tbaa !9
  %603 = call i32 @strcmp(ptr noundef %602, ptr noundef @.str.2) #11
  %604 = icmp eq i32 %603, 0
  br i1 %604, label %605, label %613

605:                                              ; preds = %599
  %606 = load ptr, ptr %5, align 8, !tbaa !9
  %607 = getelementptr inbounds ptr, ptr %606, i64 12
  %608 = load ptr, ptr %607, align 8, !tbaa !9
  %609 = call i32 @atoi(ptr noundef %608) #11
  %610 = icmp sgt i32 %609, 0
  br i1 %610, label %611, label %613

611:                                              ; preds = %605
  %612 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  store i32 1, ptr %612, align 8, !tbaa !22
  store i32 3, ptr %10, align 4, !tbaa !5
  br label %631

613:                                              ; preds = %605, %599, %593
  %614 = load ptr, ptr %5, align 8, !tbaa !9
  %615 = getelementptr inbounds ptr, ptr %614, i64 1
  %616 = load ptr, ptr %615, align 8, !tbaa !9
  %617 = call i32 @strcmp(ptr noundef %616, ptr noundef @.str.9) #11
  %618 = icmp eq i32 %617, 0
  br i1 %618, label %619, label %627

619:                                              ; preds = %613
  %620 = load ptr, ptr %5, align 8, !tbaa !9
  %621 = getelementptr inbounds ptr, ptr %620, i64 2
  %622 = load ptr, ptr %621, align 8, !tbaa !9
  %623 = call i32 @strcmp(ptr noundef %622, ptr noundef @.str.5) #11
  %624 = icmp eq i32 %623, 0
  br i1 %624, label %625, label %627

625:                                              ; preds = %619
  %626 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  store i32 1, ptr %626, align 4, !tbaa !23
  store i32 2, ptr %10, align 4, !tbaa !5
  br label %630

627:                                              ; preds = %619, %613
  %628 = load ptr, ptr %6, align 8, !tbaa !9
  %629 = call i32 @char_to_libxsmm_datatype(ptr noundef %628)
  store i32 %629, ptr %10, align 4, !tbaa !5
  br label %630

630:                                              ; preds = %627, %625
  br label %631

631:                                              ; preds = %630, %611
  br label %632

632:                                              ; preds = %631, %591
  br label %633

633:                                              ; preds = %632, %578
  br label %634

634:                                              ; preds = %633, %546
  br label %635

635:                                              ; preds = %634, %521
  %636 = load ptr, ptr %7, align 8, !tbaa !9
  %637 = call i32 @char_to_libxsmm_datatype(ptr noundef %636)
  store i32 %637, ptr %11, align 4, !tbaa !5
  %638 = load ptr, ptr %8, align 8, !tbaa !9
  %639 = call i32 @char_to_libxsmm_datatype(ptr noundef %638)
  store i32 %639, ptr %12, align 4, !tbaa !5
  %640 = load ptr, ptr %9, align 8, !tbaa !9
  %641 = call i32 @char_to_libxsmm_datatype(ptr noundef %640)
  store i32 %641, ptr %13, align 4, !tbaa !5
  %642 = load ptr, ptr %5, align 8, !tbaa !9
  %643 = getelementptr inbounds ptr, ptr %642, i64 5
  %644 = load ptr, ptr %643, align 8, !tbaa !9
  store ptr %644, ptr %34, align 8, !tbaa !9
  %645 = load ptr, ptr %5, align 8, !tbaa !9
  %646 = getelementptr inbounds ptr, ptr %645, i64 6
  %647 = load ptr, ptr %646, align 8, !tbaa !9
  %648 = call double @atof(ptr noundef %647) #11
  store double %648, ptr %27, align 8, !tbaa !11
  %649 = load ptr, ptr %5, align 8, !tbaa !9
  %650 = getelementptr inbounds ptr, ptr %649, i64 7
  %651 = load ptr, ptr %650, align 8, !tbaa !9
  %652 = call double @atof(ptr noundef %651) #11
  store double %652, ptr %28, align 8, !tbaa !11
  %653 = load ptr, ptr %5, align 8, !tbaa !9
  %654 = getelementptr inbounds ptr, ptr %653, i64 8
  %655 = load ptr, ptr %654, align 8, !tbaa !9
  %656 = call i32 @atoi(ptr noundef %655) #11
  store i32 %656, ptr %20, align 4, !tbaa !5
  %657 = load ptr, ptr %5, align 8, !tbaa !9
  %658 = getelementptr inbounds ptr, ptr %657, i64 9
  %659 = load ptr, ptr %658, align 8, !tbaa !9
  %660 = call i32 @atoi(ptr noundef %659) #11
  store i32 %660, ptr %21, align 4, !tbaa !5
  %661 = load ptr, ptr %5, align 8, !tbaa !9
  %662 = getelementptr inbounds ptr, ptr %661, i64 10
  %663 = load ptr, ptr %662, align 8, !tbaa !9
  %664 = call i32 @atoi(ptr noundef %663) #11
  store i32 %664, ptr %22, align 4, !tbaa !5
  %665 = load ptr, ptr %5, align 8, !tbaa !9
  %666 = getelementptr inbounds ptr, ptr %665, i64 11
  %667 = load ptr, ptr %666, align 8, !tbaa !9
  %668 = call i32 @atoi(ptr noundef %667) #11
  store i32 %668, ptr %23, align 4, !tbaa !5
  %669 = load ptr, ptr %5, align 8, !tbaa !9
  %670 = getelementptr inbounds ptr, ptr %669, i64 12
  %671 = load ptr, ptr %670, align 8, !tbaa !9
  %672 = call i32 @atoi(ptr noundef %671) #11
  store i32 %672, ptr %24, align 4, !tbaa !5
  %673 = load ptr, ptr %5, align 8, !tbaa !9
  %674 = getelementptr inbounds ptr, ptr %673, i64 13
  %675 = load ptr, ptr %674, align 8, !tbaa !9
  %676 = call i32 @atoi(ptr noundef %675) #11
  store i32 %676, ptr %25, align 4, !tbaa !5
  %677 = load ptr, ptr %5, align 8, !tbaa !9
  %678 = getelementptr inbounds ptr, ptr %677, i64 14
  %679 = load ptr, ptr %678, align 8, !tbaa !9
  %680 = call i32 @atoi(ptr noundef %679) #11
  store i32 %680, ptr %26, align 4, !tbaa !5
  %681 = load ptr, ptr %5, align 8, !tbaa !9
  %682 = getelementptr inbounds ptr, ptr %681, i64 15
  %683 = load ptr, ptr %682, align 8, !tbaa !9
  %684 = call i32 @strcmp(ptr noundef @.str.12, ptr noundef %683) #11
  %685 = icmp eq i32 %684, 0
  br i1 %685, label %686, label %687

686:                                              ; preds = %635
  store i32 0, ptr %30, align 4, !tbaa !5
  br label %720

687:                                              ; preds = %635
  %688 = load ptr, ptr %5, align 8, !tbaa !9
  %689 = getelementptr inbounds ptr, ptr %688, i64 15
  %690 = load ptr, ptr %689, align 8, !tbaa !9
  %691 = call i32 @strcmp(ptr noundef @.str.13, ptr noundef %690) #11
  %692 = icmp eq i32 %691, 0
  br i1 %692, label %693, label %694

693:                                              ; preds = %687
  store i32 1, ptr %30, align 4, !tbaa !5
  br label %719

694:                                              ; preds = %687
  %695 = load ptr, ptr %5, align 8, !tbaa !9
  %696 = getelementptr inbounds ptr, ptr %695, i64 15
  %697 = load ptr, ptr %696, align 8, !tbaa !9
  %698 = call i32 @strcmp(ptr noundef @.str.14, ptr noundef %697) #11
  %699 = icmp eq i32 %698, 0
  br i1 %699, label %700, label %701

700:                                              ; preds = %694
  store i32 2, ptr %30, align 4, !tbaa !5
  br label %718

701:                                              ; preds = %694
  %702 = load ptr, ptr %5, align 8, !tbaa !9
  %703 = getelementptr inbounds ptr, ptr %702, i64 15
  %704 = load ptr, ptr %703, align 8, !tbaa !9
  %705 = call i32 @strcmp(ptr noundef @.str.15, ptr noundef %704) #11
  %706 = icmp eq i32 %705, 0
  br i1 %706, label %707, label %708

707:                                              ; preds = %701
  store i32 3, ptr %30, align 4, !tbaa !5
  br label %717

708:                                              ; preds = %701
  %709 = load ptr, ptr %5, align 8, !tbaa !9
  %710 = getelementptr inbounds ptr, ptr %709, i64 15
  %711 = load ptr, ptr %710, align 8, !tbaa !9
  %712 = call i32 @strcmp(ptr noundef @.str.16, ptr noundef %711) #11
  %713 = icmp eq i32 %712, 0
  br i1 %713, label %714, label %715

714:                                              ; preds = %708
  store i32 4, ptr %30, align 4, !tbaa !5
  br label %716

715:                                              ; preds = %708
  call void @print_help()
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

716:                                              ; preds = %714
  br label %717

717:                                              ; preds = %716, %707
  br label %718

718:                                              ; preds = %717, %700
  br label %719

719:                                              ; preds = %718, %693
  br label %720

720:                                              ; preds = %719, %686
  %721 = load i32, ptr %30, align 4, !tbaa !5
  %722 = icmp eq i32 %721, 4
  br i1 %722, label %723, label %729

723:                                              ; preds = %720
  %724 = load ptr, ptr %5, align 8, !tbaa !9
  %725 = getelementptr inbounds ptr, ptr %724, i64 16
  %726 = load ptr, ptr %725, align 8, !tbaa !9
  %727 = call double @atof(ptr noundef %726) #11
  %728 = fptrunc double %727 to float
  store float %728, ptr %48, align 4, !tbaa !13
  br label %734

729:                                              ; preds = %720
  %730 = load ptr, ptr %5, align 8, !tbaa !9
  %731 = getelementptr inbounds ptr, ptr %730, i64 16
  %732 = load ptr, ptr %731, align 8, !tbaa !9
  %733 = call i32 @atoi(ptr noundef %732) #11
  store i32 %733, ptr %29, align 4, !tbaa !5
  br label %734

734:                                              ; preds = %729, %723
  %735 = load ptr, ptr %5, align 8, !tbaa !9
  %736 = getelementptr inbounds ptr, ptr %735, i64 17
  %737 = load ptr, ptr %736, align 8, !tbaa !9
  %738 = call i32 @atoi(ptr noundef %737) #11
  store i32 %738, ptr %31, align 4, !tbaa !5
  %739 = load ptr, ptr %5, align 8, !tbaa !9
  %740 = getelementptr inbounds ptr, ptr %739, i64 18
  %741 = load ptr, ptr %740, align 8, !tbaa !9
  %742 = call i32 @atoi(ptr noundef %741) #11
  store i32 %742, ptr %40, align 4, !tbaa !5
  %743 = load ptr, ptr %5, align 8, !tbaa !9
  %744 = getelementptr inbounds ptr, ptr %743, i64 19
  %745 = load ptr, ptr %744, align 8, !tbaa !9
  %746 = call i32 @atoi(ptr noundef %745) #11
  store i32 %746, ptr %36, align 4, !tbaa !5
  %747 = load i32, ptr %4, align 4, !tbaa !5
  %748 = icmp sge i32 %747, 21
  br i1 %748, label %749, label %754

749:                                              ; preds = %734
  %750 = load ptr, ptr %5, align 8, !tbaa !9
  %751 = getelementptr inbounds ptr, ptr %750, i64 20
  %752 = load ptr, ptr %751, align 8, !tbaa !9
  %753 = call i32 @atoi(ptr noundef %752) #11
  store i32 %753, ptr %39, align 4, !tbaa !5
  br label %755

754:                                              ; preds = %734
  store i32 0, ptr %39, align 4, !tbaa !5
  br label %755

755:                                              ; preds = %754, %749
  %756 = load i32, ptr %4, align 4, !tbaa !5
  %757 = icmp sge i32 %756, 22
  br i1 %757, label %758, label %763

758:                                              ; preds = %755
  %759 = load ptr, ptr %5, align 8, !tbaa !9
  %760 = getelementptr inbounds ptr, ptr %759, i64 21
  %761 = load ptr, ptr %760, align 8, !tbaa !9
  %762 = call i32 @atoi(ptr noundef %761) #11
  store i32 %762, ptr %41, align 4, !tbaa !5
  br label %763

763:                                              ; preds = %758, %755
  %764 = load i32, ptr %4, align 4, !tbaa !5
  %765 = icmp sge i32 %764, 23
  br i1 %765, label %766, label %771

766:                                              ; preds = %763
  %767 = load ptr, ptr %5, align 8, !tbaa !9
  %768 = getelementptr inbounds ptr, ptr %767, i64 22
  %769 = load ptr, ptr %768, align 8, !tbaa !9
  %770 = call i32 @atoi(ptr noundef %769) #11
  store i32 %770, ptr %42, align 4, !tbaa !5
  br label %771

771:                                              ; preds = %766, %763
  store i32 0, ptr %43, align 4, !tbaa !5
  br label %773

772:                                              ; preds = %499
  call void @print_help()
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

773:                                              ; preds = %771
  br label %774

774:                                              ; preds = %773, %489
  %775 = load i32, ptr %41, align 4, !tbaa !5
  %776 = icmp ne i32 %775, 0
  br i1 %776, label %780, label %777

777:                                              ; preds = %774
  %778 = load i32, ptr %42, align 4, !tbaa !5
  %779 = icmp ne i32 %778, 0
  br i1 %779, label %780, label %782

780:                                              ; preds = %777, %774
  %781 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

782:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %783 = call ptr @getenv(ptr noundef @.str.18) #10
  store ptr %783, ptr %50, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %784 = load ptr, ptr %50, align 8, !tbaa !9
  %785 = load ptr, ptr %50, align 8, !tbaa !9
  %786 = call ptr @libxsmm_stristr(ptr noundef %785, ptr noundef @.str.19)
  %787 = icmp eq ptr %784, %786
  br i1 %787, label %793, label %788

788:                                              ; preds = %782
  %789 = load ptr, ptr %50, align 8, !tbaa !9
  %790 = load ptr, ptr %50, align 8, !tbaa !9
  %791 = call ptr @libxsmm_stristr(ptr noundef %790, ptr noundef @.str.20)
  %792 = icmp eq ptr %789, %791
  br label %793

793:                                              ; preds = %788, %782
  %794 = phi i1 [ true, %782 ], [ %792, %788 ]
  %795 = zext i1 %794 to i32
  store i32 %795, ptr %51, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %796 = call i32 @libxsmm_cpuid(ptr noundef null)
  store i32 %796, ptr %52, align 4, !tbaa !5
  %797 = load i32, ptr %51, align 4, !tbaa !5
  %798 = icmp ne i32 %797, 0
  br i1 %798, label %807, label %799

799:                                              ; preds = %793
  %800 = load i32, ptr %52, align 4, !tbaa !5
  %801 = icmp slt i32 %800, 1104
  br i1 %801, label %802, label %807

802:                                              ; preds = %799
  %803 = load i32, ptr %39, align 4, !tbaa !5
  %804 = icmp ne i32 %803, 0
  br i1 %804, label %805, label %807

805:                                              ; preds = %802
  %806 = call i32 (ptr, ...) @printf(ptr noundef @.str.21)
  store i32 0, ptr %39, align 4, !tbaa !5
  br label %807

807:                                              ; preds = %805, %802, %799, %793
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  %808 = load i32, ptr %29, align 4, !tbaa !5
  %809 = icmp slt i32 %808, 1
  br i1 %809, label %810, label %811

810:                                              ; preds = %807
  br label %813

811:                                              ; preds = %807
  %812 = load i32, ptr %29, align 4, !tbaa !5
  br label %813

813:                                              ; preds = %811, %810
  %814 = phi i32 [ 1, %810 ], [ %812, %811 ]
  store i32 %814, ptr %29, align 4, !tbaa !5
  %815 = load i32, ptr %30, align 4, !tbaa !5
  %816 = icmp eq i32 %815, 0
  br i1 %816, label %820, label %817

817:                                              ; preds = %813
  %818 = load i32, ptr %30, align 4, !tbaa !5
  %819 = icmp eq i32 %818, 4
  br i1 %819, label %820, label %821

820:                                              ; preds = %817, %813
  br label %823

821:                                              ; preds = %817
  %822 = load i32, ptr %29, align 4, !tbaa !5
  br label %823

823:                                              ; preds = %821, %820
  %824 = phi i32 [ 1, %820 ], [ %822, %821 ]
  store i32 %824, ptr %29, align 4, !tbaa !5
  %825 = load i32, ptr %30, align 4, !tbaa !5
  %826 = icmp eq i32 %825, 0
  br i1 %826, label %830, label %827

827:                                              ; preds = %823
  %828 = load i32, ptr %30, align 4, !tbaa !5
  %829 = icmp eq i32 %828, 4
  br i1 %829, label %830, label %831

830:                                              ; preds = %827, %823
  br label %833

831:                                              ; preds = %827
  %832 = load i32, ptr %31, align 4, !tbaa !5
  br label %833

833:                                              ; preds = %831, %830
  %834 = phi i32 [ 0, %830 ], [ %832, %831 ]
  store i32 %834, ptr %31, align 4, !tbaa !5
  %835 = load double, ptr %27, align 8, !tbaa !11
  %836 = fcmp une double %835, 1.000000e+00
  br i1 %836, label %837, label %840

837:                                              ; preds = %833
  %838 = load ptr, ptr @stderr, align 8, !tbaa !9
  %839 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %838, ptr noundef @.str.22) #10
  call void @exit(i32 noundef 1) #12
  unreachable

840:                                              ; preds = %833
  %841 = load double, ptr %28, align 8, !tbaa !11
  %842 = fcmp une double %841, 0.000000e+00
  br i1 %842, label %843, label %849

843:                                              ; preds = %840
  %844 = load double, ptr %28, align 8, !tbaa !11
  %845 = fcmp une double %844, 1.000000e+00
  br i1 %845, label %846, label %849

846:                                              ; preds = %843
  %847 = load ptr, ptr @stderr, align 8, !tbaa !9
  %848 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %847, ptr noundef @.str.23) #10
  call void @exit(i32 noundef 1) #12
  unreachable

849:                                              ; preds = %843, %840
  %850 = load double, ptr %28, align 8, !tbaa !11
  %851 = fcmp une double %850, 0.000000e+00
  br i1 %851, label %852, label %858

852:                                              ; preds = %849
  %853 = load i32, ptr %26, align 4, !tbaa !5
  %854 = icmp sgt i32 %853, 0
  br i1 %854, label %855, label %858

855:                                              ; preds = %852
  %856 = load ptr, ptr @stderr, align 8, !tbaa !9
  %857 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %856, ptr noundef @.str.24) #10
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  br label %858

858:                                              ; preds = %855, %852, %849
  %859 = load i32, ptr %10, align 4, !tbaa !5
  %860 = icmp eq i32 %859, 0
  br i1 %860, label %861, label %870

861:                                              ; preds = %858
  %862 = load i32, ptr %11, align 4, !tbaa !5
  %863 = icmp eq i32 %862, 0
  br i1 %863, label %864, label %870

864:                                              ; preds = %861
  %865 = load i32, ptr %12, align 4, !tbaa !5
  %866 = icmp eq i32 %865, 0
  br i1 %866, label %867, label %870

867:                                              ; preds = %864
  %868 = load i32, ptr %13, align 4, !tbaa !5
  %869 = icmp eq i32 %868, 0
  br i1 %869, label %1501, label %870

870:                                              ; preds = %867, %864, %861, %858
  %871 = load i32, ptr %10, align 4, !tbaa !5
  %872 = icmp eq i32 %871, 1
  br i1 %872, label %873, label %882

873:                                              ; preds = %870
  %874 = load i32, ptr %11, align 4, !tbaa !5
  %875 = icmp eq i32 %874, 1
  br i1 %875, label %876, label %882

876:                                              ; preds = %873
  %877 = load i32, ptr %12, align 4, !tbaa !5
  %878 = icmp eq i32 %877, 1
  br i1 %878, label %879, label %882

879:                                              ; preds = %876
  %880 = load i32, ptr %13, align 4, !tbaa !5
  %881 = icmp eq i32 %880, 1
  br i1 %881, label %1501, label %882

882:                                              ; preds = %879, %876, %873, %870
  %883 = load i32, ptr %10, align 4, !tbaa !5
  %884 = icmp eq i32 %883, 10
  br i1 %884, label %885, label %894

885:                                              ; preds = %882
  %886 = load i32, ptr %11, align 4, !tbaa !5
  %887 = icmp eq i32 %886, 10
  br i1 %887, label %888, label %894

888:                                              ; preds = %885
  %889 = load i32, ptr %12, align 4, !tbaa !5
  %890 = icmp eq i32 %889, 8
  br i1 %890, label %891, label %894

891:                                              ; preds = %888
  %892 = load i32, ptr %13, align 4, !tbaa !5
  %893 = icmp eq i32 %892, 8
  br i1 %893, label %1501, label %894

894:                                              ; preds = %891, %888, %885, %882
  %895 = load i32, ptr %10, align 4, !tbaa !5
  %896 = icmp eq i32 %895, 13
  br i1 %896, label %897, label %906

897:                                              ; preds = %894
  %898 = load i32, ptr %11, align 4, !tbaa !5
  %899 = icmp eq i32 %898, 13
  br i1 %899, label %900, label %906

900:                                              ; preds = %897
  %901 = load i32, ptr %12, align 4, !tbaa !5
  %902 = icmp eq i32 %901, 8
  br i1 %902, label %903, label %906

903:                                              ; preds = %900
  %904 = load i32, ptr %13, align 4, !tbaa !5
  %905 = icmp eq i32 %904, 8
  br i1 %905, label %1501, label %906

906:                                              ; preds = %903, %900, %897, %894
  %907 = load i32, ptr %10, align 4, !tbaa !5
  %908 = icmp eq i32 %907, 12
  br i1 %908, label %909, label %918

909:                                              ; preds = %906
  %910 = load i32, ptr %11, align 4, !tbaa !5
  %911 = icmp eq i32 %910, 12
  br i1 %911, label %912, label %918

912:                                              ; preds = %909
  %913 = load i32, ptr %12, align 4, !tbaa !5
  %914 = icmp eq i32 %913, 8
  br i1 %914, label %915, label %918

915:                                              ; preds = %912
  %916 = load i32, ptr %13, align 4, !tbaa !5
  %917 = icmp eq i32 %916, 8
  br i1 %917, label %1501, label %918

918:                                              ; preds = %915, %912, %909, %906
  %919 = load i32, ptr %10, align 4, !tbaa !5
  %920 = icmp eq i32 %919, 13
  br i1 %920, label %921, label %930

921:                                              ; preds = %918
  %922 = load i32, ptr %11, align 4, !tbaa !5
  %923 = icmp eq i32 %922, 12
  br i1 %923, label %924, label %930

924:                                              ; preds = %921
  %925 = load i32, ptr %12, align 4, !tbaa !5
  %926 = icmp eq i32 %925, 8
  br i1 %926, label %927, label %930

927:                                              ; preds = %924
  %928 = load i32, ptr %13, align 4, !tbaa !5
  %929 = icmp eq i32 %928, 8
  br i1 %929, label %1501, label %930

930:                                              ; preds = %927, %924, %921, %918
  %931 = load i32, ptr %10, align 4, !tbaa !5
  %932 = icmp eq i32 %931, 12
  br i1 %932, label %933, label %942

933:                                              ; preds = %930
  %934 = load i32, ptr %11, align 4, !tbaa !5
  %935 = icmp eq i32 %934, 13
  br i1 %935, label %936, label %942

936:                                              ; preds = %933
  %937 = load i32, ptr %12, align 4, !tbaa !5
  %938 = icmp eq i32 %937, 8
  br i1 %938, label %939, label %942

939:                                              ; preds = %936
  %940 = load i32, ptr %13, align 4, !tbaa !5
  %941 = icmp eq i32 %940, 8
  br i1 %941, label %1501, label %942

942:                                              ; preds = %939, %936, %933, %930
  %943 = load i32, ptr %10, align 4, !tbaa !5
  %944 = icmp eq i32 %943, 13
  br i1 %944, label %945, label %954

945:                                              ; preds = %942
  %946 = load i32, ptr %11, align 4, !tbaa !5
  %947 = icmp eq i32 %946, 13
  br i1 %947, label %948, label %954

948:                                              ; preds = %945
  %949 = load i32, ptr %12, align 4, !tbaa !5
  %950 = icmp eq i32 %949, 8
  br i1 %950, label %951, label %954

951:                                              ; preds = %948
  %952 = load i32, ptr %13, align 4, !tbaa !5
  %953 = icmp eq i32 %952, 1
  br i1 %953, label %1501, label %954

954:                                              ; preds = %951, %948, %945, %942
  %955 = load i32, ptr %10, align 4, !tbaa !5
  %956 = icmp eq i32 %955, 12
  br i1 %956, label %957, label %966

957:                                              ; preds = %954
  %958 = load i32, ptr %11, align 4, !tbaa !5
  %959 = icmp eq i32 %958, 12
  br i1 %959, label %960, label %966

960:                                              ; preds = %957
  %961 = load i32, ptr %12, align 4, !tbaa !5
  %962 = icmp eq i32 %961, 8
  br i1 %962, label %963, label %966

963:                                              ; preds = %960
  %964 = load i32, ptr %13, align 4, !tbaa !5
  %965 = icmp eq i32 %964, 1
  br i1 %965, label %1501, label %966

966:                                              ; preds = %963, %960, %957, %954
  %967 = load i32, ptr %10, align 4, !tbaa !5
  %968 = icmp eq i32 %967, 12
  br i1 %968, label %969, label %978

969:                                              ; preds = %966
  %970 = load i32, ptr %11, align 4, !tbaa !5
  %971 = icmp eq i32 %970, 12
  br i1 %971, label %972, label %978

972:                                              ; preds = %969
  %973 = load i32, ptr %12, align 4, !tbaa !5
  %974 = icmp eq i32 %973, 8
  br i1 %974, label %975, label %978

975:                                              ; preds = %972
  %976 = load i32, ptr %13, align 4, !tbaa !5
  %977 = icmp eq i32 %976, 2
  br i1 %977, label %1501, label %978

978:                                              ; preds = %975, %972, %969, %966
  %979 = load i32, ptr %10, align 4, !tbaa !5
  %980 = icmp eq i32 %979, 13
  br i1 %980, label %981, label %990

981:                                              ; preds = %978
  %982 = load i32, ptr %11, align 4, !tbaa !5
  %983 = icmp eq i32 %982, 12
  br i1 %983, label %984, label %990

984:                                              ; preds = %981
  %985 = load i32, ptr %12, align 4, !tbaa !5
  %986 = icmp eq i32 %985, 8
  br i1 %986, label %987, label %990

987:                                              ; preds = %984
  %988 = load i32, ptr %13, align 4, !tbaa !5
  %989 = icmp eq i32 %988, 1
  br i1 %989, label %1501, label %990

990:                                              ; preds = %987, %984, %981, %978
  %991 = load i32, ptr %10, align 4, !tbaa !5
  %992 = icmp eq i32 %991, 12
  br i1 %992, label %993, label %1002

993:                                              ; preds = %990
  %994 = load i32, ptr %11, align 4, !tbaa !5
  %995 = icmp eq i32 %994, 13
  br i1 %995, label %996, label %1002

996:                                              ; preds = %993
  %997 = load i32, ptr %12, align 4, !tbaa !5
  %998 = icmp eq i32 %997, 8
  br i1 %998, label %999, label %1002

999:                                              ; preds = %996
  %1000 = load i32, ptr %13, align 4, !tbaa !5
  %1001 = icmp eq i32 %1000, 1
  br i1 %1001, label %1501, label %1002

1002:                                             ; preds = %999, %996, %993, %990
  %1003 = load i32, ptr %10, align 4, !tbaa !5
  %1004 = icmp eq i32 %1003, 12
  br i1 %1004, label %1005, label %1014

1005:                                             ; preds = %1002
  %1006 = load i32, ptr %11, align 4, !tbaa !5
  %1007 = icmp eq i32 %1006, 2
  br i1 %1007, label %1008, label %1014

1008:                                             ; preds = %1005
  %1009 = load i32, ptr %12, align 4, !tbaa !5
  %1010 = icmp eq i32 %1009, 1
  br i1 %1010, label %1011, label %1014

1011:                                             ; preds = %1008
  %1012 = load i32, ptr %13, align 4, !tbaa !5
  %1013 = icmp eq i32 %1012, 2
  br i1 %1013, label %1501, label %1014

1014:                                             ; preds = %1011, %1008, %1005, %1002
  %1015 = load i32, ptr %10, align 4, !tbaa !5
  %1016 = icmp eq i32 %1015, 12
  br i1 %1016, label %1017, label %1026

1017:                                             ; preds = %1014
  %1018 = load i32, ptr %11, align 4, !tbaa !5
  %1019 = icmp eq i32 %1018, 2
  br i1 %1019, label %1020, label %1026

1020:                                             ; preds = %1017
  %1021 = load i32, ptr %12, align 4, !tbaa !5
  %1022 = icmp eq i32 %1021, 1
  br i1 %1022, label %1023, label %1026

1023:                                             ; preds = %1020
  %1024 = load i32, ptr %13, align 4, !tbaa !5
  %1025 = icmp eq i32 %1024, 1
  br i1 %1025, label %1501, label %1026

1026:                                             ; preds = %1023, %1020, %1017, %1014
  %1027 = load i32, ptr %10, align 4, !tbaa !5
  %1028 = icmp eq i32 %1027, 12
  br i1 %1028, label %1029, label %1038

1029:                                             ; preds = %1026
  %1030 = load i32, ptr %11, align 4, !tbaa !5
  %1031 = icmp eq i32 %1030, 1
  br i1 %1031, label %1032, label %1038

1032:                                             ; preds = %1029
  %1033 = load i32, ptr %12, align 4, !tbaa !5
  %1034 = icmp eq i32 %1033, 1
  br i1 %1034, label %1035, label %1038

1035:                                             ; preds = %1032
  %1036 = load i32, ptr %13, align 4, !tbaa !5
  %1037 = icmp eq i32 %1036, 1
  br i1 %1037, label %1501, label %1038

1038:                                             ; preds = %1035, %1032, %1029, %1026
  %1039 = load i32, ptr %10, align 4, !tbaa !5
  %1040 = icmp eq i32 %1039, 4
  br i1 %1040, label %1041, label %1050

1041:                                             ; preds = %1038
  %1042 = load i32, ptr %11, align 4, !tbaa !5
  %1043 = icmp eq i32 %1042, 2
  br i1 %1043, label %1044, label %1050

1044:                                             ; preds = %1041
  %1045 = load i32, ptr %12, align 4, !tbaa !5
  %1046 = icmp eq i32 %1045, 1
  br i1 %1046, label %1047, label %1050

1047:                                             ; preds = %1044
  %1048 = load i32, ptr %13, align 4, !tbaa !5
  %1049 = icmp eq i32 %1048, 2
  br i1 %1049, label %1501, label %1050

1050:                                             ; preds = %1047, %1044, %1041, %1038
  %1051 = load i32, ptr %10, align 4, !tbaa !5
  %1052 = icmp eq i32 %1051, 4
  br i1 %1052, label %1053, label %1062

1053:                                             ; preds = %1050
  %1054 = load i32, ptr %11, align 4, !tbaa !5
  %1055 = icmp eq i32 %1054, 2
  br i1 %1055, label %1056, label %1062

1056:                                             ; preds = %1053
  %1057 = load i32, ptr %12, align 4, !tbaa !5
  %1058 = icmp eq i32 %1057, 1
  br i1 %1058, label %1059, label %1062

1059:                                             ; preds = %1056
  %1060 = load i32, ptr %13, align 4, !tbaa !5
  %1061 = icmp eq i32 %1060, 1
  br i1 %1061, label %1501, label %1062

1062:                                             ; preds = %1059, %1056, %1053, %1050
  %1063 = load i32, ptr %10, align 4, !tbaa !5
  %1064 = icmp eq i32 %1063, 5
  br i1 %1064, label %1065, label %1074

1065:                                             ; preds = %1062
  %1066 = load i32, ptr %11, align 4, !tbaa !5
  %1067 = icmp eq i32 %1066, 2
  br i1 %1067, label %1068, label %1074

1068:                                             ; preds = %1065
  %1069 = load i32, ptr %12, align 4, !tbaa !5
  %1070 = icmp eq i32 %1069, 1
  br i1 %1070, label %1071, label %1074

1071:                                             ; preds = %1068
  %1072 = load i32, ptr %13, align 4, !tbaa !5
  %1073 = icmp eq i32 %1072, 2
  br i1 %1073, label %1501, label %1074

1074:                                             ; preds = %1071, %1068, %1065, %1062
  %1075 = load i32, ptr %10, align 4, !tbaa !5
  %1076 = icmp eq i32 %1075, 5
  br i1 %1076, label %1077, label %1086

1077:                                             ; preds = %1074
  %1078 = load i32, ptr %11, align 4, !tbaa !5
  %1079 = icmp eq i32 %1078, 2
  br i1 %1079, label %1080, label %1086

1080:                                             ; preds = %1077
  %1081 = load i32, ptr %12, align 4, !tbaa !5
  %1082 = icmp eq i32 %1081, 1
  br i1 %1082, label %1083, label %1086

1083:                                             ; preds = %1080
  %1084 = load i32, ptr %13, align 4, !tbaa !5
  %1085 = icmp eq i32 %1084, 1
  br i1 %1085, label %1501, label %1086

1086:                                             ; preds = %1083, %1080, %1077, %1074
  %1087 = load i32, ptr %10, align 4, !tbaa !5
  %1088 = icmp eq i32 %1087, 13
  br i1 %1088, label %1089, label %1098

1089:                                             ; preds = %1086
  %1090 = load i32, ptr %11, align 4, !tbaa !5
  %1091 = icmp eq i32 %1090, 2
  br i1 %1091, label %1092, label %1098

1092:                                             ; preds = %1089
  %1093 = load i32, ptr %12, align 4, !tbaa !5
  %1094 = icmp eq i32 %1093, 1
  br i1 %1094, label %1095, label %1098

1095:                                             ; preds = %1092
  %1096 = load i32, ptr %13, align 4, !tbaa !5
  %1097 = icmp eq i32 %1096, 2
  br i1 %1097, label %1501, label %1098

1098:                                             ; preds = %1095, %1092, %1089, %1086
  %1099 = load i32, ptr %10, align 4, !tbaa !5
  %1100 = icmp eq i32 %1099, 13
  br i1 %1100, label %1101, label %1110

1101:                                             ; preds = %1098
  %1102 = load i32, ptr %11, align 4, !tbaa !5
  %1103 = icmp eq i32 %1102, 2
  br i1 %1103, label %1104, label %1110

1104:                                             ; preds = %1101
  %1105 = load i32, ptr %12, align 4, !tbaa !5
  %1106 = icmp eq i32 %1105, 1
  br i1 %1106, label %1107, label %1110

1107:                                             ; preds = %1104
  %1108 = load i32, ptr %13, align 4, !tbaa !5
  %1109 = icmp eq i32 %1108, 1
  br i1 %1109, label %1501, label %1110

1110:                                             ; preds = %1107, %1104, %1101, %1098
  %1111 = load i32, ptr %10, align 4, !tbaa !5
  %1112 = icmp eq i32 %1111, 4
  br i1 %1112, label %1113, label %1122

1113:                                             ; preds = %1110
  %1114 = load i32, ptr %11, align 4, !tbaa !5
  %1115 = icmp eq i32 %1114, 3
  br i1 %1115, label %1116, label %1122

1116:                                             ; preds = %1113
  %1117 = load i32, ptr %12, align 4, !tbaa !5
  %1118 = icmp eq i32 %1117, 3
  br i1 %1118, label %1119, label %1122

1119:                                             ; preds = %1116
  %1120 = load i32, ptr %13, align 4, !tbaa !5
  %1121 = icmp eq i32 %1120, 3
  br i1 %1121, label %1501, label %1122

1122:                                             ; preds = %1119, %1116, %1113, %1110
  %1123 = load i32, ptr %10, align 4, !tbaa !5
  %1124 = icmp eq i32 %1123, 4
  br i1 %1124, label %1125, label %1134

1125:                                             ; preds = %1122
  %1126 = load i32, ptr %11, align 4, !tbaa !5
  %1127 = icmp eq i32 %1126, 3
  br i1 %1127, label %1128, label %1134

1128:                                             ; preds = %1125
  %1129 = load i32, ptr %12, align 4, !tbaa !5
  %1130 = icmp eq i32 %1129, 1
  br i1 %1130, label %1131, label %1134

1131:                                             ; preds = %1128
  %1132 = load i32, ptr %13, align 4, !tbaa !5
  %1133 = icmp eq i32 %1132, 3
  br i1 %1133, label %1501, label %1134

1134:                                             ; preds = %1131, %1128, %1125, %1122
  %1135 = load i32, ptr %10, align 4, !tbaa !5
  %1136 = icmp eq i32 %1135, 4
  br i1 %1136, label %1137, label %1146

1137:                                             ; preds = %1134
  %1138 = load i32, ptr %11, align 4, !tbaa !5
  %1139 = icmp eq i32 %1138, 3
  br i1 %1139, label %1140, label %1146

1140:                                             ; preds = %1137
  %1141 = load i32, ptr %12, align 4, !tbaa !5
  %1142 = icmp eq i32 %1141, 14
  br i1 %1142, label %1143, label %1146

1143:                                             ; preds = %1140
  %1144 = load i32, ptr %13, align 4, !tbaa !5
  %1145 = icmp eq i32 %1144, 3
  br i1 %1145, label %1501, label %1146

1146:                                             ; preds = %1143, %1140, %1137, %1134
  %1147 = load i32, ptr %10, align 4, !tbaa !5
  %1148 = icmp eq i32 %1147, 4
  br i1 %1148, label %1149, label %1158

1149:                                             ; preds = %1146
  %1150 = load i32, ptr %11, align 4, !tbaa !5
  %1151 = icmp eq i32 %1150, 3
  br i1 %1151, label %1152, label %1158

1152:                                             ; preds = %1149
  %1153 = load i32, ptr %12, align 4, !tbaa !5
  %1154 = icmp eq i32 %1153, 3
  br i1 %1154, label %1155, label %1158

1155:                                             ; preds = %1152
  %1156 = load i32, ptr %13, align 4, !tbaa !5
  %1157 = icmp eq i32 %1156, 1
  br i1 %1157, label %1501, label %1158

1158:                                             ; preds = %1155, %1152, %1149, %1146
  %1159 = load i32, ptr %10, align 4, !tbaa !5
  %1160 = icmp eq i32 %1159, 4
  br i1 %1160, label %1161, label %1170

1161:                                             ; preds = %1158
  %1162 = load i32, ptr %11, align 4, !tbaa !5
  %1163 = icmp eq i32 %1162, 3
  br i1 %1163, label %1164, label %1170

1164:                                             ; preds = %1161
  %1165 = load i32, ptr %12, align 4, !tbaa !5
  %1166 = icmp eq i32 %1165, 1
  br i1 %1166, label %1167, label %1170

1167:                                             ; preds = %1164
  %1168 = load i32, ptr %13, align 4, !tbaa !5
  %1169 = icmp eq i32 %1168, 1
  br i1 %1169, label %1501, label %1170

1170:                                             ; preds = %1167, %1164, %1161, %1158
  %1171 = load i32, ptr %10, align 4, !tbaa !5
  %1172 = icmp eq i32 %1171, 4
  br i1 %1172, label %1173, label %1182

1173:                                             ; preds = %1170
  %1174 = load i32, ptr %11, align 4, !tbaa !5
  %1175 = icmp eq i32 %1174, 3
  br i1 %1175, label %1176, label %1182

1176:                                             ; preds = %1173
  %1177 = load i32, ptr %12, align 4, !tbaa !5
  %1178 = icmp eq i32 %1177, 14
  br i1 %1178, label %1179, label %1182

1179:                                             ; preds = %1176
  %1180 = load i32, ptr %13, align 4, !tbaa !5
  %1181 = icmp eq i32 %1180, 1
  br i1 %1181, label %1501, label %1182

1182:                                             ; preds = %1179, %1176, %1173, %1170
  %1183 = load i32, ptr %10, align 4, !tbaa !5
  %1184 = icmp eq i32 %1183, 12
  br i1 %1184, label %1185, label %1194

1185:                                             ; preds = %1182
  %1186 = load i32, ptr %11, align 4, !tbaa !5
  %1187 = icmp eq i32 %1186, 3
  br i1 %1187, label %1188, label %1194

1188:                                             ; preds = %1185
  %1189 = load i32, ptr %12, align 4, !tbaa !5
  %1190 = icmp eq i32 %1189, 3
  br i1 %1190, label %1191, label %1194

1191:                                             ; preds = %1188
  %1192 = load i32, ptr %13, align 4, !tbaa !5
  %1193 = icmp eq i32 %1192, 3
  br i1 %1193, label %1501, label %1194

1194:                                             ; preds = %1191, %1188, %1185, %1182
  %1195 = load i32, ptr %10, align 4, !tbaa !5
  %1196 = icmp eq i32 %1195, 12
  br i1 %1196, label %1197, label %1206

1197:                                             ; preds = %1194
  %1198 = load i32, ptr %11, align 4, !tbaa !5
  %1199 = icmp eq i32 %1198, 3
  br i1 %1199, label %1200, label %1206

1200:                                             ; preds = %1197
  %1201 = load i32, ptr %12, align 4, !tbaa !5
  %1202 = icmp eq i32 %1201, 1
  br i1 %1202, label %1203, label %1206

1203:                                             ; preds = %1200
  %1204 = load i32, ptr %13, align 4, !tbaa !5
  %1205 = icmp eq i32 %1204, 3
  br i1 %1205, label %1501, label %1206

1206:                                             ; preds = %1203, %1200, %1197, %1194
  %1207 = load i32, ptr %10, align 4, !tbaa !5
  %1208 = icmp eq i32 %1207, 12
  br i1 %1208, label %1209, label %1218

1209:                                             ; preds = %1206
  %1210 = load i32, ptr %11, align 4, !tbaa !5
  %1211 = icmp eq i32 %1210, 3
  br i1 %1211, label %1212, label %1218

1212:                                             ; preds = %1209
  %1213 = load i32, ptr %12, align 4, !tbaa !5
  %1214 = icmp eq i32 %1213, 14
  br i1 %1214, label %1215, label %1218

1215:                                             ; preds = %1212
  %1216 = load i32, ptr %13, align 4, !tbaa !5
  %1217 = icmp eq i32 %1216, 3
  br i1 %1217, label %1501, label %1218

1218:                                             ; preds = %1215, %1212, %1209, %1206
  %1219 = load i32, ptr %10, align 4, !tbaa !5
  %1220 = icmp eq i32 %1219, 12
  br i1 %1220, label %1221, label %1230

1221:                                             ; preds = %1218
  %1222 = load i32, ptr %11, align 4, !tbaa !5
  %1223 = icmp eq i32 %1222, 3
  br i1 %1223, label %1224, label %1230

1224:                                             ; preds = %1221
  %1225 = load i32, ptr %12, align 4, !tbaa !5
  %1226 = icmp eq i32 %1225, 3
  br i1 %1226, label %1227, label %1230

1227:                                             ; preds = %1224
  %1228 = load i32, ptr %13, align 4, !tbaa !5
  %1229 = icmp eq i32 %1228, 1
  br i1 %1229, label %1501, label %1230

1230:                                             ; preds = %1227, %1224, %1221, %1218
  %1231 = load i32, ptr %10, align 4, !tbaa !5
  %1232 = icmp eq i32 %1231, 12
  br i1 %1232, label %1233, label %1242

1233:                                             ; preds = %1230
  %1234 = load i32, ptr %11, align 4, !tbaa !5
  %1235 = icmp eq i32 %1234, 3
  br i1 %1235, label %1236, label %1242

1236:                                             ; preds = %1233
  %1237 = load i32, ptr %12, align 4, !tbaa !5
  %1238 = icmp eq i32 %1237, 1
  br i1 %1238, label %1239, label %1242

1239:                                             ; preds = %1236
  %1240 = load i32, ptr %13, align 4, !tbaa !5
  %1241 = icmp eq i32 %1240, 1
  br i1 %1241, label %1501, label %1242

1242:                                             ; preds = %1239, %1236, %1233, %1230
  %1243 = load i32, ptr %10, align 4, !tbaa !5
  %1244 = icmp eq i32 %1243, 12
  br i1 %1244, label %1245, label %1254

1245:                                             ; preds = %1242
  %1246 = load i32, ptr %11, align 4, !tbaa !5
  %1247 = icmp eq i32 %1246, 3
  br i1 %1247, label %1248, label %1254

1248:                                             ; preds = %1245
  %1249 = load i32, ptr %12, align 4, !tbaa !5
  %1250 = icmp eq i32 %1249, 14
  br i1 %1250, label %1251, label %1254

1251:                                             ; preds = %1248
  %1252 = load i32, ptr %13, align 4, !tbaa !5
  %1253 = icmp eq i32 %1252, 1
  br i1 %1253, label %1501, label %1254

1254:                                             ; preds = %1251, %1248, %1245, %1242
  %1255 = load i32, ptr %10, align 4, !tbaa !5
  %1256 = icmp eq i32 %1255, 13
  br i1 %1256, label %1257, label %1266

1257:                                             ; preds = %1254
  %1258 = load i32, ptr %11, align 4, !tbaa !5
  %1259 = icmp eq i32 %1258, 3
  br i1 %1259, label %1260, label %1266

1260:                                             ; preds = %1257
  %1261 = load i32, ptr %12, align 4, !tbaa !5
  %1262 = icmp eq i32 %1261, 3
  br i1 %1262, label %1263, label %1266

1263:                                             ; preds = %1260
  %1264 = load i32, ptr %13, align 4, !tbaa !5
  %1265 = icmp eq i32 %1264, 3
  br i1 %1265, label %1501, label %1266

1266:                                             ; preds = %1263, %1260, %1257, %1254
  %1267 = load i32, ptr %10, align 4, !tbaa !5
  %1268 = icmp eq i32 %1267, 13
  br i1 %1268, label %1269, label %1278

1269:                                             ; preds = %1266
  %1270 = load i32, ptr %11, align 4, !tbaa !5
  %1271 = icmp eq i32 %1270, 3
  br i1 %1271, label %1272, label %1278

1272:                                             ; preds = %1269
  %1273 = load i32, ptr %12, align 4, !tbaa !5
  %1274 = icmp eq i32 %1273, 1
  br i1 %1274, label %1275, label %1278

1275:                                             ; preds = %1272
  %1276 = load i32, ptr %13, align 4, !tbaa !5
  %1277 = icmp eq i32 %1276, 3
  br i1 %1277, label %1501, label %1278

1278:                                             ; preds = %1275, %1272, %1269, %1266
  %1279 = load i32, ptr %10, align 4, !tbaa !5
  %1280 = icmp eq i32 %1279, 13
  br i1 %1280, label %1281, label %1290

1281:                                             ; preds = %1278
  %1282 = load i32, ptr %11, align 4, !tbaa !5
  %1283 = icmp eq i32 %1282, 3
  br i1 %1283, label %1284, label %1290

1284:                                             ; preds = %1281
  %1285 = load i32, ptr %12, align 4, !tbaa !5
  %1286 = icmp eq i32 %1285, 14
  br i1 %1286, label %1287, label %1290

1287:                                             ; preds = %1284
  %1288 = load i32, ptr %13, align 4, !tbaa !5
  %1289 = icmp eq i32 %1288, 3
  br i1 %1289, label %1501, label %1290

1290:                                             ; preds = %1287, %1284, %1281, %1278
  %1291 = load i32, ptr %10, align 4, !tbaa !5
  %1292 = icmp eq i32 %1291, 13
  br i1 %1292, label %1293, label %1302

1293:                                             ; preds = %1290
  %1294 = load i32, ptr %11, align 4, !tbaa !5
  %1295 = icmp eq i32 %1294, 3
  br i1 %1295, label %1296, label %1302

1296:                                             ; preds = %1293
  %1297 = load i32, ptr %12, align 4, !tbaa !5
  %1298 = icmp eq i32 %1297, 3
  br i1 %1298, label %1299, label %1302

1299:                                             ; preds = %1296
  %1300 = load i32, ptr %13, align 4, !tbaa !5
  %1301 = icmp eq i32 %1300, 1
  br i1 %1301, label %1501, label %1302

1302:                                             ; preds = %1299, %1296, %1293, %1290
  %1303 = load i32, ptr %10, align 4, !tbaa !5
  %1304 = icmp eq i32 %1303, 13
  br i1 %1304, label %1305, label %1314

1305:                                             ; preds = %1302
  %1306 = load i32, ptr %11, align 4, !tbaa !5
  %1307 = icmp eq i32 %1306, 3
  br i1 %1307, label %1308, label %1314

1308:                                             ; preds = %1305
  %1309 = load i32, ptr %12, align 4, !tbaa !5
  %1310 = icmp eq i32 %1309, 1
  br i1 %1310, label %1311, label %1314

1311:                                             ; preds = %1308
  %1312 = load i32, ptr %13, align 4, !tbaa !5
  %1313 = icmp eq i32 %1312, 1
  br i1 %1313, label %1501, label %1314

1314:                                             ; preds = %1311, %1308, %1305, %1302
  %1315 = load i32, ptr %10, align 4, !tbaa !5
  %1316 = icmp eq i32 %1315, 13
  br i1 %1316, label %1317, label %1326

1317:                                             ; preds = %1314
  %1318 = load i32, ptr %11, align 4, !tbaa !5
  %1319 = icmp eq i32 %1318, 3
  br i1 %1319, label %1320, label %1326

1320:                                             ; preds = %1317
  %1321 = load i32, ptr %12, align 4, !tbaa !5
  %1322 = icmp eq i32 %1321, 14
  br i1 %1322, label %1323, label %1326

1323:                                             ; preds = %1320
  %1324 = load i32, ptr %13, align 4, !tbaa !5
  %1325 = icmp eq i32 %1324, 1
  br i1 %1325, label %1501, label %1326

1326:                                             ; preds = %1323, %1320, %1317, %1314
  %1327 = load i32, ptr %10, align 4, !tbaa !5
  %1328 = icmp eq i32 %1327, 3
  br i1 %1328, label %1329, label %1338

1329:                                             ; preds = %1326
  %1330 = load i32, ptr %11, align 4, !tbaa !5
  %1331 = icmp eq i32 %1330, 3
  br i1 %1331, label %1332, label %1338

1332:                                             ; preds = %1329
  %1333 = load i32, ptr %12, align 4, !tbaa !5
  %1334 = icmp eq i32 %1333, 3
  br i1 %1334, label %1335, label %1338

1335:                                             ; preds = %1332
  %1336 = load i32, ptr %13, align 4, !tbaa !5
  %1337 = icmp eq i32 %1336, 3
  br i1 %1337, label %1501, label %1338

1338:                                             ; preds = %1335, %1332, %1329, %1326
  %1339 = load i32, ptr %10, align 4, !tbaa !5
  %1340 = icmp eq i32 %1339, 3
  br i1 %1340, label %1341, label %1350

1341:                                             ; preds = %1338
  %1342 = load i32, ptr %11, align 4, !tbaa !5
  %1343 = icmp eq i32 %1342, 3
  br i1 %1343, label %1344, label %1350

1344:                                             ; preds = %1341
  %1345 = load i32, ptr %12, align 4, !tbaa !5
  %1346 = icmp eq i32 %1345, 1
  br i1 %1346, label %1347, label %1350

1347:                                             ; preds = %1344
  %1348 = load i32, ptr %13, align 4, !tbaa !5
  %1349 = icmp eq i32 %1348, 3
  br i1 %1349, label %1501, label %1350

1350:                                             ; preds = %1347, %1344, %1341, %1338
  %1351 = load i32, ptr %10, align 4, !tbaa !5
  %1352 = icmp eq i32 %1351, 3
  br i1 %1352, label %1353, label %1362

1353:                                             ; preds = %1350
  %1354 = load i32, ptr %11, align 4, !tbaa !5
  %1355 = icmp eq i32 %1354, 3
  br i1 %1355, label %1356, label %1362

1356:                                             ; preds = %1353
  %1357 = load i32, ptr %12, align 4, !tbaa !5
  %1358 = icmp eq i32 %1357, 14
  br i1 %1358, label %1359, label %1362

1359:                                             ; preds = %1356
  %1360 = load i32, ptr %13, align 4, !tbaa !5
  %1361 = icmp eq i32 %1360, 3
  br i1 %1361, label %1501, label %1362

1362:                                             ; preds = %1359, %1356, %1353, %1350
  %1363 = load i32, ptr %10, align 4, !tbaa !5
  %1364 = icmp eq i32 %1363, 3
  br i1 %1364, label %1365, label %1374

1365:                                             ; preds = %1362
  %1366 = load i32, ptr %11, align 4, !tbaa !5
  %1367 = icmp eq i32 %1366, 3
  br i1 %1367, label %1368, label %1374

1368:                                             ; preds = %1365
  %1369 = load i32, ptr %12, align 4, !tbaa !5
  %1370 = icmp eq i32 %1369, 3
  br i1 %1370, label %1371, label %1374

1371:                                             ; preds = %1368
  %1372 = load i32, ptr %13, align 4, !tbaa !5
  %1373 = icmp eq i32 %1372, 1
  br i1 %1373, label %1501, label %1374

1374:                                             ; preds = %1371, %1368, %1365, %1362
  %1375 = load i32, ptr %10, align 4, !tbaa !5
  %1376 = icmp eq i32 %1375, 3
  br i1 %1376, label %1377, label %1386

1377:                                             ; preds = %1374
  %1378 = load i32, ptr %11, align 4, !tbaa !5
  %1379 = icmp eq i32 %1378, 3
  br i1 %1379, label %1380, label %1386

1380:                                             ; preds = %1377
  %1381 = load i32, ptr %12, align 4, !tbaa !5
  %1382 = icmp eq i32 %1381, 3
  br i1 %1382, label %1383, label %1386

1383:                                             ; preds = %1380
  %1384 = load i32, ptr %13, align 4, !tbaa !5
  %1385 = icmp eq i32 %1384, 3
  br i1 %1385, label %1501, label %1386

1386:                                             ; preds = %1383, %1380, %1377, %1374
  %1387 = load i32, ptr %10, align 4, !tbaa !5
  %1388 = icmp eq i32 %1387, 3
  br i1 %1388, label %1389, label %1398

1389:                                             ; preds = %1386
  %1390 = load i32, ptr %11, align 4, !tbaa !5
  %1391 = icmp eq i32 %1390, 3
  br i1 %1391, label %1392, label %1398

1392:                                             ; preds = %1389
  %1393 = load i32, ptr %12, align 4, !tbaa !5
  %1394 = icmp eq i32 %1393, 1
  br i1 %1394, label %1395, label %1398

1395:                                             ; preds = %1392
  %1396 = load i32, ptr %13, align 4, !tbaa !5
  %1397 = icmp eq i32 %1396, 1
  br i1 %1397, label %1501, label %1398

1398:                                             ; preds = %1395, %1392, %1389, %1386
  %1399 = load i32, ptr %10, align 4, !tbaa !5
  %1400 = icmp eq i32 %1399, 3
  br i1 %1400, label %1401, label %1410

1401:                                             ; preds = %1398
  %1402 = load i32, ptr %11, align 4, !tbaa !5
  %1403 = icmp eq i32 %1402, 3
  br i1 %1403, label %1404, label %1410

1404:                                             ; preds = %1401
  %1405 = load i32, ptr %12, align 4, !tbaa !5
  %1406 = icmp eq i32 %1405, 14
  br i1 %1406, label %1407, label %1410

1407:                                             ; preds = %1404
  %1408 = load i32, ptr %13, align 4, !tbaa !5
  %1409 = icmp eq i32 %1408, 1
  br i1 %1409, label %1501, label %1410

1410:                                             ; preds = %1407, %1404, %1401, %1398
  %1411 = load i32, ptr %10, align 4, !tbaa !5
  %1412 = icmp eq i32 %1411, 2
  br i1 %1412, label %1413, label %1422

1413:                                             ; preds = %1410
  %1414 = load i32, ptr %11, align 4, !tbaa !5
  %1415 = icmp eq i32 %1414, 2
  br i1 %1415, label %1416, label %1422

1416:                                             ; preds = %1413
  %1417 = load i32, ptr %12, align 4, !tbaa !5
  %1418 = icmp eq i32 %1417, 1
  br i1 %1418, label %1419, label %1422

1419:                                             ; preds = %1416
  %1420 = load i32, ptr %13, align 4, !tbaa !5
  %1421 = icmp eq i32 %1420, 1
  br i1 %1421, label %1501, label %1422

1422:                                             ; preds = %1419, %1416, %1413, %1410
  %1423 = load i32, ptr %10, align 4, !tbaa !5
  %1424 = icmp eq i32 %1423, 2
  br i1 %1424, label %1425, label %1434

1425:                                             ; preds = %1422
  %1426 = load i32, ptr %11, align 4, !tbaa !5
  %1427 = icmp eq i32 %1426, 2
  br i1 %1427, label %1428, label %1434

1428:                                             ; preds = %1425
  %1429 = load i32, ptr %12, align 4, !tbaa !5
  %1430 = icmp eq i32 %1429, 1
  br i1 %1430, label %1431, label %1434

1431:                                             ; preds = %1428
  %1432 = load i32, ptr %13, align 4, !tbaa !5
  %1433 = icmp eq i32 %1432, 2
  br i1 %1433, label %1501, label %1434

1434:                                             ; preds = %1431, %1428, %1425, %1422
  %1435 = load i32, ptr %10, align 4, !tbaa !5
  %1436 = icmp eq i32 %1435, 4
  br i1 %1436, label %1437, label %1446

1437:                                             ; preds = %1434
  %1438 = load i32, ptr %11, align 4, !tbaa !5
  %1439 = icmp eq i32 %1438, 4
  br i1 %1439, label %1440, label %1446

1440:                                             ; preds = %1437
  %1441 = load i32, ptr %12, align 4, !tbaa !5
  %1442 = icmp eq i32 %1441, 1
  br i1 %1442, label %1443, label %1446

1443:                                             ; preds = %1440
  %1444 = load i32, ptr %13, align 4, !tbaa !5
  %1445 = icmp eq i32 %1444, 1
  br i1 %1445, label %1501, label %1446

1446:                                             ; preds = %1443, %1440, %1437, %1434
  %1447 = load i32, ptr %10, align 4, !tbaa !5
  %1448 = icmp eq i32 %1447, 4
  br i1 %1448, label %1449, label %1458

1449:                                             ; preds = %1446
  %1450 = load i32, ptr %11, align 4, !tbaa !5
  %1451 = icmp eq i32 %1450, 4
  br i1 %1451, label %1452, label %1458

1452:                                             ; preds = %1449
  %1453 = load i32, ptr %12, align 4, !tbaa !5
  %1454 = icmp eq i32 %1453, 1
  br i1 %1454, label %1455, label %1458

1455:                                             ; preds = %1452
  %1456 = load i32, ptr %13, align 4, !tbaa !5
  %1457 = icmp eq i32 %1456, 4
  br i1 %1457, label %1501, label %1458

1458:                                             ; preds = %1455, %1452, %1449, %1446
  %1459 = load i32, ptr %10, align 4, !tbaa !5
  %1460 = icmp eq i32 %1459, 5
  br i1 %1460, label %1461, label %1470

1461:                                             ; preds = %1458
  %1462 = load i32, ptr %11, align 4, !tbaa !5
  %1463 = icmp eq i32 %1462, 5
  br i1 %1463, label %1464, label %1470

1464:                                             ; preds = %1461
  %1465 = load i32, ptr %12, align 4, !tbaa !5
  %1466 = icmp eq i32 %1465, 1
  br i1 %1466, label %1467, label %1470

1467:                                             ; preds = %1464
  %1468 = load i32, ptr %13, align 4, !tbaa !5
  %1469 = icmp eq i32 %1468, 1
  br i1 %1469, label %1501, label %1470

1470:                                             ; preds = %1467, %1464, %1461, %1458
  %1471 = load i32, ptr %10, align 4, !tbaa !5
  %1472 = icmp eq i32 %1471, 5
  br i1 %1472, label %1473, label %1482

1473:                                             ; preds = %1470
  %1474 = load i32, ptr %11, align 4, !tbaa !5
  %1475 = icmp eq i32 %1474, 5
  br i1 %1475, label %1476, label %1482

1476:                                             ; preds = %1473
  %1477 = load i32, ptr %12, align 4, !tbaa !5
  %1478 = icmp eq i32 %1477, 1
  br i1 %1478, label %1479, label %1482

1479:                                             ; preds = %1476
  %1480 = load i32, ptr %13, align 4, !tbaa !5
  %1481 = icmp eq i32 %1480, 5
  br i1 %1481, label %1501, label %1482

1482:                                             ; preds = %1479, %1476, %1473, %1470
  %1483 = load i32, ptr %10, align 4, !tbaa !5
  %1484 = icmp eq i32 %1483, 5
  br i1 %1484, label %1485, label %1494

1485:                                             ; preds = %1482
  %1486 = load i32, ptr %11, align 4, !tbaa !5
  %1487 = icmp eq i32 %1486, 5
  br i1 %1487, label %1488, label %1494

1488:                                             ; preds = %1485
  %1489 = load i32, ptr %12, align 4, !tbaa !5
  %1490 = icmp eq i32 %1489, 1
  br i1 %1490, label %1491, label %1494

1491:                                             ; preds = %1488
  %1492 = load i32, ptr %13, align 4, !tbaa !5
  %1493 = icmp eq i32 %1492, 5
  br i1 %1493, label %1501, label %1494

1494:                                             ; preds = %1491, %1488, %1485, %1482
  %1495 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1496 = load ptr, ptr %6, align 8, !tbaa !9
  %1497 = load ptr, ptr %7, align 8, !tbaa !9
  %1498 = load ptr, ptr %8, align 8, !tbaa !9
  %1499 = load ptr, ptr %9, align 8, !tbaa !9
  %1500 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1495, ptr noundef @.str.25, ptr noundef %1496, ptr noundef %1497, ptr noundef %1498, ptr noundef %1499) #10
  call void @exit(i32 noundef 1) #12
  unreachable

1501:                                             ; preds = %1491, %1479, %1467, %1455, %1443, %1431, %1419, %1407, %1395, %1383, %1371, %1359, %1347, %1335, %1323, %1311, %1299, %1287, %1275, %1263, %1251, %1239, %1227, %1215, %1203, %1191, %1179, %1167, %1155, %1143, %1131, %1119, %1107, %1095, %1083, %1071, %1059, %1047, %1035, %1023, %1011, %999, %987, %975, %963, %951, %939, %927, %915, %903, %891, %879, %867
  %1502 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  store i32 0, ptr %1502, align 4, !tbaa !25
  %1503 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 20
  store i32 0, ptr %1503, align 8, !tbaa !26
  %1504 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 21
  store i32 0, ptr %1504, align 4, !tbaa !27
  %1505 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 29
  store float 0.000000e+00, ptr %1505, align 4, !tbaa !28
  %1506 = load i32, ptr %10, align 4, !tbaa !5
  %1507 = icmp eq i32 %1506, 13
  br i1 %1507, label %1508, label %1510

1508:                                             ; preds = %1501
  store i32 12, ptr %10, align 4, !tbaa !5
  %1509 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  store i32 1, ptr %1509, align 4, !tbaa !25
  br label %1510

1510:                                             ; preds = %1508, %1501
  %1511 = load i32, ptr %11, align 4, !tbaa !5
  %1512 = icmp eq i32 %1511, 13
  br i1 %1512, label %1513, label %1515

1513:                                             ; preds = %1510
  store i32 12, ptr %11, align 4, !tbaa !5
  %1514 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 20
  store i32 1, ptr %1514, align 8, !tbaa !26
  br label %1515

1515:                                             ; preds = %1513, %1510
  %1516 = load i32, ptr %10, align 4, !tbaa !5
  %1517 = icmp eq i32 %1516, 12
  br i1 %1517, label %1521, label %1518

1518:                                             ; preds = %1515
  %1519 = load i32, ptr %10, align 4, !tbaa !5
  %1520 = icmp eq i32 %1519, 13
  br i1 %1520, label %1521, label %1526

1521:                                             ; preds = %1518, %1515
  %1522 = load i32, ptr %13, align 4, !tbaa !5
  %1523 = icmp eq i32 %1522, 1
  br i1 %1523, label %1524, label %1526

1524:                                             ; preds = %1521
  %1525 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 29
  store float 1.000000e+00, ptr %1525, align 4, !tbaa !28
  br label %1526

1526:                                             ; preds = %1524, %1521, %1518
  %1527 = load i32, ptr %10, align 4, !tbaa !5
  %1528 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 %1527, ptr %1528, align 8, !tbaa !29
  %1529 = load i32, ptr %11, align 4, !tbaa !5
  %1530 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  store i32 %1529, ptr %1530, align 4, !tbaa !30
  %1531 = load i32, ptr %12, align 4, !tbaa !5
  %1532 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 3
  store i32 %1531, ptr %1532, align 4, !tbaa !31
  %1533 = load i32, ptr %13, align 4, !tbaa !5
  %1534 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  store i32 %1533, ptr %1534, align 8, !tbaa !32
  %1535 = load double, ptr %27, align 8, !tbaa !11
  %1536 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 12
  store double %1535, ptr %1536, align 8, !tbaa !33
  %1537 = load double, ptr %28, align 8, !tbaa !11
  %1538 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 13
  store double %1537, ptr %1538, align 8, !tbaa !34
  %1539 = load i32, ptr %22, align 4, !tbaa !5
  %1540 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 14
  store i32 %1539, ptr %1540, align 8, !tbaa !35
  %1541 = load i32, ptr %23, align 4, !tbaa !5
  %1542 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 15
  store i32 %1541, ptr %1542, align 4, !tbaa !36
  %1543 = load i32, ptr %24, align 4, !tbaa !5
  %1544 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 16
  store i32 %1543, ptr %1544, align 8, !tbaa !37
  %1545 = load i32, ptr %25, align 4, !tbaa !5
  %1546 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 17
  store i32 %1545, ptr %1546, align 4, !tbaa !38
  %1547 = load i32, ptr %26, align 4, !tbaa !5
  %1548 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 18
  store i32 %1547, ptr %1548, align 8, !tbaa !39
  %1549 = load i32, ptr %20, align 4, !tbaa !5
  %1550 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 22
  store i32 %1549, ptr %1550, align 8, !tbaa !40
  %1551 = load i32, ptr %21, align 4, !tbaa !5
  %1552 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 23
  store i32 %1551, ptr %1552, align 4, !tbaa !41
  %1553 = load i32, ptr %43, align 4, !tbaa !5
  %1554 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 24
  store i32 %1553, ptr %1554, align 8, !tbaa !42
  %1555 = load i32, ptr %30, align 4, !tbaa !5
  %1556 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 25
  store i32 %1555, ptr %1556, align 4, !tbaa !43
  %1557 = load i32, ptr %29, align 4, !tbaa !5
  %1558 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 26
  store i32 %1557, ptr %1558, align 8, !tbaa !44
  %1559 = load i32, ptr %31, align 4, !tbaa !5
  %1560 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 27
  store i32 %1559, ptr %1560, align 4, !tbaa !45
  %1561 = load i32, ptr %39, align 4, !tbaa !5
  %1562 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 28
  store i32 %1561, ptr %1562, align 8, !tbaa !46
  %1563 = load i32, ptr %41, align 4, !tbaa !5
  %1564 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  store i32 %1563, ptr %1564, align 8, !tbaa !47
  %1565 = load i32, ptr %42, align 4, !tbaa !5
  %1566 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  store i32 %1565, ptr %1566, align 4, !tbaa !48
  %1567 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %1568 = load i32, ptr %1567, align 8, !tbaa !32
  %1569 = icmp ne i32 %1568, 2
  br i1 %1569, label %1570, label %1589

1570:                                             ; preds = %1526
  %1571 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %1572 = load i32, ptr %1571, align 8, !tbaa !32
  %1573 = icmp ne i32 %1572, 3
  br i1 %1573, label %1574, label %1589

1574:                                             ; preds = %1570
  %1575 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %1576 = load i32, ptr %1575, align 8, !tbaa !32
  %1577 = icmp ne i32 %1576, 4
  br i1 %1577, label %1578, label %1589

1578:                                             ; preds = %1574
  %1579 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %1580 = load i32, ptr %1579, align 8, !tbaa !32
  %1581 = icmp ne i32 %1580, 5
  br i1 %1581, label %1582, label %1589

1582:                                             ; preds = %1578
  %1583 = load i32, ptr %26, align 4, !tbaa !5
  %1584 = icmp sgt i32 %1583, 0
  br i1 %1584, label %1585, label %1588

1585:                                             ; preds = %1582
  %1586 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1587 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1586, ptr noundef @.str.26) #10
  call void @exit(i32 noundef 1) #12
  unreachable

1588:                                             ; preds = %1582
  br label %1589

1589:                                             ; preds = %1588, %1578, %1574, %1570, %1526
  %1590 = load i32, ptr %33, align 4, !tbaa !5
  %1591 = icmp ne i32 %1590, 0
  br i1 %1591, label %1592, label %1595

1592:                                             ; preds = %1589
  %1593 = load ptr, ptr %34, align 8, !tbaa !9
  %1594 = call noalias ptr @fopen(ptr noundef %1593, ptr noundef @.str.27)
  store ptr %1594, ptr %35, align 8, !tbaa !9
  br label %1629

1595:                                             ; preds = %1589
  %1596 = load i32, ptr %23, align 4, !tbaa !5
  %1597 = icmp eq i32 %1596, 0
  br i1 %1597, label %1598, label %1613

1598:                                             ; preds = %1595
  %1599 = call i32 (ptr, ...) @printf(ptr noundef @.str.28)
  %1600 = load i32, ptr %17, align 4, !tbaa !5
  %1601 = load i32, ptr %19, align 4, !tbaa !5
  %1602 = load i32, ptr %19, align 4, !tbaa !5
  %1603 = load i32, ptr %18, align 4, !tbaa !5
  %1604 = load i32, ptr %17, align 4, !tbaa !5
  %1605 = load i32, ptr %18, align 4, !tbaa !5
  %1606 = load ptr, ptr %6, align 8, !tbaa !9
  %1607 = load ptr, ptr %7, align 8, !tbaa !9
  %1608 = load ptr, ptr %8, align 8, !tbaa !9
  %1609 = load ptr, ptr %9, align 8, !tbaa !9
  %1610 = load i32, ptr %29, align 4, !tbaa !5
  %1611 = call i32 (ptr, ...) @printf(ptr noundef @.str.29, i32 noundef %1600, i32 noundef %1601, i32 noundef %1602, i32 noundef %1603, i32 noundef %1604, i32 noundef %1605, ptr noundef %1606, ptr noundef %1607, ptr noundef %1608, ptr noundef %1609, i32 noundef %1610)
  %1612 = call i32 (ptr, ...) @printf(ptr noundef @.str.28)
  br label %1628

1613:                                             ; preds = %1595
  %1614 = call i32 (ptr, ...) @printf(ptr noundef @.str.28)
  %1615 = load i32, ptr %17, align 4, !tbaa !5
  %1616 = load i32, ptr %19, align 4, !tbaa !5
  %1617 = load i32, ptr %19, align 4, !tbaa !5
  %1618 = load i32, ptr %18, align 4, !tbaa !5
  %1619 = load i32, ptr %17, align 4, !tbaa !5
  %1620 = load i32, ptr %18, align 4, !tbaa !5
  %1621 = load ptr, ptr %6, align 8, !tbaa !9
  %1622 = load ptr, ptr %7, align 8, !tbaa !9
  %1623 = load ptr, ptr %8, align 8, !tbaa !9
  %1624 = load ptr, ptr %9, align 8, !tbaa !9
  %1625 = load i32, ptr %29, align 4, !tbaa !5
  %1626 = call i32 (ptr, ...) @printf(ptr noundef @.str.30, i32 noundef %1615, i32 noundef %1616, i32 noundef %1617, i32 noundef %1618, i32 noundef %1619, i32 noundef %1620, ptr noundef %1621, ptr noundef %1622, ptr noundef %1623, ptr noundef %1624, i32 noundef %1625)
  %1627 = call i32 (ptr, ...) @printf(ptr noundef @.str.28)
  br label %1628

1628:                                             ; preds = %1613, %1598
  br label %1629

1629:                                             ; preds = %1628, %1592
  store i32 1, ptr %45, align 4, !tbaa !5
  store i32 0, ptr %46, align 4, !tbaa !5
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %1630

1630:                                             ; preds = %5191, %1629
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %1631 = load i32, ptr %47, align 4, !tbaa !5
  %1632 = icmp eq i32 %1631, 0
  br i1 %1632, label %1633, label %1657

1633:                                             ; preds = %1630
  %1634 = load i32, ptr %33, align 4, !tbaa !5
  %1635 = icmp ne i32 %1634, 0
  br i1 %1635, label %1636, label %1656

1636:                                             ; preds = %1633
  call void @llvm.lifetime.start.p0(i64 512, ptr %55) #10
  %1637 = getelementptr inbounds [512 x i8], ptr %55, i64 0, i64 0
  %1638 = load ptr, ptr %35, align 8, !tbaa !9
  %1639 = call ptr @fgets(ptr noundef %1637, i32 noundef 512, ptr noundef %1638)
  %1640 = icmp eq ptr %1639, null
  br i1 %1640, label %1641, label %1642

1641:                                             ; preds = %1636
  store i32 0, ptr %46, align 4, !tbaa !5
  store i32 2, ptr %49, align 4
  br label %1653

1642:                                             ; preds = %1636
  store i32 1, ptr %46, align 4, !tbaa !5
  br label %1643

1643:                                             ; preds = %1642
  %1644 = getelementptr inbounds [512 x i8], ptr %55, i64 0, i64 0
  %1645 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1644, ptr noundef @.str.31, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %14, ptr noundef %15, ptr noundef %16) #10
  %1646 = icmp ne i32 6, %1645
  br i1 %1646, label %1647, label %1648

1647:                                             ; preds = %1643
  call void @exit(i32 noundef 1) #12
  unreachable

1648:                                             ; preds = %1643
  %1649 = load i32, ptr %46, align 4, !tbaa !5
  %1650 = icmp eq i32 %1649, 0
  br i1 %1650, label %1651, label %1652

1651:                                             ; preds = %1648
  store i32 2, ptr %49, align 4
  br label %1653

1652:                                             ; preds = %1648
  store i32 0, ptr %49, align 4
  br label %1653

1653:                                             ; preds = %1652, %1651, %1641
  call void @llvm.lifetime.end.p0(i64 512, ptr %55) #10
  %1654 = load i32, ptr %49, align 4
  switch i32 %1654, label %5171 [
    i32 0, label %1655
  ]

1655:                                             ; preds = %1653
  br label %1656

1656:                                             ; preds = %1655, %1633
  br label %1657

1657:                                             ; preds = %1656, %1630
  %1658 = load i32, ptr %17, align 4, !tbaa !5
  %1659 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  store i32 %1658, ptr %1659, align 8, !tbaa !49
  %1660 = load i32, ptr %18, align 4, !tbaa !5
  %1661 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 5
  store i32 %1660, ptr %1661, align 4, !tbaa !50
  %1662 = load i32, ptr %19, align 4, !tbaa !5
  %1663 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 6
  store i32 %1662, ptr %1663, align 8, !tbaa !51
  %1664 = load i32, ptr %14, align 4, !tbaa !5
  %1665 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 7
  store i32 %1664, ptr %1665, align 4, !tbaa !52
  %1666 = load i32, ptr %15, align 4, !tbaa !5
  %1667 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 8
  store i32 %1666, ptr %1667, align 8, !tbaa !53
  %1668 = load i32, ptr %16, align 4, !tbaa !5
  %1669 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 9
  store i32 %1668, ptr %1669, align 4, !tbaa !54
  call void @libxsmm_rng_set_seed(i32 noundef 555)
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  store ptr null, ptr %61, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #10
  store ptr null, ptr %62, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #10
  store ptr null, ptr %63, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  store ptr null, ptr %64, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #10
  call void @llvm.memset.p0.i64(ptr align 8 %65, i8 0, i64 16, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %66, i8 0, i64 16, i1 false)
  %1670 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 14
  %1671 = load i32, ptr %1670, align 8, !tbaa !35
  %1672 = icmp eq i32 %1671, 0
  br i1 %1672, label %1673, label %1784

1673:                                             ; preds = %1657
  %1674 = load i32, ptr %14, align 4, !tbaa !5
  %1675 = sext i32 %1674 to i64
  %1676 = load i32, ptr %19, align 4, !tbaa !5
  %1677 = sext i32 %1676 to i64
  %1678 = mul i64 %1675, %1677
  %1679 = load i32, ptr %29, align 4, !tbaa !5
  %1680 = sext i32 %1679 to i64
  %1681 = mul i64 %1678, %1680
  %1682 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1683 = load i32, ptr %1682, align 8, !tbaa !29
  %1684 = icmp eq i32 0, %1683
  br i1 %1684, label %1685, label %1686

1685:                                             ; preds = %1673
  br label %1779

1686:                                             ; preds = %1673
  %1687 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1688 = load i32, ptr %1687, align 8, !tbaa !29
  %1689 = icmp eq i32 1, %1688
  br i1 %1689, label %1690, label %1691

1690:                                             ; preds = %1686
  br label %1777

1691:                                             ; preds = %1686
  %1692 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1693 = load i32, ptr %1692, align 8, !tbaa !29
  %1694 = icmp eq i32 2, %1693
  br i1 %1694, label %1695, label %1696

1695:                                             ; preds = %1691
  br label %1775

1696:                                             ; preds = %1691
  %1697 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1698 = load i32, ptr %1697, align 8, !tbaa !29
  %1699 = icmp eq i32 3, %1698
  br i1 %1699, label %1700, label %1701

1700:                                             ; preds = %1696
  br label %1773

1701:                                             ; preds = %1696
  %1702 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1703 = load i32, ptr %1702, align 8, !tbaa !29
  %1704 = icmp eq i32 4, %1703
  br i1 %1704, label %1705, label %1706

1705:                                             ; preds = %1701
  br label %1771

1706:                                             ; preds = %1701
  %1707 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1708 = load i32, ptr %1707, align 8, !tbaa !29
  %1709 = icmp eq i32 5, %1708
  br i1 %1709, label %1710, label %1711

1710:                                             ; preds = %1706
  br label %1769

1711:                                             ; preds = %1706
  %1712 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1713 = load i32, ptr %1712, align 8, !tbaa !29
  %1714 = icmp eq i32 6, %1713
  br i1 %1714, label %1715, label %1716

1715:                                             ; preds = %1711
  br label %1767

1716:                                             ; preds = %1711
  %1717 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1718 = load i32, ptr %1717, align 8, !tbaa !29
  %1719 = icmp eq i32 7, %1718
  br i1 %1719, label %1720, label %1721

1720:                                             ; preds = %1716
  br label %1765

1721:                                             ; preds = %1716
  %1722 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1723 = load i32, ptr %1722, align 8, !tbaa !29
  %1724 = icmp eq i32 8, %1723
  br i1 %1724, label %1725, label %1726

1725:                                             ; preds = %1721
  br label %1763

1726:                                             ; preds = %1721
  %1727 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1728 = load i32, ptr %1727, align 8, !tbaa !29
  %1729 = icmp eq i32 9, %1728
  br i1 %1729, label %1730, label %1731

1730:                                             ; preds = %1726
  br label %1761

1731:                                             ; preds = %1726
  %1732 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1733 = load i32, ptr %1732, align 8, !tbaa !29
  %1734 = icmp eq i32 10, %1733
  br i1 %1734, label %1735, label %1736

1735:                                             ; preds = %1731
  br label %1759

1736:                                             ; preds = %1731
  %1737 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1738 = load i32, ptr %1737, align 8, !tbaa !29
  %1739 = icmp eq i32 11, %1738
  br i1 %1739, label %1740, label %1741

1740:                                             ; preds = %1736
  br label %1757

1741:                                             ; preds = %1736
  %1742 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1743 = load i32, ptr %1742, align 8, !tbaa !29
  %1744 = icmp eq i32 12, %1743
  br i1 %1744, label %1745, label %1746

1745:                                             ; preds = %1741
  br label %1755

1746:                                             ; preds = %1741
  %1747 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1748 = load i32, ptr %1747, align 8, !tbaa !29
  %1749 = icmp eq i32 13, %1748
  br i1 %1749, label %1750, label %1751

1750:                                             ; preds = %1746
  br label %1753

1751:                                             ; preds = %1746
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.33, i32 noundef 3244, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

1752:                                             ; No predecessors!
  br label %1753

1753:                                             ; preds = %1752, %1750
  %1754 = phi i32 [ 1, %1750 ], [ 0, %1752 ]
  br label %1755

1755:                                             ; preds = %1753, %1745
  %1756 = phi i32 [ 1, %1745 ], [ %1754, %1753 ]
  br label %1757

1757:                                             ; preds = %1755, %1740
  %1758 = phi i32 [ 2, %1740 ], [ %1756, %1755 ]
  br label %1759

1759:                                             ; preds = %1757, %1735
  %1760 = phi i32 [ 2, %1735 ], [ %1758, %1757 ]
  br label %1761

1761:                                             ; preds = %1759, %1730
  %1762 = phi i32 [ 4, %1730 ], [ %1760, %1759 ]
  br label %1763

1763:                                             ; preds = %1761, %1725
  %1764 = phi i32 [ 4, %1725 ], [ %1762, %1761 ]
  br label %1765

1765:                                             ; preds = %1763, %1720
  %1766 = phi i32 [ 8, %1720 ], [ %1764, %1763 ]
  br label %1767

1767:                                             ; preds = %1765, %1715
  %1768 = phi i32 [ 8, %1715 ], [ %1766, %1765 ]
  br label %1769

1769:                                             ; preds = %1767, %1710
  %1770 = phi i32 [ 1, %1710 ], [ %1768, %1767 ]
  br label %1771

1771:                                             ; preds = %1769, %1705
  %1772 = phi i32 [ 1, %1705 ], [ %1770, %1769 ]
  br label %1773

1773:                                             ; preds = %1771, %1700
  %1774 = phi i32 [ 2, %1700 ], [ %1772, %1771 ]
  br label %1775

1775:                                             ; preds = %1773, %1695
  %1776 = phi i32 [ 2, %1695 ], [ %1774, %1773 ]
  br label %1777

1777:                                             ; preds = %1775, %1690
  %1778 = phi i32 [ 4, %1690 ], [ %1776, %1775 ]
  br label %1779

1779:                                             ; preds = %1777, %1685
  %1780 = phi i32 [ 8, %1685 ], [ %1778, %1777 ]
  %1781 = sext i32 %1780 to i64
  %1782 = mul i64 %1681, %1781
  %1783 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1782, i64 noundef 64)
  store ptr %1783, ptr %56, align 8, !tbaa !9
  br label %1895

1784:                                             ; preds = %1657
  %1785 = load i32, ptr %14, align 4, !tbaa !5
  %1786 = sext i32 %1785 to i64
  %1787 = load i32, ptr %17, align 4, !tbaa !5
  %1788 = sext i32 %1787 to i64
  %1789 = mul i64 %1786, %1788
  %1790 = load i32, ptr %29, align 4, !tbaa !5
  %1791 = sext i32 %1790 to i64
  %1792 = mul i64 %1789, %1791
  %1793 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1794 = load i32, ptr %1793, align 8, !tbaa !29
  %1795 = icmp eq i32 0, %1794
  br i1 %1795, label %1796, label %1797

1796:                                             ; preds = %1784
  br label %1890

1797:                                             ; preds = %1784
  %1798 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1799 = load i32, ptr %1798, align 8, !tbaa !29
  %1800 = icmp eq i32 1, %1799
  br i1 %1800, label %1801, label %1802

1801:                                             ; preds = %1797
  br label %1888

1802:                                             ; preds = %1797
  %1803 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1804 = load i32, ptr %1803, align 8, !tbaa !29
  %1805 = icmp eq i32 2, %1804
  br i1 %1805, label %1806, label %1807

1806:                                             ; preds = %1802
  br label %1886

1807:                                             ; preds = %1802
  %1808 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1809 = load i32, ptr %1808, align 8, !tbaa !29
  %1810 = icmp eq i32 3, %1809
  br i1 %1810, label %1811, label %1812

1811:                                             ; preds = %1807
  br label %1884

1812:                                             ; preds = %1807
  %1813 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1814 = load i32, ptr %1813, align 8, !tbaa !29
  %1815 = icmp eq i32 4, %1814
  br i1 %1815, label %1816, label %1817

1816:                                             ; preds = %1812
  br label %1882

1817:                                             ; preds = %1812
  %1818 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1819 = load i32, ptr %1818, align 8, !tbaa !29
  %1820 = icmp eq i32 5, %1819
  br i1 %1820, label %1821, label %1822

1821:                                             ; preds = %1817
  br label %1880

1822:                                             ; preds = %1817
  %1823 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1824 = load i32, ptr %1823, align 8, !tbaa !29
  %1825 = icmp eq i32 6, %1824
  br i1 %1825, label %1826, label %1827

1826:                                             ; preds = %1822
  br label %1878

1827:                                             ; preds = %1822
  %1828 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1829 = load i32, ptr %1828, align 8, !tbaa !29
  %1830 = icmp eq i32 7, %1829
  br i1 %1830, label %1831, label %1832

1831:                                             ; preds = %1827
  br label %1876

1832:                                             ; preds = %1827
  %1833 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1834 = load i32, ptr %1833, align 8, !tbaa !29
  %1835 = icmp eq i32 8, %1834
  br i1 %1835, label %1836, label %1837

1836:                                             ; preds = %1832
  br label %1874

1837:                                             ; preds = %1832
  %1838 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1839 = load i32, ptr %1838, align 8, !tbaa !29
  %1840 = icmp eq i32 9, %1839
  br i1 %1840, label %1841, label %1842

1841:                                             ; preds = %1837
  br label %1872

1842:                                             ; preds = %1837
  %1843 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1844 = load i32, ptr %1843, align 8, !tbaa !29
  %1845 = icmp eq i32 10, %1844
  br i1 %1845, label %1846, label %1847

1846:                                             ; preds = %1842
  br label %1870

1847:                                             ; preds = %1842
  %1848 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1849 = load i32, ptr %1848, align 8, !tbaa !29
  %1850 = icmp eq i32 11, %1849
  br i1 %1850, label %1851, label %1852

1851:                                             ; preds = %1847
  br label %1868

1852:                                             ; preds = %1847
  %1853 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1854 = load i32, ptr %1853, align 8, !tbaa !29
  %1855 = icmp eq i32 12, %1854
  br i1 %1855, label %1856, label %1857

1856:                                             ; preds = %1852
  br label %1866

1857:                                             ; preds = %1852
  %1858 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1859 = load i32, ptr %1858, align 8, !tbaa !29
  %1860 = icmp eq i32 13, %1859
  br i1 %1860, label %1861, label %1862

1861:                                             ; preds = %1857
  br label %1864

1862:                                             ; preds = %1857
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.33, i32 noundef 3246, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

1863:                                             ; No predecessors!
  br label %1864

1864:                                             ; preds = %1863, %1861
  %1865 = phi i32 [ 1, %1861 ], [ 0, %1863 ]
  br label %1866

1866:                                             ; preds = %1864, %1856
  %1867 = phi i32 [ 1, %1856 ], [ %1865, %1864 ]
  br label %1868

1868:                                             ; preds = %1866, %1851
  %1869 = phi i32 [ 2, %1851 ], [ %1867, %1866 ]
  br label %1870

1870:                                             ; preds = %1868, %1846
  %1871 = phi i32 [ 2, %1846 ], [ %1869, %1868 ]
  br label %1872

1872:                                             ; preds = %1870, %1841
  %1873 = phi i32 [ 4, %1841 ], [ %1871, %1870 ]
  br label %1874

1874:                                             ; preds = %1872, %1836
  %1875 = phi i32 [ 4, %1836 ], [ %1873, %1872 ]
  br label %1876

1876:                                             ; preds = %1874, %1831
  %1877 = phi i32 [ 8, %1831 ], [ %1875, %1874 ]
  br label %1878

1878:                                             ; preds = %1876, %1826
  %1879 = phi i32 [ 8, %1826 ], [ %1877, %1876 ]
  br label %1880

1880:                                             ; preds = %1878, %1821
  %1881 = phi i32 [ 1, %1821 ], [ %1879, %1878 ]
  br label %1882

1882:                                             ; preds = %1880, %1816
  %1883 = phi i32 [ 1, %1816 ], [ %1881, %1880 ]
  br label %1884

1884:                                             ; preds = %1882, %1811
  %1885 = phi i32 [ 2, %1811 ], [ %1883, %1882 ]
  br label %1886

1886:                                             ; preds = %1884, %1806
  %1887 = phi i32 [ 2, %1806 ], [ %1885, %1884 ]
  br label %1888

1888:                                             ; preds = %1886, %1801
  %1889 = phi i32 [ 4, %1801 ], [ %1887, %1886 ]
  br label %1890

1890:                                             ; preds = %1888, %1796
  %1891 = phi i32 [ 8, %1796 ], [ %1889, %1888 ]
  %1892 = sext i32 %1891 to i64
  %1893 = mul i64 %1792, %1892
  %1894 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1893, i64 noundef 64)
  store ptr %1894, ptr %56, align 8, !tbaa !9
  br label %1895

1895:                                             ; preds = %1890, %1779
  %1896 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 15
  %1897 = load i32, ptr %1896, align 4, !tbaa !36
  %1898 = icmp eq i32 %1897, 0
  br i1 %1898, label %1899, label %2010

1899:                                             ; preds = %1895
  %1900 = load i32, ptr %15, align 4, !tbaa !5
  %1901 = sext i32 %1900 to i64
  %1902 = load i32, ptr %18, align 4, !tbaa !5
  %1903 = sext i32 %1902 to i64
  %1904 = mul i64 %1901, %1903
  %1905 = load i32, ptr %29, align 4, !tbaa !5
  %1906 = sext i32 %1905 to i64
  %1907 = mul i64 %1904, %1906
  %1908 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1909 = load i32, ptr %1908, align 4, !tbaa !30
  %1910 = icmp eq i32 0, %1909
  br i1 %1910, label %1911, label %1912

1911:                                             ; preds = %1899
  br label %2005

1912:                                             ; preds = %1899
  %1913 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1914 = load i32, ptr %1913, align 4, !tbaa !30
  %1915 = icmp eq i32 1, %1914
  br i1 %1915, label %1916, label %1917

1916:                                             ; preds = %1912
  br label %2003

1917:                                             ; preds = %1912
  %1918 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1919 = load i32, ptr %1918, align 4, !tbaa !30
  %1920 = icmp eq i32 2, %1919
  br i1 %1920, label %1921, label %1922

1921:                                             ; preds = %1917
  br label %2001

1922:                                             ; preds = %1917
  %1923 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1924 = load i32, ptr %1923, align 4, !tbaa !30
  %1925 = icmp eq i32 3, %1924
  br i1 %1925, label %1926, label %1927

1926:                                             ; preds = %1922
  br label %1999

1927:                                             ; preds = %1922
  %1928 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1929 = load i32, ptr %1928, align 4, !tbaa !30
  %1930 = icmp eq i32 4, %1929
  br i1 %1930, label %1931, label %1932

1931:                                             ; preds = %1927
  br label %1997

1932:                                             ; preds = %1927
  %1933 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1934 = load i32, ptr %1933, align 4, !tbaa !30
  %1935 = icmp eq i32 5, %1934
  br i1 %1935, label %1936, label %1937

1936:                                             ; preds = %1932
  br label %1995

1937:                                             ; preds = %1932
  %1938 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1939 = load i32, ptr %1938, align 4, !tbaa !30
  %1940 = icmp eq i32 6, %1939
  br i1 %1940, label %1941, label %1942

1941:                                             ; preds = %1937
  br label %1993

1942:                                             ; preds = %1937
  %1943 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1944 = load i32, ptr %1943, align 4, !tbaa !30
  %1945 = icmp eq i32 7, %1944
  br i1 %1945, label %1946, label %1947

1946:                                             ; preds = %1942
  br label %1991

1947:                                             ; preds = %1942
  %1948 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1949 = load i32, ptr %1948, align 4, !tbaa !30
  %1950 = icmp eq i32 8, %1949
  br i1 %1950, label %1951, label %1952

1951:                                             ; preds = %1947
  br label %1989

1952:                                             ; preds = %1947
  %1953 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1954 = load i32, ptr %1953, align 4, !tbaa !30
  %1955 = icmp eq i32 9, %1954
  br i1 %1955, label %1956, label %1957

1956:                                             ; preds = %1952
  br label %1987

1957:                                             ; preds = %1952
  %1958 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1959 = load i32, ptr %1958, align 4, !tbaa !30
  %1960 = icmp eq i32 10, %1959
  br i1 %1960, label %1961, label %1962

1961:                                             ; preds = %1957
  br label %1985

1962:                                             ; preds = %1957
  %1963 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1964 = load i32, ptr %1963, align 4, !tbaa !30
  %1965 = icmp eq i32 11, %1964
  br i1 %1965, label %1966, label %1967

1966:                                             ; preds = %1962
  br label %1983

1967:                                             ; preds = %1962
  %1968 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1969 = load i32, ptr %1968, align 4, !tbaa !30
  %1970 = icmp eq i32 12, %1969
  br i1 %1970, label %1971, label %1972

1971:                                             ; preds = %1967
  br label %1981

1972:                                             ; preds = %1967
  %1973 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1974 = load i32, ptr %1973, align 4, !tbaa !30
  %1975 = icmp eq i32 13, %1974
  br i1 %1975, label %1976, label %1977

1976:                                             ; preds = %1972
  br label %1979

1977:                                             ; preds = %1972
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.33, i32 noundef 3249, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

1978:                                             ; No predecessors!
  br label %1979

1979:                                             ; preds = %1978, %1976
  %1980 = phi i32 [ 1, %1976 ], [ 0, %1978 ]
  br label %1981

1981:                                             ; preds = %1979, %1971
  %1982 = phi i32 [ 1, %1971 ], [ %1980, %1979 ]
  br label %1983

1983:                                             ; preds = %1981, %1966
  %1984 = phi i32 [ 2, %1966 ], [ %1982, %1981 ]
  br label %1985

1985:                                             ; preds = %1983, %1961
  %1986 = phi i32 [ 2, %1961 ], [ %1984, %1983 ]
  br label %1987

1987:                                             ; preds = %1985, %1956
  %1988 = phi i32 [ 4, %1956 ], [ %1986, %1985 ]
  br label %1989

1989:                                             ; preds = %1987, %1951
  %1990 = phi i32 [ 4, %1951 ], [ %1988, %1987 ]
  br label %1991

1991:                                             ; preds = %1989, %1946
  %1992 = phi i32 [ 8, %1946 ], [ %1990, %1989 ]
  br label %1993

1993:                                             ; preds = %1991, %1941
  %1994 = phi i32 [ 8, %1941 ], [ %1992, %1991 ]
  br label %1995

1995:                                             ; preds = %1993, %1936
  %1996 = phi i32 [ 1, %1936 ], [ %1994, %1993 ]
  br label %1997

1997:                                             ; preds = %1995, %1931
  %1998 = phi i32 [ 1, %1931 ], [ %1996, %1995 ]
  br label %1999

1999:                                             ; preds = %1997, %1926
  %2000 = phi i32 [ 2, %1926 ], [ %1998, %1997 ]
  br label %2001

2001:                                             ; preds = %1999, %1921
  %2002 = phi i32 [ 2, %1921 ], [ %2000, %1999 ]
  br label %2003

2003:                                             ; preds = %2001, %1916
  %2004 = phi i32 [ 4, %1916 ], [ %2002, %2001 ]
  br label %2005

2005:                                             ; preds = %2003, %1911
  %2006 = phi i32 [ 8, %1911 ], [ %2004, %2003 ]
  %2007 = sext i32 %2006 to i64
  %2008 = mul i64 %1907, %2007
  %2009 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2008, i64 noundef 64)
  store ptr %2009, ptr %57, align 8, !tbaa !9
  br label %2121

2010:                                             ; preds = %1895
  %2011 = load i32, ptr %15, align 4, !tbaa !5
  %2012 = sext i32 %2011 to i64
  %2013 = load i32, ptr %19, align 4, !tbaa !5
  %2014 = sext i32 %2013 to i64
  %2015 = mul i64 %2012, %2014
  %2016 = load i32, ptr %29, align 4, !tbaa !5
  %2017 = sext i32 %2016 to i64
  %2018 = mul i64 %2015, %2017
  %2019 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2020 = load i32, ptr %2019, align 4, !tbaa !30
  %2021 = icmp eq i32 0, %2020
  br i1 %2021, label %2022, label %2023

2022:                                             ; preds = %2010
  br label %2116

2023:                                             ; preds = %2010
  %2024 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2025 = load i32, ptr %2024, align 4, !tbaa !30
  %2026 = icmp eq i32 1, %2025
  br i1 %2026, label %2027, label %2028

2027:                                             ; preds = %2023
  br label %2114

2028:                                             ; preds = %2023
  %2029 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2030 = load i32, ptr %2029, align 4, !tbaa !30
  %2031 = icmp eq i32 2, %2030
  br i1 %2031, label %2032, label %2033

2032:                                             ; preds = %2028
  br label %2112

2033:                                             ; preds = %2028
  %2034 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2035 = load i32, ptr %2034, align 4, !tbaa !30
  %2036 = icmp eq i32 3, %2035
  br i1 %2036, label %2037, label %2038

2037:                                             ; preds = %2033
  br label %2110

2038:                                             ; preds = %2033
  %2039 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2040 = load i32, ptr %2039, align 4, !tbaa !30
  %2041 = icmp eq i32 4, %2040
  br i1 %2041, label %2042, label %2043

2042:                                             ; preds = %2038
  br label %2108

2043:                                             ; preds = %2038
  %2044 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2045 = load i32, ptr %2044, align 4, !tbaa !30
  %2046 = icmp eq i32 5, %2045
  br i1 %2046, label %2047, label %2048

2047:                                             ; preds = %2043
  br label %2106

2048:                                             ; preds = %2043
  %2049 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2050 = load i32, ptr %2049, align 4, !tbaa !30
  %2051 = icmp eq i32 6, %2050
  br i1 %2051, label %2052, label %2053

2052:                                             ; preds = %2048
  br label %2104

2053:                                             ; preds = %2048
  %2054 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2055 = load i32, ptr %2054, align 4, !tbaa !30
  %2056 = icmp eq i32 7, %2055
  br i1 %2056, label %2057, label %2058

2057:                                             ; preds = %2053
  br label %2102

2058:                                             ; preds = %2053
  %2059 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2060 = load i32, ptr %2059, align 4, !tbaa !30
  %2061 = icmp eq i32 8, %2060
  br i1 %2061, label %2062, label %2063

2062:                                             ; preds = %2058
  br label %2100

2063:                                             ; preds = %2058
  %2064 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2065 = load i32, ptr %2064, align 4, !tbaa !30
  %2066 = icmp eq i32 9, %2065
  br i1 %2066, label %2067, label %2068

2067:                                             ; preds = %2063
  br label %2098

2068:                                             ; preds = %2063
  %2069 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2070 = load i32, ptr %2069, align 4, !tbaa !30
  %2071 = icmp eq i32 10, %2070
  br i1 %2071, label %2072, label %2073

2072:                                             ; preds = %2068
  br label %2096

2073:                                             ; preds = %2068
  %2074 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2075 = load i32, ptr %2074, align 4, !tbaa !30
  %2076 = icmp eq i32 11, %2075
  br i1 %2076, label %2077, label %2078

2077:                                             ; preds = %2073
  br label %2094

2078:                                             ; preds = %2073
  %2079 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2080 = load i32, ptr %2079, align 4, !tbaa !30
  %2081 = icmp eq i32 12, %2080
  br i1 %2081, label %2082, label %2083

2082:                                             ; preds = %2078
  br label %2092

2083:                                             ; preds = %2078
  %2084 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2085 = load i32, ptr %2084, align 4, !tbaa !30
  %2086 = icmp eq i32 13, %2085
  br i1 %2086, label %2087, label %2088

2087:                                             ; preds = %2083
  br label %2090

2088:                                             ; preds = %2083
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.33, i32 noundef 3251, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

2089:                                             ; No predecessors!
  br label %2090

2090:                                             ; preds = %2089, %2087
  %2091 = phi i32 [ 1, %2087 ], [ 0, %2089 ]
  br label %2092

2092:                                             ; preds = %2090, %2082
  %2093 = phi i32 [ 1, %2082 ], [ %2091, %2090 ]
  br label %2094

2094:                                             ; preds = %2092, %2077
  %2095 = phi i32 [ 2, %2077 ], [ %2093, %2092 ]
  br label %2096

2096:                                             ; preds = %2094, %2072
  %2097 = phi i32 [ 2, %2072 ], [ %2095, %2094 ]
  br label %2098

2098:                                             ; preds = %2096, %2067
  %2099 = phi i32 [ 4, %2067 ], [ %2097, %2096 ]
  br label %2100

2100:                                             ; preds = %2098, %2062
  %2101 = phi i32 [ 4, %2062 ], [ %2099, %2098 ]
  br label %2102

2102:                                             ; preds = %2100, %2057
  %2103 = phi i32 [ 8, %2057 ], [ %2101, %2100 ]
  br label %2104

2104:                                             ; preds = %2102, %2052
  %2105 = phi i32 [ 8, %2052 ], [ %2103, %2102 ]
  br label %2106

2106:                                             ; preds = %2104, %2047
  %2107 = phi i32 [ 1, %2047 ], [ %2105, %2104 ]
  br label %2108

2108:                                             ; preds = %2106, %2042
  %2109 = phi i32 [ 1, %2042 ], [ %2107, %2106 ]
  br label %2110

2110:                                             ; preds = %2108, %2037
  %2111 = phi i32 [ 2, %2037 ], [ %2109, %2108 ]
  br label %2112

2112:                                             ; preds = %2110, %2032
  %2113 = phi i32 [ 2, %2032 ], [ %2111, %2110 ]
  br label %2114

2114:                                             ; preds = %2112, %2027
  %2115 = phi i32 [ 4, %2027 ], [ %2113, %2112 ]
  br label %2116

2116:                                             ; preds = %2114, %2022
  %2117 = phi i32 [ 8, %2022 ], [ %2115, %2114 ]
  %2118 = sext i32 %2117 to i64
  %2119 = mul i64 %2018, %2118
  %2120 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2119, i64 noundef 64)
  store ptr %2120, ptr %57, align 8, !tbaa !9
  br label %2121

2121:                                             ; preds = %2116, %2005
  %2122 = load i32, ptr %16, align 4, !tbaa !5
  %2123 = sext i32 %2122 to i64
  %2124 = load i32, ptr %18, align 4, !tbaa !5
  %2125 = sext i32 %2124 to i64
  %2126 = mul i64 %2123, %2125
  %2127 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2128 = load i32, ptr %2127, align 8, !tbaa !32
  %2129 = icmp eq i32 0, %2128
  br i1 %2129, label %2130, label %2131

2130:                                             ; preds = %2121
  br label %2224

2131:                                             ; preds = %2121
  %2132 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2133 = load i32, ptr %2132, align 8, !tbaa !32
  %2134 = icmp eq i32 1, %2133
  br i1 %2134, label %2135, label %2136

2135:                                             ; preds = %2131
  br label %2222

2136:                                             ; preds = %2131
  %2137 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2138 = load i32, ptr %2137, align 8, !tbaa !32
  %2139 = icmp eq i32 2, %2138
  br i1 %2139, label %2140, label %2141

2140:                                             ; preds = %2136
  br label %2220

2141:                                             ; preds = %2136
  %2142 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2143 = load i32, ptr %2142, align 8, !tbaa !32
  %2144 = icmp eq i32 3, %2143
  br i1 %2144, label %2145, label %2146

2145:                                             ; preds = %2141
  br label %2218

2146:                                             ; preds = %2141
  %2147 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2148 = load i32, ptr %2147, align 8, !tbaa !32
  %2149 = icmp eq i32 4, %2148
  br i1 %2149, label %2150, label %2151

2150:                                             ; preds = %2146
  br label %2216

2151:                                             ; preds = %2146
  %2152 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2153 = load i32, ptr %2152, align 8, !tbaa !32
  %2154 = icmp eq i32 5, %2153
  br i1 %2154, label %2155, label %2156

2155:                                             ; preds = %2151
  br label %2214

2156:                                             ; preds = %2151
  %2157 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2158 = load i32, ptr %2157, align 8, !tbaa !32
  %2159 = icmp eq i32 6, %2158
  br i1 %2159, label %2160, label %2161

2160:                                             ; preds = %2156
  br label %2212

2161:                                             ; preds = %2156
  %2162 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2163 = load i32, ptr %2162, align 8, !tbaa !32
  %2164 = icmp eq i32 7, %2163
  br i1 %2164, label %2165, label %2166

2165:                                             ; preds = %2161
  br label %2210

2166:                                             ; preds = %2161
  %2167 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2168 = load i32, ptr %2167, align 8, !tbaa !32
  %2169 = icmp eq i32 8, %2168
  br i1 %2169, label %2170, label %2171

2170:                                             ; preds = %2166
  br label %2208

2171:                                             ; preds = %2166
  %2172 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2173 = load i32, ptr %2172, align 8, !tbaa !32
  %2174 = icmp eq i32 9, %2173
  br i1 %2174, label %2175, label %2176

2175:                                             ; preds = %2171
  br label %2206

2176:                                             ; preds = %2171
  %2177 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2178 = load i32, ptr %2177, align 8, !tbaa !32
  %2179 = icmp eq i32 10, %2178
  br i1 %2179, label %2180, label %2181

2180:                                             ; preds = %2176
  br label %2204

2181:                                             ; preds = %2176
  %2182 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2183 = load i32, ptr %2182, align 8, !tbaa !32
  %2184 = icmp eq i32 11, %2183
  br i1 %2184, label %2185, label %2186

2185:                                             ; preds = %2181
  br label %2202

2186:                                             ; preds = %2181
  %2187 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2188 = load i32, ptr %2187, align 8, !tbaa !32
  %2189 = icmp eq i32 12, %2188
  br i1 %2189, label %2190, label %2191

2190:                                             ; preds = %2186
  br label %2200

2191:                                             ; preds = %2186
  %2192 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2193 = load i32, ptr %2192, align 8, !tbaa !32
  %2194 = icmp eq i32 13, %2193
  br i1 %2194, label %2195, label %2196

2195:                                             ; preds = %2191
  br label %2198

2196:                                             ; preds = %2191
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.33, i32 noundef 3253, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

2197:                                             ; No predecessors!
  br label %2198

2198:                                             ; preds = %2197, %2195
  %2199 = phi i32 [ 1, %2195 ], [ 0, %2197 ]
  br label %2200

2200:                                             ; preds = %2198, %2190
  %2201 = phi i32 [ 1, %2190 ], [ %2199, %2198 ]
  br label %2202

2202:                                             ; preds = %2200, %2185
  %2203 = phi i32 [ 2, %2185 ], [ %2201, %2200 ]
  br label %2204

2204:                                             ; preds = %2202, %2180
  %2205 = phi i32 [ 2, %2180 ], [ %2203, %2202 ]
  br label %2206

2206:                                             ; preds = %2204, %2175
  %2207 = phi i32 [ 4, %2175 ], [ %2205, %2204 ]
  br label %2208

2208:                                             ; preds = %2206, %2170
  %2209 = phi i32 [ 4, %2170 ], [ %2207, %2206 ]
  br label %2210

2210:                                             ; preds = %2208, %2165
  %2211 = phi i32 [ 8, %2165 ], [ %2209, %2208 ]
  br label %2212

2212:                                             ; preds = %2210, %2160
  %2213 = phi i32 [ 8, %2160 ], [ %2211, %2210 ]
  br label %2214

2214:                                             ; preds = %2212, %2155
  %2215 = phi i32 [ 1, %2155 ], [ %2213, %2212 ]
  br label %2216

2216:                                             ; preds = %2214, %2150
  %2217 = phi i32 [ 1, %2150 ], [ %2215, %2214 ]
  br label %2218

2218:                                             ; preds = %2216, %2145
  %2219 = phi i32 [ 2, %2145 ], [ %2217, %2216 ]
  br label %2220

2220:                                             ; preds = %2218, %2140
  %2221 = phi i32 [ 2, %2140 ], [ %2219, %2218 ]
  br label %2222

2222:                                             ; preds = %2220, %2135
  %2223 = phi i32 [ 4, %2135 ], [ %2221, %2220 ]
  br label %2224

2224:                                             ; preds = %2222, %2130
  %2225 = phi i32 [ 8, %2130 ], [ %2223, %2222 ]
  %2226 = sext i32 %2225 to i64
  %2227 = mul i64 %2126, %2226
  %2228 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2227, i64 noundef 64)
  store ptr %2228, ptr %58, align 8, !tbaa !9
  %2229 = load i32, ptr %16, align 4, !tbaa !5
  %2230 = sext i32 %2229 to i64
  %2231 = load i32, ptr %18, align 4, !tbaa !5
  %2232 = sext i32 %2231 to i64
  %2233 = mul i64 %2230, %2232
  %2234 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2235 = load i32, ptr %2234, align 8, !tbaa !32
  %2236 = icmp eq i32 0, %2235
  br i1 %2236, label %2237, label %2238

2237:                                             ; preds = %2224
  br label %2331

2238:                                             ; preds = %2224
  %2239 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2240 = load i32, ptr %2239, align 8, !tbaa !32
  %2241 = icmp eq i32 1, %2240
  br i1 %2241, label %2242, label %2243

2242:                                             ; preds = %2238
  br label %2329

2243:                                             ; preds = %2238
  %2244 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2245 = load i32, ptr %2244, align 8, !tbaa !32
  %2246 = icmp eq i32 2, %2245
  br i1 %2246, label %2247, label %2248

2247:                                             ; preds = %2243
  br label %2327

2248:                                             ; preds = %2243
  %2249 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2250 = load i32, ptr %2249, align 8, !tbaa !32
  %2251 = icmp eq i32 3, %2250
  br i1 %2251, label %2252, label %2253

2252:                                             ; preds = %2248
  br label %2325

2253:                                             ; preds = %2248
  %2254 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2255 = load i32, ptr %2254, align 8, !tbaa !32
  %2256 = icmp eq i32 4, %2255
  br i1 %2256, label %2257, label %2258

2257:                                             ; preds = %2253
  br label %2323

2258:                                             ; preds = %2253
  %2259 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2260 = load i32, ptr %2259, align 8, !tbaa !32
  %2261 = icmp eq i32 5, %2260
  br i1 %2261, label %2262, label %2263

2262:                                             ; preds = %2258
  br label %2321

2263:                                             ; preds = %2258
  %2264 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2265 = load i32, ptr %2264, align 8, !tbaa !32
  %2266 = icmp eq i32 6, %2265
  br i1 %2266, label %2267, label %2268

2267:                                             ; preds = %2263
  br label %2319

2268:                                             ; preds = %2263
  %2269 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2270 = load i32, ptr %2269, align 8, !tbaa !32
  %2271 = icmp eq i32 7, %2270
  br i1 %2271, label %2272, label %2273

2272:                                             ; preds = %2268
  br label %2317

2273:                                             ; preds = %2268
  %2274 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2275 = load i32, ptr %2274, align 8, !tbaa !32
  %2276 = icmp eq i32 8, %2275
  br i1 %2276, label %2277, label %2278

2277:                                             ; preds = %2273
  br label %2315

2278:                                             ; preds = %2273
  %2279 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2280 = load i32, ptr %2279, align 8, !tbaa !32
  %2281 = icmp eq i32 9, %2280
  br i1 %2281, label %2282, label %2283

2282:                                             ; preds = %2278
  br label %2313

2283:                                             ; preds = %2278
  %2284 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2285 = load i32, ptr %2284, align 8, !tbaa !32
  %2286 = icmp eq i32 10, %2285
  br i1 %2286, label %2287, label %2288

2287:                                             ; preds = %2283
  br label %2311

2288:                                             ; preds = %2283
  %2289 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2290 = load i32, ptr %2289, align 8, !tbaa !32
  %2291 = icmp eq i32 11, %2290
  br i1 %2291, label %2292, label %2293

2292:                                             ; preds = %2288
  br label %2309

2293:                                             ; preds = %2288
  %2294 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2295 = load i32, ptr %2294, align 8, !tbaa !32
  %2296 = icmp eq i32 12, %2295
  br i1 %2296, label %2297, label %2298

2297:                                             ; preds = %2293
  br label %2307

2298:                                             ; preds = %2293
  %2299 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2300 = load i32, ptr %2299, align 8, !tbaa !32
  %2301 = icmp eq i32 13, %2300
  br i1 %2301, label %2302, label %2303

2302:                                             ; preds = %2298
  br label %2305

2303:                                             ; preds = %2298
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.33, i32 noundef 3254, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

2304:                                             ; No predecessors!
  br label %2305

2305:                                             ; preds = %2304, %2302
  %2306 = phi i32 [ 1, %2302 ], [ 0, %2304 ]
  br label %2307

2307:                                             ; preds = %2305, %2297
  %2308 = phi i32 [ 1, %2297 ], [ %2306, %2305 ]
  br label %2309

2309:                                             ; preds = %2307, %2292
  %2310 = phi i32 [ 2, %2292 ], [ %2308, %2307 ]
  br label %2311

2311:                                             ; preds = %2309, %2287
  %2312 = phi i32 [ 2, %2287 ], [ %2310, %2309 ]
  br label %2313

2313:                                             ; preds = %2311, %2282
  %2314 = phi i32 [ 4, %2282 ], [ %2312, %2311 ]
  br label %2315

2315:                                             ; preds = %2313, %2277
  %2316 = phi i32 [ 4, %2277 ], [ %2314, %2313 ]
  br label %2317

2317:                                             ; preds = %2315, %2272
  %2318 = phi i32 [ 8, %2272 ], [ %2316, %2315 ]
  br label %2319

2319:                                             ; preds = %2317, %2267
  %2320 = phi i32 [ 8, %2267 ], [ %2318, %2317 ]
  br label %2321

2321:                                             ; preds = %2319, %2262
  %2322 = phi i32 [ 1, %2262 ], [ %2320, %2319 ]
  br label %2323

2323:                                             ; preds = %2321, %2257
  %2324 = phi i32 [ 1, %2257 ], [ %2322, %2321 ]
  br label %2325

2325:                                             ; preds = %2323, %2252
  %2326 = phi i32 [ 2, %2252 ], [ %2324, %2323 ]
  br label %2327

2327:                                             ; preds = %2325, %2247
  %2328 = phi i32 [ 2, %2247 ], [ %2326, %2325 ]
  br label %2329

2329:                                             ; preds = %2327, %2242
  %2330 = phi i32 [ 4, %2242 ], [ %2328, %2327 ]
  br label %2331

2331:                                             ; preds = %2329, %2237
  %2332 = phi i32 [ 8, %2237 ], [ %2330, %2329 ]
  %2333 = sext i32 %2332 to i64
  %2334 = mul i64 %2233, %2333
  %2335 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2334, i64 noundef 64)
  store ptr %2335, ptr %59, align 8, !tbaa !9
  %2336 = load i32, ptr %16, align 4, !tbaa !5
  %2337 = sext i32 %2336 to i64
  %2338 = load i32, ptr %18, align 4, !tbaa !5
  %2339 = sext i32 %2338 to i64
  %2340 = mul i64 %2337, %2339
  %2341 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2342 = load i32, ptr %2341, align 8, !tbaa !32
  %2343 = icmp eq i32 0, %2342
  br i1 %2343, label %2344, label %2345

2344:                                             ; preds = %2331
  br label %2438

2345:                                             ; preds = %2331
  %2346 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2347 = load i32, ptr %2346, align 8, !tbaa !32
  %2348 = icmp eq i32 1, %2347
  br i1 %2348, label %2349, label %2350

2349:                                             ; preds = %2345
  br label %2436

2350:                                             ; preds = %2345
  %2351 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2352 = load i32, ptr %2351, align 8, !tbaa !32
  %2353 = icmp eq i32 2, %2352
  br i1 %2353, label %2354, label %2355

2354:                                             ; preds = %2350
  br label %2434

2355:                                             ; preds = %2350
  %2356 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2357 = load i32, ptr %2356, align 8, !tbaa !32
  %2358 = icmp eq i32 3, %2357
  br i1 %2358, label %2359, label %2360

2359:                                             ; preds = %2355
  br label %2432

2360:                                             ; preds = %2355
  %2361 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2362 = load i32, ptr %2361, align 8, !tbaa !32
  %2363 = icmp eq i32 4, %2362
  br i1 %2363, label %2364, label %2365

2364:                                             ; preds = %2360
  br label %2430

2365:                                             ; preds = %2360
  %2366 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2367 = load i32, ptr %2366, align 8, !tbaa !32
  %2368 = icmp eq i32 5, %2367
  br i1 %2368, label %2369, label %2370

2369:                                             ; preds = %2365
  br label %2428

2370:                                             ; preds = %2365
  %2371 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2372 = load i32, ptr %2371, align 8, !tbaa !32
  %2373 = icmp eq i32 6, %2372
  br i1 %2373, label %2374, label %2375

2374:                                             ; preds = %2370
  br label %2426

2375:                                             ; preds = %2370
  %2376 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2377 = load i32, ptr %2376, align 8, !tbaa !32
  %2378 = icmp eq i32 7, %2377
  br i1 %2378, label %2379, label %2380

2379:                                             ; preds = %2375
  br label %2424

2380:                                             ; preds = %2375
  %2381 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2382 = load i32, ptr %2381, align 8, !tbaa !32
  %2383 = icmp eq i32 8, %2382
  br i1 %2383, label %2384, label %2385

2384:                                             ; preds = %2380
  br label %2422

2385:                                             ; preds = %2380
  %2386 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2387 = load i32, ptr %2386, align 8, !tbaa !32
  %2388 = icmp eq i32 9, %2387
  br i1 %2388, label %2389, label %2390

2389:                                             ; preds = %2385
  br label %2420

2390:                                             ; preds = %2385
  %2391 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2392 = load i32, ptr %2391, align 8, !tbaa !32
  %2393 = icmp eq i32 10, %2392
  br i1 %2393, label %2394, label %2395

2394:                                             ; preds = %2390
  br label %2418

2395:                                             ; preds = %2390
  %2396 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2397 = load i32, ptr %2396, align 8, !tbaa !32
  %2398 = icmp eq i32 11, %2397
  br i1 %2398, label %2399, label %2400

2399:                                             ; preds = %2395
  br label %2416

2400:                                             ; preds = %2395
  %2401 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2402 = load i32, ptr %2401, align 8, !tbaa !32
  %2403 = icmp eq i32 12, %2402
  br i1 %2403, label %2404, label %2405

2404:                                             ; preds = %2400
  br label %2414

2405:                                             ; preds = %2400
  %2406 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2407 = load i32, ptr %2406, align 8, !tbaa !32
  %2408 = icmp eq i32 13, %2407
  br i1 %2408, label %2409, label %2410

2409:                                             ; preds = %2405
  br label %2412

2410:                                             ; preds = %2405
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.33, i32 noundef 3255, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

2411:                                             ; No predecessors!
  br label %2412

2412:                                             ; preds = %2411, %2409
  %2413 = phi i32 [ 1, %2409 ], [ 0, %2411 ]
  br label %2414

2414:                                             ; preds = %2412, %2404
  %2415 = phi i32 [ 1, %2404 ], [ %2413, %2412 ]
  br label %2416

2416:                                             ; preds = %2414, %2399
  %2417 = phi i32 [ 2, %2399 ], [ %2415, %2414 ]
  br label %2418

2418:                                             ; preds = %2416, %2394
  %2419 = phi i32 [ 2, %2394 ], [ %2417, %2416 ]
  br label %2420

2420:                                             ; preds = %2418, %2389
  %2421 = phi i32 [ 4, %2389 ], [ %2419, %2418 ]
  br label %2422

2422:                                             ; preds = %2420, %2384
  %2423 = phi i32 [ 4, %2384 ], [ %2421, %2420 ]
  br label %2424

2424:                                             ; preds = %2422, %2379
  %2425 = phi i32 [ 8, %2379 ], [ %2423, %2422 ]
  br label %2426

2426:                                             ; preds = %2424, %2374
  %2427 = phi i32 [ 8, %2374 ], [ %2425, %2424 ]
  br label %2428

2428:                                             ; preds = %2426, %2369
  %2429 = phi i32 [ 1, %2369 ], [ %2427, %2426 ]
  br label %2430

2430:                                             ; preds = %2428, %2364
  %2431 = phi i32 [ 1, %2364 ], [ %2429, %2428 ]
  br label %2432

2432:                                             ; preds = %2430, %2359
  %2433 = phi i32 [ 2, %2359 ], [ %2431, %2430 ]
  br label %2434

2434:                                             ; preds = %2432, %2354
  %2435 = phi i32 [ 2, %2354 ], [ %2433, %2432 ]
  br label %2436

2436:                                             ; preds = %2434, %2349
  %2437 = phi i32 [ 4, %2349 ], [ %2435, %2434 ]
  br label %2438

2438:                                             ; preds = %2436, %2344
  %2439 = phi i32 [ 8, %2344 ], [ %2437, %2436 ]
  %2440 = sext i32 %2439 to i64
  %2441 = mul i64 %2340, %2440
  %2442 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2441, i64 noundef 64)
  store ptr %2442, ptr %60, align 8, !tbaa !9
  %2443 = load i32, ptr %10, align 4, !tbaa !5
  %2444 = icmp eq i32 %2443, 12
  br i1 %2444, label %2445, label %2544

2445:                                             ; preds = %2438
  %2446 = load i32, ptr %11, align 4, !tbaa !5
  %2447 = icmp eq i32 %2446, 3
  br i1 %2447, label %2448, label %2544

2448:                                             ; preds = %2445
  %2449 = load i32, ptr %12, align 4, !tbaa !5
  %2450 = icmp eq i32 %2449, 3
  br i1 %2450, label %2457, label %2451

2451:                                             ; preds = %2448
  %2452 = load i32, ptr %12, align 4, !tbaa !5
  %2453 = icmp eq i32 %2452, 1
  br i1 %2453, label %2457, label %2454

2454:                                             ; preds = %2451
  %2455 = load i32, ptr %12, align 4, !tbaa !5
  %2456 = icmp eq i32 %2455, 14
  br i1 %2456, label %2457, label %2544

2457:                                             ; preds = %2454, %2451, %2448
  %2458 = load i32, ptr %13, align 4, !tbaa !5
  %2459 = icmp eq i32 %2458, 3
  br i1 %2459, label %2463, label %2460

2460:                                             ; preds = %2457
  %2461 = load i32, ptr %13, align 4, !tbaa !5
  %2462 = icmp eq i32 %2461, 1
  br i1 %2462, label %2463, label %2544

2463:                                             ; preds = %2460, %2457
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #10
  store i32 0, ptr %67, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  %2464 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2465 = load i32, ptr %2464, align 8, !tbaa !49
  %2466 = sext i32 %2465 to i64
  %2467 = mul i64 %2466, 4
  %2468 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2467, i64 noundef 64)
  store ptr %2468, ptr %68, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %2469 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2470 = load i32, ptr %2469, align 8, !tbaa !49
  %2471 = sext i32 %2470 to i64
  %2472 = mul i64 %2471, 2
  %2473 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2472, i64 noundef 64)
  store ptr %2473, ptr %69, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  %2474 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2475 = load i32, ptr %2474, align 8, !tbaa !49
  %2476 = sext i32 %2475 to i64
  %2477 = mul i64 %2476, 4
  %2478 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2477, i64 noundef 64)
  store ptr %2478, ptr %70, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  %2479 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2480 = load i32, ptr %2479, align 8, !tbaa !49
  %2481 = sext i32 %2480 to i64
  %2482 = mul i64 %2481, 2
  %2483 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2482, i64 noundef 64)
  store ptr %2483, ptr %71, align 8, !tbaa !9
  store i32 0, ptr %67, align 4, !tbaa !5
  br label %2484

2484:                                             ; preds = %2504, %2463
  %2485 = load i32, ptr %67, align 4, !tbaa !5
  %2486 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2487 = load i32, ptr %2486, align 8, !tbaa !49
  %2488 = icmp slt i32 %2485, %2487
  br i1 %2488, label %2489, label %2507

2489:                                             ; preds = %2484
  %2490 = call double @get_random_posneg_p5_num()
  %2491 = fptrunc double %2490 to float
  %2492 = fmul float 0x3FB99999A0000000, %2491
  %2493 = load ptr, ptr %68, align 8, !tbaa !9
  %2494 = load i32, ptr %67, align 4, !tbaa !5
  %2495 = sext i32 %2494 to i64
  %2496 = getelementptr inbounds float, ptr %2493, i64 %2495
  store float %2492, ptr %2496, align 4, !tbaa !13
  %2497 = call double @get_random_posneg_p5_num()
  %2498 = fptrunc double %2497 to float
  %2499 = fmul float 0x3FC99999A0000000, %2498
  %2500 = load ptr, ptr %70, align 8, !tbaa !9
  %2501 = load i32, ptr %67, align 4, !tbaa !5
  %2502 = sext i32 %2501 to i64
  %2503 = getelementptr inbounds float, ptr %2500, i64 %2502
  store float %2499, ptr %2503, align 4, !tbaa !13
  br label %2504

2504:                                             ; preds = %2489
  %2505 = load i32, ptr %67, align 4, !tbaa !5
  %2506 = add nsw i32 %2505, 1
  store i32 %2506, ptr %67, align 4, !tbaa !5
  br label %2484, !llvm.loop !55

2507:                                             ; preds = %2484
  %2508 = load ptr, ptr %68, align 8, !tbaa !9
  %2509 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  store ptr %2508, ptr %2509, align 8, !tbaa !57
  %2510 = load ptr, ptr %69, align 8, !tbaa !9
  %2511 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 36
  store ptr %2510, ptr %2511, align 8, !tbaa !58
  %2512 = load ptr, ptr %70, align 8, !tbaa !9
  %2513 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 31
  store ptr %2512, ptr %2513, align 8, !tbaa !59
  %2514 = load ptr, ptr %71, align 8, !tbaa !9
  %2515 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 32
  store ptr %2514, ptr %2515, align 8, !tbaa !60
  %2516 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  %2517 = load ptr, ptr %2516, align 8, !tbaa !57
  %2518 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 36
  %2519 = load ptr, ptr %2518, align 8, !tbaa !58
  %2520 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2521 = load i32, ptr %2520, align 8, !tbaa !49
  %2522 = sext i32 %2521 to i64
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %2517, ptr noundef %2519, i64 noundef %2522)
  %2523 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 36
  %2524 = load ptr, ptr %2523, align 8, !tbaa !58
  %2525 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  %2526 = load ptr, ptr %2525, align 8, !tbaa !57
  %2527 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2528 = load i32, ptr %2527, align 8, !tbaa !49
  %2529 = sext i32 %2528 to i64
  call void @libxsmm_convert_f16_f32(ptr noundef %2524, ptr noundef %2526, i64 noundef %2529)
  %2530 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 31
  %2531 = load ptr, ptr %2530, align 8, !tbaa !59
  %2532 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 32
  %2533 = load ptr, ptr %2532, align 8, !tbaa !60
  %2534 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2535 = load i32, ptr %2534, align 8, !tbaa !49
  %2536 = sext i32 %2535 to i64
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %2531, ptr noundef %2533, i64 noundef %2536)
  %2537 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 32
  %2538 = load ptr, ptr %2537, align 8, !tbaa !60
  %2539 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 31
  %2540 = load ptr, ptr %2539, align 8, !tbaa !59
  %2541 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2542 = load i32, ptr %2541, align 8, !tbaa !49
  %2543 = sext i32 %2542 to i64
  call void @libxsmm_convert_f16_f32(ptr noundef %2538, ptr noundef %2540, i64 noundef %2543)
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #10
  br label %2544

2544:                                             ; preds = %2507, %2460, %2454, %2445, %2438
  %2545 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %2546 = load i32, ptr %2545, align 8, !tbaa !17
  %2547 = icmp ugt i32 %2546, 0
  br i1 %2547, label %2548, label %2575

2548:                                             ; preds = %2544
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #10
  store i32 0, ptr %72, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #10
  %2549 = load i32, ptr %14, align 4, !tbaa !5
  %2550 = load i32, ptr %29, align 4, !tbaa !5
  %2551 = mul nsw i32 %2549, %2550
  %2552 = sext i32 %2551 to i64
  %2553 = mul i64 %2552, 1
  %2554 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2553, i64 noundef 64)
  store ptr %2554, ptr %73, align 8, !tbaa !9
  store i32 0, ptr %72, align 4, !tbaa !5
  br label %2555

2555:                                             ; preds = %2569, %2548
  %2556 = load i32, ptr %72, align 4, !tbaa !5
  %2557 = load i32, ptr %14, align 4, !tbaa !5
  %2558 = load i32, ptr %29, align 4, !tbaa !5
  %2559 = mul nsw i32 %2557, %2558
  %2560 = icmp slt i32 %2556, %2559
  br i1 %2560, label %2561, label %2572

2561:                                             ; preds = %2555
  %2562 = call double @get_random_pos_p5_num()
  %2563 = fmul double %2562, 2.000000e+01
  %2564 = fptoui double %2563 to i8
  %2565 = load ptr, ptr %73, align 8, !tbaa !9
  %2566 = load i32, ptr %72, align 4, !tbaa !5
  %2567 = sext i32 %2566 to i64
  %2568 = getelementptr inbounds i8, ptr %2565, i64 %2567
  store i8 %2564, ptr %2568, align 1, !tbaa !61
  br label %2569

2569:                                             ; preds = %2561
  %2570 = load i32, ptr %72, align 4, !tbaa !5
  %2571 = add nsw i32 %2570, 1
  store i32 %2571, ptr %72, align 4, !tbaa !5
  br label %2555, !llvm.loop !62

2572:                                             ; preds = %2555
  %2573 = load ptr, ptr %73, align 8, !tbaa !9
  %2574 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 33
  store ptr %2573, ptr %2574, align 8, !tbaa !63
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #10
  br label %2575

2575:                                             ; preds = %2572, %2544
  %2576 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %2577 = load i32, ptr %2576, align 4, !tbaa !18
  %2578 = icmp ugt i32 %2577, 0
  br i1 %2578, label %2587, label %2579

2579:                                             ; preds = %2575
  %2580 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %2581 = load i32, ptr %2580, align 8, !tbaa !19
  %2582 = icmp ugt i32 %2581, 0
  br i1 %2582, label %2587, label %2583

2583:                                             ; preds = %2579
  %2584 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %2585 = load i32, ptr %2584, align 4, !tbaa !20
  %2586 = icmp ugt i32 %2585, 0
  br i1 %2586, label %2587, label %2658

2587:                                             ; preds = %2583, %2579, %2575
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #10
  store i32 0, ptr %74, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #10
  %2588 = load i32, ptr %14, align 4, !tbaa !5
  %2589 = sext i32 %2588 to i64
  %2590 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 6
  %2591 = load i32, ptr %2590, align 8, !tbaa !51
  %2592 = sdiv i32 %2591, 32
  %2593 = sext i32 %2592 to i64
  %2594 = mul i64 %2589, %2593
  %2595 = load i32, ptr %29, align 4, !tbaa !5
  %2596 = sext i32 %2595 to i64
  %2597 = mul i64 %2594, %2596
  %2598 = trunc i64 %2597 to i32
  store i32 %2598, ptr %75, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #10
  %2599 = load i32, ptr %75, align 4, !tbaa !5
  %2600 = zext i32 %2599 to i64
  %2601 = mul i64 %2600, 1
  %2602 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2601, i64 noundef 64)
  store ptr %2602, ptr %76, align 8, !tbaa !9
  store i32 0, ptr %74, align 4, !tbaa !5
  br label %2603

2603:                                             ; preds = %2616, %2587
  %2604 = load i32, ptr %74, align 4, !tbaa !5
  %2605 = load i32, ptr %75, align 4, !tbaa !5
  %2606 = icmp ult i32 %2604, %2605
  br i1 %2606, label %2607, label %2619

2607:                                             ; preds = %2603
  %2608 = call i32 @rand() #10
  %2609 = srem i32 %2608, 10
  %2610 = add nsw i32 126, %2609
  %2611 = trunc i32 %2610 to i8
  %2612 = load ptr, ptr %76, align 8, !tbaa !9
  %2613 = load i32, ptr %74, align 4, !tbaa !5
  %2614 = sext i32 %2613 to i64
  %2615 = getelementptr inbounds i8, ptr %2612, i64 %2614
  store i8 %2611, ptr %2615, align 1, !tbaa !61
  br label %2616

2616:                                             ; preds = %2607
  %2617 = load i32, ptr %74, align 4, !tbaa !5
  %2618 = add nsw i32 %2617, 1
  store i32 %2618, ptr %74, align 4, !tbaa !5
  br label %2603, !llvm.loop !64

2619:                                             ; preds = %2603
  %2620 = load ptr, ptr %76, align 8, !tbaa !9
  %2621 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 34
  store ptr %2620, ptr %2621, align 8, !tbaa !65
  %2622 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %2623 = load i32, ptr %2622, align 4, !tbaa !20
  %2624 = icmp ugt i32 %2623, 0
  br i1 %2624, label %2625, label %2657

2625:                                             ; preds = %2619
  %2626 = load i32, ptr %18, align 4, !tbaa !5
  %2627 = sext i32 %2626 to i64
  %2628 = load i32, ptr %15, align 4, !tbaa !5
  %2629 = sdiv i32 %2628, 32
  %2630 = sext i32 %2629 to i64
  %2631 = mul i64 %2627, %2630
  %2632 = load i32, ptr %29, align 4, !tbaa !5
  %2633 = sext i32 %2632 to i64
  %2634 = mul i64 %2631, %2633
  %2635 = trunc i64 %2634 to i32
  store i32 %2635, ptr %75, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #10
  %2636 = load i32, ptr %75, align 4, !tbaa !5
  %2637 = zext i32 %2636 to i64
  %2638 = mul i64 %2637, 4
  %2639 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2638, i64 noundef 64)
  store ptr %2639, ptr %77, align 8, !tbaa !9
  store i32 0, ptr %74, align 4, !tbaa !5
  br label %2640

2640:                                             ; preds = %2651, %2625
  %2641 = load i32, ptr %74, align 4, !tbaa !5
  %2642 = load i32, ptr %75, align 4, !tbaa !5
  %2643 = icmp ult i32 %2641, %2642
  br i1 %2643, label %2644, label %2654

2644:                                             ; preds = %2640
  %2645 = call double @get_random_posneg_p5_num()
  %2646 = fptrunc double %2645 to float
  %2647 = load ptr, ptr %77, align 8, !tbaa !9
  %2648 = load i32, ptr %74, align 4, !tbaa !5
  %2649 = sext i32 %2648 to i64
  %2650 = getelementptr inbounds float, ptr %2647, i64 %2649
  store float %2646, ptr %2650, align 4, !tbaa !13
  br label %2651

2651:                                             ; preds = %2644
  %2652 = load i32, ptr %74, align 4, !tbaa !5
  %2653 = add nsw i32 %2652, 1
  store i32 %2653, ptr %74, align 4, !tbaa !5
  br label %2640, !llvm.loop !66

2654:                                             ; preds = %2640
  %2655 = load ptr, ptr %77, align 8, !tbaa !9
  %2656 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 35
  store ptr %2655, ptr %2656, align 8, !tbaa !67
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #10
  br label %2657

2657:                                             ; preds = %2654, %2619
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #10
  br label %2658

2658:                                             ; preds = %2657, %2583
  %2659 = load i32, ptr %10, align 4, !tbaa !5
  %2660 = icmp eq i32 %2659, 12
  br i1 %2660, label %2661, label %2695

2661:                                             ; preds = %2658
  %2662 = load i32, ptr %11, align 4, !tbaa !5
  %2663 = icmp eq i32 %2662, 2
  br i1 %2663, label %2664, label %2695

2664:                                             ; preds = %2661
  %2665 = load i32, ptr %13, align 4, !tbaa !5
  %2666 = icmp eq i32 %2665, 2
  br i1 %2666, label %2670, label %2667

2667:                                             ; preds = %2664
  %2668 = load i32, ptr %13, align 4, !tbaa !5
  %2669 = icmp eq i32 %2668, 1
  br i1 %2669, label %2670, label %2695

2670:                                             ; preds = %2667, %2664
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #10
  store i32 0, ptr %78, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #10
  %2671 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2672 = load i32, ptr %2671, align 8, !tbaa !49
  %2673 = sext i32 %2672 to i64
  %2674 = mul i64 %2673, 4
  %2675 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2674, i64 noundef 64)
  store ptr %2675, ptr %79, align 8, !tbaa !9
  store i32 0, ptr %78, align 4, !tbaa !5
  br label %2676

2676:                                             ; preds = %2689, %2670
  %2677 = load i32, ptr %78, align 4, !tbaa !5
  %2678 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2679 = load i32, ptr %2678, align 8, !tbaa !49
  %2680 = icmp slt i32 %2677, %2679
  br i1 %2680, label %2681, label %2692

2681:                                             ; preds = %2676
  %2682 = call double @get_random_posneg_p5_num()
  %2683 = fptrunc double %2682 to float
  %2684 = fmul float 0x3FB99999A0000000, %2683
  %2685 = load ptr, ptr %79, align 8, !tbaa !9
  %2686 = load i32, ptr %78, align 4, !tbaa !5
  %2687 = sext i32 %2686 to i64
  %2688 = getelementptr inbounds float, ptr %2685, i64 %2687
  store float %2684, ptr %2688, align 4, !tbaa !13
  br label %2689

2689:                                             ; preds = %2681
  %2690 = load i32, ptr %78, align 4, !tbaa !5
  %2691 = add nsw i32 %2690, 1
  store i32 %2691, ptr %78, align 4, !tbaa !5
  br label %2676, !llvm.loop !68

2692:                                             ; preds = %2676
  %2693 = load ptr, ptr %79, align 8, !tbaa !9
  %2694 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  store ptr %2693, ptr %2694, align 8, !tbaa !57
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #10
  br label %2695

2695:                                             ; preds = %2692, %2667, %2661, %2658
  %2696 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %2697 = load i32, ptr %2696, align 8, !tbaa !47
  %2698 = icmp eq i32 %2697, 1
  br i1 %2698, label %2699, label %2816

2699:                                             ; preds = %2695
  %2700 = load i32, ptr %16, align 4, !tbaa !5
  %2701 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 11
  store i32 %2700, ptr %2701, align 4, !tbaa !69
  %2702 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 11
  %2703 = load i32, ptr %2702, align 4, !tbaa !69
  %2704 = sext i32 %2703 to i64
  %2705 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2706 = load i32, ptr %2705, align 8, !tbaa !32
  %2707 = icmp eq i32 0, %2706
  br i1 %2707, label %2708, label %2709

2708:                                             ; preds = %2699
  br label %2802

2709:                                             ; preds = %2699
  %2710 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2711 = load i32, ptr %2710, align 8, !tbaa !32
  %2712 = icmp eq i32 1, %2711
  br i1 %2712, label %2713, label %2714

2713:                                             ; preds = %2709
  br label %2800

2714:                                             ; preds = %2709
  %2715 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2716 = load i32, ptr %2715, align 8, !tbaa !32
  %2717 = icmp eq i32 2, %2716
  br i1 %2717, label %2718, label %2719

2718:                                             ; preds = %2714
  br label %2798

2719:                                             ; preds = %2714
  %2720 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2721 = load i32, ptr %2720, align 8, !tbaa !32
  %2722 = icmp eq i32 3, %2721
  br i1 %2722, label %2723, label %2724

2723:                                             ; preds = %2719
  br label %2796

2724:                                             ; preds = %2719
  %2725 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2726 = load i32, ptr %2725, align 8, !tbaa !32
  %2727 = icmp eq i32 4, %2726
  br i1 %2727, label %2728, label %2729

2728:                                             ; preds = %2724
  br label %2794

2729:                                             ; preds = %2724
  %2730 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2731 = load i32, ptr %2730, align 8, !tbaa !32
  %2732 = icmp eq i32 5, %2731
  br i1 %2732, label %2733, label %2734

2733:                                             ; preds = %2729
  br label %2792

2734:                                             ; preds = %2729
  %2735 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2736 = load i32, ptr %2735, align 8, !tbaa !32
  %2737 = icmp eq i32 6, %2736
  br i1 %2737, label %2738, label %2739

2738:                                             ; preds = %2734
  br label %2790

2739:                                             ; preds = %2734
  %2740 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2741 = load i32, ptr %2740, align 8, !tbaa !32
  %2742 = icmp eq i32 7, %2741
  br i1 %2742, label %2743, label %2744

2743:                                             ; preds = %2739
  br label %2788

2744:                                             ; preds = %2739
  %2745 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2746 = load i32, ptr %2745, align 8, !tbaa !32
  %2747 = icmp eq i32 8, %2746
  br i1 %2747, label %2748, label %2749

2748:                                             ; preds = %2744
  br label %2786

2749:                                             ; preds = %2744
  %2750 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2751 = load i32, ptr %2750, align 8, !tbaa !32
  %2752 = icmp eq i32 9, %2751
  br i1 %2752, label %2753, label %2754

2753:                                             ; preds = %2749
  br label %2784

2754:                                             ; preds = %2749
  %2755 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2756 = load i32, ptr %2755, align 8, !tbaa !32
  %2757 = icmp eq i32 10, %2756
  br i1 %2757, label %2758, label %2759

2758:                                             ; preds = %2754
  br label %2782

2759:                                             ; preds = %2754
  %2760 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2761 = load i32, ptr %2760, align 8, !tbaa !32
  %2762 = icmp eq i32 11, %2761
  br i1 %2762, label %2763, label %2764

2763:                                             ; preds = %2759
  br label %2780

2764:                                             ; preds = %2759
  %2765 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2766 = load i32, ptr %2765, align 8, !tbaa !32
  %2767 = icmp eq i32 12, %2766
  br i1 %2767, label %2768, label %2769

2768:                                             ; preds = %2764
  br label %2778

2769:                                             ; preds = %2764
  %2770 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2771 = load i32, ptr %2770, align 8, !tbaa !32
  %2772 = icmp eq i32 13, %2771
  br i1 %2772, label %2773, label %2774

2773:                                             ; preds = %2769
  br label %2776

2774:                                             ; preds = %2769
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.33, i32 noundef 3317, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

2775:                                             ; No predecessors!
  br label %2776

2776:                                             ; preds = %2775, %2773
  %2777 = phi i32 [ 1, %2773 ], [ 0, %2775 ]
  br label %2778

2778:                                             ; preds = %2776, %2768
  %2779 = phi i32 [ 1, %2768 ], [ %2777, %2776 ]
  br label %2780

2780:                                             ; preds = %2778, %2763
  %2781 = phi i32 [ 2, %2763 ], [ %2779, %2778 ]
  br label %2782

2782:                                             ; preds = %2780, %2758
  %2783 = phi i32 [ 2, %2758 ], [ %2781, %2780 ]
  br label %2784

2784:                                             ; preds = %2782, %2753
  %2785 = phi i32 [ 4, %2753 ], [ %2783, %2782 ]
  br label %2786

2786:                                             ; preds = %2784, %2748
  %2787 = phi i32 [ 4, %2748 ], [ %2785, %2784 ]
  br label %2788

2788:                                             ; preds = %2786, %2743
  %2789 = phi i32 [ 8, %2743 ], [ %2787, %2786 ]
  br label %2790

2790:                                             ; preds = %2788, %2738
  %2791 = phi i32 [ 8, %2738 ], [ %2789, %2788 ]
  br label %2792

2792:                                             ; preds = %2790, %2733
  %2793 = phi i32 [ 1, %2733 ], [ %2791, %2790 ]
  br label %2794

2794:                                             ; preds = %2792, %2728
  %2795 = phi i32 [ 1, %2728 ], [ %2793, %2792 ]
  br label %2796

2796:                                             ; preds = %2794, %2723
  %2797 = phi i32 [ 2, %2723 ], [ %2795, %2794 ]
  br label %2798

2798:                                             ; preds = %2796, %2718
  %2799 = phi i32 [ 2, %2718 ], [ %2797, %2796 ]
  br label %2800

2800:                                             ; preds = %2798, %2713
  %2801 = phi i32 [ 4, %2713 ], [ %2799, %2798 ]
  br label %2802

2802:                                             ; preds = %2800, %2708
  %2803 = phi i32 [ 8, %2708 ], [ %2801, %2800 ]
  %2804 = sext i32 %2803 to i64
  %2805 = mul i64 %2704, %2804
  %2806 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2805, i64 noundef 64)
  store ptr %2806, ptr %62, align 8, !tbaa !9
  %2807 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2808 = load i32, ptr %2807, align 8, !tbaa !32
  %2809 = load ptr, ptr %62, align 8, !tbaa !9
  %2810 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 11
  %2811 = load i32, ptr %2810, align 4, !tbaa !69
  call void @init_random_matrix(ptr noundef %44, i32 noundef %2808, ptr noundef %2809, i32 noundef 1, i32 noundef %2811, i32 noundef 1, i32 noundef 0)
  %2812 = load ptr, ptr %62, align 8, !tbaa !9
  %2813 = getelementptr inbounds %struct.fusion_args, ptr %65, i32 0, i32 0
  store ptr %2812, ptr %2813, align 8, !tbaa !70
  %2814 = load ptr, ptr %62, align 8, !tbaa !9
  %2815 = getelementptr inbounds %struct.fusion_args, ptr %66, i32 0, i32 0
  store ptr %2814, ptr %2815, align 8, !tbaa !70
  br label %2816

2816:                                             ; preds = %2802, %2695
  %2817 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %2818 = load i32, ptr %2817, align 4, !tbaa !48
  %2819 = icmp eq i32 %2818, 2
  br i1 %2819, label %2820, label %2854

2820:                                             ; preds = %2816
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #10
  %2821 = load i32, ptr %16, align 4, !tbaa !5
  %2822 = add nsw i32 %2821, 15
  %2823 = sdiv i32 %2822, 16
  %2824 = mul nsw i32 %2823, 2
  store i32 %2824, ptr %80, align 4, !tbaa !5
  %2825 = load i32, ptr %80, align 4, !tbaa !5
  %2826 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 10
  store i32 %2825, ptr %2826, align 8, !tbaa !72
  %2827 = load i32, ptr %80, align 4, !tbaa !5
  %2828 = sext i32 %2827 to i64
  %2829 = load i32, ptr %18, align 4, !tbaa !5
  %2830 = sext i32 %2829 to i64
  %2831 = mul i64 %2828, %2830
  %2832 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2831, i64 noundef 64)
  store ptr %2832, ptr %63, align 8, !tbaa !9
  %2833 = load i32, ptr %80, align 4, !tbaa !5
  %2834 = sext i32 %2833 to i64
  %2835 = load i32, ptr %18, align 4, !tbaa !5
  %2836 = sext i32 %2835 to i64
  %2837 = mul i64 %2834, %2836
  %2838 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2837, i64 noundef 64)
  store ptr %2838, ptr %64, align 8, !tbaa !9
  %2839 = load ptr, ptr %63, align 8, !tbaa !9
  %2840 = load i32, ptr %80, align 4, !tbaa !5
  %2841 = load i32, ptr %18, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef 12, ptr noundef %2839, i32 noundef 1, i32 noundef %2840, i32 noundef %2841)
  %2842 = load ptr, ptr %64, align 8, !tbaa !9
  %2843 = load ptr, ptr %63, align 8, !tbaa !9
  %2844 = load i32, ptr %80, align 4, !tbaa !5
  %2845 = sext i32 %2844 to i64
  %2846 = mul i64 1, %2845
  %2847 = load i32, ptr %18, align 4, !tbaa !5
  %2848 = sext i32 %2847 to i64
  %2849 = mul i64 %2846, %2848
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2842, ptr align 1 %2843, i64 %2849, i1 false)
  %2850 = load ptr, ptr %63, align 8, !tbaa !9
  %2851 = getelementptr inbounds %struct.fusion_args, ptr %65, i32 0, i32 1
  store ptr %2850, ptr %2851, align 8, !tbaa !73
  %2852 = load ptr, ptr %64, align 8, !tbaa !9
  %2853 = getelementptr inbounds %struct.fusion_args, ptr %66, i32 0, i32 1
  store ptr %2852, ptr %2853, align 8, !tbaa !73
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #10
  br label %2854

2854:                                             ; preds = %2820, %2816
  %2855 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 14
  %2856 = load i32, ptr %2855, align 8, !tbaa !35
  %2857 = icmp eq i32 %2856, 0
  br i1 %2857, label %2858, label %3050

2858:                                             ; preds = %2854
  %2859 = load i32, ptr %47, align 4, !tbaa !5
  %2860 = icmp eq i32 %2859, 0
  br i1 %2860, label %2861, label %3040

2861:                                             ; preds = %2858
  %2862 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  %2863 = load i32, ptr %2862, align 4, !tbaa !21
  %2864 = icmp ugt i32 %2863, 0
  br i1 %2864, label %2865, label %2912

2865:                                             ; preds = %2861
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  store i32 0, ptr %81, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #10
  %2866 = load i32, ptr %14, align 4, !tbaa !5
  %2867 = sext i32 %2866 to i64
  %2868 = load i32, ptr %19, align 4, !tbaa !5
  %2869 = sext i32 %2868 to i64
  %2870 = mul i64 %2867, %2869
  %2871 = load i32, ptr %29, align 4, !tbaa !5
  %2872 = sext i32 %2871 to i64
  %2873 = mul i64 %2870, %2872
  %2874 = mul i64 %2873, 1
  %2875 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2874, i64 noundef 64)
  store ptr %2875, ptr %61, align 8, !tbaa !9
  %2876 = load ptr, ptr %61, align 8, !tbaa !9
  store ptr %2876, ptr %82, align 8, !tbaa !9
  %2877 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %2877, ptr %83, align 8, !tbaa !9
  %2878 = load ptr, ptr %61, align 8, !tbaa !9
  %2879 = load i32, ptr %29, align 4, !tbaa !5
  %2880 = load i32, ptr %14, align 4, !tbaa !5
  %2881 = load i32, ptr %19, align 4, !tbaa !5
  %2882 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %2883 = load i32, ptr %2882, align 4, !tbaa !48
  %2884 = icmp eq i32 %2883, 2
  br i1 %2884, label %2885, label %2886

2885:                                             ; preds = %2865
  br label %2889

2886:                                             ; preds = %2865
  %2887 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %2888 = load i32, ptr %2887, align 4, !tbaa !25
  br label %2889

2889:                                             ; preds = %2886, %2885
  %2890 = phi i32 [ 1, %2885 ], [ %2888, %2886 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef 4, ptr noundef %2878, i32 noundef %2879, i32 noundef %2880, i32 noundef %2881, i32 noundef %2890)
  store i32 0, ptr %81, align 4, !tbaa !5
  br label %2891

2891:                                             ; preds = %2908, %2889
  %2892 = load i32, ptr %81, align 4, !tbaa !5
  %2893 = load i32, ptr %14, align 4, !tbaa !5
  %2894 = load i32, ptr %19, align 4, !tbaa !5
  %2895 = mul nsw i32 %2893, %2894
  %2896 = load i32, ptr %29, align 4, !tbaa !5
  %2897 = mul nsw i32 %2895, %2896
  %2898 = icmp slt i32 %2892, %2897
  br i1 %2898, label %2899, label %2911

2899:                                             ; preds = %2891
  %2900 = load ptr, ptr %82, align 8, !tbaa !9
  %2901 = load i32, ptr %81, align 4, !tbaa !5
  %2902 = sext i32 %2901 to i64
  %2903 = getelementptr inbounds i8, ptr %2900, i64 %2902
  call void @libxsmm_convert_bf8_f32(ptr noundef %2903, ptr noundef %84, i64 noundef 1)
  %2904 = load ptr, ptr %83, align 8, !tbaa !9
  %2905 = load i32, ptr %81, align 4, !tbaa !5
  %2906 = sext i32 %2905 to i64
  %2907 = getelementptr inbounds i16, ptr %2904, i64 %2906
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef %84, ptr noundef %2907, i64 noundef 1)
  br label %2908

2908:                                             ; preds = %2899
  %2909 = load i32, ptr %81, align 4, !tbaa !5
  %2910 = add nsw i32 %2909, 1
  store i32 %2910, ptr %81, align 4, !tbaa !5
  br label %2891, !llvm.loop !74

2911:                                             ; preds = %2891
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %3039

2912:                                             ; preds = %2861
  %2913 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  %2914 = load i32, ptr %2913, align 8, !tbaa !22
  %2915 = icmp ugt i32 %2914, 0
  br i1 %2915, label %2916, label %2963

2916:                                             ; preds = %2912
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #10
  store i32 0, ptr %85, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #10
  %2917 = load i32, ptr %14, align 4, !tbaa !5
  %2918 = sext i32 %2917 to i64
  %2919 = load i32, ptr %19, align 4, !tbaa !5
  %2920 = sext i32 %2919 to i64
  %2921 = mul i64 %2918, %2920
  %2922 = load i32, ptr %29, align 4, !tbaa !5
  %2923 = sext i32 %2922 to i64
  %2924 = mul i64 %2921, %2923
  %2925 = mul i64 %2924, 1
  %2926 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2925, i64 noundef 64)
  store ptr %2926, ptr %61, align 8, !tbaa !9
  %2927 = load ptr, ptr %61, align 8, !tbaa !9
  store ptr %2927, ptr %86, align 8, !tbaa !9
  %2928 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %2928, ptr %87, align 8, !tbaa !9
  %2929 = load ptr, ptr %61, align 8, !tbaa !9
  %2930 = load i32, ptr %29, align 4, !tbaa !5
  %2931 = load i32, ptr %14, align 4, !tbaa !5
  %2932 = load i32, ptr %19, align 4, !tbaa !5
  %2933 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %2934 = load i32, ptr %2933, align 4, !tbaa !48
  %2935 = icmp eq i32 %2934, 2
  br i1 %2935, label %2936, label %2937

2936:                                             ; preds = %2916
  br label %2940

2937:                                             ; preds = %2916
  %2938 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %2939 = load i32, ptr %2938, align 4, !tbaa !25
  br label %2940

2940:                                             ; preds = %2937, %2936
  %2941 = phi i32 [ 1, %2936 ], [ %2939, %2937 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef 4, ptr noundef %2929, i32 noundef %2930, i32 noundef %2931, i32 noundef %2932, i32 noundef %2941)
  store i32 0, ptr %85, align 4, !tbaa !5
  br label %2942

2942:                                             ; preds = %2959, %2940
  %2943 = load i32, ptr %85, align 4, !tbaa !5
  %2944 = load i32, ptr %14, align 4, !tbaa !5
  %2945 = load i32, ptr %19, align 4, !tbaa !5
  %2946 = mul nsw i32 %2944, %2945
  %2947 = load i32, ptr %29, align 4, !tbaa !5
  %2948 = mul nsw i32 %2946, %2947
  %2949 = icmp slt i32 %2943, %2948
  br i1 %2949, label %2950, label %2962

2950:                                             ; preds = %2942
  %2951 = load ptr, ptr %86, align 8, !tbaa !9
  %2952 = load i32, ptr %85, align 4, !tbaa !5
  %2953 = sext i32 %2952 to i64
  %2954 = getelementptr inbounds i8, ptr %2951, i64 %2953
  call void @libxsmm_convert_bf8_f32(ptr noundef %2954, ptr noundef %88, i64 noundef 1)
  %2955 = load ptr, ptr %87, align 8, !tbaa !9
  %2956 = load i32, ptr %85, align 4, !tbaa !5
  %2957 = sext i32 %2956 to i64
  %2958 = getelementptr inbounds i16, ptr %2955, i64 %2957
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %88, ptr noundef %2958, i64 noundef 1)
  br label %2959

2959:                                             ; preds = %2950
  %2960 = load i32, ptr %85, align 4, !tbaa !5
  %2961 = add nsw i32 %2960, 1
  store i32 %2961, ptr %85, align 4, !tbaa !5
  br label %2942, !llvm.loop !75

2962:                                             ; preds = %2942
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #10
  br label %3038

2963:                                             ; preds = %2912
  %2964 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  %2965 = load i32, ptr %2964, align 4, !tbaa !23
  %2966 = icmp ugt i32 %2965, 0
  br i1 %2966, label %2967, label %3014

2967:                                             ; preds = %2963
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #10
  store i32 0, ptr %89, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #10
  %2968 = load i32, ptr %14, align 4, !tbaa !5
  %2969 = sext i32 %2968 to i64
  %2970 = load i32, ptr %19, align 4, !tbaa !5
  %2971 = sext i32 %2970 to i64
  %2972 = mul i64 %2969, %2971
  %2973 = load i32, ptr %29, align 4, !tbaa !5
  %2974 = sext i32 %2973 to i64
  %2975 = mul i64 %2972, %2974
  %2976 = mul i64 %2975, 1
  %2977 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2976, i64 noundef 64)
  store ptr %2977, ptr %61, align 8, !tbaa !9
  %2978 = load ptr, ptr %61, align 8, !tbaa !9
  store ptr %2978, ptr %90, align 8, !tbaa !9
  %2979 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %2979, ptr %91, align 8, !tbaa !9
  %2980 = load ptr, ptr %61, align 8, !tbaa !9
  %2981 = load i32, ptr %29, align 4, !tbaa !5
  %2982 = load i32, ptr %14, align 4, !tbaa !5
  %2983 = load i32, ptr %19, align 4, !tbaa !5
  %2984 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %2985 = load i32, ptr %2984, align 4, !tbaa !48
  %2986 = icmp eq i32 %2985, 2
  br i1 %2986, label %2987, label %2988

2987:                                             ; preds = %2967
  br label %2991

2988:                                             ; preds = %2967
  %2989 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %2990 = load i32, ptr %2989, align 4, !tbaa !25
  br label %2991

2991:                                             ; preds = %2988, %2987
  %2992 = phi i32 [ 1, %2987 ], [ %2990, %2988 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef 5, ptr noundef %2980, i32 noundef %2981, i32 noundef %2982, i32 noundef %2983, i32 noundef %2992)
  store i32 0, ptr %89, align 4, !tbaa !5
  br label %2993

2993:                                             ; preds = %3010, %2991
  %2994 = load i32, ptr %89, align 4, !tbaa !5
  %2995 = load i32, ptr %14, align 4, !tbaa !5
  %2996 = load i32, ptr %19, align 4, !tbaa !5
  %2997 = mul nsw i32 %2995, %2996
  %2998 = load i32, ptr %29, align 4, !tbaa !5
  %2999 = mul nsw i32 %2997, %2998
  %3000 = icmp slt i32 %2994, %2999
  br i1 %3000, label %3001, label %3013

3001:                                             ; preds = %2993
  %3002 = load ptr, ptr %90, align 8, !tbaa !9
  %3003 = load i32, ptr %89, align 4, !tbaa !5
  %3004 = sext i32 %3003 to i64
  %3005 = getelementptr inbounds i8, ptr %3002, i64 %3004
  call void @libxsmm_convert_hf8_f32(ptr noundef %3005, ptr noundef %92, i64 noundef 1)
  %3006 = load ptr, ptr %91, align 8, !tbaa !9
  %3007 = load i32, ptr %89, align 4, !tbaa !5
  %3008 = sext i32 %3007 to i64
  %3009 = getelementptr inbounds i16, ptr %3006, i64 %3008
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef %92, ptr noundef %3009, i64 noundef 1)
  br label %3010

3010:                                             ; preds = %3001
  %3011 = load i32, ptr %89, align 4, !tbaa !5
  %3012 = add nsw i32 %3011, 1
  store i32 %3012, ptr %89, align 4, !tbaa !5
  br label %2993, !llvm.loop !76

3013:                                             ; preds = %2993
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #10
  br label %3037

3014:                                             ; preds = %2963
  %3015 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3016 = load i32, ptr %3015, align 8, !tbaa !29
  %3017 = load ptr, ptr %56, align 8, !tbaa !9
  %3018 = load i32, ptr %29, align 4, !tbaa !5
  %3019 = load i32, ptr %14, align 4, !tbaa !5
  %3020 = load i32, ptr %19, align 4, !tbaa !5
  %3021 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %3022 = load i32, ptr %3021, align 4, !tbaa !48
  %3023 = icmp eq i32 %3022, 2
  br i1 %3023, label %3024, label %3025

3024:                                             ; preds = %3014
  br label %3035

3025:                                             ; preds = %3014
  %3026 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %3027 = load i32, ptr %3026, align 8, !tbaa !17
  %3028 = icmp ugt i32 %3027, 0
  br i1 %3028, label %3029, label %3030

3029:                                             ; preds = %3025
  br label %3033

3030:                                             ; preds = %3025
  %3031 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %3032 = load i32, ptr %3031, align 4, !tbaa !25
  br label %3033

3033:                                             ; preds = %3030, %3029
  %3034 = phi i32 [ 1, %3029 ], [ %3032, %3030 ]
  br label %3035

3035:                                             ; preds = %3033, %3024
  %3036 = phi i32 [ 1, %3024 ], [ %3034, %3033 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3016, ptr noundef %3017, i32 noundef %3018, i32 noundef %3019, i32 noundef %3020, i32 noundef %3036)
  br label %3037

3037:                                             ; preds = %3035, %3013
  br label %3038

3038:                                             ; preds = %3037, %2962
  br label %3039

3039:                                             ; preds = %3038, %2911
  br label %3049

3040:                                             ; preds = %2858
  %3041 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 16
  %3042 = load i32, ptr %3041, align 8, !tbaa !37
  %3043 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3044 = load i32, ptr %3043, align 8, !tbaa !29
  %3045 = load ptr, ptr %56, align 8, !tbaa !9
  %3046 = load i32, ptr %29, align 4, !tbaa !5
  %3047 = load i32, ptr %14, align 4, !tbaa !5
  %3048 = load i32, ptr %19, align 4, !tbaa !5
  call void @init_identity_matrix(i32 noundef %3042, i32 noundef %3044, ptr noundef %3045, i32 noundef %3046, i32 noundef %3047, i32 noundef %3048)
  br label %3049

3049:                                             ; preds = %3040, %3039
  br label %3086

3050:                                             ; preds = %2854
  %3051 = load i32, ptr %47, align 4, !tbaa !5
  %3052 = icmp eq i32 %3051, 0
  br i1 %3052, label %3053, label %3076

3053:                                             ; preds = %3050
  %3054 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3055 = load i32, ptr %3054, align 8, !tbaa !29
  %3056 = load ptr, ptr %56, align 8, !tbaa !9
  %3057 = load i32, ptr %29, align 4, !tbaa !5
  %3058 = load i32, ptr %14, align 4, !tbaa !5
  %3059 = load i32, ptr %17, align 4, !tbaa !5
  %3060 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %3061 = load i32, ptr %3060, align 4, !tbaa !48
  %3062 = icmp eq i32 %3061, 2
  br i1 %3062, label %3063, label %3064

3063:                                             ; preds = %3053
  br label %3074

3064:                                             ; preds = %3053
  %3065 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %3066 = load i32, ptr %3065, align 8, !tbaa !17
  %3067 = icmp ugt i32 %3066, 0
  br i1 %3067, label %3068, label %3069

3068:                                             ; preds = %3064
  br label %3072

3069:                                             ; preds = %3064
  %3070 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %3071 = load i32, ptr %3070, align 4, !tbaa !25
  br label %3072

3072:                                             ; preds = %3069, %3068
  %3073 = phi i32 [ 1, %3068 ], [ %3071, %3069 ]
  br label %3074

3074:                                             ; preds = %3072, %3063
  %3075 = phi i32 [ 1, %3063 ], [ %3073, %3072 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3055, ptr noundef %3056, i32 noundef %3057, i32 noundef %3058, i32 noundef %3059, i32 noundef %3075)
  br label %3085

3076:                                             ; preds = %3050
  %3077 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 16
  %3078 = load i32, ptr %3077, align 8, !tbaa !37
  %3079 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3080 = load i32, ptr %3079, align 8, !tbaa !29
  %3081 = load ptr, ptr %56, align 8, !tbaa !9
  %3082 = load i32, ptr %29, align 4, !tbaa !5
  %3083 = load i32, ptr %14, align 4, !tbaa !5
  %3084 = load i32, ptr %17, align 4, !tbaa !5
  call void @init_identity_matrix(i32 noundef %3078, i32 noundef %3080, ptr noundef %3081, i32 noundef %3082, i32 noundef %3083, i32 noundef %3084)
  br label %3085

3085:                                             ; preds = %3076, %3074
  br label %3086

3086:                                             ; preds = %3085, %3049
  %3087 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 15
  %3088 = load i32, ptr %3087, align 4, !tbaa !36
  %3089 = icmp eq i32 %3088, 0
  br i1 %3089, label %3090, label %3117

3090:                                             ; preds = %3086
  %3091 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %3092 = load i32, ptr %3091, align 4, !tbaa !30
  %3093 = load ptr, ptr %57, align 8, !tbaa !9
  %3094 = load i32, ptr %29, align 4, !tbaa !5
  %3095 = load i32, ptr %15, align 4, !tbaa !5
  %3096 = load i32, ptr %18, align 4, !tbaa !5
  %3097 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %3098 = load i32, ptr %3097, align 4, !tbaa !48
  %3099 = icmp eq i32 %3098, 2
  br i1 %3099, label %3100, label %3101

3100:                                             ; preds = %3090
  br label %3104

3101:                                             ; preds = %3090
  %3102 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 20
  %3103 = load i32, ptr %3102, align 8, !tbaa !26
  br label %3104

3104:                                             ; preds = %3101, %3100
  %3105 = phi i32 [ 1, %3100 ], [ %3103, %3101 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3092, ptr noundef %3093, i32 noundef %3094, i32 noundef %3095, i32 noundef %3096, i32 noundef %3105)
  %3106 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %3107 = load i32, ptr %3106, align 4, !tbaa !48
  %3108 = icmp eq i32 %3107, 2
  br i1 %3108, label %3109, label %3116

3109:                                             ; preds = %3104
  %3110 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %3111 = load i32, ptr %3110, align 4, !tbaa !30
  %3112 = load ptr, ptr %57, align 8, !tbaa !9
  %3113 = load i32, ptr %29, align 4, !tbaa !5
  %3114 = load i32, ptr %15, align 4, !tbaa !5
  %3115 = load i32, ptr %18, align 4, !tbaa !5
  call void @negate_random_cols_rows(i32 noundef %3111, ptr noundef %3112, i32 noundef %3113, i32 noundef %3114, i32 noundef %3115, i32 noundef 0)
  br label %3116

3116:                                             ; preds = %3109, %3104
  br label %3144

3117:                                             ; preds = %3086
  %3118 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %3119 = load i32, ptr %3118, align 4, !tbaa !30
  %3120 = load ptr, ptr %57, align 8, !tbaa !9
  %3121 = load i32, ptr %29, align 4, !tbaa !5
  %3122 = load i32, ptr %15, align 4, !tbaa !5
  %3123 = load i32, ptr %19, align 4, !tbaa !5
  %3124 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %3125 = load i32, ptr %3124, align 4, !tbaa !48
  %3126 = icmp eq i32 %3125, 2
  br i1 %3126, label %3127, label %3128

3127:                                             ; preds = %3117
  br label %3131

3128:                                             ; preds = %3117
  %3129 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 20
  %3130 = load i32, ptr %3129, align 8, !tbaa !26
  br label %3131

3131:                                             ; preds = %3128, %3127
  %3132 = phi i32 [ 1, %3127 ], [ %3130, %3128 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3119, ptr noundef %3120, i32 noundef %3121, i32 noundef %3122, i32 noundef %3123, i32 noundef %3132)
  %3133 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %3134 = load i32, ptr %3133, align 4, !tbaa !48
  %3135 = icmp eq i32 %3134, 2
  br i1 %3135, label %3136, label %3143

3136:                                             ; preds = %3131
  %3137 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %3138 = load i32, ptr %3137, align 4, !tbaa !30
  %3139 = load ptr, ptr %57, align 8, !tbaa !9
  %3140 = load i32, ptr %29, align 4, !tbaa !5
  %3141 = load i32, ptr %15, align 4, !tbaa !5
  %3142 = load i32, ptr %19, align 4, !tbaa !5
  call void @negate_random_cols_rows(i32 noundef %3138, ptr noundef %3139, i32 noundef %3140, i32 noundef %3141, i32 noundef %3142, i32 noundef 1)
  br label %3143

3143:                                             ; preds = %3136, %3131
  br label %3144

3144:                                             ; preds = %3143, %3116
  %3145 = load double, ptr %28, align 8, !tbaa !11
  %3146 = fcmp oeq double %3145, 0.000000e+00
  br i1 %3146, label %3147, label %3163

3147:                                             ; preds = %3144
  %3148 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %3149 = load i32, ptr %3148, align 8, !tbaa !32
  %3150 = load ptr, ptr %58, align 8, !tbaa !9
  %3151 = load i32, ptr %16, align 4, !tbaa !5
  %3152 = load i32, ptr %18, align 4, !tbaa !5
  call void @init_garbage_matrix(i32 noundef %3149, ptr noundef %3150, i32 noundef 1, i32 noundef %3151, i32 noundef %3152)
  %3153 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %3154 = load i32, ptr %3153, align 8, !tbaa !32
  %3155 = load ptr, ptr %59, align 8, !tbaa !9
  %3156 = load i32, ptr %16, align 4, !tbaa !5
  %3157 = load i32, ptr %18, align 4, !tbaa !5
  call void @init_garbage_matrix(i32 noundef %3154, ptr noundef %3155, i32 noundef 1, i32 noundef %3156, i32 noundef %3157)
  %3158 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %3159 = load i32, ptr %3158, align 8, !tbaa !32
  %3160 = load ptr, ptr %60, align 8, !tbaa !9
  %3161 = load i32, ptr %16, align 4, !tbaa !5
  %3162 = load i32, ptr %18, align 4, !tbaa !5
  call void @init_garbage_matrix(i32 noundef %3159, ptr noundef %3160, i32 noundef 1, i32 noundef %3161, i32 noundef %3162)
  br label %3179

3163:                                             ; preds = %3144
  %3164 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %3165 = load i32, ptr %3164, align 8, !tbaa !32
  %3166 = load ptr, ptr %58, align 8, !tbaa !9
  %3167 = load i32, ptr %16, align 4, !tbaa !5
  %3168 = load i32, ptr %18, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef %3165, ptr noundef %3166, i32 noundef 1, i32 noundef %3167, i32 noundef %3168)
  %3169 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %3170 = load i32, ptr %3169, align 8, !tbaa !32
  %3171 = load ptr, ptr %59, align 8, !tbaa !9
  %3172 = load i32, ptr %16, align 4, !tbaa !5
  %3173 = load i32, ptr %18, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef %3170, ptr noundef %3171, i32 noundef 1, i32 noundef %3172, i32 noundef %3173)
  %3174 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %3175 = load i32, ptr %3174, align 8, !tbaa !32
  %3176 = load ptr, ptr %60, align 8, !tbaa !9
  %3177 = load i32, ptr %16, align 4, !tbaa !5
  %3178 = load i32, ptr %18, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef %3175, ptr noundef %3176, i32 noundef 1, i32 noundef %3177, i32 noundef %3178)
  br label %3179

3179:                                             ; preds = %3163, %3147
  %3180 = load i32, ptr %41, align 4, !tbaa !5
  %3181 = icmp ne i32 %3180, 0
  br i1 %3181, label %3185, label %3182

3182:                                             ; preds = %3179
  %3183 = load i32, ptr %42, align 4, !tbaa !5
  %3184 = icmp ne i32 %3183, 0
  br i1 %3184, label %3185, label %3189

3185:                                             ; preds = %3182, %3179
  %3186 = load ptr, ptr %56, align 8, !tbaa !9
  %3187 = load ptr, ptr %57, align 8, !tbaa !9
  %3188 = load ptr, ptr %60, align 8, !tbaa !9
  call void @ref_fused_matmul(ptr noundef %44, ptr noundef %3186, ptr noundef %3187, ptr noundef %3188, ptr noundef %66)
  br label %4388

3189:                                             ; preds = %3182
  %3190 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %3191 = load i32, ptr %3190, align 8, !tbaa !17
  %3192 = icmp ugt i32 %3191, 0
  br i1 %3192, label %3193, label %3735

3193:                                             ; preds = %3189
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #10
  %3194 = load i32, ptr %14, align 4, !tbaa !5
  %3195 = sext i32 %3194 to i64
  %3196 = load i32, ptr %19, align 4, !tbaa !5
  %3197 = add nsw i32 %3196, 7
  %3198 = sdiv i32 %3197, 8
  %3199 = mul nsw i32 %3198, 8
  %3200 = sdiv i32 %3199, 2
  %3201 = sext i32 %3200 to i64
  %3202 = mul i64 %3195, %3201
  %3203 = load i32, ptr %29, align 4, !tbaa !5
  %3204 = sext i32 %3203 to i64
  %3205 = mul i64 %3202, %3204
  %3206 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3207 = load i32, ptr %3206, align 8, !tbaa !29
  %3208 = icmp eq i32 0, %3207
  br i1 %3208, label %3209, label %3210

3209:                                             ; preds = %3193
  br label %3303

3210:                                             ; preds = %3193
  %3211 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3212 = load i32, ptr %3211, align 8, !tbaa !29
  %3213 = icmp eq i32 1, %3212
  br i1 %3213, label %3214, label %3215

3214:                                             ; preds = %3210
  br label %3301

3215:                                             ; preds = %3210
  %3216 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3217 = load i32, ptr %3216, align 8, !tbaa !29
  %3218 = icmp eq i32 2, %3217
  br i1 %3218, label %3219, label %3220

3219:                                             ; preds = %3215
  br label %3299

3220:                                             ; preds = %3215
  %3221 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3222 = load i32, ptr %3221, align 8, !tbaa !29
  %3223 = icmp eq i32 3, %3222
  br i1 %3223, label %3224, label %3225

3224:                                             ; preds = %3220
  br label %3297

3225:                                             ; preds = %3220
  %3226 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3227 = load i32, ptr %3226, align 8, !tbaa !29
  %3228 = icmp eq i32 4, %3227
  br i1 %3228, label %3229, label %3230

3229:                                             ; preds = %3225
  br label %3295

3230:                                             ; preds = %3225
  %3231 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3232 = load i32, ptr %3231, align 8, !tbaa !29
  %3233 = icmp eq i32 5, %3232
  br i1 %3233, label %3234, label %3235

3234:                                             ; preds = %3230
  br label %3293

3235:                                             ; preds = %3230
  %3236 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3237 = load i32, ptr %3236, align 8, !tbaa !29
  %3238 = icmp eq i32 6, %3237
  br i1 %3238, label %3239, label %3240

3239:                                             ; preds = %3235
  br label %3291

3240:                                             ; preds = %3235
  %3241 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3242 = load i32, ptr %3241, align 8, !tbaa !29
  %3243 = icmp eq i32 7, %3242
  br i1 %3243, label %3244, label %3245

3244:                                             ; preds = %3240
  br label %3289

3245:                                             ; preds = %3240
  %3246 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3247 = load i32, ptr %3246, align 8, !tbaa !29
  %3248 = icmp eq i32 8, %3247
  br i1 %3248, label %3249, label %3250

3249:                                             ; preds = %3245
  br label %3287

3250:                                             ; preds = %3245
  %3251 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3252 = load i32, ptr %3251, align 8, !tbaa !29
  %3253 = icmp eq i32 9, %3252
  br i1 %3253, label %3254, label %3255

3254:                                             ; preds = %3250
  br label %3285

3255:                                             ; preds = %3250
  %3256 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3257 = load i32, ptr %3256, align 8, !tbaa !29
  %3258 = icmp eq i32 10, %3257
  br i1 %3258, label %3259, label %3260

3259:                                             ; preds = %3255
  br label %3283

3260:                                             ; preds = %3255
  %3261 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3262 = load i32, ptr %3261, align 8, !tbaa !29
  %3263 = icmp eq i32 11, %3262
  br i1 %3263, label %3264, label %3265

3264:                                             ; preds = %3260
  br label %3281

3265:                                             ; preds = %3260
  %3266 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3267 = load i32, ptr %3266, align 8, !tbaa !29
  %3268 = icmp eq i32 12, %3267
  br i1 %3268, label %3269, label %3270

3269:                                             ; preds = %3265
  br label %3279

3270:                                             ; preds = %3265
  %3271 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3272 = load i32, ptr %3271, align 8, !tbaa !29
  %3273 = icmp eq i32 13, %3272
  br i1 %3273, label %3274, label %3275

3274:                                             ; preds = %3270
  br label %3277

3275:                                             ; preds = %3270
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.33, i32 noundef 3419, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

3276:                                             ; No predecessors!
  br label %3277

3277:                                             ; preds = %3276, %3274
  %3278 = phi i32 [ 1, %3274 ], [ 0, %3276 ]
  br label %3279

3279:                                             ; preds = %3277, %3269
  %3280 = phi i32 [ 1, %3269 ], [ %3278, %3277 ]
  br label %3281

3281:                                             ; preds = %3279, %3264
  %3282 = phi i32 [ 2, %3264 ], [ %3280, %3279 ]
  br label %3283

3283:                                             ; preds = %3281, %3259
  %3284 = phi i32 [ 2, %3259 ], [ %3282, %3281 ]
  br label %3285

3285:                                             ; preds = %3283, %3254
  %3286 = phi i32 [ 4, %3254 ], [ %3284, %3283 ]
  br label %3287

3287:                                             ; preds = %3285, %3249
  %3288 = phi i32 [ 4, %3249 ], [ %3286, %3285 ]
  br label %3289

3289:                                             ; preds = %3287, %3244
  %3290 = phi i32 [ 8, %3244 ], [ %3288, %3287 ]
  br label %3291

3291:                                             ; preds = %3289, %3239
  %3292 = phi i32 [ 8, %3239 ], [ %3290, %3289 ]
  br label %3293

3293:                                             ; preds = %3291, %3234
  %3294 = phi i32 [ 1, %3234 ], [ %3292, %3291 ]
  br label %3295

3295:                                             ; preds = %3293, %3229
  %3296 = phi i32 [ 1, %3229 ], [ %3294, %3293 ]
  br label %3297

3297:                                             ; preds = %3295, %3224
  %3298 = phi i32 [ 2, %3224 ], [ %3296, %3295 ]
  br label %3299

3299:                                             ; preds = %3297, %3219
  %3300 = phi i32 [ 2, %3219 ], [ %3298, %3297 ]
  br label %3301

3301:                                             ; preds = %3299, %3214
  %3302 = phi i32 [ 4, %3214 ], [ %3300, %3299 ]
  br label %3303

3303:                                             ; preds = %3301, %3209
  %3304 = phi i32 [ 8, %3209 ], [ %3302, %3301 ]
  %3305 = sext i32 %3304 to i64
  %3306 = mul i64 %3205, %3305
  %3307 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %3306, i64 noundef 64)
  store ptr %3307, ptr %93, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #10
  store i32 0, ptr %94, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #10
  store i32 0, ptr %95, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #10
  store i32 0, ptr %96, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #10
  store i32 0, ptr %97, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #10
  %3308 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %3308, ptr %98, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  %3309 = load ptr, ptr %93, align 8, !tbaa !9
  store ptr %3309, ptr %99, align 8, !tbaa !9
  store i32 0, ptr %94, align 4, !tbaa !5
  br label %3310

3310:                                             ; preds = %3633, %3303
  %3311 = load i32, ptr %94, align 4, !tbaa !5
  %3312 = load i32, ptr %29, align 4, !tbaa !5
  %3313 = icmp slt i32 %3311, %3312
  br i1 %3313, label %3314, label %3636

3314:                                             ; preds = %3310
  store i32 0, ptr %95, align 4, !tbaa !5
  br label %3315

3315:                                             ; preds = %3629, %3314
  %3316 = load i32, ptr %95, align 4, !tbaa !5
  %3317 = load i32, ptr %17, align 4, !tbaa !5
  %3318 = icmp slt i32 %3316, %3317
  br i1 %3318, label %3319, label %3632

3319:                                             ; preds = %3315
  store i32 0, ptr %96, align 4, !tbaa !5
  br label %3320

3320:                                             ; preds = %3625, %3319
  %3321 = load i32, ptr %96, align 4, !tbaa !5
  %3322 = load i32, ptr %19, align 4, !tbaa !5
  %3323 = icmp slt i32 %3321, %3322
  br i1 %3323, label %3324, label %3628

3324:                                             ; preds = %3320
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #10
  %3325 = load ptr, ptr %98, align 8, !tbaa !9
  %3326 = load i32, ptr %94, align 4, !tbaa !5
  %3327 = load i32, ptr %14, align 4, !tbaa !5
  %3328 = mul nsw i32 %3326, %3327
  %3329 = load i32, ptr %19, align 4, !tbaa !5
  %3330 = mul nsw i32 %3328, %3329
  %3331 = load i32, ptr %96, align 4, !tbaa !5
  %3332 = sdiv i32 %3331, 4
  %3333 = add nsw i32 %3332, 0
  %3334 = load i32, ptr %14, align 4, !tbaa !5
  %3335 = mul nsw i32 %3333, %3334
  %3336 = mul nsw i32 %3335, 4
  %3337 = add nsw i32 %3330, %3336
  %3338 = load i32, ptr %95, align 4, !tbaa !5
  %3339 = mul nsw i32 %3338, 4
  %3340 = add nsw i32 %3337, %3339
  %3341 = add nsw i32 %3340, 0
  %3342 = sext i32 %3341 to i64
  %3343 = getelementptr inbounds i8, ptr %3325, i64 %3342
  %3344 = load i8, ptr %3343, align 1, !tbaa !61
  store i8 %3344, ptr %100, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #10
  %3345 = load ptr, ptr %98, align 8, !tbaa !9
  %3346 = load i32, ptr %94, align 4, !tbaa !5
  %3347 = load i32, ptr %14, align 4, !tbaa !5
  %3348 = mul nsw i32 %3346, %3347
  %3349 = load i32, ptr %19, align 4, !tbaa !5
  %3350 = mul nsw i32 %3348, %3349
  %3351 = load i32, ptr %96, align 4, !tbaa !5
  %3352 = sdiv i32 %3351, 4
  %3353 = add nsw i32 %3352, 1
  %3354 = load i32, ptr %14, align 4, !tbaa !5
  %3355 = mul nsw i32 %3353, %3354
  %3356 = mul nsw i32 %3355, 4
  %3357 = add nsw i32 %3350, %3356
  %3358 = load i32, ptr %95, align 4, !tbaa !5
  %3359 = mul nsw i32 %3358, 4
  %3360 = add nsw i32 %3357, %3359
  %3361 = add nsw i32 %3360, 0
  %3362 = sext i32 %3361 to i64
  %3363 = getelementptr inbounds i8, ptr %3345, i64 %3362
  %3364 = load i8, ptr %3363, align 1, !tbaa !61
  store i8 %3364, ptr %101, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #10
  %3365 = load i8, ptr %100, align 1, !tbaa !61
  %3366 = zext i8 %3365 to i32
  %3367 = and i32 %3366, 15
  %3368 = trunc i32 %3367 to i8
  store i8 %3368, ptr %100, align 1, !tbaa !61
  %3369 = load i8, ptr %101, align 1, !tbaa !61
  %3370 = zext i8 %3369 to i32
  %3371 = and i32 %3370, 15
  %3372 = shl i32 %3371, 4
  %3373 = trunc i32 %3372 to i8
  store i8 %3373, ptr %101, align 1, !tbaa !61
  %3374 = load i8, ptr %100, align 1, !tbaa !61
  %3375 = zext i8 %3374 to i32
  %3376 = load i8, ptr %101, align 1, !tbaa !61
  %3377 = zext i8 %3376 to i32
  %3378 = or i32 %3375, %3377
  %3379 = trunc i32 %3378 to i8
  store i8 %3379, ptr %102, align 1, !tbaa !61
  %3380 = load i8, ptr %102, align 1, !tbaa !61
  %3381 = load ptr, ptr %99, align 8, !tbaa !9
  %3382 = load i32, ptr %94, align 4, !tbaa !5
  %3383 = load i32, ptr %14, align 4, !tbaa !5
  %3384 = mul nsw i32 %3382, %3383
  %3385 = load i32, ptr %19, align 4, !tbaa !5
  %3386 = sdiv i32 %3385, 2
  %3387 = mul nsw i32 %3384, %3386
  %3388 = load i32, ptr %96, align 4, !tbaa !5
  %3389 = sdiv i32 %3388, 8
  %3390 = load i32, ptr %14, align 4, !tbaa !5
  %3391 = mul nsw i32 %3389, %3390
  %3392 = mul nsw i32 %3391, 4
  %3393 = add nsw i32 %3387, %3392
  %3394 = load i32, ptr %95, align 4, !tbaa !5
  %3395 = mul nsw i32 4, %3394
  %3396 = add nsw i32 %3393, %3395
  %3397 = add nsw i32 %3396, 0
  %3398 = sext i32 %3397 to i64
  %3399 = getelementptr inbounds i8, ptr %3381, i64 %3398
  store i8 %3380, ptr %3399, align 1, !tbaa !61
  %3400 = load ptr, ptr %98, align 8, !tbaa !9
  %3401 = load i32, ptr %94, align 4, !tbaa !5
  %3402 = load i32, ptr %14, align 4, !tbaa !5
  %3403 = mul nsw i32 %3401, %3402
  %3404 = load i32, ptr %19, align 4, !tbaa !5
  %3405 = mul nsw i32 %3403, %3404
  %3406 = load i32, ptr %96, align 4, !tbaa !5
  %3407 = sdiv i32 %3406, 4
  %3408 = add nsw i32 %3407, 0
  %3409 = load i32, ptr %14, align 4, !tbaa !5
  %3410 = mul nsw i32 %3408, %3409
  %3411 = mul nsw i32 %3410, 4
  %3412 = add nsw i32 %3405, %3411
  %3413 = load i32, ptr %95, align 4, !tbaa !5
  %3414 = mul nsw i32 %3413, 4
  %3415 = add nsw i32 %3412, %3414
  %3416 = add nsw i32 %3415, 1
  %3417 = sext i32 %3416 to i64
  %3418 = getelementptr inbounds i8, ptr %3400, i64 %3417
  %3419 = load i8, ptr %3418, align 1, !tbaa !61
  store i8 %3419, ptr %100, align 1, !tbaa !61
  %3420 = load ptr, ptr %98, align 8, !tbaa !9
  %3421 = load i32, ptr %94, align 4, !tbaa !5
  %3422 = load i32, ptr %14, align 4, !tbaa !5
  %3423 = mul nsw i32 %3421, %3422
  %3424 = load i32, ptr %19, align 4, !tbaa !5
  %3425 = mul nsw i32 %3423, %3424
  %3426 = load i32, ptr %96, align 4, !tbaa !5
  %3427 = sdiv i32 %3426, 4
  %3428 = add nsw i32 %3427, 1
  %3429 = load i32, ptr %14, align 4, !tbaa !5
  %3430 = mul nsw i32 %3428, %3429
  %3431 = mul nsw i32 %3430, 4
  %3432 = add nsw i32 %3425, %3431
  %3433 = load i32, ptr %95, align 4, !tbaa !5
  %3434 = mul nsw i32 %3433, 4
  %3435 = add nsw i32 %3432, %3434
  %3436 = add nsw i32 %3435, 1
  %3437 = sext i32 %3436 to i64
  %3438 = getelementptr inbounds i8, ptr %3420, i64 %3437
  %3439 = load i8, ptr %3438, align 1, !tbaa !61
  store i8 %3439, ptr %101, align 1, !tbaa !61
  %3440 = load i8, ptr %100, align 1, !tbaa !61
  %3441 = zext i8 %3440 to i32
  %3442 = and i32 %3441, 15
  %3443 = trunc i32 %3442 to i8
  store i8 %3443, ptr %100, align 1, !tbaa !61
  %3444 = load i8, ptr %101, align 1, !tbaa !61
  %3445 = zext i8 %3444 to i32
  %3446 = and i32 %3445, 15
  %3447 = shl i32 %3446, 4
  %3448 = trunc i32 %3447 to i8
  store i8 %3448, ptr %101, align 1, !tbaa !61
  %3449 = load i8, ptr %100, align 1, !tbaa !61
  %3450 = zext i8 %3449 to i32
  %3451 = load i8, ptr %101, align 1, !tbaa !61
  %3452 = zext i8 %3451 to i32
  %3453 = or i32 %3450, %3452
  %3454 = trunc i32 %3453 to i8
  store i8 %3454, ptr %102, align 1, !tbaa !61
  %3455 = load i8, ptr %102, align 1, !tbaa !61
  %3456 = load ptr, ptr %99, align 8, !tbaa !9
  %3457 = load i32, ptr %94, align 4, !tbaa !5
  %3458 = load i32, ptr %14, align 4, !tbaa !5
  %3459 = mul nsw i32 %3457, %3458
  %3460 = load i32, ptr %19, align 4, !tbaa !5
  %3461 = sdiv i32 %3460, 2
  %3462 = mul nsw i32 %3459, %3461
  %3463 = load i32, ptr %96, align 4, !tbaa !5
  %3464 = sdiv i32 %3463, 8
  %3465 = load i32, ptr %14, align 4, !tbaa !5
  %3466 = mul nsw i32 %3464, %3465
  %3467 = mul nsw i32 %3466, 4
  %3468 = add nsw i32 %3462, %3467
  %3469 = load i32, ptr %95, align 4, !tbaa !5
  %3470 = mul nsw i32 4, %3469
  %3471 = add nsw i32 %3468, %3470
  %3472 = add nsw i32 %3471, 1
  %3473 = sext i32 %3472 to i64
  %3474 = getelementptr inbounds i8, ptr %3456, i64 %3473
  store i8 %3455, ptr %3474, align 1, !tbaa !61
  %3475 = load ptr, ptr %98, align 8, !tbaa !9
  %3476 = load i32, ptr %94, align 4, !tbaa !5
  %3477 = load i32, ptr %14, align 4, !tbaa !5
  %3478 = mul nsw i32 %3476, %3477
  %3479 = load i32, ptr %19, align 4, !tbaa !5
  %3480 = mul nsw i32 %3478, %3479
  %3481 = load i32, ptr %96, align 4, !tbaa !5
  %3482 = sdiv i32 %3481, 4
  %3483 = add nsw i32 %3482, 0
  %3484 = load i32, ptr %14, align 4, !tbaa !5
  %3485 = mul nsw i32 %3483, %3484
  %3486 = mul nsw i32 %3485, 4
  %3487 = add nsw i32 %3480, %3486
  %3488 = load i32, ptr %95, align 4, !tbaa !5
  %3489 = mul nsw i32 %3488, 4
  %3490 = add nsw i32 %3487, %3489
  %3491 = add nsw i32 %3490, 2
  %3492 = sext i32 %3491 to i64
  %3493 = getelementptr inbounds i8, ptr %3475, i64 %3492
  %3494 = load i8, ptr %3493, align 1, !tbaa !61
  store i8 %3494, ptr %100, align 1, !tbaa !61
  %3495 = load ptr, ptr %98, align 8, !tbaa !9
  %3496 = load i32, ptr %94, align 4, !tbaa !5
  %3497 = load i32, ptr %14, align 4, !tbaa !5
  %3498 = mul nsw i32 %3496, %3497
  %3499 = load i32, ptr %19, align 4, !tbaa !5
  %3500 = mul nsw i32 %3498, %3499
  %3501 = load i32, ptr %96, align 4, !tbaa !5
  %3502 = sdiv i32 %3501, 4
  %3503 = add nsw i32 %3502, 1
  %3504 = load i32, ptr %14, align 4, !tbaa !5
  %3505 = mul nsw i32 %3503, %3504
  %3506 = mul nsw i32 %3505, 4
  %3507 = add nsw i32 %3500, %3506
  %3508 = load i32, ptr %95, align 4, !tbaa !5
  %3509 = mul nsw i32 %3508, 4
  %3510 = add nsw i32 %3507, %3509
  %3511 = add nsw i32 %3510, 2
  %3512 = sext i32 %3511 to i64
  %3513 = getelementptr inbounds i8, ptr %3495, i64 %3512
  %3514 = load i8, ptr %3513, align 1, !tbaa !61
  store i8 %3514, ptr %101, align 1, !tbaa !61
  %3515 = load i8, ptr %100, align 1, !tbaa !61
  %3516 = zext i8 %3515 to i32
  %3517 = and i32 %3516, 15
  %3518 = trunc i32 %3517 to i8
  store i8 %3518, ptr %100, align 1, !tbaa !61
  %3519 = load i8, ptr %101, align 1, !tbaa !61
  %3520 = zext i8 %3519 to i32
  %3521 = and i32 %3520, 15
  %3522 = shl i32 %3521, 4
  %3523 = trunc i32 %3522 to i8
  store i8 %3523, ptr %101, align 1, !tbaa !61
  %3524 = load i8, ptr %100, align 1, !tbaa !61
  %3525 = zext i8 %3524 to i32
  %3526 = load i8, ptr %101, align 1, !tbaa !61
  %3527 = zext i8 %3526 to i32
  %3528 = or i32 %3525, %3527
  %3529 = trunc i32 %3528 to i8
  store i8 %3529, ptr %102, align 1, !tbaa !61
  %3530 = load i8, ptr %102, align 1, !tbaa !61
  %3531 = load ptr, ptr %99, align 8, !tbaa !9
  %3532 = load i32, ptr %94, align 4, !tbaa !5
  %3533 = load i32, ptr %14, align 4, !tbaa !5
  %3534 = mul nsw i32 %3532, %3533
  %3535 = load i32, ptr %19, align 4, !tbaa !5
  %3536 = sdiv i32 %3535, 2
  %3537 = mul nsw i32 %3534, %3536
  %3538 = load i32, ptr %96, align 4, !tbaa !5
  %3539 = sdiv i32 %3538, 8
  %3540 = load i32, ptr %14, align 4, !tbaa !5
  %3541 = mul nsw i32 %3539, %3540
  %3542 = mul nsw i32 %3541, 4
  %3543 = add nsw i32 %3537, %3542
  %3544 = load i32, ptr %95, align 4, !tbaa !5
  %3545 = mul nsw i32 4, %3544
  %3546 = add nsw i32 %3543, %3545
  %3547 = add nsw i32 %3546, 2
  %3548 = sext i32 %3547 to i64
  %3549 = getelementptr inbounds i8, ptr %3531, i64 %3548
  store i8 %3530, ptr %3549, align 1, !tbaa !61
  %3550 = load ptr, ptr %98, align 8, !tbaa !9
  %3551 = load i32, ptr %94, align 4, !tbaa !5
  %3552 = load i32, ptr %14, align 4, !tbaa !5
  %3553 = mul nsw i32 %3551, %3552
  %3554 = load i32, ptr %19, align 4, !tbaa !5
  %3555 = mul nsw i32 %3553, %3554
  %3556 = load i32, ptr %96, align 4, !tbaa !5
  %3557 = sdiv i32 %3556, 4
  %3558 = add nsw i32 %3557, 0
  %3559 = load i32, ptr %14, align 4, !tbaa !5
  %3560 = mul nsw i32 %3558, %3559
  %3561 = mul nsw i32 %3560, 4
  %3562 = add nsw i32 %3555, %3561
  %3563 = load i32, ptr %95, align 4, !tbaa !5
  %3564 = mul nsw i32 %3563, 4
  %3565 = add nsw i32 %3562, %3564
  %3566 = add nsw i32 %3565, 3
  %3567 = sext i32 %3566 to i64
  %3568 = getelementptr inbounds i8, ptr %3550, i64 %3567
  %3569 = load i8, ptr %3568, align 1, !tbaa !61
  store i8 %3569, ptr %100, align 1, !tbaa !61
  %3570 = load ptr, ptr %98, align 8, !tbaa !9
  %3571 = load i32, ptr %94, align 4, !tbaa !5
  %3572 = load i32, ptr %14, align 4, !tbaa !5
  %3573 = mul nsw i32 %3571, %3572
  %3574 = load i32, ptr %19, align 4, !tbaa !5
  %3575 = mul nsw i32 %3573, %3574
  %3576 = load i32, ptr %96, align 4, !tbaa !5
  %3577 = sdiv i32 %3576, 4
  %3578 = add nsw i32 %3577, 1
  %3579 = load i32, ptr %14, align 4, !tbaa !5
  %3580 = mul nsw i32 %3578, %3579
  %3581 = mul nsw i32 %3580, 4
  %3582 = add nsw i32 %3575, %3581
  %3583 = load i32, ptr %95, align 4, !tbaa !5
  %3584 = mul nsw i32 %3583, 4
  %3585 = add nsw i32 %3582, %3584
  %3586 = add nsw i32 %3585, 3
  %3587 = sext i32 %3586 to i64
  %3588 = getelementptr inbounds i8, ptr %3570, i64 %3587
  %3589 = load i8, ptr %3588, align 1, !tbaa !61
  store i8 %3589, ptr %101, align 1, !tbaa !61
  %3590 = load i8, ptr %100, align 1, !tbaa !61
  %3591 = zext i8 %3590 to i32
  %3592 = and i32 %3591, 15
  %3593 = trunc i32 %3592 to i8
  store i8 %3593, ptr %100, align 1, !tbaa !61
  %3594 = load i8, ptr %101, align 1, !tbaa !61
  %3595 = zext i8 %3594 to i32
  %3596 = and i32 %3595, 15
  %3597 = shl i32 %3596, 4
  %3598 = trunc i32 %3597 to i8
  store i8 %3598, ptr %101, align 1, !tbaa !61
  %3599 = load i8, ptr %100, align 1, !tbaa !61
  %3600 = zext i8 %3599 to i32
  %3601 = load i8, ptr %101, align 1, !tbaa !61
  %3602 = zext i8 %3601 to i32
  %3603 = or i32 %3600, %3602
  %3604 = trunc i32 %3603 to i8
  store i8 %3604, ptr %102, align 1, !tbaa !61
  %3605 = load i8, ptr %102, align 1, !tbaa !61
  %3606 = load ptr, ptr %99, align 8, !tbaa !9
  %3607 = load i32, ptr %94, align 4, !tbaa !5
  %3608 = load i32, ptr %14, align 4, !tbaa !5
  %3609 = mul nsw i32 %3607, %3608
  %3610 = load i32, ptr %19, align 4, !tbaa !5
  %3611 = sdiv i32 %3610, 2
  %3612 = mul nsw i32 %3609, %3611
  %3613 = load i32, ptr %96, align 4, !tbaa !5
  %3614 = sdiv i32 %3613, 8
  %3615 = load i32, ptr %14, align 4, !tbaa !5
  %3616 = mul nsw i32 %3614, %3615
  %3617 = mul nsw i32 %3616, 4
  %3618 = add nsw i32 %3612, %3617
  %3619 = load i32, ptr %95, align 4, !tbaa !5
  %3620 = mul nsw i32 4, %3619
  %3621 = add nsw i32 %3618, %3620
  %3622 = add nsw i32 %3621, 3
  %3623 = sext i32 %3622 to i64
  %3624 = getelementptr inbounds i8, ptr %3606, i64 %3623
  store i8 %3605, ptr %3624, align 1, !tbaa !61
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #10
  br label %3625

3625:                                             ; preds = %3324
  %3626 = load i32, ptr %96, align 4, !tbaa !5
  %3627 = add nsw i32 %3626, 8
  store i32 %3627, ptr %96, align 4, !tbaa !5
  br label %3320, !llvm.loop !77

3628:                                             ; preds = %3320
  br label %3629

3629:                                             ; preds = %3628
  %3630 = load i32, ptr %95, align 4, !tbaa !5
  %3631 = add nsw i32 %3630, 1
  store i32 %3631, ptr %95, align 4, !tbaa !5
  br label %3315, !llvm.loop !78

3632:                                             ; preds = %3315
  br label %3633

3633:                                             ; preds = %3632
  %3634 = load i32, ptr %94, align 4, !tbaa !5
  %3635 = add nsw i32 %3634, 1
  store i32 %3635, ptr %94, align 4, !tbaa !5
  br label %3310, !llvm.loop !79

3636:                                             ; preds = %3310
  %3637 = load ptr, ptr %93, align 8, !tbaa !9
  %3638 = load ptr, ptr %57, align 8, !tbaa !9
  %3639 = load ptr, ptr %58, align 8, !tbaa !9
  %3640 = load ptr, ptr %59, align 8, !tbaa !9
  %3641 = load i32, ptr %40, align 4, !tbaa !5
  %3642 = load i32, ptr %33, align 4, !tbaa !5
  %3643 = call double @jit_matmul(ptr noundef %44, ptr noundef %3637, ptr noundef %3638, ptr noundef %3639, ptr noundef %3640, i32 noundef %3641, i32 noundef %3642, ptr noundef %65)
  store double %3643, ptr %32, align 8, !tbaa !11
  %3644 = load ptr, ptr %93, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %3644)
  store i32 0, ptr %94, align 4, !tbaa !5
  br label %3645

3645:                                             ; preds = %3731, %3636
  %3646 = load i32, ptr %94, align 4, !tbaa !5
  %3647 = load i32, ptr %29, align 4, !tbaa !5
  %3648 = icmp slt i32 %3646, %3647
  br i1 %3648, label %3649, label %3734

3649:                                             ; preds = %3645
  store i32 0, ptr %96, align 4, !tbaa !5
  br label %3650

3650:                                             ; preds = %3727, %3649
  %3651 = load i32, ptr %96, align 4, !tbaa !5
  %3652 = load i32, ptr %19, align 4, !tbaa !5
  %3653 = sdiv i32 %3652, 4
  %3654 = icmp slt i32 %3651, %3653
  br i1 %3654, label %3655, label %3730

3655:                                             ; preds = %3650
  store i32 0, ptr %95, align 4, !tbaa !5
  br label %3656

3656:                                             ; preds = %3723, %3655
  %3657 = load i32, ptr %95, align 4, !tbaa !5
  %3658 = load i32, ptr %17, align 4, !tbaa !5
  %3659 = icmp slt i32 %3657, %3658
  br i1 %3659, label %3660, label %3726

3660:                                             ; preds = %3656
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #10
  %3661 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 33
  %3662 = load ptr, ptr %3661, align 8, !tbaa !63
  %3663 = load i32, ptr %94, align 4, !tbaa !5
  %3664 = load i32, ptr %14, align 4, !tbaa !5
  %3665 = mul nsw i32 %3663, %3664
  %3666 = load i32, ptr %95, align 4, !tbaa !5
  %3667 = add nsw i32 %3665, %3666
  %3668 = sext i32 %3667 to i64
  %3669 = getelementptr inbounds i8, ptr %3662, i64 %3668
  %3670 = load i8, ptr %3669, align 1, !tbaa !61
  store i8 %3670, ptr %103, align 1, !tbaa !61
  store i32 0, ptr %97, align 4, !tbaa !5
  br label %3671

3671:                                             ; preds = %3719, %3660
  %3672 = load i32, ptr %97, align 4, !tbaa !5
  %3673 = icmp slt i32 %3672, 4
  br i1 %3673, label %3674, label %3722

3674:                                             ; preds = %3671
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #10
  %3675 = load ptr, ptr %98, align 8, !tbaa !9
  %3676 = load i32, ptr %94, align 4, !tbaa !5
  %3677 = load i32, ptr %14, align 4, !tbaa !5
  %3678 = mul nsw i32 %3676, %3677
  %3679 = load i32, ptr %19, align 4, !tbaa !5
  %3680 = mul nsw i32 %3678, %3679
  %3681 = load i32, ptr %96, align 4, !tbaa !5
  %3682 = load i32, ptr %14, align 4, !tbaa !5
  %3683 = mul nsw i32 %3681, %3682
  %3684 = mul nsw i32 %3683, 4
  %3685 = add nsw i32 %3680, %3684
  %3686 = load i32, ptr %95, align 4, !tbaa !5
  %3687 = mul nsw i32 %3686, 4
  %3688 = add nsw i32 %3685, %3687
  %3689 = load i32, ptr %97, align 4, !tbaa !5
  %3690 = add nsw i32 %3688, %3689
  %3691 = sext i32 %3690 to i64
  %3692 = getelementptr inbounds i8, ptr %3675, i64 %3691
  %3693 = load i8, ptr %3692, align 1, !tbaa !61
  store i8 %3693, ptr %104, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #10
  %3694 = load i8, ptr %104, align 1, !tbaa !61
  %3695 = zext i8 %3694 to i32
  %3696 = load i8, ptr %103, align 1, !tbaa !61
  %3697 = zext i8 %3696 to i32
  %3698 = sub nsw i32 %3695, %3697
  %3699 = trunc i32 %3698 to i8
  store i8 %3699, ptr %105, align 1, !tbaa !61
  %3700 = load i8, ptr %105, align 1, !tbaa !61
  %3701 = load ptr, ptr %98, align 8, !tbaa !9
  %3702 = load i32, ptr %94, align 4, !tbaa !5
  %3703 = load i32, ptr %14, align 4, !tbaa !5
  %3704 = mul nsw i32 %3702, %3703
  %3705 = load i32, ptr %19, align 4, !tbaa !5
  %3706 = mul nsw i32 %3704, %3705
  %3707 = load i32, ptr %96, align 4, !tbaa !5
  %3708 = load i32, ptr %14, align 4, !tbaa !5
  %3709 = mul nsw i32 %3707, %3708
  %3710 = mul nsw i32 %3709, 4
  %3711 = add nsw i32 %3706, %3710
  %3712 = load i32, ptr %95, align 4, !tbaa !5
  %3713 = mul nsw i32 %3712, 4
  %3714 = add nsw i32 %3711, %3713
  %3715 = load i32, ptr %97, align 4, !tbaa !5
  %3716 = add nsw i32 %3714, %3715
  %3717 = sext i32 %3716 to i64
  %3718 = getelementptr inbounds i8, ptr %3701, i64 %3717
  store i8 %3700, ptr %3718, align 1, !tbaa !61
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #10
  br label %3719

3719:                                             ; preds = %3674
  %3720 = load i32, ptr %97, align 4, !tbaa !5
  %3721 = add nsw i32 %3720, 1
  store i32 %3721, ptr %97, align 4, !tbaa !5
  br label %3671, !llvm.loop !80

3722:                                             ; preds = %3671
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #10
  br label %3723

3723:                                             ; preds = %3722
  %3724 = load i32, ptr %95, align 4, !tbaa !5
  %3725 = add nsw i32 %3724, 1
  store i32 %3725, ptr %95, align 4, !tbaa !5
  br label %3656, !llvm.loop !81

3726:                                             ; preds = %3656
  br label %3727

3727:                                             ; preds = %3726
  %3728 = load i32, ptr %96, align 4, !tbaa !5
  %3729 = add nsw i32 %3728, 1
  store i32 %3729, ptr %96, align 4, !tbaa !5
  br label %3650, !llvm.loop !82

3730:                                             ; preds = %3650
  br label %3731

3731:                                             ; preds = %3730
  %3732 = load i32, ptr %94, align 4, !tbaa !5
  %3733 = add nsw i32 %3732, 1
  store i32 %3733, ptr %94, align 4, !tbaa !5
  br label %3645, !llvm.loop !83

3734:                                             ; preds = %3645
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  br label %3735

3735:                                             ; preds = %3734, %3189
  %3736 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %3737 = load i32, ptr %3736, align 4, !tbaa !18
  %3738 = icmp ugt i32 %3737, 0
  br i1 %3738, label %3739, label %3918

3739:                                             ; preds = %3735
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #10
  store i32 0, ptr %106, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #10
  store i32 0, ptr %107, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #10
  store i32 0, ptr %108, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #10
  store i32 0, ptr %109, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #10
  %3740 = load i32, ptr %14, align 4, !tbaa !5
  %3741 = sext i32 %3740 to i64
  %3742 = load i32, ptr %19, align 4, !tbaa !5
  %3743 = sext i32 %3742 to i64
  %3744 = udiv i64 %3743, 2
  %3745 = mul i64 %3741, %3744
  %3746 = load i32, ptr %29, align 4, !tbaa !5
  %3747 = sext i32 %3746 to i64
  %3748 = mul i64 %3745, %3747
  %3749 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %3748, i64 noundef 64)
  store ptr %3749, ptr %110, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #10
  store i8 0, ptr %111, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #10
  store i32 0, ptr %112, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #10
  store ptr %112, ptr %113, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #10
  store float 0.000000e+00, ptr %114, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #10
  store ptr null, ptr %115, align 8, !tbaa !9
  %3750 = load ptr, ptr %56, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %3750)
  %3751 = load i32, ptr %14, align 4, !tbaa !5
  %3752 = sext i32 %3751 to i64
  %3753 = load i32, ptr %19, align 4, !tbaa !5
  %3754 = sext i32 %3753 to i64
  %3755 = mul i64 %3752, %3754
  %3756 = load i32, ptr %29, align 4, !tbaa !5
  %3757 = sext i32 %3756 to i64
  %3758 = mul i64 %3755, %3757
  %3759 = mul i64 %3758, 2
  %3760 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %3759, i64 noundef 64)
  store ptr %3760, ptr %56, align 8, !tbaa !9
  %3761 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %3761, ptr %115, align 8, !tbaa !9
  store i32 0, ptr %106, align 4, !tbaa !5
  br label %3762

3762:                                             ; preds = %3904, %3739
  %3763 = load i32, ptr %106, align 4, !tbaa !5
  %3764 = load i32, ptr %29, align 4, !tbaa !5
  %3765 = icmp slt i32 %3763, %3764
  br i1 %3765, label %3766, label %3907

3766:                                             ; preds = %3762
  store i32 0, ptr %107, align 4, !tbaa !5
  br label %3767

3767:                                             ; preds = %3900, %3766
  %3768 = load i32, ptr %107, align 4, !tbaa !5
  %3769 = load i32, ptr %17, align 4, !tbaa !5
  %3770 = icmp slt i32 %3768, %3769
  br i1 %3770, label %3771, label %3903

3771:                                             ; preds = %3767
  store i32 0, ptr %108, align 4, !tbaa !5
  br label %3772

3772:                                             ; preds = %3896, %3771
  %3773 = load i32, ptr %108, align 4, !tbaa !5
  %3774 = load i32, ptr %19, align 4, !tbaa !5
  %3775 = sdiv i32 %3774, 2
  %3776 = icmp slt i32 %3773, %3775
  br i1 %3776, label %3777, label %3899

3777:                                             ; preds = %3772
  %3778 = load i32, ptr %108, align 4, !tbaa !5
  %3779 = srem i32 %3778, 16
  %3780 = icmp eq i32 %3779, 0
  br i1 %3780, label %3781, label %3806

3781:                                             ; preds = %3777
  %3782 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 34
  %3783 = load ptr, ptr %3782, align 8, !tbaa !65
  %3784 = load i32, ptr %106, align 4, !tbaa !5
  %3785 = load i32, ptr %14, align 4, !tbaa !5
  %3786 = mul nsw i32 %3784, %3785
  %3787 = load i32, ptr %19, align 4, !tbaa !5
  %3788 = sdiv i32 %3787, 32
  %3789 = mul nsw i32 %3786, %3788
  %3790 = load i32, ptr %108, align 4, !tbaa !5
  %3791 = sdiv i32 %3790, 16
  %3792 = load i32, ptr %14, align 4, !tbaa !5
  %3793 = mul nsw i32 %3791, %3792
  %3794 = add nsw i32 %3789, %3793
  %3795 = load i32, ptr %107, align 4, !tbaa !5
  %3796 = add nsw i32 %3794, %3795
  %3797 = sext i32 %3796 to i64
  %3798 = getelementptr inbounds i8, ptr %3783, i64 %3797
  %3799 = load i8, ptr %3798, align 1, !tbaa !61
  store i8 %3799, ptr %111, align 1, !tbaa !61
  %3800 = load i8, ptr %111, align 1, !tbaa !61
  %3801 = zext i8 %3800 to i32
  store i32 %3801, ptr %112, align 4, !tbaa !5
  %3802 = load i32, ptr %112, align 4, !tbaa !5
  %3803 = shl i32 %3802, 23
  store i32 %3803, ptr %112, align 4, !tbaa !5
  %3804 = load ptr, ptr %113, align 8, !tbaa !9
  %3805 = load float, ptr %3804, align 4, !tbaa !13
  store float %3805, ptr %114, align 4, !tbaa !13
  br label %3806

3806:                                             ; preds = %3781, %3777
  store i32 0, ptr %109, align 4, !tbaa !5
  br label %3807

3807:                                             ; preds = %3892, %3806
  %3808 = load i32, ptr %109, align 4, !tbaa !5
  %3809 = icmp slt i32 %3808, 2
  br i1 %3809, label %3810, label %3895

3810:                                             ; preds = %3807
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #10
  %3811 = call i32 @rand() #10
  %3812 = srem i32 %3811, 16
  %3813 = trunc i32 %3812 to i8
  store i8 %3813, ptr %116, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %117) #10
  %3814 = call i32 @rand() #10
  %3815 = srem i32 %3814, 16
  %3816 = trunc i32 %3815 to i8
  store i8 %3816, ptr %117, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #10
  %3817 = load i8, ptr %116, align 1, !tbaa !61
  %3818 = call float @convert_mxfp4_to_float(i8 noundef zeroext %3817)
  %3819 = load float, ptr %114, align 4, !tbaa !13
  %3820 = fmul float %3818, %3819
  store float %3820, ptr %119, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #10
  %3821 = load i8, ptr %117, align 1, !tbaa !61
  %3822 = call float @convert_mxfp4_to_float(i8 noundef zeroext %3821)
  %3823 = load float, ptr %114, align 4, !tbaa !13
  %3824 = fmul float %3822, %3823
  store float %3824, ptr %120, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 2, ptr %121) #10
  call void @llvm.lifetime.start.p0(i64 2, ptr %122) #10
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef %119, ptr noundef %121, i64 noundef 1)
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef %120, ptr noundef %122, i64 noundef 1)
  %3825 = load i8, ptr %116, align 1, !tbaa !61
  %3826 = zext i8 %3825 to i32
  %3827 = and i32 %3826, 15
  %3828 = trunc i32 %3827 to i8
  store i8 %3828, ptr %116, align 1, !tbaa !61
  %3829 = load i8, ptr %117, align 1, !tbaa !61
  %3830 = zext i8 %3829 to i32
  %3831 = and i32 %3830, 15
  %3832 = shl i32 %3831, 4
  %3833 = trunc i32 %3832 to i8
  store i8 %3833, ptr %117, align 1, !tbaa !61
  %3834 = load i8, ptr %116, align 1, !tbaa !61
  %3835 = zext i8 %3834 to i32
  %3836 = load i8, ptr %117, align 1, !tbaa !61
  %3837 = zext i8 %3836 to i32
  %3838 = or i32 %3835, %3837
  %3839 = trunc i32 %3838 to i8
  store i8 %3839, ptr %118, align 1, !tbaa !61
  %3840 = load i8, ptr %118, align 1, !tbaa !61
  %3841 = load ptr, ptr %110, align 8, !tbaa !9
  %3842 = load i32, ptr %106, align 4, !tbaa !5
  %3843 = load i32, ptr %14, align 4, !tbaa !5
  %3844 = mul nsw i32 %3842, %3843
  %3845 = load i32, ptr %19, align 4, !tbaa !5
  %3846 = sdiv i32 %3845, 2
  %3847 = mul nsw i32 %3844, %3846
  %3848 = load i32, ptr %108, align 4, !tbaa !5
  %3849 = load i32, ptr %14, align 4, !tbaa !5
  %3850 = mul nsw i32 %3848, %3849
  %3851 = add nsw i32 %3847, %3850
  %3852 = load i32, ptr %107, align 4, !tbaa !5
  %3853 = add nsw i32 %3851, %3852
  %3854 = sext i32 %3853 to i64
  %3855 = getelementptr inbounds i8, ptr %3841, i64 %3854
  store i8 %3840, ptr %3855, align 1, !tbaa !61
  %3856 = load i16, ptr %121, align 2, !tbaa !84
  %3857 = load ptr, ptr %115, align 8, !tbaa !9
  %3858 = load i32, ptr %106, align 4, !tbaa !5
  %3859 = load i32, ptr %14, align 4, !tbaa !5
  %3860 = mul nsw i32 %3858, %3859
  %3861 = load i32, ptr %19, align 4, !tbaa !5
  %3862 = mul nsw i32 %3860, %3861
  %3863 = load i32, ptr %108, align 4, !tbaa !5
  %3864 = load i32, ptr %14, align 4, !tbaa !5
  %3865 = mul nsw i32 %3863, %3864
  %3866 = mul nsw i32 %3865, 2
  %3867 = add nsw i32 %3862, %3866
  %3868 = load i32, ptr %107, align 4, !tbaa !5
  %3869 = mul nsw i32 %3868, 2
  %3870 = add nsw i32 %3867, %3869
  %3871 = add nsw i32 %3870, 0
  %3872 = sext i32 %3871 to i64
  %3873 = getelementptr inbounds i16, ptr %3857, i64 %3872
  store i16 %3856, ptr %3873, align 2, !tbaa !84
  %3874 = load i16, ptr %122, align 2, !tbaa !84
  %3875 = load ptr, ptr %115, align 8, !tbaa !9
  %3876 = load i32, ptr %106, align 4, !tbaa !5
  %3877 = load i32, ptr %14, align 4, !tbaa !5
  %3878 = mul nsw i32 %3876, %3877
  %3879 = load i32, ptr %19, align 4, !tbaa !5
  %3880 = mul nsw i32 %3878, %3879
  %3881 = load i32, ptr %108, align 4, !tbaa !5
  %3882 = load i32, ptr %14, align 4, !tbaa !5
  %3883 = mul nsw i32 %3881, %3882
  %3884 = mul nsw i32 %3883, 2
  %3885 = add nsw i32 %3880, %3884
  %3886 = load i32, ptr %107, align 4, !tbaa !5
  %3887 = mul nsw i32 %3886, 2
  %3888 = add nsw i32 %3885, %3887
  %3889 = add nsw i32 %3888, 1
  %3890 = sext i32 %3889 to i64
  %3891 = getelementptr inbounds i16, ptr %3875, i64 %3890
  store i16 %3874, ptr %3891, align 2, !tbaa !84
  call void @llvm.lifetime.end.p0(i64 2, ptr %122) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %121) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %117) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #10
  br label %3892

3892:                                             ; preds = %3810
  %3893 = load i32, ptr %109, align 4, !tbaa !5
  %3894 = add nsw i32 %3893, 2
  store i32 %3894, ptr %109, align 4, !tbaa !5
  br label %3807, !llvm.loop !86

3895:                                             ; preds = %3807
  br label %3896

3896:                                             ; preds = %3895
  %3897 = load i32, ptr %108, align 4, !tbaa !5
  %3898 = add nsw i32 %3897, 1
  store i32 %3898, ptr %108, align 4, !tbaa !5
  br label %3772, !llvm.loop !87

3899:                                             ; preds = %3772
  br label %3900

3900:                                             ; preds = %3899
  %3901 = load i32, ptr %107, align 4, !tbaa !5
  %3902 = add nsw i32 %3901, 1
  store i32 %3902, ptr %107, align 4, !tbaa !5
  br label %3767, !llvm.loop !88

3903:                                             ; preds = %3767
  br label %3904

3904:                                             ; preds = %3903
  %3905 = load i32, ptr %106, align 4, !tbaa !5
  %3906 = add nsw i32 %3905, 1
  store i32 %3906, ptr %106, align 4, !tbaa !5
  br label %3762, !llvm.loop !89

3907:                                             ; preds = %3762
  %3908 = load ptr, ptr %110, align 8, !tbaa !9
  %3909 = load ptr, ptr %57, align 8, !tbaa !9
  %3910 = load ptr, ptr %58, align 8, !tbaa !9
  %3911 = load ptr, ptr %59, align 8, !tbaa !9
  %3912 = load i32, ptr %40, align 4, !tbaa !5
  %3913 = load i32, ptr %33, align 4, !tbaa !5
  %3914 = call double @jit_matmul(ptr noundef %44, ptr noundef %3908, ptr noundef %3909, ptr noundef %3910, ptr noundef %3911, i32 noundef %3912, i32 noundef %3913, ptr noundef %65)
  store double %3914, ptr %32, align 8, !tbaa !11
  %3915 = load ptr, ptr %110, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %3915)
  %3916 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 2, ptr %3916, align 8, !tbaa !29
  %3917 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 16
  store i32 1, ptr %3917, align 8, !tbaa !37
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #10
  br label %3918

3918:                                             ; preds = %3907, %3735
  %3919 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %3920 = load i32, ptr %3919, align 8, !tbaa !19
  %3921 = icmp ugt i32 %3920, 0
  br i1 %3921, label %3922, label %4099

3922:                                             ; preds = %3918
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #10
  store i32 0, ptr %123, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #10
  store i32 0, ptr %124, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #10
  store i32 0, ptr %125, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #10
  store i32 0, ptr %126, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #10
  %3923 = load i32, ptr %14, align 4, !tbaa !5
  %3924 = sext i32 %3923 to i64
  %3925 = load i32, ptr %19, align 4, !tbaa !5
  %3926 = sext i32 %3925 to i64
  %3927 = udiv i64 %3926, 2
  %3928 = mul i64 %3924, %3927
  %3929 = load i32, ptr %29, align 4, !tbaa !5
  %3930 = sext i32 %3929 to i64
  %3931 = mul i64 %3928, %3930
  %3932 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %3931, i64 noundef 64)
  store ptr %3932, ptr %127, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %128) #10
  store i8 0, ptr %128, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #10
  store i32 0, ptr %129, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #10
  store ptr %129, ptr %130, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #10
  store float 0.000000e+00, ptr %131, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #10
  store ptr null, ptr %132, align 8, !tbaa !9
  %3933 = load ptr, ptr %56, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %3933)
  %3934 = load i32, ptr %14, align 4, !tbaa !5
  %3935 = sext i32 %3934 to i64
  %3936 = load i32, ptr %19, align 4, !tbaa !5
  %3937 = sext i32 %3936 to i64
  %3938 = mul i64 %3935, %3937
  %3939 = load i32, ptr %29, align 4, !tbaa !5
  %3940 = sext i32 %3939 to i64
  %3941 = mul i64 %3938, %3940
  %3942 = mul i64 %3941, 4
  %3943 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %3942, i64 noundef 64)
  store ptr %3943, ptr %56, align 8, !tbaa !9
  %3944 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %3944, ptr %132, align 8, !tbaa !9
  store i32 0, ptr %123, align 4, !tbaa !5
  br label %3945

3945:                                             ; preds = %4085, %3922
  %3946 = load i32, ptr %123, align 4, !tbaa !5
  %3947 = load i32, ptr %29, align 4, !tbaa !5
  %3948 = icmp slt i32 %3946, %3947
  br i1 %3948, label %3949, label %4088

3949:                                             ; preds = %3945
  store i32 0, ptr %124, align 4, !tbaa !5
  br label %3950

3950:                                             ; preds = %4081, %3949
  %3951 = load i32, ptr %124, align 4, !tbaa !5
  %3952 = load i32, ptr %17, align 4, !tbaa !5
  %3953 = icmp slt i32 %3951, %3952
  br i1 %3953, label %3954, label %4084

3954:                                             ; preds = %3950
  store i32 0, ptr %125, align 4, !tbaa !5
  br label %3955

3955:                                             ; preds = %4077, %3954
  %3956 = load i32, ptr %125, align 4, !tbaa !5
  %3957 = load i32, ptr %19, align 4, !tbaa !5
  %3958 = sdiv i32 %3957, 2
  %3959 = icmp slt i32 %3956, %3958
  br i1 %3959, label %3960, label %4080

3960:                                             ; preds = %3955
  %3961 = load i32, ptr %125, align 4, !tbaa !5
  %3962 = srem i32 %3961, 16
  %3963 = icmp eq i32 %3962, 0
  br i1 %3963, label %3964, label %3989

3964:                                             ; preds = %3960
  %3965 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 34
  %3966 = load ptr, ptr %3965, align 8, !tbaa !65
  %3967 = load i32, ptr %123, align 4, !tbaa !5
  %3968 = load i32, ptr %14, align 4, !tbaa !5
  %3969 = mul nsw i32 %3967, %3968
  %3970 = load i32, ptr %19, align 4, !tbaa !5
  %3971 = sdiv i32 %3970, 32
  %3972 = mul nsw i32 %3969, %3971
  %3973 = load i32, ptr %125, align 4, !tbaa !5
  %3974 = sdiv i32 %3973, 16
  %3975 = load i32, ptr %14, align 4, !tbaa !5
  %3976 = mul nsw i32 %3974, %3975
  %3977 = add nsw i32 %3972, %3976
  %3978 = load i32, ptr %124, align 4, !tbaa !5
  %3979 = add nsw i32 %3977, %3978
  %3980 = sext i32 %3979 to i64
  %3981 = getelementptr inbounds i8, ptr %3966, i64 %3980
  %3982 = load i8, ptr %3981, align 1, !tbaa !61
  store i8 %3982, ptr %128, align 1, !tbaa !61
  %3983 = load i8, ptr %128, align 1, !tbaa !61
  %3984 = zext i8 %3983 to i32
  store i32 %3984, ptr %129, align 4, !tbaa !5
  %3985 = load i32, ptr %129, align 4, !tbaa !5
  %3986 = shl i32 %3985, 23
  store i32 %3986, ptr %129, align 4, !tbaa !5
  %3987 = load ptr, ptr %130, align 8, !tbaa !9
  %3988 = load float, ptr %3987, align 4, !tbaa !13
  store float %3988, ptr %131, align 4, !tbaa !13
  br label %3989

3989:                                             ; preds = %3964, %3960
  store i32 0, ptr %126, align 4, !tbaa !5
  br label %3990

3990:                                             ; preds = %4073, %3989
  %3991 = load i32, ptr %126, align 4, !tbaa !5
  %3992 = icmp slt i32 %3991, 2
  br i1 %3992, label %3993, label %4076

3993:                                             ; preds = %3990
  call void @llvm.lifetime.start.p0(i64 1, ptr %133) #10
  %3994 = call i32 @rand() #10
  %3995 = srem i32 %3994, 16
  %3996 = trunc i32 %3995 to i8
  store i8 %3996, ptr %133, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #10
  %3997 = call i32 @rand() #10
  %3998 = srem i32 %3997, 16
  %3999 = trunc i32 %3998 to i8
  store i8 %3999, ptr %134, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %135) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #10
  %4000 = load i8, ptr %133, align 1, !tbaa !61
  %4001 = call float @convert_mxfp4_to_float(i8 noundef zeroext %4000)
  %4002 = load float, ptr %131, align 4, !tbaa !13
  %4003 = fmul float %4001, %4002
  store float %4003, ptr %136, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #10
  %4004 = load i8, ptr %134, align 1, !tbaa !61
  %4005 = call float @convert_mxfp4_to_float(i8 noundef zeroext %4004)
  %4006 = load float, ptr %131, align 4, !tbaa !13
  %4007 = fmul float %4005, %4006
  store float %4007, ptr %137, align 4, !tbaa !13
  %4008 = load i8, ptr %133, align 1, !tbaa !61
  %4009 = zext i8 %4008 to i32
  %4010 = and i32 %4009, 15
  %4011 = trunc i32 %4010 to i8
  store i8 %4011, ptr %133, align 1, !tbaa !61
  %4012 = load i8, ptr %134, align 1, !tbaa !61
  %4013 = zext i8 %4012 to i32
  %4014 = and i32 %4013, 15
  %4015 = shl i32 %4014, 4
  %4016 = trunc i32 %4015 to i8
  store i8 %4016, ptr %134, align 1, !tbaa !61
  %4017 = load i8, ptr %133, align 1, !tbaa !61
  %4018 = zext i8 %4017 to i32
  %4019 = load i8, ptr %134, align 1, !tbaa !61
  %4020 = zext i8 %4019 to i32
  %4021 = or i32 %4018, %4020
  %4022 = trunc i32 %4021 to i8
  store i8 %4022, ptr %135, align 1, !tbaa !61
  %4023 = load i8, ptr %135, align 1, !tbaa !61
  %4024 = load ptr, ptr %127, align 8, !tbaa !9
  %4025 = load i32, ptr %123, align 4, !tbaa !5
  %4026 = load i32, ptr %14, align 4, !tbaa !5
  %4027 = mul nsw i32 %4025, %4026
  %4028 = load i32, ptr %19, align 4, !tbaa !5
  %4029 = sdiv i32 %4028, 2
  %4030 = mul nsw i32 %4027, %4029
  %4031 = load i32, ptr %125, align 4, !tbaa !5
  %4032 = load i32, ptr %14, align 4, !tbaa !5
  %4033 = mul nsw i32 %4031, %4032
  %4034 = add nsw i32 %4030, %4033
  %4035 = load i32, ptr %124, align 4, !tbaa !5
  %4036 = add nsw i32 %4034, %4035
  %4037 = sext i32 %4036 to i64
  %4038 = getelementptr inbounds i8, ptr %4024, i64 %4037
  store i8 %4023, ptr %4038, align 1, !tbaa !61
  %4039 = load float, ptr %136, align 4, !tbaa !13
  %4040 = load ptr, ptr %132, align 8, !tbaa !9
  %4041 = load i32, ptr %123, align 4, !tbaa !5
  %4042 = load i32, ptr %14, align 4, !tbaa !5
  %4043 = mul nsw i32 %4041, %4042
  %4044 = load i32, ptr %19, align 4, !tbaa !5
  %4045 = mul nsw i32 %4043, %4044
  %4046 = load i32, ptr %125, align 4, !tbaa !5
  %4047 = mul nsw i32 2, %4046
  %4048 = add nsw i32 %4047, 0
  %4049 = load i32, ptr %14, align 4, !tbaa !5
  %4050 = mul nsw i32 %4048, %4049
  %4051 = add nsw i32 %4045, %4050
  %4052 = load i32, ptr %124, align 4, !tbaa !5
  %4053 = add nsw i32 %4051, %4052
  %4054 = sext i32 %4053 to i64
  %4055 = getelementptr inbounds float, ptr %4040, i64 %4054
  store float %4039, ptr %4055, align 4, !tbaa !13
  %4056 = load float, ptr %137, align 4, !tbaa !13
  %4057 = load ptr, ptr %132, align 8, !tbaa !9
  %4058 = load i32, ptr %123, align 4, !tbaa !5
  %4059 = load i32, ptr %14, align 4, !tbaa !5
  %4060 = mul nsw i32 %4058, %4059
  %4061 = load i32, ptr %19, align 4, !tbaa !5
  %4062 = mul nsw i32 %4060, %4061
  %4063 = load i32, ptr %125, align 4, !tbaa !5
  %4064 = mul nsw i32 2, %4063
  %4065 = add nsw i32 %4064, 1
  %4066 = load i32, ptr %14, align 4, !tbaa !5
  %4067 = mul nsw i32 %4065, %4066
  %4068 = add nsw i32 %4062, %4067
  %4069 = load i32, ptr %124, align 4, !tbaa !5
  %4070 = add nsw i32 %4068, %4069
  %4071 = sext i32 %4070 to i64
  %4072 = getelementptr inbounds float, ptr %4057, i64 %4071
  store float %4056, ptr %4072, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %135) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #10
  br label %4073

4073:                                             ; preds = %3993
  %4074 = load i32, ptr %126, align 4, !tbaa !5
  %4075 = add nsw i32 %4074, 2
  store i32 %4075, ptr %126, align 4, !tbaa !5
  br label %3990, !llvm.loop !90

4076:                                             ; preds = %3990
  br label %4077

4077:                                             ; preds = %4076
  %4078 = load i32, ptr %125, align 4, !tbaa !5
  %4079 = add nsw i32 %4078, 1
  store i32 %4079, ptr %125, align 4, !tbaa !5
  br label %3955, !llvm.loop !91

4080:                                             ; preds = %3955
  br label %4081

4081:                                             ; preds = %4080
  %4082 = load i32, ptr %124, align 4, !tbaa !5
  %4083 = add nsw i32 %4082, 1
  store i32 %4083, ptr %124, align 4, !tbaa !5
  br label %3950, !llvm.loop !92

4084:                                             ; preds = %3950
  br label %4085

4085:                                             ; preds = %4084
  %4086 = load i32, ptr %123, align 4, !tbaa !5
  %4087 = add nsw i32 %4086, 1
  store i32 %4087, ptr %123, align 4, !tbaa !5
  br label %3945, !llvm.loop !93

4088:                                             ; preds = %3945
  %4089 = load ptr, ptr %127, align 8, !tbaa !9
  %4090 = load ptr, ptr %57, align 8, !tbaa !9
  %4091 = load ptr, ptr %58, align 8, !tbaa !9
  %4092 = load ptr, ptr %59, align 8, !tbaa !9
  %4093 = load i32, ptr %40, align 4, !tbaa !5
  %4094 = load i32, ptr %33, align 4, !tbaa !5
  %4095 = call double @jit_matmul(ptr noundef %44, ptr noundef %4089, ptr noundef %4090, ptr noundef %4091, ptr noundef %4092, i32 noundef %4093, i32 noundef %4094, ptr noundef %65)
  store double %4095, ptr %32, align 8, !tbaa !11
  %4096 = load ptr, ptr %127, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4096)
  %4097 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 1, ptr %4097, align 8, !tbaa !29
  %4098 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 16
  store i32 1, ptr %4098, align 8, !tbaa !37
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #10
  br label %4099

4099:                                             ; preds = %4088, %3918
  %4100 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %4101 = load i32, ptr %4100, align 4, !tbaa !20
  %4102 = icmp ugt i32 %4101, 0
  br i1 %4102, label %4103, label %4273

4103:                                             ; preds = %4099
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #10
  store i32 0, ptr %138, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #10
  store i32 0, ptr %139, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #10
  store i32 0, ptr %140, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #10
  store i32 0, ptr %141, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #10
  %4104 = load i32, ptr %14, align 4, !tbaa !5
  %4105 = sext i32 %4104 to i64
  %4106 = load i32, ptr %19, align 4, !tbaa !5
  %4107 = sext i32 %4106 to i64
  %4108 = udiv i64 %4107, 2
  %4109 = mul i64 %4105, %4108
  %4110 = load i32, ptr %29, align 4, !tbaa !5
  %4111 = sext i32 %4110 to i64
  %4112 = mul i64 %4109, %4111
  %4113 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %4112, i64 noundef 64)
  store ptr %4113, ptr %142, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #10
  store ptr null, ptr %143, align 8, !tbaa !9
  %4114 = load ptr, ptr %56, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4114)
  %4115 = load i32, ptr %14, align 4, !tbaa !5
  %4116 = sext i32 %4115 to i64
  %4117 = load i32, ptr %19, align 4, !tbaa !5
  %4118 = sext i32 %4117 to i64
  %4119 = mul i64 %4116, %4118
  %4120 = load i32, ptr %29, align 4, !tbaa !5
  %4121 = sext i32 %4120 to i64
  %4122 = mul i64 %4119, %4121
  %4123 = mul i64 %4122, 1
  %4124 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %4123, i64 noundef 64)
  store ptr %4124, ptr %56, align 8, !tbaa !9
  %4125 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %4125, ptr %143, align 8, !tbaa !9
  store i32 0, ptr %138, align 4, !tbaa !5
  br label %4126

4126:                                             ; preds = %4259, %4103
  %4127 = load i32, ptr %138, align 4, !tbaa !5
  %4128 = load i32, ptr %29, align 4, !tbaa !5
  %4129 = icmp slt i32 %4127, %4128
  br i1 %4129, label %4130, label %4262

4130:                                             ; preds = %4126
  store i32 0, ptr %139, align 4, !tbaa !5
  br label %4131

4131:                                             ; preds = %4255, %4130
  %4132 = load i32, ptr %139, align 4, !tbaa !5
  %4133 = load i32, ptr %17, align 4, !tbaa !5
  %4134 = icmp slt i32 %4132, %4133
  br i1 %4134, label %4135, label %4258

4135:                                             ; preds = %4131
  store i32 0, ptr %140, align 4, !tbaa !5
  br label %4136

4136:                                             ; preds = %4251, %4135
  %4137 = load i32, ptr %140, align 4, !tbaa !5
  %4138 = load i32, ptr %19, align 4, !tbaa !5
  %4139 = sdiv i32 %4138, 8
  %4140 = icmp slt i32 %4137, %4139
  br i1 %4140, label %4141, label %4254

4141:                                             ; preds = %4136
  store i32 0, ptr %141, align 4, !tbaa !5
  br label %4142

4142:                                             ; preds = %4247, %4141
  %4143 = load i32, ptr %141, align 4, !tbaa !5
  %4144 = icmp slt i32 %4143, 8
  br i1 %4144, label %4145, label %4250

4145:                                             ; preds = %4142
  call void @llvm.lifetime.start.p0(i64 1, ptr %144) #10
  %4146 = call i32 @rand() #10
  %4147 = srem i32 %4146, 16
  %4148 = trunc i32 %4147 to i8
  store i8 %4148, ptr %144, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %145) #10
  %4149 = call i32 @rand() #10
  %4150 = srem i32 %4149, 16
  %4151 = trunc i32 %4150 to i8
  store i8 %4151, ptr %145, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %146) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #10
  %4152 = load i32, ptr %140, align 4, !tbaa !5
  %4153 = mul nsw i32 %4152, 8
  %4154 = load i32, ptr %141, align 4, !tbaa !5
  %4155 = sdiv i32 %4154, 2
  %4156 = add nsw i32 %4153, %4155
  %4157 = add nsw i32 %4156, 0
  store i32 %4157, ptr %147, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #10
  %4158 = load i32, ptr %140, align 4, !tbaa !5
  %4159 = mul nsw i32 %4158, 8
  %4160 = load i32, ptr %141, align 4, !tbaa !5
  %4161 = sdiv i32 %4160, 2
  %4162 = add nsw i32 %4159, %4161
  %4163 = add nsw i32 %4162, 4
  store i32 %4163, ptr %148, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %149) #10
  %4164 = load i8, ptr %144, align 1, !tbaa !61
  %4165 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %4164)
  store i8 %4165, ptr %149, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %150) #10
  %4166 = load i8, ptr %145, align 1, !tbaa !61
  %4167 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %4166)
  store i8 %4167, ptr %150, align 1, !tbaa !61
  %4168 = load i8, ptr %144, align 1, !tbaa !61
  %4169 = zext i8 %4168 to i32
  %4170 = and i32 %4169, 15
  %4171 = trunc i32 %4170 to i8
  store i8 %4171, ptr %144, align 1, !tbaa !61
  %4172 = load i8, ptr %145, align 1, !tbaa !61
  %4173 = zext i8 %4172 to i32
  %4174 = and i32 %4173, 15
  %4175 = shl i32 %4174, 4
  %4176 = trunc i32 %4175 to i8
  store i8 %4176, ptr %145, align 1, !tbaa !61
  %4177 = load i8, ptr %144, align 1, !tbaa !61
  %4178 = zext i8 %4177 to i32
  %4179 = load i8, ptr %145, align 1, !tbaa !61
  %4180 = zext i8 %4179 to i32
  %4181 = or i32 %4178, %4180
  %4182 = trunc i32 %4181 to i8
  store i8 %4182, ptr %146, align 1, !tbaa !61
  %4183 = load i8, ptr %146, align 1, !tbaa !61
  %4184 = load ptr, ptr %142, align 8, !tbaa !9
  %4185 = load i32, ptr %138, align 4, !tbaa !5
  %4186 = load i32, ptr %14, align 4, !tbaa !5
  %4187 = mul nsw i32 %4185, %4186
  %4188 = load i32, ptr %19, align 4, !tbaa !5
  %4189 = sdiv i32 %4188, 2
  %4190 = mul nsw i32 %4187, %4189
  %4191 = load i32, ptr %147, align 4, !tbaa !5
  %4192 = sdiv i32 %4191, 8
  %4193 = load i32, ptr %14, align 4, !tbaa !5
  %4194 = mul nsw i32 %4192, %4193
  %4195 = mul nsw i32 %4194, 4
  %4196 = add nsw i32 %4190, %4195
  %4197 = load i32, ptr %139, align 4, !tbaa !5
  %4198 = mul nsw i32 %4197, 4
  %4199 = add nsw i32 %4196, %4198
  %4200 = load i32, ptr %147, align 4, !tbaa !5
  %4201 = srem i32 %4200, 4
  %4202 = add nsw i32 %4199, %4201
  %4203 = sext i32 %4202 to i64
  %4204 = getelementptr inbounds i8, ptr %4184, i64 %4203
  store i8 %4183, ptr %4204, align 1, !tbaa !61
  %4205 = load i8, ptr %149, align 1, !tbaa !61
  %4206 = load ptr, ptr %143, align 8, !tbaa !9
  %4207 = load i32, ptr %138, align 4, !tbaa !5
  %4208 = load i32, ptr %14, align 4, !tbaa !5
  %4209 = mul nsw i32 %4207, %4208
  %4210 = load i32, ptr %19, align 4, !tbaa !5
  %4211 = mul nsw i32 %4209, %4210
  %4212 = load i32, ptr %147, align 4, !tbaa !5
  %4213 = sdiv i32 %4212, 32
  %4214 = load i32, ptr %14, align 4, !tbaa !5
  %4215 = mul nsw i32 %4213, %4214
  %4216 = mul nsw i32 %4215, 32
  %4217 = add nsw i32 %4211, %4216
  %4218 = load i32, ptr %139, align 4, !tbaa !5
  %4219 = mul nsw i32 %4218, 32
  %4220 = add nsw i32 %4217, %4219
  %4221 = load i32, ptr %147, align 4, !tbaa !5
  %4222 = srem i32 %4221, 32
  %4223 = add nsw i32 %4220, %4222
  %4224 = sext i32 %4223 to i64
  %4225 = getelementptr inbounds i8, ptr %4206, i64 %4224
  store i8 %4205, ptr %4225, align 1, !tbaa !61
  %4226 = load i8, ptr %150, align 1, !tbaa !61
  %4227 = load ptr, ptr %143, align 8, !tbaa !9
  %4228 = load i32, ptr %138, align 4, !tbaa !5
  %4229 = load i32, ptr %14, align 4, !tbaa !5
  %4230 = mul nsw i32 %4228, %4229
  %4231 = load i32, ptr %19, align 4, !tbaa !5
  %4232 = mul nsw i32 %4230, %4231
  %4233 = load i32, ptr %148, align 4, !tbaa !5
  %4234 = sdiv i32 %4233, 32
  %4235 = load i32, ptr %14, align 4, !tbaa !5
  %4236 = mul nsw i32 %4234, %4235
  %4237 = mul nsw i32 %4236, 32
  %4238 = add nsw i32 %4232, %4237
  %4239 = load i32, ptr %139, align 4, !tbaa !5
  %4240 = mul nsw i32 %4239, 32
  %4241 = add nsw i32 %4238, %4240
  %4242 = load i32, ptr %148, align 4, !tbaa !5
  %4243 = srem i32 %4242, 32
  %4244 = add nsw i32 %4241, %4243
  %4245 = sext i32 %4244 to i64
  %4246 = getelementptr inbounds i8, ptr %4227, i64 %4245
  store i8 %4226, ptr %4246, align 1, !tbaa !61
  call void @llvm.lifetime.end.p0(i64 1, ptr %150) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %149) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %146) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %144) #10
  br label %4247

4247:                                             ; preds = %4145
  %4248 = load i32, ptr %141, align 4, !tbaa !5
  %4249 = add nsw i32 %4248, 2
  store i32 %4249, ptr %141, align 4, !tbaa !5
  br label %4142, !llvm.loop !94

4250:                                             ; preds = %4142
  br label %4251

4251:                                             ; preds = %4250
  %4252 = load i32, ptr %140, align 4, !tbaa !5
  %4253 = add nsw i32 %4252, 1
  store i32 %4253, ptr %140, align 4, !tbaa !5
  br label %4136, !llvm.loop !95

4254:                                             ; preds = %4136
  br label %4255

4255:                                             ; preds = %4254
  %4256 = load i32, ptr %139, align 4, !tbaa !5
  %4257 = add nsw i32 %4256, 1
  store i32 %4257, ptr %139, align 4, !tbaa !5
  br label %4131, !llvm.loop !96

4258:                                             ; preds = %4131
  br label %4259

4259:                                             ; preds = %4258
  %4260 = load i32, ptr %138, align 4, !tbaa !5
  %4261 = add nsw i32 %4260, 1
  store i32 %4261, ptr %138, align 4, !tbaa !5
  br label %4126, !llvm.loop !97

4262:                                             ; preds = %4126
  %4263 = load ptr, ptr %142, align 8, !tbaa !9
  %4264 = load ptr, ptr %57, align 8, !tbaa !9
  %4265 = load ptr, ptr %58, align 8, !tbaa !9
  %4266 = load ptr, ptr %59, align 8, !tbaa !9
  %4267 = load i32, ptr %40, align 4, !tbaa !5
  %4268 = load i32, ptr %33, align 4, !tbaa !5
  %4269 = call double @jit_matmul(ptr noundef %44, ptr noundef %4263, ptr noundef %4264, ptr noundef %4265, ptr noundef %4266, i32 noundef %4267, i32 noundef %4268, ptr noundef %65)
  store double %4269, ptr %32, align 8, !tbaa !11
  %4270 = load ptr, ptr %142, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4270)
  %4271 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 12, ptr %4271, align 8, !tbaa !29
  %4272 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 16
  store i32 1, ptr %4272, align 8, !tbaa !37
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #10
  br label %4273

4273:                                             ; preds = %4262, %4099
  %4274 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  %4275 = load i32, ptr %4274, align 4, !tbaa !21
  %4276 = icmp ugt i32 %4275, 0
  br i1 %4276, label %4285, label %4277

4277:                                             ; preds = %4273
  %4278 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  %4279 = load i32, ptr %4278, align 8, !tbaa !22
  %4280 = icmp ugt i32 %4279, 0
  br i1 %4280, label %4285, label %4281

4281:                                             ; preds = %4277
  %4282 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  %4283 = load i32, ptr %4282, align 4, !tbaa !23
  %4284 = icmp ugt i32 %4283, 0
  br i1 %4284, label %4285, label %4301

4285:                                             ; preds = %4281, %4277, %4273
  %4286 = load i32, ptr %30, align 4, !tbaa !5
  %4287 = icmp ne i32 %4286, 4
  br i1 %4287, label %4288, label %4301

4288:                                             ; preds = %4285
  %4289 = load ptr, ptr %61, align 8, !tbaa !9
  %4290 = load ptr, ptr %57, align 8, !tbaa !9
  %4291 = load ptr, ptr %58, align 8, !tbaa !9
  %4292 = load ptr, ptr %59, align 8, !tbaa !9
  %4293 = load i32, ptr %40, align 4, !tbaa !5
  %4294 = load i32, ptr %33, align 4, !tbaa !5
  %4295 = call double @jit_matmul(ptr noundef %44, ptr noundef %4289, ptr noundef %4290, ptr noundef %4291, ptr noundef %4292, i32 noundef %4293, i32 noundef %4294, ptr noundef %65)
  store double %4295, ptr %32, align 8, !tbaa !11
  %4296 = load ptr, ptr %61, align 8, !tbaa !9
  %4297 = icmp ne ptr %4296, null
  br i1 %4297, label %4298, label %4300

4298:                                             ; preds = %4288
  %4299 = load ptr, ptr %61, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4299)
  br label %4300

4300:                                             ; preds = %4298, %4288
  br label %4301

4301:                                             ; preds = %4300, %4285, %4281
  %4302 = load i32, ptr %30, align 4, !tbaa !5
  %4303 = icmp eq i32 %4302, 4
  br i1 %4303, label %4304, label %4372

4304:                                             ; preds = %4301
  call void @llvm.lifetime.start.p0(i64 4, ptr %151) #10
  store i32 0, ptr %151, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #10
  store i32 0, ptr %152, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #10
  %4305 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %4305, ptr %153, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #10
  %4306 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %4306, ptr %154, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #10
  %4307 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %4307, ptr %155, align 8, !tbaa !9
  store i32 0, ptr %152, align 4, !tbaa !5
  br label %4308

4308:                                             ; preds = %4368, %4304
  %4309 = load i32, ptr %152, align 4, !tbaa !5
  %4310 = load i32, ptr %19, align 4, !tbaa !5
  %4311 = icmp slt i32 %4309, %4310
  br i1 %4311, label %4312, label %4371

4312:                                             ; preds = %4308
  store i32 0, ptr %151, align 4, !tbaa !5
  br label %4313

4313:                                             ; preds = %4364, %4312
  %4314 = load i32, ptr %151, align 4, !tbaa !5
  %4315 = load i32, ptr %17, align 4, !tbaa !5
  %4316 = icmp slt i32 %4314, %4315
  br i1 %4316, label %4317, label %4367

4317:                                             ; preds = %4313
  call void @llvm.lifetime.start.p0(i64 4, ptr %156) #10
  %4318 = call double @libxsmm_rng_f64()
  %4319 = fptrunc double %4318 to float
  store float %4319, ptr %156, align 4, !tbaa !13
  %4320 = load float, ptr %156, align 4, !tbaa !13
  %4321 = load float, ptr %48, align 4, !tbaa !13
  %4322 = fcmp ole float %4320, %4321
  br i1 %4322, label %4323, label %4363

4323:                                             ; preds = %4317
  %4324 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4325 = load i32, ptr %4324, align 8, !tbaa !29
  %4326 = icmp eq i32 %4325, 2
  br i1 %4326, label %4327, label %4336

4327:                                             ; preds = %4323
  %4328 = load ptr, ptr %153, align 8, !tbaa !9
  %4329 = load i32, ptr %152, align 4, !tbaa !5
  %4330 = load i32, ptr %17, align 4, !tbaa !5
  %4331 = mul nsw i32 %4329, %4330
  %4332 = load i32, ptr %151, align 4, !tbaa !5
  %4333 = add nsw i32 %4331, %4332
  %4334 = sext i32 %4333 to i64
  %4335 = getelementptr inbounds i16, ptr %4328, i64 %4334
  store i16 0, ptr %4335, align 2, !tbaa !84
  br label %4336

4336:                                             ; preds = %4327, %4323
  %4337 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4338 = load i32, ptr %4337, align 8, !tbaa !29
  %4339 = icmp eq i32 %4338, 3
  br i1 %4339, label %4340, label %4349

4340:                                             ; preds = %4336
  %4341 = load ptr, ptr %154, align 8, !tbaa !9
  %4342 = load i32, ptr %152, align 4, !tbaa !5
  %4343 = load i32, ptr %17, align 4, !tbaa !5
  %4344 = mul nsw i32 %4342, %4343
  %4345 = load i32, ptr %151, align 4, !tbaa !5
  %4346 = add nsw i32 %4344, %4345
  %4347 = sext i32 %4346 to i64
  %4348 = getelementptr inbounds i16, ptr %4341, i64 %4347
  store i16 0, ptr %4348, align 2, !tbaa !84
  br label %4349

4349:                                             ; preds = %4340, %4336
  %4350 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4351 = load i32, ptr %4350, align 8, !tbaa !29
  %4352 = icmp eq i32 %4351, 1
  br i1 %4352, label %4353, label %4362

4353:                                             ; preds = %4349
  %4354 = load ptr, ptr %155, align 8, !tbaa !9
  %4355 = load i32, ptr %152, align 4, !tbaa !5
  %4356 = load i32, ptr %17, align 4, !tbaa !5
  %4357 = mul nsw i32 %4355, %4356
  %4358 = load i32, ptr %151, align 4, !tbaa !5
  %4359 = add nsw i32 %4357, %4358
  %4360 = sext i32 %4359 to i64
  %4361 = getelementptr inbounds float, ptr %4354, i64 %4360
  store float 0.000000e+00, ptr %4361, align 4, !tbaa !13
  br label %4362

4362:                                             ; preds = %4353, %4349
  br label %4363

4363:                                             ; preds = %4362, %4317
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #10
  br label %4364

4364:                                             ; preds = %4363
  %4365 = load i32, ptr %151, align 4, !tbaa !5
  %4366 = add nsw i32 %4365, 1
  store i32 %4366, ptr %151, align 4, !tbaa !5
  br label %4313, !llvm.loop !98

4367:                                             ; preds = %4313
  br label %4368

4368:                                             ; preds = %4367
  %4369 = load i32, ptr %152, align 4, !tbaa !5
  %4370 = add nsw i32 %4369, 1
  store i32 %4370, ptr %152, align 4, !tbaa !5
  br label %4308, !llvm.loop !99

4371:                                             ; preds = %4308
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #10
  br label %4372

4372:                                             ; preds = %4371, %4301
  %4373 = load ptr, ptr %56, align 8, !tbaa !9
  %4374 = load ptr, ptr %57, align 8, !tbaa !9
  %4375 = load ptr, ptr %60, align 8, !tbaa !9
  call void @ref_matmul(ptr noundef %44, ptr noundef %4373, ptr noundef %4374, ptr noundef %4375)
  %4376 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %4377 = load i32, ptr %4376, align 4, !tbaa !18
  %4378 = icmp ugt i32 %4377, 0
  br i1 %4378, label %4379, label %4381

4379:                                             ; preds = %4372
  %4380 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 12, ptr %4380, align 8, !tbaa !29
  br label %4381

4381:                                             ; preds = %4379, %4372
  %4382 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %4383 = load i32, ptr %4382, align 8, !tbaa !19
  %4384 = icmp ugt i32 %4383, 0
  br i1 %4384, label %4385, label %4387

4385:                                             ; preds = %4381
  %4386 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 12, ptr %4386, align 8, !tbaa !29
  br label %4387

4387:                                             ; preds = %4385, %4381
  br label %4388

4388:                                             ; preds = %4387, %3185
  %4389 = load i32, ptr %26, align 4, !tbaa !5
  %4390 = icmp sgt i32 %4389, 0
  br i1 %4390, label %4391, label %4417

4391:                                             ; preds = %4388
  %4392 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4393 = load i32, ptr %4392, align 8, !tbaa !32
  %4394 = icmp eq i32 %4393, 2
  br i1 %4394, label %4399, label %4395

4395:                                             ; preds = %4391
  %4396 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4397 = load i32, ptr %4396, align 8, !tbaa !32
  %4398 = icmp eq i32 %4397, 3
  br i1 %4398, label %4399, label %4414

4399:                                             ; preds = %4395, %4391
  %4400 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4401 = load i32, ptr %4400, align 8, !tbaa !32
  %4402 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %4401)
  %4403 = icmp eq i32 %4402, 4
  br i1 %4403, label %4404, label %4411

4404:                                             ; preds = %4399
  %4405 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 5
  %4406 = load i32, ptr %4405, align 4, !tbaa !50
  %4407 = srem i32 %4406, 4
  %4408 = icmp eq i32 %4407, 0
  br i1 %4408, label %4409, label %4411

4409:                                             ; preds = %4404
  %4410 = load ptr, ptr %60, align 8, !tbaa !9
  call void @convert_output_to_vnni4(ptr noundef %44, ptr noundef %4410)
  br label %4413

4411:                                             ; preds = %4404, %4399
  %4412 = load ptr, ptr %60, align 8, !tbaa !9
  call void @convert_output_to_vnni2(ptr noundef %44, ptr noundef %4412)
  br label %4413

4413:                                             ; preds = %4411, %4409
  br label %4416

4414:                                             ; preds = %4395
  %4415 = load ptr, ptr %60, align 8, !tbaa !9
  call void @convert_output_to_vnni4(ptr noundef %44, ptr noundef %4415)
  br label %4416

4416:                                             ; preds = %4414, %4413
  br label %4417

4417:                                             ; preds = %4416, %4388
  %4418 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 39
  %4419 = load i32, ptr %4418, align 8, !tbaa !15
  %4420 = icmp ugt i32 %4419, 0
  br i1 %4420, label %4421, label %4633

4421:                                             ; preds = %4417
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #10
  %4422 = load i32, ptr %14, align 4, !tbaa !5
  %4423 = sext i32 %4422 to i64
  %4424 = load i32, ptr %19, align 4, !tbaa !5
  %4425 = sdiv i32 %4424, 2
  %4426 = sext i32 %4425 to i64
  %4427 = mul i64 %4423, %4426
  %4428 = load i32, ptr %29, align 4, !tbaa !5
  %4429 = sext i32 %4428 to i64
  %4430 = mul i64 %4427, %4429
  %4431 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4432 = load i32, ptr %4431, align 8, !tbaa !29
  %4433 = icmp eq i32 0, %4432
  br i1 %4433, label %4434, label %4435

4434:                                             ; preds = %4421
  br label %4528

4435:                                             ; preds = %4421
  %4436 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4437 = load i32, ptr %4436, align 8, !tbaa !29
  %4438 = icmp eq i32 1, %4437
  br i1 %4438, label %4439, label %4440

4439:                                             ; preds = %4435
  br label %4526

4440:                                             ; preds = %4435
  %4441 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4442 = load i32, ptr %4441, align 8, !tbaa !29
  %4443 = icmp eq i32 2, %4442
  br i1 %4443, label %4444, label %4445

4444:                                             ; preds = %4440
  br label %4524

4445:                                             ; preds = %4440
  %4446 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4447 = load i32, ptr %4446, align 8, !tbaa !29
  %4448 = icmp eq i32 3, %4447
  br i1 %4448, label %4449, label %4450

4449:                                             ; preds = %4445
  br label %4522

4450:                                             ; preds = %4445
  %4451 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4452 = load i32, ptr %4451, align 8, !tbaa !29
  %4453 = icmp eq i32 4, %4452
  br i1 %4453, label %4454, label %4455

4454:                                             ; preds = %4450
  br label %4520

4455:                                             ; preds = %4450
  %4456 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4457 = load i32, ptr %4456, align 8, !tbaa !29
  %4458 = icmp eq i32 5, %4457
  br i1 %4458, label %4459, label %4460

4459:                                             ; preds = %4455
  br label %4518

4460:                                             ; preds = %4455
  %4461 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4462 = load i32, ptr %4461, align 8, !tbaa !29
  %4463 = icmp eq i32 6, %4462
  br i1 %4463, label %4464, label %4465

4464:                                             ; preds = %4460
  br label %4516

4465:                                             ; preds = %4460
  %4466 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4467 = load i32, ptr %4466, align 8, !tbaa !29
  %4468 = icmp eq i32 7, %4467
  br i1 %4468, label %4469, label %4470

4469:                                             ; preds = %4465
  br label %4514

4470:                                             ; preds = %4465
  %4471 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4472 = load i32, ptr %4471, align 8, !tbaa !29
  %4473 = icmp eq i32 8, %4472
  br i1 %4473, label %4474, label %4475

4474:                                             ; preds = %4470
  br label %4512

4475:                                             ; preds = %4470
  %4476 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4477 = load i32, ptr %4476, align 8, !tbaa !29
  %4478 = icmp eq i32 9, %4477
  br i1 %4478, label %4479, label %4480

4479:                                             ; preds = %4475
  br label %4510

4480:                                             ; preds = %4475
  %4481 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4482 = load i32, ptr %4481, align 8, !tbaa !29
  %4483 = icmp eq i32 10, %4482
  br i1 %4483, label %4484, label %4485

4484:                                             ; preds = %4480
  br label %4508

4485:                                             ; preds = %4480
  %4486 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4487 = load i32, ptr %4486, align 8, !tbaa !29
  %4488 = icmp eq i32 11, %4487
  br i1 %4488, label %4489, label %4490

4489:                                             ; preds = %4485
  br label %4506

4490:                                             ; preds = %4485
  %4491 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4492 = load i32, ptr %4491, align 8, !tbaa !29
  %4493 = icmp eq i32 12, %4492
  br i1 %4493, label %4494, label %4495

4494:                                             ; preds = %4490
  br label %4504

4495:                                             ; preds = %4490
  %4496 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4497 = load i32, ptr %4496, align 8, !tbaa !29
  %4498 = icmp eq i32 13, %4497
  br i1 %4498, label %4499, label %4500

4499:                                             ; preds = %4495
  br label %4502

4500:                                             ; preds = %4495
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.33, i32 noundef 3660, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

4501:                                             ; No predecessors!
  br label %4502

4502:                                             ; preds = %4501, %4499
  %4503 = phi i32 [ 1, %4499 ], [ 0, %4501 ]
  br label %4504

4504:                                             ; preds = %4502, %4494
  %4505 = phi i32 [ 1, %4494 ], [ %4503, %4502 ]
  br label %4506

4506:                                             ; preds = %4504, %4489
  %4507 = phi i32 [ 2, %4489 ], [ %4505, %4504 ]
  br label %4508

4508:                                             ; preds = %4506, %4484
  %4509 = phi i32 [ 2, %4484 ], [ %4507, %4506 ]
  br label %4510

4510:                                             ; preds = %4508, %4479
  %4511 = phi i32 [ 4, %4479 ], [ %4509, %4508 ]
  br label %4512

4512:                                             ; preds = %4510, %4474
  %4513 = phi i32 [ 4, %4474 ], [ %4511, %4510 ]
  br label %4514

4514:                                             ; preds = %4512, %4469
  %4515 = phi i32 [ 8, %4469 ], [ %4513, %4512 ]
  br label %4516

4516:                                             ; preds = %4514, %4464
  %4517 = phi i32 [ 8, %4464 ], [ %4515, %4514 ]
  br label %4518

4518:                                             ; preds = %4516, %4459
  %4519 = phi i32 [ 1, %4459 ], [ %4517, %4516 ]
  br label %4520

4520:                                             ; preds = %4518, %4454
  %4521 = phi i32 [ 1, %4454 ], [ %4519, %4518 ]
  br label %4522

4522:                                             ; preds = %4520, %4449
  %4523 = phi i32 [ 2, %4449 ], [ %4521, %4520 ]
  br label %4524

4524:                                             ; preds = %4522, %4444
  %4525 = phi i32 [ 2, %4444 ], [ %4523, %4522 ]
  br label %4526

4526:                                             ; preds = %4524, %4439
  %4527 = phi i32 [ 4, %4439 ], [ %4525, %4524 ]
  br label %4528

4528:                                             ; preds = %4526, %4434
  %4529 = phi i32 [ 8, %4434 ], [ %4527, %4526 ]
  %4530 = sext i32 %4529 to i64
  %4531 = mul i64 %4430, %4530
  %4532 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %4531, i64 noundef 64)
  store ptr %4532, ptr %157, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #10
  store i32 0, ptr %158, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %159) #10
  store i32 0, ptr %159, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #10
  store i32 0, ptr %160, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #10
  %4533 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %4533, ptr %161, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #10
  %4534 = load ptr, ptr %157, align 8, !tbaa !9
  store ptr %4534, ptr %162, align 8, !tbaa !9
  store i32 0, ptr %158, align 4, !tbaa !5
  br label %4535

4535:                                             ; preds = %4621, %4528
  %4536 = load i32, ptr %158, align 4, !tbaa !5
  %4537 = load i32, ptr %29, align 4, !tbaa !5
  %4538 = icmp slt i32 %4536, %4537
  br i1 %4538, label %4539, label %4624

4539:                                             ; preds = %4535
  store i32 0, ptr %159, align 4, !tbaa !5
  br label %4540

4540:                                             ; preds = %4617, %4539
  %4541 = load i32, ptr %159, align 4, !tbaa !5
  %4542 = load i32, ptr %17, align 4, !tbaa !5
  %4543 = icmp slt i32 %4541, %4542
  br i1 %4543, label %4544, label %4620

4544:                                             ; preds = %4540
  store i32 0, ptr %160, align 4, !tbaa !5
  br label %4545

4545:                                             ; preds = %4613, %4544
  %4546 = load i32, ptr %160, align 4, !tbaa !5
  %4547 = load i32, ptr %19, align 4, !tbaa !5
  %4548 = icmp slt i32 %4546, %4547
  br i1 %4548, label %4549, label %4616

4549:                                             ; preds = %4545
  call void @llvm.lifetime.start.p0(i64 1, ptr %163) #10
  %4550 = load ptr, ptr %161, align 8, !tbaa !9
  %4551 = load i32, ptr %158, align 4, !tbaa !5
  %4552 = load i32, ptr %14, align 4, !tbaa !5
  %4553 = mul nsw i32 %4551, %4552
  %4554 = load i32, ptr %19, align 4, !tbaa !5
  %4555 = mul nsw i32 %4553, %4554
  %4556 = load i32, ptr %160, align 4, !tbaa !5
  %4557 = load i32, ptr %14, align 4, !tbaa !5
  %4558 = mul nsw i32 %4556, %4557
  %4559 = add nsw i32 %4555, %4558
  %4560 = load i32, ptr %159, align 4, !tbaa !5
  %4561 = add nsw i32 %4559, %4560
  %4562 = sext i32 %4561 to i64
  %4563 = getelementptr inbounds i8, ptr %4550, i64 %4562
  %4564 = load i8, ptr %4563, align 1, !tbaa !61
  store i8 %4564, ptr %163, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %164) #10
  %4565 = load ptr, ptr %161, align 8, !tbaa !9
  %4566 = load i32, ptr %158, align 4, !tbaa !5
  %4567 = load i32, ptr %14, align 4, !tbaa !5
  %4568 = mul nsw i32 %4566, %4567
  %4569 = load i32, ptr %19, align 4, !tbaa !5
  %4570 = mul nsw i32 %4568, %4569
  %4571 = load i32, ptr %160, align 4, !tbaa !5
  %4572 = add nsw i32 %4571, 1
  %4573 = load i32, ptr %14, align 4, !tbaa !5
  %4574 = mul nsw i32 %4572, %4573
  %4575 = add nsw i32 %4570, %4574
  %4576 = load i32, ptr %159, align 4, !tbaa !5
  %4577 = add nsw i32 %4575, %4576
  %4578 = sext i32 %4577 to i64
  %4579 = getelementptr inbounds i8, ptr %4565, i64 %4578
  %4580 = load i8, ptr %4579, align 1, !tbaa !61
  store i8 %4580, ptr %164, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %165) #10
  %4581 = load i8, ptr %163, align 1, !tbaa !61
  %4582 = zext i8 %4581 to i32
  %4583 = and i32 %4582, 15
  %4584 = trunc i32 %4583 to i8
  store i8 %4584, ptr %163, align 1, !tbaa !61
  %4585 = load i8, ptr %164, align 1, !tbaa !61
  %4586 = zext i8 %4585 to i32
  %4587 = and i32 %4586, 15
  %4588 = shl i32 %4587, 4
  %4589 = trunc i32 %4588 to i8
  store i8 %4589, ptr %164, align 1, !tbaa !61
  %4590 = load i8, ptr %163, align 1, !tbaa !61
  %4591 = zext i8 %4590 to i32
  %4592 = load i8, ptr %164, align 1, !tbaa !61
  %4593 = zext i8 %4592 to i32
  %4594 = or i32 %4591, %4593
  %4595 = trunc i32 %4594 to i8
  store i8 %4595, ptr %165, align 1, !tbaa !61
  %4596 = load i8, ptr %165, align 1, !tbaa !61
  %4597 = load ptr, ptr %162, align 8, !tbaa !9
  %4598 = load i32, ptr %158, align 4, !tbaa !5
  %4599 = load i32, ptr %14, align 4, !tbaa !5
  %4600 = mul nsw i32 %4598, %4599
  %4601 = load i32, ptr %19, align 4, !tbaa !5
  %4602 = sdiv i32 %4601, 2
  %4603 = mul nsw i32 %4600, %4602
  %4604 = load i32, ptr %160, align 4, !tbaa !5
  %4605 = sdiv i32 %4604, 2
  %4606 = load i32, ptr %14, align 4, !tbaa !5
  %4607 = mul nsw i32 %4605, %4606
  %4608 = add nsw i32 %4603, %4607
  %4609 = load i32, ptr %159, align 4, !tbaa !5
  %4610 = add nsw i32 %4608, %4609
  %4611 = sext i32 %4610 to i64
  %4612 = getelementptr inbounds i8, ptr %4597, i64 %4611
  store i8 %4596, ptr %4612, align 1, !tbaa !61
  call void @llvm.lifetime.end.p0(i64 1, ptr %165) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %163) #10
  br label %4613

4613:                                             ; preds = %4549
  %4614 = load i32, ptr %160, align 4, !tbaa !5
  %4615 = add nsw i32 %4614, 2
  store i32 %4615, ptr %160, align 4, !tbaa !5
  br label %4545, !llvm.loop !100

4616:                                             ; preds = %4545
  br label %4617

4617:                                             ; preds = %4616
  %4618 = load i32, ptr %159, align 4, !tbaa !5
  %4619 = add nsw i32 %4618, 1
  store i32 %4619, ptr %159, align 4, !tbaa !5
  br label %4540, !llvm.loop !101

4620:                                             ; preds = %4540
  br label %4621

4621:                                             ; preds = %4620
  %4622 = load i32, ptr %158, align 4, !tbaa !5
  %4623 = add nsw i32 %4622, 1
  store i32 %4623, ptr %158, align 4, !tbaa !5
  br label %4535, !llvm.loop !102

4624:                                             ; preds = %4535
  %4625 = load ptr, ptr %157, align 8, !tbaa !9
  %4626 = load ptr, ptr %57, align 8, !tbaa !9
  %4627 = load ptr, ptr %58, align 8, !tbaa !9
  %4628 = load ptr, ptr %59, align 8, !tbaa !9
  %4629 = load i32, ptr %40, align 4, !tbaa !5
  %4630 = load i32, ptr %33, align 4, !tbaa !5
  %4631 = call double @jit_matmul(ptr noundef %44, ptr noundef %4625, ptr noundef %4626, ptr noundef %4627, ptr noundef %4628, i32 noundef %4629, i32 noundef %4630, ptr noundef %65)
  store double %4631, ptr %32, align 8, !tbaa !11
  %4632 = load ptr, ptr %157, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4632)
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %159) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #10
  br label %4674

4633:                                             ; preds = %4417
  %4634 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %4635 = load i32, ptr %4634, align 8, !tbaa !17
  %4636 = icmp ugt i32 %4635, 0
  br i1 %4636, label %4661, label %4637

4637:                                             ; preds = %4633
  %4638 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  %4639 = load i32, ptr %4638, align 4, !tbaa !21
  %4640 = icmp ugt i32 %4639, 0
  br i1 %4640, label %4661, label %4641

4641:                                             ; preds = %4637
  %4642 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  %4643 = load i32, ptr %4642, align 4, !tbaa !23
  %4644 = icmp ugt i32 %4643, 0
  br i1 %4644, label %4661, label %4645

4645:                                             ; preds = %4641
  %4646 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  %4647 = load i32, ptr %4646, align 8, !tbaa !22
  %4648 = icmp ugt i32 %4647, 0
  br i1 %4648, label %4661, label %4649

4649:                                             ; preds = %4645
  %4650 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %4651 = load i32, ptr %4650, align 4, !tbaa !18
  %4652 = icmp ugt i32 %4651, 0
  br i1 %4652, label %4661, label %4653

4653:                                             ; preds = %4649
  %4654 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %4655 = load i32, ptr %4654, align 8, !tbaa !19
  %4656 = icmp ugt i32 %4655, 0
  br i1 %4656, label %4661, label %4657

4657:                                             ; preds = %4653
  %4658 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %4659 = load i32, ptr %4658, align 4, !tbaa !20
  %4660 = icmp ugt i32 %4659, 0
  br i1 %4660, label %4661, label %4665

4661:                                             ; preds = %4657, %4653, %4649, %4645, %4641, %4637, %4633
  %4662 = load i32, ptr %30, align 4, !tbaa !5
  %4663 = icmp ne i32 %4662, 4
  br i1 %4663, label %4664, label %4665

4664:                                             ; preds = %4661
  br label %4673

4665:                                             ; preds = %4661, %4657
  %4666 = load ptr, ptr %56, align 8, !tbaa !9
  %4667 = load ptr, ptr %57, align 8, !tbaa !9
  %4668 = load ptr, ptr %58, align 8, !tbaa !9
  %4669 = load ptr, ptr %59, align 8, !tbaa !9
  %4670 = load i32, ptr %40, align 4, !tbaa !5
  %4671 = load i32, ptr %33, align 4, !tbaa !5
  %4672 = call double @jit_matmul(ptr noundef %44, ptr noundef %4666, ptr noundef %4667, ptr noundef %4668, ptr noundef %4669, i32 noundef %4670, i32 noundef %4671, ptr noundef %65)
  store double %4672, ptr %32, align 8, !tbaa !11
  br label %4673

4673:                                             ; preds = %4665, %4664
  br label %4674

4674:                                             ; preds = %4673, %4624
  %4675 = load i32, ptr %26, align 4, !tbaa !5
  %4676 = icmp sgt i32 %4675, 0
  br i1 %4676, label %4677, label %4733

4677:                                             ; preds = %4674
  %4678 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4679 = load i32, ptr %4678, align 8, !tbaa !32
  %4680 = icmp eq i32 %4679, 2
  br i1 %4680, label %4685, label %4681

4681:                                             ; preds = %4677
  %4682 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4683 = load i32, ptr %4682, align 8, !tbaa !32
  %4684 = icmp eq i32 %4683, 3
  br i1 %4684, label %4685, label %4720

4685:                                             ; preds = %4681, %4677
  %4686 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4687 = load i32, ptr %4686, align 8, !tbaa !32
  %4688 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %4687)
  %4689 = icmp eq i32 %4688, 4
  br i1 %4689, label %4690, label %4707

4690:                                             ; preds = %4685
  %4691 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 5
  %4692 = load i32, ptr %4691, align 4, !tbaa !50
  %4693 = srem i32 %4692, 4
  %4694 = icmp eq i32 %4693, 0
  br i1 %4694, label %4695, label %4707

4695:                                             ; preds = %4690
  %4696 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4697 = load i32, ptr %4696, align 8, !tbaa !32
  %4698 = load ptr, ptr %60, align 8, !tbaa !9
  %4699 = load ptr, ptr %58, align 8, !tbaa !9
  %4700 = load i32, ptr %16, align 4, !tbaa !5
  %4701 = mul nsw i32 %4700, 4
  %4702 = load i32, ptr %17, align 4, !tbaa !5
  %4703 = mul nsw i32 %4702, 4
  %4704 = load i32, ptr %18, align 4, !tbaa !5
  %4705 = sdiv i32 %4704, 4
  %4706 = call double @check_matrix(i32 noundef %4697, ptr noundef %4698, ptr noundef %4699, i32 noundef %4701, i32 noundef %4703, i32 noundef %4705)
  store double %4706, ptr %53, align 8, !tbaa !11
  br label %4719

4707:                                             ; preds = %4690, %4685
  %4708 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4709 = load i32, ptr %4708, align 8, !tbaa !32
  %4710 = load ptr, ptr %60, align 8, !tbaa !9
  %4711 = load ptr, ptr %58, align 8, !tbaa !9
  %4712 = load i32, ptr %16, align 4, !tbaa !5
  %4713 = mul nsw i32 %4712, 2
  %4714 = load i32, ptr %17, align 4, !tbaa !5
  %4715 = mul nsw i32 %4714, 2
  %4716 = load i32, ptr %18, align 4, !tbaa !5
  %4717 = sdiv i32 %4716, 2
  %4718 = call double @check_matrix(i32 noundef %4709, ptr noundef %4710, ptr noundef %4711, i32 noundef %4713, i32 noundef %4715, i32 noundef %4717)
  store double %4718, ptr %53, align 8, !tbaa !11
  br label %4719

4719:                                             ; preds = %4707, %4695
  br label %4732

4720:                                             ; preds = %4681
  %4721 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4722 = load i32, ptr %4721, align 8, !tbaa !32
  %4723 = load ptr, ptr %60, align 8, !tbaa !9
  %4724 = load ptr, ptr %58, align 8, !tbaa !9
  %4725 = load i32, ptr %16, align 4, !tbaa !5
  %4726 = mul nsw i32 %4725, 4
  %4727 = load i32, ptr %17, align 4, !tbaa !5
  %4728 = mul nsw i32 %4727, 4
  %4729 = load i32, ptr %18, align 4, !tbaa !5
  %4730 = sdiv i32 %4729, 4
  %4731 = call double @check_matrix(i32 noundef %4722, ptr noundef %4723, ptr noundef %4724, i32 noundef %4726, i32 noundef %4728, i32 noundef %4730)
  store double %4731, ptr %53, align 8, !tbaa !11
  br label %4732

4732:                                             ; preds = %4720, %4719
  br label %4742

4733:                                             ; preds = %4674
  %4734 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4735 = load i32, ptr %4734, align 8, !tbaa !32
  %4736 = load ptr, ptr %60, align 8, !tbaa !9
  %4737 = load ptr, ptr %58, align 8, !tbaa !9
  %4738 = load i32, ptr %16, align 4, !tbaa !5
  %4739 = load i32, ptr %17, align 4, !tbaa !5
  %4740 = load i32, ptr %18, align 4, !tbaa !5
  %4741 = call double @check_matrix(i32 noundef %4735, ptr noundef %4736, ptr noundef %4737, i32 noundef %4738, i32 noundef %4739, i32 noundef %4740)
  store double %4741, ptr %53, align 8, !tbaa !11
  br label %4742

4742:                                             ; preds = %4733, %4732
  %4743 = load i32, ptr %42, align 4, !tbaa !5
  %4744 = icmp eq i32 %4743, 2
  br i1 %4744, label %4745, label %4755

4745:                                             ; preds = %4742
  %4746 = load ptr, ptr %64, align 8, !tbaa !9
  %4747 = load ptr, ptr %63, align 8, !tbaa !9
  %4748 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 10
  %4749 = load i32, ptr %4748, align 8, !tbaa !72
  %4750 = load i32, ptr %17, align 4, !tbaa !5
  %4751 = add nsw i32 %4750, 7
  %4752 = sdiv i32 %4751, 8
  %4753 = load i32, ptr %18, align 4, !tbaa !5
  %4754 = call double @check_matrix(i32 noundef 12, ptr noundef %4746, ptr noundef %4747, i32 noundef %4749, i32 noundef %4752, i32 noundef %4753)
  store double %4754, ptr %54, align 8, !tbaa !11
  br label %4755

4755:                                             ; preds = %4745, %4742
  %4756 = load i32, ptr %10, align 4, !tbaa !5
  %4757 = icmp eq i32 %4756, 12
  br i1 %4757, label %4758, label %4785

4758:                                             ; preds = %4755
  %4759 = load i32, ptr %11, align 4, !tbaa !5
  %4760 = icmp eq i32 %4759, 3
  br i1 %4760, label %4761, label %4785

4761:                                             ; preds = %4758
  %4762 = load i32, ptr %12, align 4, !tbaa !5
  %4763 = icmp eq i32 %4762, 3
  br i1 %4763, label %4770, label %4764

4764:                                             ; preds = %4761
  %4765 = load i32, ptr %12, align 4, !tbaa !5
  %4766 = icmp eq i32 %4765, 1
  br i1 %4766, label %4770, label %4767

4767:                                             ; preds = %4764
  %4768 = load i32, ptr %12, align 4, !tbaa !5
  %4769 = icmp eq i32 %4768, 14
  br i1 %4769, label %4770, label %4785

4770:                                             ; preds = %4767, %4764, %4761
  %4771 = load i32, ptr %13, align 4, !tbaa !5
  %4772 = icmp eq i32 %4771, 3
  br i1 %4772, label %4776, label %4773

4773:                                             ; preds = %4770
  %4774 = load i32, ptr %13, align 4, !tbaa !5
  %4775 = icmp eq i32 %4774, 1
  br i1 %4775, label %4776, label %4785

4776:                                             ; preds = %4773, %4770
  %4777 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  %4778 = load ptr, ptr %4777, align 8, !tbaa !57
  call void @libxsmm_free(ptr noundef %4778)
  %4779 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 36
  %4780 = load ptr, ptr %4779, align 8, !tbaa !58
  call void @libxsmm_free(ptr noundef %4780)
  %4781 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 31
  %4782 = load ptr, ptr %4781, align 8, !tbaa !59
  call void @libxsmm_free(ptr noundef %4782)
  %4783 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 32
  %4784 = load ptr, ptr %4783, align 8, !tbaa !60
  call void @libxsmm_free(ptr noundef %4784)
  br label %4785

4785:                                             ; preds = %4776, %4773, %4767, %4758, %4755
  %4786 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %4787 = load i32, ptr %4786, align 8, !tbaa !17
  %4788 = icmp ugt i32 %4787, 0
  br i1 %4788, label %4789, label %4792

4789:                                             ; preds = %4785
  %4790 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 33
  %4791 = load ptr, ptr %4790, align 8, !tbaa !63
  call void @libxsmm_free(ptr noundef %4791)
  br label %4792

4792:                                             ; preds = %4789, %4785
  %4793 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %4794 = load i32, ptr %4793, align 4, !tbaa !18
  %4795 = icmp ugt i32 %4794, 0
  br i1 %4795, label %4804, label %4796

4796:                                             ; preds = %4792
  %4797 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %4798 = load i32, ptr %4797, align 8, !tbaa !19
  %4799 = icmp ugt i32 %4798, 0
  br i1 %4799, label %4804, label %4800

4800:                                             ; preds = %4796
  %4801 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %4802 = load i32, ptr %4801, align 4, !tbaa !20
  %4803 = icmp ugt i32 %4802, 0
  br i1 %4803, label %4804, label %4807

4804:                                             ; preds = %4800, %4796, %4792
  %4805 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 34
  %4806 = load ptr, ptr %4805, align 8, !tbaa !65
  call void @libxsmm_free(ptr noundef %4806)
  br label %4807

4807:                                             ; preds = %4804, %4800
  %4808 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %4809 = load i32, ptr %4808, align 4, !tbaa !20
  %4810 = icmp ugt i32 %4809, 0
  br i1 %4810, label %4811, label %4814

4811:                                             ; preds = %4807
  %4812 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 35
  %4813 = load ptr, ptr %4812, align 8, !tbaa !67
  call void @libxsmm_free(ptr noundef %4813)
  br label %4814

4814:                                             ; preds = %4811, %4807
  %4815 = load i32, ptr %10, align 4, !tbaa !5
  %4816 = icmp eq i32 %4815, 12
  br i1 %4816, label %4817, label %4829

4817:                                             ; preds = %4814
  %4818 = load i32, ptr %11, align 4, !tbaa !5
  %4819 = icmp eq i32 %4818, 2
  br i1 %4819, label %4820, label %4829

4820:                                             ; preds = %4817
  %4821 = load i32, ptr %13, align 4, !tbaa !5
  %4822 = icmp eq i32 %4821, 2
  br i1 %4822, label %4826, label %4823

4823:                                             ; preds = %4820
  %4824 = load i32, ptr %13, align 4, !tbaa !5
  %4825 = icmp eq i32 %4824, 1
  br i1 %4825, label %4826, label %4829

4826:                                             ; preds = %4823, %4820
  %4827 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  %4828 = load ptr, ptr %4827, align 8, !tbaa !57
  call void @libxsmm_free(ptr noundef %4828)
  br label %4829

4829:                                             ; preds = %4826, %4823, %4817, %4814
  %4830 = load ptr, ptr %56, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4830)
  %4831 = load ptr, ptr %57, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4831)
  %4832 = load ptr, ptr %58, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4832)
  %4833 = load ptr, ptr %59, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4833)
  %4834 = load ptr, ptr %60, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4834)
  %4835 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %4836 = load i32, ptr %4835, align 8, !tbaa !47
  %4837 = icmp eq i32 %4836, 1
  br i1 %4837, label %4838, label %4840

4838:                                             ; preds = %4829
  %4839 = load ptr, ptr %62, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4839)
  br label %4840

4840:                                             ; preds = %4838, %4829
  %4841 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %4842 = load i32, ptr %4841, align 4, !tbaa !48
  %4843 = icmp eq i32 %4842, 2
  br i1 %4843, label %4844, label %4847

4844:                                             ; preds = %4840
  %4845 = load ptr, ptr %63, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4845)
  %4846 = load ptr, ptr %64, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4846)
  br label %4847

4847:                                             ; preds = %4844, %4840
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  %4848 = load i32, ptr %41, align 4, !tbaa !5
  %4849 = icmp ne i32 %4848, 0
  br i1 %4849, label %4850, label %4857

4850:                                             ; preds = %4847
  %4851 = load i32, ptr %41, align 4, !tbaa !5
  %4852 = icmp eq i32 %4851, 1
  br i1 %4852, label %4853, label %4855

4853:                                             ; preds = %4850
  %4854 = call i32 (ptr, ...) @printf(ptr noundef @.str.34)
  br label %4856

4855:                                             ; preds = %4850
  br label %4856

4856:                                             ; preds = %4855, %4853
  br label %4857

4857:                                             ; preds = %4856, %4847
  %4858 = load i32, ptr %42, align 4, !tbaa !5
  %4859 = icmp ne i32 %4858, 0
  br i1 %4859, label %4860, label %4879

4860:                                             ; preds = %4857
  %4861 = load i32, ptr %42, align 4, !tbaa !5
  %4862 = icmp eq i32 %4861, 1
  br i1 %4862, label %4863, label %4865

4863:                                             ; preds = %4860
  %4864 = call i32 (ptr, ...) @printf(ptr noundef @.str.35)
  br label %4878

4865:                                             ; preds = %4860
  %4866 = load i32, ptr %42, align 4, !tbaa !5
  %4867 = icmp eq i32 %4866, 2
  br i1 %4867, label %4868, label %4870

4868:                                             ; preds = %4865
  %4869 = call i32 (ptr, ...) @printf(ptr noundef @.str.36)
  br label %4877

4870:                                             ; preds = %4865
  %4871 = load i32, ptr %42, align 4, !tbaa !5
  %4872 = icmp eq i32 %4871, 3
  br i1 %4872, label %4873, label %4875

4873:                                             ; preds = %4870
  %4874 = call i32 (ptr, ...) @printf(ptr noundef @.str.37)
  br label %4876

4875:                                             ; preds = %4870
  br label %4876

4876:                                             ; preds = %4875, %4873
  br label %4877

4877:                                             ; preds = %4876, %4868
  br label %4878

4878:                                             ; preds = %4877, %4863
  br label %4879

4879:                                             ; preds = %4878, %4857
  %4880 = load i32, ptr %26, align 4, !tbaa !5
  %4881 = icmp sgt i32 %4880, 0
  br i1 %4881, label %4882, label %4884

4882:                                             ; preds = %4879
  %4883 = call i32 (ptr, ...) @printf(ptr noundef @.str.38)
  br label %4884

4884:                                             ; preds = %4882, %4879
  %4885 = load double, ptr %53, align 8, !tbaa !11
  %4886 = fcmp ogt double %4885, 8.000000e-03
  br i1 %4886, label %4887, label %4891

4887:                                             ; preds = %4884
  %4888 = load i32, ptr %47, align 4, !tbaa !5
  %4889 = icmp eq i32 %4888, 0
  br i1 %4889, label %4890, label %4891

4890:                                             ; preds = %4887
  store i32 1, ptr %47, align 4, !tbaa !5
  br label %4896

4891:                                             ; preds = %4887, %4884
  %4892 = load i32, ptr %47, align 4, !tbaa !5
  %4893 = icmp eq i32 %4892, 1
  br i1 %4893, label %4894, label %4895

4894:                                             ; preds = %4891
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %4895

4895:                                             ; preds = %4894, %4891
  br label %4896

4896:                                             ; preds = %4895, %4890
  %4897 = load i32, ptr %33, align 4, !tbaa !5
  %4898 = icmp eq i32 %4897, 0
  br i1 %4898, label %4899, label %4933

4899:                                             ; preds = %4896
  %4900 = load double, ptr %32, align 8, !tbaa !11
  %4901 = call i32 (ptr, ...) @printf(ptr noundef @.str.39, double noundef %4900)
  %4902 = load i32, ptr %40, align 4, !tbaa !5
  %4903 = sitofp i32 %4902 to double
  %4904 = load i32, ptr %17, align 4, !tbaa !5
  %4905 = sitofp i32 %4904 to double
  %4906 = fmul double %4903, %4905
  %4907 = load i32, ptr %18, align 4, !tbaa !5
  %4908 = sitofp i32 %4907 to double
  %4909 = fmul double %4906, %4908
  %4910 = load i32, ptr %19, align 4, !tbaa !5
  %4911 = sitofp i32 %4910 to double
  %4912 = fmul double %4909, %4911
  %4913 = load i32, ptr %29, align 4, !tbaa !5
  %4914 = sitofp i32 %4913 to double
  %4915 = fmul double %4912, %4914
  %4916 = load i32, ptr %45, align 4, !tbaa !5
  %4917 = sitofp i32 %4916 to double
  %4918 = fmul double %4915, %4917
  %4919 = fmul double %4918, 2.000000e+00
  %4920 = load double, ptr %32, align 8, !tbaa !11
  %4921 = fmul double %4920, 1.000000e+09
  %4922 = fdiv double %4919, %4921
  %4923 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %4922)
  %4924 = load double, ptr %53, align 8, !tbaa !11
  %4925 = call i32 (ptr, ...) @printf(ptr noundef @.str.41, double noundef %4924)
  store i32 0, ptr %47, align 4, !tbaa !5
  %4926 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %4927 = load i32, ptr %4926, align 4, !tbaa !48
  %4928 = icmp eq i32 %4927, 2
  br i1 %4928, label %4929, label %4932

4929:                                             ; preds = %4899
  %4930 = load double, ptr %54, align 8, !tbaa !11
  %4931 = call i32 (ptr, ...) @printf(ptr noundef @.str.42, double noundef %4930)
  br label %4932

4932:                                             ; preds = %4929, %4899
  br label %5139

4933:                                             ; preds = %4896
  %4934 = load i32, ptr %36, align 4, !tbaa !5
  %4935 = icmp eq i32 %4934, 1
  br i1 %4935, label %4936, label %5016

4936:                                             ; preds = %4933
  %4937 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %4938 = load i32, ptr %4937, align 4, !tbaa !48
  %4939 = icmp eq i32 %4938, 2
  br i1 %4939, label %4940, label %4978

4940:                                             ; preds = %4936
  %4941 = load ptr, ptr %6, align 8, !tbaa !9
  %4942 = load ptr, ptr %7, align 8, !tbaa !9
  %4943 = load ptr, ptr %8, align 8, !tbaa !9
  %4944 = load ptr, ptr %9, align 8, !tbaa !9
  %4945 = load i32, ptr %17, align 4, !tbaa !5
  %4946 = load i32, ptr %18, align 4, !tbaa !5
  %4947 = load i32, ptr %19, align 4, !tbaa !5
  %4948 = load i32, ptr %14, align 4, !tbaa !5
  %4949 = load i32, ptr %15, align 4, !tbaa !5
  %4950 = load i32, ptr %16, align 4, !tbaa !5
  %4951 = load i32, ptr %29, align 4, !tbaa !5
  %4952 = load i32, ptr %30, align 4, !tbaa !5
  %4953 = load i32, ptr %31, align 4, !tbaa !5
  %4954 = load i32, ptr %40, align 4, !tbaa !5
  %4955 = sitofp i32 %4954 to double
  %4956 = load i32, ptr %17, align 4, !tbaa !5
  %4957 = sitofp i32 %4956 to double
  %4958 = fmul double %4955, %4957
  %4959 = load i32, ptr %18, align 4, !tbaa !5
  %4960 = sitofp i32 %4959 to double
  %4961 = fmul double %4958, %4960
  %4962 = load i32, ptr %19, align 4, !tbaa !5
  %4963 = sitofp i32 %4962 to double
  %4964 = fmul double %4961, %4963
  %4965 = load i32, ptr %29, align 4, !tbaa !5
  %4966 = sitofp i32 %4965 to double
  %4967 = fmul double %4964, %4966
  %4968 = load i32, ptr %45, align 4, !tbaa !5
  %4969 = sitofp i32 %4968 to double
  %4970 = fmul double %4967, %4969
  %4971 = fmul double %4970, 2.000000e+00
  %4972 = load double, ptr %32, align 8, !tbaa !11
  %4973 = fmul double %4972, 1.000000e+09
  %4974 = fdiv double %4971, %4973
  %4975 = load double, ptr %53, align 8, !tbaa !11
  %4976 = load double, ptr %54, align 8, !tbaa !11
  %4977 = call i32 (ptr, ...) @printf(ptr noundef @.str.43, ptr noundef %4941, ptr noundef %4942, ptr noundef %4943, ptr noundef %4944, i32 noundef %4945, i32 noundef %4946, i32 noundef %4947, i32 noundef %4948, i32 noundef %4949, i32 noundef %4950, i32 noundef %4951, i32 noundef %4952, i32 noundef %4953, double noundef %4974, double noundef %4975, double noundef %4976)
  br label %5015

4978:                                             ; preds = %4936
  %4979 = load ptr, ptr %6, align 8, !tbaa !9
  %4980 = load ptr, ptr %7, align 8, !tbaa !9
  %4981 = load ptr, ptr %8, align 8, !tbaa !9
  %4982 = load ptr, ptr %9, align 8, !tbaa !9
  %4983 = load i32, ptr %17, align 4, !tbaa !5
  %4984 = load i32, ptr %18, align 4, !tbaa !5
  %4985 = load i32, ptr %19, align 4, !tbaa !5
  %4986 = load i32, ptr %14, align 4, !tbaa !5
  %4987 = load i32, ptr %15, align 4, !tbaa !5
  %4988 = load i32, ptr %16, align 4, !tbaa !5
  %4989 = load i32, ptr %29, align 4, !tbaa !5
  %4990 = load i32, ptr %30, align 4, !tbaa !5
  %4991 = load i32, ptr %31, align 4, !tbaa !5
  %4992 = load i32, ptr %40, align 4, !tbaa !5
  %4993 = sitofp i32 %4992 to double
  %4994 = load i32, ptr %17, align 4, !tbaa !5
  %4995 = sitofp i32 %4994 to double
  %4996 = fmul double %4993, %4995
  %4997 = load i32, ptr %18, align 4, !tbaa !5
  %4998 = sitofp i32 %4997 to double
  %4999 = fmul double %4996, %4998
  %5000 = load i32, ptr %19, align 4, !tbaa !5
  %5001 = sitofp i32 %5000 to double
  %5002 = fmul double %4999, %5001
  %5003 = load i32, ptr %29, align 4, !tbaa !5
  %5004 = sitofp i32 %5003 to double
  %5005 = fmul double %5002, %5004
  %5006 = load i32, ptr %45, align 4, !tbaa !5
  %5007 = sitofp i32 %5006 to double
  %5008 = fmul double %5005, %5007
  %5009 = fmul double %5008, 2.000000e+00
  %5010 = load double, ptr %32, align 8, !tbaa !11
  %5011 = fmul double %5010, 1.000000e+09
  %5012 = fdiv double %5009, %5011
  %5013 = load double, ptr %53, align 8, !tbaa !11
  %5014 = call i32 (ptr, ...) @printf(ptr noundef @.str.44, ptr noundef %4979, ptr noundef %4980, ptr noundef %4981, ptr noundef %4982, i32 noundef %4983, i32 noundef %4984, i32 noundef %4985, i32 noundef %4986, i32 noundef %4987, i32 noundef %4988, i32 noundef %4989, i32 noundef %4990, i32 noundef %4991, double noundef %5012, double noundef %5013)
  br label %5015

5015:                                             ; preds = %4978, %4940
  br label %5052

5016:                                             ; preds = %4933
  %5017 = load ptr, ptr %6, align 8, !tbaa !9
  %5018 = load ptr, ptr %7, align 8, !tbaa !9
  %5019 = load ptr, ptr %8, align 8, !tbaa !9
  %5020 = load ptr, ptr %9, align 8, !tbaa !9
  %5021 = load i32, ptr %17, align 4, !tbaa !5
  %5022 = load i32, ptr %18, align 4, !tbaa !5
  %5023 = load i32, ptr %19, align 4, !tbaa !5
  %5024 = load i32, ptr %14, align 4, !tbaa !5
  %5025 = load i32, ptr %15, align 4, !tbaa !5
  %5026 = load i32, ptr %16, align 4, !tbaa !5
  %5027 = load i32, ptr %29, align 4, !tbaa !5
  %5028 = load i32, ptr %30, align 4, !tbaa !5
  %5029 = load i32, ptr %31, align 4, !tbaa !5
  %5030 = load i32, ptr %40, align 4, !tbaa !5
  %5031 = sitofp i32 %5030 to double
  %5032 = load i32, ptr %17, align 4, !tbaa !5
  %5033 = sitofp i32 %5032 to double
  %5034 = fmul double %5031, %5033
  %5035 = load i32, ptr %18, align 4, !tbaa !5
  %5036 = sitofp i32 %5035 to double
  %5037 = fmul double %5034, %5036
  %5038 = load i32, ptr %19, align 4, !tbaa !5
  %5039 = sitofp i32 %5038 to double
  %5040 = fmul double %5037, %5039
  %5041 = load i32, ptr %29, align 4, !tbaa !5
  %5042 = sitofp i32 %5041 to double
  %5043 = fmul double %5040, %5042
  %5044 = load i32, ptr %45, align 4, !tbaa !5
  %5045 = sitofp i32 %5044 to double
  %5046 = fmul double %5043, %5045
  %5047 = fmul double %5046, 2.000000e+00
  %5048 = load double, ptr %32, align 8, !tbaa !11
  %5049 = fmul double %5048, 1.000000e+09
  %5050 = fdiv double %5047, %5049
  %5051 = call i32 (ptr, ...) @printf(ptr noundef @.str.45, ptr noundef %5017, ptr noundef %5018, ptr noundef %5019, ptr noundef %5020, i32 noundef %5021, i32 noundef %5022, i32 noundef %5023, i32 noundef %5024, i32 noundef %5025, i32 noundef %5026, i32 noundef %5027, i32 noundef %5028, i32 noundef %5029, double noundef %5050)
  br label %5052

5052:                                             ; preds = %5016, %5015
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #10
  store ptr null, ptr %166, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #10
  store ptr null, ptr %167, align 8, !tbaa !9
  %5053 = load i32, ptr %43, align 4, !tbaa !5
  switch i32 %5053, label %5056 [
    i32 0, label %5054
    i32 1, label %5055
  ]

5054:                                             ; preds = %5052
  store ptr @.str.10, ptr %166, align 8, !tbaa !9
  br label %5057

5055:                                             ; preds = %5052
  store ptr @.str.11, ptr %166, align 8, !tbaa !9
  br label %5057

5056:                                             ; preds = %5052
  store ptr @.str.46, ptr %166, align 8, !tbaa !9
  br label %5057

5057:                                             ; preds = %5056, %5055, %5054
  %5058 = load i32, ptr %30, align 4, !tbaa !5
  switch i32 %5058, label %5064 [
    i32 0, label %5059
    i32 1, label %5060
    i32 2, label %5061
    i32 3, label %5062
    i32 4, label %5063
  ]

5059:                                             ; preds = %5057
  store ptr @.str.12, ptr %167, align 8, !tbaa !9
  br label %5065

5060:                                             ; preds = %5057
  store ptr @.str.13, ptr %167, align 8, !tbaa !9
  br label %5065

5061:                                             ; preds = %5057
  store ptr @.str.14, ptr %167, align 8, !tbaa !9
  br label %5065

5062:                                             ; preds = %5057
  store ptr @.str.15, ptr %167, align 8, !tbaa !9
  br label %5065

5063:                                             ; preds = %5057
  store ptr @.str.16, ptr %167, align 8, !tbaa !9
  br label %5065

5064:                                             ; preds = %5057
  store ptr @.str.46, ptr %167, align 8, !tbaa !9
  br label %5065

5065:                                             ; preds = %5064, %5063, %5062, %5061, %5060, %5059
  %5066 = load ptr, ptr %166, align 8, !tbaa !9
  %5067 = icmp ne ptr null, %5066
  br i1 %5067, label %5068, label %5072

5068:                                             ; preds = %5065
  %5069 = load ptr, ptr %167, align 8, !tbaa !9
  %5070 = icmp ne ptr null, %5069
  br i1 %5070, label %5071, label %5072

5071:                                             ; preds = %5068
  br label %5073

5072:                                             ; preds = %5068, %5065
  call void @__assert_fail(ptr noundef @.str.47, ptr noundef @.str.33, i32 noundef 3813, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

5073:                                             ; preds = %5071
  %5074 = load i32, ptr %45, align 4, !tbaa !5
  %5075 = sitofp i32 %5074 to double
  %5076 = load double, ptr %32, align 8, !tbaa !11
  %5077 = fdiv double %5076, %5075
  store double %5077, ptr %32, align 8, !tbaa !11
  %5078 = load ptr, ptr %5, align 8, !tbaa !9
  %5079 = getelementptr inbounds ptr, ptr %5078, i64 0
  %5080 = load ptr, ptr %5079, align 8, !tbaa !9
  %5081 = load ptr, ptr %6, align 8, !tbaa !9
  %5082 = load ptr, ptr %7, align 8, !tbaa !9
  %5083 = load ptr, ptr %8, align 8, !tbaa !9
  %5084 = load ptr, ptr %9, align 8, !tbaa !9
  %5085 = load i32, ptr %17, align 4, !tbaa !5
  %5086 = load i32, ptr %18, align 4, !tbaa !5
  %5087 = load i32, ptr %19, align 4, !tbaa !5
  %5088 = load i32, ptr %14, align 4, !tbaa !5
  %5089 = load i32, ptr %15, align 4, !tbaa !5
  %5090 = load i32, ptr %16, align 4, !tbaa !5
  %5091 = load double, ptr %27, align 8, !tbaa !11
  %5092 = load double, ptr %28, align 8, !tbaa !11
  %5093 = load i32, ptr %20, align 4, !tbaa !5
  %5094 = load i32, ptr %21, align 4, !tbaa !5
  %5095 = load i32, ptr %22, align 4, !tbaa !5
  %5096 = load i32, ptr %23, align 4, !tbaa !5
  %5097 = load i32, ptr %24, align 4, !tbaa !5
  %5098 = load i32, ptr %25, align 4, !tbaa !5
  %5099 = load i32, ptr %26, align 4, !tbaa !5
  %5100 = load ptr, ptr %166, align 8, !tbaa !9
  %5101 = load ptr, ptr %167, align 8, !tbaa !9
  %5102 = load i32, ptr %29, align 4, !tbaa !5
  %5103 = load i32, ptr %31, align 4, !tbaa !5
  %5104 = load i32, ptr %40, align 4, !tbaa !5
  %5105 = load i32, ptr %39, align 4, !tbaa !5
  %5106 = call i32 (ptr, ...) @printf(ptr noundef @.str.48, ptr noundef %5080, ptr noundef %5081, ptr noundef %5082, ptr noundef %5083, ptr noundef %5084, i32 noundef %5085, i32 noundef %5086, i32 noundef %5087, i32 noundef %5088, i32 noundef %5089, i32 noundef %5090, double noundef %5091, double noundef %5092, i32 noundef %5093, i32 noundef %5094, i32 noundef %5095, i32 noundef %5096, i32 noundef %5097, i32 noundef %5098, i32 noundef %5099, ptr noundef %5100, ptr noundef %5101, i32 noundef %5102, i32 noundef %5103, i32 noundef %5104, i32 noundef %5105)
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #10
  %5107 = load double, ptr %32, align 8, !tbaa !11
  %5108 = call i32 (ptr, ...) @printf(ptr noundef @.str.49, double noundef %5107)
  %5109 = load i32, ptr %40, align 4, !tbaa !5
  %5110 = sitofp i32 %5109 to double
  %5111 = load i32, ptr %17, align 4, !tbaa !5
  %5112 = sitofp i32 %5111 to double
  %5113 = fmul double %5110, %5112
  %5114 = load i32, ptr %18, align 4, !tbaa !5
  %5115 = sitofp i32 %5114 to double
  %5116 = fmul double %5113, %5115
  %5117 = load i32, ptr %19, align 4, !tbaa !5
  %5118 = sitofp i32 %5117 to double
  %5119 = fmul double %5116, %5118
  %5120 = load i32, ptr %29, align 4, !tbaa !5
  %5121 = sitofp i32 %5120 to double
  %5122 = fmul double %5119, %5121
  %5123 = load i32, ptr %45, align 4, !tbaa !5
  %5124 = sitofp i32 %5123 to double
  %5125 = fmul double %5122, %5124
  %5126 = fmul double %5125, 2.000000e+00
  %5127 = load double, ptr %32, align 8, !tbaa !11
  %5128 = fmul double %5127, 1.000000e+09
  %5129 = fdiv double %5126, %5128
  %5130 = call i32 (ptr, ...) @printf(ptr noundef @.str.50, double noundef %5129)
  %5131 = load i32, ptr %47, align 4, !tbaa !5
  %5132 = icmp eq i32 %5131, 0
  br i1 %5132, label %5133, label %5136

5133:                                             ; preds = %5073
  %5134 = load double, ptr %53, align 8, !tbaa !11
  %5135 = call i32 (ptr, ...) @printf(ptr noundef @.str.41, double noundef %5134)
  br label %5138

5136:                                             ; preds = %5073
  %5137 = call i32 (ptr, ...) @printf(ptr noundef @.str.51)
  br label %5138

5138:                                             ; preds = %5136, %5133
  br label %5139

5139:                                             ; preds = %5138, %4932
  %5140 = load double, ptr %37, align 8, !tbaa !11
  %5141 = load double, ptr %53, align 8, !tbaa !11
  %5142 = fcmp olt double %5140, %5141
  br i1 %5142, label %5143, label %5151

5143:                                             ; preds = %5139
  %5144 = load i32, ptr %36, align 4, !tbaa !5
  %5145 = icmp eq i32 %5144, 1
  br i1 %5145, label %5146, label %5151

5146:                                             ; preds = %5143
  %5147 = load i32, ptr %47, align 4, !tbaa !5
  %5148 = icmp eq i32 %5147, 0
  br i1 %5148, label %5149, label %5151

5149:                                             ; preds = %5146
  %5150 = load double, ptr %53, align 8, !tbaa !11
  store double %5150, ptr %37, align 8, !tbaa !11
  br label %5151

5151:                                             ; preds = %5149, %5146, %5143, %5139
  %5152 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5153 = load i32, ptr %5152, align 4, !tbaa !48
  %5154 = icmp eq i32 %5153, 2
  br i1 %5154, label %5155, label %5168

5155:                                             ; preds = %5151
  %5156 = load double, ptr %38, align 8, !tbaa !11
  %5157 = load double, ptr %54, align 8, !tbaa !11
  %5158 = fcmp olt double %5156, %5157
  br i1 %5158, label %5159, label %5167

5159:                                             ; preds = %5155
  %5160 = load i32, ptr %36, align 4, !tbaa !5
  %5161 = icmp eq i32 %5160, 1
  br i1 %5161, label %5162, label %5167

5162:                                             ; preds = %5159
  %5163 = load i32, ptr %47, align 4, !tbaa !5
  %5164 = icmp eq i32 %5163, 0
  br i1 %5164, label %5165, label %5167

5165:                                             ; preds = %5162
  %5166 = load double, ptr %54, align 8, !tbaa !11
  store double %5166, ptr %38, align 8, !tbaa !11
  br label %5167

5167:                                             ; preds = %5165, %5162, %5159, %5155
  br label %5168

5168:                                             ; preds = %5167, %5151
  %5169 = load i64, ptr @tests_executed, align 8, !tbaa !103
  %5170 = add i64 %5169, 1
  store i64 %5170, ptr @tests_executed, align 8, !tbaa !103
  store i32 0, ptr %49, align 4
  br label %5171

5171:                                             ; preds = %5168, %1653
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  %5172 = load i32, ptr %49, align 4
  switch i32 %5172, label %5389 [
    i32 0, label %5173
    i32 2, label %5193
  ]

5173:                                             ; preds = %5171
  br label %5174

5174:                                             ; preds = %5173
  %5175 = load i32, ptr %46, align 4, !tbaa !5
  %5176 = icmp ugt i32 %5175, 0
  br i1 %5176, label %5177, label %5180

5177:                                             ; preds = %5174
  %5178 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5179 = icmp eq i32 %5178, 0
  br i1 %5179, label %5191, label %5180

5180:                                             ; preds = %5177, %5174
  %5181 = load i32, ptr %46, align 4, !tbaa !5
  %5182 = icmp ugt i32 %5181, 0
  br i1 %5182, label %5183, label %5189

5183:                                             ; preds = %5180
  %5184 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5185 = icmp ugt i32 %5184, 0
  br i1 %5185, label %5186, label %5189

5186:                                             ; preds = %5183
  %5187 = load i64, ptr @tests_executed, align 8, !tbaa !103
  %5188 = icmp ult i64 %5187, 10
  br label %5189

5189:                                             ; preds = %5186, %5183, %5180
  %5190 = phi i1 [ false, %5183 ], [ false, %5180 ], [ %5188, %5186 ]
  br label %5191

5191:                                             ; preds = %5189, %5177
  %5192 = phi i1 [ true, %5177 ], [ %5190, %5189 ]
  br i1 %5192, label %1630, label %5193, !llvm.loop !105

5193:                                             ; preds = %5191, %5171
  %5194 = load i32, ptr %33, align 4, !tbaa !5
  %5195 = icmp ne i32 %5194, 0
  br i1 %5195, label %5196, label %5199

5196:                                             ; preds = %5193
  %5197 = load ptr, ptr %35, align 8, !tbaa !9
  %5198 = call i32 @fclose(ptr noundef %5197)
  br label %5201

5199:                                             ; preds = %5193
  %5200 = call i32 (ptr, ...) @printf(ptr noundef @.str.28)
  br label %5201

5201:                                             ; preds = %5199, %5196
  %5202 = load double, ptr %37, align 8, !tbaa !11
  %5203 = call i32 (ptr, ...) @printf(ptr noundef @.str.52, double noundef %5202)
  %5204 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5205 = load i32, ptr %5204, align 4, !tbaa !48
  %5206 = icmp eq i32 %5205, 2
  br i1 %5206, label %5207, label %5210

5207:                                             ; preds = %5201
  %5208 = load double, ptr %38, align 8, !tbaa !11
  %5209 = call i32 (ptr, ...) @printf(ptr noundef @.str.53, double noundef %5208)
  br label %5210

5210:                                             ; preds = %5207, %5201
  %5211 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %5212 = load i32, ptr %5211, align 8, !tbaa !32
  %5213 = icmp eq i32 %5212, 2
  br i1 %5213, label %5214, label %5247

5214:                                             ; preds = %5210
  %5215 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5216 = load i32, ptr %5215, align 4, !tbaa !48
  %5217 = icmp eq i32 %5216, 3
  br i1 %5217, label %5218, label %5225

5218:                                             ; preds = %5214
  %5219 = load double, ptr %37, align 8, !tbaa !11
  %5220 = fcmp oge double %5219, 7.000000e-03
  br i1 %5220, label %5221, label %5222

5221:                                             ; preds = %5218
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5222:                                             ; preds = %5218
  %5223 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5224 = call i32 @libxsmm_return_success_code(i32 noundef %5223)
  store i32 %5224, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5225:                                             ; preds = %5214
  %5226 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5227 = load i32, ptr %5226, align 4, !tbaa !48
  %5228 = icmp eq i32 %5227, 2
  br i1 %5228, label %5233, label %5229

5229:                                             ; preds = %5225
  %5230 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5231 = load i32, ptr %5230, align 4, !tbaa !48
  %5232 = icmp eq i32 %5231, 1
  br i1 %5232, label %5233, label %5240

5233:                                             ; preds = %5229, %5225
  %5234 = load double, ptr %38, align 8, !tbaa !11
  %5235 = fcmp oge double %5234, 5.000000e-03
  br i1 %5235, label %5236, label %5237

5236:                                             ; preds = %5233
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5237:                                             ; preds = %5233
  %5238 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5239 = call i32 @libxsmm_return_success_code(i32 noundef %5238)
  store i32 %5239, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5240:                                             ; preds = %5229
  %5241 = load double, ptr %37, align 8, !tbaa !11
  %5242 = fcmp oge double %5241, 5.000000e-03
  br i1 %5242, label %5243, label %5244

5243:                                             ; preds = %5240
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5244:                                             ; preds = %5240
  %5245 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5246 = call i32 @libxsmm_return_success_code(i32 noundef %5245)
  store i32 %5246, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5247:                                             ; preds = %5210
  %5248 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %5249 = load i32, ptr %5248, align 4, !tbaa !30
  %5250 = icmp eq i32 %5249, 3
  br i1 %5250, label %5251, label %5258

5251:                                             ; preds = %5247
  %5252 = load double, ptr %37, align 8, !tbaa !11
  %5253 = fcmp oge double %5252, 8.000000e-03
  br i1 %5253, label %5254, label %5255

5254:                                             ; preds = %5251
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5255:                                             ; preds = %5251
  %5256 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5257 = call i32 @libxsmm_return_success_code(i32 noundef %5256)
  store i32 %5257, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5258:                                             ; preds = %5247
  %5259 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %5260 = load i32, ptr %5259, align 8, !tbaa !32
  %5261 = icmp eq i32 %5260, 4
  br i1 %5261, label %5262, label %5306

5262:                                             ; preds = %5258
  %5263 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5264 = load i32, ptr %5263, align 4, !tbaa !48
  %5265 = icmp eq i32 %5264, 3
  br i1 %5265, label %5266, label %5284

5266:                                             ; preds = %5262
  %5267 = load double, ptr %37, align 8, !tbaa !11
  %5268 = fcmp oge double %5267, 0x3F826E978D4FDF3B
  br i1 %5268, label %5269, label %5281

5269:                                             ; preds = %5266
  %5270 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %5271 = load i32, ptr %5270, align 8, !tbaa !47
  %5272 = icmp eq i32 %5271, 1
  br i1 %5272, label %5273, label %5274

5273:                                             ; preds = %5269
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5274:                                             ; preds = %5269
  %5275 = load double, ptr %37, align 8, !tbaa !11
  %5276 = fcmp oge double %5275, 1.800000e-02
  br i1 %5276, label %5277, label %5278

5277:                                             ; preds = %5274
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5278:                                             ; preds = %5274
  %5279 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5280 = call i32 @libxsmm_return_success_code(i32 noundef %5279)
  store i32 %5280, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5281:                                             ; preds = %5266
  %5282 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5283 = call i32 @libxsmm_return_success_code(i32 noundef %5282)
  store i32 %5283, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5284:                                             ; preds = %5262
  %5285 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5286 = load i32, ptr %5285, align 4, !tbaa !48
  %5287 = icmp eq i32 %5286, 2
  br i1 %5287, label %5292, label %5288

5288:                                             ; preds = %5284
  %5289 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5290 = load i32, ptr %5289, align 4, !tbaa !48
  %5291 = icmp eq i32 %5290, 1
  br i1 %5291, label %5292, label %5299

5292:                                             ; preds = %5288, %5284
  %5293 = load double, ptr %38, align 8, !tbaa !11
  %5294 = fcmp oge double %5293, 5.000000e-03
  br i1 %5294, label %5295, label %5296

5295:                                             ; preds = %5292
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5296:                                             ; preds = %5292
  %5297 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5298 = call i32 @libxsmm_return_success_code(i32 noundef %5297)
  store i32 %5298, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5299:                                             ; preds = %5288
  %5300 = load double, ptr %37, align 8, !tbaa !11
  %5301 = fcmp oge double %5300, 5.000000e-03
  br i1 %5301, label %5302, label %5303

5302:                                             ; preds = %5299
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5303:                                             ; preds = %5299
  %5304 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5305 = call i32 @libxsmm_return_success_code(i32 noundef %5304)
  store i32 %5305, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5306:                                             ; preds = %5258
  %5307 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %5308 = load i32, ptr %5307, align 8, !tbaa !32
  %5309 = icmp eq i32 %5308, 5
  br i1 %5309, label %5310, label %5354

5310:                                             ; preds = %5306
  %5311 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5312 = load i32, ptr %5311, align 4, !tbaa !48
  %5313 = icmp eq i32 %5312, 3
  br i1 %5313, label %5314, label %5332

5314:                                             ; preds = %5310
  %5315 = load double, ptr %37, align 8, !tbaa !11
  %5316 = fcmp oge double %5315, 0x3F826E978D4FDF3B
  br i1 %5316, label %5317, label %5329

5317:                                             ; preds = %5314
  %5318 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %5319 = load i32, ptr %5318, align 8, !tbaa !47
  %5320 = icmp eq i32 %5319, 1
  br i1 %5320, label %5321, label %5322

5321:                                             ; preds = %5317
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5322:                                             ; preds = %5317
  %5323 = load double, ptr %37, align 8, !tbaa !11
  %5324 = fcmp oge double %5323, 1.800000e-02
  br i1 %5324, label %5325, label %5326

5325:                                             ; preds = %5322
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5326:                                             ; preds = %5322
  %5327 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5328 = call i32 @libxsmm_return_success_code(i32 noundef %5327)
  store i32 %5328, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5329:                                             ; preds = %5314
  %5330 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5331 = call i32 @libxsmm_return_success_code(i32 noundef %5330)
  store i32 %5331, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5332:                                             ; preds = %5310
  %5333 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5334 = load i32, ptr %5333, align 4, !tbaa !48
  %5335 = icmp eq i32 %5334, 2
  br i1 %5335, label %5340, label %5336

5336:                                             ; preds = %5332
  %5337 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5338 = load i32, ptr %5337, align 4, !tbaa !48
  %5339 = icmp eq i32 %5338, 1
  br i1 %5339, label %5340, label %5347

5340:                                             ; preds = %5336, %5332
  %5341 = load double, ptr %38, align 8, !tbaa !11
  %5342 = fcmp oge double %5341, 5.000000e-03
  br i1 %5342, label %5343, label %5344

5343:                                             ; preds = %5340
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5344:                                             ; preds = %5340
  %5345 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5346 = call i32 @libxsmm_return_success_code(i32 noundef %5345)
  store i32 %5346, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5347:                                             ; preds = %5336
  %5348 = load double, ptr %37, align 8, !tbaa !11
  %5349 = fcmp oge double %5348, 5.000000e-03
  br i1 %5349, label %5350, label %5351

5350:                                             ; preds = %5347
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5351:                                             ; preds = %5347
  %5352 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5353 = call i32 @libxsmm_return_success_code(i32 noundef %5352)
  store i32 %5353, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5354:                                             ; preds = %5306
  %5355 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5356 = load i32, ptr %5355, align 4, !tbaa !48
  %5357 = icmp eq i32 %5356, 3
  br i1 %5357, label %5358, label %5365

5358:                                             ; preds = %5354
  %5359 = load double, ptr %37, align 8, !tbaa !11
  %5360 = fcmp oge double %5359, 7.000000e-04
  br i1 %5360, label %5361, label %5362

5361:                                             ; preds = %5358
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5362:                                             ; preds = %5358
  %5363 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5364 = call i32 @libxsmm_return_success_code(i32 noundef %5363)
  store i32 %5364, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5365:                                             ; preds = %5354
  %5366 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5367 = load i32, ptr %5366, align 4, !tbaa !48
  %5368 = icmp eq i32 %5367, 2
  br i1 %5368, label %5373, label %5369

5369:                                             ; preds = %5365
  %5370 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5371 = load i32, ptr %5370, align 4, !tbaa !48
  %5372 = icmp eq i32 %5371, 1
  br i1 %5372, label %5373, label %5380

5373:                                             ; preds = %5369, %5365
  %5374 = load double, ptr %38, align 8, !tbaa !11
  %5375 = fcmp oge double %5374, 2.000000e-05
  br i1 %5375, label %5376, label %5377

5376:                                             ; preds = %5373
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5377:                                             ; preds = %5373
  %5378 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5379 = call i32 @libxsmm_return_success_code(i32 noundef %5378)
  store i32 %5379, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5380:                                             ; preds = %5369
  %5381 = load double, ptr %37, align 8, !tbaa !11
  %5382 = fcmp oge double %5381, 1.200000e-05
  br i1 %5382, label %5383, label %5384

5383:                                             ; preds = %5380
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5384:                                             ; preds = %5380
  %5385 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5386 = call i32 @libxsmm_return_success_code(i32 noundef %5385)
  store i32 %5386, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5387

5387:                                             ; preds = %5384, %5383, %5377, %5376, %5362, %5361, %5351, %5350, %5344, %5343, %5329, %5326, %5325, %5321, %5303, %5302, %5296, %5295, %5281, %5278, %5277, %5273, %5255, %5254, %5244, %5243, %5237, %5236, %5222, %5221, %780, %772, %715, %437, %400
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 232, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  %5388 = load i32, ptr %3, align 4
  ret i32 %5388

5389:                                             ; preds = %5171
  unreachable
}

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @char_to_libxsmm_datatype(ptr noundef) #4

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @print_help() #4

declare i32 @printf(ptr noundef, ...) #5

; Function Attrs: nounwind
declare ptr @getenv(ptr noundef) #6

declare ptr @libxsmm_stristr(ptr noundef, ptr noundef) #5

declare i32 @libxsmm_cpuid(ptr noundef) #5

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

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #6

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #7

declare noalias ptr @fopen(ptr noundef, ptr noundef) #5

declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #5

; Function Attrs: nounwind
declare i32 @__isoc99_sscanf(ptr noundef, ptr noundef, ...) #6

declare void @libxsmm_rng_set_seed(i32 noundef) #5

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

declare noalias ptr @libxsmm_aligned_malloc(i64 noundef, i64 noundef) #5

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @get_random_posneg_p5_num() #4

declare void @libxsmm_rne_convert_fp32_f16(ptr noundef, ptr noundef, i64 noundef) #5

declare void @libxsmm_convert_f16_f32(ptr noundef, ptr noundef, i64 noundef) #5

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @get_random_pos_p5_num() #4

; Function Attrs: nounwind
declare i32 @rand() #6

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @init_random_matrix(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @init_zero_matrix(i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) #4

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

declare void @libxsmm_convert_bf8_f32(ptr noundef, ptr noundef, i64 noundef) #5

declare void @libxsmm_rne_convert_fp32_bf16(ptr noundef, ptr noundef, i64 noundef) #5

declare void @libxsmm_convert_hf8_f32(ptr noundef, ptr noundef, i64 noundef) #5

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @init_identity_matrix(i32 noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @negate_random_cols_rows(i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @init_garbage_matrix(i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @ref_fused_matmul(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @jit_matmul(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) #4

declare void @libxsmm_free(ptr noundef) #5

; Function Attrs: inlinehint nounwind uwtable
declare hidden float @convert_mxfp4_to_float(i8 noundef zeroext) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden signext i8 @convert_mxfp4_to_char(i8 noundef zeroext) #4

declare double @libxsmm_rng_f64() #5

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @ref_matmul(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef) #5

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @convert_output_to_vnni4(ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @convert_output_to_vnni2(ptr noundef, ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @check_matrix(i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) #4

declare i32 @fclose(ptr noundef) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!16, !6, i64 192}
!16 = !{!"gemm_def", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !12, i64 48, !12, i64 56, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !14, i64 124, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !6, i64 184, !6, i64 188, !6, i64 192, !6, i64 196, !6, i64 200, !6, i64 204, !6, i64 208, !6, i64 212, !6, i64 216, !6, i64 220, !6, i64 224}
!17 = !{!16, !6, i64 208}
!18 = !{!16, !6, i64 196}
!19 = !{!16, !6, i64 200}
!20 = !{!16, !6, i64 204}
!21 = !{!16, !6, i64 212}
!22 = !{!16, !6, i64 216}
!23 = !{!16, !6, i64 220}
!24 = !{!16, !6, i64 224}
!25 = !{!16, !6, i64 84}
!26 = !{!16, !6, i64 88}
!27 = !{!16, !6, i64 92}
!28 = !{!16, !14, i64 124}
!29 = !{!16, !6, i64 0}
!30 = !{!16, !6, i64 4}
!31 = !{!16, !6, i64 12}
!32 = !{!16, !6, i64 8}
!33 = !{!16, !12, i64 48}
!34 = !{!16, !12, i64 56}
!35 = !{!16, !6, i64 64}
!36 = !{!16, !6, i64 68}
!37 = !{!16, !6, i64 72}
!38 = !{!16, !6, i64 76}
!39 = !{!16, !6, i64 80}
!40 = !{!16, !6, i64 96}
!41 = !{!16, !6, i64 100}
!42 = !{!16, !6, i64 104}
!43 = !{!16, !6, i64 108}
!44 = !{!16, !6, i64 112}
!45 = !{!16, !6, i64 116}
!46 = !{!16, !6, i64 120}
!47 = !{!16, !6, i64 184}
!48 = !{!16, !6, i64 188}
!49 = !{!16, !6, i64 16}
!50 = !{!16, !6, i64 20}
!51 = !{!16, !6, i64 24}
!52 = !{!16, !6, i64 28}
!53 = !{!16, !6, i64 32}
!54 = !{!16, !6, i64 36}
!55 = distinct !{!55, !56}
!56 = !{!"llvm.loop.mustprogress"}
!57 = !{!16, !10, i64 128}
!58 = !{!16, !10, i64 176}
!59 = !{!16, !10, i64 136}
!60 = !{!16, !10, i64 144}
!61 = !{!7, !7, i64 0}
!62 = distinct !{!62, !56}
!63 = !{!16, !10, i64 152}
!64 = distinct !{!64, !56}
!65 = !{!16, !10, i64 160}
!66 = distinct !{!66, !56}
!67 = !{!16, !10, i64 168}
!68 = distinct !{!68, !56}
!69 = !{!16, !6, i64 44}
!70 = !{!71, !10, i64 0}
!71 = !{!"fusion_args", !10, i64 0, !10, i64 8}
!72 = !{!16, !6, i64 40}
!73 = !{!71, !10, i64 8}
!74 = distinct !{!74, !56}
!75 = distinct !{!75, !56}
!76 = distinct !{!76, !56}
!77 = distinct !{!77, !56}
!78 = distinct !{!78, !56}
!79 = distinct !{!79, !56}
!80 = distinct !{!80, !56}
!81 = distinct !{!81, !56}
!82 = distinct !{!82, !56}
!83 = distinct !{!83, !56}
!84 = !{!85, !85, i64 0}
!85 = !{!"short", !7, i64 0}
!86 = distinct !{!86, !56}
!87 = distinct !{!87, !56}
!88 = distinct !{!88, !56}
!89 = distinct !{!89, !56}
!90 = distinct !{!90, !56}
!91 = distinct !{!91, !56}
!92 = distinct !{!92, !56}
!93 = distinct !{!93, !56}
!94 = distinct !{!94, !56}
!95 = distinct !{!95, !56}
!96 = distinct !{!96, !56}
!97 = distinct !{!97, !56}
!98 = distinct !{!98, !56}
!99 = distinct !{!99, !56}
!100 = distinct !{!100, !56}
!101 = distinct !{!101, !56}
!102 = distinct !{!102, !56}
!103 = !{!104, !104, i64 0}
!104 = !{!"long long", !7, i64 0}
!105 = distinct !{!105, !56}


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

%struct.gemm_def = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.fusion_args = type { ptr, ptr }

@is_reference_kernel = external dso_local local_unnamed_addr global i32, align 4
@tests_executed = external dso_local local_unnamed_addr global i64, align 8
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [55 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.22 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [77 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [23 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [32 x i8], align 1
@switch.table.main.5 = private unnamed_addr constant [11 x i64] [i64 2, i64 2, i64 1, i64 2, i64 8, i64 2, i64 4, i64 2, i64 2, i64 2, i64 1], align 8
@switch.table.main.6 = private unnamed_addr constant [5 x ptr] [ptr @.str.12, ptr @.str.13, ptr @.str.14, ptr @.str.15, ptr @.str.16], align 8

; Function Attrs: nounwind uwtable
declare dso_local i32 @libxsmm_return_success_code(i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef readonly %1) local_unnamed_addr #0 {
  %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 %struct.gemm_def, align 8
  %10 = alloca [512 x i8], align 16
  %11 = alloca %struct.fusion_args, align 8
  %12 = alloca float, align 4
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca i16, align 2
  %18 = alloca i16, align 2
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #13
  store i32 0, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #13
  store i32 0, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #13
  store i32 0, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #13
  store i32 0, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #13
  store i32 0, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #13
  store i32 0, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 232, ptr nonnull %9) #13
  %19 = getelementptr inbounds i8, ptr %9, i64 192
  %20 = getelementptr inbounds i8, ptr %9, i64 208
  %21 = getelementptr inbounds i8, ptr %9, i64 196
  %22 = getelementptr inbounds i8, ptr %9, i64 200
  %23 = getelementptr inbounds i8, ptr %9, i64 204
  %24 = getelementptr inbounds i8, ptr %9, i64 212
  %25 = getelementptr inbounds i8, ptr %9, i64 216
  %26 = getelementptr inbounds i8, ptr %9, i64 220
  %27 = add i32 %0, -29
  %or.cond5 = icmp ult i32 %27, -4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %19, i8 0, i64 32, i1 false)
  br i1 %or.cond5, label %194, label %28

28:                                               ; preds = %2
  %29 = getelementptr inbounds i8, ptr %1, i64 8
  %30 = load ptr, ptr %29, align 8, !tbaa !9
  %31 = getelementptr inbounds i8, ptr %1, i64 16
  %32 = load ptr, ptr %31, align 8, !tbaa !9
  %33 = getelementptr inbounds i8, ptr %1, i64 24
  %34 = load ptr, ptr %33, align 8, !tbaa !9
  %35 = getelementptr inbounds i8, ptr %1, i64 32
  %36 = load ptr, ptr %35, align 8, !tbaa !9
  %37 = getelementptr inbounds i8, ptr %9, i64 224
  store i32 0, ptr %37, align 8, !tbaa !11
  %38 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %30, ptr noundef nonnull dereferenceable(1) @.str) #14
  %39 = icmp eq i32 %38, 0
  br i1 %39, label %40, label %41

40:                                               ; preds = %28
  store i32 1, ptr %19, align 8, !tbaa !15
  store i32 1, ptr %37, align 8, !tbaa !11
  br label %93

41:                                               ; preds = %28
  %42 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %30, ptr noundef nonnull dereferenceable(1) @.str.1) #14
  %43 = icmp eq i32 %42, 0
  br i1 %43, label %44, label %53

44:                                               ; preds = %41
  %45 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) @.str.2) #14
  %46 = icmp eq i32 %45, 0
  br i1 %46, label %47, label %48

47:                                               ; preds = %44
  store i32 1, ptr %19, align 8, !tbaa !15
  br label %48

48:                                               ; preds = %47, %44
  %49 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) @.str.3) #14
  %50 = icmp eq i32 %49, 0
  br i1 %50, label %51, label %52

51:                                               ; preds = %48
  store i32 1, ptr %20, align 8, !tbaa !16
  br label %52

52:                                               ; preds = %51, %48
  %.1 = phi i32 [ 12, %51 ], [ 13, %48 ]
  store i32 1, ptr %37, align 8, !tbaa !11
  br label %93

53:                                               ; preds = %41
  %54 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %30, ptr noundef nonnull dereferenceable(1) @.str.4) #14
  %55 = icmp eq i32 %54, 0
  br i1 %55, label %56, label %68

56:                                               ; preds = %53
  %57 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %58 = icmp eq i32 %57, 0
  br i1 %58, label %59, label %60

59:                                               ; preds = %56
  store i32 1, ptr %21, align 4, !tbaa !17
  br label %60

60:                                               ; preds = %59, %56
  %61 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) @.str.6) #14
  %62 = icmp eq i32 %61, 0
  br i1 %62, label %63, label %64

63:                                               ; preds = %60
  store i32 1, ptr %22, align 8, !tbaa !18
  br label %64

64:                                               ; preds = %63, %60
  %65 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) @.str.7) #14
  %66 = icmp eq i32 %65, 0
  br i1 %66, label %67, label %93

67:                                               ; preds = %64
  store i32 1, ptr %23, align 4, !tbaa !19
  br label %93

68:                                               ; preds = %53
  %69 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %30, ptr noundef nonnull dereferenceable(1) @.str.8) #14
  %70 = icmp eq i32 %69, 0
  br i1 %70, label %71, label %84

71:                                               ; preds = %68
  %72 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %73 = icmp eq i32 %72, 0
  br i1 %73, label %74, label %75

74:                                               ; preds = %71
  store i32 1, ptr %24, align 4, !tbaa !20
  br label %93

75:                                               ; preds = %71
  %76 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) @.str.2) #14
  %77 = icmp eq i32 %76, 0
  br i1 %77, label %78, label %84

78:                                               ; preds = %75
  %79 = getelementptr inbounds i8, ptr %1, i64 136
  %80 = load ptr, ptr %79, align 8, !tbaa !9
  %81 = tail call i32 @atoi(ptr nocapture noundef %80) #14
  %82 = icmp sgt i32 %81, 0
  br i1 %82, label %83, label %84

83:                                               ; preds = %78
  store i32 1, ptr %25, align 8, !tbaa !21
  br label %93

84:                                               ; preds = %68, %78, %75
  %85 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %30, ptr noundef nonnull dereferenceable(1) @.str.9) #14
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %87, label %91

87:                                               ; preds = %84
  %88 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %89 = icmp eq i32 %88, 0
  br i1 %89, label %90, label %91

90:                                               ; preds = %87
  store i32 1, ptr %26, align 4, !tbaa !22
  br label %93

91:                                               ; preds = %87, %84
  %92 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %30)
  br label %93

93:                                               ; preds = %52, %74, %90, %91, %83, %64, %67, %40
  %.4 = phi i32 [ 12, %40 ], [ %.1, %52 ], [ 12, %67 ], [ 12, %64 ], [ 2, %74 ], [ 3, %83 ], [ 2, %90 ], [ %92, %91 ]
  %94 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %32)
  %95 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %34)
  %96 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %36)
  %97 = getelementptr inbounds i8, ptr %1, i64 40
  %98 = load ptr, ptr %97, align 8, !tbaa !9
  %99 = tail call i32 @atoi(ptr nocapture noundef %98) #14
  store i32 %99, ptr %6, align 4, !tbaa !5
  %100 = getelementptr inbounds i8, ptr %1, i64 48
  %101 = load ptr, ptr %100, align 8, !tbaa !9
  %102 = tail call i32 @atoi(ptr nocapture noundef %101) #14
  store i32 %102, ptr %7, align 4, !tbaa !5
  %103 = getelementptr inbounds i8, ptr %1, i64 56
  %104 = load ptr, ptr %103, align 8, !tbaa !9
  %105 = tail call i32 @atoi(ptr nocapture noundef %104) #14
  store i32 %105, ptr %8, align 4, !tbaa !5
  %106 = getelementptr inbounds i8, ptr %1, i64 64
  %107 = load ptr, ptr %106, align 8, !tbaa !9
  %108 = tail call i32 @atoi(ptr nocapture noundef %107) #14
  store i32 %108, ptr %3, align 4, !tbaa !5
  %109 = getelementptr inbounds i8, ptr %1, i64 72
  %110 = load ptr, ptr %109, align 8, !tbaa !9
  %111 = tail call i32 @atoi(ptr nocapture noundef %110) #14
  store i32 %111, ptr %4, align 4, !tbaa !5
  %112 = getelementptr inbounds i8, ptr %1, i64 80
  %113 = load ptr, ptr %112, align 8, !tbaa !9
  %114 = tail call i32 @atoi(ptr nocapture noundef %113) #14
  store i32 %114, ptr %5, align 4, !tbaa !5
  %115 = getelementptr inbounds i8, ptr %1, i64 88
  %116 = load ptr, ptr %115, align 8, !tbaa !9
  %117 = tail call double @atof(ptr noundef %116) #14
  %118 = getelementptr inbounds i8, ptr %1, i64 96
  %119 = load ptr, ptr %118, align 8, !tbaa !9
  %120 = tail call double @atof(ptr noundef %119) #14
  %121 = getelementptr inbounds i8, ptr %1, i64 104
  %122 = load ptr, ptr %121, align 8, !tbaa !9
  %123 = tail call i32 @atoi(ptr nocapture noundef %122) #14
  %124 = getelementptr inbounds i8, ptr %1, i64 112
  %125 = load ptr, ptr %124, align 8, !tbaa !9
  %126 = tail call i32 @atoi(ptr nocapture noundef %125) #14
  %127 = getelementptr inbounds i8, ptr %1, i64 120
  %128 = load ptr, ptr %127, align 8, !tbaa !9
  %129 = tail call i32 @atoi(ptr nocapture noundef %128) #14
  %130 = getelementptr inbounds i8, ptr %1, i64 128
  %131 = load ptr, ptr %130, align 8, !tbaa !9
  %132 = tail call i32 @atoi(ptr nocapture noundef %131) #14
  %133 = getelementptr inbounds i8, ptr %1, i64 136
  %134 = load ptr, ptr %133, align 8, !tbaa !9
  %135 = tail call i32 @atoi(ptr nocapture noundef %134) #14
  %136 = getelementptr inbounds i8, ptr %1, i64 144
  %137 = load ptr, ptr %136, align 8, !tbaa !9
  %138 = tail call i32 @atoi(ptr nocapture noundef %137) #14
  %139 = getelementptr inbounds i8, ptr %1, i64 152
  %140 = load ptr, ptr %139, align 8, !tbaa !9
  %141 = tail call i32 @atoi(ptr nocapture noundef %140) #14
  %142 = getelementptr inbounds i8, ptr %1, i64 160
  %143 = load ptr, ptr %142, align 8, !tbaa !9
  %144 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.10, ptr noundef nonnull dereferenceable(1) %143) #14
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %150, label %146

146:                                              ; preds = %93
  %147 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.11, ptr noundef nonnull dereferenceable(1) %143) #14
  %148 = icmp eq i32 %147, 0
  br i1 %148, label %150, label %149

149:                                              ; preds = %146
  tail call void @print_help()
  br label %1822

150:                                              ; preds = %146, %93
  %.01738 = phi i32 [ 0, %93 ], [ 1, %146 ]
  %151 = getelementptr inbounds i8, ptr %1, i64 168
  %152 = load ptr, ptr %151, align 8, !tbaa !9
  %153 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.12, ptr noundef nonnull dereferenceable(1) %152) #14
  %154 = icmp eq i32 %153, 0
  br i1 %154, label %173, label %155

155:                                              ; preds = %150
  %156 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef nonnull dereferenceable(1) %152) #14
  %157 = icmp eq i32 %156, 0
  br i1 %157, label %173, label %158

158:                                              ; preds = %155
  %159 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.14, ptr noundef nonnull dereferenceable(1) %152) #14
  %160 = icmp eq i32 %159, 0
  br i1 %160, label %173, label %161

161:                                              ; preds = %158
  %162 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.15, ptr noundef nonnull dereferenceable(1) %152) #14
  %163 = icmp eq i32 %162, 0
  br i1 %163, label %173, label %164

164:                                              ; preds = %161
  %165 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.16, ptr noundef nonnull dereferenceable(1) %152) #14
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %168, label %167

167:                                              ; preds = %164
  tail call void @print_help()
  br label %1822

168:                                              ; preds = %164
  %169 = getelementptr inbounds i8, ptr %1, i64 176
  %170 = load ptr, ptr %169, align 8, !tbaa !9
  %171 = tail call double @atof(ptr noundef %170) #14
  %172 = fptrunc double %171 to float
  br label %177

173:                                              ; preds = %150, %155, %158, %161
  %.01687.ph = phi i32 [ 3, %161 ], [ 2, %158 ], [ 1, %155 ], [ 0, %150 ]
  %174 = getelementptr inbounds i8, ptr %1, i64 176
  %175 = load ptr, ptr %174, align 8, !tbaa !9
  %176 = tail call i32 @atoi(ptr nocapture noundef %175) #14
  br label %177

177:                                              ; preds = %173, %168
  %.016871864 = phi i32 [ 4, %168 ], [ %.01687.ph, %173 ]
  %.01748 = phi float [ %172, %168 ], [ 0x3FD99999A0000000, %173 ]
  %.01684 = phi i32 [ 1, %168 ], [ %176, %173 ]
  %178 = getelementptr inbounds i8, ptr %1, i64 184
  %179 = load ptr, ptr %178, align 8, !tbaa !9
  %180 = tail call i32 @atoi(ptr nocapture noundef %179) #14
  %181 = getelementptr inbounds i8, ptr %1, i64 192
  %182 = load ptr, ptr %181, align 8, !tbaa !9
  %183 = tail call i32 @atoi(ptr nocapture noundef %182) #14
  %184 = icmp ugt i32 %0, 25
  br i1 %184, label %185, label %.thread1870

185:                                              ; preds = %177
  %186 = getelementptr inbounds i8, ptr %1, i64 200
  %187 = load ptr, ptr %186, align 8, !tbaa !9
  %188 = tail call i32 @atoi(ptr nocapture noundef %187) #14
  %.not1960 = icmp eq i32 %0, 26
  br i1 %.not1960, label %.thread1870, label %189

189:                                              ; preds = %185
  %190 = getelementptr inbounds i8, ptr %1, i64 208
  %191 = load ptr, ptr %190, align 8, !tbaa !9
  %192 = tail call i32 @atoi(ptr nocapture noundef %191) #14
  %193 = icmp ugt i32 %0, 27
  br i1 %193, label %.thread1870.sink.split, label %.thread1870

194:                                              ; preds = %2
  %195 = and i32 %0, -4
  %switch1859 = icmp eq i32 %195, 20
  br i1 %switch1859, label %196, label %340

196:                                              ; preds = %194
  %197 = getelementptr inbounds i8, ptr %1, i64 8
  %198 = load ptr, ptr %197, align 8, !tbaa !9
  %199 = getelementptr inbounds i8, ptr %1, i64 16
  %200 = load ptr, ptr %199, align 8, !tbaa !9
  %201 = getelementptr inbounds i8, ptr %1, i64 24
  %202 = load ptr, ptr %201, align 8, !tbaa !9
  %203 = getelementptr inbounds i8, ptr %1, i64 32
  %204 = load ptr, ptr %203, align 8, !tbaa !9
  %205 = getelementptr inbounds i8, ptr %9, i64 224
  store i32 0, ptr %205, align 8, !tbaa !11
  %206 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %198, ptr noundef nonnull dereferenceable(1) @.str) #14
  %207 = icmp eq i32 %206, 0
  br i1 %207, label %208, label %209

208:                                              ; preds = %196
  store i32 1, ptr %19, align 8, !tbaa !15
  store i32 1, ptr %205, align 8, !tbaa !11
  br label %261

209:                                              ; preds = %196
  %210 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %198, ptr noundef nonnull dereferenceable(1) @.str.1) #14
  %211 = icmp eq i32 %210, 0
  br i1 %211, label %212, label %221

212:                                              ; preds = %209
  %213 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %200, ptr noundef nonnull dereferenceable(1) @.str.2) #14
  %214 = icmp eq i32 %213, 0
  br i1 %214, label %215, label %216

215:                                              ; preds = %212
  store i32 1, ptr %19, align 8, !tbaa !15
  br label %216

216:                                              ; preds = %215, %212
  %217 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %200, ptr noundef nonnull dereferenceable(1) @.str.3) #14
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %220

219:                                              ; preds = %216
  store i32 1, ptr %20, align 8, !tbaa !16
  br label %220

220:                                              ; preds = %219, %216
  %.6 = phi i32 [ 12, %219 ], [ 13, %216 ]
  store i32 1, ptr %205, align 8, !tbaa !11
  br label %261

221:                                              ; preds = %209
  %222 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %198, ptr noundef nonnull dereferenceable(1) @.str.4) #14
  %223 = icmp eq i32 %222, 0
  br i1 %223, label %224, label %236

224:                                              ; preds = %221
  %225 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %200, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %226 = icmp eq i32 %225, 0
  br i1 %226, label %227, label %228

227:                                              ; preds = %224
  store i32 1, ptr %21, align 4, !tbaa !17
  br label %228

228:                                              ; preds = %227, %224
  %229 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %200, ptr noundef nonnull dereferenceable(1) @.str.6) #14
  %230 = icmp eq i32 %229, 0
  br i1 %230, label %231, label %232

231:                                              ; preds = %228
  store i32 1, ptr %22, align 8, !tbaa !18
  br label %232

232:                                              ; preds = %231, %228
  %233 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %200, ptr noundef nonnull dereferenceable(1) @.str.7) #14
  %234 = icmp eq i32 %233, 0
  br i1 %234, label %235, label %261

235:                                              ; preds = %232
  store i32 1, ptr %23, align 4, !tbaa !19
  br label %261

236:                                              ; preds = %221
  %237 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %198, ptr noundef nonnull dereferenceable(1) @.str.8) #14
  %238 = icmp eq i32 %237, 0
  br i1 %238, label %239, label %252

239:                                              ; preds = %236
  %240 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %200, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %241 = icmp eq i32 %240, 0
  br i1 %241, label %242, label %243

242:                                              ; preds = %239
  store i32 1, ptr %24, align 4, !tbaa !20
  br label %261

243:                                              ; preds = %239
  %244 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %200, ptr noundef nonnull dereferenceable(1) @.str.2) #14
  %245 = icmp eq i32 %244, 0
  br i1 %245, label %246, label %252

246:                                              ; preds = %243
  %247 = getelementptr inbounds i8, ptr %1, i64 96
  %248 = load ptr, ptr %247, align 8, !tbaa !9
  %249 = tail call i32 @atoi(ptr nocapture noundef %248) #14
  %250 = icmp sgt i32 %249, 0
  br i1 %250, label %251, label %252

251:                                              ; preds = %246
  store i32 1, ptr %25, align 8, !tbaa !21
  br label %261

252:                                              ; preds = %236, %246, %243
  %253 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %198, ptr noundef nonnull dereferenceable(1) @.str.9) #14
  %254 = icmp eq i32 %253, 0
  br i1 %254, label %255, label %259

255:                                              ; preds = %252
  %256 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %200, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %257 = icmp eq i32 %256, 0
  br i1 %257, label %258, label %259

258:                                              ; preds = %255
  store i32 1, ptr %26, align 4, !tbaa !22
  br label %261

259:                                              ; preds = %255, %252
  %260 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %198)
  br label %261

261:                                              ; preds = %220, %242, %258, %259, %251, %232, %235, %208
  %.9 = phi i32 [ 12, %208 ], [ %.6, %220 ], [ 12, %235 ], [ 12, %232 ], [ 2, %242 ], [ 3, %251 ], [ 2, %258 ], [ %260, %259 ]
  %262 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %200)
  %263 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %202)
  %264 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %204)
  %265 = getelementptr inbounds i8, ptr %1, i64 40
  %266 = load ptr, ptr %265, align 8, !tbaa !9
  %267 = getelementptr inbounds i8, ptr %1, i64 48
  %268 = load ptr, ptr %267, align 8, !tbaa !9
  %269 = tail call double @atof(ptr noundef %268) #14
  %270 = getelementptr inbounds i8, ptr %1, i64 56
  %271 = load ptr, ptr %270, align 8, !tbaa !9
  %272 = tail call double @atof(ptr noundef %271) #14
  %273 = getelementptr inbounds i8, ptr %1, i64 64
  %274 = load ptr, ptr %273, align 8, !tbaa !9
  %275 = tail call i32 @atoi(ptr nocapture noundef %274) #14
  %276 = getelementptr inbounds i8, ptr %1, i64 72
  %277 = load ptr, ptr %276, align 8, !tbaa !9
  %278 = tail call i32 @atoi(ptr nocapture noundef %277) #14
  %279 = getelementptr inbounds i8, ptr %1, i64 80
  %280 = load ptr, ptr %279, align 8, !tbaa !9
  %281 = tail call i32 @atoi(ptr nocapture noundef %280) #14
  %282 = getelementptr inbounds i8, ptr %1, i64 88
  %283 = load ptr, ptr %282, align 8, !tbaa !9
  %284 = tail call i32 @atoi(ptr nocapture noundef %283) #14
  %285 = getelementptr inbounds i8, ptr %1, i64 96
  %286 = load ptr, ptr %285, align 8, !tbaa !9
  %287 = tail call i32 @atoi(ptr nocapture noundef %286) #14
  %288 = getelementptr inbounds i8, ptr %1, i64 104
  %289 = load ptr, ptr %288, align 8, !tbaa !9
  %290 = tail call i32 @atoi(ptr nocapture noundef %289) #14
  %291 = getelementptr inbounds i8, ptr %1, i64 112
  %292 = load ptr, ptr %291, align 8, !tbaa !9
  %293 = tail call i32 @atoi(ptr nocapture noundef %292) #14
  %294 = getelementptr inbounds i8, ptr %1, i64 120
  %295 = load ptr, ptr %294, align 8, !tbaa !9
  %296 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.12, ptr noundef nonnull dereferenceable(1) %295) #14
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %316, label %298

298:                                              ; preds = %261
  %299 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef nonnull dereferenceable(1) %295) #14
  %300 = icmp eq i32 %299, 0
  br i1 %300, label %316, label %301

301:                                              ; preds = %298
  %302 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.14, ptr noundef nonnull dereferenceable(1) %295) #14
  %303 = icmp eq i32 %302, 0
  br i1 %303, label %316, label %304

304:                                              ; preds = %301
  %305 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.15, ptr noundef nonnull dereferenceable(1) %295) #14
  %306 = icmp eq i32 %305, 0
  br i1 %306, label %316, label %307

307:                                              ; preds = %304
  %308 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.16, ptr noundef nonnull dereferenceable(1) %295) #14
  %309 = icmp eq i32 %308, 0
  br i1 %309, label %311, label %310

310:                                              ; preds = %307
  tail call void @print_help()
  br label %1822

311:                                              ; preds = %307
  %312 = getelementptr inbounds i8, ptr %1, i64 128
  %313 = load ptr, ptr %312, align 8, !tbaa !9
  %314 = tail call double @atof(ptr noundef %313) #14
  %315 = fptrunc double %314 to float
  br label %320

316:                                              ; preds = %261, %298, %301, %304
  %.11688.ph = phi i32 [ 3, %304 ], [ 2, %301 ], [ 1, %298 ], [ 0, %261 ]
  %317 = getelementptr inbounds i8, ptr %1, i64 128
  %318 = load ptr, ptr %317, align 8, !tbaa !9
  %319 = tail call i32 @atoi(ptr nocapture noundef %318) #14
  br label %320

320:                                              ; preds = %316, %311
  %.116881877 = phi i32 [ 4, %311 ], [ %.11688.ph, %316 ]
  %.11749 = phi float [ %315, %311 ], [ 0x3FD99999A0000000, %316 ]
  %.11685 = phi i32 [ 1, %311 ], [ %319, %316 ]
  %321 = getelementptr inbounds i8, ptr %1, i64 136
  %322 = load ptr, ptr %321, align 8, !tbaa !9
  %323 = tail call i32 @atoi(ptr nocapture noundef %322) #14
  %324 = getelementptr inbounds i8, ptr %1, i64 144
  %325 = load ptr, ptr %324, align 8, !tbaa !9
  %326 = tail call i32 @atoi(ptr nocapture noundef %325) #14
  %327 = getelementptr inbounds i8, ptr %1, i64 152
  %328 = load ptr, ptr %327, align 8, !tbaa !9
  %329 = tail call i32 @atoi(ptr nocapture noundef %328) #14
  %330 = icmp ugt i32 %0, 20
  br i1 %330, label %331, label %.thread1870

331:                                              ; preds = %320
  %332 = getelementptr inbounds i8, ptr %1, i64 160
  %333 = load ptr, ptr %332, align 8, !tbaa !9
  %334 = tail call i32 @atoi(ptr nocapture noundef %333) #14
  %.not1961 = icmp eq i32 %0, 21
  br i1 %.not1961, label %.thread1870, label %335

335:                                              ; preds = %331
  %336 = getelementptr inbounds i8, ptr %1, i64 168
  %337 = load ptr, ptr %336, align 8, !tbaa !9
  %338 = tail call i32 @atoi(ptr nocapture noundef %337) #14
  %339 = icmp ugt i32 %0, 22
  br i1 %339, label %.thread1870.sink.split, label %.thread1870

340:                                              ; preds = %194
  tail call void @print_help()
  br label %1822

.thread1870.sink.split:                           ; preds = %335, %189
  %.sink = phi i64 [ 216, %189 ], [ 176, %335 ]
  %.21750.ph = phi float [ %.01748, %189 ], [ %.11749, %335 ]
  %.11739.ph = phi i32 [ %.01738, %189 ], [ 0, %335 ]
  %.21734.ph = phi i32 [ %192, %189 ], [ %338, %335 ]
  %.01727.ph = phi i32 [ %183, %189 ], [ %326, %335 ]
  %.21725.ph = phi i32 [ %188, %189 ], [ %334, %335 ]
  %.01712.ph = phi i32 [ 1, %189 ], [ %329, %335 ]
  %.01706.ph = phi ptr [ null, %189 ], [ %266, %335 ]
  %.01701.ph = phi i32 [ 0, %189 ], [ 1, %335 ]
  %.01690.ph = phi i32 [ %180, %189 ], [ %323, %335 ]
  %.21689.ph = phi i32 [ %.016871864, %189 ], [ %.116881877, %335 ]
  %.21686.ph = phi i32 [ %.01684, %189 ], [ %.11685, %335 ]
  %.01678.ph = phi double [ %120, %189 ], [ %272, %335 ]
  %.01677.ph = phi double [ %117, %189 ], [ %269, %335 ]
  %.01676.ph = phi i32 [ %141, %189 ], [ %293, %335 ]
  %.01675.ph = phi i32 [ %138, %189 ], [ %290, %335 ]
  %.01674.ph = phi i32 [ %135, %189 ], [ %287, %335 ]
  %.01673.ph = phi i32 [ %132, %189 ], [ %284, %335 ]
  %.01672.ph = phi i32 [ %129, %189 ], [ %281, %335 ]
  %.01671.ph = phi i32 [ %126, %189 ], [ %278, %335 ]
  %.01668.ph = phi i32 [ %123, %189 ], [ %275, %335 ]
  %.01667.ph = phi i32 [ %96, %189 ], [ %264, %335 ]
  %.01666.ph = phi i32 [ %95, %189 ], [ %263, %335 ]
  %.01664.ph = phi i32 [ %94, %189 ], [ %262, %335 ]
  %.10.ph = phi i32 [ %.4, %189 ], [ %.9, %335 ]
  %.01659.ph = phi ptr [ %36, %189 ], [ %204, %335 ]
  %.01658.ph = phi ptr [ %34, %189 ], [ %202, %335 ]
  %.01657.ph = phi ptr [ %32, %189 ], [ %200, %335 ]
  %.01656.ph = phi ptr [ %30, %189 ], [ %198, %335 ]
  %341 = getelementptr inbounds i8, ptr %1, i64 %.sink
  %342 = load ptr, ptr %341, align 8, !tbaa !9
  %343 = tail call i32 @atoi(ptr nocapture noundef %342) #14
  br label %.thread1870

.thread1870:                                      ; preds = %.thread1870.sink.split, %320, %331, %177, %185, %335, %189
  %.21750 = phi float [ %.01748, %189 ], [ %.11749, %335 ], [ %.01748, %185 ], [ %.01748, %177 ], [ %.11749, %331 ], [ %.11749, %320 ], [ %.21750.ph, %.thread1870.sink.split ]
  %.11739 = phi i32 [ %.01738, %189 ], [ 0, %335 ], [ %.01738, %185 ], [ %.01738, %177 ], [ 0, %331 ], [ 0, %320 ], [ %.11739.ph, %.thread1870.sink.split ]
  %.21737 = phi i32 [ 0, %189 ], [ 0, %335 ], [ 0, %185 ], [ 0, %177 ], [ 0, %331 ], [ 0, %320 ], [ %343, %.thread1870.sink.split ]
  %.21734 = phi i32 [ %192, %189 ], [ %338, %335 ], [ 0, %185 ], [ 0, %177 ], [ 0, %331 ], [ 0, %320 ], [ %.21734.ph, %.thread1870.sink.split ]
  %.01727 = phi i32 [ %183, %189 ], [ %326, %335 ], [ %183, %185 ], [ %183, %177 ], [ %326, %331 ], [ %326, %320 ], [ %.01727.ph, %.thread1870.sink.split ]
  %.21725 = phi i32 [ %188, %189 ], [ %334, %335 ], [ %188, %185 ], [ 0, %177 ], [ %334, %331 ], [ 0, %320 ], [ %.21725.ph, %.thread1870.sink.split ]
  %.01712 = phi i32 [ 1, %189 ], [ %329, %335 ], [ 1, %185 ], [ 1, %177 ], [ %329, %331 ], [ %329, %320 ], [ %.01712.ph, %.thread1870.sink.split ]
  %.01706 = phi ptr [ null, %189 ], [ %266, %335 ], [ null, %185 ], [ null, %177 ], [ %266, %331 ], [ %266, %320 ], [ %.01706.ph, %.thread1870.sink.split ]
  %.01701 = phi i32 [ 0, %189 ], [ 1, %335 ], [ 0, %185 ], [ 0, %177 ], [ 1, %331 ], [ 1, %320 ], [ %.01701.ph, %.thread1870.sink.split ]
  %.01690 = phi i32 [ %180, %189 ], [ %323, %335 ], [ %180, %185 ], [ %180, %177 ], [ %323, %331 ], [ %323, %320 ], [ %.01690.ph, %.thread1870.sink.split ]
  %.21689 = phi i32 [ %.016871864, %189 ], [ %.116881877, %335 ], [ %.016871864, %185 ], [ %.016871864, %177 ], [ %.116881877, %331 ], [ %.116881877, %320 ], [ %.21689.ph, %.thread1870.sink.split ]
  %.21686 = phi i32 [ %.01684, %189 ], [ %.11685, %335 ], [ %.01684, %185 ], [ %.01684, %177 ], [ %.11685, %331 ], [ %.11685, %320 ], [ %.21686.ph, %.thread1870.sink.split ]
  %.01678 = phi double [ %120, %189 ], [ %272, %335 ], [ %120, %185 ], [ %120, %177 ], [ %272, %331 ], [ %272, %320 ], [ %.01678.ph, %.thread1870.sink.split ]
  %.01677 = phi double [ %117, %189 ], [ %269, %335 ], [ %117, %185 ], [ %117, %177 ], [ %269, %331 ], [ %269, %320 ], [ %.01677.ph, %.thread1870.sink.split ]
  %.01676 = phi i32 [ %141, %189 ], [ %293, %335 ], [ %141, %185 ], [ %141, %177 ], [ %293, %331 ], [ %293, %320 ], [ %.01676.ph, %.thread1870.sink.split ]
  %.01675 = phi i32 [ %138, %189 ], [ %290, %335 ], [ %138, %185 ], [ %138, %177 ], [ %290, %331 ], [ %290, %320 ], [ %.01675.ph, %.thread1870.sink.split ]
  %.01674 = phi i32 [ %135, %189 ], [ %287, %335 ], [ %135, %185 ], [ %135, %177 ], [ %287, %331 ], [ %287, %320 ], [ %.01674.ph, %.thread1870.sink.split ]
  %.01673 = phi i32 [ %132, %189 ], [ %284, %335 ], [ %132, %185 ], [ %132, %177 ], [ %284, %331 ], [ %284, %320 ], [ %.01673.ph, %.thread1870.sink.split ]
  %.01672 = phi i32 [ %129, %189 ], [ %281, %335 ], [ %129, %185 ], [ %129, %177 ], [ %281, %331 ], [ %281, %320 ], [ %.01672.ph, %.thread1870.sink.split ]
  %.01671 = phi i32 [ %126, %189 ], [ %278, %335 ], [ %126, %185 ], [ %126, %177 ], [ %278, %331 ], [ %278, %320 ], [ %.01671.ph, %.thread1870.sink.split ]
  %.01668 = phi i32 [ %123, %189 ], [ %275, %335 ], [ %123, %185 ], [ %123, %177 ], [ %275, %331 ], [ %275, %320 ], [ %.01668.ph, %.thread1870.sink.split ]
  %.01667 = phi i32 [ %96, %189 ], [ %264, %335 ], [ %96, %185 ], [ %96, %177 ], [ %264, %331 ], [ %264, %320 ], [ %.01667.ph, %.thread1870.sink.split ]
  %.01666 = phi i32 [ %95, %189 ], [ %263, %335 ], [ %95, %185 ], [ %95, %177 ], [ %263, %331 ], [ %263, %320 ], [ %.01666.ph, %.thread1870.sink.split ]
  %.01664 = phi i32 [ %94, %189 ], [ %262, %335 ], [ %94, %185 ], [ %94, %177 ], [ %262, %331 ], [ %262, %320 ], [ %.01664.ph, %.thread1870.sink.split ]
  %.10 = phi i32 [ %.4, %189 ], [ %.9, %335 ], [ %.4, %185 ], [ %.4, %177 ], [ %.9, %331 ], [ %.9, %320 ], [ %.10.ph, %.thread1870.sink.split ]
  %.01659 = phi ptr [ %36, %189 ], [ %204, %335 ], [ %36, %185 ], [ %36, %177 ], [ %204, %331 ], [ %204, %320 ], [ %.01659.ph, %.thread1870.sink.split ]
  %.01658 = phi ptr [ %34, %189 ], [ %202, %335 ], [ %34, %185 ], [ %34, %177 ], [ %202, %331 ], [ %202, %320 ], [ %.01658.ph, %.thread1870.sink.split ]
  %.01657 = phi ptr [ %32, %189 ], [ %200, %335 ], [ %32, %185 ], [ %32, %177 ], [ %200, %331 ], [ %200, %320 ], [ %.01657.ph, %.thread1870.sink.split ]
  %.01656 = phi ptr [ %30, %189 ], [ %198, %335 ], [ %30, %185 ], [ %30, %177 ], [ %198, %331 ], [ %198, %320 ], [ %.01656.ph, %.thread1870.sink.split ]
  %344 = icmp ne i32 %.21734, 0
  %345 = icmp ne i32 %.21737, 0
  %or.cond13 = select i1 %344, i1 true, i1 %345
  br i1 %or.cond13, label %346, label %348

346:                                              ; preds = %.thread1870
  %347 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %1822

348:                                              ; preds = %.thread1870
  %349 = tail call ptr @getenv(ptr noundef nonnull @.str.18) #13
  %350 = tail call ptr @libxsmm_stristr(ptr noundef %349, ptr noundef nonnull @.str.19) #13
  %351 = icmp eq ptr %349, %350
  br i1 %351, label %355, label %352

352:                                              ; preds = %348
  %353 = tail call ptr @libxsmm_stristr(ptr noundef %349, ptr noundef nonnull @.str.20) #13
  %354 = icmp eq ptr %349, %353
  br label %355

355:                                              ; preds = %352, %348
  %356 = phi i1 [ true, %348 ], [ %354, %352 ]
  %357 = tail call i32 @libxsmm_cpuid(ptr noundef null) #13
  %358 = xor i1 %356, true
  %359 = icmp slt i32 %357, 1104
  %or.cond15 = select i1 %358, i1 %359, i1 false
  %360 = icmp ne i32 %.21725, 0
  %or.cond17 = select i1 %or.cond15, i1 %360, i1 false
  br i1 %or.cond17, label %361, label %363

361:                                              ; preds = %355
  %362 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.21)
  br label %363

363:                                              ; preds = %361, %355
  %.31726 = phi i32 [ 0, %361 ], [ %.21725, %355 ]
  %364 = tail call i32 @llvm.smax.i32(i32 %.21686, i32 1)
  %365 = icmp eq i32 %.21689, 0
  %366 = icmp eq i32 %.21689, 4
  %or.cond19 = or i1 %365, %366
  %367 = select i1 %or.cond19, i32 1, i32 %364
  %368 = select i1 %or.cond19, i32 0, i32 %.01690
  %369 = fcmp une double %.01677, 1.000000e+00
  br i1 %369, label %370, label %373

370:                                              ; preds = %363
  %371 = load ptr, ptr @stderr, align 8, !tbaa !9
  %372 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %371, ptr noundef nonnull @.str.22) #15
  tail call void @exit(i32 noundef 1) #16
  unreachable

373:                                              ; preds = %363
  %374 = fcmp une double %.01678, 0.000000e+00
  %375 = fcmp une double %.01678, 1.000000e+00
  %or.cond23 = and i1 %374, %375
  br i1 %or.cond23, label %376, label %379

376:                                              ; preds = %373
  %377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %378 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %377, ptr noundef nonnull @.str.23) #15
  tail call void @exit(i32 noundef 1) #16
  unreachable

379:                                              ; preds = %373
  %380 = icmp sgt i32 %.01676, 0
  %or.cond25 = select i1 %374, i1 %380, i1 false
  br i1 %or.cond25, label %381, label %384

381:                                              ; preds = %379
  %382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %383 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %382, ptr noundef nonnull @.str.24) #15
  br label %384

384:                                              ; preds = %381, %379
  %.11679 = phi double [ 0.000000e+00, %381 ], [ %.01678, %379 ]
  %385 = icmp eq i32 %.10, 0
  %386 = icmp eq i32 %.01664, 0
  %or.cond27 = select i1 %385, i1 %386, i1 false
  %387 = icmp eq i32 %.01666, 0
  %or.cond29 = select i1 %or.cond27, i1 %387, i1 false
  %388 = icmp eq i32 %.01667, 0
  %or.cond31 = select i1 %or.cond29, i1 %388, i1 false
  br i1 %or.cond31, label %.thread1890, label %389

389:                                              ; preds = %384
  %390 = icmp eq i32 %.10, 1
  %391 = icmp eq i32 %.01664, 1
  %or.cond33 = select i1 %390, i1 %391, i1 false
  %392 = icmp eq i32 %.01666, 1
  %or.cond35 = select i1 %or.cond33, i1 %392, i1 false
  %393 = icmp eq i32 %.01667, 1
  %or.cond37 = select i1 %or.cond35, i1 %393, i1 false
  br i1 %or.cond37, label %.thread1890, label %394

394:                                              ; preds = %389
  %395 = icmp eq i32 %.10, 10
  %396 = icmp eq i32 %.01664, 10
  %or.cond39 = select i1 %395, i1 %396, i1 false
  %397 = icmp eq i32 %.01666, 8
  %or.cond41 = select i1 %or.cond39, i1 %397, i1 false
  %398 = icmp eq i32 %.01667, 8
  %or.cond43 = select i1 %or.cond41, i1 %398, i1 false
  br i1 %or.cond43, label %.thread1890, label %399

399:                                              ; preds = %394
  %400 = icmp eq i32 %.10, 13
  %401 = icmp eq i32 %.01664, 13
  %or.cond45 = select i1 %400, i1 %401, i1 false
  %or.cond47 = select i1 %or.cond45, i1 %397, i1 false
  %or.cond49 = select i1 %or.cond47, i1 %398, i1 false
  br i1 %or.cond49, label %.thread1889, label %402

402:                                              ; preds = %399
  %403 = icmp eq i32 %.10, 12
  %404 = icmp eq i32 %.01664, 12
  %or.cond51 = select i1 %403, i1 %404, i1 false
  %or.cond53 = select i1 %or.cond51, i1 %397, i1 false
  %or.cond55 = select i1 %or.cond53, i1 %398, i1 false
  br i1 %or.cond55, label %.thread1890, label %405

405:                                              ; preds = %402
  %or.cond57 = select i1 %400, i1 %404, i1 false
  %or.cond59 = select i1 %or.cond57, i1 %397, i1 false
  %or.cond61 = select i1 %or.cond59, i1 %398, i1 false
  br i1 %or.cond61, label %.thread1889, label %406

406:                                              ; preds = %405
  %or.cond63 = select i1 %403, i1 %401, i1 false
  %or.cond65 = select i1 %or.cond63, i1 %397, i1 false
  %or.cond67 = select i1 %or.cond65, i1 %398, i1 false
  %or.cond73 = select i1 %or.cond47, i1 %393, i1 false
  %or.cond = select i1 %or.cond67, i1 true, i1 %or.cond73
  %or.cond79 = select i1 %or.cond53, i1 %393, i1 false
  %or.cond1821 = select i1 %or.cond, i1 true, i1 %or.cond79
  br i1 %or.cond1821, label %457, label %407

407:                                              ; preds = %406
  %408 = icmp eq i32 %.01667, 2
  %or.cond85 = select i1 %or.cond53, i1 %408, i1 false
  %or.cond91 = select i1 %or.cond59, i1 %393, i1 false
  %or.cond1822 = select i1 %or.cond85, i1 true, i1 %or.cond91
  %or.cond97 = select i1 %or.cond65, i1 %393, i1 false
  %or.cond1823 = select i1 %or.cond1822, i1 true, i1 %or.cond97
  br i1 %or.cond1823, label %457, label %409

409:                                              ; preds = %407
  %410 = icmp eq i32 %.01664, 2
  %or.cond99 = select i1 %403, i1 %410, i1 false
  %or.cond101 = select i1 %or.cond99, i1 %392, i1 false
  %411 = add i32 %.01667, -1
  %412 = icmp ult i32 %411, 2
  %or.cond1824 = select i1 %or.cond101, i1 %412, i1 false
  br i1 %or.cond1824, label %.thread1890, label %413

413:                                              ; preds = %409
  %or.cond111 = select i1 %403, i1 %391, i1 false
  %or.cond113 = select i1 %or.cond111, i1 %392, i1 false
  %or.cond115 = select i1 %or.cond113, i1 %393, i1 false
  br i1 %or.cond115, label %.thread1890, label %414

414:                                              ; preds = %413
  %415 = icmp eq i32 %.10, 4
  %or.cond117 = select i1 %415, i1 %410, i1 false
  %or.cond119 = select i1 %or.cond117, i1 %392, i1 false
  %or.cond1825 = select i1 %or.cond119, i1 %412, i1 false
  br i1 %or.cond1825, label %.thread1890, label %416

416:                                              ; preds = %414
  %417 = icmp eq i32 %.10, 5
  %or.cond129 = select i1 %417, i1 %410, i1 false
  %or.cond131 = select i1 %or.cond129, i1 %392, i1 false
  %or.cond1826 = select i1 %or.cond131, i1 %412, i1 false
  br i1 %or.cond1826, label %.thread1890, label %418

418:                                              ; preds = %416
  %or.cond141 = select i1 %400, i1 %410, i1 false
  %or.cond143 = select i1 %or.cond141, i1 %392, i1 false
  %or.cond1827 = select i1 %or.cond143, i1 %412, i1 false
  br i1 %or.cond1827, label %.thread1889, label %419

419:                                              ; preds = %418
  %420 = icmp eq i32 %.01664, 3
  %or.cond153 = select i1 %415, i1 %420, i1 false
  %421 = icmp eq i32 %.01666, 3
  %or.cond155 = select i1 %or.cond153, i1 %421, i1 false
  %422 = icmp eq i32 %.01667, 3
  %or.cond157 = select i1 %or.cond155, i1 %422, i1 false
  br i1 %or.cond157, label %.thread1890, label %423

423:                                              ; preds = %419
  %or.cond161 = select i1 %or.cond153, i1 %392, i1 false
  %or.cond163 = select i1 %or.cond161, i1 %422, i1 false
  br i1 %or.cond163, label %.thread1890, label %424

424:                                              ; preds = %423
  %425 = icmp eq i32 %.01666, 14
  %or.cond167 = select i1 %or.cond153, i1 %425, i1 false
  %or.cond169 = select i1 %or.cond167, i1 %422, i1 false
  %or.cond175 = select i1 %or.cond155, i1 %393, i1 false
  %or.cond1828 = select i1 %or.cond169, i1 true, i1 %or.cond175
  %or.cond181 = select i1 %or.cond161, i1 %393, i1 false
  %or.cond1829 = select i1 %or.cond1828, i1 true, i1 %or.cond181
  %or.cond187 = select i1 %or.cond167, i1 %393, i1 false
  %or.cond1830 = select i1 %or.cond1829, i1 true, i1 %or.cond187
  br i1 %or.cond1830, label %457, label %426

426:                                              ; preds = %424
  %or.cond189 = select i1 %403, i1 %420, i1 false
  %or.cond191 = select i1 %or.cond189, i1 %421, i1 false
  %or.cond193 = select i1 %or.cond191, i1 %422, i1 false
  br i1 %or.cond193, label %.thread1890, label %427

427:                                              ; preds = %426
  %or.cond197 = select i1 %or.cond189, i1 %392, i1 false
  %or.cond199 = select i1 %or.cond197, i1 %422, i1 false
  br i1 %or.cond199, label %.thread1890, label %428

428:                                              ; preds = %427
  %or.cond203 = select i1 %or.cond189, i1 %425, i1 false
  %or.cond205 = select i1 %or.cond203, i1 %422, i1 false
  %or.cond211 = select i1 %or.cond191, i1 %393, i1 false
  %or.cond1831 = select i1 %or.cond205, i1 true, i1 %or.cond211
  %or.cond217 = select i1 %or.cond197, i1 %393, i1 false
  %or.cond1832 = select i1 %or.cond1831, i1 true, i1 %or.cond217
  %or.cond223 = select i1 %or.cond203, i1 %393, i1 false
  %or.cond1833 = select i1 %or.cond1832, i1 true, i1 %or.cond223
  br i1 %or.cond1833, label %457, label %429

429:                                              ; preds = %428
  %or.cond225 = select i1 %400, i1 %420, i1 false
  %or.cond227 = select i1 %or.cond225, i1 %421, i1 false
  %or.cond229 = select i1 %or.cond227, i1 %422, i1 false
  br i1 %or.cond229, label %.thread1889, label %430

430:                                              ; preds = %429
  %or.cond233 = select i1 %or.cond225, i1 %392, i1 false
  %or.cond235 = select i1 %or.cond233, i1 %422, i1 false
  br i1 %or.cond235, label %.thread1889, label %431

431:                                              ; preds = %430
  %or.cond239 = select i1 %or.cond225, i1 %425, i1 false
  %or.cond241 = select i1 %or.cond239, i1 %422, i1 false
  %or.cond247 = select i1 %or.cond227, i1 %393, i1 false
  %or.cond1834 = select i1 %or.cond241, i1 true, i1 %or.cond247
  %or.cond253 = select i1 %or.cond233, i1 %393, i1 false
  %or.cond1835 = select i1 %or.cond1834, i1 true, i1 %or.cond253
  %or.cond259 = select i1 %or.cond239, i1 %393, i1 false
  %or.cond1836 = select i1 %or.cond1835, i1 true, i1 %or.cond259
  br i1 %or.cond1836, label %457, label %432

432:                                              ; preds = %431
  %433 = icmp eq i32 %.10, 3
  %or.cond261 = select i1 %433, i1 %420, i1 false
  %or.cond263 = select i1 %or.cond261, i1 %421, i1 false
  %or.cond265 = select i1 %or.cond263, i1 %422, i1 false
  br i1 %or.cond265, label %.thread1890, label %434

434:                                              ; preds = %432
  %or.cond269 = select i1 %or.cond261, i1 %392, i1 false
  %or.cond271 = select i1 %or.cond269, i1 %422, i1 false
  br i1 %or.cond271, label %.thread1890, label %435

435:                                              ; preds = %434
  %or.cond275 = select i1 %or.cond261, i1 %425, i1 false
  %or.cond277 = select i1 %or.cond275, i1 %422, i1 false
  %or.cond283 = select i1 %or.cond263, i1 %393, i1 false
  %or.cond1837 = select i1 %or.cond277, i1 true, i1 %or.cond283
  %or.cond295 = select i1 %or.cond269, i1 %393, i1 false
  %or.cond1838 = select i1 %or.cond1837, i1 true, i1 %or.cond295
  %or.cond301 = select i1 %or.cond275, i1 %393, i1 false
  %or.cond1839 = select i1 %or.cond1838, i1 true, i1 %or.cond301
  br i1 %or.cond1839, label %457, label %436

436:                                              ; preds = %435
  %437 = icmp eq i32 %.10, 2
  %or.cond303 = select i1 %437, i1 %410, i1 false
  %or.cond305 = select i1 %or.cond303, i1 %392, i1 false
  %or.cond1840 = select i1 %or.cond305, i1 %412, i1 false
  br i1 %or.cond1840, label %.thread1890, label %438

438:                                              ; preds = %436
  %439 = icmp eq i32 %.01664, 4
  %or.cond315 = select i1 %415, i1 %439, i1 false
  %or.cond317 = select i1 %or.cond315, i1 %392, i1 false
  %440 = icmp eq i32 %.01667, 4
  %441 = or i1 %393, %440
  %or.cond1841 = select i1 %or.cond317, i1 %441, i1 false
  br i1 %or.cond1841, label %.thread1890, label %442

442:                                              ; preds = %438
  %443 = icmp eq i32 %.01664, 5
  %or.cond327 = select i1 %417, i1 %443, i1 false
  %or.cond329 = select i1 %or.cond327, i1 %392, i1 false
  %444 = icmp eq i32 %.01667, 5
  %445 = or i1 %393, %444
  %or.cond1842 = select i1 %or.cond329, i1 %445, i1 false
  br i1 %or.cond1842, label %.thread1890, label %446

446:                                              ; preds = %442
  %447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %448 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %447, ptr noundef nonnull @.str.25, ptr noundef %.01656, ptr noundef %.01657, ptr noundef %.01658, ptr noundef %.01659) #15
  tail call void @exit(i32 noundef 1) #16
  unreachable

.thread1890:                                      ; preds = %384, %389, %394, %402, %409, %413, %414, %416, %419, %423, %426, %427, %432, %434, %436, %438, %442
  %449 = getelementptr inbounds i8, ptr %9, i64 84
  store i32 0, ptr %449, align 4, !tbaa !23
  %450 = getelementptr inbounds i8, ptr %9, i64 88
  store i32 0, ptr %450, align 8, !tbaa !24
  %451 = getelementptr inbounds i8, ptr %9, i64 92
  store i32 0, ptr %451, align 4, !tbaa !25
  %452 = getelementptr inbounds i8, ptr %9, i64 124
  store float 0.000000e+00, ptr %452, align 4, !tbaa !26
  br label %471

.thread1889:                                      ; preds = %430, %429, %418, %405, %399
  %453 = getelementptr inbounds i8, ptr %9, i64 84
  %454 = getelementptr inbounds i8, ptr %9, i64 88
  store i32 0, ptr %454, align 8, !tbaa !24
  %455 = getelementptr inbounds i8, ptr %9, i64 92
  store i32 0, ptr %455, align 4, !tbaa !25
  %456 = getelementptr inbounds i8, ptr %9, i64 124
  store float 0.000000e+00, ptr %456, align 4, !tbaa !26
  br label %462

457:                                              ; preds = %435, %431, %428, %424, %407, %406
  %458 = getelementptr inbounds i8, ptr %9, i64 84
  store i32 0, ptr %458, align 4, !tbaa !23
  %459 = getelementptr inbounds i8, ptr %9, i64 88
  store i32 0, ptr %459, align 8, !tbaa !24
  %460 = getelementptr inbounds i8, ptr %9, i64 92
  store i32 0, ptr %460, align 4, !tbaa !25
  %461 = getelementptr inbounds i8, ptr %9, i64 124
  store float 0.000000e+00, ptr %461, align 4, !tbaa !26
  br i1 %400, label %462, label %466

462:                                              ; preds = %.thread1889, %457
  %463 = phi ptr [ %456, %.thread1889 ], [ %461, %457 ]
  %464 = phi ptr [ %454, %.thread1889 ], [ %459, %457 ]
  %465 = phi ptr [ %453, %.thread1889 ], [ %458, %457 ]
  store i32 1, ptr %465, align 4, !tbaa !23
  br label %466

466:                                              ; preds = %462, %457
  %467 = phi ptr [ %463, %462 ], [ %461, %457 ]
  %468 = phi ptr [ %464, %462 ], [ %459, %457 ]
  %469 = phi ptr [ %465, %462 ], [ %458, %457 ]
  %.11 = phi i32 [ 12, %462 ], [ %.10, %457 ]
  br i1 %401, label %470, label %471

470:                                              ; preds = %466
  store i32 1, ptr %468, align 8, !tbaa !24
  br label %471

471:                                              ; preds = %.thread1890, %470, %466
  %.111892 = phi i32 [ %.11, %470 ], [ %.11, %466 ], [ %.10, %.thread1890 ]
  %472 = phi ptr [ %469, %470 ], [ %469, %466 ], [ %449, %.thread1890 ]
  %473 = phi ptr [ %468, %470 ], [ %468, %466 ], [ %450, %.thread1890 ]
  %474 = phi ptr [ %467, %470 ], [ %467, %466 ], [ %452, %.thread1890 ]
  %.11665 = phi i32 [ 12, %470 ], [ %.01664, %466 ], [ %.01664, %.thread1890 ]
  %475 = icmp eq i32 %.111892, 12
  %476 = icmp eq i32 %.01667, 1
  %or.cond347 = select i1 %475, i1 %476, i1 false
  br i1 %or.cond347, label %477, label %478

477:                                              ; preds = %471
  store float 1.000000e+00, ptr %474, align 4, !tbaa !26
  br label %478

478:                                              ; preds = %471, %477
  store i32 %.111892, ptr %9, align 8, !tbaa !27
  %479 = getelementptr inbounds i8, ptr %9, i64 4
  store i32 %.11665, ptr %479, align 4, !tbaa !28
  %480 = getelementptr inbounds i8, ptr %9, i64 12
  store i32 %.01666, ptr %480, align 4, !tbaa !29
  %481 = getelementptr inbounds i8, ptr %9, i64 8
  store i32 %.01667, ptr %481, align 8, !tbaa !30
  %482 = getelementptr inbounds i8, ptr %9, i64 48
  store double 1.000000e+00, ptr %482, align 8, !tbaa !31
  %483 = getelementptr inbounds i8, ptr %9, i64 56
  store double %.11679, ptr %483, align 8, !tbaa !32
  %484 = getelementptr inbounds i8, ptr %9, i64 64
  store i32 %.01672, ptr %484, align 8, !tbaa !33
  %485 = getelementptr inbounds i8, ptr %9, i64 68
  store i32 %.01673, ptr %485, align 4, !tbaa !34
  %486 = getelementptr inbounds i8, ptr %9, i64 72
  store i32 %.01674, ptr %486, align 8, !tbaa !35
  %487 = getelementptr inbounds i8, ptr %9, i64 76
  store i32 %.01675, ptr %487, align 4, !tbaa !36
  %488 = getelementptr inbounds i8, ptr %9, i64 80
  store i32 %.01676, ptr %488, align 8, !tbaa !37
  %489 = getelementptr inbounds i8, ptr %9, i64 96
  store i32 %.01668, ptr %489, align 8, !tbaa !38
  %490 = getelementptr inbounds i8, ptr %9, i64 100
  store i32 %.01671, ptr %490, align 4, !tbaa !39
  %491 = getelementptr inbounds i8, ptr %9, i64 104
  store i32 %.11739, ptr %491, align 8, !tbaa !40
  %492 = getelementptr inbounds i8, ptr %9, i64 108
  store i32 %.21689, ptr %492, align 4, !tbaa !41
  %493 = getelementptr inbounds i8, ptr %9, i64 112
  store i32 %367, ptr %493, align 8, !tbaa !42
  %494 = getelementptr inbounds i8, ptr %9, i64 116
  store i32 %368, ptr %494, align 4, !tbaa !43
  %495 = getelementptr inbounds i8, ptr %9, i64 120
  store i32 %.31726, ptr %495, align 8, !tbaa !44
  %496 = getelementptr inbounds i8, ptr %9, i64 184
  store i32 0, ptr %496, align 8, !tbaa !45
  %497 = getelementptr inbounds i8, ptr %9, i64 188
  store i32 0, ptr %497, align 4, !tbaa !46
  %498 = add nsw i32 %.01667, -6
  %or.cond356 = icmp ult i32 %498, -4
  %or.cond460 = select i1 %or.cond356, i1 %380, i1 false
  br i1 %or.cond460, label %499, label %502

499:                                              ; preds = %478
  %500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %501 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %500, ptr noundef nonnull @.str.26) #15
  tail call void @exit(i32 noundef 1) #16
  unreachable

502:                                              ; preds = %478
  br i1 %or.cond5, label %503, label %505

503:                                              ; preds = %502
  %504 = tail call noalias ptr @fopen(ptr noundef %.01706, ptr noundef nonnull @.str.27)
  br label %517

505:                                              ; preds = %502
  %506 = icmp eq i32 %.01673, 0
  %507 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28)
  %508 = load i32, ptr %6, align 4, !tbaa !5
  %509 = load i32, ptr %8, align 4, !tbaa !5
  %510 = load i32, ptr %7, align 4, !tbaa !5
  br i1 %506, label %511, label %514

511:                                              ; preds = %505
  %512 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.29, i32 noundef %508, i32 noundef %509, i32 noundef %509, i32 noundef %510, i32 noundef %508, i32 noundef %510, ptr noundef %.01656, ptr noundef %.01657, ptr noundef %.01658, ptr noundef %.01659, i32 noundef %367)
  %513 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28)
  br label %517

514:                                              ; preds = %505
  %515 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30, i32 noundef %508, i32 noundef %509, i32 noundef %509, i32 noundef %510, i32 noundef %508, i32 noundef %510, ptr noundef %.01656, ptr noundef %.01657, ptr noundef %.01658, ptr noundef %.01659, i32 noundef %367)
  %516 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28)
  br label %517

517:                                              ; preds = %511, %514, %503
  %.01707 = phi ptr [ %504, %503 ], [ null, %511 ], [ null, %514 ]
  %518 = getelementptr inbounds i8, ptr %9, i64 16
  %519 = getelementptr inbounds i8, ptr %9, i64 20
  %520 = getelementptr inbounds i8, ptr %9, i64 24
  %521 = getelementptr inbounds i8, ptr %9, i64 28
  %522 = getelementptr inbounds i8, ptr %9, i64 32
  %523 = getelementptr inbounds i8, ptr %9, i64 36
  %524 = zext nneg i32 %367 to i64
  %525 = icmp eq i32 %.11665, 3
  %or.cond358 = select i1 %475, i1 %525, i1 false
  %526 = getelementptr inbounds i8, ptr %9, i64 128
  %527 = getelementptr inbounds i8, ptr %9, i64 176
  %528 = getelementptr inbounds i8, ptr %9, i64 136
  %529 = getelementptr inbounds i8, ptr %9, i64 144
  %530 = getelementptr inbounds i8, ptr %9, i64 152
  %531 = getelementptr inbounds i8, ptr %9, i64 160
  %532 = getelementptr inbounds i8, ptr %9, i64 168
  %533 = icmp eq i32 %.11665, 2
  %or.cond372 = select i1 %475, i1 %533, i1 false
  %534 = add nsw i32 %.01667, -1
  %or.cond374 = icmp ult i32 %534, 2
  %or.cond1849 = select i1 %or.cond372, i1 %or.cond374, i1 false
  %535 = getelementptr inbounds i8, ptr %9, i64 44
  %536 = getelementptr inbounds i8, ptr %9, i64 40
  %537 = getelementptr inbounds i8, ptr %11, i64 8
  %538 = fcmp oeq double %.11679, 0.000000e+00
  %539 = shl nuw nsw i64 %524, 1
  %540 = shl nuw nsw i64 %524, 2
  %541 = icmp ne i32 %.21689, 4
  %542 = sitofp i32 %.01727 to double
  %543 = uitofp nneg i32 %367 to double
  %544 = icmp eq i32 %.01712, 1
  %switch = icmp eq i32 %.11739, 0
  %.str.10..str.11 = select i1 %switch, ptr @.str.10, ptr @.str.11
  %545 = sext i32 %.21689 to i64
  %switch.gep2266 = getelementptr inbounds [5 x ptr], ptr @switch.table.main.6, i64 0, i64 %545
  br label %.critedge

.critedge:                                        ; preds = %.critedge.backedge, %517
  %.01744 = phi i32 [ 0, %517 ], [ %.21746, %.critedge.backedge ]
  %.01740 = phi i32 [ 0, %517 ], [ 1, %.critedge.backedge ]
  %.01713 = phi double [ 0.000000e+00, %517 ], [ %.11714, %.critedge.backedge ]
  %.01691 = phi double [ 0.000000e+00, %517 ], [ %.71698, %.critedge.backedge ]
  %546 = icmp eq i32 %.01744, 0
  %or.cond462 = and i1 %or.cond5, %546
  br i1 %or.cond462, label %547, label %553

547:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %10) #13
  %548 = call ptr @fgets(ptr noundef nonnull %10, i32 noundef 512, ptr noundef %.01707)
  %.not1803 = icmp eq ptr %548, null
  br i1 %.not1803, label %.critedge446.thread, label %549

549:                                              ; preds = %547
  %550 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %10, ptr noundef nonnull @.str.31, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5) #13
  %.not = icmp eq i32 %550, 6
  br i1 %.not, label %552, label %551

551:                                              ; preds = %549
  call void @exit(i32 noundef 1) #16
  unreachable

552:                                              ; preds = %549
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %10) #13
  br label %553

553:                                              ; preds = %552, %.critedge
  %.21742 = phi i32 [ 1, %552 ], [ %.01740, %.critedge ]
  %554 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %554, ptr %518, align 8, !tbaa !47
  %555 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %555, ptr %519, align 4, !tbaa !48
  %556 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %556, ptr %520, align 8, !tbaa !49
  %557 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %557, ptr %521, align 4, !tbaa !50
  %558 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %558, ptr %522, align 8, !tbaa !51
  %559 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %559, ptr %523, align 4, !tbaa !52
  call void @libxsmm_rng_set_seed(i32 noundef 555) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, i8 0, i64 16, i1 false)
  %560 = load i32, ptr %484, align 8, !tbaa !33
  %561 = icmp eq i32 %560, 0
  %562 = load i32, ptr %3, align 4, !tbaa !5
  %563 = sext i32 %562 to i64
  %564 = load i32, ptr %9, align 8
  br i1 %561, label %565, label %570

565:                                              ; preds = %553
  %566 = load i32, ptr %8, align 4, !tbaa !5
  switch i32 %564, label %567 [
    i32 0, label %575
    i32 1, label %.fold.split
  ]

567:                                              ; preds = %565
  %568 = and i32 %564, -2
  switch i32 %568, label %569 [
    i32 2, label %575
    i32 4, label %.fold.split1920
    i32 6, label %.fold.split1921
    i32 8, label %.fold.split1922
    i32 10, label %575
    i32 12, label %.fold.split1923
  ]

569:                                              ; preds = %567
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, i32 noundef 3244, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split:                                      ; preds = %565
  br label %575

.fold.split1920:                                  ; preds = %567
  br label %575

.fold.split1921:                                  ; preds = %567
  br label %575

.fold.split1922:                                  ; preds = %567
  br label %575

.fold.split1923:                                  ; preds = %567
  br label %575

570:                                              ; preds = %553
  %571 = load i32, ptr %6, align 4, !tbaa !5
  switch i32 %564, label %572 [
    i32 0, label %575
    i32 1, label %.fold.split1843
  ]

572:                                              ; preds = %570
  %573 = and i32 %564, -2
  switch i32 %573, label %574 [
    i32 2, label %575
    i32 4, label %.fold.split1924
    i32 6, label %.fold.split1925
    i32 8, label %.fold.split1926
    i32 10, label %575
    i32 12, label %.fold.split1927
  ]

574:                                              ; preds = %572
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, i32 noundef 3246, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1843:                                  ; preds = %570
  br label %575

.fold.split1924:                                  ; preds = %572
  br label %575

.fold.split1925:                                  ; preds = %572
  br label %575

.fold.split1926:                                  ; preds = %572
  br label %575

.fold.split1927:                                  ; preds = %572
  br label %575

575:                                              ; preds = %.fold.split1843, %570, %.fold.split1924, %.fold.split1925, %.fold.split1926, %.fold.split1927, %572, %572, %.fold.split, %565, %.fold.split1920, %.fold.split1921, %.fold.split1922, %.fold.split1923, %567, %567
  %.sink2191.in = phi i32 [ %566, %567 ], [ %566, %567 ], [ %566, %.fold.split1923 ], [ %566, %.fold.split1922 ], [ %566, %.fold.split1921 ], [ %566, %.fold.split1920 ], [ %566, %565 ], [ %566, %.fold.split ], [ %571, %572 ], [ %571, %572 ], [ %571, %.fold.split1927 ], [ %571, %.fold.split1926 ], [ %571, %.fold.split1925 ], [ %571, %.fold.split1924 ], [ %571, %570 ], [ %571, %.fold.split1843 ]
  %.sink2189 = phi i64 [ 2, %567 ], [ 2, %567 ], [ 1, %.fold.split1923 ], [ 4, %.fold.split1922 ], [ 8, %.fold.split1921 ], [ 1, %.fold.split1920 ], [ 8, %565 ], [ 4, %.fold.split ], [ 2, %572 ], [ 2, %572 ], [ 1, %.fold.split1927 ], [ 4, %.fold.split1926 ], [ 8, %.fold.split1925 ], [ 1, %.fold.split1924 ], [ 8, %570 ], [ 4, %.fold.split1843 ]
  %.sink2191 = sext i32 %.sink2191.in to i64
  %576 = mul nsw i64 %563, %524
  %577 = mul i64 %576, %.sink2191
  %578 = mul i64 %577, %.sink2189
  %579 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %578, i64 noundef 64) #13
  %580 = load i32, ptr %485, align 4, !tbaa !34
  %581 = icmp eq i32 %580, 0
  %582 = load i32, ptr %4, align 4, !tbaa !5
  %583 = sext i32 %582 to i64
  %584 = load i32, ptr %479, align 4
  br i1 %581, label %585, label %590

585:                                              ; preds = %575
  %586 = load i32, ptr %7, align 4, !tbaa !5
  switch i32 %584, label %587 [
    i32 0, label %595
    i32 1, label %.fold.split1844
  ]

587:                                              ; preds = %585
  %588 = and i32 %584, -2
  switch i32 %588, label %589 [
    i32 2, label %595
    i32 4, label %.fold.split1928
    i32 6, label %.fold.split1929
    i32 8, label %.fold.split1930
    i32 10, label %595
    i32 12, label %.fold.split1931
  ]

589:                                              ; preds = %587
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, i32 noundef 3249, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1844:                                  ; preds = %585
  br label %595

.fold.split1928:                                  ; preds = %587
  br label %595

.fold.split1929:                                  ; preds = %587
  br label %595

.fold.split1930:                                  ; preds = %587
  br label %595

.fold.split1931:                                  ; preds = %587
  br label %595

590:                                              ; preds = %575
  %591 = load i32, ptr %8, align 4, !tbaa !5
  switch i32 %584, label %592 [
    i32 0, label %595
    i32 1, label %.fold.split1845
  ]

592:                                              ; preds = %590
  %593 = and i32 %584, -2
  switch i32 %593, label %594 [
    i32 2, label %595
    i32 4, label %.fold.split1932
    i32 6, label %.fold.split1933
    i32 8, label %.fold.split1934
    i32 10, label %595
    i32 12, label %.fold.split1935
  ]

594:                                              ; preds = %592
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, i32 noundef 3251, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1845:                                  ; preds = %590
  br label %595

.fold.split1932:                                  ; preds = %592
  br label %595

.fold.split1933:                                  ; preds = %592
  br label %595

.fold.split1934:                                  ; preds = %592
  br label %595

.fold.split1935:                                  ; preds = %592
  br label %595

595:                                              ; preds = %.fold.split1845, %590, %.fold.split1932, %.fold.split1933, %.fold.split1934, %.fold.split1935, %592, %592, %.fold.split1844, %585, %.fold.split1928, %.fold.split1929, %.fold.split1930, %.fold.split1931, %587, %587
  %.sink2196.in = phi i32 [ %586, %587 ], [ %586, %587 ], [ %586, %.fold.split1931 ], [ %586, %.fold.split1930 ], [ %586, %.fold.split1929 ], [ %586, %.fold.split1928 ], [ %586, %585 ], [ %586, %.fold.split1844 ], [ %591, %592 ], [ %591, %592 ], [ %591, %.fold.split1935 ], [ %591, %.fold.split1934 ], [ %591, %.fold.split1933 ], [ %591, %.fold.split1932 ], [ %591, %590 ], [ %591, %.fold.split1845 ]
  %.sink2194 = phi i64 [ 2, %587 ], [ 2, %587 ], [ 1, %.fold.split1931 ], [ 4, %.fold.split1930 ], [ 8, %.fold.split1929 ], [ 1, %.fold.split1928 ], [ 8, %585 ], [ 4, %.fold.split1844 ], [ 2, %592 ], [ 2, %592 ], [ 1, %.fold.split1935 ], [ 4, %.fold.split1934 ], [ 8, %.fold.split1933 ], [ 1, %.fold.split1932 ], [ 8, %590 ], [ 4, %.fold.split1845 ]
  %.sink2196 = sext i32 %.sink2196.in to i64
  %596 = mul nsw i64 %583, %524
  %597 = mul i64 %596, %.sink2196
  %598 = mul i64 %597, %.sink2194
  %599 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %598, i64 noundef 64) #13
  %600 = load i32, ptr %5, align 4, !tbaa !5
  %601 = sext i32 %600 to i64
  %602 = load i32, ptr %7, align 4, !tbaa !5
  %603 = sext i32 %602 to i64
  %604 = mul nsw i64 %603, %601
  %605 = load i32, ptr %481, align 8
  switch i32 %605, label %606 [
    i32 0, label %611
    i32 1, label %.fold.split1846
  ]

606:                                              ; preds = %595
  %607 = and i32 %605, -2
  %switch.tableidx = add i32 %607, -2
  %608 = icmp ult i32 %switch.tableidx, 11
  br i1 %608, label %switch.hole_check, label %609

609:                                              ; preds = %switch.hole_check, %606
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, i32 noundef 3253, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1846:                                  ; preds = %595
  br label %611

switch.hole_check:                                ; preds = %606
  %switch.maskindex = trunc nuw i32 %switch.tableidx to i16
  %switch.shifted = lshr i16 1365, %switch.maskindex
  %switch.lobit = trunc i16 %switch.shifted to i1
  br i1 %switch.lobit, label %switch.lookup, label %609

switch.lookup:                                    ; preds = %switch.hole_check
  %610 = zext nneg i32 %switch.tableidx to i64
  %switch.gep = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %610
  %switch.load = load i64, ptr %switch.gep, align 8
  br label %611

611:                                              ; preds = %switch.lookup, %595, %.fold.split1846
  %612 = phi i64 [ 8, %595 ], [ 4, %.fold.split1846 ], [ %switch.load, %switch.lookup ]
  %613 = mul i64 %604, %612
  %614 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %613, i64 noundef 64) #13
  %615 = load i32, ptr %5, align 4, !tbaa !5
  %616 = sext i32 %615 to i64
  %617 = load i32, ptr %7, align 4, !tbaa !5
  %618 = sext i32 %617 to i64
  %619 = mul nsw i64 %618, %616
  %620 = load i32, ptr %481, align 8
  switch i32 %620, label %621 [
    i32 0, label %626
    i32 1, label %.fold.split1847
  ]

621:                                              ; preds = %611
  %622 = and i32 %620, -2
  %switch.tableidx2219 = add i32 %622, -2
  %623 = icmp ult i32 %switch.tableidx2219, 11
  br i1 %623, label %switch.hole_check2220, label %624

624:                                              ; preds = %switch.hole_check2220, %621
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, i32 noundef 3254, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1847:                                  ; preds = %611
  br label %626

switch.hole_check2220:                            ; preds = %621
  %switch.maskindex2222 = trunc nuw i32 %switch.tableidx2219 to i16
  %switch.shifted2223 = lshr i16 1365, %switch.maskindex2222
  %switch.lobit2224 = trunc i16 %switch.shifted2223 to i1
  br i1 %switch.lobit2224, label %switch.lookup2221, label %624

switch.lookup2221:                                ; preds = %switch.hole_check2220
  %625 = zext nneg i32 %switch.tableidx2219 to i64
  %switch.gep2225 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %625
  %switch.load2226 = load i64, ptr %switch.gep2225, align 8
  br label %626

626:                                              ; preds = %switch.lookup2221, %611, %.fold.split1847
  %627 = phi i64 [ 8, %611 ], [ 4, %.fold.split1847 ], [ %switch.load2226, %switch.lookup2221 ]
  %628 = mul i64 %619, %627
  %629 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %628, i64 noundef 64) #13
  %630 = load i32, ptr %5, align 4, !tbaa !5
  %631 = sext i32 %630 to i64
  %632 = load i32, ptr %7, align 4, !tbaa !5
  %633 = sext i32 %632 to i64
  %634 = mul nsw i64 %633, %631
  %635 = load i32, ptr %481, align 8
  switch i32 %635, label %636 [
    i32 0, label %641
    i32 1, label %.fold.split1848
  ]

636:                                              ; preds = %626
  %637 = and i32 %635, -2
  %switch.tableidx2228 = add i32 %637, -2
  %638 = icmp ult i32 %switch.tableidx2228, 11
  br i1 %638, label %switch.hole_check2229, label %639

639:                                              ; preds = %switch.hole_check2229, %636
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, i32 noundef 3255, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1848:                                  ; preds = %626
  br label %641

switch.hole_check2229:                            ; preds = %636
  %switch.maskindex2231 = trunc nuw i32 %switch.tableidx2228 to i16
  %switch.shifted2232 = lshr i16 1365, %switch.maskindex2231
  %switch.lobit2233 = trunc i16 %switch.shifted2232 to i1
  br i1 %switch.lobit2233, label %switch.lookup2230, label %639

switch.lookup2230:                                ; preds = %switch.hole_check2229
  %640 = zext nneg i32 %switch.tableidx2228 to i64
  %switch.gep2234 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %640
  %switch.load2235 = load i64, ptr %switch.gep2234, align 8
  br label %641

641:                                              ; preds = %switch.lookup2230, %626, %.fold.split1848
  %642 = phi i64 [ 8, %626 ], [ 4, %.fold.split1848 ], [ %switch.load2235, %switch.lookup2230 ]
  %643 = mul i64 %634, %642
  %644 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %643, i64 noundef 64) #13
  br i1 %or.cond358, label %645, label %689

645:                                              ; preds = %641
  switch i32 %.01666, label %689 [
    i32 14, label %646
    i32 3, label %646
    i32 1, label %646
  ]

646:                                              ; preds = %645, %645, %645
  switch i32 %.01667, label %689 [
    i32 3, label %647
    i32 1, label %647
  ]

647:                                              ; preds = %646, %646
  %648 = load i32, ptr %518, align 8, !tbaa !47
  %649 = sext i32 %648 to i64
  %650 = shl nsw i64 %649, 2
  %651 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %650, i64 noundef 64) #13
  %652 = load i32, ptr %518, align 8, !tbaa !47
  %653 = sext i32 %652 to i64
  %654 = shl nsw i64 %653, 1
  %655 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %654, i64 noundef 64) #13
  %656 = load i32, ptr %518, align 8, !tbaa !47
  %657 = sext i32 %656 to i64
  %658 = shl nsw i64 %657, 2
  %659 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %658, i64 noundef 64) #13
  %660 = load i32, ptr %518, align 8, !tbaa !47
  %661 = sext i32 %660 to i64
  %662 = shl nsw i64 %661, 1
  %663 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %662, i64 noundef 64) #13
  %664 = load i32, ptr %518, align 8, !tbaa !47
  %665 = icmp sgt i32 %664, 0
  br i1 %665, label %.lr.ph, label %.._crit_edge_crit_edge

.._crit_edge_crit_edge:                           ; preds = %647
  %.pre2164 = sext i32 %664 to i64
  br label %._crit_edge

.lr.ph:                                           ; preds = %647, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %647 ]
  %666 = call double @get_random_posneg_p5_num()
  %667 = fptrunc double %666 to float
  %668 = fmul float %667, 0x3FB99999A0000000
  %669 = getelementptr inbounds float, ptr %651, i64 %indvars.iv
  store float %668, ptr %669, align 4, !tbaa !53
  %670 = call double @get_random_posneg_p5_num()
  %671 = fptrunc double %670 to float
  %672 = fmul float %671, 0x3FC99999A0000000
  %673 = getelementptr inbounds float, ptr %659, i64 %indvars.iv
  store float %672, ptr %673, align 4, !tbaa !53
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %674 = load i32, ptr %518, align 8, !tbaa !47
  %675 = sext i32 %674 to i64
  %676 = icmp slt i64 %indvars.iv.next, %675
  br i1 %676, label %.lr.ph, label %._crit_edge, !llvm.loop !54

._crit_edge:                                      ; preds = %.lr.ph, %.._crit_edge_crit_edge
  %.pre-phi = phi i64 [ %.pre2164, %.._crit_edge_crit_edge ], [ %675, %.lr.ph ]
  store ptr %651, ptr %526, align 8, !tbaa !56
  store ptr %655, ptr %527, align 8, !tbaa !57
  store ptr %659, ptr %528, align 8, !tbaa !58
  store ptr %663, ptr %529, align 8, !tbaa !59
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %651, ptr noundef %655, i64 noundef %.pre-phi) #13
  %677 = load ptr, ptr %527, align 8, !tbaa !57
  %678 = load ptr, ptr %526, align 8, !tbaa !56
  %679 = load i32, ptr %518, align 8, !tbaa !47
  %680 = sext i32 %679 to i64
  call void @libxsmm_convert_f16_f32(ptr noundef %677, ptr noundef %678, i64 noundef %680) #13
  %681 = load ptr, ptr %528, align 8, !tbaa !58
  %682 = load ptr, ptr %529, align 8, !tbaa !59
  %683 = load i32, ptr %518, align 8, !tbaa !47
  %684 = sext i32 %683 to i64
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %681, ptr noundef %682, i64 noundef %684) #13
  %685 = load ptr, ptr %529, align 8, !tbaa !59
  %686 = load ptr, ptr %528, align 8, !tbaa !58
  %687 = load i32, ptr %518, align 8, !tbaa !47
  %688 = sext i32 %687 to i64
  call void @libxsmm_convert_f16_f32(ptr noundef %685, ptr noundef %686, i64 noundef %688) #13
  br label %689

689:                                              ; preds = %646, %645, %._crit_edge, %641
  %690 = load i32, ptr %20, align 8, !tbaa !16
  %.not1804 = icmp eq i32 %690, 0
  br i1 %.not1804, label %707, label %691

691:                                              ; preds = %689
  %692 = load i32, ptr %3, align 4, !tbaa !5
  %693 = mul nsw i32 %692, %367
  %694 = sext i32 %693 to i64
  %695 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %694, i64 noundef 64) #13
  %696 = load i32, ptr %3, align 4, !tbaa !5
  %697 = mul nsw i32 %696, %367
  %698 = icmp sgt i32 %697, 0
  br i1 %698, label %.lr.ph2000, label %._crit_edge2001

.lr.ph2000:                                       ; preds = %691, %.lr.ph2000
  %indvars.iv2103 = phi i64 [ %indvars.iv.next2104, %.lr.ph2000 ], [ 0, %691 ]
  %699 = call double @get_random_pos_p5_num()
  %700 = fmul double %699, 2.000000e+01
  %701 = fptoui double %700 to i8
  %702 = getelementptr inbounds i8, ptr %695, i64 %indvars.iv2103
  store i8 %701, ptr %702, align 1, !tbaa !60
  %indvars.iv.next2104 = add nuw nsw i64 %indvars.iv2103, 1
  %703 = load i32, ptr %3, align 4, !tbaa !5
  %704 = mul nsw i32 %703, %367
  %705 = sext i32 %704 to i64
  %706 = icmp slt i64 %indvars.iv.next2104, %705
  br i1 %706, label %.lr.ph2000, label %._crit_edge2001, !llvm.loop !61

._crit_edge2001:                                  ; preds = %.lr.ph2000, %691
  store ptr %695, ptr %530, align 8, !tbaa !62
  br label %707

707:                                              ; preds = %._crit_edge2001, %689
  %708 = load i32, ptr %21, align 4, !tbaa !17
  %709 = icmp ne i32 %708, 0
  %710 = load i32, ptr %22, align 8
  %711 = icmp ne i32 %710, 0
  %or.cond367 = select i1 %709, i1 true, i1 %711
  %712 = load i32, ptr %23, align 4
  %713 = icmp ne i32 %712, 0
  %or.cond370 = select i1 %or.cond367, i1 true, i1 %713
  br i1 %or.cond370, label %714, label %740

714:                                              ; preds = %707
  %715 = load i32, ptr %3, align 4, !tbaa !5
  %716 = load i32, ptr %520, align 8, !tbaa !49
  %717 = sdiv i32 %716, 32
  %718 = mul i32 %715, %367
  %719 = mul i32 %718, %717
  %720 = zext i32 %719 to i64
  %721 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %720, i64 noundef 64) #13
  %.not2083 = icmp eq i32 %719, 0
  br i1 %.not2083, label %._crit_edge2005, label %.lr.ph2004

.lr.ph2004:                                       ; preds = %714, %.lr.ph2004
  %indvars.iv2106 = phi i64 [ %indvars.iv.next2107, %.lr.ph2004 ], [ 0, %714 ]
  %722 = call i32 @rand() #13
  %723 = srem i32 %722, 10
  %724 = trunc nsw i32 %723 to i8
  %725 = add i8 %724, 126
  %726 = getelementptr inbounds i8, ptr %721, i64 %indvars.iv2106
  store i8 %725, ptr %726, align 1, !tbaa !60
  %indvars.iv.next2107 = add nuw nsw i64 %indvars.iv2106, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next2107, %720
  br i1 %exitcond.not, label %._crit_edge2005, label %.lr.ph2004, !llvm.loop !63

._crit_edge2005:                                  ; preds = %.lr.ph2004, %714
  store ptr %721, ptr %531, align 8, !tbaa !64
  %727 = load i32, ptr %23, align 4, !tbaa !19
  %.not1805 = icmp eq i32 %727, 0
  br i1 %.not1805, label %740, label %728

728:                                              ; preds = %._crit_edge2005
  %729 = load i32, ptr %7, align 4, !tbaa !5
  %730 = load i32, ptr %4, align 4, !tbaa !5
  %731 = sdiv i32 %730, 32
  %732 = mul i32 %729, %367
  %733 = mul i32 %732, %731
  %734 = zext i32 %733 to i64
  %735 = shl nuw nsw i64 %734, 2
  %736 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %735, i64 noundef 64) #13
  %.not2084 = icmp eq i32 %733, 0
  br i1 %.not2084, label %._crit_edge2009, label %.lr.ph2008

.lr.ph2008:                                       ; preds = %728, %.lr.ph2008
  %indvars.iv2109 = phi i64 [ %indvars.iv.next2110, %.lr.ph2008 ], [ 0, %728 ]
  %737 = call double @get_random_posneg_p5_num()
  %738 = fptrunc double %737 to float
  %739 = getelementptr inbounds float, ptr %736, i64 %indvars.iv2109
  store float %738, ptr %739, align 4, !tbaa !53
  %indvars.iv.next2110 = add nuw nsw i64 %indvars.iv2109, 1
  %exitcond2113.not = icmp eq i64 %indvars.iv.next2110, %734
  br i1 %exitcond2113.not, label %._crit_edge2009, label %.lr.ph2008, !llvm.loop !65

._crit_edge2009:                                  ; preds = %.lr.ph2008, %728
  store ptr %736, ptr %532, align 8, !tbaa !66
  br label %740

740:                                              ; preds = %._crit_edge2005, %._crit_edge2009, %707
  br i1 %or.cond1849, label %741, label %755

741:                                              ; preds = %740
  %742 = load i32, ptr %518, align 8, !tbaa !47
  %743 = sext i32 %742 to i64
  %744 = shl nsw i64 %743, 2
  %745 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %744, i64 noundef 64) #13
  %746 = load i32, ptr %518, align 8, !tbaa !47
  %747 = icmp sgt i32 %746, 0
  br i1 %747, label %.lr.ph2012, label %._crit_edge2013

.lr.ph2012:                                       ; preds = %741, %.lr.ph2012
  %indvars.iv2114 = phi i64 [ %indvars.iv.next2115, %.lr.ph2012 ], [ 0, %741 ]
  %748 = call double @get_random_posneg_p5_num()
  %749 = fptrunc double %748 to float
  %750 = fmul float %749, 0x3FB99999A0000000
  %751 = getelementptr inbounds float, ptr %745, i64 %indvars.iv2114
  store float %750, ptr %751, align 4, !tbaa !53
  %indvars.iv.next2115 = add nuw nsw i64 %indvars.iv2114, 1
  %752 = load i32, ptr %518, align 8, !tbaa !47
  %753 = sext i32 %752 to i64
  %754 = icmp slt i64 %indvars.iv.next2115, %753
  br i1 %754, label %.lr.ph2012, label %._crit_edge2013, !llvm.loop !67

._crit_edge2013:                                  ; preds = %.lr.ph2012, %741
  store ptr %745, ptr %526, align 8, !tbaa !56
  br label %755

755:                                              ; preds = %._crit_edge2013, %740
  %756 = load i32, ptr %496, align 8, !tbaa !45
  %757 = icmp eq i32 %756, 1
  br i1 %757, label %758, label %773

758:                                              ; preds = %755
  %759 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %759, ptr %535, align 4, !tbaa !68
  %760 = sext i32 %759 to i64
  %761 = load i32, ptr %481, align 8
  switch i32 %761, label %762 [
    i32 0, label %767
    i32 1, label %.fold.split1850
  ]

762:                                              ; preds = %758
  %763 = and i32 %761, -2
  %switch.tableidx2237 = add i32 %763, -2
  %764 = icmp ult i32 %switch.tableidx2237, 11
  br i1 %764, label %switch.hole_check2238, label %765

765:                                              ; preds = %switch.hole_check2238, %762
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, i32 noundef 3317, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1850:                                  ; preds = %758
  br label %767

switch.hole_check2238:                            ; preds = %762
  %switch.maskindex2240 = trunc nuw i32 %switch.tableidx2237 to i16
  %switch.shifted2241 = lshr i16 1365, %switch.maskindex2240
  %switch.lobit2242 = trunc i16 %switch.shifted2241 to i1
  br i1 %switch.lobit2242, label %switch.lookup2239, label %765

switch.lookup2239:                                ; preds = %switch.hole_check2238
  %766 = zext nneg i32 %switch.tableidx2237 to i64
  %switch.gep2243 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %766
  %switch.load2244 = load i64, ptr %switch.gep2243, align 8
  br label %767

767:                                              ; preds = %switch.lookup2239, %758, %.fold.split1850
  %768 = phi i64 [ 8, %758 ], [ 4, %.fold.split1850 ], [ %switch.load2244, %switch.lookup2239 ]
  %769 = mul nsw i64 %768, %760
  %770 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %769, i64 noundef 64) #13
  %771 = load i32, ptr %481, align 8, !tbaa !30
  %772 = load i32, ptr %535, align 4, !tbaa !68
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %771, ptr noundef %770, i32 noundef 1, i32 noundef %772, i32 noundef 1, i32 noundef 0)
  store ptr %770, ptr %11, align 8, !tbaa !69
  br label %773

773:                                              ; preds = %767, %755
  %.01771 = phi ptr [ %770, %767 ], [ null, %755 ]
  %774 = load i32, ptr %497, align 4, !tbaa !46
  %775 = icmp eq i32 %774, 2
  br i1 %775, label %776, label %794

776:                                              ; preds = %773
  %777 = load i32, ptr %5, align 4, !tbaa !5
  %778 = add nsw i32 %777, 15
  %779 = sdiv i32 %778, 16
  %780 = shl nsw i32 %779, 1
  store i32 %780, ptr %536, align 8, !tbaa !71
  %781 = sext i32 %780 to i64
  %782 = load i32, ptr %7, align 4, !tbaa !5
  %783 = sext i32 %782 to i64
  %784 = mul nsw i64 %781, %783
  %785 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %784, i64 noundef 64) #13
  %786 = load i32, ptr %7, align 4, !tbaa !5
  %787 = sext i32 %786 to i64
  %788 = mul nsw i64 %787, %781
  %789 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %788, i64 noundef 64) #13
  %790 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef 12, ptr noundef %785, i32 noundef 1, i32 noundef %780, i32 noundef %790)
  %791 = load i32, ptr %7, align 4, !tbaa !5
  %792 = sext i32 %791 to i64
  %793 = mul nsw i64 %792, %781
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %789, ptr align 1 %785, i64 %793, i1 false)
  store ptr %785, ptr %537, align 8, !tbaa !72
  br label %794

794:                                              ; preds = %776, %773
  %.01774 = phi ptr [ %789, %776 ], [ null, %773 ]
  %.01772 = phi ptr [ %785, %776 ], [ null, %773 ]
  %795 = load i32, ptr %484, align 8, !tbaa !33
  %796 = icmp eq i32 %795, 0
  br i1 %796, label %797, label %900

797:                                              ; preds = %794
  br i1 %546, label %798, label %895

798:                                              ; preds = %797
  %799 = load i32, ptr %24, align 4, !tbaa !20
  %.not1807 = icmp eq i32 %799, 0
  br i1 %.not1807, label %827, label %800

800:                                              ; preds = %798
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #13
  %801 = load i32, ptr %3, align 4, !tbaa !5
  %802 = sext i32 %801 to i64
  %803 = load i32, ptr %8, align 4, !tbaa !5
  %804 = sext i32 %803 to i64
  %805 = mul nsw i64 %802, %524
  %806 = mul i64 %805, %804
  %807 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %806, i64 noundef 64) #13
  %808 = load i32, ptr %3, align 4, !tbaa !5
  %809 = load i32, ptr %8, align 4, !tbaa !5
  %810 = load i32, ptr %497, align 4, !tbaa !46
  %811 = icmp eq i32 %810, 2
  %812 = load i32, ptr %472, align 4
  %813 = select i1 %811, i32 1, i32 %812
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef 4, ptr noundef %807, i32 noundef %367, i32 noundef %808, i32 noundef %809, i32 noundef %813)
  %814 = load i32, ptr %3, align 4, !tbaa !5
  %815 = load i32, ptr %8, align 4, !tbaa !5
  %816 = mul i32 %814, %367
  %817 = mul i32 %816, %815
  %818 = icmp sgt i32 %817, 0
  br i1 %818, label %.lr.ph2016, label %._crit_edge2017

.lr.ph2016:                                       ; preds = %800, %.lr.ph2016
  %indvars.iv2117 = phi i64 [ %indvars.iv.next2118, %.lr.ph2016 ], [ 0, %800 ]
  %819 = getelementptr inbounds i8, ptr %807, i64 %indvars.iv2117
  call void @libxsmm_convert_bf8_f32(ptr noundef %819, ptr noundef nonnull %12, i64 noundef 1) #13
  %820 = getelementptr inbounds i16, ptr %579, i64 %indvars.iv2117
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %12, ptr noundef %820, i64 noundef 1) #13
  %indvars.iv.next2118 = add nuw nsw i64 %indvars.iv2117, 1
  %821 = load i32, ptr %3, align 4, !tbaa !5
  %822 = load i32, ptr %8, align 4, !tbaa !5
  %823 = mul i32 %821, %367
  %824 = mul i32 %823, %822
  %825 = sext i32 %824 to i64
  %826 = icmp slt i64 %indvars.iv.next2118, %825
  br i1 %826, label %.lr.ph2016, label %._crit_edge2017, !llvm.loop !73

._crit_edge2017:                                  ; preds = %.lr.ph2016, %800
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #13
  br label %916

827:                                              ; preds = %798
  %828 = load i32, ptr %25, align 8, !tbaa !21
  %.not1808 = icmp eq i32 %828, 0
  br i1 %.not1808, label %856, label %829

829:                                              ; preds = %827
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #13
  %830 = load i32, ptr %3, align 4, !tbaa !5
  %831 = sext i32 %830 to i64
  %832 = load i32, ptr %8, align 4, !tbaa !5
  %833 = sext i32 %832 to i64
  %834 = mul nsw i64 %831, %524
  %835 = mul i64 %834, %833
  %836 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %835, i64 noundef 64) #13
  %837 = load i32, ptr %3, align 4, !tbaa !5
  %838 = load i32, ptr %8, align 4, !tbaa !5
  %839 = load i32, ptr %497, align 4, !tbaa !46
  %840 = icmp eq i32 %839, 2
  %841 = load i32, ptr %472, align 4
  %842 = select i1 %840, i32 1, i32 %841
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef 4, ptr noundef %836, i32 noundef %367, i32 noundef %837, i32 noundef %838, i32 noundef %842)
  %843 = load i32, ptr %3, align 4, !tbaa !5
  %844 = load i32, ptr %8, align 4, !tbaa !5
  %845 = mul i32 %843, %367
  %846 = mul i32 %845, %844
  %847 = icmp sgt i32 %846, 0
  br i1 %847, label %.lr.ph2020, label %._crit_edge2021

.lr.ph2020:                                       ; preds = %829, %.lr.ph2020
  %indvars.iv2120 = phi i64 [ %indvars.iv.next2121, %.lr.ph2020 ], [ 0, %829 ]
  %848 = getelementptr inbounds i8, ptr %836, i64 %indvars.iv2120
  call void @libxsmm_convert_bf8_f32(ptr noundef %848, ptr noundef nonnull %13, i64 noundef 1) #13
  %849 = getelementptr inbounds i16, ptr %579, i64 %indvars.iv2120
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef nonnull %13, ptr noundef %849, i64 noundef 1) #13
  %indvars.iv.next2121 = add nuw nsw i64 %indvars.iv2120, 1
  %850 = load i32, ptr %3, align 4, !tbaa !5
  %851 = load i32, ptr %8, align 4, !tbaa !5
  %852 = mul i32 %850, %367
  %853 = mul i32 %852, %851
  %854 = sext i32 %853 to i64
  %855 = icmp slt i64 %indvars.iv.next2121, %854
  br i1 %855, label %.lr.ph2020, label %._crit_edge2021, !llvm.loop !74

._crit_edge2021:                                  ; preds = %.lr.ph2020, %829
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #13
  br label %916

856:                                              ; preds = %827
  %857 = load i32, ptr %26, align 4, !tbaa !22
  %.not1809 = icmp eq i32 %857, 0
  br i1 %.not1809, label %885, label %858

858:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #13
  %859 = load i32, ptr %3, align 4, !tbaa !5
  %860 = sext i32 %859 to i64
  %861 = load i32, ptr %8, align 4, !tbaa !5
  %862 = sext i32 %861 to i64
  %863 = mul nsw i64 %860, %524
  %864 = mul i64 %863, %862
  %865 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %864, i64 noundef 64) #13
  %866 = load i32, ptr %3, align 4, !tbaa !5
  %867 = load i32, ptr %8, align 4, !tbaa !5
  %868 = load i32, ptr %497, align 4, !tbaa !46
  %869 = icmp eq i32 %868, 2
  %870 = load i32, ptr %472, align 4
  %871 = select i1 %869, i32 1, i32 %870
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef 5, ptr noundef %865, i32 noundef %367, i32 noundef %866, i32 noundef %867, i32 noundef %871)
  %872 = load i32, ptr %3, align 4, !tbaa !5
  %873 = load i32, ptr %8, align 4, !tbaa !5
  %874 = mul i32 %872, %367
  %875 = mul i32 %874, %873
  %876 = icmp sgt i32 %875, 0
  br i1 %876, label %.lr.ph2024, label %._crit_edge2025

.lr.ph2024:                                       ; preds = %858, %.lr.ph2024
  %indvars.iv2123 = phi i64 [ %indvars.iv.next2124, %.lr.ph2024 ], [ 0, %858 ]
  %877 = getelementptr inbounds i8, ptr %865, i64 %indvars.iv2123
  call void @libxsmm_convert_hf8_f32(ptr noundef %877, ptr noundef nonnull %14, i64 noundef 1) #13
  %878 = getelementptr inbounds i16, ptr %579, i64 %indvars.iv2123
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %14, ptr noundef %878, i64 noundef 1) #13
  %indvars.iv.next2124 = add nuw nsw i64 %indvars.iv2123, 1
  %879 = load i32, ptr %3, align 4, !tbaa !5
  %880 = load i32, ptr %8, align 4, !tbaa !5
  %881 = mul i32 %879, %367
  %882 = mul i32 %881, %880
  %883 = sext i32 %882 to i64
  %884 = icmp slt i64 %indvars.iv.next2124, %883
  br i1 %884, label %.lr.ph2024, label %._crit_edge2025, !llvm.loop !75

._crit_edge2025:                                  ; preds = %.lr.ph2024, %858
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #13
  br label %916

885:                                              ; preds = %856
  %886 = load i32, ptr %9, align 8, !tbaa !27
  %887 = load i32, ptr %3, align 4, !tbaa !5
  %888 = load i32, ptr %8, align 4, !tbaa !5
  %889 = load i32, ptr %497, align 4, !tbaa !46
  %890 = icmp eq i32 %889, 2
  %891 = load i32, ptr %20, align 8
  %.not1810 = icmp eq i32 %891, 0
  %892 = load i32, ptr %472, align 4
  %893 = select i1 %.not1810, i32 %892, i32 1
  %894 = select i1 %890, i32 1, i32 %893
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %886, ptr noundef %579, i32 noundef %367, i32 noundef %887, i32 noundef %888, i32 noundef %894)
  br label %916

895:                                              ; preds = %797
  %896 = load i32, ptr %486, align 8, !tbaa !35
  %897 = load i32, ptr %9, align 8, !tbaa !27
  %898 = load i32, ptr %3, align 4, !tbaa !5
  %899 = load i32, ptr %8, align 4, !tbaa !5
  call void @init_identity_matrix(i32 noundef %896, i32 noundef %897, ptr noundef %579, i32 noundef %367, i32 noundef %898, i32 noundef %899)
  br label %916

900:                                              ; preds = %794
  br i1 %546, label %901, label %911

901:                                              ; preds = %900
  %902 = load i32, ptr %9, align 8, !tbaa !27
  %903 = load i32, ptr %3, align 4, !tbaa !5
  %904 = load i32, ptr %6, align 4, !tbaa !5
  %905 = load i32, ptr %497, align 4, !tbaa !46
  %906 = icmp eq i32 %905, 2
  %907 = load i32, ptr %20, align 8
  %.not1806 = icmp eq i32 %907, 0
  %908 = load i32, ptr %472, align 4
  %909 = select i1 %.not1806, i32 %908, i32 1
  %910 = select i1 %906, i32 1, i32 %909
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %902, ptr noundef %579, i32 noundef %367, i32 noundef %903, i32 noundef %904, i32 noundef %910)
  br label %916

911:                                              ; preds = %900
  %912 = load i32, ptr %486, align 8, !tbaa !35
  %913 = load i32, ptr %9, align 8, !tbaa !27
  %914 = load i32, ptr %3, align 4, !tbaa !5
  %915 = load i32, ptr %6, align 4, !tbaa !5
  call void @init_identity_matrix(i32 noundef %912, i32 noundef %913, ptr noundef %579, i32 noundef %367, i32 noundef %914, i32 noundef %915)
  br label %916

916:                                              ; preds = %901, %911, %895, %._crit_edge2021, %885, %._crit_edge2025, %._crit_edge2017
  %.01769 = phi ptr [ %807, %._crit_edge2017 ], [ %836, %._crit_edge2021 ], [ %865, %._crit_edge2025 ], [ null, %885 ], [ null, %895 ], [ null, %901 ], [ null, %911 ]
  %917 = load i32, ptr %485, align 4, !tbaa !34
  %918 = icmp eq i32 %917, 0
  %919 = load i32, ptr %479, align 4, !tbaa !28
  %920 = load i32, ptr %4, align 4, !tbaa !5
  %921 = load i32, ptr %497, align 4, !tbaa !46
  %922 = icmp eq i32 %921, 2
  %923 = load i32, ptr %473, align 8
  %924 = select i1 %922, i32 1, i32 %923
  br i1 %918, label %925, label %933

925:                                              ; preds = %916
  %926 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %919, ptr noundef %599, i32 noundef %367, i32 noundef %920, i32 noundef %926, i32 noundef %924)
  %927 = load i32, ptr %497, align 4, !tbaa !46
  %928 = icmp eq i32 %927, 2
  br i1 %928, label %929, label %941

929:                                              ; preds = %925
  %930 = load i32, ptr %479, align 4, !tbaa !28
  %931 = load i32, ptr %4, align 4, !tbaa !5
  %932 = load i32, ptr %7, align 4, !tbaa !5
  call void @negate_random_cols_rows(i32 noundef %930, ptr noundef %599, i32 noundef %367, i32 noundef %931, i32 noundef %932, i32 noundef 0)
  br label %941

933:                                              ; preds = %916
  %934 = load i32, ptr %8, align 4, !tbaa !5
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %919, ptr noundef %599, i32 noundef %367, i32 noundef %920, i32 noundef %934, i32 noundef %924)
  %935 = load i32, ptr %497, align 4, !tbaa !46
  %936 = icmp eq i32 %935, 2
  br i1 %936, label %937, label %941

937:                                              ; preds = %933
  %938 = load i32, ptr %479, align 4, !tbaa !28
  %939 = load i32, ptr %4, align 4, !tbaa !5
  %940 = load i32, ptr %8, align 4, !tbaa !5
  call void @negate_random_cols_rows(i32 noundef %938, ptr noundef %599, i32 noundef %367, i32 noundef %939, i32 noundef %940, i32 noundef 1)
  br label %941

941:                                              ; preds = %933, %937, %925, %929
  %942 = load i32, ptr %481, align 8, !tbaa !30
  %943 = load i32, ptr %5, align 4, !tbaa !5
  %944 = load i32, ptr %7, align 4, !tbaa !5
  br i1 %538, label %945, label %952

945:                                              ; preds = %941
  call void @init_garbage_matrix(i32 noundef %942, ptr noundef %614, i32 noundef 1, i32 noundef %943, i32 noundef %944)
  %946 = load i32, ptr %481, align 8, !tbaa !30
  %947 = load i32, ptr %5, align 4, !tbaa !5
  %948 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_garbage_matrix(i32 noundef %946, ptr noundef %629, i32 noundef 1, i32 noundef %947, i32 noundef %948)
  %949 = load i32, ptr %481, align 8, !tbaa !30
  %950 = load i32, ptr %5, align 4, !tbaa !5
  %951 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_garbage_matrix(i32 noundef %949, ptr noundef %644, i32 noundef 1, i32 noundef %950, i32 noundef %951)
  br label %959

952:                                              ; preds = %941
  call void @init_zero_matrix(i32 noundef %942, ptr noundef %614, i32 noundef 1, i32 noundef %943, i32 noundef %944)
  %953 = load i32, ptr %481, align 8, !tbaa !30
  %954 = load i32, ptr %5, align 4, !tbaa !5
  %955 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef %953, ptr noundef %629, i32 noundef 1, i32 noundef %954, i32 noundef %955)
  %956 = load i32, ptr %481, align 8, !tbaa !30
  %957 = load i32, ptr %5, align 4, !tbaa !5
  %958 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef %956, ptr noundef %644, i32 noundef 1, i32 noundef %957, i32 noundef %958)
  br label %959

959:                                              ; preds = %945, %952
  %960 = load i32, ptr %20, align 8, !tbaa !16
  %.not1811 = icmp eq i32 %960, 0
  br i1 %.not1811, label %.loopexit, label %961

961:                                              ; preds = %959
  %962 = load i32, ptr %3, align 4, !tbaa !5
  %963 = sext i32 %962 to i64
  %964 = load i32, ptr %8, align 4, !tbaa !5
  %965 = add nsw i32 %964, 7
  %966 = sdiv i32 %965, 8
  %967 = shl nsw i32 %966, 2
  %968 = sext i32 %967 to i64
  %969 = load i32, ptr %9, align 8
  switch i32 %969, label %970 [
    i32 0, label %975
    i32 1, label %.fold.split1851
  ]

970:                                              ; preds = %961
  %971 = and i32 %969, -2
  %switch.tableidx2246 = add i32 %971, -2
  %972 = icmp ult i32 %switch.tableidx2246, 11
  br i1 %972, label %switch.hole_check2247, label %973

973:                                              ; preds = %switch.hole_check2247, %970
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, i32 noundef 3419, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1851:                                  ; preds = %961
  br label %975

switch.hole_check2247:                            ; preds = %970
  %switch.maskindex2249 = trunc nuw i32 %switch.tableidx2246 to i16
  %switch.shifted2250 = lshr i16 1365, %switch.maskindex2249
  %switch.lobit2251 = trunc i16 %switch.shifted2250 to i1
  br i1 %switch.lobit2251, label %switch.lookup2248, label %973

switch.lookup2248:                                ; preds = %switch.hole_check2247
  %974 = zext nneg i32 %switch.tableidx2246 to i64
  %switch.gep2252 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %974
  %switch.load2253 = load i64, ptr %switch.gep2252, align 8
  br label %975

975:                                              ; preds = %switch.lookup2248, %961, %.fold.split1851
  %976 = phi i64 [ 8, %961 ], [ 4, %.fold.split1851 ], [ %switch.load2253, %switch.lookup2248 ]
  %977 = mul nsw i64 %963, %524
  %978 = mul i64 %977, %968
  %979 = mul i64 %978, %976
  %980 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %979, i64 noundef 64) #13
  %981 = load i32, ptr %6, align 4, !tbaa !5
  %982 = icmp sgt i32 %981, 0
  %983 = load i32, ptr %8, align 4
  %984 = icmp sgt i32 %983, 0
  %985 = load i32, ptr %3, align 4
  %factor.op.mul = shl i32 %985, 2
  %986 = sdiv i32 %983, 2
  %987 = sext i32 %983 to i64
  br label %.preheader1982

.preheader1982:                                   ; preds = %975, %._crit_edge2034
  %.017582035 = phi i32 [ 0, %975 ], [ %1017, %._crit_edge2034 ]
  br i1 %982, label %.preheader1975.lr.ph, label %._crit_edge2034

.preheader1975.lr.ph:                             ; preds = %.preheader1982
  %988 = mul nsw i32 %985, %.017582035
  %989 = mul nsw i32 %988, %983
  %990 = mul nsw i32 %988, %986
  br i1 %984, label %.preheader1975.us, label %._crit_edge2034

.preheader1975.us:                                ; preds = %.preheader1975.lr.ph, %._crit_edge2028.us
  %.017562033.us = phi i32 [ %1016, %._crit_edge2028.us ], [ 0, %.preheader1975.lr.ph ]
  %991 = shl nsw i32 %.017562033.us, 2
  %992 = add i32 %989, %991
  br label %993

993:                                              ; preds = %.preheader1975.us, %993
  %indvars.iv2126 = phi i64 [ 0, %.preheader1975.us ], [ %indvars.iv.next2127, %993 ]
  %994 = lshr exact i64 %indvars.iv2126, 2
  %995 = trunc nuw nsw i64 %994 to i32
  %.reass.us = mul i32 %factor.op.mul, %995
  %996 = add i32 %992, %.reass.us
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds i8, ptr %579, i64 %997
  %999 = trunc i64 %994 to i32
  %1000 = or disjoint i32 %999, 1
  %.reass2030.us = mul i32 %1000, %factor.op.mul
  %1001 = add i32 %992, %.reass2030.us
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds i8, ptr %579, i64 %1002
  %1004 = lshr exact i64 %indvars.iv2126, 3
  %1005 = trunc nuw nsw i64 %1004 to i32
  %.reass2032.us = mul i32 %factor.op.mul, %1005
  %1006 = add i32 %.reass2032.us, %991
  %1007 = add i32 %1006, %990
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds i8, ptr %980, i64 %1008
  %1010 = load <4 x i8>, ptr %998, align 1, !tbaa !60
  %1011 = load <4 x i8>, ptr %1003, align 1, !tbaa !60
  %1012 = and <4 x i8> %1010, <i8 15, i8 15, i8 15, i8 15>
  %1013 = shl <4 x i8> %1011, <i8 4, i8 4, i8 4, i8 4>
  %1014 = or disjoint <4 x i8> %1013, %1012
  store <4 x i8> %1014, ptr %1009, align 1, !tbaa !60
  %indvars.iv.next2127 = add nuw nsw i64 %indvars.iv2126, 8
  %1015 = icmp slt i64 %indvars.iv.next2127, %987
  br i1 %1015, label %993, label %._crit_edge2028.us, !llvm.loop !76

._crit_edge2028.us:                               ; preds = %993
  %1016 = add nuw nsw i32 %.017562033.us, 1
  %exitcond2129.not = icmp eq i32 %1016, %981
  br i1 %exitcond2129.not, label %._crit_edge2034, label %.preheader1975.us, !llvm.loop !77

._crit_edge2034:                                  ; preds = %._crit_edge2028.us, %.preheader1975.lr.ph, %.preheader1982
  %1017 = add nuw nsw i32 %.017582035, 1
  %exitcond2130.not = icmp eq i32 %1017, %367
  br i1 %exitcond2130.not, label %1018, label %.preheader1982, !llvm.loop !78

1018:                                             ; preds = %._crit_edge2034
  %1019 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %980, ptr noundef %599, ptr noundef %614, ptr noundef %629, i32 noundef %.01727, i32 noundef %.01701, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %980) #13
  %1020 = load i32, ptr %8, align 4, !tbaa !5
  %1021 = sdiv i32 %1020, 4
  %1022 = icmp slt i32 %1020, 4
  %1023 = load i32, ptr %6, align 4
  %1024 = icmp slt i32 %1023, 1
  %1025 = load ptr, ptr %530, align 8
  %1026 = load i32, ptr %3, align 4
  %1027 = sext i32 %1026 to i64
  %wide.trip.count2138 = zext nneg i32 %1023 to i64
  %brmerge = select i1 %1022, i1 true, i1 %1024
  br label %.preheader1981

.preheader1981:                                   ; preds = %1018, %._crit_edge2041
  %indvars.iv2141 = phi i64 [ 0, %1018 ], [ %indvars.iv.next2142, %._crit_edge2041 ]
  br i1 %brmerge, label %._crit_edge2041, label %.preheader1974.us.preheader

.preheader1974.us.preheader:                      ; preds = %.preheader1981
  %1028 = mul nsw i64 %indvars.iv2141, %1027
  %1029 = getelementptr i8, ptr %1025, i64 %1028
  %1030 = trunc i64 %1028 to i32
  %1031 = mul i32 %1020, %1030
  br label %.preheader1974.us

.preheader1974.us:                                ; preds = %.preheader1974.us.preheader, %._crit_edge2039.us
  %.117552040.us = phi i32 [ %1057, %._crit_edge2039.us ], [ 0, %.preheader1974.us.preheader ]
  %1032 = mul i32 %1026, %.117552040.us
  br label %1033

1033:                                             ; preds = %.preheader1974.us, %1033
  %indvars.iv2135 = phi i64 [ 0, %.preheader1974.us ], [ %indvars.iv.next2136, %1033 ]
  %1034 = getelementptr i8, ptr %1029, i64 %indvars.iv2135
  %1035 = load i8, ptr %1034, align 1, !tbaa !60
  %1036 = trunc nuw nsw i64 %indvars.iv2135 to i32
  %reass.add.us = add i32 %1032, %1036
  %reass.mul.us = shl i32 %reass.add.us, 2
  %1037 = add i32 %reass.mul.us, %1031
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds i8, ptr %579, i64 %1038
  %1040 = load i8, ptr %1039, align 1, !tbaa !60
  %1041 = sub i8 %1040, %1035
  store i8 %1041, ptr %1039, align 1, !tbaa !60
  %1042 = add i32 %1037, 1
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds i8, ptr %579, i64 %1043
  %1045 = load i8, ptr %1044, align 1, !tbaa !60
  %1046 = sub i8 %1045, %1035
  store i8 %1046, ptr %1044, align 1, !tbaa !60
  %1047 = add i32 %1037, 2
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds i8, ptr %579, i64 %1048
  %1050 = load i8, ptr %1049, align 1, !tbaa !60
  %1051 = sub i8 %1050, %1035
  store i8 %1051, ptr %1049, align 1, !tbaa !60
  %1052 = add i32 %1037, 3
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds i8, ptr %579, i64 %1053
  %1055 = load i8, ptr %1054, align 1, !tbaa !60
  %1056 = sub i8 %1055, %1035
  store i8 %1056, ptr %1054, align 1, !tbaa !60
  %indvars.iv.next2136 = add nuw nsw i64 %indvars.iv2135, 1
  %exitcond2139.not = icmp eq i64 %indvars.iv.next2136, %wide.trip.count2138
  br i1 %exitcond2139.not, label %._crit_edge2039.us, label %1033, !llvm.loop !79

._crit_edge2039.us:                               ; preds = %1033
  %1057 = add nuw nsw i32 %.117552040.us, 1
  %exitcond2140.not = icmp eq i32 %1057, %1021
  br i1 %exitcond2140.not, label %._crit_edge2041, label %.preheader1974.us, !llvm.loop !80

._crit_edge2041:                                  ; preds = %._crit_edge2039.us, %.preheader1981
  %indvars.iv.next2142 = add nuw nsw i64 %indvars.iv2141, 1
  %exitcond2145.not = icmp eq i64 %indvars.iv.next2142, %524
  br i1 %exitcond2145.not, label %.loopexit, label %.preheader1981, !llvm.loop !81

.loopexit:                                        ; preds = %._crit_edge2041, %959
  %.11692 = phi double [ %.01691, %959 ], [ %1019, %._crit_edge2041 ]
  %1058 = load i32, ptr %21, align 4, !tbaa !17
  %.not1812 = icmp eq i32 %1058, 0
  br i1 %.not1812, label %1139, label %1059

1059:                                             ; preds = %.loopexit
  %1060 = load i32, ptr %3, align 4, !tbaa !5
  %1061 = sext i32 %1060 to i64
  %1062 = load i32, ptr %8, align 4, !tbaa !5
  %1063 = sext i32 %1062 to i64
  %1064 = lshr i64 %1063, 1
  %1065 = mul nsw i64 %1061, %524
  %1066 = mul i64 %1065, %1064
  %1067 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1066, i64 noundef 64) #13
  call void @libxsmm_free(ptr noundef %579) #13
  %1068 = load i32, ptr %3, align 4, !tbaa !5
  %1069 = sext i32 %1068 to i64
  %1070 = load i32, ptr %8, align 4, !tbaa !5
  %1071 = sext i32 %1070 to i64
  %1072 = mul nsw i64 %539, %1069
  %1073 = mul i64 %1072, %1071
  %1074 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1073, i64 noundef 64) #13
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1980

.preheader1980:                                   ; preds = %1059, %._crit_edge2050
  %1075 = phi i32 [ %.pre, %1059 ], [ %1134, %._crit_edge2050 ]
  %1076 = phi i32 [ %.pre, %1059 ], [ %1135, %._crit_edge2050 ]
  %.017192053 = phi float [ 0.000000e+00, %1059 ], [ %.11720.lcssa, %._crit_edge2050 ]
  %.017312052 = phi i32 [ 0, %1059 ], [ %1136, %._crit_edge2050 ]
  %1077 = icmp sgt i32 %1076, 0
  br i1 %1077, label %.preheader1973.preheader, label %._crit_edge2050

.preheader1973.preheader:                         ; preds = %.preheader1980
  %.pre2154 = load i32, ptr %8, align 4, !tbaa !5
  br label %.preheader1973

.preheader1973:                                   ; preds = %.preheader1973.preheader, %._crit_edge2046
  %1078 = phi i32 [ %1130, %._crit_edge2046 ], [ %1075, %.preheader1973.preheader ]
  %1079 = phi i32 [ %1131, %._crit_edge2046 ], [ %.pre2154, %.preheader1973.preheader ]
  %.117202049 = phi float [ %.21721.lcssa, %._crit_edge2046 ], [ %.017192053, %.preheader1973.preheader ]
  %.017302048 = phi i32 [ %1132, %._crit_edge2046 ], [ 0, %.preheader1973.preheader ]
  %1080 = icmp sgt i32 %1079, 1
  br i1 %1080, label %.lr.ph2045, label %._crit_edge2046

.lr.ph2045:                                       ; preds = %.preheader1973, %.critedge1853
  %1081 = phi i32 [ %1113, %.critedge1853 ], [ %1079, %.preheader1973 ]
  %.217212044 = phi float [ %.31722, %.critedge1853 ], [ %.117202049, %.preheader1973 ]
  %.017292043 = phi i32 [ %1128, %.critedge1853 ], [ 0, %.preheader1973 ]
  %1082 = and i32 %.017292043, 15
  %1083 = icmp eq i32 %1082, 0
  br i1 %1083, label %1084, label %.critedge1853

1084:                                             ; preds = %.lr.ph2045
  %1085 = load ptr, ptr %531, align 8, !tbaa !64
  %1086 = load i32, ptr %3, align 4, !tbaa !5
  %1087 = sdiv i32 %1081, 32
  %1088 = mul i32 %1087, %.017312052
  %1089 = lshr exact i32 %.017292043, 4
  %reass.add1962 = add i32 %1088, %1089
  %reass.mul1963 = mul i32 %reass.add1962, %1086
  %1090 = add i32 %reass.mul1963, %.017302048
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds i8, ptr %1085, i64 %1091
  %1093 = load i8, ptr %1092, align 1, !tbaa !60
  %1094 = zext i8 %1093 to i32
  %1095 = shl nuw nsw i32 %1094, 23
  %1096 = bitcast i32 %1095 to float
  br label %.critedge1853

.critedge1853:                                    ; preds = %1084, %.lr.ph2045
  %.31722 = phi float [ %1096, %1084 ], [ %.217212044, %.lr.ph2045 ]
  %1097 = call i32 @rand() #13
  %1098 = srem i32 %1097, 16
  %1099 = trunc nsw i32 %1098 to i8
  %1100 = call i32 @rand() #13
  %1101 = srem i32 %1100, 16
  %1102 = trunc nsw i32 %1101 to i8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #13
  %1103 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1099)
  %1104 = fmul float %.31722, %1103
  store float %1104, ptr %15, align 4, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #13
  %1105 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1102)
  %1106 = fmul float %.31722, %1105
  store float %1106, ptr %16, align 4, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %17) #13
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #13
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %15, ptr noundef nonnull %17, i64 noundef 1) #13
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %16, ptr noundef nonnull %18, i64 noundef 1) #13
  %1107 = and i32 %1098, 15
  %1108 = shl nsw i32 %1101, 4
  %1109 = or disjoint i32 %1108, %1107
  %1110 = trunc i32 %1109 to i8
  %1111 = load i32, ptr %3, align 4, !tbaa !5
  %1112 = mul nsw i32 %1111, %.017312052
  %1113 = load i32, ptr %8, align 4, !tbaa !5
  %1114 = sdiv i32 %1113, 2
  %1115 = mul nsw i32 %1114, %1112
  %1116 = mul nsw i32 %1111, %.017292043
  %1117 = add i32 %1116, %.017302048
  %1118 = add i32 %1117, %1115
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds i8, ptr %1067, i64 %1119
  store i8 %1110, ptr %1120, align 1, !tbaa !60
  %1121 = load i16, ptr %17, align 2, !tbaa !82
  %1122 = mul nsw i32 %1112, %1113
  %reass.mul1965 = shl i32 %1117, 1
  %1123 = add i32 %reass.mul1965, %1122
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds i16, ptr %1074, i64 %1124
  store i16 %1121, ptr %1125, align 2, !tbaa !82
  %1126 = load i16, ptr %18, align 2, !tbaa !82
  %1127 = getelementptr i8, ptr %1125, i64 2
  store i16 %1126, ptr %1127, align 2, !tbaa !82
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #13
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %17) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #13
  %1128 = add nuw nsw i32 %.017292043, 1
  %1129 = icmp slt i32 %1128, %1114
  br i1 %1129, label %.lr.ph2045, label %._crit_edge2046.loopexit, !llvm.loop !84

._crit_edge2046.loopexit:                         ; preds = %.critedge1853
  %.pre2155 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge2046

._crit_edge2046:                                  ; preds = %._crit_edge2046.loopexit, %.preheader1973
  %1130 = phi i32 [ %1078, %.preheader1973 ], [ %.pre2155, %._crit_edge2046.loopexit ]
  %1131 = phi i32 [ %1079, %.preheader1973 ], [ %1113, %._crit_edge2046.loopexit ]
  %.21721.lcssa = phi float [ %.117202049, %.preheader1973 ], [ %.31722, %._crit_edge2046.loopexit ]
  %1132 = add nuw nsw i32 %.017302048, 1
  %1133 = icmp slt i32 %1132, %1130
  br i1 %1133, label %.preheader1973, label %._crit_edge2050, !llvm.loop !85

._crit_edge2050:                                  ; preds = %._crit_edge2046, %.preheader1980
  %1134 = phi i32 [ %1075, %.preheader1980 ], [ %1130, %._crit_edge2046 ]
  %1135 = phi i32 [ %1076, %.preheader1980 ], [ %1130, %._crit_edge2046 ]
  %.11720.lcssa = phi float [ %.017192053, %.preheader1980 ], [ %.21721.lcssa, %._crit_edge2046 ]
  %1136 = add nuw nsw i32 %.017312052, 1
  %exitcond2146.not = icmp eq i32 %1136, %367
  br i1 %exitcond2146.not, label %1137, label %.preheader1980, !llvm.loop !86

1137:                                             ; preds = %._crit_edge2050
  %1138 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1067, ptr noundef %599, ptr noundef %614, ptr noundef %629, i32 noundef %.01727, i32 noundef %.01701, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1067) #13
  store i32 2, ptr %9, align 8, !tbaa !27
  store i32 1, ptr %486, align 8, !tbaa !35
  br label %1139

1139:                                             ; preds = %1137, %.loopexit
  %.11763 = phi ptr [ %1074, %1137 ], [ %579, %.loopexit ]
  %.21693 = phi double [ %1138, %1137 ], [ %.11692, %.loopexit ]
  %1140 = load i32, ptr %22, align 8, !tbaa !18
  %.not1813 = icmp eq i32 %1140, 0
  br i1 %.not1813, label %1226, label %1141

1141:                                             ; preds = %1139
  %1142 = load i32, ptr %3, align 4, !tbaa !5
  %1143 = sext i32 %1142 to i64
  %1144 = load i32, ptr %8, align 4, !tbaa !5
  %1145 = sext i32 %1144 to i64
  %1146 = lshr i64 %1145, 1
  %1147 = mul nsw i64 %1143, %524
  %1148 = mul i64 %1147, %1146
  %1149 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1148, i64 noundef 64) #13
  call void @libxsmm_free(ptr noundef %.11763) #13
  %1150 = load i32, ptr %3, align 4, !tbaa !5
  %1151 = sext i32 %1150 to i64
  %1152 = load i32, ptr %8, align 4, !tbaa !5
  %1153 = sext i32 %1152 to i64
  %1154 = mul i64 %540, %1151
  %1155 = mul i64 %1154, %1153
  %1156 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1155, i64 noundef 64) #13
  %.pre2156 = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1979

.preheader1979:                                   ; preds = %1141, %._crit_edge2061
  %1157 = phi i32 [ %.pre2156, %1141 ], [ %1221, %._crit_edge2061 ]
  %1158 = phi i32 [ %.pre2156, %1141 ], [ %1222, %._crit_edge2061 ]
  %.017022064 = phi float [ 0.000000e+00, %1141 ], [ %.11703.lcssa, %._crit_edge2061 ]
  %.017112063 = phi i32 [ 0, %1141 ], [ %1223, %._crit_edge2061 ]
  %1159 = icmp sgt i32 %1158, 0
  br i1 %1159, label %.preheader1972.preheader, label %._crit_edge2061

.preheader1972.preheader:                         ; preds = %.preheader1979
  %.pre2157 = load i32, ptr %8, align 4, !tbaa !5
  br label %.preheader1972

.preheader1972:                                   ; preds = %.preheader1972.preheader, %._crit_edge2057
  %1160 = phi i32 [ %1217, %._crit_edge2057 ], [ %1157, %.preheader1972.preheader ]
  %1161 = phi i32 [ %1218, %._crit_edge2057 ], [ %.pre2157, %.preheader1972.preheader ]
  %.117032060 = phi float [ %.21704.lcssa, %._crit_edge2057 ], [ %.017022064, %.preheader1972.preheader ]
  %.017102059 = phi i32 [ %1219, %._crit_edge2057 ], [ 0, %.preheader1972.preheader ]
  %1162 = icmp sgt i32 %1161, 1
  br i1 %1162, label %.lr.ph2056, label %._crit_edge2057

.lr.ph2056:                                       ; preds = %.preheader1972, %.critedge1855
  %1163 = phi i32 [ %1195, %.critedge1855 ], [ %1161, %.preheader1972 ]
  %.217042055 = phi float [ %.31705, %.critedge1855 ], [ %.117032060, %.preheader1972 ]
  %.017092054 = phi i32 [ %1215, %.critedge1855 ], [ 0, %.preheader1972 ]
  %1164 = and i32 %.017092054, 15
  %1165 = icmp eq i32 %1164, 0
  br i1 %1165, label %1166, label %.critedge1855

1166:                                             ; preds = %.lr.ph2056
  %1167 = load ptr, ptr %531, align 8, !tbaa !64
  %1168 = load i32, ptr %3, align 4, !tbaa !5
  %1169 = sdiv i32 %1163, 32
  %1170 = mul i32 %1169, %.017112063
  %1171 = lshr exact i32 %.017092054, 4
  %reass.add1966 = add i32 %1170, %1171
  %reass.mul1967 = mul i32 %reass.add1966, %1168
  %1172 = add i32 %reass.mul1967, %.017102059
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds i8, ptr %1167, i64 %1173
  %1175 = load i8, ptr %1174, align 1, !tbaa !60
  %1176 = zext i8 %1175 to i32
  %1177 = shl nuw nsw i32 %1176, 23
  %1178 = bitcast i32 %1177 to float
  br label %.critedge1855

.critedge1855:                                    ; preds = %1166, %.lr.ph2056
  %.31705 = phi float [ %1178, %1166 ], [ %.217042055, %.lr.ph2056 ]
  %1179 = call i32 @rand() #13
  %1180 = srem i32 %1179, 16
  %1181 = trunc nsw i32 %1180 to i8
  %1182 = call i32 @rand() #13
  %1183 = srem i32 %1182, 16
  %1184 = trunc nsw i32 %1183 to i8
  %1185 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1181)
  %1186 = fmul float %.31705, %1185
  %1187 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1184)
  %1188 = fmul float %.31705, %1187
  %1189 = and i32 %1180, 15
  %1190 = shl nsw i32 %1183, 4
  %1191 = or disjoint i32 %1190, %1189
  %1192 = trunc i32 %1191 to i8
  %1193 = load i32, ptr %3, align 4, !tbaa !5
  %1194 = mul nsw i32 %1193, %.017112063
  %1195 = load i32, ptr %8, align 4, !tbaa !5
  %1196 = sdiv i32 %1195, 2
  %1197 = mul nsw i32 %1196, %1194
  %1198 = mul nsw i32 %1193, %.017092054
  %1199 = add i32 %1198, %.017102059
  %1200 = add i32 %1199, %1197
  %1201 = sext i32 %1200 to i64
  %1202 = getelementptr inbounds i8, ptr %1149, i64 %1201
  store i8 %1192, ptr %1202, align 1, !tbaa !60
  %1203 = mul nsw i32 %1194, %1195
  %1204 = shl nuw nsw i32 %.017092054, 1
  %1205 = mul nsw i32 %1193, %1204
  %1206 = add i32 %1203, %.017102059
  %1207 = add i32 %1206, %1205
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds float, ptr %1156, i64 %1208
  store float %1186, ptr %1209, align 4, !tbaa !53
  %1210 = or disjoint i32 %1204, 1
  %1211 = mul nsw i32 %1193, %1210
  %1212 = add i32 %1206, %1211
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds float, ptr %1156, i64 %1213
  store float %1188, ptr %1214, align 4, !tbaa !53
  %1215 = add nuw nsw i32 %.017092054, 1
  %1216 = icmp slt i32 %1215, %1196
  br i1 %1216, label %.lr.ph2056, label %._crit_edge2057.loopexit, !llvm.loop !87

._crit_edge2057.loopexit:                         ; preds = %.critedge1855
  %.pre2158 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge2057

._crit_edge2057:                                  ; preds = %._crit_edge2057.loopexit, %.preheader1972
  %1217 = phi i32 [ %1160, %.preheader1972 ], [ %.pre2158, %._crit_edge2057.loopexit ]
  %1218 = phi i32 [ %1161, %.preheader1972 ], [ %1195, %._crit_edge2057.loopexit ]
  %.21704.lcssa = phi float [ %.117032060, %.preheader1972 ], [ %.31705, %._crit_edge2057.loopexit ]
  %1219 = add nuw nsw i32 %.017102059, 1
  %1220 = icmp slt i32 %1219, %1217
  br i1 %1220, label %.preheader1972, label %._crit_edge2061, !llvm.loop !88

._crit_edge2061:                                  ; preds = %._crit_edge2057, %.preheader1979
  %1221 = phi i32 [ %1157, %.preheader1979 ], [ %1217, %._crit_edge2057 ]
  %1222 = phi i32 [ %1158, %.preheader1979 ], [ %1217, %._crit_edge2057 ]
  %.11703.lcssa = phi float [ %.017022064, %.preheader1979 ], [ %.21704.lcssa, %._crit_edge2057 ]
  %1223 = add nuw nsw i32 %.017112063, 1
  %exitcond2147.not = icmp eq i32 %1223, %367
  br i1 %exitcond2147.not, label %1224, label %.preheader1979, !llvm.loop !89

1224:                                             ; preds = %._crit_edge2061
  %1225 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1149, ptr noundef %599, ptr noundef %614, ptr noundef %629, i32 noundef %.01727, i32 noundef %.01701, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1149) #13
  store i32 1, ptr %9, align 8, !tbaa !27
  store i32 1, ptr %486, align 8, !tbaa !35
  br label %1226

1226:                                             ; preds = %1224, %1139
  %.21764 = phi ptr [ %1156, %1224 ], [ %.11763, %1139 ]
  %.31694 = phi double [ %1225, %1224 ], [ %.21693, %1139 ]
  %1227 = load i32, ptr %23, align 4, !tbaa !19
  %.not1814 = icmp eq i32 %1227, 0
  br i1 %.not1814, label %1399, label %1228

1228:                                             ; preds = %1226
  %1229 = load i32, ptr %3, align 4, !tbaa !5
  %1230 = sext i32 %1229 to i64
  %1231 = load i32, ptr %8, align 4, !tbaa !5
  %1232 = sext i32 %1231 to i64
  %1233 = lshr i64 %1232, 1
  %1234 = mul nsw i64 %1230, %524
  %1235 = mul i64 %1234, %1233
  %1236 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1235, i64 noundef 64) #13
  call void @libxsmm_free(ptr noundef %.21764) #13
  %1237 = load i32, ptr %3, align 4, !tbaa !5
  %1238 = sext i32 %1237 to i64
  %1239 = load i32, ptr %8, align 4, !tbaa !5
  %1240 = sext i32 %1239 to i64
  %1241 = mul nsw i64 %1238, %524
  %1242 = mul i64 %1241, %1240
  %1243 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1242, i64 noundef 64) #13
  %.pre2159 = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1978

.preheader1978:                                   ; preds = %1228, %._crit_edge2069
  %1244 = phi i32 [ %.pre2159, %1228 ], [ %1394, %._crit_edge2069 ]
  %1245 = phi i32 [ %.pre2159, %1228 ], [ %1395, %._crit_edge2069 ]
  %.016832070 = phi i32 [ 0, %1228 ], [ %1396, %._crit_edge2069 ]
  %1246 = icmp sgt i32 %1245, 0
  br i1 %1246, label %.preheader1971.preheader, label %._crit_edge2069

.preheader1971.preheader:                         ; preds = %.preheader1978
  %.pre2160 = load i32, ptr %8, align 4, !tbaa !5
  br label %.preheader1971

.preheader1971:                                   ; preds = %.preheader1971.preheader, %._crit_edge2067
  %1247 = phi i32 [ %1390, %._crit_edge2067 ], [ %1244, %.preheader1971.preheader ]
  %1248 = phi i32 [ %1391, %._crit_edge2067 ], [ %.pre2160, %.preheader1971.preheader ]
  %.016822068 = phi i32 [ %1392, %._crit_edge2067 ], [ 0, %.preheader1971.preheader ]
  %1249 = icmp sgt i32 %1248, 7
  br i1 %1249, label %.preheader.lr.ph, label %._crit_edge2067

.preheader.lr.ph:                                 ; preds = %.preheader1971
  %1250 = shl nsw i32 %.016822068, 5
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %.preheader
  %.016812066 = phi i32 [ 0, %.preheader.lr.ph ], [ %1387, %.preheader ]
  %1251 = shl nsw i32 %.016812066, 3
  %1252 = and i32 %1251, 2147483616
  %.masked = and i32 %1251, 24
  %1253 = call i32 @rand() #13
  %1254 = srem i32 %1253, 16
  %1255 = trunc nsw i32 %1254 to i8
  %1256 = call i32 @rand() #13
  %1257 = srem i32 %1256, 16
  %1258 = trunc nsw i32 %1257 to i8
  %1259 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1255)
  %1260 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1258)
  %1261 = and i32 %1254, 15
  %1262 = shl nsw i32 %1257, 4
  %1263 = or disjoint i32 %1262, %1261
  %1264 = trunc i32 %1263 to i8
  %1265 = load i32, ptr %3, align 4, !tbaa !5
  %1266 = mul nsw i32 %1265, %.016832070
  %1267 = load i32, ptr %8, align 4, !tbaa !5
  %1268 = sdiv i32 %1267, 2
  %1269 = mul nsw i32 %1268, %1266
  %1270 = mul i32 %1265, %.016812066
  %reass.add1968 = add i32 %1270, %.016822068
  %reass.mul1969 = shl i32 %reass.add1968, 2
  %1271 = add i32 %1269, %reass.mul1969
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds i8, ptr %1236, i64 %1272
  store i8 %1264, ptr %1273, align 1, !tbaa !60
  %1274 = mul nsw i32 %1266, %1267
  %1275 = mul i32 %1252, %1265
  %1276 = add i32 %1275, %1250
  %1277 = add i32 %1276, %1274
  %1278 = add nsw i32 %1277, %.masked
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds i8, ptr %1243, i64 %1279
  store i8 %1259, ptr %1280, align 1, !tbaa !60
  %1281 = or disjoint i32 %.masked, 4
  %1282 = add nsw i32 %1281, %1277
  %1283 = sext i32 %1282 to i64
  %1284 = getelementptr inbounds i8, ptr %1243, i64 %1283
  store i8 %1260, ptr %1284, align 1, !tbaa !60
  %1285 = call i32 @rand() #13
  %1286 = srem i32 %1285, 16
  %1287 = trunc nsw i32 %1286 to i8
  %1288 = call i32 @rand() #13
  %1289 = srem i32 %1288, 16
  %1290 = trunc nsw i32 %1289 to i8
  %1291 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1287)
  %1292 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1290)
  %1293 = and i32 %1286, 15
  %1294 = shl nsw i32 %1289, 4
  %1295 = or disjoint i32 %1294, %1293
  %1296 = trunc i32 %1295 to i8
  %1297 = load i32, ptr %3, align 4, !tbaa !5
  %1298 = mul nsw i32 %1297, %.016832070
  %1299 = load i32, ptr %8, align 4, !tbaa !5
  %1300 = sdiv i32 %1299, 2
  %1301 = mul nsw i32 %1300, %1298
  %1302 = mul i32 %1297, %.016812066
  %reass.add1968.1 = add i32 %1302, %.016822068
  %reass.mul1969.1 = shl i32 %reass.add1968.1, 2
  %1303 = add i32 %1301, 1
  %1304 = add i32 %1303, %reass.mul1969.1
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds i8, ptr %1236, i64 %1305
  store i8 %1296, ptr %1306, align 1, !tbaa !60
  %1307 = mul nsw i32 %1298, %1299
  %1308 = mul i32 %1252, %1297
  %1309 = add i32 %1308, %1250
  %1310 = add i32 %1309, %1307
  %1311 = or disjoint i32 %.masked, 1
  %1312 = add nsw i32 %1310, %1311
  %1313 = sext i32 %1312 to i64
  %1314 = getelementptr inbounds i8, ptr %1243, i64 %1313
  store i8 %1291, ptr %1314, align 1, !tbaa !60
  %1315 = or disjoint i32 %.masked, 5
  %1316 = add nsw i32 %1315, %1310
  %1317 = sext i32 %1316 to i64
  %1318 = getelementptr inbounds i8, ptr %1243, i64 %1317
  store i8 %1292, ptr %1318, align 1, !tbaa !60
  %1319 = call i32 @rand() #13
  %1320 = srem i32 %1319, 16
  %1321 = trunc nsw i32 %1320 to i8
  %1322 = call i32 @rand() #13
  %1323 = srem i32 %1322, 16
  %1324 = trunc nsw i32 %1323 to i8
  %1325 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1321)
  %1326 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1324)
  %1327 = and i32 %1320, 15
  %1328 = shl nsw i32 %1323, 4
  %1329 = or disjoint i32 %1328, %1327
  %1330 = trunc i32 %1329 to i8
  %1331 = load i32, ptr %3, align 4, !tbaa !5
  %1332 = mul nsw i32 %1331, %.016832070
  %1333 = load i32, ptr %8, align 4, !tbaa !5
  %1334 = sdiv i32 %1333, 2
  %1335 = mul nsw i32 %1334, %1332
  %1336 = mul i32 %1331, %.016812066
  %reass.add1968.2 = add i32 %1336, %.016822068
  %reass.mul1969.2 = shl i32 %reass.add1968.2, 2
  %1337 = add i32 %1335, 2
  %1338 = add i32 %1337, %reass.mul1969.2
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds i8, ptr %1236, i64 %1339
  store i8 %1330, ptr %1340, align 1, !tbaa !60
  %1341 = mul nsw i32 %1332, %1333
  %1342 = mul i32 %1252, %1331
  %1343 = add i32 %1342, %1250
  %1344 = add i32 %1343, %1341
  %1345 = or disjoint i32 %.masked, 2
  %1346 = add nsw i32 %1344, %1345
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds i8, ptr %1243, i64 %1347
  store i8 %1325, ptr %1348, align 1, !tbaa !60
  %1349 = or disjoint i32 %.masked, 6
  %1350 = add nsw i32 %1349, %1344
  %1351 = sext i32 %1350 to i64
  %1352 = getelementptr inbounds i8, ptr %1243, i64 %1351
  store i8 %1326, ptr %1352, align 1, !tbaa !60
  %1353 = call i32 @rand() #13
  %1354 = srem i32 %1353, 16
  %1355 = trunc nsw i32 %1354 to i8
  %1356 = call i32 @rand() #13
  %1357 = srem i32 %1356, 16
  %1358 = trunc nsw i32 %1357 to i8
  %1359 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1355)
  %1360 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1358)
  %1361 = and i32 %1354, 15
  %1362 = shl nsw i32 %1357, 4
  %1363 = or disjoint i32 %1362, %1361
  %1364 = trunc i32 %1363 to i8
  %1365 = load i32, ptr %3, align 4, !tbaa !5
  %1366 = mul nsw i32 %1365, %.016832070
  %1367 = load i32, ptr %8, align 4, !tbaa !5
  %1368 = sdiv i32 %1367, 2
  %1369 = mul nsw i32 %1368, %1366
  %1370 = mul i32 %1365, %.016812066
  %reass.add1968.3 = add i32 %1370, %.016822068
  %reass.mul1969.3 = shl i32 %reass.add1968.3, 2
  %1371 = add i32 %1369, 3
  %1372 = add i32 %1371, %reass.mul1969.3
  %1373 = sext i32 %1372 to i64
  %1374 = getelementptr inbounds i8, ptr %1236, i64 %1373
  store i8 %1364, ptr %1374, align 1, !tbaa !60
  %1375 = mul nsw i32 %1366, %1367
  %1376 = mul i32 %1252, %1365
  %1377 = add i32 %1376, %1250
  %1378 = add i32 %1377, %1375
  %1379 = or disjoint i32 %.masked, 3
  %1380 = add nsw i32 %1378, %1379
  %1381 = sext i32 %1380 to i64
  %1382 = getelementptr inbounds i8, ptr %1243, i64 %1381
  store i8 %1359, ptr %1382, align 1, !tbaa !60
  %1383 = or disjoint i32 %.masked, 7
  %1384 = add nsw i32 %1383, %1378
  %1385 = sext i32 %1384 to i64
  %1386 = getelementptr inbounds i8, ptr %1243, i64 %1385
  store i8 %1360, ptr %1386, align 1, !tbaa !60
  %1387 = add nuw nsw i32 %.016812066, 1
  %1388 = sdiv i32 %1367, 8
  %1389 = icmp slt i32 %1387, %1388
  br i1 %1389, label %.preheader, label %._crit_edge2067.loopexit, !llvm.loop !90

._crit_edge2067.loopexit:                         ; preds = %.preheader
  %.pre2161 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge2067

._crit_edge2067:                                  ; preds = %._crit_edge2067.loopexit, %.preheader1971
  %1390 = phi i32 [ %.pre2161, %._crit_edge2067.loopexit ], [ %1247, %.preheader1971 ]
  %1391 = phi i32 [ %1367, %._crit_edge2067.loopexit ], [ %1248, %.preheader1971 ]
  %1392 = add nuw nsw i32 %.016822068, 1
  %1393 = icmp slt i32 %1392, %1390
  br i1 %1393, label %.preheader1971, label %._crit_edge2069, !llvm.loop !91

._crit_edge2069:                                  ; preds = %._crit_edge2067, %.preheader1978
  %1394 = phi i32 [ %1244, %.preheader1978 ], [ %1390, %._crit_edge2067 ]
  %1395 = phi i32 [ %1245, %.preheader1978 ], [ %1390, %._crit_edge2067 ]
  %1396 = add nuw nsw i32 %.016832070, 1
  %exitcond2148.not = icmp eq i32 %1396, %367
  br i1 %exitcond2148.not, label %1397, label %.preheader1978, !llvm.loop !92

1397:                                             ; preds = %._crit_edge2069
  %1398 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1236, ptr noundef %599, ptr noundef %614, ptr noundef %629, i32 noundef %.01727, i32 noundef %.01701, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1236) #13
  store i32 12, ptr %9, align 8, !tbaa !27
  store i32 1, ptr %486, align 8, !tbaa !35
  br label %1399

1399:                                             ; preds = %1397, %1226
  %.31765 = phi ptr [ %1243, %1397 ], [ %.21764, %1226 ]
  %.41695 = phi double [ %1398, %1397 ], [ %.31694, %1226 ]
  %1400 = load i32, ptr %24, align 4, !tbaa !20
  %1401 = icmp ne i32 %1400, 0
  %1402 = load i32, ptr %25, align 8
  %1403 = icmp ne i32 %1402, 0
  %or.cond379 = select i1 %1401, i1 true, i1 %1403
  %1404 = load i32, ptr %26, align 4
  %1405 = icmp ne i32 %1404, 0
  %or.cond382 = select i1 %or.cond379, i1 true, i1 %1405
  %or.cond384 = and i1 %541, %or.cond382
  br i1 %or.cond384, label %1406, label %1409

1406:                                             ; preds = %1399
  %1407 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %.01769, ptr noundef %599, ptr noundef %614, ptr noundef %629, i32 noundef %.01727, i32 noundef %.01701, ptr noundef nonnull %11)
  %.not1815 = icmp eq ptr %.01769, null
  br i1 %.not1815, label %.thread1897, label %1408

1408:                                             ; preds = %1406
  call void @libxsmm_free(ptr noundef nonnull %.01769) #13
  br label %.thread1897

1409:                                             ; preds = %1399
  %1410 = load i32, ptr %8, align 4
  %1411 = icmp sgt i32 %1410, 0
  %or.cond2082 = select i1 %366, i1 %1411, i1 false
  br i1 %or.cond2082, label %.preheader1977.preheader, label %.thread1897

.preheader1977.preheader:                         ; preds = %1409
  %.pre2162 = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1977

.preheader1977:                                   ; preds = %.preheader1977.preheader, %._crit_edge2073
  %1412 = phi i32 [ %1440, %._crit_edge2073 ], [ %1410, %.preheader1977.preheader ]
  %1413 = phi i32 [ %1441, %._crit_edge2073 ], [ %.pre2162, %.preheader1977.preheader ]
  %.016692074 = phi i32 [ %1442, %._crit_edge2073 ], [ 0, %.preheader1977.preheader ]
  %1414 = icmp sgt i32 %1413, 0
  br i1 %1414, label %.lr.ph2072, label %._crit_edge2073

.lr.ph2072:                                       ; preds = %.preheader1977, %.thread1902
  %.016702071 = phi i32 [ %1437, %.thread1902 ], [ 0, %.preheader1977 ]
  %1415 = call double @libxsmm_rng_f64() #13
  %1416 = fptrunc double %1415 to float
  %1417 = fcmp ult float %.21750, %1416
  br i1 %1417, label %.thread1902, label %1418

1418:                                             ; preds = %.lr.ph2072
  %1419 = load i32, ptr %9, align 8, !tbaa !27
  switch i32 %1419, label %.thread1902 [
    i32 2, label %.thread1900
    i32 3, label %1425
    i32 1, label %1431
  ]

.thread1900:                                      ; preds = %1418
  %1420 = load i32, ptr %6, align 4, !tbaa !5
  %1421 = mul nsw i32 %1420, %.016692074
  %1422 = add nsw i32 %1421, %.016702071
  %1423 = sext i32 %1422 to i64
  %1424 = getelementptr inbounds i16, ptr %.31765, i64 %1423
  store i16 0, ptr %1424, align 2, !tbaa !82
  br label %.thread1902

1425:                                             ; preds = %1418
  %1426 = load i32, ptr %6, align 4, !tbaa !5
  %1427 = mul nsw i32 %1426, %.016692074
  %1428 = add nsw i32 %1427, %.016702071
  %1429 = sext i32 %1428 to i64
  %1430 = getelementptr inbounds i16, ptr %.31765, i64 %1429
  store i16 0, ptr %1430, align 2, !tbaa !82
  br label %.thread1902

1431:                                             ; preds = %1418
  %1432 = load i32, ptr %6, align 4, !tbaa !5
  %1433 = mul nsw i32 %1432, %.016692074
  %1434 = add nsw i32 %1433, %.016702071
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds float, ptr %.31765, i64 %1435
  store float 0.000000e+00, ptr %1436, align 4, !tbaa !53
  br label %.thread1902

.thread1902:                                      ; preds = %1418, %1425, %.thread1900, %1431, %.lr.ph2072
  %1437 = add nuw nsw i32 %.016702071, 1
  %1438 = load i32, ptr %6, align 4, !tbaa !5
  %1439 = icmp slt i32 %1437, %1438
  br i1 %1439, label %.lr.ph2072, label %._crit_edge2073.loopexit, !llvm.loop !93

._crit_edge2073.loopexit:                         ; preds = %.thread1902
  %.pre2163 = load i32, ptr %8, align 4, !tbaa !5
  br label %._crit_edge2073

._crit_edge2073:                                  ; preds = %._crit_edge2073.loopexit, %.preheader1977
  %1440 = phi i32 [ %.pre2163, %._crit_edge2073.loopexit ], [ %1412, %.preheader1977 ]
  %1441 = phi i32 [ %1438, %._crit_edge2073.loopexit ], [ %1413, %.preheader1977 ]
  %1442 = add nuw nsw i32 %.016692074, 1
  %1443 = icmp slt i32 %1442, %1440
  br i1 %1443, label %.preheader1977, label %.thread1897, !llvm.loop !94

.thread1897:                                      ; preds = %._crit_edge2073, %1408, %1406, %1409
  %.516961899 = phi double [ %.41695, %1409 ], [ %1407, %1406 ], [ %1407, %1408 ], [ %.41695, %._crit_edge2073 ]
  call void @ref_matmul(ptr noundef nonnull %9, ptr noundef %.31765, ptr noundef %599, ptr noundef %644)
  %1444 = load i32, ptr %21, align 4, !tbaa !17
  %.not1816 = icmp eq i32 %1444, 0
  br i1 %.not1816, label %1446, label %1445

1445:                                             ; preds = %.thread1897
  store i32 12, ptr %9, align 8, !tbaa !27
  br label %1446

1446:                                             ; preds = %1445, %.thread1897
  %1447 = load i32, ptr %22, align 8, !tbaa !18
  %.not1817 = icmp eq i32 %1447, 0
  br i1 %.not1817, label %1449, label %1448

1448:                                             ; preds = %1446
  store i32 12, ptr %9, align 8, !tbaa !27
  br label %1449

1449:                                             ; preds = %1446, %1448
  br i1 %380, label %1450, label %1463

1450:                                             ; preds = %1449
  %1451 = load i32, ptr %481, align 8
  %1452 = and i32 %1451, -2
  %or.cond387 = icmp eq i32 %1452, 2
  br i1 %or.cond387, label %1453, label %1462

1453:                                             ; preds = %1450
  %1454 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %1451) #13
  %1455 = icmp eq i32 %1454, 4
  br i1 %1455, label %1456, label %1461

1456:                                             ; preds = %1453
  %1457 = load i32, ptr %519, align 4, !tbaa !48
  %1458 = and i32 %1457, 3
  %1459 = icmp eq i32 %1458, 0
  br i1 %1459, label %1460, label %1461

1460:                                             ; preds = %1456
  call void @convert_output_to_vnni4(ptr noundef nonnull %9, ptr noundef %644)
  br label %1463

1461:                                             ; preds = %1456, %1453
  call void @convert_output_to_vnni2(ptr noundef nonnull %9, ptr noundef %644)
  br label %1463

1462:                                             ; preds = %1450
  call void @convert_output_to_vnni4(ptr noundef nonnull %9, ptr noundef %644)
  br label %1463

1463:                                             ; preds = %1462, %1461, %1460, %1449
  %1464 = load i32, ptr %19, align 8, !tbaa !15
  %.not1818 = icmp eq i32 %1464, 0
  br i1 %.not1818, label %1523, label %1465

1465:                                             ; preds = %1463
  %1466 = load i32, ptr %3, align 4, !tbaa !5
  %1467 = sext i32 %1466 to i64
  %1468 = load i32, ptr %8, align 4, !tbaa !5
  %1469 = sdiv i32 %1468, 2
  %1470 = sext i32 %1469 to i64
  %1471 = load i32, ptr %9, align 8
  switch i32 %1471, label %1472 [
    i32 0, label %1477
    i32 1, label %.fold.split1856
  ]

1472:                                             ; preds = %1465
  %1473 = and i32 %1471, -2
  %switch.tableidx2257 = add i32 %1473, -2
  %1474 = icmp ult i32 %switch.tableidx2257, 11
  br i1 %1474, label %switch.hole_check2258, label %1475

1475:                                             ; preds = %switch.hole_check2258, %1472
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, i32 noundef 3660, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1856:                                  ; preds = %1465
  br label %1477

switch.hole_check2258:                            ; preds = %1472
  %switch.maskindex2260 = trunc nuw i32 %switch.tableidx2257 to i16
  %switch.shifted2261 = lshr i16 1365, %switch.maskindex2260
  %switch.lobit2262 = trunc i16 %switch.shifted2261 to i1
  br i1 %switch.lobit2262, label %switch.lookup2259, label %1475

switch.lookup2259:                                ; preds = %switch.hole_check2258
  %1476 = zext nneg i32 %switch.tableidx2257 to i64
  %switch.gep2263 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %1476
  %switch.load2264 = load i64, ptr %switch.gep2263, align 8
  br label %1477

1477:                                             ; preds = %switch.lookup2259, %1465, %.fold.split1856
  %1478 = phi i64 [ 8, %1465 ], [ 4, %.fold.split1856 ], [ %switch.load2264, %switch.lookup2259 ]
  %1479 = mul nsw i64 %1467, %524
  %1480 = mul i64 %1479, %1470
  %1481 = mul i64 %1480, %1478
  %1482 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1481, i64 noundef 64) #13
  %1483 = load i32, ptr %6, align 4, !tbaa !5
  %1484 = icmp sgt i32 %1483, 0
  %1485 = load i32, ptr %8, align 4
  %1486 = icmp sgt i32 %1485, 0
  %1487 = load i32, ptr %3, align 4
  %1488 = sdiv i32 %1485, 2
  %1489 = sext i32 %1485 to i64
  br label %.preheader1976

.preheader1976:                                   ; preds = %1477, %._crit_edge2079
  %.016622080 = phi i32 [ 0, %1477 ], [ %1520, %._crit_edge2079 ]
  br i1 %1484, label %.preheader1970.lr.ph, label %._crit_edge2079

.preheader1970.lr.ph:                             ; preds = %.preheader1976
  %1490 = mul nsw i32 %1487, %.016622080
  %1491 = mul nsw i32 %1490, %1485
  %1492 = mul nsw i32 %1490, %1488
  br i1 %1486, label %.preheader1970.us, label %._crit_edge2079

.preheader1970.us:                                ; preds = %.preheader1970.lr.ph, %._crit_edge2077.us
  %.016612078.us = phi i32 [ %1519, %._crit_edge2077.us ], [ 0, %.preheader1970.lr.ph ]
  %1493 = add i32 %1491, %.016612078.us
  br label %1494

1494:                                             ; preds = %.preheader1970.us, %1494
  %indvars.iv2149 = phi i64 [ 0, %.preheader1970.us ], [ %indvars.iv.next2150, %1494 ]
  %1495 = trunc i64 %indvars.iv2149 to i32
  %1496 = mul i32 %1487, %1495
  %1497 = add i32 %1493, %1496
  %1498 = sext i32 %1497 to i64
  %1499 = getelementptr inbounds i8, ptr %.31765, i64 %1498
  %1500 = load i8, ptr %1499, align 1, !tbaa !60
  %1501 = trunc i64 %indvars.iv2149 to i32
  %1502 = or disjoint i32 %1501, 1
  %1503 = mul i32 %1502, %1487
  %1504 = add i32 %1493, %1503
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds i8, ptr %.31765, i64 %1505
  %1507 = load i8, ptr %1506, align 1, !tbaa !60
  %1508 = and i8 %1500, 15
  %1509 = shl i8 %1507, 4
  %1510 = or disjoint i8 %1509, %1508
  %1511 = lshr exact i64 %indvars.iv2149, 1
  %1512 = trunc i64 %1511 to i32
  %1513 = mul i32 %1487, %1512
  %1514 = add i32 %1513, %.016612078.us
  %1515 = add i32 %1514, %1492
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds i8, ptr %1482, i64 %1516
  store i8 %1510, ptr %1517, align 1, !tbaa !60
  %indvars.iv.next2150 = add nuw nsw i64 %indvars.iv2149, 2
  %1518 = icmp slt i64 %indvars.iv.next2150, %1489
  br i1 %1518, label %1494, label %._crit_edge2077.us, !llvm.loop !95

._crit_edge2077.us:                               ; preds = %1494
  %1519 = add nuw nsw i32 %.016612078.us, 1
  %exitcond2152.not = icmp eq i32 %1519, %1483
  br i1 %exitcond2152.not, label %._crit_edge2079, label %.preheader1970.us, !llvm.loop !96

._crit_edge2079:                                  ; preds = %._crit_edge2077.us, %.preheader1970.lr.ph, %.preheader1976
  %1520 = add nuw nsw i32 %.016622080, 1
  %exitcond2153.not = icmp eq i32 %1520, %367
  br i1 %exitcond2153.not, label %1521, label %.preheader1976, !llvm.loop !97

1521:                                             ; preds = %._crit_edge2079
  %1522 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1482, ptr noundef %599, ptr noundef %614, ptr noundef %629, i32 noundef %.01727, i32 noundef %.01701, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1482) #13
  br label %1537

1523:                                             ; preds = %1463
  %1524 = load <4 x i32>, ptr %20, align 8
  %.fr = freeze <4 x i32> %1524
  %1525 = icmp ne <4 x i32> %.fr, zeroinitializer
  %1526 = load i32, ptr %21, align 4
  %.fr2272 = freeze i32 %1526
  %1527 = load i32, ptr %22, align 8
  %.fr2270 = freeze i32 %1527
  %1528 = load i32, ptr %23, align 4
  %1529 = icmp ne i32 %1528, 0
  %1530 = bitcast <4 x i1> %1525 to i4
  %1531 = icmp ne i4 %1530, 0
  %1532 = or i32 %.fr2272, %.fr2270
  %1533 = icmp ne i32 %1532, 0
  %1534 = or i1 %1531, %1533
  %op.rdx2269 = select i1 %1534, i1 true, i1 %1529
  %or.cond407 = and i1 %541, %op.rdx2269
  br i1 %or.cond407, label %1537, label %1535

1535:                                             ; preds = %1523
  %1536 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %.31765, ptr noundef %599, ptr noundef %614, ptr noundef %629, i32 noundef %.01727, i32 noundef %.01701, ptr noundef nonnull %11)
  br label %1537

1537:                                             ; preds = %1535, %1523, %1521
  %.71698 = phi double [ %1522, %1521 ], [ %.516961899, %1523 ], [ %1536, %1535 ]
  %1538 = load i32, ptr %481, align 8
  br i1 %380, label %1539, label %1574

1539:                                             ; preds = %1537
  %1540 = and i32 %1538, -2
  %or.cond410 = icmp eq i32 %1540, 2
  br i1 %or.cond410, label %1541, label %1566

1541:                                             ; preds = %1539
  %1542 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %1538) #13
  %1543 = icmp eq i32 %1542, 4
  br i1 %1543, label %1544, label %1557

1544:                                             ; preds = %1541
  %1545 = load i32, ptr %519, align 4, !tbaa !48
  %1546 = and i32 %1545, 3
  %1547 = icmp eq i32 %1546, 0
  br i1 %1547, label %1548, label %1557

1548:                                             ; preds = %1544
  %1549 = load i32, ptr %481, align 8, !tbaa !30
  %1550 = load i32, ptr %5, align 4, !tbaa !5
  %1551 = shl nsw i32 %1550, 2
  %1552 = load i32, ptr %6, align 4, !tbaa !5
  %1553 = shl nsw i32 %1552, 2
  %1554 = load i32, ptr %7, align 4, !tbaa !5
  %1555 = sdiv i32 %1554, 4
  %1556 = call double @check_matrix(i32 noundef %1549, ptr noundef %644, ptr noundef %614, i32 noundef %1551, i32 noundef %1553, i32 noundef %1555)
  br label %1579

1557:                                             ; preds = %1544, %1541
  %1558 = load i32, ptr %481, align 8, !tbaa !30
  %1559 = load i32, ptr %5, align 4, !tbaa !5
  %1560 = shl nsw i32 %1559, 1
  %1561 = load i32, ptr %6, align 4, !tbaa !5
  %1562 = shl nsw i32 %1561, 1
  %1563 = load i32, ptr %7, align 4, !tbaa !5
  %1564 = sdiv i32 %1563, 2
  %1565 = call double @check_matrix(i32 noundef %1558, ptr noundef %644, ptr noundef %614, i32 noundef %1560, i32 noundef %1562, i32 noundef %1564)
  br label %1579

1566:                                             ; preds = %1539
  %1567 = load i32, ptr %5, align 4, !tbaa !5
  %1568 = shl nsw i32 %1567, 2
  %1569 = load i32, ptr %6, align 4, !tbaa !5
  %1570 = shl nsw i32 %1569, 2
  %1571 = load i32, ptr %7, align 4, !tbaa !5
  %1572 = sdiv i32 %1571, 4
  %1573 = call double @check_matrix(i32 noundef %1538, ptr noundef %644, ptr noundef %614, i32 noundef %1568, i32 noundef %1570, i32 noundef %1572)
  br label %1579

1574:                                             ; preds = %1537
  %1575 = load i32, ptr %5, align 4, !tbaa !5
  %1576 = load i32, ptr %6, align 4, !tbaa !5
  %1577 = load i32, ptr %7, align 4, !tbaa !5
  %1578 = call double @check_matrix(i32 noundef %1538, ptr noundef %644, ptr noundef %614, i32 noundef %1575, i32 noundef %1576, i32 noundef %1577)
  br label %1579

1579:                                             ; preds = %1574, %1548, %1557, %1566
  %.01760 = phi double [ %1556, %1548 ], [ %1565, %1557 ], [ %1573, %1566 ], [ %1578, %1574 ]
  br i1 %or.cond358, label %1580, label %1587

1580:                                             ; preds = %1579
  switch i32 %.01666, label %1587 [
    i32 14, label %1581
    i32 3, label %1581
    i32 1, label %1581
  ]

1581:                                             ; preds = %1580, %1580, %1580
  switch i32 %.01667, label %1587 [
    i32 3, label %1582
    i32 1, label %1582
  ]

1582:                                             ; preds = %1581, %1581
  %1583 = load ptr, ptr %526, align 8, !tbaa !56
  call void @libxsmm_free(ptr noundef %1583) #13
  %1584 = load ptr, ptr %527, align 8, !tbaa !57
  call void @libxsmm_free(ptr noundef %1584) #13
  %1585 = load ptr, ptr %528, align 8, !tbaa !58
  call void @libxsmm_free(ptr noundef %1585) #13
  %1586 = load ptr, ptr %529, align 8, !tbaa !59
  call void @libxsmm_free(ptr noundef %1586) #13
  br label %1587

1587:                                             ; preds = %1581, %1580, %1582, %1579
  %1588 = load i32, ptr %20, align 8, !tbaa !16
  %.not1819 = icmp eq i32 %1588, 0
  br i1 %.not1819, label %1591, label %1589

1589:                                             ; preds = %1587
  %1590 = load ptr, ptr %530, align 8, !tbaa !62
  call void @libxsmm_free(ptr noundef %1590) #13
  br label %1591

1591:                                             ; preds = %1589, %1587
  %1592 = load i32, ptr %21, align 4, !tbaa !17
  %1593 = icmp ne i32 %1592, 0
  %1594 = load i32, ptr %22, align 8
  %1595 = icmp ne i32 %1594, 0
  %or.cond421 = select i1 %1593, i1 true, i1 %1595
  %1596 = load i32, ptr %23, align 4
  %1597 = icmp ne i32 %1596, 0
  %or.cond424 = select i1 %or.cond421, i1 true, i1 %1597
  br i1 %or.cond424, label %1598, label %.thread1903

1598:                                             ; preds = %1591
  %1599 = load ptr, ptr %531, align 8, !tbaa !64
  call void @libxsmm_free(ptr noundef %1599) #13
  %.pr = load i32, ptr %23, align 4, !tbaa !19
  %.not1820 = icmp eq i32 %.pr, 0
  br i1 %.not1820, label %.thread1903, label %1600

1600:                                             ; preds = %1598
  %1601 = load ptr, ptr %532, align 8, !tbaa !66
  call void @libxsmm_free(ptr noundef %1601) #13
  br label %.thread1903

.thread1903:                                      ; preds = %1591, %1600, %1598
  br i1 %or.cond1849, label %1602, label %1604

1602:                                             ; preds = %.thread1903
  %1603 = load ptr, ptr %526, align 8, !tbaa !56
  call void @libxsmm_free(ptr noundef %1603) #13
  br label %1604

1604:                                             ; preds = %1602, %.thread1903
  call void @libxsmm_free(ptr noundef %.31765) #13
  call void @libxsmm_free(ptr noundef %599) #13
  call void @libxsmm_free(ptr noundef %614) #13
  call void @libxsmm_free(ptr noundef %629) #13
  call void @libxsmm_free(ptr noundef %644) #13
  %1605 = load i32, ptr %496, align 8, !tbaa !45
  %1606 = icmp eq i32 %1605, 1
  br i1 %1606, label %1607, label %1608

1607:                                             ; preds = %1604
  call void @libxsmm_free(ptr noundef %.01771) #13
  br label %1608

1608:                                             ; preds = %1607, %1604
  %1609 = load i32, ptr %497, align 4, !tbaa !46
  %1610 = icmp eq i32 %1609, 2
  br i1 %1610, label %1611, label %1612

1611:                                             ; preds = %1608
  call void @libxsmm_free(ptr noundef %.01772) #13
  call void @libxsmm_free(ptr noundef %.01774) #13
  br label %1612

1612:                                             ; preds = %1611, %1608
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #13
  br i1 %380, label %1613, label %1615

1613:                                             ; preds = %1612
  %1614 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38)
  br label %1615

1615:                                             ; preds = %1613, %1612
  %1616 = fcmp ogt double %.01760, 8.000000e-03
  %or.cond430 = and i1 %546, %1616
  br i1 %or.cond5, label %1638, label %1617

1617:                                             ; preds = %1615
  %1618 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.39, double noundef %.71698)
  %1619 = load i32, ptr %6, align 4, !tbaa !5
  %1620 = sitofp i32 %1619 to double
  %1621 = fmul double %542, %1620
  %1622 = load i32, ptr %7, align 4, !tbaa !5
  %1623 = sitofp i32 %1622 to double
  %1624 = fmul double %1621, %1623
  %1625 = load i32, ptr %8, align 4, !tbaa !5
  %1626 = sitofp i32 %1625 to double
  %1627 = fmul double %1624, %1626
  %1628 = fmul double %1627, %543
  %1629 = fmul double %1628, 2.000000e+00
  %1630 = fmul double %.71698, 1.000000e+09
  %1631 = fdiv double %1629, %1630
  %1632 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %1631)
  %1633 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41, double noundef %.01760)
  %1634 = load i32, ptr %497, align 4, !tbaa !46
  %1635 = icmp eq i32 %1634, 2
  br i1 %1635, label %1636, label %1707

1636:                                             ; preds = %1617
  %1637 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.42, double noundef 0.000000e+00)
  br label %1707

1638:                                             ; preds = %1615
  br i1 %544, label %1639, label %1662

1639:                                             ; preds = %1638
  %1640 = load i32, ptr %497, align 4, !tbaa !46
  %1641 = icmp eq i32 %1640, 2
  %1642 = load i32, ptr %6, align 4, !tbaa !5
  %1643 = load i32, ptr %7, align 4, !tbaa !5
  %1644 = load i32, ptr %8, align 4, !tbaa !5
  %1645 = load i32, ptr %3, align 4, !tbaa !5
  %1646 = load i32, ptr %4, align 4, !tbaa !5
  %1647 = load i32, ptr %5, align 4, !tbaa !5
  %1648 = sitofp i32 %1642 to double
  %1649 = fmul double %542, %1648
  %1650 = sitofp i32 %1643 to double
  %1651 = fmul double %1649, %1650
  %1652 = sitofp i32 %1644 to double
  %1653 = fmul double %1651, %1652
  %1654 = fmul double %1653, %543
  %1655 = fmul double %1654, 2.000000e+00
  %1656 = fmul double %.71698, 1.000000e+09
  %1657 = fdiv double %1655, %1656
  br i1 %1641, label %1658, label %1660

1658:                                             ; preds = %1639
  %1659 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.43, ptr noundef %.01656, ptr noundef %.01657, ptr noundef %.01658, ptr noundef %.01659, i32 noundef %1642, i32 noundef %1643, i32 noundef %1644, i32 noundef %1645, i32 noundef %1646, i32 noundef %1647, i32 noundef %367, i32 noundef %.21689, i32 noundef %368, double noundef %1657, double noundef %.01760, double noundef 0.000000e+00)
  br label %switch.lookup2265

1660:                                             ; preds = %1639
  %1661 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44, ptr noundef %.01656, ptr noundef %.01657, ptr noundef %.01658, ptr noundef %.01659, i32 noundef %1642, i32 noundef %1643, i32 noundef %1644, i32 noundef %1645, i32 noundef %1646, i32 noundef %1647, i32 noundef %367, i32 noundef %.21689, i32 noundef %368, double noundef %1657, double noundef %.01760)
  br label %switch.lookup2265

1662:                                             ; preds = %1638
  %1663 = load i32, ptr %6, align 4, !tbaa !5
  %1664 = load i32, ptr %7, align 4, !tbaa !5
  %1665 = load i32, ptr %8, align 4, !tbaa !5
  %1666 = load i32, ptr %3, align 4, !tbaa !5
  %1667 = load i32, ptr %4, align 4, !tbaa !5
  %1668 = load i32, ptr %5, align 4, !tbaa !5
  %1669 = sitofp i32 %1663 to double
  %1670 = fmul double %542, %1669
  %1671 = sitofp i32 %1664 to double
  %1672 = fmul double %1670, %1671
  %1673 = sitofp i32 %1665 to double
  %1674 = fmul double %1672, %1673
  %1675 = fmul double %1674, %543
  %1676 = fmul double %1675, 2.000000e+00
  %1677 = fmul double %.71698, 1.000000e+09
  %1678 = fdiv double %1676, %1677
  %1679 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.45, ptr noundef %.01656, ptr noundef %.01657, ptr noundef %.01658, ptr noundef %.01659, i32 noundef %1663, i32 noundef %1664, i32 noundef %1665, i32 noundef %1666, i32 noundef %1667, i32 noundef %1668, i32 noundef %367, i32 noundef %.21689, i32 noundef %368, double noundef %1678)
  br label %switch.lookup2265

switch.lookup2265:                                ; preds = %1662, %1660, %1658
  %switch.load2267 = load ptr, ptr %switch.gep2266, align 8
  %1680 = load ptr, ptr %1, align 8, !tbaa !9
  %1681 = load i32, ptr %6, align 4, !tbaa !5
  %1682 = load i32, ptr %7, align 4, !tbaa !5
  %1683 = load i32, ptr %8, align 4, !tbaa !5
  %1684 = load i32, ptr %3, align 4, !tbaa !5
  %1685 = load i32, ptr %4, align 4, !tbaa !5
  %1686 = load i32, ptr %5, align 4, !tbaa !5
  %1687 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.48, ptr noundef %1680, ptr noundef %.01656, ptr noundef %.01657, ptr noundef %.01658, ptr noundef %.01659, i32 noundef %1681, i32 noundef %1682, i32 noundef %1683, i32 noundef %1684, i32 noundef %1685, i32 noundef %1686, double noundef 1.000000e+00, double noundef %.11679, i32 noundef %.01668, i32 noundef %.01671, i32 noundef %.01672, i32 noundef %.01673, i32 noundef %.01674, i32 noundef %.01675, i32 noundef %.01676, ptr noundef nonnull %.str.10..str.11, ptr noundef nonnull %switch.load2267, i32 noundef %367, i32 noundef %368, i32 noundef %.01727, i32 noundef %.31726)
  %1688 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.49, double noundef %.71698)
  %1689 = load i32, ptr %6, align 4, !tbaa !5
  %1690 = sitofp i32 %1689 to double
  %1691 = fmul double %542, %1690
  %1692 = load i32, ptr %7, align 4, !tbaa !5
  %1693 = sitofp i32 %1692 to double
  %1694 = fmul double %1691, %1693
  %1695 = load i32, ptr %8, align 4, !tbaa !5
  %1696 = sitofp i32 %1695 to double
  %1697 = fmul double %1694, %1696
  %1698 = fmul double %1697, %543
  %1699 = fmul double %1698, 2.000000e+00
  %1700 = fmul double %.71698, 1.000000e+09
  %1701 = fdiv double %1699, %1700
  %1702 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.50, double noundef %1701)
  br i1 %or.cond430, label %1705, label %1703

1703:                                             ; preds = %switch.lookup2265
  %1704 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41, double noundef %.01760)
  br label %1707

1705:                                             ; preds = %switch.lookup2265
  %1706 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.51)
  br label %1707

.critedge446.thread:                              ; preds = %547
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %10) #13
  br label %1718

1707:                                             ; preds = %1636, %1617, %1705, %1703
  %1708 = phi i1 [ true, %1636 ], [ true, %1617 ], [ true, %1703 ], [ false, %1705 ]
  %.21746 = phi i32 [ 0, %1636 ], [ 0, %1617 ], [ 0, %1703 ], [ 1, %1705 ]
  %1709 = fcmp olt double %.01713, %.01760
  %or.cond434 = select i1 %1709, i1 %544, i1 false
  %or.cond436 = and i1 %or.cond434, %1708
  %.11714 = select i1 %or.cond436, double %.01760, double %.01713
  %1710 = load i64, ptr @tests_executed, align 8, !tbaa !98
  %1711 = add i64 %1710, 1
  store i64 %1711, ptr @tests_executed, align 8, !tbaa !98
  %1712 = icmp ne i32 %.21742, 0
  %1713 = load i32, ptr @is_reference_kernel, align 4
  %1714 = icmp eq i32 %1713, 0
  %or.cond442 = select i1 %1712, i1 %1714, i1 false
  br i1 %or.cond442, label %.critedge.backedge, label %1715

.critedge.backedge:                               ; preds = %1707, %1715
  br label %.critedge, !llvm.loop !100

1715:                                             ; preds = %1707
  %1716 = icmp ne i32 %1713, 0
  %or.cond444 = select i1 %1712, i1 %1716, i1 false
  %1717 = icmp ult i64 %1711, 10
  %or.cond646 = select i1 %or.cond444, i1 %1717, i1 false
  br i1 %or.cond646, label %.critedge.backedge, label %.critedge446

.critedge446:                                     ; preds = %1715
  br i1 %or.cond5, label %1718, label %1720

1718:                                             ; preds = %.critedge446.thread, %.critedge446
  %.2171519141919 = phi double [ %.01713, %.critedge446.thread ], [ %.11714, %.critedge446 ]
  %1719 = call i32 @fclose(ptr noundef %.01707)
  br label %1722

1720:                                             ; preds = %.critedge446
  %1721 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28)
  br label %1722

1722:                                             ; preds = %1720, %1718
  %.2171519141918 = phi double [ %.11714, %1720 ], [ %.2171519141919, %1718 ]
  %1723 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.52, double noundef %.2171519141918)
  %1724 = load i32, ptr %497, align 4, !tbaa !46
  %1725 = icmp eq i32 %1724, 2
  br i1 %1725, label %1726, label %1728

1726:                                             ; preds = %1722
  %1727 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.53, double noundef 0.000000e+00)
  br label %1728

1728:                                             ; preds = %1726, %1722
  %1729 = load i32, ptr %481, align 8, !tbaa !30
  %1730 = icmp eq i32 %1729, 2
  br i1 %1730, label %1731, label %1749

1731:                                             ; preds = %1728
  %1732 = load i32, ptr %497, align 4
  %1733 = icmp eq i32 %1732, 3
  br i1 %1733, label %1734, label %1739

1734:                                             ; preds = %1731
  %1735 = fcmp ult double %.2171519141918, 7.000000e-03
  br i1 %1735, label %1736, label %1822

1736:                                             ; preds = %1734
  %1737 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1738 = call i32 @libxsmm_return_success_code(i32 noundef %1737)
  br label %1822

1739:                                             ; preds = %1731
  %1740 = add i32 %1732, -1
  %or.cond449 = icmp ult i32 %1740, 2
  br i1 %or.cond449, label %1741, label %1744

1741:                                             ; preds = %1739
  %1742 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1743 = call i32 @libxsmm_return_success_code(i32 noundef %1742)
  br label %1822

1744:                                             ; preds = %1739
  %1745 = fcmp ult double %.2171519141918, 5.000000e-03
  br i1 %1745, label %1746, label %1822

1746:                                             ; preds = %1744
  %1747 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1748 = call i32 @libxsmm_return_success_code(i32 noundef %1747)
  br label %1822

1749:                                             ; preds = %1728
  %1750 = load i32, ptr %479, align 4, !tbaa !28
  %1751 = icmp eq i32 %1750, 3
  br i1 %1751, label %1752, label %1757

1752:                                             ; preds = %1749
  %1753 = fcmp ult double %.2171519141918, 8.000000e-03
  br i1 %1753, label %1754, label %1822

1754:                                             ; preds = %1752
  %1755 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1756 = call i32 @libxsmm_return_success_code(i32 noundef %1755)
  br label %1822

1757:                                             ; preds = %1749
  %1758 = load i32, ptr %497, align 4
  %1759 = icmp eq i32 %1758, 3
  switch i32 %1729, label %1806 [
    i32 4, label %1760
    i32 5, label %1783
  ]

1760:                                             ; preds = %1757
  br i1 %1759, label %1761, label %1773

1761:                                             ; preds = %1760
  %1762 = fcmp ult double %.2171519141918, 0x3F826E978D4FDF3B
  br i1 %1762, label %1770, label %1763

1763:                                             ; preds = %1761
  %1764 = load i32, ptr %496, align 8, !tbaa !45
  %1765 = icmp ne i32 %1764, 1
  %1766 = fcmp ult double %.2171519141918, 1.800000e-02
  %or.cond1860 = and i1 %1766, %1765
  br i1 %or.cond1860, label %1767, label %1822

1767:                                             ; preds = %1763
  %1768 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1769 = call i32 @libxsmm_return_success_code(i32 noundef %1768)
  br label %1822

1770:                                             ; preds = %1761
  %1771 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1772 = call i32 @libxsmm_return_success_code(i32 noundef %1771)
  br label %1822

1773:                                             ; preds = %1760
  %1774 = add i32 %1758, -1
  %or.cond452 = icmp ult i32 %1774, 2
  br i1 %or.cond452, label %1775, label %1778

1775:                                             ; preds = %1773
  %1776 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1777 = call i32 @libxsmm_return_success_code(i32 noundef %1776)
  br label %1822

1778:                                             ; preds = %1773
  %1779 = fcmp ult double %.2171519141918, 5.000000e-03
  br i1 %1779, label %1780, label %1822

1780:                                             ; preds = %1778
  %1781 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1782 = call i32 @libxsmm_return_success_code(i32 noundef %1781)
  br label %1822

1783:                                             ; preds = %1757
  br i1 %1759, label %1784, label %1796

1784:                                             ; preds = %1783
  %1785 = fcmp ult double %.2171519141918, 0x3F826E978D4FDF3B
  br i1 %1785, label %1793, label %1786

1786:                                             ; preds = %1784
  %1787 = load i32, ptr %496, align 8, !tbaa !45
  %1788 = icmp ne i32 %1787, 1
  %1789 = fcmp ult double %.2171519141918, 1.800000e-02
  %or.cond1861 = and i1 %1789, %1788
  br i1 %or.cond1861, label %1790, label %1822

1790:                                             ; preds = %1786
  %1791 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1792 = call i32 @libxsmm_return_success_code(i32 noundef %1791)
  br label %1822

1793:                                             ; preds = %1784
  %1794 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1795 = call i32 @libxsmm_return_success_code(i32 noundef %1794)
  br label %1822

1796:                                             ; preds = %1783
  %1797 = add i32 %1758, -1
  %or.cond455 = icmp ult i32 %1797, 2
  br i1 %or.cond455, label %1798, label %1801

1798:                                             ; preds = %1796
  %1799 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1800 = call i32 @libxsmm_return_success_code(i32 noundef %1799)
  br label %1822

1801:                                             ; preds = %1796
  %1802 = fcmp ult double %.2171519141918, 5.000000e-03
  br i1 %1802, label %1803, label %1822

1803:                                             ; preds = %1801
  %1804 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1805 = call i32 @libxsmm_return_success_code(i32 noundef %1804)
  br label %1822

1806:                                             ; preds = %1757
  br i1 %1759, label %1807, label %1812

1807:                                             ; preds = %1806
  %1808 = fcmp ult double %.2171519141918, 7.000000e-04
  br i1 %1808, label %1809, label %1822

1809:                                             ; preds = %1807
  %1810 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1811 = call i32 @libxsmm_return_success_code(i32 noundef %1810)
  br label %1822

1812:                                             ; preds = %1806
  %1813 = add i32 %1758, -1
  %or.cond458 = icmp ult i32 %1813, 2
  br i1 %or.cond458, label %1814, label %1817

1814:                                             ; preds = %1812
  %1815 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1816 = call i32 @libxsmm_return_success_code(i32 noundef %1815)
  br label %1822

1817:                                             ; preds = %1812
  %1818 = fcmp ult double %.2171519141918, 1.200000e-05
  br i1 %1818, label %1819, label %1822

1819:                                             ; preds = %1817
  %1820 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1821 = call i32 @libxsmm_return_success_code(i32 noundef %1820)
  br label %1822

1822:                                             ; preds = %1817, %1807, %1801, %1786, %1778, %1763, %1752, %1744, %1734, %1819, %1814, %1809, %1803, %1798, %1793, %1790, %1780, %1775, %1770, %1767, %1754, %1746, %1741, %1736, %346, %340, %310, %167, %149
  %.01655 = phi i32 [ 1, %346 ], [ %1738, %1736 ], [ %1743, %1741 ], [ %1748, %1746 ], [ %1756, %1754 ], [ %1769, %1767 ], [ %1772, %1770 ], [ %1777, %1775 ], [ %1782, %1780 ], [ %1792, %1790 ], [ %1795, %1793 ], [ %1800, %1798 ], [ %1805, %1803 ], [ %1811, %1809 ], [ %1816, %1814 ], [ %1821, %1819 ], [ 1, %167 ], [ 1, %149 ], [ 1, %310 ], [ 1, %340 ], [ 1, %1734 ], [ 1, %1744 ], [ 1, %1752 ], [ 1, %1763 ], [ 1, %1778 ], [ 1, %1786 ], [ 1, %1801 ], [ 1, %1807 ], [ 1, %1817 ]
  call void @llvm.lifetime.end.p0(i64 232, ptr nonnull %9) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #13
  ret i32 %.01655
}

; 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 nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @char_to_libxsmm_datatype(ptr noundef) local_unnamed_addr #4

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @print_help() local_unnamed_addr #4

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

; Function Attrs: nofree nounwind memory(read)
declare noundef ptr @getenv(ptr nocapture noundef) local_unnamed_addr #6

declare ptr @libxsmm_stristr(ptr noundef, ptr noundef) local_unnamed_addr #7

declare i32 @libxsmm_cpuid(ptr noundef) local_unnamed_addr #7

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

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

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #8

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef ptr @fgets(ptr noundef, i32 noundef, ptr nocapture noundef) local_unnamed_addr #5

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

declare void @libxsmm_rng_set_seed(i32 noundef) local_unnamed_addr #7

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

declare noalias ptr @libxsmm_aligned_malloc(i64 noundef, i64 noundef) local_unnamed_addr #7

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @get_random_posneg_p5_num() local_unnamed_addr #4

declare void @libxsmm_rne_convert_fp32_f16(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #7

declare void @libxsmm_convert_f16_f32(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #7

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @get_random_pos_p5_num() local_unnamed_addr #4

; Function Attrs: nounwind
declare i32 @rand() local_unnamed_addr #10

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @init_random_matrix(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @init_zero_matrix(i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

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

declare void @libxsmm_convert_bf8_f32(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #7

declare void @libxsmm_rne_convert_fp32_bf16(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #7

declare void @libxsmm_convert_hf8_f32(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #7

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @init_identity_matrix(i32 noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @negate_random_cols_rows(i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @init_garbage_matrix(i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @jit_matmul(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

declare void @libxsmm_free(ptr noundef) local_unnamed_addr #7

; Function Attrs: inlinehint nounwind uwtable
declare hidden float @convert_mxfp4_to_float(i8 noundef zeroext) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden signext i8 @convert_mxfp4_to_char(i8 noundef zeroext) local_unnamed_addr #4

declare double @libxsmm_rng_f64() local_unnamed_addr #7

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @ref_matmul(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef) local_unnamed_addr #7

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @convert_output_to_vnni4(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @convert_output_to_vnni2(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @check_matrix(i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #5

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint 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 #5 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nofree nounwind memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #13 = { nounwind }
attributes #14 = { nounwind willreturn memory(read) }
attributes #15 = { cold nounwind }
attributes #16 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 224}
!12 = !{!"gemm_def", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !13, i64 48, !13, i64 56, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !14, i64 124, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !6, i64 184, !6, i64 188, !6, i64 192, !6, i64 196, !6, i64 200, !6, i64 204, !6, i64 208, !6, i64 212, !6, i64 216, !6, i64 220, !6, i64 224}
!13 = !{!"double", !7, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!12, !6, i64 192}
!16 = !{!12, !6, i64 208}
!17 = !{!12, !6, i64 196}
!18 = !{!12, !6, i64 200}
!19 = !{!12, !6, i64 204}
!20 = !{!12, !6, i64 212}
!21 = !{!12, !6, i64 216}
!22 = !{!12, !6, i64 220}
!23 = !{!12, !6, i64 84}
!24 = !{!12, !6, i64 88}
!25 = !{!12, !6, i64 92}
!26 = !{!12, !14, i64 124}
!27 = !{!12, !6, i64 0}
!28 = !{!12, !6, i64 4}
!29 = !{!12, !6, i64 12}
!30 = !{!12, !6, i64 8}
!31 = !{!12, !13, i64 48}
!32 = !{!12, !13, i64 56}
!33 = !{!12, !6, i64 64}
!34 = !{!12, !6, i64 68}
!35 = !{!12, !6, i64 72}
!36 = !{!12, !6, i64 76}
!37 = !{!12, !6, i64 80}
!38 = !{!12, !6, i64 96}
!39 = !{!12, !6, i64 100}
!40 = !{!12, !6, i64 104}
!41 = !{!12, !6, i64 108}
!42 = !{!12, !6, i64 112}
!43 = !{!12, !6, i64 116}
!44 = !{!12, !6, i64 120}
!45 = !{!12, !6, i64 184}
!46 = !{!12, !6, i64 188}
!47 = !{!12, !6, i64 16}
!48 = !{!12, !6, i64 20}
!49 = !{!12, !6, i64 24}
!50 = !{!12, !6, i64 28}
!51 = !{!12, !6, i64 32}
!52 = !{!12, !6, i64 36}
!53 = !{!14, !14, i64 0}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = !{!12, !10, i64 128}
!57 = !{!12, !10, i64 176}
!58 = !{!12, !10, i64 136}
!59 = !{!12, !10, i64 144}
!60 = !{!7, !7, i64 0}
!61 = distinct !{!61, !55}
!62 = !{!12, !10, i64 152}
!63 = distinct !{!63, !55}
!64 = !{!12, !10, i64 160}
!65 = distinct !{!65, !55}
!66 = !{!12, !10, i64 168}
!67 = distinct !{!67, !55}
!68 = !{!12, !6, i64 44}
!69 = !{!70, !10, i64 0}
!70 = !{!"fusion_args", !10, i64 0, !10, i64 8}
!71 = !{!12, !6, i64 40}
!72 = !{!70, !10, i64 8}
!73 = distinct !{!73, !55}
!74 = distinct !{!74, !55}
!75 = distinct !{!75, !55}
!76 = distinct !{!76, !55}
!77 = distinct !{!77, !55}
!78 = distinct !{!78, !55}
!79 = distinct !{!79, !55}
!80 = distinct !{!80, !55}
!81 = distinct !{!81, !55}
!82 = !{!83, !83, i64 0}
!83 = !{!"short", !7, i64 0}
!84 = distinct !{!84, !55}
!85 = distinct !{!85, !55}
!86 = distinct !{!86, !55}
!87 = distinct !{!87, !55}
!88 = distinct !{!88, !55}
!89 = distinct !{!89, !55}
!90 = distinct !{!90, !55}
!91 = distinct !{!91, !55}
!92 = distinct !{!92, !55}
!93 = distinct !{!93, !55}
!94 = distinct !{!94, !55}
!95 = distinct !{!95, !55}
!96 = distinct !{!96, !55}
!97 = distinct !{!97, !55}
!98 = !{!99, !99, i64 0}
!99 = !{!"long long", !7, i64 0}
!100 = distinct !{!100, !55}


; Effective O3 passes: BDCEPass,ConstantMergePass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass