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

; 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 %5371

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 %5371

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 %5371

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 %5371

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 %5371

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 = %5175, %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 %33, align 4, !tbaa !5
  %1632 = icmp ne i32 %1631, 0
  br i1 %1632, label %1633, label %1653

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

1638:                                             ; preds = %1633
  store i32 0, ptr %46, align 4, !tbaa !5
  store i32 2, ptr %49, align 4
  br label %1650

1639:                                             ; preds = %1633
  store i32 1, ptr %46, align 4, !tbaa !5
  br label %1640

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

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

1645:                                             ; preds = %1640
  %1646 = load i32, ptr %46, align 4, !tbaa !5
  %1647 = icmp eq i32 %1646, 0
  br i1 %1647, label %1648, label %1649

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

1649:                                             ; preds = %1645
  store i32 0, ptr %49, align 4
  br label %1650

1650:                                             ; preds = %1649, %1648, %1638
  call void @llvm.lifetime.end.p0(i64 512, ptr %55) #10
  %1651 = load i32, ptr %49, align 4
  switch i32 %1651, label %5155 [
    i32 0, label %1652
  ]

1652:                                             ; preds = %1650
  br label %1653

1653:                                             ; preds = %1652, %1630
  %1654 = load i32, ptr %17, align 4, !tbaa !5
  %1655 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  store i32 %1654, ptr %1655, align 8, !tbaa !49
  %1656 = load i32, ptr %18, align 4, !tbaa !5
  %1657 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 5
  store i32 %1656, ptr %1657, align 4, !tbaa !50
  %1658 = load i32, ptr %19, align 4, !tbaa !5
  %1659 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 6
  store i32 %1658, ptr %1659, align 8, !tbaa !51
  %1660 = load i32, ptr %14, align 4, !tbaa !5
  %1661 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 7
  store i32 %1660, ptr %1661, align 4, !tbaa !52
  %1662 = load i32, ptr %15, align 4, !tbaa !5
  %1663 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 8
  store i32 %1662, ptr %1663, align 8, !tbaa !53
  %1664 = load i32, ptr %16, align 4, !tbaa !5
  %1665 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 9
  store i32 %1664, ptr %1665, 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)
  %1666 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 14
  %1667 = load i32, ptr %1666, align 8, !tbaa !35
  %1668 = icmp eq i32 %1667, 0
  br i1 %1668, label %1669, label %1780

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

1681:                                             ; preds = %1669
  br label %1775

1682:                                             ; preds = %1669
  %1683 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1684 = load i32, ptr %1683, align 8, !tbaa !29
  %1685 = icmp eq i32 1, %1684
  br i1 %1685, label %1686, label %1687

1686:                                             ; preds = %1682
  br label %1773

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

1691:                                             ; preds = %1687
  br label %1771

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

1696:                                             ; preds = %1692
  br label %1769

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

1701:                                             ; preds = %1697
  br label %1767

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

1706:                                             ; preds = %1702
  br label %1765

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

1711:                                             ; preds = %1707
  br label %1763

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

1716:                                             ; preds = %1712
  br label %1761

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

1721:                                             ; preds = %1717
  br label %1759

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

1726:                                             ; preds = %1722
  br label %1757

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

1731:                                             ; preds = %1727
  br label %1755

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

1736:                                             ; preds = %1732
  br label %1753

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

1741:                                             ; preds = %1737
  br label %1751

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

1746:                                             ; preds = %1742
  br label %1749

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

1748:                                             ; No predecessors!
  br label %1749

1749:                                             ; preds = %1748, %1746
  %1750 = phi i32 [ 1, %1746 ], [ 0, %1748 ]
  br label %1751

1751:                                             ; preds = %1749, %1741
  %1752 = phi i32 [ 1, %1741 ], [ %1750, %1749 ]
  br label %1753

1753:                                             ; preds = %1751, %1736
  %1754 = phi i32 [ 2, %1736 ], [ %1752, %1751 ]
  br label %1755

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

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

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

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

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

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

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

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

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

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

1775:                                             ; preds = %1773, %1681
  %1776 = phi i32 [ 8, %1681 ], [ %1774, %1773 ]
  %1777 = sext i32 %1776 to i64
  %1778 = mul i64 %1677, %1777
  %1779 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1778, i64 noundef 64)
  store ptr %1779, ptr %56, align 8, !tbaa !9
  br label %1891

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

1792:                                             ; preds = %1780
  br label %1886

1793:                                             ; preds = %1780
  %1794 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1795 = load i32, ptr %1794, align 8, !tbaa !29
  %1796 = icmp eq i32 1, %1795
  br i1 %1796, label %1797, label %1798

1797:                                             ; preds = %1793
  br label %1884

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

1802:                                             ; preds = %1798
  br label %1882

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

1807:                                             ; preds = %1803
  br label %1880

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

1812:                                             ; preds = %1808
  br label %1878

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

1817:                                             ; preds = %1813
  br label %1876

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

1822:                                             ; preds = %1818
  br label %1874

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

1827:                                             ; preds = %1823
  br label %1872

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

1832:                                             ; preds = %1828
  br label %1870

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

1837:                                             ; preds = %1833
  br label %1868

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

1842:                                             ; preds = %1838
  br label %1866

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

1847:                                             ; preds = %1843
  br label %1864

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

1852:                                             ; preds = %1848
  br label %1862

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

1857:                                             ; preds = %1853
  br label %1860

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

1859:                                             ; No predecessors!
  br label %1860

1860:                                             ; preds = %1859, %1857
  %1861 = phi i32 [ 1, %1857 ], [ 0, %1859 ]
  br label %1862

1862:                                             ; preds = %1860, %1852
  %1863 = phi i32 [ 1, %1852 ], [ %1861, %1860 ]
  br label %1864

1864:                                             ; preds = %1862, %1847
  %1865 = phi i32 [ 2, %1847 ], [ %1863, %1862 ]
  br label %1866

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

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

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

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

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

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

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

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

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

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

1886:                                             ; preds = %1884, %1792
  %1887 = phi i32 [ 8, %1792 ], [ %1885, %1884 ]
  %1888 = sext i32 %1887 to i64
  %1889 = mul i64 %1788, %1888
  %1890 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1889, i64 noundef 64)
  store ptr %1890, ptr %56, align 8, !tbaa !9
  br label %1891

1891:                                             ; preds = %1886, %1775
  %1892 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 15
  %1893 = load i32, ptr %1892, align 4, !tbaa !36
  %1894 = icmp eq i32 %1893, 0
  br i1 %1894, label %1895, label %2006

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

1907:                                             ; preds = %1895
  br label %2001

1908:                                             ; preds = %1895
  %1909 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1910 = load i32, ptr %1909, align 4, !tbaa !30
  %1911 = icmp eq i32 1, %1910
  br i1 %1911, label %1912, label %1913

1912:                                             ; preds = %1908
  br label %1999

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

1917:                                             ; preds = %1913
  br label %1997

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

1922:                                             ; preds = %1918
  br label %1995

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

1927:                                             ; preds = %1923
  br label %1993

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

1932:                                             ; preds = %1928
  br label %1991

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

1937:                                             ; preds = %1933
  br label %1989

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

1942:                                             ; preds = %1938
  br label %1987

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

1947:                                             ; preds = %1943
  br label %1985

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

1952:                                             ; preds = %1948
  br label %1983

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

1957:                                             ; preds = %1953
  br label %1981

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

1962:                                             ; preds = %1958
  br label %1979

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

1967:                                             ; preds = %1963
  br label %1977

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

1972:                                             ; preds = %1968
  br label %1975

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

1974:                                             ; No predecessors!
  br label %1975

1975:                                             ; preds = %1974, %1972
  %1976 = phi i32 [ 1, %1972 ], [ 0, %1974 ]
  br label %1977

1977:                                             ; preds = %1975, %1967
  %1978 = phi i32 [ 1, %1967 ], [ %1976, %1975 ]
  br label %1979

1979:                                             ; preds = %1977, %1962
  %1980 = phi i32 [ 2, %1962 ], [ %1978, %1977 ]
  br label %1981

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

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

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

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

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

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

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

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

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

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

2001:                                             ; preds = %1999, %1907
  %2002 = phi i32 [ 8, %1907 ], [ %2000, %1999 ]
  %2003 = sext i32 %2002 to i64
  %2004 = mul i64 %1903, %2003
  %2005 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2004, i64 noundef 64)
  store ptr %2005, ptr %57, align 8, !tbaa !9
  br label %2117

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

2018:                                             ; preds = %2006
  br label %2112

2019:                                             ; preds = %2006
  %2020 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2021 = load i32, ptr %2020, align 4, !tbaa !30
  %2022 = icmp eq i32 1, %2021
  br i1 %2022, label %2023, label %2024

2023:                                             ; preds = %2019
  br label %2110

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

2028:                                             ; preds = %2024
  br label %2108

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

2033:                                             ; preds = %2029
  br label %2106

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

2038:                                             ; preds = %2034
  br label %2104

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

2043:                                             ; preds = %2039
  br label %2102

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

2048:                                             ; preds = %2044
  br label %2100

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

2053:                                             ; preds = %2049
  br label %2098

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

2058:                                             ; preds = %2054
  br label %2096

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

2063:                                             ; preds = %2059
  br label %2094

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

2068:                                             ; preds = %2064
  br label %2092

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

2073:                                             ; preds = %2069
  br label %2090

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

2078:                                             ; preds = %2074
  br label %2088

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

2083:                                             ; preds = %2079
  br label %2086

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

2085:                                             ; No predecessors!
  br label %2086

2086:                                             ; preds = %2085, %2083
  %2087 = phi i32 [ 1, %2083 ], [ 0, %2085 ]
  br label %2088

2088:                                             ; preds = %2086, %2078
  %2089 = phi i32 [ 1, %2078 ], [ %2087, %2086 ]
  br label %2090

2090:                                             ; preds = %2088, %2073
  %2091 = phi i32 [ 2, %2073 ], [ %2089, %2088 ]
  br label %2092

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

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

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

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

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

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

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

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

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

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

2112:                                             ; preds = %2110, %2018
  %2113 = phi i32 [ 8, %2018 ], [ %2111, %2110 ]
  %2114 = sext i32 %2113 to i64
  %2115 = mul i64 %2014, %2114
  %2116 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2115, i64 noundef 64)
  store ptr %2116, ptr %57, align 8, !tbaa !9
  br label %2117

2117:                                             ; preds = %2112, %2001
  %2118 = load i32, ptr %16, align 4, !tbaa !5
  %2119 = sext i32 %2118 to i64
  %2120 = load i32, ptr %18, align 4, !tbaa !5
  %2121 = sext i32 %2120 to i64
  %2122 = mul i64 %2119, %2121
  %2123 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2124 = load i32, ptr %2123, align 8, !tbaa !32
  %2125 = icmp eq i32 0, %2124
  br i1 %2125, label %2126, label %2127

2126:                                             ; preds = %2117
  br label %2220

2127:                                             ; preds = %2117
  %2128 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2129 = load i32, ptr %2128, align 8, !tbaa !32
  %2130 = icmp eq i32 1, %2129
  br i1 %2130, label %2131, label %2132

2131:                                             ; preds = %2127
  br label %2218

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

2136:                                             ; preds = %2132
  br label %2216

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

2141:                                             ; preds = %2137
  br label %2214

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

2146:                                             ; preds = %2142
  br label %2212

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

2151:                                             ; preds = %2147
  br label %2210

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

2156:                                             ; preds = %2152
  br label %2208

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

2161:                                             ; preds = %2157
  br label %2206

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

2166:                                             ; preds = %2162
  br label %2204

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

2171:                                             ; preds = %2167
  br label %2202

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

2176:                                             ; preds = %2172
  br label %2200

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

2181:                                             ; preds = %2177
  br label %2198

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

2186:                                             ; preds = %2182
  br label %2196

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

2191:                                             ; preds = %2187
  br label %2194

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

2193:                                             ; No predecessors!
  br label %2194

2194:                                             ; preds = %2193, %2191
  %2195 = phi i32 [ 1, %2191 ], [ 0, %2193 ]
  br label %2196

2196:                                             ; preds = %2194, %2186
  %2197 = phi i32 [ 1, %2186 ], [ %2195, %2194 ]
  br label %2198

2198:                                             ; preds = %2196, %2181
  %2199 = phi i32 [ 2, %2181 ], [ %2197, %2196 ]
  br label %2200

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

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

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

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

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

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

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

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

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

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

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

2233:                                             ; preds = %2220
  br label %2327

2234:                                             ; preds = %2220
  %2235 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2236 = load i32, ptr %2235, align 8, !tbaa !32
  %2237 = icmp eq i32 1, %2236
  br i1 %2237, label %2238, label %2239

2238:                                             ; preds = %2234
  br label %2325

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

2243:                                             ; preds = %2239
  br label %2323

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

2248:                                             ; preds = %2244
  br label %2321

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

2253:                                             ; preds = %2249
  br label %2319

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

2258:                                             ; preds = %2254
  br label %2317

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

2263:                                             ; preds = %2259
  br label %2315

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

2268:                                             ; preds = %2264
  br label %2313

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

2273:                                             ; preds = %2269
  br label %2311

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

2278:                                             ; preds = %2274
  br label %2309

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

2283:                                             ; preds = %2279
  br label %2307

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

2288:                                             ; preds = %2284
  br label %2305

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

2293:                                             ; preds = %2289
  br label %2303

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

2298:                                             ; preds = %2294
  br label %2301

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

2300:                                             ; No predecessors!
  br label %2301

2301:                                             ; preds = %2300, %2298
  %2302 = phi i32 [ 1, %2298 ], [ 0, %2300 ]
  br label %2303

2303:                                             ; preds = %2301, %2293
  %2304 = phi i32 [ 1, %2293 ], [ %2302, %2301 ]
  br label %2305

2305:                                             ; preds = %2303, %2288
  %2306 = phi i32 [ 2, %2288 ], [ %2304, %2303 ]
  br label %2307

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

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

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

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

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

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

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

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

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

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

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

2340:                                             ; preds = %2327
  br label %2434

2341:                                             ; preds = %2327
  %2342 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2343 = load i32, ptr %2342, align 8, !tbaa !32
  %2344 = icmp eq i32 1, %2343
  br i1 %2344, label %2345, label %2346

2345:                                             ; preds = %2341
  br label %2432

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

2350:                                             ; preds = %2346
  br label %2430

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

2355:                                             ; preds = %2351
  br label %2428

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

2360:                                             ; preds = %2356
  br label %2426

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

2365:                                             ; preds = %2361
  br label %2424

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

2370:                                             ; preds = %2366
  br label %2422

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

2375:                                             ; preds = %2371
  br label %2420

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

2380:                                             ; preds = %2376
  br label %2418

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

2385:                                             ; preds = %2381
  br label %2416

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

2390:                                             ; preds = %2386
  br label %2414

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

2395:                                             ; preds = %2391
  br label %2412

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

2400:                                             ; preds = %2396
  br label %2410

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

2405:                                             ; preds = %2401
  br label %2408

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

2407:                                             ; No predecessors!
  br label %2408

2408:                                             ; preds = %2407, %2405
  %2409 = phi i32 [ 1, %2405 ], [ 0, %2407 ]
  br label %2410

2410:                                             ; preds = %2408, %2400
  %2411 = phi i32 [ 1, %2400 ], [ %2409, %2408 ]
  br label %2412

2412:                                             ; preds = %2410, %2395
  %2413 = phi i32 [ 2, %2395 ], [ %2411, %2410 ]
  br label %2414

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

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

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

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

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

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

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

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

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

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

2434:                                             ; preds = %2432, %2340
  %2435 = phi i32 [ 8, %2340 ], [ %2433, %2432 ]
  %2436 = sext i32 %2435 to i64
  %2437 = mul i64 %2336, %2436
  %2438 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2437, i64 noundef 64)
  store ptr %2438, ptr %60, align 8, !tbaa !9
  %2439 = load i32, ptr %10, align 4, !tbaa !5
  %2440 = icmp eq i32 %2439, 12
  br i1 %2440, label %2441, label %2540

2441:                                             ; preds = %2434
  %2442 = load i32, ptr %11, align 4, !tbaa !5
  %2443 = icmp eq i32 %2442, 3
  br i1 %2443, label %2444, label %2540

2444:                                             ; preds = %2441
  %2445 = load i32, ptr %12, align 4, !tbaa !5
  %2446 = icmp eq i32 %2445, 3
  br i1 %2446, label %2453, label %2447

2447:                                             ; preds = %2444
  %2448 = load i32, ptr %12, align 4, !tbaa !5
  %2449 = icmp eq i32 %2448, 1
  br i1 %2449, label %2453, label %2450

2450:                                             ; preds = %2447
  %2451 = load i32, ptr %12, align 4, !tbaa !5
  %2452 = icmp eq i32 %2451, 14
  br i1 %2452, label %2453, label %2540

2453:                                             ; preds = %2450, %2447, %2444
  %2454 = load i32, ptr %13, align 4, !tbaa !5
  %2455 = icmp eq i32 %2454, 3
  br i1 %2455, label %2459, label %2456

2456:                                             ; preds = %2453
  %2457 = load i32, ptr %13, align 4, !tbaa !5
  %2458 = icmp eq i32 %2457, 1
  br i1 %2458, label %2459, label %2540

2459:                                             ; preds = %2456, %2453
  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
  %2460 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2461 = load i32, ptr %2460, align 8, !tbaa !49
  %2462 = sext i32 %2461 to i64
  %2463 = mul i64 %2462, 4
  %2464 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2463, i64 noundef 64)
  store ptr %2464, ptr %68, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %2465 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2466 = load i32, ptr %2465, align 8, !tbaa !49
  %2467 = sext i32 %2466 to i64
  %2468 = mul i64 %2467, 2
  %2469 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2468, i64 noundef 64)
  store ptr %2469, ptr %69, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  %2470 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2471 = load i32, ptr %2470, align 8, !tbaa !49
  %2472 = sext i32 %2471 to i64
  %2473 = mul i64 %2472, 4
  %2474 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2473, i64 noundef 64)
  store ptr %2474, ptr %70, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  %2475 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2476 = load i32, ptr %2475, align 8, !tbaa !49
  %2477 = sext i32 %2476 to i64
  %2478 = mul i64 %2477, 2
  %2479 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2478, i64 noundef 64)
  store ptr %2479, ptr %71, align 8, !tbaa !9
  store i32 0, ptr %67, align 4, !tbaa !5
  br label %2480

2480:                                             ; preds = %2500, %2459
  %2481 = load i32, ptr %67, align 4, !tbaa !5
  %2482 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2483 = load i32, ptr %2482, align 8, !tbaa !49
  %2484 = icmp slt i32 %2481, %2483
  br i1 %2484, label %2485, label %2503

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

2500:                                             ; preds = %2485
  %2501 = load i32, ptr %67, align 4, !tbaa !5
  %2502 = add nsw i32 %2501, 1
  store i32 %2502, ptr %67, align 4, !tbaa !5
  br label %2480, !llvm.loop !55

2503:                                             ; preds = %2480
  %2504 = load ptr, ptr %68, align 8, !tbaa !9
  %2505 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  store ptr %2504, ptr %2505, align 8, !tbaa !57
  %2506 = load ptr, ptr %69, align 8, !tbaa !9
  %2507 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 36
  store ptr %2506, ptr %2507, align 8, !tbaa !58
  %2508 = load ptr, ptr %70, align 8, !tbaa !9
  %2509 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 31
  store ptr %2508, ptr %2509, align 8, !tbaa !59
  %2510 = load ptr, ptr %71, align 8, !tbaa !9
  %2511 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 32
  store ptr %2510, ptr %2511, align 8, !tbaa !60
  %2512 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  %2513 = load ptr, ptr %2512, align 8, !tbaa !57
  %2514 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 36
  %2515 = load ptr, ptr %2514, align 8, !tbaa !58
  %2516 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2517 = load i32, ptr %2516, align 8, !tbaa !49
  %2518 = sext i32 %2517 to i64
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %2513, ptr noundef %2515, i64 noundef %2518)
  %2519 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 36
  %2520 = load ptr, ptr %2519, align 8, !tbaa !58
  %2521 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  %2522 = load ptr, ptr %2521, align 8, !tbaa !57
  %2523 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2524 = load i32, ptr %2523, align 8, !tbaa !49
  %2525 = sext i32 %2524 to i64
  call void @libxsmm_convert_f16_f32(ptr noundef %2520, ptr noundef %2522, i64 noundef %2525)
  %2526 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 31
  %2527 = load ptr, ptr %2526, align 8, !tbaa !59
  %2528 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 32
  %2529 = load ptr, ptr %2528, align 8, !tbaa !60
  %2530 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2531 = load i32, ptr %2530, align 8, !tbaa !49
  %2532 = sext i32 %2531 to i64
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %2527, ptr noundef %2529, i64 noundef %2532)
  %2533 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 32
  %2534 = load ptr, ptr %2533, align 8, !tbaa !60
  %2535 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 31
  %2536 = load ptr, ptr %2535, align 8, !tbaa !59
  %2537 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2538 = load i32, ptr %2537, align 8, !tbaa !49
  %2539 = sext i32 %2538 to i64
  call void @libxsmm_convert_f16_f32(ptr noundef %2534, ptr noundef %2536, i64 noundef %2539)
  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 %2540

2540:                                             ; preds = %2503, %2456, %2450, %2441, %2434
  %2541 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %2542 = load i32, ptr %2541, align 8, !tbaa !17
  %2543 = icmp ugt i32 %2542, 0
  br i1 %2543, label %2544, label %2571

2544:                                             ; preds = %2540
  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
  %2545 = load i32, ptr %14, align 4, !tbaa !5
  %2546 = load i32, ptr %29, align 4, !tbaa !5
  %2547 = mul nsw i32 %2545, %2546
  %2548 = sext i32 %2547 to i64
  %2549 = mul i64 %2548, 1
  %2550 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2549, i64 noundef 64)
  store ptr %2550, ptr %73, align 8, !tbaa !9
  store i32 0, ptr %72, align 4, !tbaa !5
  br label %2551

2551:                                             ; preds = %2565, %2544
  %2552 = load i32, ptr %72, align 4, !tbaa !5
  %2553 = load i32, ptr %14, align 4, !tbaa !5
  %2554 = load i32, ptr %29, align 4, !tbaa !5
  %2555 = mul nsw i32 %2553, %2554
  %2556 = icmp slt i32 %2552, %2555
  br i1 %2556, label %2557, label %2568

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

2565:                                             ; preds = %2557
  %2566 = load i32, ptr %72, align 4, !tbaa !5
  %2567 = add nsw i32 %2566, 1
  store i32 %2567, ptr %72, align 4, !tbaa !5
  br label %2551, !llvm.loop !62

2568:                                             ; preds = %2551
  %2569 = load ptr, ptr %73, align 8, !tbaa !9
  %2570 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 33
  store ptr %2569, ptr %2570, 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 %2571

2571:                                             ; preds = %2568, %2540
  %2572 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %2573 = load i32, ptr %2572, align 4, !tbaa !18
  %2574 = icmp ugt i32 %2573, 0
  br i1 %2574, label %2583, label %2575

2575:                                             ; preds = %2571
  %2576 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %2577 = load i32, ptr %2576, align 8, !tbaa !19
  %2578 = icmp ugt i32 %2577, 0
  br i1 %2578, label %2583, label %2579

2579:                                             ; preds = %2575
  %2580 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %2581 = load i32, ptr %2580, align 4, !tbaa !20
  %2582 = icmp ugt i32 %2581, 0
  br i1 %2582, label %2583, label %2654

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

2599:                                             ; preds = %2612, %2583
  %2600 = load i32, ptr %74, align 4, !tbaa !5
  %2601 = load i32, ptr %75, align 4, !tbaa !5
  %2602 = icmp ult i32 %2600, %2601
  br i1 %2602, label %2603, label %2615

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

2612:                                             ; preds = %2603
  %2613 = load i32, ptr %74, align 4, !tbaa !5
  %2614 = add nsw i32 %2613, 1
  store i32 %2614, ptr %74, align 4, !tbaa !5
  br label %2599, !llvm.loop !64

2615:                                             ; preds = %2599
  %2616 = load ptr, ptr %76, align 8, !tbaa !9
  %2617 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 34
  store ptr %2616, ptr %2617, align 8, !tbaa !65
  %2618 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %2619 = load i32, ptr %2618, align 4, !tbaa !20
  %2620 = icmp ugt i32 %2619, 0
  br i1 %2620, label %2621, label %2653

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

2636:                                             ; preds = %2647, %2621
  %2637 = load i32, ptr %74, align 4, !tbaa !5
  %2638 = load i32, ptr %75, align 4, !tbaa !5
  %2639 = icmp ult i32 %2637, %2638
  br i1 %2639, label %2640, label %2650

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

2647:                                             ; preds = %2640
  %2648 = load i32, ptr %74, align 4, !tbaa !5
  %2649 = add nsw i32 %2648, 1
  store i32 %2649, ptr %74, align 4, !tbaa !5
  br label %2636, !llvm.loop !66

2650:                                             ; preds = %2636
  %2651 = load ptr, ptr %77, align 8, !tbaa !9
  %2652 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 35
  store ptr %2651, ptr %2652, align 8, !tbaa !67
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #10
  br label %2653

2653:                                             ; preds = %2650, %2615
  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 %2654

2654:                                             ; preds = %2653, %2579
  %2655 = load i32, ptr %10, align 4, !tbaa !5
  %2656 = icmp eq i32 %2655, 12
  br i1 %2656, label %2657, label %2691

2657:                                             ; preds = %2654
  %2658 = load i32, ptr %11, align 4, !tbaa !5
  %2659 = icmp eq i32 %2658, 2
  br i1 %2659, label %2660, label %2691

2660:                                             ; preds = %2657
  %2661 = load i32, ptr %13, align 4, !tbaa !5
  %2662 = icmp eq i32 %2661, 2
  br i1 %2662, label %2666, label %2663

2663:                                             ; preds = %2660
  %2664 = load i32, ptr %13, align 4, !tbaa !5
  %2665 = icmp eq i32 %2664, 1
  br i1 %2665, label %2666, label %2691

2666:                                             ; preds = %2663, %2660
  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
  %2667 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2668 = load i32, ptr %2667, align 8, !tbaa !49
  %2669 = sext i32 %2668 to i64
  %2670 = mul i64 %2669, 4
  %2671 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2670, i64 noundef 64)
  store ptr %2671, ptr %79, align 8, !tbaa !9
  store i32 0, ptr %78, align 4, !tbaa !5
  br label %2672

2672:                                             ; preds = %2685, %2666
  %2673 = load i32, ptr %78, align 4, !tbaa !5
  %2674 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2675 = load i32, ptr %2674, align 8, !tbaa !49
  %2676 = icmp slt i32 %2673, %2675
  br i1 %2676, label %2677, label %2688

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

2685:                                             ; preds = %2677
  %2686 = load i32, ptr %78, align 4, !tbaa !5
  %2687 = add nsw i32 %2686, 1
  store i32 %2687, ptr %78, align 4, !tbaa !5
  br label %2672, !llvm.loop !68

2688:                                             ; preds = %2672
  %2689 = load ptr, ptr %79, align 8, !tbaa !9
  %2690 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  store ptr %2689, ptr %2690, 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 %2691

2691:                                             ; preds = %2688, %2663, %2657, %2654
  %2692 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %2693 = load i32, ptr %2692, align 8, !tbaa !47
  %2694 = icmp eq i32 %2693, 1
  br i1 %2694, label %2695, label %2812

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

2704:                                             ; preds = %2695
  br label %2798

2705:                                             ; preds = %2695
  %2706 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2707 = load i32, ptr %2706, align 8, !tbaa !32
  %2708 = icmp eq i32 1, %2707
  br i1 %2708, label %2709, label %2710

2709:                                             ; preds = %2705
  br label %2796

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

2714:                                             ; preds = %2710
  br label %2794

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

2719:                                             ; preds = %2715
  br label %2792

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

2724:                                             ; preds = %2720
  br label %2790

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

2729:                                             ; preds = %2725
  br label %2788

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

2734:                                             ; preds = %2730
  br label %2786

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

2739:                                             ; preds = %2735
  br label %2784

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

2744:                                             ; preds = %2740
  br label %2782

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

2749:                                             ; preds = %2745
  br label %2780

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

2754:                                             ; preds = %2750
  br label %2778

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

2759:                                             ; preds = %2755
  br label %2776

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

2764:                                             ; preds = %2760
  br label %2774

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

2769:                                             ; preds = %2765
  br label %2772

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

2771:                                             ; No predecessors!
  br label %2772

2772:                                             ; preds = %2771, %2769
  %2773 = phi i32 [ 1, %2769 ], [ 0, %2771 ]
  br label %2774

2774:                                             ; preds = %2772, %2764
  %2775 = phi i32 [ 1, %2764 ], [ %2773, %2772 ]
  br label %2776

2776:                                             ; preds = %2774, %2759
  %2777 = phi i32 [ 2, %2759 ], [ %2775, %2774 ]
  br label %2778

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

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

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

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

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

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

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

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

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

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

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

2812:                                             ; preds = %2798, %2691
  %2813 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %2814 = load i32, ptr %2813, align 4, !tbaa !48
  %2815 = icmp eq i32 %2814, 2
  br i1 %2815, label %2816, label %2850

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

2850:                                             ; preds = %2816, %2812
  %2851 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 14
  %2852 = load i32, ptr %2851, align 8, !tbaa !35
  %2853 = icmp eq i32 %2852, 0
  br i1 %2853, label %2854, label %3046

2854:                                             ; preds = %2850
  %2855 = load i32, ptr %47, align 4, !tbaa !5
  %2856 = icmp eq i32 %2855, 0
  br i1 %2856, label %2857, label %3036

2857:                                             ; preds = %2854
  %2858 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  %2859 = load i32, ptr %2858, align 4, !tbaa !21
  %2860 = icmp ugt i32 %2859, 0
  br i1 %2860, label %2861, label %2908

2861:                                             ; preds = %2857
  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
  %2862 = load i32, ptr %14, align 4, !tbaa !5
  %2863 = sext i32 %2862 to i64
  %2864 = load i32, ptr %19, align 4, !tbaa !5
  %2865 = sext i32 %2864 to i64
  %2866 = mul i64 %2863, %2865
  %2867 = load i32, ptr %29, align 4, !tbaa !5
  %2868 = sext i32 %2867 to i64
  %2869 = mul i64 %2866, %2868
  %2870 = mul i64 %2869, 1
  %2871 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2870, i64 noundef 64)
  store ptr %2871, ptr %61, align 8, !tbaa !9
  %2872 = load ptr, ptr %61, align 8, !tbaa !9
  store ptr %2872, ptr %82, align 8, !tbaa !9
  %2873 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %2873, ptr %83, align 8, !tbaa !9
  %2874 = load ptr, ptr %61, align 8, !tbaa !9
  %2875 = load i32, ptr %29, align 4, !tbaa !5
  %2876 = load i32, ptr %14, align 4, !tbaa !5
  %2877 = load i32, ptr %19, align 4, !tbaa !5
  %2878 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %2879 = load i32, ptr %2878, align 4, !tbaa !48
  %2880 = icmp eq i32 %2879, 2
  br i1 %2880, label %2881, label %2882

2881:                                             ; preds = %2861
  br label %2885

2882:                                             ; preds = %2861
  %2883 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %2884 = load i32, ptr %2883, align 4, !tbaa !25
  br label %2885

2885:                                             ; preds = %2882, %2881
  %2886 = phi i32 [ 1, %2881 ], [ %2884, %2882 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef 4, ptr noundef %2874, i32 noundef %2875, i32 noundef %2876, i32 noundef %2877, i32 noundef %2886)
  store i32 0, ptr %81, align 4, !tbaa !5
  br label %2887

2887:                                             ; preds = %2904, %2885
  %2888 = load i32, ptr %81, align 4, !tbaa !5
  %2889 = load i32, ptr %14, align 4, !tbaa !5
  %2890 = load i32, ptr %19, align 4, !tbaa !5
  %2891 = mul nsw i32 %2889, %2890
  %2892 = load i32, ptr %29, align 4, !tbaa !5
  %2893 = mul nsw i32 %2891, %2892
  %2894 = icmp slt i32 %2888, %2893
  br i1 %2894, label %2895, label %2907

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

2904:                                             ; preds = %2895
  %2905 = load i32, ptr %81, align 4, !tbaa !5
  %2906 = add nsw i32 %2905, 1
  store i32 %2906, ptr %81, align 4, !tbaa !5
  br label %2887, !llvm.loop !74

2907:                                             ; preds = %2887
  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 %3035

2908:                                             ; preds = %2857
  %2909 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  %2910 = load i32, ptr %2909, align 8, !tbaa !22
  %2911 = icmp ugt i32 %2910, 0
  br i1 %2911, label %2912, label %2959

2912:                                             ; preds = %2908
  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
  %2913 = load i32, ptr %14, align 4, !tbaa !5
  %2914 = sext i32 %2913 to i64
  %2915 = load i32, ptr %19, align 4, !tbaa !5
  %2916 = sext i32 %2915 to i64
  %2917 = mul i64 %2914, %2916
  %2918 = load i32, ptr %29, align 4, !tbaa !5
  %2919 = sext i32 %2918 to i64
  %2920 = mul i64 %2917, %2919
  %2921 = mul i64 %2920, 1
  %2922 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2921, i64 noundef 64)
  store ptr %2922, ptr %61, align 8, !tbaa !9
  %2923 = load ptr, ptr %61, align 8, !tbaa !9
  store ptr %2923, ptr %86, align 8, !tbaa !9
  %2924 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %2924, ptr %87, align 8, !tbaa !9
  %2925 = load ptr, ptr %61, align 8, !tbaa !9
  %2926 = load i32, ptr %29, align 4, !tbaa !5
  %2927 = load i32, ptr %14, align 4, !tbaa !5
  %2928 = load i32, ptr %19, align 4, !tbaa !5
  %2929 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %2930 = load i32, ptr %2929, align 4, !tbaa !48
  %2931 = icmp eq i32 %2930, 2
  br i1 %2931, label %2932, label %2933

2932:                                             ; preds = %2912
  br label %2936

2933:                                             ; preds = %2912
  %2934 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %2935 = load i32, ptr %2934, align 4, !tbaa !25
  br label %2936

2936:                                             ; preds = %2933, %2932
  %2937 = phi i32 [ 1, %2932 ], [ %2935, %2933 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef 4, ptr noundef %2925, i32 noundef %2926, i32 noundef %2927, i32 noundef %2928, i32 noundef %2937)
  store i32 0, ptr %85, align 4, !tbaa !5
  br label %2938

2938:                                             ; preds = %2955, %2936
  %2939 = load i32, ptr %85, align 4, !tbaa !5
  %2940 = load i32, ptr %14, align 4, !tbaa !5
  %2941 = load i32, ptr %19, align 4, !tbaa !5
  %2942 = mul nsw i32 %2940, %2941
  %2943 = load i32, ptr %29, align 4, !tbaa !5
  %2944 = mul nsw i32 %2942, %2943
  %2945 = icmp slt i32 %2939, %2944
  br i1 %2945, label %2946, label %2958

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

2955:                                             ; preds = %2946
  %2956 = load i32, ptr %85, align 4, !tbaa !5
  %2957 = add nsw i32 %2956, 1
  store i32 %2957, ptr %85, align 4, !tbaa !5
  br label %2938, !llvm.loop !75

2958:                                             ; preds = %2938
  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 %3034

2959:                                             ; preds = %2908
  %2960 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  %2961 = load i32, ptr %2960, align 4, !tbaa !23
  %2962 = icmp ugt i32 %2961, 0
  br i1 %2962, label %2963, label %3010

2963:                                             ; preds = %2959
  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
  %2964 = load i32, ptr %14, align 4, !tbaa !5
  %2965 = sext i32 %2964 to i64
  %2966 = load i32, ptr %19, align 4, !tbaa !5
  %2967 = sext i32 %2966 to i64
  %2968 = mul i64 %2965, %2967
  %2969 = load i32, ptr %29, align 4, !tbaa !5
  %2970 = sext i32 %2969 to i64
  %2971 = mul i64 %2968, %2970
  %2972 = mul i64 %2971, 1
  %2973 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2972, i64 noundef 64)
  store ptr %2973, ptr %61, align 8, !tbaa !9
  %2974 = load ptr, ptr %61, align 8, !tbaa !9
  store ptr %2974, ptr %90, align 8, !tbaa !9
  %2975 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %2975, ptr %91, align 8, !tbaa !9
  %2976 = load ptr, ptr %61, align 8, !tbaa !9
  %2977 = load i32, ptr %29, align 4, !tbaa !5
  %2978 = load i32, ptr %14, align 4, !tbaa !5
  %2979 = load i32, ptr %19, align 4, !tbaa !5
  %2980 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %2981 = load i32, ptr %2980, align 4, !tbaa !48
  %2982 = icmp eq i32 %2981, 2
  br i1 %2982, label %2983, label %2984

2983:                                             ; preds = %2963
  br label %2987

2984:                                             ; preds = %2963
  %2985 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %2986 = load i32, ptr %2985, align 4, !tbaa !25
  br label %2987

2987:                                             ; preds = %2984, %2983
  %2988 = phi i32 [ 1, %2983 ], [ %2986, %2984 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef 5, ptr noundef %2976, i32 noundef %2977, i32 noundef %2978, i32 noundef %2979, i32 noundef %2988)
  store i32 0, ptr %89, align 4, !tbaa !5
  br label %2989

2989:                                             ; preds = %3006, %2987
  %2990 = load i32, ptr %89, align 4, !tbaa !5
  %2991 = load i32, ptr %14, align 4, !tbaa !5
  %2992 = load i32, ptr %19, align 4, !tbaa !5
  %2993 = mul nsw i32 %2991, %2992
  %2994 = load i32, ptr %29, align 4, !tbaa !5
  %2995 = mul nsw i32 %2993, %2994
  %2996 = icmp slt i32 %2990, %2995
  br i1 %2996, label %2997, label %3009

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

3006:                                             ; preds = %2997
  %3007 = load i32, ptr %89, align 4, !tbaa !5
  %3008 = add nsw i32 %3007, 1
  store i32 %3008, ptr %89, align 4, !tbaa !5
  br label %2989, !llvm.loop !76

3009:                                             ; preds = %2989
  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 %3033

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

3020:                                             ; preds = %3010
  br label %3031

3021:                                             ; preds = %3010
  %3022 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %3023 = load i32, ptr %3022, align 8, !tbaa !17
  %3024 = icmp ugt i32 %3023, 0
  br i1 %3024, label %3025, label %3026

3025:                                             ; preds = %3021
  br label %3029

3026:                                             ; preds = %3021
  %3027 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %3028 = load i32, ptr %3027, align 4, !tbaa !25
  br label %3029

3029:                                             ; preds = %3026, %3025
  %3030 = phi i32 [ 1, %3025 ], [ %3028, %3026 ]
  br label %3031

3031:                                             ; preds = %3029, %3020
  %3032 = phi i32 [ 1, %3020 ], [ %3030, %3029 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3012, ptr noundef %3013, i32 noundef %3014, i32 noundef %3015, i32 noundef %3016, i32 noundef %3032)
  br label %3033

3033:                                             ; preds = %3031, %3009
  br label %3034

3034:                                             ; preds = %3033, %2958
  br label %3035

3035:                                             ; preds = %3034, %2907
  br label %3045

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

3045:                                             ; preds = %3036, %3035
  br label %3082

3046:                                             ; preds = %2850
  %3047 = load i32, ptr %47, align 4, !tbaa !5
  %3048 = icmp eq i32 %3047, 0
  br i1 %3048, label %3049, label %3072

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

3059:                                             ; preds = %3049
  br label %3070

3060:                                             ; preds = %3049
  %3061 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %3062 = load i32, ptr %3061, align 8, !tbaa !17
  %3063 = icmp ugt i32 %3062, 0
  br i1 %3063, label %3064, label %3065

3064:                                             ; preds = %3060
  br label %3068

3065:                                             ; preds = %3060
  %3066 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %3067 = load i32, ptr %3066, align 4, !tbaa !25
  br label %3068

3068:                                             ; preds = %3065, %3064
  %3069 = phi i32 [ 1, %3064 ], [ %3067, %3065 ]
  br label %3070

3070:                                             ; preds = %3068, %3059
  %3071 = phi i32 [ 1, %3059 ], [ %3069, %3068 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3051, ptr noundef %3052, i32 noundef %3053, i32 noundef %3054, i32 noundef %3055, i32 noundef %3071)
  br label %3081

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

3081:                                             ; preds = %3072, %3070
  br label %3082

3082:                                             ; preds = %3081, %3045
  %3083 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 15
  %3084 = load i32, ptr %3083, align 4, !tbaa !36
  %3085 = icmp eq i32 %3084, 0
  br i1 %3085, label %3086, label %3113

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

3096:                                             ; preds = %3086
  br label %3100

3097:                                             ; preds = %3086
  %3098 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 20
  %3099 = load i32, ptr %3098, align 8, !tbaa !26
  br label %3100

3100:                                             ; preds = %3097, %3096
  %3101 = phi i32 [ 1, %3096 ], [ %3099, %3097 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3088, ptr noundef %3089, i32 noundef %3090, i32 noundef %3091, i32 noundef %3092, i32 noundef %3101)
  %3102 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %3103 = load i32, ptr %3102, align 4, !tbaa !48
  %3104 = icmp eq i32 %3103, 2
  br i1 %3104, label %3105, label %3112

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

3112:                                             ; preds = %3105, %3100
  br label %3140

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

3123:                                             ; preds = %3113
  br label %3127

3124:                                             ; preds = %3113
  %3125 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 20
  %3126 = load i32, ptr %3125, align 8, !tbaa !26
  br label %3127

3127:                                             ; preds = %3124, %3123
  %3128 = phi i32 [ 1, %3123 ], [ %3126, %3124 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3115, ptr noundef %3116, i32 noundef %3117, i32 noundef %3118, i32 noundef %3119, i32 noundef %3128)
  %3129 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %3130 = load i32, ptr %3129, align 4, !tbaa !48
  %3131 = icmp eq i32 %3130, 2
  br i1 %3131, label %3132, label %3139

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

3139:                                             ; preds = %3132, %3127
  br label %3140

3140:                                             ; preds = %3139, %3112
  %3141 = load double, ptr %28, align 8, !tbaa !11
  %3142 = fcmp oeq double %3141, 0.000000e+00
  br i1 %3142, label %3143, label %3159

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

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

3175:                                             ; preds = %3159, %3143
  %3176 = load i32, ptr %41, align 4, !tbaa !5
  %3177 = icmp ne i32 %3176, 0
  br i1 %3177, label %3181, label %3178

3178:                                             ; preds = %3175
  %3179 = load i32, ptr %42, align 4, !tbaa !5
  %3180 = icmp ne i32 %3179, 0
  br i1 %3180, label %3181, label %3185

3181:                                             ; preds = %3178, %3175
  %3182 = load ptr, ptr %56, align 8, !tbaa !9
  %3183 = load ptr, ptr %57, align 8, !tbaa !9
  %3184 = load ptr, ptr %60, align 8, !tbaa !9
  call void @ref_fused_matmul(ptr noundef %44, ptr noundef %3182, ptr noundef %3183, ptr noundef %3184, ptr noundef %66)
  br label %4384

3185:                                             ; preds = %3178
  %3186 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %3187 = load i32, ptr %3186, align 8, !tbaa !17
  %3188 = icmp ugt i32 %3187, 0
  br i1 %3188, label %3189, label %3731

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

3205:                                             ; preds = %3189
  br label %3299

3206:                                             ; preds = %3189
  %3207 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3208 = load i32, ptr %3207, align 8, !tbaa !29
  %3209 = icmp eq i32 1, %3208
  br i1 %3209, label %3210, label %3211

3210:                                             ; preds = %3206
  br label %3297

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

3215:                                             ; preds = %3211
  br label %3295

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

3220:                                             ; preds = %3216
  br label %3293

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

3225:                                             ; preds = %3221
  br label %3291

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

3230:                                             ; preds = %3226
  br label %3289

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

3235:                                             ; preds = %3231
  br label %3287

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

3240:                                             ; preds = %3236
  br label %3285

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

3245:                                             ; preds = %3241
  br label %3283

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

3250:                                             ; preds = %3246
  br label %3281

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

3255:                                             ; preds = %3251
  br label %3279

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

3260:                                             ; preds = %3256
  br label %3277

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

3265:                                             ; preds = %3261
  br label %3275

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

3270:                                             ; preds = %3266
  br label %3273

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

3272:                                             ; No predecessors!
  br label %3273

3273:                                             ; preds = %3272, %3270
  %3274 = phi i32 [ 1, %3270 ], [ 0, %3272 ]
  br label %3275

3275:                                             ; preds = %3273, %3265
  %3276 = phi i32 [ 1, %3265 ], [ %3274, %3273 ]
  br label %3277

3277:                                             ; preds = %3275, %3260
  %3278 = phi i32 [ 2, %3260 ], [ %3276, %3275 ]
  br label %3279

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

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

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

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

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

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

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

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

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

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

3299:                                             ; preds = %3297, %3205
  %3300 = phi i32 [ 8, %3205 ], [ %3298, %3297 ]
  %3301 = sext i32 %3300 to i64
  %3302 = mul i64 %3201, %3301
  %3303 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %3302, i64 noundef 64)
  store ptr %3303, 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
  %3304 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %3304, ptr %98, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  %3305 = load ptr, ptr %93, align 8, !tbaa !9
  store ptr %3305, ptr %99, align 8, !tbaa !9
  store i32 0, ptr %94, align 4, !tbaa !5
  br label %3306

3306:                                             ; preds = %3629, %3299
  %3307 = load i32, ptr %94, align 4, !tbaa !5
  %3308 = load i32, ptr %29, align 4, !tbaa !5
  %3309 = icmp slt i32 %3307, %3308
  br i1 %3309, label %3310, label %3632

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

3311:                                             ; preds = %3625, %3310
  %3312 = load i32, ptr %95, align 4, !tbaa !5
  %3313 = load i32, ptr %17, align 4, !tbaa !5
  %3314 = icmp slt i32 %3312, %3313
  br i1 %3314, label %3315, label %3628

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

3316:                                             ; preds = %3621, %3315
  %3317 = load i32, ptr %96, align 4, !tbaa !5
  %3318 = load i32, ptr %19, align 4, !tbaa !5
  %3319 = icmp slt i32 %3317, %3318
  br i1 %3319, label %3320, label %3624

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

3621:                                             ; preds = %3320
  %3622 = load i32, ptr %96, align 4, !tbaa !5
  %3623 = add nsw i32 %3622, 8
  store i32 %3623, ptr %96, align 4, !tbaa !5
  br label %3316, !llvm.loop !77

3624:                                             ; preds = %3316
  br label %3625

3625:                                             ; preds = %3624
  %3626 = load i32, ptr %95, align 4, !tbaa !5
  %3627 = add nsw i32 %3626, 1
  store i32 %3627, ptr %95, align 4, !tbaa !5
  br label %3311, !llvm.loop !78

3628:                                             ; preds = %3311
  br label %3629

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

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

3641:                                             ; preds = %3727, %3632
  %3642 = load i32, ptr %94, align 4, !tbaa !5
  %3643 = load i32, ptr %29, align 4, !tbaa !5
  %3644 = icmp slt i32 %3642, %3643
  br i1 %3644, label %3645, label %3730

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

3646:                                             ; preds = %3723, %3645
  %3647 = load i32, ptr %96, align 4, !tbaa !5
  %3648 = load i32, ptr %19, align 4, !tbaa !5
  %3649 = sdiv i32 %3648, 4
  %3650 = icmp slt i32 %3647, %3649
  br i1 %3650, label %3651, label %3726

3651:                                             ; preds = %3646
  store i32 0, ptr %95, align 4, !tbaa !5
  br label %3652

3652:                                             ; preds = %3719, %3651
  %3653 = load i32, ptr %95, align 4, !tbaa !5
  %3654 = load i32, ptr %17, align 4, !tbaa !5
  %3655 = icmp slt i32 %3653, %3654
  br i1 %3655, label %3656, label %3722

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

3667:                                             ; preds = %3715, %3656
  %3668 = load i32, ptr %97, align 4, !tbaa !5
  %3669 = icmp slt i32 %3668, 4
  br i1 %3669, label %3670, label %3718

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

3715:                                             ; preds = %3670
  %3716 = load i32, ptr %97, align 4, !tbaa !5
  %3717 = add nsw i32 %3716, 1
  store i32 %3717, ptr %97, align 4, !tbaa !5
  br label %3667, !llvm.loop !80

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

3719:                                             ; preds = %3718
  %3720 = load i32, ptr %95, align 4, !tbaa !5
  %3721 = add nsw i32 %3720, 1
  store i32 %3721, ptr %95, align 4, !tbaa !5
  br label %3652, !llvm.loop !81

3722:                                             ; preds = %3652
  br label %3723

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

3726:                                             ; preds = %3646
  br label %3727

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

3730:                                             ; preds = %3641
  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 %3731

3731:                                             ; preds = %3730, %3185
  %3732 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %3733 = load i32, ptr %3732, align 4, !tbaa !18
  %3734 = icmp ugt i32 %3733, 0
  br i1 %3734, label %3735, label %3914

3735:                                             ; preds = %3731
  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
  %3736 = load i32, ptr %14, align 4, !tbaa !5
  %3737 = sext i32 %3736 to i64
  %3738 = load i32, ptr %19, align 4, !tbaa !5
  %3739 = sext i32 %3738 to i64
  %3740 = udiv i64 %3739, 2
  %3741 = mul i64 %3737, %3740
  %3742 = load i32, ptr %29, align 4, !tbaa !5
  %3743 = sext i32 %3742 to i64
  %3744 = mul i64 %3741, %3743
  %3745 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %3744, i64 noundef 64)
  store ptr %3745, 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
  %3746 = load ptr, ptr %56, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %3746)
  %3747 = load i32, ptr %14, align 4, !tbaa !5
  %3748 = sext i32 %3747 to i64
  %3749 = load i32, ptr %19, align 4, !tbaa !5
  %3750 = sext i32 %3749 to i64
  %3751 = mul i64 %3748, %3750
  %3752 = load i32, ptr %29, align 4, !tbaa !5
  %3753 = sext i32 %3752 to i64
  %3754 = mul i64 %3751, %3753
  %3755 = mul i64 %3754, 2
  %3756 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %3755, i64 noundef 64)
  store ptr %3756, ptr %56, align 8, !tbaa !9
  %3757 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %3757, ptr %115, align 8, !tbaa !9
  store i32 0, ptr %106, align 4, !tbaa !5
  br label %3758

3758:                                             ; preds = %3900, %3735
  %3759 = load i32, ptr %106, align 4, !tbaa !5
  %3760 = load i32, ptr %29, align 4, !tbaa !5
  %3761 = icmp slt i32 %3759, %3760
  br i1 %3761, label %3762, label %3903

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

3763:                                             ; preds = %3896, %3762
  %3764 = load i32, ptr %107, align 4, !tbaa !5
  %3765 = load i32, ptr %17, align 4, !tbaa !5
  %3766 = icmp slt i32 %3764, %3765
  br i1 %3766, label %3767, label %3899

3767:                                             ; preds = %3763
  store i32 0, ptr %108, align 4, !tbaa !5
  br label %3768

3768:                                             ; preds = %3892, %3767
  %3769 = load i32, ptr %108, align 4, !tbaa !5
  %3770 = load i32, ptr %19, align 4, !tbaa !5
  %3771 = sdiv i32 %3770, 2
  %3772 = icmp slt i32 %3769, %3771
  br i1 %3772, label %3773, label %3895

3773:                                             ; preds = %3768
  %3774 = load i32, ptr %108, align 4, !tbaa !5
  %3775 = srem i32 %3774, 16
  %3776 = icmp eq i32 %3775, 0
  br i1 %3776, label %3777, label %3802

3777:                                             ; preds = %3773
  %3778 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 34
  %3779 = load ptr, ptr %3778, align 8, !tbaa !65
  %3780 = load i32, ptr %106, align 4, !tbaa !5
  %3781 = load i32, ptr %14, align 4, !tbaa !5
  %3782 = mul nsw i32 %3780, %3781
  %3783 = load i32, ptr %19, align 4, !tbaa !5
  %3784 = sdiv i32 %3783, 32
  %3785 = mul nsw i32 %3782, %3784
  %3786 = load i32, ptr %108, align 4, !tbaa !5
  %3787 = sdiv i32 %3786, 16
  %3788 = load i32, ptr %14, align 4, !tbaa !5
  %3789 = mul nsw i32 %3787, %3788
  %3790 = add nsw i32 %3785, %3789
  %3791 = load i32, ptr %107, align 4, !tbaa !5
  %3792 = add nsw i32 %3790, %3791
  %3793 = sext i32 %3792 to i64
  %3794 = getelementptr inbounds i8, ptr %3779, i64 %3793
  %3795 = load i8, ptr %3794, align 1, !tbaa !61
  store i8 %3795, ptr %111, align 1, !tbaa !61
  %3796 = load i8, ptr %111, align 1, !tbaa !61
  %3797 = zext i8 %3796 to i32
  store i32 %3797, ptr %112, align 4, !tbaa !5
  %3798 = load i32, ptr %112, align 4, !tbaa !5
  %3799 = shl i32 %3798, 23
  store i32 %3799, ptr %112, align 4, !tbaa !5
  %3800 = load ptr, ptr %113, align 8, !tbaa !9
  %3801 = load float, ptr %3800, align 4, !tbaa !13
  store float %3801, ptr %114, align 4, !tbaa !13
  br label %3802

3802:                                             ; preds = %3777, %3773
  store i32 0, ptr %109, align 4, !tbaa !5
  br label %3803

3803:                                             ; preds = %3888, %3802
  %3804 = load i32, ptr %109, align 4, !tbaa !5
  %3805 = icmp slt i32 %3804, 2
  br i1 %3805, label %3806, label %3891

3806:                                             ; preds = %3803
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #10
  %3807 = call i32 @rand() #10
  %3808 = srem i32 %3807, 16
  %3809 = trunc i32 %3808 to i8
  store i8 %3809, ptr %116, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %117) #10
  %3810 = call i32 @rand() #10
  %3811 = srem i32 %3810, 16
  %3812 = trunc i32 %3811 to i8
  store i8 %3812, 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
  %3813 = load i8, ptr %116, align 1, !tbaa !61
  %3814 = call float @convert_mxfp4_to_float(i8 noundef zeroext %3813)
  %3815 = load float, ptr %114, align 4, !tbaa !13
  %3816 = fmul float %3814, %3815
  store float %3816, ptr %119, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #10
  %3817 = load i8, ptr %117, 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 %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)
  %3821 = load i8, ptr %116, align 1, !tbaa !61
  %3822 = zext i8 %3821 to i32
  %3823 = and i32 %3822, 15
  %3824 = trunc i32 %3823 to i8
  store i8 %3824, ptr %116, align 1, !tbaa !61
  %3825 = load i8, ptr %117, align 1, !tbaa !61
  %3826 = zext i8 %3825 to i32
  %3827 = and i32 %3826, 15
  %3828 = shl i32 %3827, 4
  %3829 = trunc i32 %3828 to i8
  store i8 %3829, ptr %117, align 1, !tbaa !61
  %3830 = load i8, ptr %116, align 1, !tbaa !61
  %3831 = zext i8 %3830 to i32
  %3832 = load i8, ptr %117, align 1, !tbaa !61
  %3833 = zext i8 %3832 to i32
  %3834 = or i32 %3831, %3833
  %3835 = trunc i32 %3834 to i8
  store i8 %3835, ptr %118, align 1, !tbaa !61
  %3836 = load i8, ptr %118, align 1, !tbaa !61
  %3837 = load ptr, ptr %110, align 8, !tbaa !9
  %3838 = load i32, ptr %106, align 4, !tbaa !5
  %3839 = load i32, ptr %14, align 4, !tbaa !5
  %3840 = mul nsw i32 %3838, %3839
  %3841 = load i32, ptr %19, align 4, !tbaa !5
  %3842 = sdiv i32 %3841, 2
  %3843 = mul nsw i32 %3840, %3842
  %3844 = load i32, ptr %108, align 4, !tbaa !5
  %3845 = load i32, ptr %14, align 4, !tbaa !5
  %3846 = mul nsw i32 %3844, %3845
  %3847 = add nsw i32 %3843, %3846
  %3848 = load i32, ptr %107, align 4, !tbaa !5
  %3849 = add nsw i32 %3847, %3848
  %3850 = sext i32 %3849 to i64
  %3851 = getelementptr inbounds i8, ptr %3837, i64 %3850
  store i8 %3836, ptr %3851, align 1, !tbaa !61
  %3852 = load i16, ptr %121, align 2, !tbaa !84
  %3853 = load ptr, ptr %115, align 8, !tbaa !9
  %3854 = load i32, ptr %106, align 4, !tbaa !5
  %3855 = load i32, ptr %14, align 4, !tbaa !5
  %3856 = mul nsw i32 %3854, %3855
  %3857 = load i32, ptr %19, align 4, !tbaa !5
  %3858 = mul nsw i32 %3856, %3857
  %3859 = load i32, ptr %108, align 4, !tbaa !5
  %3860 = load i32, ptr %14, align 4, !tbaa !5
  %3861 = mul nsw i32 %3859, %3860
  %3862 = mul nsw i32 %3861, 2
  %3863 = add nsw i32 %3858, %3862
  %3864 = load i32, ptr %107, align 4, !tbaa !5
  %3865 = mul nsw i32 %3864, 2
  %3866 = add nsw i32 %3863, %3865
  %3867 = add nsw i32 %3866, 0
  %3868 = sext i32 %3867 to i64
  %3869 = getelementptr inbounds i16, ptr %3853, i64 %3868
  store i16 %3852, ptr %3869, align 2, !tbaa !84
  %3870 = load i16, ptr %122, align 2, !tbaa !84
  %3871 = load ptr, ptr %115, align 8, !tbaa !9
  %3872 = load i32, ptr %106, align 4, !tbaa !5
  %3873 = load i32, ptr %14, align 4, !tbaa !5
  %3874 = mul nsw i32 %3872, %3873
  %3875 = load i32, ptr %19, align 4, !tbaa !5
  %3876 = mul nsw i32 %3874, %3875
  %3877 = load i32, ptr %108, align 4, !tbaa !5
  %3878 = load i32, ptr %14, align 4, !tbaa !5
  %3879 = mul nsw i32 %3877, %3878
  %3880 = mul nsw i32 %3879, 2
  %3881 = add nsw i32 %3876, %3880
  %3882 = load i32, ptr %107, align 4, !tbaa !5
  %3883 = mul nsw i32 %3882, 2
  %3884 = add nsw i32 %3881, %3883
  %3885 = add nsw i32 %3884, 1
  %3886 = sext i32 %3885 to i64
  %3887 = getelementptr inbounds i16, ptr %3871, i64 %3886
  store i16 %3870, ptr %3887, 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 %3888

3888:                                             ; preds = %3806
  %3889 = load i32, ptr %109, align 4, !tbaa !5
  %3890 = add nsw i32 %3889, 2
  store i32 %3890, ptr %109, align 4, !tbaa !5
  br label %3803, !llvm.loop !86

3891:                                             ; preds = %3803
  br label %3892

3892:                                             ; preds = %3891
  %3893 = load i32, ptr %108, align 4, !tbaa !5
  %3894 = add nsw i32 %3893, 1
  store i32 %3894, ptr %108, align 4, !tbaa !5
  br label %3768, !llvm.loop !87

3895:                                             ; preds = %3768
  br label %3896

3896:                                             ; preds = %3895
  %3897 = load i32, ptr %107, align 4, !tbaa !5
  %3898 = add nsw i32 %3897, 1
  store i32 %3898, ptr %107, align 4, !tbaa !5
  br label %3763, !llvm.loop !88

3899:                                             ; preds = %3763
  br label %3900

3900:                                             ; preds = %3899
  %3901 = load i32, ptr %106, align 4, !tbaa !5
  %3902 = add nsw i32 %3901, 1
  store i32 %3902, ptr %106, align 4, !tbaa !5
  br label %3758, !llvm.loop !89

3903:                                             ; preds = %3758
  %3904 = load ptr, ptr %110, align 8, !tbaa !9
  %3905 = load ptr, ptr %57, align 8, !tbaa !9
  %3906 = load ptr, ptr %58, align 8, !tbaa !9
  %3907 = load ptr, ptr %59, align 8, !tbaa !9
  %3908 = load i32, ptr %40, align 4, !tbaa !5
  %3909 = load i32, ptr %33, align 4, !tbaa !5
  %3910 = call double @jit_matmul(ptr noundef %44, ptr noundef %3904, ptr noundef %3905, ptr noundef %3906, ptr noundef %3907, i32 noundef %3908, i32 noundef %3909, ptr noundef %65)
  store double %3910, ptr %32, align 8, !tbaa !11
  %3911 = load ptr, ptr %110, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %3911)
  %3912 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 2, ptr %3912, align 8, !tbaa !29
  %3913 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 16
  store i32 1, ptr %3913, 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 %3914

3914:                                             ; preds = %3903, %3731
  %3915 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %3916 = load i32, ptr %3915, align 8, !tbaa !19
  %3917 = icmp ugt i32 %3916, 0
  br i1 %3917, label %3918, label %4095

3918:                                             ; preds = %3914
  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
  %3919 = load i32, ptr %14, align 4, !tbaa !5
  %3920 = sext i32 %3919 to i64
  %3921 = load i32, ptr %19, align 4, !tbaa !5
  %3922 = sext i32 %3921 to i64
  %3923 = udiv i64 %3922, 2
  %3924 = mul i64 %3920, %3923
  %3925 = load i32, ptr %29, align 4, !tbaa !5
  %3926 = sext i32 %3925 to i64
  %3927 = mul i64 %3924, %3926
  %3928 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %3927, i64 noundef 64)
  store ptr %3928, 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
  %3929 = load ptr, ptr %56, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %3929)
  %3930 = load i32, ptr %14, align 4, !tbaa !5
  %3931 = sext i32 %3930 to i64
  %3932 = load i32, ptr %19, align 4, !tbaa !5
  %3933 = sext i32 %3932 to i64
  %3934 = mul i64 %3931, %3933
  %3935 = load i32, ptr %29, align 4, !tbaa !5
  %3936 = sext i32 %3935 to i64
  %3937 = mul i64 %3934, %3936
  %3938 = mul i64 %3937, 4
  %3939 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %3938, i64 noundef 64)
  store ptr %3939, ptr %56, align 8, !tbaa !9
  %3940 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %3940, ptr %132, align 8, !tbaa !9
  store i32 0, ptr %123, align 4, !tbaa !5
  br label %3941

3941:                                             ; preds = %4081, %3918
  %3942 = load i32, ptr %123, align 4, !tbaa !5
  %3943 = load i32, ptr %29, align 4, !tbaa !5
  %3944 = icmp slt i32 %3942, %3943
  br i1 %3944, label %3945, label %4084

3945:                                             ; preds = %3941
  store i32 0, ptr %124, align 4, !tbaa !5
  br label %3946

3946:                                             ; preds = %4077, %3945
  %3947 = load i32, ptr %124, align 4, !tbaa !5
  %3948 = load i32, ptr %17, align 4, !tbaa !5
  %3949 = icmp slt i32 %3947, %3948
  br i1 %3949, label %3950, label %4080

3950:                                             ; preds = %3946
  store i32 0, ptr %125, align 4, !tbaa !5
  br label %3951

3951:                                             ; preds = %4073, %3950
  %3952 = load i32, ptr %125, align 4, !tbaa !5
  %3953 = load i32, ptr %19, align 4, !tbaa !5
  %3954 = sdiv i32 %3953, 2
  %3955 = icmp slt i32 %3952, %3954
  br i1 %3955, label %3956, label %4076

3956:                                             ; preds = %3951
  %3957 = load i32, ptr %125, align 4, !tbaa !5
  %3958 = srem i32 %3957, 16
  %3959 = icmp eq i32 %3958, 0
  br i1 %3959, label %3960, label %3985

3960:                                             ; preds = %3956
  %3961 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 34
  %3962 = load ptr, ptr %3961, align 8, !tbaa !65
  %3963 = load i32, ptr %123, align 4, !tbaa !5
  %3964 = load i32, ptr %14, align 4, !tbaa !5
  %3965 = mul nsw i32 %3963, %3964
  %3966 = load i32, ptr %19, align 4, !tbaa !5
  %3967 = sdiv i32 %3966, 32
  %3968 = mul nsw i32 %3965, %3967
  %3969 = load i32, ptr %125, align 4, !tbaa !5
  %3970 = sdiv i32 %3969, 16
  %3971 = load i32, ptr %14, align 4, !tbaa !5
  %3972 = mul nsw i32 %3970, %3971
  %3973 = add nsw i32 %3968, %3972
  %3974 = load i32, ptr %124, align 4, !tbaa !5
  %3975 = add nsw i32 %3973, %3974
  %3976 = sext i32 %3975 to i64
  %3977 = getelementptr inbounds i8, ptr %3962, i64 %3976
  %3978 = load i8, ptr %3977, align 1, !tbaa !61
  store i8 %3978, ptr %128, align 1, !tbaa !61
  %3979 = load i8, ptr %128, align 1, !tbaa !61
  %3980 = zext i8 %3979 to i32
  store i32 %3980, ptr %129, align 4, !tbaa !5
  %3981 = load i32, ptr %129, align 4, !tbaa !5
  %3982 = shl i32 %3981, 23
  store i32 %3982, ptr %129, align 4, !tbaa !5
  %3983 = load ptr, ptr %130, align 8, !tbaa !9
  %3984 = load float, ptr %3983, align 4, !tbaa !13
  store float %3984, ptr %131, align 4, !tbaa !13
  br label %3985

3985:                                             ; preds = %3960, %3956
  store i32 0, ptr %126, align 4, !tbaa !5
  br label %3986

3986:                                             ; preds = %4069, %3985
  %3987 = load i32, ptr %126, align 4, !tbaa !5
  %3988 = icmp slt i32 %3987, 2
  br i1 %3988, label %3989, label %4072

3989:                                             ; preds = %3986
  call void @llvm.lifetime.start.p0(i64 1, ptr %133) #10
  %3990 = call i32 @rand() #10
  %3991 = srem i32 %3990, 16
  %3992 = trunc i32 %3991 to i8
  store i8 %3992, ptr %133, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #10
  %3993 = call i32 @rand() #10
  %3994 = srem i32 %3993, 16
  %3995 = trunc i32 %3994 to i8
  store i8 %3995, 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
  %3996 = load i8, ptr %133, align 1, !tbaa !61
  %3997 = call float @convert_mxfp4_to_float(i8 noundef zeroext %3996)
  %3998 = load float, ptr %131, align 4, !tbaa !13
  %3999 = fmul float %3997, %3998
  store float %3999, ptr %136, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #10
  %4000 = load i8, ptr %134, 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 %137, align 4, !tbaa !13
  %4004 = load i8, ptr %133, align 1, !tbaa !61
  %4005 = zext i8 %4004 to i32
  %4006 = and i32 %4005, 15
  %4007 = trunc i32 %4006 to i8
  store i8 %4007, ptr %133, align 1, !tbaa !61
  %4008 = load i8, ptr %134, align 1, !tbaa !61
  %4009 = zext i8 %4008 to i32
  %4010 = and i32 %4009, 15
  %4011 = shl i32 %4010, 4
  %4012 = trunc i32 %4011 to i8
  store i8 %4012, ptr %134, align 1, !tbaa !61
  %4013 = load i8, ptr %133, align 1, !tbaa !61
  %4014 = zext i8 %4013 to i32
  %4015 = load i8, ptr %134, align 1, !tbaa !61
  %4016 = zext i8 %4015 to i32
  %4017 = or i32 %4014, %4016
  %4018 = trunc i32 %4017 to i8
  store i8 %4018, ptr %135, align 1, !tbaa !61
  %4019 = load i8, ptr %135, align 1, !tbaa !61
  %4020 = load ptr, ptr %127, align 8, !tbaa !9
  %4021 = load i32, ptr %123, align 4, !tbaa !5
  %4022 = load i32, ptr %14, align 4, !tbaa !5
  %4023 = mul nsw i32 %4021, %4022
  %4024 = load i32, ptr %19, align 4, !tbaa !5
  %4025 = sdiv i32 %4024, 2
  %4026 = mul nsw i32 %4023, %4025
  %4027 = load i32, ptr %125, align 4, !tbaa !5
  %4028 = load i32, ptr %14, align 4, !tbaa !5
  %4029 = mul nsw i32 %4027, %4028
  %4030 = add nsw i32 %4026, %4029
  %4031 = load i32, ptr %124, align 4, !tbaa !5
  %4032 = add nsw i32 %4030, %4031
  %4033 = sext i32 %4032 to i64
  %4034 = getelementptr inbounds i8, ptr %4020, i64 %4033
  store i8 %4019, ptr %4034, align 1, !tbaa !61
  %4035 = load float, ptr %136, align 4, !tbaa !13
  %4036 = load ptr, ptr %132, align 8, !tbaa !9
  %4037 = load i32, ptr %123, align 4, !tbaa !5
  %4038 = load i32, ptr %14, align 4, !tbaa !5
  %4039 = mul nsw i32 %4037, %4038
  %4040 = load i32, ptr %19, align 4, !tbaa !5
  %4041 = mul nsw i32 %4039, %4040
  %4042 = load i32, ptr %125, align 4, !tbaa !5
  %4043 = mul nsw i32 2, %4042
  %4044 = add nsw i32 %4043, 0
  %4045 = load i32, ptr %14, align 4, !tbaa !5
  %4046 = mul nsw i32 %4044, %4045
  %4047 = add nsw i32 %4041, %4046
  %4048 = load i32, ptr %124, align 4, !tbaa !5
  %4049 = add nsw i32 %4047, %4048
  %4050 = sext i32 %4049 to i64
  %4051 = getelementptr inbounds float, ptr %4036, i64 %4050
  store float %4035, ptr %4051, align 4, !tbaa !13
  %4052 = load float, ptr %137, align 4, !tbaa !13
  %4053 = load ptr, ptr %132, align 8, !tbaa !9
  %4054 = load i32, ptr %123, align 4, !tbaa !5
  %4055 = load i32, ptr %14, align 4, !tbaa !5
  %4056 = mul nsw i32 %4054, %4055
  %4057 = load i32, ptr %19, align 4, !tbaa !5
  %4058 = mul nsw i32 %4056, %4057
  %4059 = load i32, ptr %125, align 4, !tbaa !5
  %4060 = mul nsw i32 2, %4059
  %4061 = add nsw i32 %4060, 1
  %4062 = load i32, ptr %14, align 4, !tbaa !5
  %4063 = mul nsw i32 %4061, %4062
  %4064 = add nsw i32 %4058, %4063
  %4065 = load i32, ptr %124, align 4, !tbaa !5
  %4066 = add nsw i32 %4064, %4065
  %4067 = sext i32 %4066 to i64
  %4068 = getelementptr inbounds float, ptr %4053, i64 %4067
  store float %4052, ptr %4068, 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 %4069

4069:                                             ; preds = %3989
  %4070 = load i32, ptr %126, align 4, !tbaa !5
  %4071 = add nsw i32 %4070, 2
  store i32 %4071, ptr %126, align 4, !tbaa !5
  br label %3986, !llvm.loop !90

4072:                                             ; preds = %3986
  br label %4073

4073:                                             ; preds = %4072
  %4074 = load i32, ptr %125, align 4, !tbaa !5
  %4075 = add nsw i32 %4074, 1
  store i32 %4075, ptr %125, align 4, !tbaa !5
  br label %3951, !llvm.loop !91

4076:                                             ; preds = %3951
  br label %4077

4077:                                             ; preds = %4076
  %4078 = load i32, ptr %124, align 4, !tbaa !5
  %4079 = add nsw i32 %4078, 1
  store i32 %4079, ptr %124, align 4, !tbaa !5
  br label %3946, !llvm.loop !92

4080:                                             ; preds = %3946
  br label %4081

4081:                                             ; preds = %4080
  %4082 = load i32, ptr %123, align 4, !tbaa !5
  %4083 = add nsw i32 %4082, 1
  store i32 %4083, ptr %123, align 4, !tbaa !5
  br label %3941, !llvm.loop !93

4084:                                             ; preds = %3941
  %4085 = load ptr, ptr %127, align 8, !tbaa !9
  %4086 = load ptr, ptr %57, align 8, !tbaa !9
  %4087 = load ptr, ptr %58, align 8, !tbaa !9
  %4088 = load ptr, ptr %59, align 8, !tbaa !9
  %4089 = load i32, ptr %40, align 4, !tbaa !5
  %4090 = load i32, ptr %33, align 4, !tbaa !5
  %4091 = call double @jit_matmul(ptr noundef %44, ptr noundef %4085, ptr noundef %4086, ptr noundef %4087, ptr noundef %4088, i32 noundef %4089, i32 noundef %4090, ptr noundef %65)
  store double %4091, ptr %32, align 8, !tbaa !11
  %4092 = load ptr, ptr %127, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4092)
  %4093 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 1, ptr %4093, align 8, !tbaa !29
  %4094 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 16
  store i32 1, ptr %4094, 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 %4095

4095:                                             ; preds = %4084, %3914
  %4096 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %4097 = load i32, ptr %4096, align 4, !tbaa !20
  %4098 = icmp ugt i32 %4097, 0
  br i1 %4098, label %4099, label %4269

4099:                                             ; preds = %4095
  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
  %4100 = load i32, ptr %14, align 4, !tbaa !5
  %4101 = sext i32 %4100 to i64
  %4102 = load i32, ptr %19, align 4, !tbaa !5
  %4103 = sext i32 %4102 to i64
  %4104 = udiv i64 %4103, 2
  %4105 = mul i64 %4101, %4104
  %4106 = load i32, ptr %29, align 4, !tbaa !5
  %4107 = sext i32 %4106 to i64
  %4108 = mul i64 %4105, %4107
  %4109 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %4108, i64 noundef 64)
  store ptr %4109, 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
  %4110 = load ptr, ptr %56, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4110)
  %4111 = load i32, ptr %14, align 4, !tbaa !5
  %4112 = sext i32 %4111 to i64
  %4113 = load i32, ptr %19, align 4, !tbaa !5
  %4114 = sext i32 %4113 to i64
  %4115 = mul i64 %4112, %4114
  %4116 = load i32, ptr %29, align 4, !tbaa !5
  %4117 = sext i32 %4116 to i64
  %4118 = mul i64 %4115, %4117
  %4119 = mul i64 %4118, 1
  %4120 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %4119, i64 noundef 64)
  store ptr %4120, ptr %56, align 8, !tbaa !9
  %4121 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %4121, ptr %143, align 8, !tbaa !9
  store i32 0, ptr %138, align 4, !tbaa !5
  br label %4122

4122:                                             ; preds = %4255, %4099
  %4123 = load i32, ptr %138, align 4, !tbaa !5
  %4124 = load i32, ptr %29, align 4, !tbaa !5
  %4125 = icmp slt i32 %4123, %4124
  br i1 %4125, label %4126, label %4258

4126:                                             ; preds = %4122
  store i32 0, ptr %139, align 4, !tbaa !5
  br label %4127

4127:                                             ; preds = %4251, %4126
  %4128 = load i32, ptr %139, align 4, !tbaa !5
  %4129 = load i32, ptr %17, align 4, !tbaa !5
  %4130 = icmp slt i32 %4128, %4129
  br i1 %4130, label %4131, label %4254

4131:                                             ; preds = %4127
  store i32 0, ptr %140, align 4, !tbaa !5
  br label %4132

4132:                                             ; preds = %4247, %4131
  %4133 = load i32, ptr %140, align 4, !tbaa !5
  %4134 = load i32, ptr %19, align 4, !tbaa !5
  %4135 = sdiv i32 %4134, 8
  %4136 = icmp slt i32 %4133, %4135
  br i1 %4136, label %4137, label %4250

4137:                                             ; preds = %4132
  store i32 0, ptr %141, align 4, !tbaa !5
  br label %4138

4138:                                             ; preds = %4243, %4137
  %4139 = load i32, ptr %141, align 4, !tbaa !5
  %4140 = icmp slt i32 %4139, 8
  br i1 %4140, label %4141, label %4246

4141:                                             ; preds = %4138
  call void @llvm.lifetime.start.p0(i64 1, ptr %144) #10
  %4142 = call i32 @rand() #10
  %4143 = srem i32 %4142, 16
  %4144 = trunc i32 %4143 to i8
  store i8 %4144, ptr %144, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %145) #10
  %4145 = call i32 @rand() #10
  %4146 = srem i32 %4145, 16
  %4147 = trunc i32 %4146 to i8
  store i8 %4147, 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
  %4148 = load i32, ptr %140, align 4, !tbaa !5
  %4149 = mul nsw i32 %4148, 8
  %4150 = load i32, ptr %141, align 4, !tbaa !5
  %4151 = sdiv i32 %4150, 2
  %4152 = add nsw i32 %4149, %4151
  %4153 = add nsw i32 %4152, 0
  store i32 %4153, ptr %147, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #10
  %4154 = load i32, ptr %140, align 4, !tbaa !5
  %4155 = mul nsw i32 %4154, 8
  %4156 = load i32, ptr %141, align 4, !tbaa !5
  %4157 = sdiv i32 %4156, 2
  %4158 = add nsw i32 %4155, %4157
  %4159 = add nsw i32 %4158, 4
  store i32 %4159, ptr %148, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %149) #10
  %4160 = load i8, ptr %144, align 1, !tbaa !61
  %4161 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %4160)
  store i8 %4161, ptr %149, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %150) #10
  %4162 = load i8, ptr %145, align 1, !tbaa !61
  %4163 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %4162)
  store i8 %4163, ptr %150, align 1, !tbaa !61
  %4164 = load i8, ptr %144, align 1, !tbaa !61
  %4165 = zext i8 %4164 to i32
  %4166 = and i32 %4165, 15
  %4167 = trunc i32 %4166 to i8
  store i8 %4167, ptr %144, align 1, !tbaa !61
  %4168 = load i8, ptr %145, align 1, !tbaa !61
  %4169 = zext i8 %4168 to i32
  %4170 = and i32 %4169, 15
  %4171 = shl i32 %4170, 4
  %4172 = trunc i32 %4171 to i8
  store i8 %4172, ptr %145, align 1, !tbaa !61
  %4173 = load i8, ptr %144, align 1, !tbaa !61
  %4174 = zext i8 %4173 to i32
  %4175 = load i8, ptr %145, align 1, !tbaa !61
  %4176 = zext i8 %4175 to i32
  %4177 = or i32 %4174, %4176
  %4178 = trunc i32 %4177 to i8
  store i8 %4178, ptr %146, align 1, !tbaa !61
  %4179 = load i8, ptr %146, align 1, !tbaa !61
  %4180 = load ptr, ptr %142, align 8, !tbaa !9
  %4181 = load i32, ptr %138, align 4, !tbaa !5
  %4182 = load i32, ptr %14, align 4, !tbaa !5
  %4183 = mul nsw i32 %4181, %4182
  %4184 = load i32, ptr %19, align 4, !tbaa !5
  %4185 = sdiv i32 %4184, 2
  %4186 = mul nsw i32 %4183, %4185
  %4187 = load i32, ptr %147, align 4, !tbaa !5
  %4188 = sdiv i32 %4187, 8
  %4189 = load i32, ptr %14, align 4, !tbaa !5
  %4190 = mul nsw i32 %4188, %4189
  %4191 = mul nsw i32 %4190, 4
  %4192 = add nsw i32 %4186, %4191
  %4193 = load i32, ptr %139, align 4, !tbaa !5
  %4194 = mul nsw i32 %4193, 4
  %4195 = add nsw i32 %4192, %4194
  %4196 = load i32, ptr %147, align 4, !tbaa !5
  %4197 = srem i32 %4196, 4
  %4198 = add nsw i32 %4195, %4197
  %4199 = sext i32 %4198 to i64
  %4200 = getelementptr inbounds i8, ptr %4180, i64 %4199
  store i8 %4179, ptr %4200, align 1, !tbaa !61
  %4201 = load i8, ptr %149, align 1, !tbaa !61
  %4202 = load ptr, ptr %143, align 8, !tbaa !9
  %4203 = load i32, ptr %138, align 4, !tbaa !5
  %4204 = load i32, ptr %14, align 4, !tbaa !5
  %4205 = mul nsw i32 %4203, %4204
  %4206 = load i32, ptr %19, align 4, !tbaa !5
  %4207 = mul nsw i32 %4205, %4206
  %4208 = load i32, ptr %147, align 4, !tbaa !5
  %4209 = sdiv i32 %4208, 32
  %4210 = load i32, ptr %14, align 4, !tbaa !5
  %4211 = mul nsw i32 %4209, %4210
  %4212 = mul nsw i32 %4211, 32
  %4213 = add nsw i32 %4207, %4212
  %4214 = load i32, ptr %139, align 4, !tbaa !5
  %4215 = mul nsw i32 %4214, 32
  %4216 = add nsw i32 %4213, %4215
  %4217 = load i32, ptr %147, align 4, !tbaa !5
  %4218 = srem i32 %4217, 32
  %4219 = add nsw i32 %4216, %4218
  %4220 = sext i32 %4219 to i64
  %4221 = getelementptr inbounds i8, ptr %4202, i64 %4220
  store i8 %4201, ptr %4221, align 1, !tbaa !61
  %4222 = load i8, ptr %150, align 1, !tbaa !61
  %4223 = load ptr, ptr %143, align 8, !tbaa !9
  %4224 = load i32, ptr %138, align 4, !tbaa !5
  %4225 = load i32, ptr %14, align 4, !tbaa !5
  %4226 = mul nsw i32 %4224, %4225
  %4227 = load i32, ptr %19, align 4, !tbaa !5
  %4228 = mul nsw i32 %4226, %4227
  %4229 = load i32, ptr %148, align 4, !tbaa !5
  %4230 = sdiv i32 %4229, 32
  %4231 = load i32, ptr %14, align 4, !tbaa !5
  %4232 = mul nsw i32 %4230, %4231
  %4233 = mul nsw i32 %4232, 32
  %4234 = add nsw i32 %4228, %4233
  %4235 = load i32, ptr %139, align 4, !tbaa !5
  %4236 = mul nsw i32 %4235, 32
  %4237 = add nsw i32 %4234, %4236
  %4238 = load i32, ptr %148, align 4, !tbaa !5
  %4239 = srem i32 %4238, 32
  %4240 = add nsw i32 %4237, %4239
  %4241 = sext i32 %4240 to i64
  %4242 = getelementptr inbounds i8, ptr %4223, i64 %4241
  store i8 %4222, ptr %4242, 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 %4243

4243:                                             ; preds = %4141
  %4244 = load i32, ptr %141, align 4, !tbaa !5
  %4245 = add nsw i32 %4244, 2
  store i32 %4245, ptr %141, align 4, !tbaa !5
  br label %4138, !llvm.loop !94

4246:                                             ; preds = %4138
  br label %4247

4247:                                             ; preds = %4246
  %4248 = load i32, ptr %140, align 4, !tbaa !5
  %4249 = add nsw i32 %4248, 1
  store i32 %4249, ptr %140, align 4, !tbaa !5
  br label %4132, !llvm.loop !95

4250:                                             ; preds = %4132
  br label %4251

4251:                                             ; preds = %4250
  %4252 = load i32, ptr %139, align 4, !tbaa !5
  %4253 = add nsw i32 %4252, 1
  store i32 %4253, ptr %139, align 4, !tbaa !5
  br label %4127, !llvm.loop !96

4254:                                             ; preds = %4127
  br label %4255

4255:                                             ; preds = %4254
  %4256 = load i32, ptr %138, align 4, !tbaa !5
  %4257 = add nsw i32 %4256, 1
  store i32 %4257, ptr %138, align 4, !tbaa !5
  br label %4122, !llvm.loop !97

4258:                                             ; preds = %4122
  %4259 = load ptr, ptr %142, align 8, !tbaa !9
  %4260 = load ptr, ptr %57, align 8, !tbaa !9
  %4261 = load ptr, ptr %58, align 8, !tbaa !9
  %4262 = load ptr, ptr %59, align 8, !tbaa !9
  %4263 = load i32, ptr %40, align 4, !tbaa !5
  %4264 = load i32, ptr %33, align 4, !tbaa !5
  %4265 = call double @jit_matmul(ptr noundef %44, ptr noundef %4259, ptr noundef %4260, ptr noundef %4261, ptr noundef %4262, i32 noundef %4263, i32 noundef %4264, ptr noundef %65)
  store double %4265, ptr %32, align 8, !tbaa !11
  %4266 = load ptr, ptr %142, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4266)
  %4267 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 12, ptr %4267, align 8, !tbaa !29
  %4268 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 16
  store i32 1, ptr %4268, 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 %4269

4269:                                             ; preds = %4258, %4095
  %4270 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  %4271 = load i32, ptr %4270, align 4, !tbaa !21
  %4272 = icmp ugt i32 %4271, 0
  br i1 %4272, label %4281, label %4273

4273:                                             ; preds = %4269
  %4274 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  %4275 = load i32, ptr %4274, align 8, !tbaa !22
  %4276 = icmp ugt i32 %4275, 0
  br i1 %4276, label %4281, label %4277

4277:                                             ; preds = %4273
  %4278 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  %4279 = load i32, ptr %4278, align 4, !tbaa !23
  %4280 = icmp ugt i32 %4279, 0
  br i1 %4280, label %4281, label %4297

4281:                                             ; preds = %4277, %4273, %4269
  %4282 = load i32, ptr %30, align 4, !tbaa !5
  %4283 = icmp ne i32 %4282, 4
  br i1 %4283, label %4284, label %4297

4284:                                             ; preds = %4281
  %4285 = load ptr, ptr %61, align 8, !tbaa !9
  %4286 = load ptr, ptr %57, align 8, !tbaa !9
  %4287 = load ptr, ptr %58, align 8, !tbaa !9
  %4288 = load ptr, ptr %59, align 8, !tbaa !9
  %4289 = load i32, ptr %40, align 4, !tbaa !5
  %4290 = load i32, ptr %33, align 4, !tbaa !5
  %4291 = call double @jit_matmul(ptr noundef %44, ptr noundef %4285, ptr noundef %4286, ptr noundef %4287, ptr noundef %4288, i32 noundef %4289, i32 noundef %4290, ptr noundef %65)
  store double %4291, ptr %32, align 8, !tbaa !11
  %4292 = load ptr, ptr %61, align 8, !tbaa !9
  %4293 = icmp ne ptr %4292, null
  br i1 %4293, label %4294, label %4296

4294:                                             ; preds = %4284
  %4295 = load ptr, ptr %61, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4295)
  br label %4296

4296:                                             ; preds = %4294, %4284
  br label %4297

4297:                                             ; preds = %4296, %4281, %4277
  %4298 = load i32, ptr %30, align 4, !tbaa !5
  %4299 = icmp eq i32 %4298, 4
  br i1 %4299, label %4300, label %4368

4300:                                             ; preds = %4297
  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
  %4301 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %4301, ptr %153, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #10
  %4302 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %4302, ptr %154, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #10
  %4303 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %4303, ptr %155, align 8, !tbaa !9
  store i32 0, ptr %152, align 4, !tbaa !5
  br label %4304

4304:                                             ; preds = %4364, %4300
  %4305 = load i32, ptr %152, align 4, !tbaa !5
  %4306 = load i32, ptr %19, align 4, !tbaa !5
  %4307 = icmp slt i32 %4305, %4306
  br i1 %4307, label %4308, label %4367

4308:                                             ; preds = %4304
  store i32 0, ptr %151, align 4, !tbaa !5
  br label %4309

4309:                                             ; preds = %4360, %4308
  %4310 = load i32, ptr %151, align 4, !tbaa !5
  %4311 = load i32, ptr %17, align 4, !tbaa !5
  %4312 = icmp slt i32 %4310, %4311
  br i1 %4312, label %4313, label %4363

4313:                                             ; preds = %4309
  call void @llvm.lifetime.start.p0(i64 4, ptr %156) #10
  %4314 = call double @libxsmm_rng_f64()
  %4315 = fptrunc double %4314 to float
  store float %4315, ptr %156, align 4, !tbaa !13
  %4316 = load float, ptr %156, align 4, !tbaa !13
  %4317 = load float, ptr %48, align 4, !tbaa !13
  %4318 = fcmp ole float %4316, %4317
  br i1 %4318, label %4319, label %4359

4319:                                             ; preds = %4313
  %4320 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4321 = load i32, ptr %4320, align 8, !tbaa !29
  %4322 = icmp eq i32 %4321, 2
  br i1 %4322, label %4323, label %4332

4323:                                             ; preds = %4319
  %4324 = load ptr, ptr %153, align 8, !tbaa !9
  %4325 = load i32, ptr %152, align 4, !tbaa !5
  %4326 = load i32, ptr %17, align 4, !tbaa !5
  %4327 = mul nsw i32 %4325, %4326
  %4328 = load i32, ptr %151, align 4, !tbaa !5
  %4329 = add nsw i32 %4327, %4328
  %4330 = sext i32 %4329 to i64
  %4331 = getelementptr inbounds i16, ptr %4324, i64 %4330
  store i16 0, ptr %4331, align 2, !tbaa !84
  br label %4332

4332:                                             ; preds = %4323, %4319
  %4333 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4334 = load i32, ptr %4333, align 8, !tbaa !29
  %4335 = icmp eq i32 %4334, 3
  br i1 %4335, label %4336, label %4345

4336:                                             ; preds = %4332
  %4337 = load ptr, ptr %154, align 8, !tbaa !9
  %4338 = load i32, ptr %152, align 4, !tbaa !5
  %4339 = load i32, ptr %17, align 4, !tbaa !5
  %4340 = mul nsw i32 %4338, %4339
  %4341 = load i32, ptr %151, align 4, !tbaa !5
  %4342 = add nsw i32 %4340, %4341
  %4343 = sext i32 %4342 to i64
  %4344 = getelementptr inbounds i16, ptr %4337, i64 %4343
  store i16 0, ptr %4344, align 2, !tbaa !84
  br label %4345

4345:                                             ; preds = %4336, %4332
  %4346 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4347 = load i32, ptr %4346, align 8, !tbaa !29
  %4348 = icmp eq i32 %4347, 1
  br i1 %4348, label %4349, label %4358

4349:                                             ; preds = %4345
  %4350 = load ptr, ptr %155, align 8, !tbaa !9
  %4351 = load i32, ptr %152, align 4, !tbaa !5
  %4352 = load i32, ptr %17, align 4, !tbaa !5
  %4353 = mul nsw i32 %4351, %4352
  %4354 = load i32, ptr %151, align 4, !tbaa !5
  %4355 = add nsw i32 %4353, %4354
  %4356 = sext i32 %4355 to i64
  %4357 = getelementptr inbounds float, ptr %4350, i64 %4356
  store float 0.000000e+00, ptr %4357, align 4, !tbaa !13
  br label %4358

4358:                                             ; preds = %4349, %4345
  br label %4359

4359:                                             ; preds = %4358, %4313
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #10
  br label %4360

4360:                                             ; preds = %4359
  %4361 = load i32, ptr %151, align 4, !tbaa !5
  %4362 = add nsw i32 %4361, 1
  store i32 %4362, ptr %151, align 4, !tbaa !5
  br label %4309, !llvm.loop !98

4363:                                             ; preds = %4309
  br label %4364

4364:                                             ; preds = %4363
  %4365 = load i32, ptr %152, align 4, !tbaa !5
  %4366 = add nsw i32 %4365, 1
  store i32 %4366, ptr %152, align 4, !tbaa !5
  br label %4304, !llvm.loop !99

4367:                                             ; preds = %4304
  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 %4368

4368:                                             ; preds = %4367, %4297
  %4369 = load ptr, ptr %56, align 8, !tbaa !9
  %4370 = load ptr, ptr %57, align 8, !tbaa !9
  %4371 = load ptr, ptr %60, align 8, !tbaa !9
  call void @ref_matmul(ptr noundef %44, ptr noundef %4369, ptr noundef %4370, ptr noundef %4371)
  %4372 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %4373 = load i32, ptr %4372, align 4, !tbaa !18
  %4374 = icmp ugt i32 %4373, 0
  br i1 %4374, label %4375, label %4377

4375:                                             ; preds = %4368
  %4376 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 12, ptr %4376, align 8, !tbaa !29
  br label %4377

4377:                                             ; preds = %4375, %4368
  %4378 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %4379 = load i32, ptr %4378, align 8, !tbaa !19
  %4380 = icmp ugt i32 %4379, 0
  br i1 %4380, label %4381, label %4383

4381:                                             ; preds = %4377
  %4382 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 12, ptr %4382, align 8, !tbaa !29
  br label %4383

4383:                                             ; preds = %4381, %4377
  br label %4384

4384:                                             ; preds = %4383, %3181
  %4385 = load i32, ptr %26, align 4, !tbaa !5
  %4386 = icmp sgt i32 %4385, 0
  br i1 %4386, label %4387, label %4413

4387:                                             ; preds = %4384
  %4388 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4389 = load i32, ptr %4388, align 8, !tbaa !32
  %4390 = icmp eq i32 %4389, 2
  br i1 %4390, label %4395, label %4391

4391:                                             ; preds = %4387
  %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, 3
  br i1 %4394, label %4395, label %4410

4395:                                             ; preds = %4391, %4387
  %4396 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4397 = load i32, ptr %4396, align 8, !tbaa !32
  %4398 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %4397)
  %4399 = icmp eq i32 %4398, 4
  br i1 %4399, label %4400, label %4407

4400:                                             ; preds = %4395
  %4401 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 5
  %4402 = load i32, ptr %4401, align 4, !tbaa !50
  %4403 = srem i32 %4402, 4
  %4404 = icmp eq i32 %4403, 0
  br i1 %4404, label %4405, label %4407

4405:                                             ; preds = %4400
  %4406 = load ptr, ptr %60, align 8, !tbaa !9
  call void @convert_output_to_vnni4(ptr noundef %44, ptr noundef %4406)
  br label %4409

4407:                                             ; preds = %4400, %4395
  %4408 = load ptr, ptr %60, align 8, !tbaa !9
  call void @convert_output_to_vnni2(ptr noundef %44, ptr noundef %4408)
  br label %4409

4409:                                             ; preds = %4407, %4405
  br label %4412

4410:                                             ; preds = %4391
  %4411 = load ptr, ptr %60, align 8, !tbaa !9
  call void @convert_output_to_vnni4(ptr noundef %44, ptr noundef %4411)
  br label %4412

4412:                                             ; preds = %4410, %4409
  br label %4413

4413:                                             ; preds = %4412, %4384
  %4414 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 39
  %4415 = load i32, ptr %4414, align 8, !tbaa !15
  %4416 = icmp ugt i32 %4415, 0
  br i1 %4416, label %4417, label %4629

4417:                                             ; preds = %4413
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #10
  %4418 = load i32, ptr %14, align 4, !tbaa !5
  %4419 = sext i32 %4418 to i64
  %4420 = load i32, ptr %19, align 4, !tbaa !5
  %4421 = sdiv i32 %4420, 2
  %4422 = sext i32 %4421 to i64
  %4423 = mul i64 %4419, %4422
  %4424 = load i32, ptr %29, align 4, !tbaa !5
  %4425 = sext i32 %4424 to i64
  %4426 = mul i64 %4423, %4425
  %4427 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4428 = load i32, ptr %4427, align 8, !tbaa !29
  %4429 = icmp eq i32 0, %4428
  br i1 %4429, label %4430, label %4431

4430:                                             ; preds = %4417
  br label %4524

4431:                                             ; preds = %4417
  %4432 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4433 = load i32, ptr %4432, align 8, !tbaa !29
  %4434 = icmp eq i32 1, %4433
  br i1 %4434, label %4435, label %4436

4435:                                             ; preds = %4431
  br label %4522

4436:                                             ; preds = %4431
  %4437 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4438 = load i32, ptr %4437, align 8, !tbaa !29
  %4439 = icmp eq i32 2, %4438
  br i1 %4439, label %4440, label %4441

4440:                                             ; preds = %4436
  br label %4520

4441:                                             ; preds = %4436
  %4442 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4443 = load i32, ptr %4442, align 8, !tbaa !29
  %4444 = icmp eq i32 3, %4443
  br i1 %4444, label %4445, label %4446

4445:                                             ; preds = %4441
  br label %4518

4446:                                             ; preds = %4441
  %4447 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4448 = load i32, ptr %4447, align 8, !tbaa !29
  %4449 = icmp eq i32 4, %4448
  br i1 %4449, label %4450, label %4451

4450:                                             ; preds = %4446
  br label %4516

4451:                                             ; preds = %4446
  %4452 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4453 = load i32, ptr %4452, align 8, !tbaa !29
  %4454 = icmp eq i32 5, %4453
  br i1 %4454, label %4455, label %4456

4455:                                             ; preds = %4451
  br label %4514

4456:                                             ; preds = %4451
  %4457 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4458 = load i32, ptr %4457, align 8, !tbaa !29
  %4459 = icmp eq i32 6, %4458
  br i1 %4459, label %4460, label %4461

4460:                                             ; preds = %4456
  br label %4512

4461:                                             ; preds = %4456
  %4462 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4463 = load i32, ptr %4462, align 8, !tbaa !29
  %4464 = icmp eq i32 7, %4463
  br i1 %4464, label %4465, label %4466

4465:                                             ; preds = %4461
  br label %4510

4466:                                             ; preds = %4461
  %4467 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4468 = load i32, ptr %4467, align 8, !tbaa !29
  %4469 = icmp eq i32 8, %4468
  br i1 %4469, label %4470, label %4471

4470:                                             ; preds = %4466
  br label %4508

4471:                                             ; preds = %4466
  %4472 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4473 = load i32, ptr %4472, align 8, !tbaa !29
  %4474 = icmp eq i32 9, %4473
  br i1 %4474, label %4475, label %4476

4475:                                             ; preds = %4471
  br label %4506

4476:                                             ; preds = %4471
  %4477 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4478 = load i32, ptr %4477, align 8, !tbaa !29
  %4479 = icmp eq i32 10, %4478
  br i1 %4479, label %4480, label %4481

4480:                                             ; preds = %4476
  br label %4504

4481:                                             ; preds = %4476
  %4482 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4483 = load i32, ptr %4482, align 8, !tbaa !29
  %4484 = icmp eq i32 11, %4483
  br i1 %4484, label %4485, label %4486

4485:                                             ; preds = %4481
  br label %4502

4486:                                             ; preds = %4481
  %4487 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4488 = load i32, ptr %4487, align 8, !tbaa !29
  %4489 = icmp eq i32 12, %4488
  br i1 %4489, label %4490, label %4491

4490:                                             ; preds = %4486
  br label %4500

4491:                                             ; preds = %4486
  %4492 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4493 = load i32, ptr %4492, align 8, !tbaa !29
  %4494 = icmp eq i32 13, %4493
  br i1 %4494, label %4495, label %4496

4495:                                             ; preds = %4491
  br label %4498

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

4497:                                             ; No predecessors!
  br label %4498

4498:                                             ; preds = %4497, %4495
  %4499 = phi i32 [ 1, %4495 ], [ 0, %4497 ]
  br label %4500

4500:                                             ; preds = %4498, %4490
  %4501 = phi i32 [ 1, %4490 ], [ %4499, %4498 ]
  br label %4502

4502:                                             ; preds = %4500, %4485
  %4503 = phi i32 [ 2, %4485 ], [ %4501, %4500 ]
  br label %4504

4504:                                             ; preds = %4502, %4480
  %4505 = phi i32 [ 2, %4480 ], [ %4503, %4502 ]
  br label %4506

4506:                                             ; preds = %4504, %4475
  %4507 = phi i32 [ 4, %4475 ], [ %4505, %4504 ]
  br label %4508

4508:                                             ; preds = %4506, %4470
  %4509 = phi i32 [ 4, %4470 ], [ %4507, %4506 ]
  br label %4510

4510:                                             ; preds = %4508, %4465
  %4511 = phi i32 [ 8, %4465 ], [ %4509, %4508 ]
  br label %4512

4512:                                             ; preds = %4510, %4460
  %4513 = phi i32 [ 8, %4460 ], [ %4511, %4510 ]
  br label %4514

4514:                                             ; preds = %4512, %4455
  %4515 = phi i32 [ 1, %4455 ], [ %4513, %4512 ]
  br label %4516

4516:                                             ; preds = %4514, %4450
  %4517 = phi i32 [ 1, %4450 ], [ %4515, %4514 ]
  br label %4518

4518:                                             ; preds = %4516, %4445
  %4519 = phi i32 [ 2, %4445 ], [ %4517, %4516 ]
  br label %4520

4520:                                             ; preds = %4518, %4440
  %4521 = phi i32 [ 2, %4440 ], [ %4519, %4518 ]
  br label %4522

4522:                                             ; preds = %4520, %4435
  %4523 = phi i32 [ 4, %4435 ], [ %4521, %4520 ]
  br label %4524

4524:                                             ; preds = %4522, %4430
  %4525 = phi i32 [ 8, %4430 ], [ %4523, %4522 ]
  %4526 = sext i32 %4525 to i64
  %4527 = mul i64 %4426, %4526
  %4528 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %4527, i64 noundef 64)
  store ptr %4528, 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
  %4529 = load ptr, ptr %56, align 8, !tbaa !9
  store ptr %4529, ptr %161, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #10
  %4530 = load ptr, ptr %157, align 8, !tbaa !9
  store ptr %4530, ptr %162, align 8, !tbaa !9
  store i32 0, ptr %158, align 4, !tbaa !5
  br label %4531

4531:                                             ; preds = %4617, %4524
  %4532 = load i32, ptr %158, align 4, !tbaa !5
  %4533 = load i32, ptr %29, align 4, !tbaa !5
  %4534 = icmp slt i32 %4532, %4533
  br i1 %4534, label %4535, label %4620

4535:                                             ; preds = %4531
  store i32 0, ptr %159, align 4, !tbaa !5
  br label %4536

4536:                                             ; preds = %4613, %4535
  %4537 = load i32, ptr %159, align 4, !tbaa !5
  %4538 = load i32, ptr %17, align 4, !tbaa !5
  %4539 = icmp slt i32 %4537, %4538
  br i1 %4539, label %4540, label %4616

4540:                                             ; preds = %4536
  store i32 0, ptr %160, align 4, !tbaa !5
  br label %4541

4541:                                             ; preds = %4609, %4540
  %4542 = load i32, ptr %160, align 4, !tbaa !5
  %4543 = load i32, ptr %19, align 4, !tbaa !5
  %4544 = icmp slt i32 %4542, %4543
  br i1 %4544, label %4545, label %4612

4545:                                             ; preds = %4541
  call void @llvm.lifetime.start.p0(i64 1, ptr %163) #10
  %4546 = load ptr, ptr %161, align 8, !tbaa !9
  %4547 = load i32, ptr %158, align 4, !tbaa !5
  %4548 = load i32, ptr %14, align 4, !tbaa !5
  %4549 = mul nsw i32 %4547, %4548
  %4550 = load i32, ptr %19, align 4, !tbaa !5
  %4551 = mul nsw i32 %4549, %4550
  %4552 = load i32, ptr %160, align 4, !tbaa !5
  %4553 = load i32, ptr %14, align 4, !tbaa !5
  %4554 = mul nsw i32 %4552, %4553
  %4555 = add nsw i32 %4551, %4554
  %4556 = load i32, ptr %159, align 4, !tbaa !5
  %4557 = add nsw i32 %4555, %4556
  %4558 = sext i32 %4557 to i64
  %4559 = getelementptr inbounds i8, ptr %4546, i64 %4558
  %4560 = load i8, ptr %4559, align 1, !tbaa !61
  store i8 %4560, ptr %163, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %164) #10
  %4561 = load ptr, ptr %161, align 8, !tbaa !9
  %4562 = load i32, ptr %158, align 4, !tbaa !5
  %4563 = load i32, ptr %14, align 4, !tbaa !5
  %4564 = mul nsw i32 %4562, %4563
  %4565 = load i32, ptr %19, align 4, !tbaa !5
  %4566 = mul nsw i32 %4564, %4565
  %4567 = load i32, ptr %160, align 4, !tbaa !5
  %4568 = add nsw i32 %4567, 1
  %4569 = load i32, ptr %14, align 4, !tbaa !5
  %4570 = mul nsw i32 %4568, %4569
  %4571 = add nsw i32 %4566, %4570
  %4572 = load i32, ptr %159, align 4, !tbaa !5
  %4573 = add nsw i32 %4571, %4572
  %4574 = sext i32 %4573 to i64
  %4575 = getelementptr inbounds i8, ptr %4561, i64 %4574
  %4576 = load i8, ptr %4575, align 1, !tbaa !61
  store i8 %4576, ptr %164, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr %165) #10
  %4577 = load i8, ptr %163, align 1, !tbaa !61
  %4578 = zext i8 %4577 to i32
  %4579 = and i32 %4578, 15
  %4580 = trunc i32 %4579 to i8
  store i8 %4580, ptr %163, align 1, !tbaa !61
  %4581 = load i8, ptr %164, align 1, !tbaa !61
  %4582 = zext i8 %4581 to i32
  %4583 = and i32 %4582, 15
  %4584 = shl i32 %4583, 4
  %4585 = trunc i32 %4584 to i8
  store i8 %4585, ptr %164, align 1, !tbaa !61
  %4586 = load i8, ptr %163, align 1, !tbaa !61
  %4587 = zext i8 %4586 to i32
  %4588 = load i8, ptr %164, align 1, !tbaa !61
  %4589 = zext i8 %4588 to i32
  %4590 = or i32 %4587, %4589
  %4591 = trunc i32 %4590 to i8
  store i8 %4591, ptr %165, align 1, !tbaa !61
  %4592 = load i8, ptr %165, align 1, !tbaa !61
  %4593 = load ptr, ptr %162, align 8, !tbaa !9
  %4594 = load i32, ptr %158, align 4, !tbaa !5
  %4595 = load i32, ptr %14, align 4, !tbaa !5
  %4596 = mul nsw i32 %4594, %4595
  %4597 = load i32, ptr %19, align 4, !tbaa !5
  %4598 = sdiv i32 %4597, 2
  %4599 = mul nsw i32 %4596, %4598
  %4600 = load i32, ptr %160, align 4, !tbaa !5
  %4601 = sdiv i32 %4600, 2
  %4602 = load i32, ptr %14, align 4, !tbaa !5
  %4603 = mul nsw i32 %4601, %4602
  %4604 = add nsw i32 %4599, %4603
  %4605 = load i32, ptr %159, align 4, !tbaa !5
  %4606 = add nsw i32 %4604, %4605
  %4607 = sext i32 %4606 to i64
  %4608 = getelementptr inbounds i8, ptr %4593, i64 %4607
  store i8 %4592, ptr %4608, 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 %4609

4609:                                             ; preds = %4545
  %4610 = load i32, ptr %160, align 4, !tbaa !5
  %4611 = add nsw i32 %4610, 2
  store i32 %4611, ptr %160, align 4, !tbaa !5
  br label %4541, !llvm.loop !100

4612:                                             ; preds = %4541
  br label %4613

4613:                                             ; preds = %4612
  %4614 = load i32, ptr %159, align 4, !tbaa !5
  %4615 = add nsw i32 %4614, 1
  store i32 %4615, ptr %159, align 4, !tbaa !5
  br label %4536, !llvm.loop !101

4616:                                             ; preds = %4536
  br label %4617

4617:                                             ; preds = %4616
  %4618 = load i32, ptr %158, align 4, !tbaa !5
  %4619 = add nsw i32 %4618, 1
  store i32 %4619, ptr %158, align 4, !tbaa !5
  br label %4531, !llvm.loop !102

4620:                                             ; preds = %4531
  %4621 = load ptr, ptr %157, align 8, !tbaa !9
  %4622 = load ptr, ptr %57, align 8, !tbaa !9
  %4623 = load ptr, ptr %58, align 8, !tbaa !9
  %4624 = load ptr, ptr %59, align 8, !tbaa !9
  %4625 = load i32, ptr %40, align 4, !tbaa !5
  %4626 = load i32, ptr %33, align 4, !tbaa !5
  %4627 = call double @jit_matmul(ptr noundef %44, ptr noundef %4621, ptr noundef %4622, ptr noundef %4623, ptr noundef %4624, i32 noundef %4625, i32 noundef %4626, ptr noundef %65)
  store double %4627, ptr %32, align 8, !tbaa !11
  %4628 = load ptr, ptr %157, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4628)
  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 %4670

4629:                                             ; preds = %4413
  %4630 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %4631 = load i32, ptr %4630, align 8, !tbaa !17
  %4632 = icmp ugt i32 %4631, 0
  br i1 %4632, label %4657, label %4633

4633:                                             ; preds = %4629
  %4634 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  %4635 = load i32, ptr %4634, align 4, !tbaa !21
  %4636 = icmp ugt i32 %4635, 0
  br i1 %4636, label %4657, label %4637

4637:                                             ; preds = %4633
  %4638 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  %4639 = load i32, ptr %4638, align 4, !tbaa !23
  %4640 = icmp ugt i32 %4639, 0
  br i1 %4640, label %4657, label %4641

4641:                                             ; preds = %4637
  %4642 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  %4643 = load i32, ptr %4642, align 8, !tbaa !22
  %4644 = icmp ugt i32 %4643, 0
  br i1 %4644, label %4657, label %4645

4645:                                             ; preds = %4641
  %4646 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %4647 = load i32, ptr %4646, align 4, !tbaa !18
  %4648 = icmp ugt i32 %4647, 0
  br i1 %4648, label %4657, label %4649

4649:                                             ; preds = %4645
  %4650 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %4651 = load i32, ptr %4650, align 8, !tbaa !19
  %4652 = icmp ugt i32 %4651, 0
  br i1 %4652, label %4657, label %4653

4653:                                             ; preds = %4649
  %4654 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %4655 = load i32, ptr %4654, align 4, !tbaa !20
  %4656 = icmp ugt i32 %4655, 0
  br i1 %4656, label %4657, label %4661

4657:                                             ; preds = %4653, %4649, %4645, %4641, %4637, %4633, %4629
  %4658 = load i32, ptr %30, align 4, !tbaa !5
  %4659 = icmp ne i32 %4658, 4
  br i1 %4659, label %4660, label %4661

4660:                                             ; preds = %4657
  br label %4669

4661:                                             ; preds = %4657, %4653
  %4662 = load ptr, ptr %56, align 8, !tbaa !9
  %4663 = load ptr, ptr %57, align 8, !tbaa !9
  %4664 = load ptr, ptr %58, align 8, !tbaa !9
  %4665 = load ptr, ptr %59, align 8, !tbaa !9
  %4666 = load i32, ptr %40, align 4, !tbaa !5
  %4667 = load i32, ptr %33, align 4, !tbaa !5
  %4668 = call double @jit_matmul(ptr noundef %44, ptr noundef %4662, ptr noundef %4663, ptr noundef %4664, ptr noundef %4665, i32 noundef %4666, i32 noundef %4667, ptr noundef %65)
  store double %4668, ptr %32, align 8, !tbaa !11
  br label %4669

4669:                                             ; preds = %4661, %4660
  br label %4670

4670:                                             ; preds = %4669, %4620
  %4671 = load i32, ptr %26, align 4, !tbaa !5
  %4672 = icmp sgt i32 %4671, 0
  br i1 %4672, label %4673, label %4729

4673:                                             ; preds = %4670
  %4674 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4675 = load i32, ptr %4674, align 8, !tbaa !32
  %4676 = icmp eq i32 %4675, 2
  br i1 %4676, label %4681, label %4677

4677:                                             ; preds = %4673
  %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, 3
  br i1 %4680, label %4681, label %4716

4681:                                             ; preds = %4677, %4673
  %4682 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4683 = load i32, ptr %4682, align 8, !tbaa !32
  %4684 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %4683)
  %4685 = icmp eq i32 %4684, 4
  br i1 %4685, label %4686, label %4703

4686:                                             ; preds = %4681
  %4687 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 5
  %4688 = load i32, ptr %4687, align 4, !tbaa !50
  %4689 = srem i32 %4688, 4
  %4690 = icmp eq i32 %4689, 0
  br i1 %4690, label %4691, label %4703

4691:                                             ; preds = %4686
  %4692 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4693 = load i32, ptr %4692, align 8, !tbaa !32
  %4694 = load ptr, ptr %60, align 8, !tbaa !9
  %4695 = load ptr, ptr %58, align 8, !tbaa !9
  %4696 = load i32, ptr %16, align 4, !tbaa !5
  %4697 = mul nsw i32 %4696, 4
  %4698 = load i32, ptr %17, align 4, !tbaa !5
  %4699 = mul nsw i32 %4698, 4
  %4700 = load i32, ptr %18, align 4, !tbaa !5
  %4701 = sdiv i32 %4700, 4
  %4702 = call double @check_matrix(i32 noundef %4693, ptr noundef %4694, ptr noundef %4695, i32 noundef %4697, i32 noundef %4699, i32 noundef %4701)
  store double %4702, ptr %53, align 8, !tbaa !11
  br label %4715

4703:                                             ; preds = %4686, %4681
  %4704 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4705 = load i32, ptr %4704, align 8, !tbaa !32
  %4706 = load ptr, ptr %60, align 8, !tbaa !9
  %4707 = load ptr, ptr %58, align 8, !tbaa !9
  %4708 = load i32, ptr %16, align 4, !tbaa !5
  %4709 = mul nsw i32 %4708, 2
  %4710 = load i32, ptr %17, align 4, !tbaa !5
  %4711 = mul nsw i32 %4710, 2
  %4712 = load i32, ptr %18, align 4, !tbaa !5
  %4713 = sdiv i32 %4712, 2
  %4714 = call double @check_matrix(i32 noundef %4705, ptr noundef %4706, ptr noundef %4707, i32 noundef %4709, i32 noundef %4711, i32 noundef %4713)
  store double %4714, ptr %53, align 8, !tbaa !11
  br label %4715

4715:                                             ; preds = %4703, %4691
  br label %4728

4716:                                             ; preds = %4677
  %4717 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4718 = load i32, ptr %4717, align 8, !tbaa !32
  %4719 = load ptr, ptr %60, align 8, !tbaa !9
  %4720 = load ptr, ptr %58, align 8, !tbaa !9
  %4721 = load i32, ptr %16, align 4, !tbaa !5
  %4722 = mul nsw i32 %4721, 4
  %4723 = load i32, ptr %17, align 4, !tbaa !5
  %4724 = mul nsw i32 %4723, 4
  %4725 = load i32, ptr %18, align 4, !tbaa !5
  %4726 = sdiv i32 %4725, 4
  %4727 = call double @check_matrix(i32 noundef %4718, ptr noundef %4719, ptr noundef %4720, i32 noundef %4722, i32 noundef %4724, i32 noundef %4726)
  store double %4727, ptr %53, align 8, !tbaa !11
  br label %4728

4728:                                             ; preds = %4716, %4715
  br label %4738

4729:                                             ; preds = %4670
  %4730 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4731 = load i32, ptr %4730, align 8, !tbaa !32
  %4732 = load ptr, ptr %60, align 8, !tbaa !9
  %4733 = load ptr, ptr %58, align 8, !tbaa !9
  %4734 = load i32, ptr %16, align 4, !tbaa !5
  %4735 = load i32, ptr %17, align 4, !tbaa !5
  %4736 = load i32, ptr %18, align 4, !tbaa !5
  %4737 = call double @check_matrix(i32 noundef %4731, ptr noundef %4732, ptr noundef %4733, i32 noundef %4734, i32 noundef %4735, i32 noundef %4736)
  store double %4737, ptr %53, align 8, !tbaa !11
  br label %4738

4738:                                             ; preds = %4729, %4728
  %4739 = load i32, ptr %42, align 4, !tbaa !5
  %4740 = icmp eq i32 %4739, 2
  br i1 %4740, label %4741, label %4751

4741:                                             ; preds = %4738
  %4742 = load ptr, ptr %64, align 8, !tbaa !9
  %4743 = load ptr, ptr %63, align 8, !tbaa !9
  %4744 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 10
  %4745 = load i32, ptr %4744, align 8, !tbaa !72
  %4746 = load i32, ptr %17, align 4, !tbaa !5
  %4747 = add nsw i32 %4746, 7
  %4748 = sdiv i32 %4747, 8
  %4749 = load i32, ptr %18, align 4, !tbaa !5
  %4750 = call double @check_matrix(i32 noundef 12, ptr noundef %4742, ptr noundef %4743, i32 noundef %4745, i32 noundef %4748, i32 noundef %4749)
  store double %4750, ptr %54, align 8, !tbaa !11
  br label %4751

4751:                                             ; preds = %4741, %4738
  %4752 = load i32, ptr %10, align 4, !tbaa !5
  %4753 = icmp eq i32 %4752, 12
  br i1 %4753, label %4754, label %4781

4754:                                             ; preds = %4751
  %4755 = load i32, ptr %11, align 4, !tbaa !5
  %4756 = icmp eq i32 %4755, 3
  br i1 %4756, label %4757, label %4781

4757:                                             ; preds = %4754
  %4758 = load i32, ptr %12, align 4, !tbaa !5
  %4759 = icmp eq i32 %4758, 3
  br i1 %4759, label %4766, label %4760

4760:                                             ; preds = %4757
  %4761 = load i32, ptr %12, align 4, !tbaa !5
  %4762 = icmp eq i32 %4761, 1
  br i1 %4762, label %4766, label %4763

4763:                                             ; preds = %4760
  %4764 = load i32, ptr %12, align 4, !tbaa !5
  %4765 = icmp eq i32 %4764, 14
  br i1 %4765, label %4766, label %4781

4766:                                             ; preds = %4763, %4760, %4757
  %4767 = load i32, ptr %13, align 4, !tbaa !5
  %4768 = icmp eq i32 %4767, 3
  br i1 %4768, label %4772, label %4769

4769:                                             ; preds = %4766
  %4770 = load i32, ptr %13, align 4, !tbaa !5
  %4771 = icmp eq i32 %4770, 1
  br i1 %4771, label %4772, label %4781

4772:                                             ; preds = %4769, %4766
  %4773 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  %4774 = load ptr, ptr %4773, align 8, !tbaa !57
  call void @libxsmm_free(ptr noundef %4774)
  %4775 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 36
  %4776 = load ptr, ptr %4775, align 8, !tbaa !58
  call void @libxsmm_free(ptr noundef %4776)
  %4777 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 31
  %4778 = load ptr, ptr %4777, align 8, !tbaa !59
  call void @libxsmm_free(ptr noundef %4778)
  %4779 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 32
  %4780 = load ptr, ptr %4779, align 8, !tbaa !60
  call void @libxsmm_free(ptr noundef %4780)
  br label %4781

4781:                                             ; preds = %4772, %4769, %4763, %4754, %4751
  %4782 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %4783 = load i32, ptr %4782, align 8, !tbaa !17
  %4784 = icmp ugt i32 %4783, 0
  br i1 %4784, label %4785, label %4788

4785:                                             ; preds = %4781
  %4786 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 33
  %4787 = load ptr, ptr %4786, align 8, !tbaa !63
  call void @libxsmm_free(ptr noundef %4787)
  br label %4788

4788:                                             ; preds = %4785, %4781
  %4789 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %4790 = load i32, ptr %4789, align 4, !tbaa !18
  %4791 = icmp ugt i32 %4790, 0
  br i1 %4791, label %4800, label %4792

4792:                                             ; preds = %4788
  %4793 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %4794 = load i32, ptr %4793, align 8, !tbaa !19
  %4795 = icmp ugt i32 %4794, 0
  br i1 %4795, label %4800, label %4796

4796:                                             ; preds = %4792
  %4797 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %4798 = load i32, ptr %4797, align 4, !tbaa !20
  %4799 = icmp ugt i32 %4798, 0
  br i1 %4799, label %4800, label %4803

4800:                                             ; preds = %4796, %4792, %4788
  %4801 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 34
  %4802 = load ptr, ptr %4801, align 8, !tbaa !65
  call void @libxsmm_free(ptr noundef %4802)
  br label %4803

4803:                                             ; preds = %4800, %4796
  %4804 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %4805 = load i32, ptr %4804, align 4, !tbaa !20
  %4806 = icmp ugt i32 %4805, 0
  br i1 %4806, label %4807, label %4810

4807:                                             ; preds = %4803
  %4808 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 35
  %4809 = load ptr, ptr %4808, align 8, !tbaa !67
  call void @libxsmm_free(ptr noundef %4809)
  br label %4810

4810:                                             ; preds = %4807, %4803
  %4811 = load i32, ptr %10, align 4, !tbaa !5
  %4812 = icmp eq i32 %4811, 12
  br i1 %4812, label %4813, label %4825

4813:                                             ; preds = %4810
  %4814 = load i32, ptr %11, align 4, !tbaa !5
  %4815 = icmp eq i32 %4814, 2
  br i1 %4815, label %4816, label %4825

4816:                                             ; preds = %4813
  %4817 = load i32, ptr %13, align 4, !tbaa !5
  %4818 = icmp eq i32 %4817, 2
  br i1 %4818, label %4822, label %4819

4819:                                             ; preds = %4816
  %4820 = load i32, ptr %13, align 4, !tbaa !5
  %4821 = icmp eq i32 %4820, 1
  br i1 %4821, label %4822, label %4825

4822:                                             ; preds = %4819, %4816
  %4823 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  %4824 = load ptr, ptr %4823, align 8, !tbaa !57
  call void @libxsmm_free(ptr noundef %4824)
  br label %4825

4825:                                             ; preds = %4822, %4819, %4813, %4810
  %4826 = load ptr, ptr %56, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4826)
  %4827 = load ptr, ptr %57, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4827)
  %4828 = load ptr, ptr %58, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4828)
  %4829 = load ptr, ptr %59, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4829)
  %4830 = load ptr, ptr %60, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4830)
  %4831 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %4832 = load i32, ptr %4831, align 8, !tbaa !47
  %4833 = icmp eq i32 %4832, 1
  br i1 %4833, label %4834, label %4836

4834:                                             ; preds = %4825
  %4835 = load ptr, ptr %62, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4835)
  br label %4836

4836:                                             ; preds = %4834, %4825
  %4837 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %4838 = load i32, ptr %4837, align 4, !tbaa !48
  %4839 = icmp eq i32 %4838, 2
  br i1 %4839, label %4840, label %4843

4840:                                             ; preds = %4836
  %4841 = load ptr, ptr %63, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4841)
  %4842 = load ptr, ptr %64, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4842)
  br label %4843

4843:                                             ; preds = %4840, %4836
  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
  %4844 = load i32, ptr %41, align 4, !tbaa !5
  %4845 = icmp ne i32 %4844, 0
  br i1 %4845, label %4846, label %4853

4846:                                             ; preds = %4843
  %4847 = load i32, ptr %41, align 4, !tbaa !5
  %4848 = icmp eq i32 %4847, 1
  br i1 %4848, label %4849, label %4851

4849:                                             ; preds = %4846
  %4850 = call i32 (ptr, ...) @printf(ptr noundef @.str.34)
  br label %4852

4851:                                             ; preds = %4846
  br label %4852

4852:                                             ; preds = %4851, %4849
  br label %4853

4853:                                             ; preds = %4852, %4843
  %4854 = load i32, ptr %42, align 4, !tbaa !5
  %4855 = icmp ne i32 %4854, 0
  br i1 %4855, label %4856, label %4875

4856:                                             ; preds = %4853
  %4857 = load i32, ptr %42, align 4, !tbaa !5
  %4858 = icmp eq i32 %4857, 1
  br i1 %4858, label %4859, label %4861

4859:                                             ; preds = %4856
  %4860 = call i32 (ptr, ...) @printf(ptr noundef @.str.35)
  br label %4874

4861:                                             ; preds = %4856
  %4862 = load i32, ptr %42, align 4, !tbaa !5
  %4863 = icmp eq i32 %4862, 2
  br i1 %4863, label %4864, label %4866

4864:                                             ; preds = %4861
  %4865 = call i32 (ptr, ...) @printf(ptr noundef @.str.36)
  br label %4873

4866:                                             ; preds = %4861
  %4867 = load i32, ptr %42, align 4, !tbaa !5
  %4868 = icmp eq i32 %4867, 3
  br i1 %4868, label %4869, label %4871

4869:                                             ; preds = %4866
  %4870 = call i32 (ptr, ...) @printf(ptr noundef @.str.37)
  br label %4872

4871:                                             ; preds = %4866
  br label %4872

4872:                                             ; preds = %4871, %4869
  br label %4873

4873:                                             ; preds = %4872, %4864
  br label %4874

4874:                                             ; preds = %4873, %4859
  br label %4875

4875:                                             ; preds = %4874, %4853
  %4876 = load i32, ptr %26, align 4, !tbaa !5
  %4877 = icmp sgt i32 %4876, 0
  br i1 %4877, label %4878, label %4880

4878:                                             ; preds = %4875
  %4879 = call i32 (ptr, ...) @printf(ptr noundef @.str.38)
  br label %4880

4880:                                             ; preds = %4878, %4875
  %4881 = load i32, ptr %33, align 4, !tbaa !5
  %4882 = icmp eq i32 %4881, 0
  br i1 %4882, label %4883, label %4917

4883:                                             ; preds = %4880
  %4884 = load double, ptr %32, align 8, !tbaa !11
  %4885 = call i32 (ptr, ...) @printf(ptr noundef @.str.39, double noundef %4884)
  %4886 = load i32, ptr %40, align 4, !tbaa !5
  %4887 = sitofp i32 %4886 to double
  %4888 = load i32, ptr %17, align 4, !tbaa !5
  %4889 = sitofp i32 %4888 to double
  %4890 = fmul double %4887, %4889
  %4891 = load i32, ptr %18, align 4, !tbaa !5
  %4892 = sitofp i32 %4891 to double
  %4893 = fmul double %4890, %4892
  %4894 = load i32, ptr %19, align 4, !tbaa !5
  %4895 = sitofp i32 %4894 to double
  %4896 = fmul double %4893, %4895
  %4897 = load i32, ptr %29, align 4, !tbaa !5
  %4898 = sitofp i32 %4897 to double
  %4899 = fmul double %4896, %4898
  %4900 = load i32, ptr %45, align 4, !tbaa !5
  %4901 = sitofp i32 %4900 to double
  %4902 = fmul double %4899, %4901
  %4903 = fmul double %4902, 2.000000e+00
  %4904 = load double, ptr %32, align 8, !tbaa !11
  %4905 = fmul double %4904, 1.000000e+09
  %4906 = fdiv double %4903, %4905
  %4907 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %4906)
  %4908 = load double, ptr %53, align 8, !tbaa !11
  %4909 = call i32 (ptr, ...) @printf(ptr noundef @.str.41, double noundef %4908)
  %4910 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %4911 = load i32, ptr %4910, align 4, !tbaa !48
  %4912 = icmp eq i32 %4911, 2
  br i1 %4912, label %4913, label %4916

4913:                                             ; preds = %4883
  %4914 = load double, ptr %54, align 8, !tbaa !11
  %4915 = call i32 (ptr, ...) @printf(ptr noundef @.str.42, double noundef %4914)
  br label %4916

4916:                                             ; preds = %4913, %4883
  br label %5123

4917:                                             ; preds = %4880
  %4918 = load i32, ptr %36, align 4, !tbaa !5
  %4919 = icmp eq i32 %4918, 1
  br i1 %4919, label %4920, label %5000

4920:                                             ; preds = %4917
  %4921 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %4922 = load i32, ptr %4921, align 4, !tbaa !48
  %4923 = icmp eq i32 %4922, 2
  br i1 %4923, label %4924, label %4962

4924:                                             ; preds = %4920
  %4925 = load ptr, ptr %6, align 8, !tbaa !9
  %4926 = load ptr, ptr %7, align 8, !tbaa !9
  %4927 = load ptr, ptr %8, align 8, !tbaa !9
  %4928 = load ptr, ptr %9, align 8, !tbaa !9
  %4929 = load i32, ptr %17, align 4, !tbaa !5
  %4930 = load i32, ptr %18, align 4, !tbaa !5
  %4931 = load i32, ptr %19, align 4, !tbaa !5
  %4932 = load i32, ptr %14, align 4, !tbaa !5
  %4933 = load i32, ptr %15, align 4, !tbaa !5
  %4934 = load i32, ptr %16, align 4, !tbaa !5
  %4935 = load i32, ptr %29, align 4, !tbaa !5
  %4936 = load i32, ptr %30, align 4, !tbaa !5
  %4937 = load i32, ptr %31, align 4, !tbaa !5
  %4938 = load i32, ptr %40, align 4, !tbaa !5
  %4939 = sitofp i32 %4938 to double
  %4940 = load i32, ptr %17, align 4, !tbaa !5
  %4941 = sitofp i32 %4940 to double
  %4942 = fmul double %4939, %4941
  %4943 = load i32, ptr %18, align 4, !tbaa !5
  %4944 = sitofp i32 %4943 to double
  %4945 = fmul double %4942, %4944
  %4946 = load i32, ptr %19, align 4, !tbaa !5
  %4947 = sitofp i32 %4946 to double
  %4948 = fmul double %4945, %4947
  %4949 = load i32, ptr %29, align 4, !tbaa !5
  %4950 = sitofp i32 %4949 to double
  %4951 = fmul double %4948, %4950
  %4952 = load i32, ptr %45, align 4, !tbaa !5
  %4953 = sitofp i32 %4952 to double
  %4954 = fmul double %4951, %4953
  %4955 = fmul double %4954, 2.000000e+00
  %4956 = load double, ptr %32, align 8, !tbaa !11
  %4957 = fmul double %4956, 1.000000e+09
  %4958 = fdiv double %4955, %4957
  %4959 = load double, ptr %53, align 8, !tbaa !11
  %4960 = load double, ptr %54, align 8, !tbaa !11
  %4961 = call i32 (ptr, ...) @printf(ptr noundef @.str.43, ptr noundef %4925, ptr noundef %4926, ptr noundef %4927, ptr noundef %4928, i32 noundef %4929, i32 noundef %4930, i32 noundef %4931, i32 noundef %4932, i32 noundef %4933, i32 noundef %4934, i32 noundef %4935, i32 noundef %4936, i32 noundef %4937, double noundef %4958, double noundef %4959, double noundef %4960)
  br label %4999

4962:                                             ; preds = %4920
  %4963 = load ptr, ptr %6, align 8, !tbaa !9
  %4964 = load ptr, ptr %7, align 8, !tbaa !9
  %4965 = load ptr, ptr %8, align 8, !tbaa !9
  %4966 = load ptr, ptr %9, align 8, !tbaa !9
  %4967 = load i32, ptr %17, align 4, !tbaa !5
  %4968 = load i32, ptr %18, align 4, !tbaa !5
  %4969 = load i32, ptr %19, align 4, !tbaa !5
  %4970 = load i32, ptr %14, align 4, !tbaa !5
  %4971 = load i32, ptr %15, align 4, !tbaa !5
  %4972 = load i32, ptr %16, align 4, !tbaa !5
  %4973 = load i32, ptr %29, align 4, !tbaa !5
  %4974 = load i32, ptr %30, align 4, !tbaa !5
  %4975 = load i32, ptr %31, align 4, !tbaa !5
  %4976 = load i32, ptr %40, align 4, !tbaa !5
  %4977 = sitofp i32 %4976 to double
  %4978 = load i32, ptr %17, align 4, !tbaa !5
  %4979 = sitofp i32 %4978 to double
  %4980 = fmul double %4977, %4979
  %4981 = load i32, ptr %18, align 4, !tbaa !5
  %4982 = sitofp i32 %4981 to double
  %4983 = fmul double %4980, %4982
  %4984 = load i32, ptr %19, align 4, !tbaa !5
  %4985 = sitofp i32 %4984 to double
  %4986 = fmul double %4983, %4985
  %4987 = load i32, ptr %29, align 4, !tbaa !5
  %4988 = sitofp i32 %4987 to double
  %4989 = fmul double %4986, %4988
  %4990 = load i32, ptr %45, align 4, !tbaa !5
  %4991 = sitofp i32 %4990 to double
  %4992 = fmul double %4989, %4991
  %4993 = fmul double %4992, 2.000000e+00
  %4994 = load double, ptr %32, align 8, !tbaa !11
  %4995 = fmul double %4994, 1.000000e+09
  %4996 = fdiv double %4993, %4995
  %4997 = load double, ptr %53, align 8, !tbaa !11
  %4998 = call i32 (ptr, ...) @printf(ptr noundef @.str.44, ptr noundef %4963, ptr noundef %4964, ptr noundef %4965, ptr noundef %4966, i32 noundef %4967, i32 noundef %4968, i32 noundef %4969, i32 noundef %4970, i32 noundef %4971, i32 noundef %4972, i32 noundef %4973, i32 noundef %4974, i32 noundef %4975, double noundef %4996, double noundef %4997)
  br label %4999

4999:                                             ; preds = %4962, %4924
  br label %5036

5000:                                             ; preds = %4917
  %5001 = load ptr, ptr %6, align 8, !tbaa !9
  %5002 = load ptr, ptr %7, align 8, !tbaa !9
  %5003 = load ptr, ptr %8, align 8, !tbaa !9
  %5004 = load ptr, ptr %9, align 8, !tbaa !9
  %5005 = load i32, ptr %17, align 4, !tbaa !5
  %5006 = load i32, ptr %18, align 4, !tbaa !5
  %5007 = load i32, ptr %19, align 4, !tbaa !5
  %5008 = load i32, ptr %14, align 4, !tbaa !5
  %5009 = load i32, ptr %15, align 4, !tbaa !5
  %5010 = load i32, ptr %16, align 4, !tbaa !5
  %5011 = load i32, ptr %29, align 4, !tbaa !5
  %5012 = load i32, ptr %30, align 4, !tbaa !5
  %5013 = load i32, ptr %31, align 4, !tbaa !5
  %5014 = load i32, ptr %40, align 4, !tbaa !5
  %5015 = sitofp i32 %5014 to double
  %5016 = load i32, ptr %17, align 4, !tbaa !5
  %5017 = sitofp i32 %5016 to double
  %5018 = fmul double %5015, %5017
  %5019 = load i32, ptr %18, align 4, !tbaa !5
  %5020 = sitofp i32 %5019 to double
  %5021 = fmul double %5018, %5020
  %5022 = load i32, ptr %19, align 4, !tbaa !5
  %5023 = sitofp i32 %5022 to double
  %5024 = fmul double %5021, %5023
  %5025 = load i32, ptr %29, align 4, !tbaa !5
  %5026 = sitofp i32 %5025 to double
  %5027 = fmul double %5024, %5026
  %5028 = load i32, ptr %45, align 4, !tbaa !5
  %5029 = sitofp i32 %5028 to double
  %5030 = fmul double %5027, %5029
  %5031 = fmul double %5030, 2.000000e+00
  %5032 = load double, ptr %32, align 8, !tbaa !11
  %5033 = fmul double %5032, 1.000000e+09
  %5034 = fdiv double %5031, %5033
  %5035 = call i32 (ptr, ...) @printf(ptr noundef @.str.45, ptr noundef %5001, ptr noundef %5002, ptr noundef %5003, ptr noundef %5004, i32 noundef %5005, i32 noundef %5006, i32 noundef %5007, i32 noundef %5008, i32 noundef %5009, i32 noundef %5010, i32 noundef %5011, i32 noundef %5012, i32 noundef %5013, double noundef %5034)
  br label %5036

5036:                                             ; preds = %5000, %4999
  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
  %5037 = load i32, ptr %43, align 4, !tbaa !5
  switch i32 %5037, label %5040 [
    i32 0, label %5038
    i32 1, label %5039
  ]

5038:                                             ; preds = %5036
  store ptr @.str.10, ptr %166, align 8, !tbaa !9
  br label %5041

5039:                                             ; preds = %5036
  store ptr @.str.11, ptr %166, align 8, !tbaa !9
  br label %5041

5040:                                             ; preds = %5036
  store ptr @.str.46, ptr %166, align 8, !tbaa !9
  br label %5041

5041:                                             ; preds = %5040, %5039, %5038
  %5042 = load i32, ptr %30, align 4, !tbaa !5
  switch i32 %5042, label %5048 [
    i32 0, label %5043
    i32 1, label %5044
    i32 2, label %5045
    i32 3, label %5046
    i32 4, label %5047
  ]

5043:                                             ; preds = %5041
  store ptr @.str.12, ptr %167, align 8, !tbaa !9
  br label %5049

5044:                                             ; preds = %5041
  store ptr @.str.13, ptr %167, align 8, !tbaa !9
  br label %5049

5045:                                             ; preds = %5041
  store ptr @.str.14, ptr %167, align 8, !tbaa !9
  br label %5049

5046:                                             ; preds = %5041
  store ptr @.str.15, ptr %167, align 8, !tbaa !9
  br label %5049

5047:                                             ; preds = %5041
  store ptr @.str.16, ptr %167, align 8, !tbaa !9
  br label %5049

5048:                                             ; preds = %5041
  store ptr @.str.46, ptr %167, align 8, !tbaa !9
  br label %5049

5049:                                             ; preds = %5048, %5047, %5046, %5045, %5044, %5043
  %5050 = load ptr, ptr %166, align 8, !tbaa !9
  %5051 = icmp ne ptr null, %5050
  br i1 %5051, label %5052, label %5056

5052:                                             ; preds = %5049
  %5053 = load ptr, ptr %167, align 8, !tbaa !9
  %5054 = icmp ne ptr null, %5053
  br i1 %5054, label %5055, label %5056

5055:                                             ; preds = %5052
  br label %5057

5056:                                             ; preds = %5052, %5049
  call void @__assert_fail(ptr noundef @.str.47, ptr noundef @.str.33, i32 noundef 3813, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

5057:                                             ; preds = %5055
  %5058 = load i32, ptr %45, align 4, !tbaa !5
  %5059 = sitofp i32 %5058 to double
  %5060 = load double, ptr %32, align 8, !tbaa !11
  %5061 = fdiv double %5060, %5059
  store double %5061, ptr %32, align 8, !tbaa !11
  %5062 = load ptr, ptr %5, align 8, !tbaa !9
  %5063 = getelementptr inbounds ptr, ptr %5062, i64 0
  %5064 = load ptr, ptr %5063, align 8, !tbaa !9
  %5065 = load ptr, ptr %6, align 8, !tbaa !9
  %5066 = load ptr, ptr %7, align 8, !tbaa !9
  %5067 = load ptr, ptr %8, align 8, !tbaa !9
  %5068 = load ptr, ptr %9, align 8, !tbaa !9
  %5069 = load i32, ptr %17, align 4, !tbaa !5
  %5070 = load i32, ptr %18, align 4, !tbaa !5
  %5071 = load i32, ptr %19, align 4, !tbaa !5
  %5072 = load i32, ptr %14, align 4, !tbaa !5
  %5073 = load i32, ptr %15, align 4, !tbaa !5
  %5074 = load i32, ptr %16, align 4, !tbaa !5
  %5075 = load double, ptr %27, align 8, !tbaa !11
  %5076 = load double, ptr %28, align 8, !tbaa !11
  %5077 = load i32, ptr %20, align 4, !tbaa !5
  %5078 = load i32, ptr %21, align 4, !tbaa !5
  %5079 = load i32, ptr %22, align 4, !tbaa !5
  %5080 = load i32, ptr %23, align 4, !tbaa !5
  %5081 = load i32, ptr %24, align 4, !tbaa !5
  %5082 = load i32, ptr %25, align 4, !tbaa !5
  %5083 = load i32, ptr %26, align 4, !tbaa !5
  %5084 = load ptr, ptr %166, align 8, !tbaa !9
  %5085 = load ptr, ptr %167, align 8, !tbaa !9
  %5086 = load i32, ptr %29, align 4, !tbaa !5
  %5087 = load i32, ptr %31, align 4, !tbaa !5
  %5088 = load i32, ptr %40, align 4, !tbaa !5
  %5089 = load i32, ptr %39, align 4, !tbaa !5
  %5090 = call i32 (ptr, ...) @printf(ptr noundef @.str.48, ptr noundef %5064, ptr noundef %5065, ptr noundef %5066, ptr noundef %5067, ptr noundef %5068, i32 noundef %5069, i32 noundef %5070, i32 noundef %5071, i32 noundef %5072, i32 noundef %5073, i32 noundef %5074, double noundef %5075, double noundef %5076, i32 noundef %5077, i32 noundef %5078, i32 noundef %5079, i32 noundef %5080, i32 noundef %5081, i32 noundef %5082, i32 noundef %5083, ptr noundef %5084, ptr noundef %5085, i32 noundef %5086, i32 noundef %5087, i32 noundef %5088, i32 noundef %5089)
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #10
  %5091 = load double, ptr %32, align 8, !tbaa !11
  %5092 = call i32 (ptr, ...) @printf(ptr noundef @.str.49, double noundef %5091)
  %5093 = load i32, ptr %40, align 4, !tbaa !5
  %5094 = sitofp i32 %5093 to double
  %5095 = load i32, ptr %17, align 4, !tbaa !5
  %5096 = sitofp i32 %5095 to double
  %5097 = fmul double %5094, %5096
  %5098 = load i32, ptr %18, align 4, !tbaa !5
  %5099 = sitofp i32 %5098 to double
  %5100 = fmul double %5097, %5099
  %5101 = load i32, ptr %19, align 4, !tbaa !5
  %5102 = sitofp i32 %5101 to double
  %5103 = fmul double %5100, %5102
  %5104 = load i32, ptr %29, align 4, !tbaa !5
  %5105 = sitofp i32 %5104 to double
  %5106 = fmul double %5103, %5105
  %5107 = load i32, ptr %45, align 4, !tbaa !5
  %5108 = sitofp i32 %5107 to double
  %5109 = fmul double %5106, %5108
  %5110 = fmul double %5109, 2.000000e+00
  %5111 = load double, ptr %32, align 8, !tbaa !11
  %5112 = fmul double %5111, 1.000000e+09
  %5113 = fdiv double %5110, %5112
  %5114 = call i32 (ptr, ...) @printf(ptr noundef @.str.50, double noundef %5113)
  %5115 = load i32, ptr %47, align 4, !tbaa !5
  %5116 = icmp eq i32 %5115, 0
  br i1 %5116, label %5117, label %5120

5117:                                             ; preds = %5057
  %5118 = load double, ptr %53, align 8, !tbaa !11
  %5119 = call i32 (ptr, ...) @printf(ptr noundef @.str.41, double noundef %5118)
  br label %5122

5120:                                             ; preds = %5057
  %5121 = call i32 (ptr, ...) @printf(ptr noundef @.str.51)
  br label %5122

5122:                                             ; preds = %5120, %5117
  br label %5123

5123:                                             ; preds = %5122, %4916
  %5124 = load double, ptr %37, align 8, !tbaa !11
  %5125 = load double, ptr %53, align 8, !tbaa !11
  %5126 = fcmp olt double %5124, %5125
  br i1 %5126, label %5127, label %5135

5127:                                             ; preds = %5123
  %5128 = load i32, ptr %36, align 4, !tbaa !5
  %5129 = icmp eq i32 %5128, 1
  br i1 %5129, label %5130, label %5135

5130:                                             ; preds = %5127
  %5131 = load i32, ptr %47, align 4, !tbaa !5
  %5132 = icmp eq i32 %5131, 0
  br i1 %5132, label %5133, label %5135

5133:                                             ; preds = %5130
  %5134 = load double, ptr %53, align 8, !tbaa !11
  store double %5134, ptr %37, align 8, !tbaa !11
  br label %5135

5135:                                             ; preds = %5133, %5130, %5127, %5123
  %5136 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5137 = load i32, ptr %5136, align 4, !tbaa !48
  %5138 = icmp eq i32 %5137, 2
  br i1 %5138, label %5139, label %5152

5139:                                             ; preds = %5135
  %5140 = load double, ptr %38, align 8, !tbaa !11
  %5141 = load double, ptr %54, 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 %54, align 8, !tbaa !11
  store double %5150, ptr %38, align 8, !tbaa !11
  br label %5151

5151:                                             ; preds = %5149, %5146, %5143, %5139
  br label %5152

5152:                                             ; preds = %5151, %5135
  %5153 = load i64, ptr @tests_executed, align 8, !tbaa !103
  %5154 = add i64 %5153, 1
  store i64 %5154, ptr @tests_executed, align 8, !tbaa !103
  store i32 0, ptr %49, align 4
  br label %5155

5155:                                             ; preds = %5152, %1650
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  %5156 = load i32, ptr %49, align 4
  switch i32 %5156, label %5373 [
    i32 0, label %5157
    i32 2, label %5177
  ]

5157:                                             ; preds = %5155
  br label %5158

5158:                                             ; preds = %5157
  %5159 = load i32, ptr %46, align 4, !tbaa !5
  %5160 = icmp ugt i32 %5159, 0
  br i1 %5160, label %5161, label %5164

5161:                                             ; preds = %5158
  %5162 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5163 = icmp eq i32 %5162, 0
  br i1 %5163, label %5175, label %5164

5164:                                             ; preds = %5161, %5158
  %5165 = load i32, ptr %46, align 4, !tbaa !5
  %5166 = icmp ugt i32 %5165, 0
  br i1 %5166, label %5167, label %5173

5167:                                             ; preds = %5164
  %5168 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5169 = icmp ugt i32 %5168, 0
  br i1 %5169, label %5170, label %5173

5170:                                             ; preds = %5167
  %5171 = load i64, ptr @tests_executed, align 8, !tbaa !103
  %5172 = icmp ult i64 %5171, 10
  br label %5173

5173:                                             ; preds = %5170, %5167, %5164
  %5174 = phi i1 [ false, %5167 ], [ false, %5164 ], [ %5172, %5170 ]
  br label %5175

5175:                                             ; preds = %5173, %5161
  %5176 = phi i1 [ true, %5161 ], [ %5174, %5173 ]
  br i1 %5176, label %1630, label %5177, !llvm.loop !105

5177:                                             ; preds = %5175, %5155
  %5178 = load i32, ptr %33, align 4, !tbaa !5
  %5179 = icmp ne i32 %5178, 0
  br i1 %5179, label %5180, label %5183

5180:                                             ; preds = %5177
  %5181 = load ptr, ptr %35, align 8, !tbaa !9
  %5182 = call i32 @fclose(ptr noundef %5181)
  br label %5185

5183:                                             ; preds = %5177
  %5184 = call i32 (ptr, ...) @printf(ptr noundef @.str.28)
  br label %5185

5185:                                             ; preds = %5183, %5180
  %5186 = load double, ptr %37, align 8, !tbaa !11
  %5187 = call i32 (ptr, ...) @printf(ptr noundef @.str.52, double noundef %5186)
  %5188 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5189 = load i32, ptr %5188, align 4, !tbaa !48
  %5190 = icmp eq i32 %5189, 2
  br i1 %5190, label %5191, label %5194

5191:                                             ; preds = %5185
  %5192 = load double, ptr %38, align 8, !tbaa !11
  %5193 = call i32 (ptr, ...) @printf(ptr noundef @.str.53, double noundef %5192)
  br label %5194

5194:                                             ; preds = %5191, %5185
  %5195 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %5196 = load i32, ptr %5195, align 8, !tbaa !32
  %5197 = icmp eq i32 %5196, 2
  br i1 %5197, label %5198, label %5231

5198:                                             ; preds = %5194
  %5199 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5200 = load i32, ptr %5199, align 4, !tbaa !48
  %5201 = icmp eq i32 %5200, 3
  br i1 %5201, label %5202, label %5209

5202:                                             ; preds = %5198
  %5203 = load double, ptr %37, align 8, !tbaa !11
  %5204 = fcmp oge double %5203, 7.000000e-03
  br i1 %5204, label %5205, label %5206

5205:                                             ; preds = %5202
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5206:                                             ; preds = %5202
  %5207 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5208 = call i32 @libxsmm_return_success_code(i32 noundef %5207)
  store i32 %5208, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5209:                                             ; preds = %5198
  %5210 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5211 = load i32, ptr %5210, align 4, !tbaa !48
  %5212 = icmp eq i32 %5211, 2
  br i1 %5212, label %5217, label %5213

5213:                                             ; preds = %5209
  %5214 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5215 = load i32, ptr %5214, align 4, !tbaa !48
  %5216 = icmp eq i32 %5215, 1
  br i1 %5216, label %5217, label %5224

5217:                                             ; preds = %5213, %5209
  %5218 = load double, ptr %38, align 8, !tbaa !11
  %5219 = fcmp oge double %5218, 5.000000e-03
  br i1 %5219, label %5220, label %5221

5220:                                             ; preds = %5217
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5221:                                             ; preds = %5217
  %5222 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5223 = call i32 @libxsmm_return_success_code(i32 noundef %5222)
  store i32 %5223, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5224:                                             ; preds = %5213
  %5225 = load double, ptr %37, align 8, !tbaa !11
  %5226 = fcmp oge double %5225, 5.000000e-03
  br i1 %5226, label %5227, label %5228

5227:                                             ; preds = %5224
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5228:                                             ; preds = %5224
  %5229 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5230 = call i32 @libxsmm_return_success_code(i32 noundef %5229)
  store i32 %5230, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5231:                                             ; preds = %5194
  %5232 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %5233 = load i32, ptr %5232, align 4, !tbaa !30
  %5234 = icmp eq i32 %5233, 3
  br i1 %5234, label %5235, label %5242

5235:                                             ; preds = %5231
  %5236 = load double, ptr %37, align 8, !tbaa !11
  %5237 = fcmp oge double %5236, 8.000000e-03
  br i1 %5237, label %5238, label %5239

5238:                                             ; preds = %5235
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5239:                                             ; preds = %5235
  %5240 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5241 = call i32 @libxsmm_return_success_code(i32 noundef %5240)
  store i32 %5241, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5242:                                             ; preds = %5231
  %5243 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %5244 = load i32, ptr %5243, align 8, !tbaa !32
  %5245 = icmp eq i32 %5244, 4
  br i1 %5245, label %5246, label %5290

5246:                                             ; preds = %5242
  %5247 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5248 = load i32, ptr %5247, align 4, !tbaa !48
  %5249 = icmp eq i32 %5248, 3
  br i1 %5249, label %5250, label %5268

5250:                                             ; preds = %5246
  %5251 = load double, ptr %37, align 8, !tbaa !11
  %5252 = fcmp oge double %5251, 0x3F826E978D4FDF3B
  br i1 %5252, label %5253, label %5265

5253:                                             ; preds = %5250
  %5254 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %5255 = load i32, ptr %5254, align 8, !tbaa !47
  %5256 = icmp eq i32 %5255, 1
  br i1 %5256, label %5257, label %5258

5257:                                             ; preds = %5253
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5258:                                             ; preds = %5253
  %5259 = load double, ptr %37, align 8, !tbaa !11
  %5260 = fcmp oge double %5259, 1.800000e-02
  br i1 %5260, label %5261, label %5262

5261:                                             ; preds = %5258
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5262:                                             ; preds = %5258
  %5263 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5264 = call i32 @libxsmm_return_success_code(i32 noundef %5263)
  store i32 %5264, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5265:                                             ; preds = %5250
  %5266 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5267 = call i32 @libxsmm_return_success_code(i32 noundef %5266)
  store i32 %5267, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5268:                                             ; preds = %5246
  %5269 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5270 = load i32, ptr %5269, align 4, !tbaa !48
  %5271 = icmp eq i32 %5270, 2
  br i1 %5271, label %5276, label %5272

5272:                                             ; preds = %5268
  %5273 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5274 = load i32, ptr %5273, align 4, !tbaa !48
  %5275 = icmp eq i32 %5274, 1
  br i1 %5275, label %5276, label %5283

5276:                                             ; preds = %5272, %5268
  %5277 = load double, ptr %38, align 8, !tbaa !11
  %5278 = fcmp oge double %5277, 5.000000e-03
  br i1 %5278, label %5279, label %5280

5279:                                             ; preds = %5276
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5280:                                             ; preds = %5276
  %5281 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5282 = call i32 @libxsmm_return_success_code(i32 noundef %5281)
  store i32 %5282, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5283:                                             ; preds = %5272
  %5284 = load double, ptr %37, align 8, !tbaa !11
  %5285 = fcmp oge double %5284, 5.000000e-03
  br i1 %5285, label %5286, label %5287

5286:                                             ; preds = %5283
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5287:                                             ; preds = %5283
  %5288 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5289 = call i32 @libxsmm_return_success_code(i32 noundef %5288)
  store i32 %5289, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5290:                                             ; preds = %5242
  %5291 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %5292 = load i32, ptr %5291, align 8, !tbaa !32
  %5293 = icmp eq i32 %5292, 5
  br i1 %5293, label %5294, label %5338

5294:                                             ; preds = %5290
  %5295 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5296 = load i32, ptr %5295, align 4, !tbaa !48
  %5297 = icmp eq i32 %5296, 3
  br i1 %5297, label %5298, label %5316

5298:                                             ; preds = %5294
  %5299 = load double, ptr %37, align 8, !tbaa !11
  %5300 = fcmp oge double %5299, 0x3F826E978D4FDF3B
  br i1 %5300, label %5301, label %5313

5301:                                             ; preds = %5298
  %5302 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %5303 = load i32, ptr %5302, align 8, !tbaa !47
  %5304 = icmp eq i32 %5303, 1
  br i1 %5304, label %5305, label %5306

5305:                                             ; preds = %5301
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5306:                                             ; preds = %5301
  %5307 = load double, ptr %37, align 8, !tbaa !11
  %5308 = fcmp oge double %5307, 1.800000e-02
  br i1 %5308, label %5309, label %5310

5309:                                             ; preds = %5306
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5310:                                             ; preds = %5306
  %5311 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5312 = call i32 @libxsmm_return_success_code(i32 noundef %5311)
  store i32 %5312, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5313:                                             ; preds = %5298
  %5314 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5315 = call i32 @libxsmm_return_success_code(i32 noundef %5314)
  store i32 %5315, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5316:                                             ; preds = %5294
  %5317 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5318 = load i32, ptr %5317, align 4, !tbaa !48
  %5319 = icmp eq i32 %5318, 2
  br i1 %5319, label %5324, label %5320

5320:                                             ; preds = %5316
  %5321 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5322 = load i32, ptr %5321, align 4, !tbaa !48
  %5323 = icmp eq i32 %5322, 1
  br i1 %5323, label %5324, label %5331

5324:                                             ; preds = %5320, %5316
  %5325 = load double, ptr %38, align 8, !tbaa !11
  %5326 = fcmp oge double %5325, 5.000000e-03
  br i1 %5326, label %5327, label %5328

5327:                                             ; preds = %5324
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5328:                                             ; preds = %5324
  %5329 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5330 = call i32 @libxsmm_return_success_code(i32 noundef %5329)
  store i32 %5330, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5331:                                             ; preds = %5320
  %5332 = load double, ptr %37, align 8, !tbaa !11
  %5333 = fcmp oge double %5332, 5.000000e-03
  br i1 %5333, label %5334, label %5335

5334:                                             ; preds = %5331
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5335:                                             ; preds = %5331
  %5336 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5337 = call i32 @libxsmm_return_success_code(i32 noundef %5336)
  store i32 %5337, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5338:                                             ; preds = %5290
  %5339 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5340 = load i32, ptr %5339, align 4, !tbaa !48
  %5341 = icmp eq i32 %5340, 3
  br i1 %5341, label %5342, label %5349

5342:                                             ; preds = %5338
  %5343 = load double, ptr %37, align 8, !tbaa !11
  %5344 = fcmp oge double %5343, 7.000000e-04
  br i1 %5344, label %5345, label %5346

5345:                                             ; preds = %5342
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5346:                                             ; preds = %5342
  %5347 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5348 = call i32 @libxsmm_return_success_code(i32 noundef %5347)
  store i32 %5348, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5349:                                             ; preds = %5338
  %5350 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5351 = load i32, ptr %5350, align 4, !tbaa !48
  %5352 = icmp eq i32 %5351, 2
  br i1 %5352, label %5357, label %5353

5353:                                             ; preds = %5349
  %5354 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5355 = load i32, ptr %5354, align 4, !tbaa !48
  %5356 = icmp eq i32 %5355, 1
  br i1 %5356, label %5357, label %5364

5357:                                             ; preds = %5353, %5349
  %5358 = load double, ptr %38, align 8, !tbaa !11
  %5359 = fcmp oge double %5358, 2.000000e-05
  br i1 %5359, label %5360, label %5361

5360:                                             ; preds = %5357
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5361:                                             ; preds = %5357
  %5362 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5363 = call i32 @libxsmm_return_success_code(i32 noundef %5362)
  store i32 %5363, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5364:                                             ; preds = %5353
  %5365 = load double, ptr %37, align 8, !tbaa !11
  %5366 = fcmp oge double %5365, 1.200000e-05
  br i1 %5366, label %5367, label %5368

5367:                                             ; preds = %5364
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5368:                                             ; preds = %5364
  %5369 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5370 = call i32 @libxsmm_return_success_code(i32 noundef %5369)
  store i32 %5370, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5371

5371:                                             ; preds = %5368, %5367, %5361, %5360, %5346, %5345, %5335, %5334, %5328, %5327, %5313, %5310, %5309, %5305, %5287, %5286, %5280, %5279, %5265, %5262, %5261, %5257, %5239, %5238, %5228, %5227, %5221, %5220, %5206, %5205, %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
  %5372 = load i32, ptr %3, align 4
  ret i32 %5372

5373:                                             ; preds = %5155
  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.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, -25
  %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 %28, label %194

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 %1804

150:                                              ; preds = %146, %93
  %.01730 = 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 %1804

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
  %.01679.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
  %.016791852 = phi i32 [ 4, %168 ], [ %.01679.ph, %173 ]
  %.01736 = phi float [ %172, %168 ], [ 0x3FD99999A0000000, %173 ]
  %.01676 = 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 %.thread1858

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
  %.not1947 = icmp eq i32 %0, 26
  br i1 %.not1947, label %.thread1858, 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 %.thread1858.sink.split, label %.thread1858

194:                                              ; preds = %2
  %195 = and i32 %0, -4
  %switch1847 = icmp eq i32 %195, 20
  br i1 %switch1847, 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 %1804

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
  %.11680.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
  %.116801865 = phi i32 [ 4, %311 ], [ %.11680.ph, %316 ]
  %.11737 = phi float [ %315, %311 ], [ 0x3FD99999A0000000, %316 ]
  %.11677 = 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 %.thread1858

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
  %.not1946 = icmp eq i32 %0, 21
  br i1 %.not1946, label %.thread1858, 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 %.thread1858.sink.split, label %.thread1858

340:                                              ; preds = %194
  tail call void @print_help()
  br label %1804

.thread1858.sink.split:                           ; preds = %335, %189
  %.sink = phi i64 [ 216, %189 ], [ 176, %335 ]
  %.21738.ph = phi float [ %.01736, %189 ], [ %.11737, %335 ]
  %.11731.ph = phi i32 [ %.01730, %189 ], [ 0, %335 ]
  %.21726.ph = phi i32 [ %192, %189 ], [ %338, %335 ]
  %.01719.ph = phi i32 [ %183, %189 ], [ %326, %335 ]
  %.21717.ph = phi i32 [ %188, %189 ], [ %334, %335 ]
  %.01704.ph = phi i32 [ 1, %189 ], [ %329, %335 ]
  %.01698.ph = phi ptr [ null, %189 ], [ %266, %335 ]
  %.01693.ph = phi i32 [ 0, %189 ], [ 1, %335 ]
  %.01682.ph = phi i32 [ %180, %189 ], [ %323, %335 ]
  %.21681.ph = phi i32 [ %.016791852, %189 ], [ %.116801865, %335 ]
  %.21678.ph = phi i32 [ %.01676, %189 ], [ %.11677, %335 ]
  %.01670.ph = phi double [ %120, %189 ], [ %272, %335 ]
  %.01669.ph = phi double [ %117, %189 ], [ %269, %335 ]
  %.01668.ph = phi i32 [ %141, %189 ], [ %293, %335 ]
  %.01667.ph = phi i32 [ %138, %189 ], [ %290, %335 ]
  %.01666.ph = phi i32 [ %135, %189 ], [ %287, %335 ]
  %.01665.ph = phi i32 [ %132, %189 ], [ %284, %335 ]
  %.01664.ph = phi i32 [ %129, %189 ], [ %281, %335 ]
  %.01663.ph = phi i32 [ %126, %189 ], [ %278, %335 ]
  %.01660.ph = phi i32 [ %123, %189 ], [ %275, %335 ]
  %.01659.ph = phi i32 [ %96, %189 ], [ %264, %335 ]
  %.01658.ph = phi i32 [ %95, %189 ], [ %263, %335 ]
  %.01656.ph = phi i32 [ %94, %189 ], [ %262, %335 ]
  %.10.ph = phi i32 [ %.4, %189 ], [ %.9, %335 ]
  %.01651.ph = phi ptr [ %36, %189 ], [ %204, %335 ]
  %.01650.ph = phi ptr [ %34, %189 ], [ %202, %335 ]
  %.01649.ph = phi ptr [ %32, %189 ], [ %200, %335 ]
  %.01648.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 %.thread1858

.thread1858:                                      ; preds = %.thread1858.sink.split, %320, %331, %177, %185, %335, %189
  %.21738 = phi float [ %.01736, %189 ], [ %.11737, %335 ], [ %.01736, %185 ], [ %.01736, %177 ], [ %.11737, %331 ], [ %.11737, %320 ], [ %.21738.ph, %.thread1858.sink.split ]
  %.11731 = phi i32 [ %.01730, %189 ], [ 0, %335 ], [ %.01730, %185 ], [ %.01730, %177 ], [ 0, %331 ], [ 0, %320 ], [ %.11731.ph, %.thread1858.sink.split ]
  %.21729 = phi i32 [ 0, %189 ], [ 0, %335 ], [ 0, %185 ], [ 0, %177 ], [ 0, %331 ], [ 0, %320 ], [ %343, %.thread1858.sink.split ]
  %.21726 = phi i32 [ %192, %189 ], [ %338, %335 ], [ 0, %185 ], [ 0, %177 ], [ 0, %331 ], [ 0, %320 ], [ %.21726.ph, %.thread1858.sink.split ]
  %.01719 = phi i32 [ %183, %189 ], [ %326, %335 ], [ %183, %185 ], [ %183, %177 ], [ %326, %331 ], [ %326, %320 ], [ %.01719.ph, %.thread1858.sink.split ]
  %.21717 = phi i32 [ %188, %189 ], [ %334, %335 ], [ %188, %185 ], [ 0, %177 ], [ %334, %331 ], [ 0, %320 ], [ %.21717.ph, %.thread1858.sink.split ]
  %.01704 = phi i32 [ 1, %189 ], [ %329, %335 ], [ 1, %185 ], [ 1, %177 ], [ %329, %331 ], [ %329, %320 ], [ %.01704.ph, %.thread1858.sink.split ]
  %.01698 = phi ptr [ null, %189 ], [ %266, %335 ], [ null, %185 ], [ null, %177 ], [ %266, %331 ], [ %266, %320 ], [ %.01698.ph, %.thread1858.sink.split ]
  %.01693 = phi i32 [ 0, %189 ], [ 1, %335 ], [ 0, %185 ], [ 0, %177 ], [ 1, %331 ], [ 1, %320 ], [ %.01693.ph, %.thread1858.sink.split ]
  %.01682 = phi i32 [ %180, %189 ], [ %323, %335 ], [ %180, %185 ], [ %180, %177 ], [ %323, %331 ], [ %323, %320 ], [ %.01682.ph, %.thread1858.sink.split ]
  %.21681 = phi i32 [ %.016791852, %189 ], [ %.116801865, %335 ], [ %.016791852, %185 ], [ %.016791852, %177 ], [ %.116801865, %331 ], [ %.116801865, %320 ], [ %.21681.ph, %.thread1858.sink.split ]
  %.21678 = phi i32 [ %.01676, %189 ], [ %.11677, %335 ], [ %.01676, %185 ], [ %.01676, %177 ], [ %.11677, %331 ], [ %.11677, %320 ], [ %.21678.ph, %.thread1858.sink.split ]
  %.01670 = phi double [ %120, %189 ], [ %272, %335 ], [ %120, %185 ], [ %120, %177 ], [ %272, %331 ], [ %272, %320 ], [ %.01670.ph, %.thread1858.sink.split ]
  %.01669 = phi double [ %117, %189 ], [ %269, %335 ], [ %117, %185 ], [ %117, %177 ], [ %269, %331 ], [ %269, %320 ], [ %.01669.ph, %.thread1858.sink.split ]
  %.01668 = phi i32 [ %141, %189 ], [ %293, %335 ], [ %141, %185 ], [ %141, %177 ], [ %293, %331 ], [ %293, %320 ], [ %.01668.ph, %.thread1858.sink.split ]
  %.01667 = phi i32 [ %138, %189 ], [ %290, %335 ], [ %138, %185 ], [ %138, %177 ], [ %290, %331 ], [ %290, %320 ], [ %.01667.ph, %.thread1858.sink.split ]
  %.01666 = phi i32 [ %135, %189 ], [ %287, %335 ], [ %135, %185 ], [ %135, %177 ], [ %287, %331 ], [ %287, %320 ], [ %.01666.ph, %.thread1858.sink.split ]
  %.01665 = phi i32 [ %132, %189 ], [ %284, %335 ], [ %132, %185 ], [ %132, %177 ], [ %284, %331 ], [ %284, %320 ], [ %.01665.ph, %.thread1858.sink.split ]
  %.01664 = phi i32 [ %129, %189 ], [ %281, %335 ], [ %129, %185 ], [ %129, %177 ], [ %281, %331 ], [ %281, %320 ], [ %.01664.ph, %.thread1858.sink.split ]
  %.01663 = phi i32 [ %126, %189 ], [ %278, %335 ], [ %126, %185 ], [ %126, %177 ], [ %278, %331 ], [ %278, %320 ], [ %.01663.ph, %.thread1858.sink.split ]
  %.01660 = phi i32 [ %123, %189 ], [ %275, %335 ], [ %123, %185 ], [ %123, %177 ], [ %275, %331 ], [ %275, %320 ], [ %.01660.ph, %.thread1858.sink.split ]
  %.01659 = phi i32 [ %96, %189 ], [ %264, %335 ], [ %96, %185 ], [ %96, %177 ], [ %264, %331 ], [ %264, %320 ], [ %.01659.ph, %.thread1858.sink.split ]
  %.01658 = phi i32 [ %95, %189 ], [ %263, %335 ], [ %95, %185 ], [ %95, %177 ], [ %263, %331 ], [ %263, %320 ], [ %.01658.ph, %.thread1858.sink.split ]
  %.01656 = phi i32 [ %94, %189 ], [ %262, %335 ], [ %94, %185 ], [ %94, %177 ], [ %262, %331 ], [ %262, %320 ], [ %.01656.ph, %.thread1858.sink.split ]
  %.10 = phi i32 [ %.4, %189 ], [ %.9, %335 ], [ %.4, %185 ], [ %.4, %177 ], [ %.9, %331 ], [ %.9, %320 ], [ %.10.ph, %.thread1858.sink.split ]
  %.01651 = phi ptr [ %36, %189 ], [ %204, %335 ], [ %36, %185 ], [ %36, %177 ], [ %204, %331 ], [ %204, %320 ], [ %.01651.ph, %.thread1858.sink.split ]
  %.01650 = phi ptr [ %34, %189 ], [ %202, %335 ], [ %34, %185 ], [ %34, %177 ], [ %202, %331 ], [ %202, %320 ], [ %.01650.ph, %.thread1858.sink.split ]
  %.01649 = phi ptr [ %32, %189 ], [ %200, %335 ], [ %32, %185 ], [ %32, %177 ], [ %200, %331 ], [ %200, %320 ], [ %.01649.ph, %.thread1858.sink.split ]
  %.01648 = phi ptr [ %30, %189 ], [ %198, %335 ], [ %30, %185 ], [ %30, %177 ], [ %198, %331 ], [ %198, %320 ], [ %.01648.ph, %.thread1858.sink.split ]
  %344 = icmp ne i32 %.21726, 0
  %345 = icmp ne i32 %.21729, 0
  %or.cond13 = select i1 %344, i1 true, i1 %345
  br i1 %or.cond13, label %346, label %348

346:                                              ; preds = %.thread1858
  %347 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %1804

348:                                              ; preds = %.thread1858
  %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 %.21717, 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
  %.31718 = phi i32 [ 0, %361 ], [ %.21717, %355 ]
  %364 = tail call i32 @llvm.smax.i32(i32 %.21678, i32 1)
  %365 = icmp eq i32 %.21681, 0
  %366 = icmp eq i32 %.21681, 4
  %or.cond19 = or i1 %365, %366
  %367 = select i1 %or.cond19, i32 1, i32 %364
  %368 = select i1 %or.cond19, i32 0, i32 %.01682
  %369 = fcmp une double %.01669, 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 %.01670, 0.000000e+00
  %375 = fcmp une double %.01670, 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 %.01668, 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
  %.11671 = phi double [ 0.000000e+00, %381 ], [ %.01670, %379 ]
  %385 = icmp eq i32 %.10, 0
  %386 = icmp eq i32 %.01656, 0
  %or.cond27 = select i1 %385, i1 %386, i1 false
  %387 = icmp eq i32 %.01658, 0
  %or.cond29 = select i1 %or.cond27, i1 %387, i1 false
  %388 = icmp eq i32 %.01659, 0
  %or.cond31 = select i1 %or.cond29, i1 %388, i1 false
  br i1 %or.cond31, label %.thread1878, label %389

389:                                              ; preds = %384
  %390 = icmp eq i32 %.10, 1
  %391 = icmp eq i32 %.01656, 1
  %or.cond33 = select i1 %390, i1 %391, i1 false
  %392 = icmp eq i32 %.01658, 1
  %or.cond35 = select i1 %or.cond33, i1 %392, i1 false
  %393 = icmp eq i32 %.01659, 1
  %or.cond37 = select i1 %or.cond35, i1 %393, i1 false
  br i1 %or.cond37, label %.thread1878, label %394

394:                                              ; preds = %389
  %395 = icmp eq i32 %.10, 10
  %396 = icmp eq i32 %.01656, 10
  %or.cond39 = select i1 %395, i1 %396, i1 false
  %397 = icmp eq i32 %.01658, 8
  %or.cond41 = select i1 %or.cond39, i1 %397, i1 false
  %398 = icmp eq i32 %.01659, 8
  %or.cond43 = select i1 %or.cond41, i1 %398, i1 false
  br i1 %or.cond43, label %.thread1878, label %399

399:                                              ; preds = %394
  %400 = icmp eq i32 %.10, 13
  %401 = icmp eq i32 %.01656, 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 %.thread1877, label %402

402:                                              ; preds = %399
  %403 = icmp eq i32 %.10, 12
  %404 = icmp eq i32 %.01656, 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 %.thread1878, 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 %.thread1877, 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.cond1809 = select i1 %or.cond, i1 true, i1 %or.cond79
  br i1 %or.cond1809, label %457, label %407

407:                                              ; preds = %406
  %408 = icmp eq i32 %.01659, 2
  %or.cond85 = select i1 %or.cond53, i1 %408, i1 false
  %or.cond91 = select i1 %or.cond59, i1 %393, i1 false
  %or.cond1810 = select i1 %or.cond85, i1 true, i1 %or.cond91
  %or.cond97 = select i1 %or.cond65, i1 %393, i1 false
  %or.cond1811 = select i1 %or.cond1810, i1 true, i1 %or.cond97
  br i1 %or.cond1811, label %457, label %409

409:                                              ; preds = %407
  %410 = icmp eq i32 %.01656, 2
  %or.cond99 = select i1 %403, i1 %410, i1 false
  %or.cond101 = select i1 %or.cond99, i1 %392, i1 false
  %411 = add i32 %.01659, -1
  %412 = icmp ult i32 %411, 2
  %or.cond1812 = select i1 %or.cond101, i1 %412, i1 false
  br i1 %or.cond1812, label %.thread1878, 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 %.thread1878, 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.cond1813 = select i1 %or.cond119, i1 %412, i1 false
  br i1 %or.cond1813, label %.thread1878, 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.cond1814 = select i1 %or.cond131, i1 %412, i1 false
  br i1 %or.cond1814, label %.thread1878, 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.cond1815 = select i1 %or.cond143, i1 %412, i1 false
  br i1 %or.cond1815, label %.thread1877, label %419

419:                                              ; preds = %418
  %420 = icmp eq i32 %.01656, 3
  %or.cond153 = select i1 %415, i1 %420, i1 false
  %421 = icmp eq i32 %.01658, 3
  %or.cond155 = select i1 %or.cond153, i1 %421, i1 false
  %422 = icmp eq i32 %.01659, 3
  %or.cond157 = select i1 %or.cond155, i1 %422, i1 false
  br i1 %or.cond157, label %.thread1878, 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 %.thread1878, label %424

424:                                              ; preds = %423
  %425 = icmp eq i32 %.01658, 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.cond1816 = select i1 %or.cond169, i1 true, i1 %or.cond175
  %or.cond181 = select i1 %or.cond161, i1 %393, i1 false
  %or.cond1817 = select i1 %or.cond1816, i1 true, i1 %or.cond181
  %or.cond187 = select i1 %or.cond167, i1 %393, i1 false
  %or.cond1818 = select i1 %or.cond1817, i1 true, i1 %or.cond187
  br i1 %or.cond1818, 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 %.thread1878, 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 %.thread1878, 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.cond1819 = select i1 %or.cond205, i1 true, i1 %or.cond211
  %or.cond217 = select i1 %or.cond197, i1 %393, i1 false
  %or.cond1820 = select i1 %or.cond1819, i1 true, i1 %or.cond217
  %or.cond223 = select i1 %or.cond203, i1 %393, i1 false
  %or.cond1821 = select i1 %or.cond1820, i1 true, i1 %or.cond223
  br i1 %or.cond1821, 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 %.thread1877, 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 %.thread1877, 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.cond1822 = select i1 %or.cond241, i1 true, i1 %or.cond247
  %or.cond253 = select i1 %or.cond233, i1 %393, i1 false
  %or.cond1823 = select i1 %or.cond1822, i1 true, i1 %or.cond253
  %or.cond259 = select i1 %or.cond239, i1 %393, i1 false
  %or.cond1824 = select i1 %or.cond1823, i1 true, i1 %or.cond259
  br i1 %or.cond1824, 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 %.thread1878, 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 %.thread1878, 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.cond1825 = select i1 %or.cond277, i1 true, i1 %or.cond283
  %or.cond295 = select i1 %or.cond269, i1 %393, i1 false
  %or.cond1826 = select i1 %or.cond1825, i1 true, i1 %or.cond295
  %or.cond301 = select i1 %or.cond275, i1 %393, i1 false
  %or.cond1827 = select i1 %or.cond1826, i1 true, i1 %or.cond301
  br i1 %or.cond1827, 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.cond1828 = select i1 %or.cond305, i1 %412, i1 false
  br i1 %or.cond1828, label %.thread1878, label %438

438:                                              ; preds = %436
  %439 = icmp eq i32 %.01656, 4
  %or.cond315 = select i1 %415, i1 %439, i1 false
  %or.cond317 = select i1 %or.cond315, i1 %392, i1 false
  %440 = icmp eq i32 %.01659, 4
  %441 = or i1 %393, %440
  %or.cond1829 = select i1 %or.cond317, i1 %441, i1 false
  br i1 %or.cond1829, label %.thread1878, label %442

442:                                              ; preds = %438
  %443 = icmp eq i32 %.01656, 5
  %or.cond327 = select i1 %417, i1 %443, i1 false
  %or.cond329 = select i1 %or.cond327, i1 %392, i1 false
  %444 = icmp eq i32 %.01659, 5
  %445 = or i1 %393, %444
  %or.cond1830 = select i1 %or.cond329, i1 %445, i1 false
  br i1 %or.cond1830, label %.thread1878, 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 %.01648, ptr noundef %.01649, ptr noundef %.01650, ptr noundef %.01651) #15
  tail call void @exit(i32 noundef 1) #16
  unreachable

.thread1878:                                      ; 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

.thread1877:                                      ; 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 = %.thread1877, %457
  %463 = phi ptr [ %456, %.thread1877 ], [ %461, %457 ]
  %464 = phi ptr [ %454, %.thread1877 ], [ %459, %457 ]
  %465 = phi ptr [ %453, %.thread1877 ], [ %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 = %.thread1878, %470, %466
  %.111880 = phi i32 [ %.11, %470 ], [ %.11, %466 ], [ %.10, %.thread1878 ]
  %472 = phi ptr [ %469, %470 ], [ %469, %466 ], [ %449, %.thread1878 ]
  %473 = phi ptr [ %468, %470 ], [ %468, %466 ], [ %450, %.thread1878 ]
  %474 = phi ptr [ %467, %470 ], [ %467, %466 ], [ %452, %.thread1878 ]
  %.11657 = phi i32 [ 12, %470 ], [ %.01656, %466 ], [ %.01656, %.thread1878 ]
  %475 = icmp eq i32 %.111880, 12
  %476 = icmp eq i32 %.01659, 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 %.111880, ptr %9, align 8, !tbaa !27
  %479 = getelementptr inbounds i8, ptr %9, i64 4
  store i32 %.11657, ptr %479, align 4, !tbaa !28
  %480 = getelementptr inbounds i8, ptr %9, i64 12
  store i32 %.01658, ptr %480, align 4, !tbaa !29
  %481 = getelementptr inbounds i8, ptr %9, i64 8
  store i32 %.01659, 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 %.11671, ptr %483, align 8, !tbaa !32
  %484 = getelementptr inbounds i8, ptr %9, i64 64
  store i32 %.01664, ptr %484, align 8, !tbaa !33
  %485 = getelementptr inbounds i8, ptr %9, i64 68
  store i32 %.01665, ptr %485, align 4, !tbaa !34
  %486 = getelementptr inbounds i8, ptr %9, i64 72
  store i32 %.01666, ptr %486, align 8, !tbaa !35
  %487 = getelementptr inbounds i8, ptr %9, i64 76
  store i32 %.01667, ptr %487, align 4, !tbaa !36
  %488 = getelementptr inbounds i8, ptr %9, i64 80
  store i32 %.01668, ptr %488, align 8, !tbaa !37
  %489 = getelementptr inbounds i8, ptr %9, i64 96
  store i32 %.01660, ptr %489, align 8, !tbaa !38
  %490 = getelementptr inbounds i8, ptr %9, i64 100
  store i32 %.01663, ptr %490, align 4, !tbaa !39
  %491 = getelementptr inbounds i8, ptr %9, i64 104
  store i32 %.11731, ptr %491, align 8, !tbaa !40
  %492 = getelementptr inbounds i8, ptr %9, i64 108
  store i32 %.21681, 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 %.31718, 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 %.01659, -6
  %or.cond356 = icmp ult i32 %498, -4
  %or.cond458 = select i1 %or.cond356, i1 %380, i1 false
  br i1 %or.cond458, 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 %505, label %503

503:                                              ; preds = %502
  %504 = tail call noalias ptr @fopen(ptr noundef %.01698, ptr noundef nonnull @.str.27)
  br label %517

505:                                              ; preds = %502
  %506 = icmp eq i32 %.01665, 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 %.01648, ptr noundef %.01649, ptr noundef %.01650, ptr noundef %.01651, 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 %.01648, ptr noundef %.01649, ptr noundef %.01650, ptr noundef %.01651, i32 noundef %367)
  %516 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28)
  br label %517

517:                                              ; preds = %511, %514, %503
  %.01699 = 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 %.11657, 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 %.11657, 2
  %or.cond372 = select i1 %475, i1 %533, i1 false
  %534 = add nsw i32 %.01659, -1
  %or.cond374 = icmp ult i32 %534, 2
  %or.cond1837 = 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 %.11671, 0.000000e+00
  %539 = shl nuw nsw i64 %524, 1
  %540 = shl nuw nsw i64 %524, 2
  %541 = icmp ne i32 %.21681, 4
  %542 = icmp eq i32 %.01704, 1
  %543 = sitofp i32 %.01719 to double
  %544 = uitofp nneg i32 %367 to double
  %switch = icmp eq i32 %.11731, 0
  %.str.10..str.11 = select i1 %switch, ptr @.str.10, ptr @.str.11
  %545 = sext i32 %.21681 to i64
  %switch.gep2252 = getelementptr inbounds [5 x ptr], ptr @switch.table.main.6, i64 0, i64 %545
  br label %.critedge

.critedge:                                        ; preds = %.critedge.backedge, %517
  %.01732 = phi i32 [ 0, %517 ], [ 1, %.critedge.backedge ]
  %.01705 = phi double [ 0.000000e+00, %517 ], [ %.11706, %.critedge.backedge ]
  %.01683 = phi double [ 0.000000e+00, %517 ], [ %.71690, %.critedge.backedge ]
  br i1 %or.cond5, label %552, label %546

546:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %10) #13
  %547 = call ptr @fgets(ptr noundef nonnull %10, i32 noundef 512, ptr noundef %.01699)
  %.not1791 = icmp eq ptr %547, null
  br i1 %.not1791, label %.critedge444.thread, label %548

548:                                              ; preds = %546
  %549 = 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 %549, 6
  br i1 %.not, label %551, label %550

550:                                              ; preds = %548
  call void @exit(i32 noundef 1) #16
  unreachable

551:                                              ; preds = %548
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %10) #13
  br label %552

552:                                              ; preds = %551, %.critedge
  %.21734 = phi i32 [ 1, %551 ], [ %.01732, %.critedge ]
  %553 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %553, ptr %518, align 8, !tbaa !47
  %554 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %554, ptr %519, align 4, !tbaa !48
  %555 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %555, ptr %520, align 8, !tbaa !49
  %556 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %556, ptr %521, align 4, !tbaa !50
  %557 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %557, ptr %522, align 8, !tbaa !51
  %558 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %558, 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)
  %559 = load i32, ptr %484, align 8, !tbaa !33
  %560 = icmp eq i32 %559, 0
  %561 = load i32, ptr %3, align 4, !tbaa !5
  %562 = sext i32 %561 to i64
  %563 = load i32, ptr %9, align 8
  br i1 %560, label %564, label %569

564:                                              ; preds = %552
  %565 = load i32, ptr %8, align 4, !tbaa !5
  switch i32 %563, label %566 [
    i32 0, label %574
    i32 1, label %.fold.split
  ]

566:                                              ; preds = %564
  %567 = and i32 %563, -2
  switch i32 %567, label %568 [
    i32 2, label %574
    i32 4, label %.fold.split1906
    i32 6, label %.fold.split1907
    i32 8, label %.fold.split1908
    i32 10, label %574
    i32 12, label %.fold.split1909
  ]

568:                                              ; preds = %566
  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 = %564
  br label %574

.fold.split1906:                                  ; preds = %566
  br label %574

.fold.split1907:                                  ; preds = %566
  br label %574

.fold.split1908:                                  ; preds = %566
  br label %574

.fold.split1909:                                  ; preds = %566
  br label %574

569:                                              ; preds = %552
  %570 = load i32, ptr %6, align 4, !tbaa !5
  switch i32 %563, label %571 [
    i32 0, label %574
    i32 1, label %.fold.split1831
  ]

571:                                              ; preds = %569
  %572 = and i32 %563, -2
  switch i32 %572, label %573 [
    i32 2, label %574
    i32 4, label %.fold.split1910
    i32 6, label %.fold.split1911
    i32 8, label %.fold.split1912
    i32 10, label %574
    i32 12, label %.fold.split1913
  ]

573:                                              ; preds = %571
  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.split1831:                                  ; preds = %569
  br label %574

.fold.split1910:                                  ; preds = %571
  br label %574

.fold.split1911:                                  ; preds = %571
  br label %574

.fold.split1912:                                  ; preds = %571
  br label %574

.fold.split1913:                                  ; preds = %571
  br label %574

574:                                              ; preds = %.fold.split1831, %569, %.fold.split1910, %.fold.split1911, %.fold.split1912, %.fold.split1913, %571, %571, %.fold.split, %564, %.fold.split1906, %.fold.split1907, %.fold.split1908, %.fold.split1909, %566, %566
  %.sink2177.in = phi i32 [ %565, %566 ], [ %565, %566 ], [ %565, %.fold.split1909 ], [ %565, %.fold.split1908 ], [ %565, %.fold.split1907 ], [ %565, %.fold.split1906 ], [ %565, %564 ], [ %565, %.fold.split ], [ %570, %571 ], [ %570, %571 ], [ %570, %.fold.split1913 ], [ %570, %.fold.split1912 ], [ %570, %.fold.split1911 ], [ %570, %.fold.split1910 ], [ %570, %569 ], [ %570, %.fold.split1831 ]
  %.sink2175 = phi i64 [ 2, %566 ], [ 2, %566 ], [ 1, %.fold.split1909 ], [ 4, %.fold.split1908 ], [ 8, %.fold.split1907 ], [ 1, %.fold.split1906 ], [ 8, %564 ], [ 4, %.fold.split ], [ 2, %571 ], [ 2, %571 ], [ 1, %.fold.split1913 ], [ 4, %.fold.split1912 ], [ 8, %.fold.split1911 ], [ 1, %.fold.split1910 ], [ 8, %569 ], [ 4, %.fold.split1831 ]
  %.sink2177 = sext i32 %.sink2177.in to i64
  %575 = mul nsw i64 %562, %524
  %576 = mul i64 %575, %.sink2177
  %577 = mul i64 %576, %.sink2175
  %578 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %577, i64 noundef 64) #13
  %579 = load i32, ptr %485, align 4, !tbaa !34
  %580 = icmp eq i32 %579, 0
  %581 = load i32, ptr %4, align 4, !tbaa !5
  %582 = sext i32 %581 to i64
  %583 = load i32, ptr %479, align 4
  br i1 %580, label %584, label %589

584:                                              ; preds = %574
  %585 = load i32, ptr %7, align 4, !tbaa !5
  switch i32 %583, label %586 [
    i32 0, label %594
    i32 1, label %.fold.split1832
  ]

586:                                              ; preds = %584
  %587 = and i32 %583, -2
  switch i32 %587, label %588 [
    i32 2, label %594
    i32 4, label %.fold.split1914
    i32 6, label %.fold.split1915
    i32 8, label %.fold.split1916
    i32 10, label %594
    i32 12, label %.fold.split1917
  ]

588:                                              ; preds = %586
  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.split1832:                                  ; preds = %584
  br label %594

.fold.split1914:                                  ; preds = %586
  br label %594

.fold.split1915:                                  ; preds = %586
  br label %594

.fold.split1916:                                  ; preds = %586
  br label %594

.fold.split1917:                                  ; preds = %586
  br label %594

589:                                              ; preds = %574
  %590 = load i32, ptr %8, align 4, !tbaa !5
  switch i32 %583, label %591 [
    i32 0, label %594
    i32 1, label %.fold.split1833
  ]

591:                                              ; preds = %589
  %592 = and i32 %583, -2
  switch i32 %592, label %593 [
    i32 2, label %594
    i32 4, label %.fold.split1918
    i32 6, label %.fold.split1919
    i32 8, label %.fold.split1920
    i32 10, label %594
    i32 12, label %.fold.split1921
  ]

593:                                              ; preds = %591
  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.split1833:                                  ; preds = %589
  br label %594

.fold.split1918:                                  ; preds = %591
  br label %594

.fold.split1919:                                  ; preds = %591
  br label %594

.fold.split1920:                                  ; preds = %591
  br label %594

.fold.split1921:                                  ; preds = %591
  br label %594

594:                                              ; preds = %.fold.split1833, %589, %.fold.split1918, %.fold.split1919, %.fold.split1920, %.fold.split1921, %591, %591, %.fold.split1832, %584, %.fold.split1914, %.fold.split1915, %.fold.split1916, %.fold.split1917, %586, %586
  %.sink2182.in = phi i32 [ %585, %586 ], [ %585, %586 ], [ %585, %.fold.split1917 ], [ %585, %.fold.split1916 ], [ %585, %.fold.split1915 ], [ %585, %.fold.split1914 ], [ %585, %584 ], [ %585, %.fold.split1832 ], [ %590, %591 ], [ %590, %591 ], [ %590, %.fold.split1921 ], [ %590, %.fold.split1920 ], [ %590, %.fold.split1919 ], [ %590, %.fold.split1918 ], [ %590, %589 ], [ %590, %.fold.split1833 ]
  %.sink2180 = phi i64 [ 2, %586 ], [ 2, %586 ], [ 1, %.fold.split1917 ], [ 4, %.fold.split1916 ], [ 8, %.fold.split1915 ], [ 1, %.fold.split1914 ], [ 8, %584 ], [ 4, %.fold.split1832 ], [ 2, %591 ], [ 2, %591 ], [ 1, %.fold.split1921 ], [ 4, %.fold.split1920 ], [ 8, %.fold.split1919 ], [ 1, %.fold.split1918 ], [ 8, %589 ], [ 4, %.fold.split1833 ]
  %.sink2182 = sext i32 %.sink2182.in to i64
  %595 = mul nsw i64 %582, %524
  %596 = mul i64 %595, %.sink2182
  %597 = mul i64 %596, %.sink2180
  %598 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %597, i64 noundef 64) #13
  %599 = load i32, ptr %5, align 4, !tbaa !5
  %600 = sext i32 %599 to i64
  %601 = load i32, ptr %7, align 4, !tbaa !5
  %602 = sext i32 %601 to i64
  %603 = mul nsw i64 %602, %600
  %604 = load i32, ptr %481, align 8
  switch i32 %604, label %605 [
    i32 0, label %610
    i32 1, label %.fold.split1834
  ]

605:                                              ; preds = %594
  %606 = and i32 %604, -2
  %switch.tableidx = add i32 %606, -2
  %607 = icmp ult i32 %switch.tableidx, 11
  br i1 %607, label %switch.hole_check, label %608

608:                                              ; preds = %switch.hole_check, %605
  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.split1834:                                  ; preds = %594
  br label %610

switch.hole_check:                                ; preds = %605
  %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 %608

switch.lookup:                                    ; preds = %switch.hole_check
  %609 = zext nneg i32 %switch.tableidx to i64
  %switch.gep = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %609
  %switch.load = load i64, ptr %switch.gep, align 8
  br label %610

610:                                              ; preds = %switch.lookup, %594, %.fold.split1834
  %611 = phi i64 [ 8, %594 ], [ 4, %.fold.split1834 ], [ %switch.load, %switch.lookup ]
  %612 = mul i64 %603, %611
  %613 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %612, i64 noundef 64) #13
  %614 = load i32, ptr %5, align 4, !tbaa !5
  %615 = sext i32 %614 to i64
  %616 = load i32, ptr %7, align 4, !tbaa !5
  %617 = sext i32 %616 to i64
  %618 = mul nsw i64 %617, %615
  %619 = load i32, ptr %481, align 8
  switch i32 %619, label %620 [
    i32 0, label %625
    i32 1, label %.fold.split1835
  ]

620:                                              ; preds = %610
  %621 = and i32 %619, -2
  %switch.tableidx2205 = add i32 %621, -2
  %622 = icmp ult i32 %switch.tableidx2205, 11
  br i1 %622, label %switch.hole_check2206, label %623

623:                                              ; preds = %switch.hole_check2206, %620
  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.split1835:                                  ; preds = %610
  br label %625

switch.hole_check2206:                            ; preds = %620
  %switch.maskindex2208 = trunc nuw i32 %switch.tableidx2205 to i16
  %switch.shifted2209 = lshr i16 1365, %switch.maskindex2208
  %switch.lobit2210 = trunc i16 %switch.shifted2209 to i1
  br i1 %switch.lobit2210, label %switch.lookup2207, label %623

switch.lookup2207:                                ; preds = %switch.hole_check2206
  %624 = zext nneg i32 %switch.tableidx2205 to i64
  %switch.gep2211 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %624
  %switch.load2212 = load i64, ptr %switch.gep2211, align 8
  br label %625

625:                                              ; preds = %switch.lookup2207, %610, %.fold.split1835
  %626 = phi i64 [ 8, %610 ], [ 4, %.fold.split1835 ], [ %switch.load2212, %switch.lookup2207 ]
  %627 = mul i64 %618, %626
  %628 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %627, i64 noundef 64) #13
  %629 = load i32, ptr %5, align 4, !tbaa !5
  %630 = sext i32 %629 to i64
  %631 = load i32, ptr %7, align 4, !tbaa !5
  %632 = sext i32 %631 to i64
  %633 = mul nsw i64 %632, %630
  %634 = load i32, ptr %481, align 8
  switch i32 %634, label %635 [
    i32 0, label %640
    i32 1, label %.fold.split1836
  ]

635:                                              ; preds = %625
  %636 = and i32 %634, -2
  %switch.tableidx2214 = add i32 %636, -2
  %637 = icmp ult i32 %switch.tableidx2214, 11
  br i1 %637, label %switch.hole_check2215, label %638

638:                                              ; preds = %switch.hole_check2215, %635
  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.split1836:                                  ; preds = %625
  br label %640

switch.hole_check2215:                            ; preds = %635
  %switch.maskindex2217 = trunc nuw i32 %switch.tableidx2214 to i16
  %switch.shifted2218 = lshr i16 1365, %switch.maskindex2217
  %switch.lobit2219 = trunc i16 %switch.shifted2218 to i1
  br i1 %switch.lobit2219, label %switch.lookup2216, label %638

switch.lookup2216:                                ; preds = %switch.hole_check2215
  %639 = zext nneg i32 %switch.tableidx2214 to i64
  %switch.gep2220 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %639
  %switch.load2221 = load i64, ptr %switch.gep2220, align 8
  br label %640

640:                                              ; preds = %switch.lookup2216, %625, %.fold.split1836
  %641 = phi i64 [ 8, %625 ], [ 4, %.fold.split1836 ], [ %switch.load2221, %switch.lookup2216 ]
  %642 = mul i64 %633, %641
  %643 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %642, i64 noundef 64) #13
  br i1 %or.cond358, label %644, label %688

644:                                              ; preds = %640
  switch i32 %.01658, label %688 [
    i32 14, label %645
    i32 3, label %645
    i32 1, label %645
  ]

645:                                              ; preds = %644, %644, %644
  switch i32 %.01659, label %688 [
    i32 3, label %646
    i32 1, label %646
  ]

646:                                              ; preds = %645, %645
  %647 = load i32, ptr %518, align 8, !tbaa !47
  %648 = sext i32 %647 to i64
  %649 = shl nsw i64 %648, 2
  %650 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %649, i64 noundef 64) #13
  %651 = load i32, ptr %518, align 8, !tbaa !47
  %652 = sext i32 %651 to i64
  %653 = shl nsw i64 %652, 1
  %654 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %653, i64 noundef 64) #13
  %655 = load i32, ptr %518, align 8, !tbaa !47
  %656 = sext i32 %655 to i64
  %657 = shl nsw i64 %656, 2
  %658 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %657, i64 noundef 64) #13
  %659 = load i32, ptr %518, align 8, !tbaa !47
  %660 = sext i32 %659 to i64
  %661 = shl nsw i64 %660, 1
  %662 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %661, i64 noundef 64) #13
  %663 = load i32, ptr %518, align 8, !tbaa !47
  %664 = icmp sgt i32 %663, 0
  br i1 %664, label %.lr.ph, label %.._crit_edge_crit_edge

.._crit_edge_crit_edge:                           ; preds = %646
  %.pre2150 = sext i32 %663 to i64
  br label %._crit_edge

.lr.ph:                                           ; preds = %646, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %646 ]
  %665 = call double @get_random_posneg_p5_num()
  %666 = fptrunc double %665 to float
  %667 = fmul float %666, 0x3FB99999A0000000
  %668 = getelementptr inbounds float, ptr %650, i64 %indvars.iv
  store float %667, ptr %668, align 4, !tbaa !53
  %669 = call double @get_random_posneg_p5_num()
  %670 = fptrunc double %669 to float
  %671 = fmul float %670, 0x3FC99999A0000000
  %672 = getelementptr inbounds float, ptr %658, i64 %indvars.iv
  store float %671, ptr %672, align 4, !tbaa !53
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %673 = load i32, ptr %518, align 8, !tbaa !47
  %674 = sext i32 %673 to i64
  %675 = icmp slt i64 %indvars.iv.next, %674
  br i1 %675, label %.lr.ph, label %._crit_edge, !llvm.loop !54

._crit_edge:                                      ; preds = %.lr.ph, %.._crit_edge_crit_edge
  %.pre-phi = phi i64 [ %.pre2150, %.._crit_edge_crit_edge ], [ %674, %.lr.ph ]
  store ptr %650, ptr %526, align 8, !tbaa !56
  store ptr %654, ptr %527, align 8, !tbaa !57
  store ptr %658, ptr %528, align 8, !tbaa !58
  store ptr %662, ptr %529, align 8, !tbaa !59
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %650, ptr noundef %654, i64 noundef %.pre-phi) #13
  %676 = load ptr, ptr %527, align 8, !tbaa !57
  %677 = load ptr, ptr %526, align 8, !tbaa !56
  %678 = load i32, ptr %518, align 8, !tbaa !47
  %679 = sext i32 %678 to i64
  call void @libxsmm_convert_f16_f32(ptr noundef %676, ptr noundef %677, i64 noundef %679) #13
  %680 = load ptr, ptr %528, align 8, !tbaa !58
  %681 = load ptr, ptr %529, align 8, !tbaa !59
  %682 = load i32, ptr %518, align 8, !tbaa !47
  %683 = sext i32 %682 to i64
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %680, ptr noundef %681, i64 noundef %683) #13
  %684 = load ptr, ptr %529, align 8, !tbaa !59
  %685 = load ptr, ptr %528, align 8, !tbaa !58
  %686 = load i32, ptr %518, align 8, !tbaa !47
  %687 = sext i32 %686 to i64
  call void @libxsmm_convert_f16_f32(ptr noundef %684, ptr noundef %685, i64 noundef %687) #13
  br label %688

688:                                              ; preds = %645, %644, %._crit_edge, %640
  %689 = load i32, ptr %20, align 8, !tbaa !16
  %.not1792 = icmp eq i32 %689, 0
  br i1 %.not1792, label %706, label %690

690:                                              ; preds = %688
  %691 = load i32, ptr %3, align 4, !tbaa !5
  %692 = mul nsw i32 %691, %367
  %693 = sext i32 %692 to i64
  %694 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %693, i64 noundef 64) #13
  %695 = load i32, ptr %3, align 4, !tbaa !5
  %696 = mul nsw i32 %695, %367
  %697 = icmp sgt i32 %696, 0
  br i1 %697, label %.lr.ph1986, label %._crit_edge1987

.lr.ph1986:                                       ; preds = %690, %.lr.ph1986
  %indvars.iv2089 = phi i64 [ %indvars.iv.next2090, %.lr.ph1986 ], [ 0, %690 ]
  %698 = call double @get_random_pos_p5_num()
  %699 = fmul double %698, 2.000000e+01
  %700 = fptoui double %699 to i8
  %701 = getelementptr inbounds i8, ptr %694, i64 %indvars.iv2089
  store i8 %700, ptr %701, align 1, !tbaa !60
  %indvars.iv.next2090 = add nuw nsw i64 %indvars.iv2089, 1
  %702 = load i32, ptr %3, align 4, !tbaa !5
  %703 = mul nsw i32 %702, %367
  %704 = sext i32 %703 to i64
  %705 = icmp slt i64 %indvars.iv.next2090, %704
  br i1 %705, label %.lr.ph1986, label %._crit_edge1987, !llvm.loop !61

._crit_edge1987:                                  ; preds = %.lr.ph1986, %690
  store ptr %694, ptr %530, align 8, !tbaa !62
  br label %706

706:                                              ; preds = %._crit_edge1987, %688
  %707 = load i32, ptr %21, align 4, !tbaa !17
  %708 = icmp ne i32 %707, 0
  %709 = load i32, ptr %22, align 8
  %710 = icmp ne i32 %709, 0
  %or.cond367 = select i1 %708, i1 true, i1 %710
  %711 = load i32, ptr %23, align 4
  %712 = icmp ne i32 %711, 0
  %or.cond370 = select i1 %or.cond367, i1 true, i1 %712
  br i1 %or.cond370, label %713, label %739

713:                                              ; preds = %706
  %714 = load i32, ptr %3, align 4, !tbaa !5
  %715 = load i32, ptr %520, align 8, !tbaa !49
  %716 = sdiv i32 %715, 32
  %717 = mul i32 %714, %367
  %718 = mul i32 %717, %716
  %719 = zext i32 %718 to i64
  %720 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %719, i64 noundef 64) #13
  %.not2069 = icmp eq i32 %718, 0
  br i1 %.not2069, label %._crit_edge1991, label %.lr.ph1990

.lr.ph1990:                                       ; preds = %713, %.lr.ph1990
  %indvars.iv2092 = phi i64 [ %indvars.iv.next2093, %.lr.ph1990 ], [ 0, %713 ]
  %721 = call i32 @rand() #13
  %722 = srem i32 %721, 10
  %723 = trunc nsw i32 %722 to i8
  %724 = add i8 %723, 126
  %725 = getelementptr inbounds i8, ptr %720, i64 %indvars.iv2092
  store i8 %724, ptr %725, align 1, !tbaa !60
  %indvars.iv.next2093 = add nuw nsw i64 %indvars.iv2092, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next2093, %719
  br i1 %exitcond.not, label %._crit_edge1991, label %.lr.ph1990, !llvm.loop !63

._crit_edge1991:                                  ; preds = %.lr.ph1990, %713
  store ptr %720, ptr %531, align 8, !tbaa !64
  %726 = load i32, ptr %23, align 4, !tbaa !19
  %.not1793 = icmp eq i32 %726, 0
  br i1 %.not1793, label %739, label %727

727:                                              ; preds = %._crit_edge1991
  %728 = load i32, ptr %7, align 4, !tbaa !5
  %729 = load i32, ptr %4, align 4, !tbaa !5
  %730 = sdiv i32 %729, 32
  %731 = mul i32 %728, %367
  %732 = mul i32 %731, %730
  %733 = zext i32 %732 to i64
  %734 = shl nuw nsw i64 %733, 2
  %735 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %734, i64 noundef 64) #13
  %.not2070 = icmp eq i32 %732, 0
  br i1 %.not2070, label %._crit_edge1995, label %.lr.ph1994

.lr.ph1994:                                       ; preds = %727, %.lr.ph1994
  %indvars.iv2095 = phi i64 [ %indvars.iv.next2096, %.lr.ph1994 ], [ 0, %727 ]
  %736 = call double @get_random_posneg_p5_num()
  %737 = fptrunc double %736 to float
  %738 = getelementptr inbounds float, ptr %735, i64 %indvars.iv2095
  store float %737, ptr %738, align 4, !tbaa !53
  %indvars.iv.next2096 = add nuw nsw i64 %indvars.iv2095, 1
  %exitcond2099.not = icmp eq i64 %indvars.iv.next2096, %733
  br i1 %exitcond2099.not, label %._crit_edge1995, label %.lr.ph1994, !llvm.loop !65

._crit_edge1995:                                  ; preds = %.lr.ph1994, %727
  store ptr %735, ptr %532, align 8, !tbaa !66
  br label %739

739:                                              ; preds = %._crit_edge1991, %._crit_edge1995, %706
  br i1 %or.cond1837, label %740, label %754

740:                                              ; preds = %739
  %741 = load i32, ptr %518, align 8, !tbaa !47
  %742 = sext i32 %741 to i64
  %743 = shl nsw i64 %742, 2
  %744 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %743, i64 noundef 64) #13
  %745 = load i32, ptr %518, align 8, !tbaa !47
  %746 = icmp sgt i32 %745, 0
  br i1 %746, label %.lr.ph1998, label %._crit_edge1999

.lr.ph1998:                                       ; preds = %740, %.lr.ph1998
  %indvars.iv2100 = phi i64 [ %indvars.iv.next2101, %.lr.ph1998 ], [ 0, %740 ]
  %747 = call double @get_random_posneg_p5_num()
  %748 = fptrunc double %747 to float
  %749 = fmul float %748, 0x3FB99999A0000000
  %750 = getelementptr inbounds float, ptr %744, i64 %indvars.iv2100
  store float %749, ptr %750, align 4, !tbaa !53
  %indvars.iv.next2101 = add nuw nsw i64 %indvars.iv2100, 1
  %751 = load i32, ptr %518, align 8, !tbaa !47
  %752 = sext i32 %751 to i64
  %753 = icmp slt i64 %indvars.iv.next2101, %752
  br i1 %753, label %.lr.ph1998, label %._crit_edge1999, !llvm.loop !67

._crit_edge1999:                                  ; preds = %.lr.ph1998, %740
  store ptr %744, ptr %526, align 8, !tbaa !56
  br label %754

754:                                              ; preds = %._crit_edge1999, %739
  %755 = load i32, ptr %496, align 8, !tbaa !45
  %756 = icmp eq i32 %755, 1
  br i1 %756, label %757, label %772

757:                                              ; preds = %754
  %758 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %758, ptr %535, align 4, !tbaa !68
  %759 = sext i32 %758 to i64
  %760 = load i32, ptr %481, align 8
  switch i32 %760, label %761 [
    i32 0, label %766
    i32 1, label %.fold.split1838
  ]

761:                                              ; preds = %757
  %762 = and i32 %760, -2
  %switch.tableidx2223 = add i32 %762, -2
  %763 = icmp ult i32 %switch.tableidx2223, 11
  br i1 %763, label %switch.hole_check2224, label %764

764:                                              ; preds = %switch.hole_check2224, %761
  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.split1838:                                  ; preds = %757
  br label %766

switch.hole_check2224:                            ; preds = %761
  %switch.maskindex2226 = trunc nuw i32 %switch.tableidx2223 to i16
  %switch.shifted2227 = lshr i16 1365, %switch.maskindex2226
  %switch.lobit2228 = trunc i16 %switch.shifted2227 to i1
  br i1 %switch.lobit2228, label %switch.lookup2225, label %764

switch.lookup2225:                                ; preds = %switch.hole_check2224
  %765 = zext nneg i32 %switch.tableidx2223 to i64
  %switch.gep2229 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %765
  %switch.load2230 = load i64, ptr %switch.gep2229, align 8
  br label %766

766:                                              ; preds = %switch.lookup2225, %757, %.fold.split1838
  %767 = phi i64 [ 8, %757 ], [ 4, %.fold.split1838 ], [ %switch.load2230, %switch.lookup2225 ]
  %768 = mul nsw i64 %767, %759
  %769 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %768, i64 noundef 64) #13
  %770 = load i32, ptr %481, align 8, !tbaa !30
  %771 = load i32, ptr %535, align 4, !tbaa !68
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %770, ptr noundef %769, i32 noundef 1, i32 noundef %771, i32 noundef 1, i32 noundef 0)
  store ptr %769, ptr %11, align 8, !tbaa !69
  br label %772

772:                                              ; preds = %766, %754
  %.01759 = phi ptr [ %769, %766 ], [ null, %754 ]
  %773 = load i32, ptr %497, align 4, !tbaa !46
  %774 = icmp eq i32 %773, 2
  br i1 %774, label %775, label %793

775:                                              ; preds = %772
  %776 = load i32, ptr %5, align 4, !tbaa !5
  %777 = add nsw i32 %776, 15
  %778 = sdiv i32 %777, 16
  %779 = shl nsw i32 %778, 1
  store i32 %779, ptr %536, align 8, !tbaa !71
  %780 = sext i32 %779 to i64
  %781 = load i32, ptr %7, align 4, !tbaa !5
  %782 = sext i32 %781 to i64
  %783 = mul nsw i64 %780, %782
  %784 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %783, i64 noundef 64) #13
  %785 = load i32, ptr %7, align 4, !tbaa !5
  %786 = sext i32 %785 to i64
  %787 = mul nsw i64 %786, %780
  %788 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %787, i64 noundef 64) #13
  %789 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef 12, ptr noundef %784, i32 noundef 1, i32 noundef %779, i32 noundef %789)
  %790 = load i32, ptr %7, align 4, !tbaa !5
  %791 = sext i32 %790 to i64
  %792 = mul nsw i64 %791, %780
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %788, ptr align 1 %784, i64 %792, i1 false)
  store ptr %784, ptr %537, align 8, !tbaa !72
  br label %793

793:                                              ; preds = %775, %772
  %.01762 = phi ptr [ %788, %775 ], [ null, %772 ]
  %.01760 = phi ptr [ %784, %775 ], [ null, %772 ]
  %794 = load i32, ptr %484, align 8, !tbaa !33
  %795 = icmp eq i32 %794, 0
  br i1 %795, label %796, label %893

796:                                              ; preds = %793
  %797 = load i32, ptr %24, align 4, !tbaa !20
  %.not1795 = icmp eq i32 %797, 0
  br i1 %.not1795, label %825, label %798

798:                                              ; preds = %796
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #13
  %799 = load i32, ptr %3, align 4, !tbaa !5
  %800 = sext i32 %799 to i64
  %801 = load i32, ptr %8, align 4, !tbaa !5
  %802 = sext i32 %801 to i64
  %803 = mul nsw i64 %800, %524
  %804 = mul i64 %803, %802
  %805 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %804, i64 noundef 64) #13
  %806 = load i32, ptr %3, align 4, !tbaa !5
  %807 = load i32, ptr %8, align 4, !tbaa !5
  %808 = load i32, ptr %497, align 4, !tbaa !46
  %809 = icmp eq i32 %808, 2
  %810 = load i32, ptr %472, align 4
  %811 = select i1 %809, i32 1, i32 %810
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef 4, ptr noundef %805, i32 noundef %367, i32 noundef %806, i32 noundef %807, i32 noundef %811)
  %812 = load i32, ptr %3, align 4, !tbaa !5
  %813 = load i32, ptr %8, align 4, !tbaa !5
  %814 = mul i32 %812, %367
  %815 = mul i32 %814, %813
  %816 = icmp sgt i32 %815, 0
  br i1 %816, label %.lr.ph2002, label %._crit_edge2003

.lr.ph2002:                                       ; preds = %798, %.lr.ph2002
  %indvars.iv2103 = phi i64 [ %indvars.iv.next2104, %.lr.ph2002 ], [ 0, %798 ]
  %817 = getelementptr inbounds i8, ptr %805, i64 %indvars.iv2103
  call void @libxsmm_convert_bf8_f32(ptr noundef %817, ptr noundef nonnull %12, i64 noundef 1) #13
  %818 = getelementptr inbounds i16, ptr %578, i64 %indvars.iv2103
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %12, ptr noundef %818, i64 noundef 1) #13
  %indvars.iv.next2104 = add nuw nsw i64 %indvars.iv2103, 1
  %819 = load i32, ptr %3, align 4, !tbaa !5
  %820 = load i32, ptr %8, align 4, !tbaa !5
  %821 = mul i32 %819, %367
  %822 = mul i32 %821, %820
  %823 = sext i32 %822 to i64
  %824 = icmp slt i64 %indvars.iv.next2104, %823
  br i1 %824, label %.lr.ph2002, label %._crit_edge2003, !llvm.loop !73

._crit_edge2003:                                  ; preds = %.lr.ph2002, %798
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #13
  br label %903

825:                                              ; preds = %796
  %826 = load i32, ptr %25, align 8, !tbaa !21
  %.not1796 = icmp eq i32 %826, 0
  br i1 %.not1796, label %854, label %827

827:                                              ; preds = %825
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #13
  %828 = load i32, ptr %3, align 4, !tbaa !5
  %829 = sext i32 %828 to i64
  %830 = load i32, ptr %8, align 4, !tbaa !5
  %831 = sext i32 %830 to i64
  %832 = mul nsw i64 %829, %524
  %833 = mul i64 %832, %831
  %834 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %833, i64 noundef 64) #13
  %835 = load i32, ptr %3, align 4, !tbaa !5
  %836 = load i32, ptr %8, align 4, !tbaa !5
  %837 = load i32, ptr %497, align 4, !tbaa !46
  %838 = icmp eq i32 %837, 2
  %839 = load i32, ptr %472, align 4
  %840 = select i1 %838, i32 1, i32 %839
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef 4, ptr noundef %834, i32 noundef %367, i32 noundef %835, i32 noundef %836, i32 noundef %840)
  %841 = load i32, ptr %3, align 4, !tbaa !5
  %842 = load i32, ptr %8, align 4, !tbaa !5
  %843 = mul i32 %841, %367
  %844 = mul i32 %843, %842
  %845 = icmp sgt i32 %844, 0
  br i1 %845, label %.lr.ph2006, label %._crit_edge2007

.lr.ph2006:                                       ; preds = %827, %.lr.ph2006
  %indvars.iv2106 = phi i64 [ %indvars.iv.next2107, %.lr.ph2006 ], [ 0, %827 ]
  %846 = getelementptr inbounds i8, ptr %834, i64 %indvars.iv2106
  call void @libxsmm_convert_bf8_f32(ptr noundef %846, ptr noundef nonnull %13, i64 noundef 1) #13
  %847 = getelementptr inbounds i16, ptr %578, i64 %indvars.iv2106
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef nonnull %13, ptr noundef %847, i64 noundef 1) #13
  %indvars.iv.next2107 = add nuw nsw i64 %indvars.iv2106, 1
  %848 = load i32, ptr %3, align 4, !tbaa !5
  %849 = load i32, ptr %8, align 4, !tbaa !5
  %850 = mul i32 %848, %367
  %851 = mul i32 %850, %849
  %852 = sext i32 %851 to i64
  %853 = icmp slt i64 %indvars.iv.next2107, %852
  br i1 %853, label %.lr.ph2006, label %._crit_edge2007, !llvm.loop !74

._crit_edge2007:                                  ; preds = %.lr.ph2006, %827
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #13
  br label %903

854:                                              ; preds = %825
  %855 = load i32, ptr %26, align 4, !tbaa !22
  %.not1797 = icmp eq i32 %855, 0
  br i1 %.not1797, label %883, label %856

856:                                              ; preds = %854
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #13
  %857 = load i32, ptr %3, align 4, !tbaa !5
  %858 = sext i32 %857 to i64
  %859 = load i32, ptr %8, align 4, !tbaa !5
  %860 = sext i32 %859 to i64
  %861 = mul nsw i64 %858, %524
  %862 = mul i64 %861, %860
  %863 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %862, i64 noundef 64) #13
  %864 = load i32, ptr %3, align 4, !tbaa !5
  %865 = load i32, ptr %8, align 4, !tbaa !5
  %866 = load i32, ptr %497, align 4, !tbaa !46
  %867 = icmp eq i32 %866, 2
  %868 = load i32, ptr %472, align 4
  %869 = select i1 %867, i32 1, i32 %868
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef 5, ptr noundef %863, i32 noundef %367, i32 noundef %864, i32 noundef %865, i32 noundef %869)
  %870 = load i32, ptr %3, align 4, !tbaa !5
  %871 = load i32, ptr %8, align 4, !tbaa !5
  %872 = mul i32 %870, %367
  %873 = mul i32 %872, %871
  %874 = icmp sgt i32 %873, 0
  br i1 %874, label %.lr.ph2010, label %._crit_edge2011

.lr.ph2010:                                       ; preds = %856, %.lr.ph2010
  %indvars.iv2109 = phi i64 [ %indvars.iv.next2110, %.lr.ph2010 ], [ 0, %856 ]
  %875 = getelementptr inbounds i8, ptr %863, i64 %indvars.iv2109
  call void @libxsmm_convert_hf8_f32(ptr noundef %875, ptr noundef nonnull %14, i64 noundef 1) #13
  %876 = getelementptr inbounds i16, ptr %578, i64 %indvars.iv2109
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %14, ptr noundef %876, i64 noundef 1) #13
  %indvars.iv.next2110 = add nuw nsw i64 %indvars.iv2109, 1
  %877 = load i32, ptr %3, align 4, !tbaa !5
  %878 = load i32, ptr %8, align 4, !tbaa !5
  %879 = mul i32 %877, %367
  %880 = mul i32 %879, %878
  %881 = sext i32 %880 to i64
  %882 = icmp slt i64 %indvars.iv.next2110, %881
  br i1 %882, label %.lr.ph2010, label %._crit_edge2011, !llvm.loop !75

._crit_edge2011:                                  ; preds = %.lr.ph2010, %856
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #13
  br label %903

883:                                              ; preds = %854
  %884 = load i32, ptr %9, align 8, !tbaa !27
  %885 = load i32, ptr %3, align 4, !tbaa !5
  %886 = load i32, ptr %8, align 4, !tbaa !5
  %887 = load i32, ptr %497, align 4, !tbaa !46
  %888 = icmp eq i32 %887, 2
  %889 = load i32, ptr %20, align 8
  %.not1798 = icmp eq i32 %889, 0
  %890 = load i32, ptr %472, align 4
  %891 = select i1 %.not1798, i32 %890, i32 1
  %892 = select i1 %888, i32 1, i32 %891
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %884, ptr noundef %578, i32 noundef %367, i32 noundef %885, i32 noundef %886, i32 noundef %892)
  br label %903

893:                                              ; preds = %793
  %894 = load i32, ptr %9, align 8, !tbaa !27
  %895 = load i32, ptr %3, align 4, !tbaa !5
  %896 = load i32, ptr %6, align 4, !tbaa !5
  %897 = load i32, ptr %497, align 4, !tbaa !46
  %898 = icmp eq i32 %897, 2
  %899 = load i32, ptr %20, align 8
  %.not1794 = icmp eq i32 %899, 0
  %900 = load i32, ptr %472, align 4
  %901 = select i1 %.not1794, i32 %900, i32 1
  %902 = select i1 %898, i32 1, i32 %901
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %894, ptr noundef %578, i32 noundef %367, i32 noundef %895, i32 noundef %896, i32 noundef %902)
  br label %903

903:                                              ; preds = %893, %._crit_edge2007, %883, %._crit_edge2011, %._crit_edge2003
  %.01757 = phi ptr [ %805, %._crit_edge2003 ], [ %834, %._crit_edge2007 ], [ %863, %._crit_edge2011 ], [ null, %883 ], [ null, %893 ]
  %904 = load i32, ptr %485, align 4, !tbaa !34
  %905 = icmp eq i32 %904, 0
  %906 = load i32, ptr %479, align 4, !tbaa !28
  %907 = load i32, ptr %4, align 4, !tbaa !5
  %908 = load i32, ptr %497, align 4, !tbaa !46
  %909 = icmp eq i32 %908, 2
  %910 = load i32, ptr %473, align 8
  %911 = select i1 %909, i32 1, i32 %910
  br i1 %905, label %912, label %920

912:                                              ; preds = %903
  %913 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %906, ptr noundef %598, i32 noundef %367, i32 noundef %907, i32 noundef %913, i32 noundef %911)
  %914 = load i32, ptr %497, align 4, !tbaa !46
  %915 = icmp eq i32 %914, 2
  br i1 %915, label %916, label %928

916:                                              ; preds = %912
  %917 = load i32, ptr %479, align 4, !tbaa !28
  %918 = load i32, ptr %4, align 4, !tbaa !5
  %919 = load i32, ptr %7, align 4, !tbaa !5
  call void @negate_random_cols_rows(i32 noundef %917, ptr noundef %598, i32 noundef %367, i32 noundef %918, i32 noundef %919, i32 noundef 0)
  br label %928

920:                                              ; preds = %903
  %921 = load i32, ptr %8, align 4, !tbaa !5
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %906, ptr noundef %598, i32 noundef %367, i32 noundef %907, i32 noundef %921, i32 noundef %911)
  %922 = load i32, ptr %497, align 4, !tbaa !46
  %923 = icmp eq i32 %922, 2
  br i1 %923, label %924, label %928

924:                                              ; preds = %920
  %925 = load i32, ptr %479, align 4, !tbaa !28
  %926 = load i32, ptr %4, align 4, !tbaa !5
  %927 = load i32, ptr %8, align 4, !tbaa !5
  call void @negate_random_cols_rows(i32 noundef %925, ptr noundef %598, i32 noundef %367, i32 noundef %926, i32 noundef %927, i32 noundef 1)
  br label %928

928:                                              ; preds = %920, %924, %912, %916
  %929 = load i32, ptr %481, align 8, !tbaa !30
  %930 = load i32, ptr %5, align 4, !tbaa !5
  %931 = load i32, ptr %7, align 4, !tbaa !5
  br i1 %538, label %932, label %939

932:                                              ; preds = %928
  call void @init_garbage_matrix(i32 noundef %929, ptr noundef %613, i32 noundef 1, i32 noundef %930, i32 noundef %931)
  %933 = load i32, ptr %481, align 8, !tbaa !30
  %934 = load i32, ptr %5, align 4, !tbaa !5
  %935 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_garbage_matrix(i32 noundef %933, ptr noundef %628, i32 noundef 1, i32 noundef %934, i32 noundef %935)
  %936 = load i32, ptr %481, align 8, !tbaa !30
  %937 = load i32, ptr %5, align 4, !tbaa !5
  %938 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_garbage_matrix(i32 noundef %936, ptr noundef %643, i32 noundef 1, i32 noundef %937, i32 noundef %938)
  br label %946

939:                                              ; preds = %928
  call void @init_zero_matrix(i32 noundef %929, ptr noundef %613, i32 noundef 1, i32 noundef %930, i32 noundef %931)
  %940 = load i32, ptr %481, align 8, !tbaa !30
  %941 = load i32, ptr %5, align 4, !tbaa !5
  %942 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef %940, ptr noundef %628, i32 noundef 1, i32 noundef %941, i32 noundef %942)
  %943 = load i32, ptr %481, align 8, !tbaa !30
  %944 = load i32, ptr %5, align 4, !tbaa !5
  %945 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef %943, ptr noundef %643, i32 noundef 1, i32 noundef %944, i32 noundef %945)
  br label %946

946:                                              ; preds = %932, %939
  %947 = load i32, ptr %20, align 8, !tbaa !16
  %.not1799 = icmp eq i32 %947, 0
  br i1 %.not1799, label %.loopexit, label %948

948:                                              ; preds = %946
  %949 = load i32, ptr %3, align 4, !tbaa !5
  %950 = sext i32 %949 to i64
  %951 = load i32, ptr %8, align 4, !tbaa !5
  %952 = add nsw i32 %951, 7
  %953 = sdiv i32 %952, 8
  %954 = shl nsw i32 %953, 2
  %955 = sext i32 %954 to i64
  %956 = load i32, ptr %9, align 8
  switch i32 %956, label %957 [
    i32 0, label %962
    i32 1, label %.fold.split1839
  ]

957:                                              ; preds = %948
  %958 = and i32 %956, -2
  %switch.tableidx2232 = add i32 %958, -2
  %959 = icmp ult i32 %switch.tableidx2232, 11
  br i1 %959, label %switch.hole_check2233, label %960

960:                                              ; preds = %switch.hole_check2233, %957
  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.split1839:                                  ; preds = %948
  br label %962

switch.hole_check2233:                            ; preds = %957
  %switch.maskindex2235 = trunc nuw i32 %switch.tableidx2232 to i16
  %switch.shifted2236 = lshr i16 1365, %switch.maskindex2235
  %switch.lobit2237 = trunc i16 %switch.shifted2236 to i1
  br i1 %switch.lobit2237, label %switch.lookup2234, label %960

switch.lookup2234:                                ; preds = %switch.hole_check2233
  %961 = zext nneg i32 %switch.tableidx2232 to i64
  %switch.gep2238 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %961
  %switch.load2239 = load i64, ptr %switch.gep2238, align 8
  br label %962

962:                                              ; preds = %switch.lookup2234, %948, %.fold.split1839
  %963 = phi i64 [ 8, %948 ], [ 4, %.fold.split1839 ], [ %switch.load2239, %switch.lookup2234 ]
  %964 = mul nsw i64 %950, %524
  %965 = mul i64 %964, %955
  %966 = mul i64 %965, %963
  %967 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %966, i64 noundef 64) #13
  %968 = load i32, ptr %6, align 4, !tbaa !5
  %969 = icmp sgt i32 %968, 0
  %970 = load i32, ptr %8, align 4
  %971 = icmp sgt i32 %970, 0
  %972 = load i32, ptr %3, align 4
  %factor.op.mul = shl i32 %972, 2
  %973 = sdiv i32 %970, 2
  %974 = sext i32 %970 to i64
  br label %.preheader1968

.preheader1968:                                   ; preds = %962, %._crit_edge2020
  %.017462021 = phi i32 [ 0, %962 ], [ %1004, %._crit_edge2020 ]
  br i1 %969, label %.preheader1961.lr.ph, label %._crit_edge2020

.preheader1961.lr.ph:                             ; preds = %.preheader1968
  %975 = mul nsw i32 %972, %.017462021
  %976 = mul nsw i32 %975, %970
  %977 = mul nsw i32 %975, %973
  br i1 %971, label %.preheader1961.us, label %._crit_edge2020

.preheader1961.us:                                ; preds = %.preheader1961.lr.ph, %._crit_edge2014.us
  %.017442019.us = phi i32 [ %1003, %._crit_edge2014.us ], [ 0, %.preheader1961.lr.ph ]
  %978 = shl nsw i32 %.017442019.us, 2
  %979 = add i32 %976, %978
  br label %980

980:                                              ; preds = %.preheader1961.us, %980
  %indvars.iv2112 = phi i64 [ 0, %.preheader1961.us ], [ %indvars.iv.next2113, %980 ]
  %981 = lshr exact i64 %indvars.iv2112, 2
  %982 = trunc nuw nsw i64 %981 to i32
  %.reass.us = mul i32 %factor.op.mul, %982
  %983 = add i32 %979, %.reass.us
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds i8, ptr %578, i64 %984
  %986 = trunc i64 %981 to i32
  %987 = or disjoint i32 %986, 1
  %.reass2016.us = mul i32 %987, %factor.op.mul
  %988 = add i32 %979, %.reass2016.us
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds i8, ptr %578, i64 %989
  %991 = lshr exact i64 %indvars.iv2112, 3
  %992 = trunc nuw nsw i64 %991 to i32
  %.reass2018.us = mul i32 %factor.op.mul, %992
  %993 = add i32 %.reass2018.us, %978
  %994 = add i32 %993, %977
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds i8, ptr %967, i64 %995
  %997 = load <4 x i8>, ptr %985, align 1, !tbaa !60
  %998 = load <4 x i8>, ptr %990, align 1, !tbaa !60
  %999 = and <4 x i8> %997, <i8 15, i8 15, i8 15, i8 15>
  %1000 = shl <4 x i8> %998, <i8 4, i8 4, i8 4, i8 4>
  %1001 = or disjoint <4 x i8> %1000, %999
  store <4 x i8> %1001, ptr %996, align 1, !tbaa !60
  %indvars.iv.next2113 = add nuw nsw i64 %indvars.iv2112, 8
  %1002 = icmp slt i64 %indvars.iv.next2113, %974
  br i1 %1002, label %980, label %._crit_edge2014.us, !llvm.loop !76

._crit_edge2014.us:                               ; preds = %980
  %1003 = add nuw nsw i32 %.017442019.us, 1
  %exitcond2115.not = icmp eq i32 %1003, %968
  br i1 %exitcond2115.not, label %._crit_edge2020, label %.preheader1961.us, !llvm.loop !77

._crit_edge2020:                                  ; preds = %._crit_edge2014.us, %.preheader1961.lr.ph, %.preheader1968
  %1004 = add nuw nsw i32 %.017462021, 1
  %exitcond2116.not = icmp eq i32 %1004, %367
  br i1 %exitcond2116.not, label %1005, label %.preheader1968, !llvm.loop !78

1005:                                             ; preds = %._crit_edge2020
  %1006 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %967, ptr noundef %598, ptr noundef %613, ptr noundef %628, i32 noundef %.01719, i32 noundef %.01693, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %967) #13
  %1007 = load i32, ptr %8, align 4, !tbaa !5
  %1008 = sdiv i32 %1007, 4
  %1009 = icmp slt i32 %1007, 4
  %1010 = load i32, ptr %6, align 4
  %1011 = icmp slt i32 %1010, 1
  %1012 = load ptr, ptr %530, align 8
  %1013 = load i32, ptr %3, align 4
  %1014 = sext i32 %1013 to i64
  %wide.trip.count2124 = zext nneg i32 %1010 to i64
  %brmerge = select i1 %1009, i1 true, i1 %1011
  br label %.preheader1967

.preheader1967:                                   ; preds = %1005, %._crit_edge2027
  %indvars.iv2127 = phi i64 [ 0, %1005 ], [ %indvars.iv.next2128, %._crit_edge2027 ]
  br i1 %brmerge, label %._crit_edge2027, label %.preheader1960.us.preheader

.preheader1960.us.preheader:                      ; preds = %.preheader1967
  %1015 = mul nsw i64 %indvars.iv2127, %1014
  %1016 = getelementptr i8, ptr %1012, i64 %1015
  %1017 = trunc i64 %1015 to i32
  %1018 = mul i32 %1007, %1017
  br label %.preheader1960.us

.preheader1960.us:                                ; preds = %.preheader1960.us.preheader, %._crit_edge2025.us
  %.117432026.us = phi i32 [ %1044, %._crit_edge2025.us ], [ 0, %.preheader1960.us.preheader ]
  %1019 = mul i32 %1013, %.117432026.us
  br label %1020

1020:                                             ; preds = %.preheader1960.us, %1020
  %indvars.iv2121 = phi i64 [ 0, %.preheader1960.us ], [ %indvars.iv.next2122, %1020 ]
  %1021 = getelementptr i8, ptr %1016, i64 %indvars.iv2121
  %1022 = load i8, ptr %1021, align 1, !tbaa !60
  %1023 = trunc nuw nsw i64 %indvars.iv2121 to i32
  %reass.add.us = add i32 %1019, %1023
  %reass.mul.us = shl i32 %reass.add.us, 2
  %1024 = add i32 %reass.mul.us, %1018
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds i8, ptr %578, i64 %1025
  %1027 = load i8, ptr %1026, align 1, !tbaa !60
  %1028 = sub i8 %1027, %1022
  store i8 %1028, ptr %1026, align 1, !tbaa !60
  %1029 = add i32 %1024, 1
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds i8, ptr %578, i64 %1030
  %1032 = load i8, ptr %1031, align 1, !tbaa !60
  %1033 = sub i8 %1032, %1022
  store i8 %1033, ptr %1031, align 1, !tbaa !60
  %1034 = add i32 %1024, 2
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds i8, ptr %578, i64 %1035
  %1037 = load i8, ptr %1036, align 1, !tbaa !60
  %1038 = sub i8 %1037, %1022
  store i8 %1038, ptr %1036, align 1, !tbaa !60
  %1039 = add i32 %1024, 3
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds i8, ptr %578, i64 %1040
  %1042 = load i8, ptr %1041, align 1, !tbaa !60
  %1043 = sub i8 %1042, %1022
  store i8 %1043, ptr %1041, align 1, !tbaa !60
  %indvars.iv.next2122 = add nuw nsw i64 %indvars.iv2121, 1
  %exitcond2125.not = icmp eq i64 %indvars.iv.next2122, %wide.trip.count2124
  br i1 %exitcond2125.not, label %._crit_edge2025.us, label %1020, !llvm.loop !79

._crit_edge2025.us:                               ; preds = %1020
  %1044 = add nuw nsw i32 %.117432026.us, 1
  %exitcond2126.not = icmp eq i32 %1044, %1008
  br i1 %exitcond2126.not, label %._crit_edge2027, label %.preheader1960.us, !llvm.loop !80

._crit_edge2027:                                  ; preds = %._crit_edge2025.us, %.preheader1967
  %indvars.iv.next2128 = add nuw nsw i64 %indvars.iv2127, 1
  %exitcond2131.not = icmp eq i64 %indvars.iv.next2128, %524
  br i1 %exitcond2131.not, label %.loopexit, label %.preheader1967, !llvm.loop !81

.loopexit:                                        ; preds = %._crit_edge2027, %946
  %.11684 = phi double [ %.01683, %946 ], [ %1006, %._crit_edge2027 ]
  %1045 = load i32, ptr %21, align 4, !tbaa !17
  %.not1800 = icmp eq i32 %1045, 0
  br i1 %.not1800, label %1126, label %1046

1046:                                             ; preds = %.loopexit
  %1047 = load i32, ptr %3, align 4, !tbaa !5
  %1048 = sext i32 %1047 to i64
  %1049 = load i32, ptr %8, align 4, !tbaa !5
  %1050 = sext i32 %1049 to i64
  %1051 = lshr i64 %1050, 1
  %1052 = mul nsw i64 %1048, %524
  %1053 = mul i64 %1052, %1051
  %1054 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1053, i64 noundef 64) #13
  call void @libxsmm_free(ptr noundef %578) #13
  %1055 = load i32, ptr %3, align 4, !tbaa !5
  %1056 = sext i32 %1055 to i64
  %1057 = load i32, ptr %8, align 4, !tbaa !5
  %1058 = sext i32 %1057 to i64
  %1059 = mul nsw i64 %539, %1056
  %1060 = mul i64 %1059, %1058
  %1061 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1060, i64 noundef 64) #13
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1966

.preheader1966:                                   ; preds = %1046, %._crit_edge2036
  %1062 = phi i32 [ %.pre, %1046 ], [ %1121, %._crit_edge2036 ]
  %1063 = phi i32 [ %.pre, %1046 ], [ %1122, %._crit_edge2036 ]
  %.017112039 = phi float [ 0.000000e+00, %1046 ], [ %.11712.lcssa, %._crit_edge2036 ]
  %.017232038 = phi i32 [ 0, %1046 ], [ %1123, %._crit_edge2036 ]
  %1064 = icmp sgt i32 %1063, 0
  br i1 %1064, label %.preheader1959.preheader, label %._crit_edge2036

.preheader1959.preheader:                         ; preds = %.preheader1966
  %.pre2140 = load i32, ptr %8, align 4, !tbaa !5
  br label %.preheader1959

.preheader1959:                                   ; preds = %.preheader1959.preheader, %._crit_edge2032
  %1065 = phi i32 [ %1117, %._crit_edge2032 ], [ %1062, %.preheader1959.preheader ]
  %1066 = phi i32 [ %1118, %._crit_edge2032 ], [ %.pre2140, %.preheader1959.preheader ]
  %.117122035 = phi float [ %.21713.lcssa, %._crit_edge2032 ], [ %.017112039, %.preheader1959.preheader ]
  %.017222034 = phi i32 [ %1119, %._crit_edge2032 ], [ 0, %.preheader1959.preheader ]
  %1067 = icmp sgt i32 %1066, 1
  br i1 %1067, label %.lr.ph2031, label %._crit_edge2032

.lr.ph2031:                                       ; preds = %.preheader1959, %.critedge1841
  %1068 = phi i32 [ %1100, %.critedge1841 ], [ %1066, %.preheader1959 ]
  %.217132030 = phi float [ %.31714, %.critedge1841 ], [ %.117122035, %.preheader1959 ]
  %.017212029 = phi i32 [ %1115, %.critedge1841 ], [ 0, %.preheader1959 ]
  %1069 = and i32 %.017212029, 15
  %1070 = icmp eq i32 %1069, 0
  br i1 %1070, label %1071, label %.critedge1841

1071:                                             ; preds = %.lr.ph2031
  %1072 = load ptr, ptr %531, align 8, !tbaa !64
  %1073 = load i32, ptr %3, align 4, !tbaa !5
  %1074 = sdiv i32 %1068, 32
  %1075 = mul i32 %1074, %.017232038
  %1076 = lshr exact i32 %.017212029, 4
  %reass.add1948 = add i32 %1075, %1076
  %reass.mul1949 = mul i32 %reass.add1948, %1073
  %1077 = add i32 %reass.mul1949, %.017222034
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds i8, ptr %1072, i64 %1078
  %1080 = load i8, ptr %1079, align 1, !tbaa !60
  %1081 = zext i8 %1080 to i32
  %1082 = shl nuw nsw i32 %1081, 23
  %1083 = bitcast i32 %1082 to float
  br label %.critedge1841

.critedge1841:                                    ; preds = %1071, %.lr.ph2031
  %.31714 = phi float [ %1083, %1071 ], [ %.217132030, %.lr.ph2031 ]
  %1084 = call i32 @rand() #13
  %1085 = srem i32 %1084, 16
  %1086 = trunc nsw i32 %1085 to i8
  %1087 = call i32 @rand() #13
  %1088 = srem i32 %1087, 16
  %1089 = trunc nsw i32 %1088 to i8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #13
  %1090 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1086)
  %1091 = fmul float %.31714, %1090
  store float %1091, ptr %15, align 4, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #13
  %1092 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1089)
  %1093 = fmul float %.31714, %1092
  store float %1093, 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
  %1094 = and i32 %1085, 15
  %1095 = shl nsw i32 %1088, 4
  %1096 = or disjoint i32 %1095, %1094
  %1097 = trunc i32 %1096 to i8
  %1098 = load i32, ptr %3, align 4, !tbaa !5
  %1099 = mul nsw i32 %1098, %.017232038
  %1100 = load i32, ptr %8, align 4, !tbaa !5
  %1101 = sdiv i32 %1100, 2
  %1102 = mul nsw i32 %1101, %1099
  %1103 = mul nsw i32 %1098, %.017212029
  %1104 = add i32 %1103, %.017222034
  %1105 = add i32 %1104, %1102
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds i8, ptr %1054, i64 %1106
  store i8 %1097, ptr %1107, align 1, !tbaa !60
  %1108 = load i16, ptr %17, align 2, !tbaa !82
  %1109 = mul nsw i32 %1099, %1100
  %reass.mul1951 = shl i32 %1104, 1
  %1110 = add i32 %reass.mul1951, %1109
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds i16, ptr %1061, i64 %1111
  store i16 %1108, ptr %1112, align 2, !tbaa !82
  %1113 = load i16, ptr %18, align 2, !tbaa !82
  %1114 = getelementptr i8, ptr %1112, i64 2
  store i16 %1113, ptr %1114, 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
  %1115 = add nuw nsw i32 %.017212029, 1
  %1116 = icmp slt i32 %1115, %1101
  br i1 %1116, label %.lr.ph2031, label %._crit_edge2032.loopexit, !llvm.loop !84

._crit_edge2032.loopexit:                         ; preds = %.critedge1841
  %.pre2141 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge2032

._crit_edge2032:                                  ; preds = %._crit_edge2032.loopexit, %.preheader1959
  %1117 = phi i32 [ %1065, %.preheader1959 ], [ %.pre2141, %._crit_edge2032.loopexit ]
  %1118 = phi i32 [ %1066, %.preheader1959 ], [ %1100, %._crit_edge2032.loopexit ]
  %.21713.lcssa = phi float [ %.117122035, %.preheader1959 ], [ %.31714, %._crit_edge2032.loopexit ]
  %1119 = add nuw nsw i32 %.017222034, 1
  %1120 = icmp slt i32 %1119, %1117
  br i1 %1120, label %.preheader1959, label %._crit_edge2036, !llvm.loop !85

._crit_edge2036:                                  ; preds = %._crit_edge2032, %.preheader1966
  %1121 = phi i32 [ %1062, %.preheader1966 ], [ %1117, %._crit_edge2032 ]
  %1122 = phi i32 [ %1063, %.preheader1966 ], [ %1117, %._crit_edge2032 ]
  %.11712.lcssa = phi float [ %.017112039, %.preheader1966 ], [ %.21713.lcssa, %._crit_edge2032 ]
  %1123 = add nuw nsw i32 %.017232038, 1
  %exitcond2132.not = icmp eq i32 %1123, %367
  br i1 %exitcond2132.not, label %1124, label %.preheader1966, !llvm.loop !86

1124:                                             ; preds = %._crit_edge2036
  %1125 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1054, ptr noundef %598, ptr noundef %613, ptr noundef %628, i32 noundef %.01719, i32 noundef %.01693, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1054) #13
  store i32 2, ptr %9, align 8, !tbaa !27
  store i32 1, ptr %486, align 8, !tbaa !35
  br label %1126

1126:                                             ; preds = %1124, %.loopexit
  %.11751 = phi ptr [ %1061, %1124 ], [ %578, %.loopexit ]
  %.21685 = phi double [ %1125, %1124 ], [ %.11684, %.loopexit ]
  %1127 = load i32, ptr %22, align 8, !tbaa !18
  %.not1801 = icmp eq i32 %1127, 0
  br i1 %.not1801, label %1213, label %1128

1128:                                             ; preds = %1126
  %1129 = load i32, ptr %3, align 4, !tbaa !5
  %1130 = sext i32 %1129 to i64
  %1131 = load i32, ptr %8, align 4, !tbaa !5
  %1132 = sext i32 %1131 to i64
  %1133 = lshr i64 %1132, 1
  %1134 = mul nsw i64 %1130, %524
  %1135 = mul i64 %1134, %1133
  %1136 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1135, i64 noundef 64) #13
  call void @libxsmm_free(ptr noundef %.11751) #13
  %1137 = load i32, ptr %3, align 4, !tbaa !5
  %1138 = sext i32 %1137 to i64
  %1139 = load i32, ptr %8, align 4, !tbaa !5
  %1140 = sext i32 %1139 to i64
  %1141 = mul i64 %540, %1138
  %1142 = mul i64 %1141, %1140
  %1143 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1142, i64 noundef 64) #13
  %.pre2142 = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1965

.preheader1965:                                   ; preds = %1128, %._crit_edge2047
  %1144 = phi i32 [ %.pre2142, %1128 ], [ %1208, %._crit_edge2047 ]
  %1145 = phi i32 [ %.pre2142, %1128 ], [ %1209, %._crit_edge2047 ]
  %.016942050 = phi float [ 0.000000e+00, %1128 ], [ %.11695.lcssa, %._crit_edge2047 ]
  %.017032049 = phi i32 [ 0, %1128 ], [ %1210, %._crit_edge2047 ]
  %1146 = icmp sgt i32 %1145, 0
  br i1 %1146, label %.preheader1958.preheader, label %._crit_edge2047

.preheader1958.preheader:                         ; preds = %.preheader1965
  %.pre2143 = load i32, ptr %8, align 4, !tbaa !5
  br label %.preheader1958

.preheader1958:                                   ; preds = %.preheader1958.preheader, %._crit_edge2043
  %1147 = phi i32 [ %1204, %._crit_edge2043 ], [ %1144, %.preheader1958.preheader ]
  %1148 = phi i32 [ %1205, %._crit_edge2043 ], [ %.pre2143, %.preheader1958.preheader ]
  %.116952046 = phi float [ %.21696.lcssa, %._crit_edge2043 ], [ %.016942050, %.preheader1958.preheader ]
  %.017022045 = phi i32 [ %1206, %._crit_edge2043 ], [ 0, %.preheader1958.preheader ]
  %1149 = icmp sgt i32 %1148, 1
  br i1 %1149, label %.lr.ph2042, label %._crit_edge2043

.lr.ph2042:                                       ; preds = %.preheader1958, %.critedge1843
  %1150 = phi i32 [ %1182, %.critedge1843 ], [ %1148, %.preheader1958 ]
  %.216962041 = phi float [ %.31697, %.critedge1843 ], [ %.116952046, %.preheader1958 ]
  %.017012040 = phi i32 [ %1202, %.critedge1843 ], [ 0, %.preheader1958 ]
  %1151 = and i32 %.017012040, 15
  %1152 = icmp eq i32 %1151, 0
  br i1 %1152, label %1153, label %.critedge1843

1153:                                             ; preds = %.lr.ph2042
  %1154 = load ptr, ptr %531, align 8, !tbaa !64
  %1155 = load i32, ptr %3, align 4, !tbaa !5
  %1156 = sdiv i32 %1150, 32
  %1157 = mul i32 %1156, %.017032049
  %1158 = lshr exact i32 %.017012040, 4
  %reass.add1952 = add i32 %1157, %1158
  %reass.mul1953 = mul i32 %reass.add1952, %1155
  %1159 = add i32 %reass.mul1953, %.017022045
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds i8, ptr %1154, i64 %1160
  %1162 = load i8, ptr %1161, align 1, !tbaa !60
  %1163 = zext i8 %1162 to i32
  %1164 = shl nuw nsw i32 %1163, 23
  %1165 = bitcast i32 %1164 to float
  br label %.critedge1843

.critedge1843:                                    ; preds = %1153, %.lr.ph2042
  %.31697 = phi float [ %1165, %1153 ], [ %.216962041, %.lr.ph2042 ]
  %1166 = call i32 @rand() #13
  %1167 = srem i32 %1166, 16
  %1168 = trunc nsw i32 %1167 to i8
  %1169 = call i32 @rand() #13
  %1170 = srem i32 %1169, 16
  %1171 = trunc nsw i32 %1170 to i8
  %1172 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1168)
  %1173 = fmul float %.31697, %1172
  %1174 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1171)
  %1175 = fmul float %.31697, %1174
  %1176 = and i32 %1167, 15
  %1177 = shl nsw i32 %1170, 4
  %1178 = or disjoint i32 %1177, %1176
  %1179 = trunc i32 %1178 to i8
  %1180 = load i32, ptr %3, align 4, !tbaa !5
  %1181 = mul nsw i32 %1180, %.017032049
  %1182 = load i32, ptr %8, align 4, !tbaa !5
  %1183 = sdiv i32 %1182, 2
  %1184 = mul nsw i32 %1183, %1181
  %1185 = mul nsw i32 %1180, %.017012040
  %1186 = add i32 %1185, %.017022045
  %1187 = add i32 %1186, %1184
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds i8, ptr %1136, i64 %1188
  store i8 %1179, ptr %1189, align 1, !tbaa !60
  %1190 = mul nsw i32 %1181, %1182
  %1191 = shl nuw nsw i32 %.017012040, 1
  %1192 = mul nsw i32 %1180, %1191
  %1193 = add i32 %1190, %.017022045
  %1194 = add i32 %1193, %1192
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds float, ptr %1143, i64 %1195
  store float %1173, ptr %1196, align 4, !tbaa !53
  %1197 = or disjoint i32 %1191, 1
  %1198 = mul nsw i32 %1180, %1197
  %1199 = add i32 %1193, %1198
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds float, ptr %1143, i64 %1200
  store float %1175, ptr %1201, align 4, !tbaa !53
  %1202 = add nuw nsw i32 %.017012040, 1
  %1203 = icmp slt i32 %1202, %1183
  br i1 %1203, label %.lr.ph2042, label %._crit_edge2043.loopexit, !llvm.loop !87

._crit_edge2043.loopexit:                         ; preds = %.critedge1843
  %.pre2144 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge2043

._crit_edge2043:                                  ; preds = %._crit_edge2043.loopexit, %.preheader1958
  %1204 = phi i32 [ %1147, %.preheader1958 ], [ %.pre2144, %._crit_edge2043.loopexit ]
  %1205 = phi i32 [ %1148, %.preheader1958 ], [ %1182, %._crit_edge2043.loopexit ]
  %.21696.lcssa = phi float [ %.116952046, %.preheader1958 ], [ %.31697, %._crit_edge2043.loopexit ]
  %1206 = add nuw nsw i32 %.017022045, 1
  %1207 = icmp slt i32 %1206, %1204
  br i1 %1207, label %.preheader1958, label %._crit_edge2047, !llvm.loop !88

._crit_edge2047:                                  ; preds = %._crit_edge2043, %.preheader1965
  %1208 = phi i32 [ %1144, %.preheader1965 ], [ %1204, %._crit_edge2043 ]
  %1209 = phi i32 [ %1145, %.preheader1965 ], [ %1204, %._crit_edge2043 ]
  %.11695.lcssa = phi float [ %.016942050, %.preheader1965 ], [ %.21696.lcssa, %._crit_edge2043 ]
  %1210 = add nuw nsw i32 %.017032049, 1
  %exitcond2133.not = icmp eq i32 %1210, %367
  br i1 %exitcond2133.not, label %1211, label %.preheader1965, !llvm.loop !89

1211:                                             ; preds = %._crit_edge2047
  %1212 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1136, ptr noundef %598, ptr noundef %613, ptr noundef %628, i32 noundef %.01719, i32 noundef %.01693, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1136) #13
  store i32 1, ptr %9, align 8, !tbaa !27
  store i32 1, ptr %486, align 8, !tbaa !35
  br label %1213

1213:                                             ; preds = %1211, %1126
  %.21752 = phi ptr [ %1143, %1211 ], [ %.11751, %1126 ]
  %.31686 = phi double [ %1212, %1211 ], [ %.21685, %1126 ]
  %1214 = load i32, ptr %23, align 4, !tbaa !19
  %.not1802 = icmp eq i32 %1214, 0
  br i1 %.not1802, label %1386, label %1215

1215:                                             ; preds = %1213
  %1216 = load i32, ptr %3, align 4, !tbaa !5
  %1217 = sext i32 %1216 to i64
  %1218 = load i32, ptr %8, align 4, !tbaa !5
  %1219 = sext i32 %1218 to i64
  %1220 = lshr i64 %1219, 1
  %1221 = mul nsw i64 %1217, %524
  %1222 = mul i64 %1221, %1220
  %1223 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1222, i64 noundef 64) #13
  call void @libxsmm_free(ptr noundef %.21752) #13
  %1224 = load i32, ptr %3, align 4, !tbaa !5
  %1225 = sext i32 %1224 to i64
  %1226 = load i32, ptr %8, align 4, !tbaa !5
  %1227 = sext i32 %1226 to i64
  %1228 = mul nsw i64 %1225, %524
  %1229 = mul i64 %1228, %1227
  %1230 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1229, i64 noundef 64) #13
  %.pre2145 = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1964

.preheader1964:                                   ; preds = %1215, %._crit_edge2055
  %1231 = phi i32 [ %.pre2145, %1215 ], [ %1381, %._crit_edge2055 ]
  %1232 = phi i32 [ %.pre2145, %1215 ], [ %1382, %._crit_edge2055 ]
  %.016752056 = phi i32 [ 0, %1215 ], [ %1383, %._crit_edge2055 ]
  %1233 = icmp sgt i32 %1232, 0
  br i1 %1233, label %.preheader1957.preheader, label %._crit_edge2055

.preheader1957.preheader:                         ; preds = %.preheader1964
  %.pre2146 = load i32, ptr %8, align 4, !tbaa !5
  br label %.preheader1957

.preheader1957:                                   ; preds = %.preheader1957.preheader, %._crit_edge2053
  %1234 = phi i32 [ %1377, %._crit_edge2053 ], [ %1231, %.preheader1957.preheader ]
  %1235 = phi i32 [ %1378, %._crit_edge2053 ], [ %.pre2146, %.preheader1957.preheader ]
  %.016742054 = phi i32 [ %1379, %._crit_edge2053 ], [ 0, %.preheader1957.preheader ]
  %1236 = icmp sgt i32 %1235, 7
  br i1 %1236, label %.preheader.lr.ph, label %._crit_edge2053

.preheader.lr.ph:                                 ; preds = %.preheader1957
  %1237 = shl nsw i32 %.016742054, 5
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %.preheader
  %.016732052 = phi i32 [ 0, %.preheader.lr.ph ], [ %1374, %.preheader ]
  %1238 = shl nsw i32 %.016732052, 3
  %1239 = and i32 %1238, 2147483616
  %.masked = and i32 %1238, 24
  %1240 = call i32 @rand() #13
  %1241 = srem i32 %1240, 16
  %1242 = trunc nsw i32 %1241 to i8
  %1243 = call i32 @rand() #13
  %1244 = srem i32 %1243, 16
  %1245 = trunc nsw i32 %1244 to i8
  %1246 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1242)
  %1247 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1245)
  %1248 = and i32 %1241, 15
  %1249 = shl nsw i32 %1244, 4
  %1250 = or disjoint i32 %1249, %1248
  %1251 = trunc i32 %1250 to i8
  %1252 = load i32, ptr %3, align 4, !tbaa !5
  %1253 = mul nsw i32 %1252, %.016752056
  %1254 = load i32, ptr %8, align 4, !tbaa !5
  %1255 = sdiv i32 %1254, 2
  %1256 = mul nsw i32 %1255, %1253
  %1257 = mul i32 %1252, %.016732052
  %reass.add1954 = add i32 %1257, %.016742054
  %reass.mul1955 = shl i32 %reass.add1954, 2
  %1258 = add i32 %1256, %reass.mul1955
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds i8, ptr %1223, i64 %1259
  store i8 %1251, ptr %1260, align 1, !tbaa !60
  %1261 = mul nsw i32 %1253, %1254
  %1262 = mul i32 %1239, %1252
  %1263 = add i32 %1262, %1237
  %1264 = add i32 %1263, %1261
  %1265 = add nsw i32 %1264, %.masked
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds i8, ptr %1230, i64 %1266
  store i8 %1246, ptr %1267, align 1, !tbaa !60
  %1268 = or disjoint i32 %.masked, 4
  %1269 = add nsw i32 %1268, %1264
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds i8, ptr %1230, i64 %1270
  store i8 %1247, ptr %1271, align 1, !tbaa !60
  %1272 = call i32 @rand() #13
  %1273 = srem i32 %1272, 16
  %1274 = trunc nsw i32 %1273 to i8
  %1275 = call i32 @rand() #13
  %1276 = srem i32 %1275, 16
  %1277 = trunc nsw i32 %1276 to i8
  %1278 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1274)
  %1279 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1277)
  %1280 = and i32 %1273, 15
  %1281 = shl nsw i32 %1276, 4
  %1282 = or disjoint i32 %1281, %1280
  %1283 = trunc i32 %1282 to i8
  %1284 = load i32, ptr %3, align 4, !tbaa !5
  %1285 = mul nsw i32 %1284, %.016752056
  %1286 = load i32, ptr %8, align 4, !tbaa !5
  %1287 = sdiv i32 %1286, 2
  %1288 = mul nsw i32 %1287, %1285
  %1289 = mul i32 %1284, %.016732052
  %reass.add1954.1 = add i32 %1289, %.016742054
  %reass.mul1955.1 = shl i32 %reass.add1954.1, 2
  %1290 = add i32 %1288, 1
  %1291 = add i32 %1290, %reass.mul1955.1
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds i8, ptr %1223, i64 %1292
  store i8 %1283, ptr %1293, align 1, !tbaa !60
  %1294 = mul nsw i32 %1285, %1286
  %1295 = mul i32 %1239, %1284
  %1296 = add i32 %1295, %1237
  %1297 = add i32 %1296, %1294
  %1298 = or disjoint i32 %.masked, 1
  %1299 = add nsw i32 %1297, %1298
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds i8, ptr %1230, i64 %1300
  store i8 %1278, ptr %1301, align 1, !tbaa !60
  %1302 = or disjoint i32 %.masked, 5
  %1303 = add nsw i32 %1302, %1297
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds i8, ptr %1230, i64 %1304
  store i8 %1279, ptr %1305, align 1, !tbaa !60
  %1306 = call i32 @rand() #13
  %1307 = srem i32 %1306, 16
  %1308 = trunc nsw i32 %1307 to i8
  %1309 = call i32 @rand() #13
  %1310 = srem i32 %1309, 16
  %1311 = trunc nsw i32 %1310 to i8
  %1312 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1308)
  %1313 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1311)
  %1314 = and i32 %1307, 15
  %1315 = shl nsw i32 %1310, 4
  %1316 = or disjoint i32 %1315, %1314
  %1317 = trunc i32 %1316 to i8
  %1318 = load i32, ptr %3, align 4, !tbaa !5
  %1319 = mul nsw i32 %1318, %.016752056
  %1320 = load i32, ptr %8, align 4, !tbaa !5
  %1321 = sdiv i32 %1320, 2
  %1322 = mul nsw i32 %1321, %1319
  %1323 = mul i32 %1318, %.016732052
  %reass.add1954.2 = add i32 %1323, %.016742054
  %reass.mul1955.2 = shl i32 %reass.add1954.2, 2
  %1324 = add i32 %1322, 2
  %1325 = add i32 %1324, %reass.mul1955.2
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds i8, ptr %1223, i64 %1326
  store i8 %1317, ptr %1327, align 1, !tbaa !60
  %1328 = mul nsw i32 %1319, %1320
  %1329 = mul i32 %1239, %1318
  %1330 = add i32 %1329, %1237
  %1331 = add i32 %1330, %1328
  %1332 = or disjoint i32 %.masked, 2
  %1333 = add nsw i32 %1331, %1332
  %1334 = sext i32 %1333 to i64
  %1335 = getelementptr inbounds i8, ptr %1230, i64 %1334
  store i8 %1312, ptr %1335, align 1, !tbaa !60
  %1336 = or disjoint i32 %.masked, 6
  %1337 = add nsw i32 %1336, %1331
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds i8, ptr %1230, i64 %1338
  store i8 %1313, ptr %1339, align 1, !tbaa !60
  %1340 = call i32 @rand() #13
  %1341 = srem i32 %1340, 16
  %1342 = trunc nsw i32 %1341 to i8
  %1343 = call i32 @rand() #13
  %1344 = srem i32 %1343, 16
  %1345 = trunc nsw i32 %1344 to i8
  %1346 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1342)
  %1347 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1345)
  %1348 = and i32 %1341, 15
  %1349 = shl nsw i32 %1344, 4
  %1350 = or disjoint i32 %1349, %1348
  %1351 = trunc i32 %1350 to i8
  %1352 = load i32, ptr %3, align 4, !tbaa !5
  %1353 = mul nsw i32 %1352, %.016752056
  %1354 = load i32, ptr %8, align 4, !tbaa !5
  %1355 = sdiv i32 %1354, 2
  %1356 = mul nsw i32 %1355, %1353
  %1357 = mul i32 %1352, %.016732052
  %reass.add1954.3 = add i32 %1357, %.016742054
  %reass.mul1955.3 = shl i32 %reass.add1954.3, 2
  %1358 = add i32 %1356, 3
  %1359 = add i32 %1358, %reass.mul1955.3
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr inbounds i8, ptr %1223, i64 %1360
  store i8 %1351, ptr %1361, align 1, !tbaa !60
  %1362 = mul nsw i32 %1353, %1354
  %1363 = mul i32 %1239, %1352
  %1364 = add i32 %1363, %1237
  %1365 = add i32 %1364, %1362
  %1366 = or disjoint i32 %.masked, 3
  %1367 = add nsw i32 %1365, %1366
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds i8, ptr %1230, i64 %1368
  store i8 %1346, ptr %1369, align 1, !tbaa !60
  %1370 = or disjoint i32 %.masked, 7
  %1371 = add nsw i32 %1370, %1365
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds i8, ptr %1230, i64 %1372
  store i8 %1347, ptr %1373, align 1, !tbaa !60
  %1374 = add nuw nsw i32 %.016732052, 1
  %1375 = sdiv i32 %1354, 8
  %1376 = icmp slt i32 %1374, %1375
  br i1 %1376, label %.preheader, label %._crit_edge2053.loopexit, !llvm.loop !90

._crit_edge2053.loopexit:                         ; preds = %.preheader
  %.pre2147 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge2053

._crit_edge2053:                                  ; preds = %._crit_edge2053.loopexit, %.preheader1957
  %1377 = phi i32 [ %.pre2147, %._crit_edge2053.loopexit ], [ %1234, %.preheader1957 ]
  %1378 = phi i32 [ %1354, %._crit_edge2053.loopexit ], [ %1235, %.preheader1957 ]
  %1379 = add nuw nsw i32 %.016742054, 1
  %1380 = icmp slt i32 %1379, %1377
  br i1 %1380, label %.preheader1957, label %._crit_edge2055, !llvm.loop !91

._crit_edge2055:                                  ; preds = %._crit_edge2053, %.preheader1964
  %1381 = phi i32 [ %1231, %.preheader1964 ], [ %1377, %._crit_edge2053 ]
  %1382 = phi i32 [ %1232, %.preheader1964 ], [ %1377, %._crit_edge2053 ]
  %1383 = add nuw nsw i32 %.016752056, 1
  %exitcond2134.not = icmp eq i32 %1383, %367
  br i1 %exitcond2134.not, label %1384, label %.preheader1964, !llvm.loop !92

1384:                                             ; preds = %._crit_edge2055
  %1385 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1223, ptr noundef %598, ptr noundef %613, ptr noundef %628, i32 noundef %.01719, i32 noundef %.01693, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1223) #13
  store i32 12, ptr %9, align 8, !tbaa !27
  store i32 1, ptr %486, align 8, !tbaa !35
  br label %1386

1386:                                             ; preds = %1384, %1213
  %.31753 = phi ptr [ %1230, %1384 ], [ %.21752, %1213 ]
  %.41687 = phi double [ %1385, %1384 ], [ %.31686, %1213 ]
  %1387 = load i32, ptr %24, align 4, !tbaa !20
  %1388 = icmp ne i32 %1387, 0
  %1389 = load i32, ptr %25, align 8
  %1390 = icmp ne i32 %1389, 0
  %or.cond379 = select i1 %1388, i1 true, i1 %1390
  %1391 = load i32, ptr %26, align 4
  %1392 = icmp ne i32 %1391, 0
  %or.cond382 = select i1 %or.cond379, i1 true, i1 %1392
  %or.cond384 = and i1 %541, %or.cond382
  br i1 %or.cond384, label %1393, label %1396

1393:                                             ; preds = %1386
  %1394 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %.01757, ptr noundef %598, ptr noundef %613, ptr noundef %628, i32 noundef %.01719, i32 noundef %.01693, ptr noundef nonnull %11)
  %.not1803 = icmp eq ptr %.01757, null
  br i1 %.not1803, label %.thread1885, label %1395

1395:                                             ; preds = %1393
  call void @libxsmm_free(ptr noundef nonnull %.01757) #13
  br label %.thread1885

1396:                                             ; preds = %1386
  %1397 = load i32, ptr %8, align 4
  %1398 = icmp sgt i32 %1397, 0
  %or.cond2068 = select i1 %366, i1 %1398, i1 false
  br i1 %or.cond2068, label %.preheader1963.preheader, label %.thread1885

.preheader1963.preheader:                         ; preds = %1396
  %.pre2148 = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1963

.preheader1963:                                   ; preds = %.preheader1963.preheader, %._crit_edge2059
  %1399 = phi i32 [ %1427, %._crit_edge2059 ], [ %1397, %.preheader1963.preheader ]
  %1400 = phi i32 [ %1428, %._crit_edge2059 ], [ %.pre2148, %.preheader1963.preheader ]
  %.016612060 = phi i32 [ %1429, %._crit_edge2059 ], [ 0, %.preheader1963.preheader ]
  %1401 = icmp sgt i32 %1400, 0
  br i1 %1401, label %.lr.ph2058, label %._crit_edge2059

.lr.ph2058:                                       ; preds = %.preheader1963, %.thread1890
  %.016622057 = phi i32 [ %1424, %.thread1890 ], [ 0, %.preheader1963 ]
  %1402 = call double @libxsmm_rng_f64() #13
  %1403 = fptrunc double %1402 to float
  %1404 = fcmp ult float %.21738, %1403
  br i1 %1404, label %.thread1890, label %1405

1405:                                             ; preds = %.lr.ph2058
  %1406 = load i32, ptr %9, align 8, !tbaa !27
  switch i32 %1406, label %.thread1890 [
    i32 2, label %.thread1888
    i32 3, label %1412
    i32 1, label %1418
  ]

.thread1888:                                      ; preds = %1405
  %1407 = load i32, ptr %6, align 4, !tbaa !5
  %1408 = mul nsw i32 %1407, %.016612060
  %1409 = add nsw i32 %1408, %.016622057
  %1410 = sext i32 %1409 to i64
  %1411 = getelementptr inbounds i16, ptr %.31753, i64 %1410
  store i16 0, ptr %1411, align 2, !tbaa !82
  br label %.thread1890

1412:                                             ; preds = %1405
  %1413 = load i32, ptr %6, align 4, !tbaa !5
  %1414 = mul nsw i32 %1413, %.016612060
  %1415 = add nsw i32 %1414, %.016622057
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds i16, ptr %.31753, i64 %1416
  store i16 0, ptr %1417, align 2, !tbaa !82
  br label %.thread1890

1418:                                             ; preds = %1405
  %1419 = load i32, ptr %6, align 4, !tbaa !5
  %1420 = mul nsw i32 %1419, %.016612060
  %1421 = add nsw i32 %1420, %.016622057
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds float, ptr %.31753, i64 %1422
  store float 0.000000e+00, ptr %1423, align 4, !tbaa !53
  br label %.thread1890

.thread1890:                                      ; preds = %1405, %1412, %.thread1888, %1418, %.lr.ph2058
  %1424 = add nuw nsw i32 %.016622057, 1
  %1425 = load i32, ptr %6, align 4, !tbaa !5
  %1426 = icmp slt i32 %1424, %1425
  br i1 %1426, label %.lr.ph2058, label %._crit_edge2059.loopexit, !llvm.loop !93

._crit_edge2059.loopexit:                         ; preds = %.thread1890
  %.pre2149 = load i32, ptr %8, align 4, !tbaa !5
  br label %._crit_edge2059

._crit_edge2059:                                  ; preds = %._crit_edge2059.loopexit, %.preheader1963
  %1427 = phi i32 [ %.pre2149, %._crit_edge2059.loopexit ], [ %1399, %.preheader1963 ]
  %1428 = phi i32 [ %1425, %._crit_edge2059.loopexit ], [ %1400, %.preheader1963 ]
  %1429 = add nuw nsw i32 %.016612060, 1
  %1430 = icmp slt i32 %1429, %1427
  br i1 %1430, label %.preheader1963, label %.thread1885, !llvm.loop !94

.thread1885:                                      ; preds = %._crit_edge2059, %1395, %1393, %1396
  %.516881887 = phi double [ %.41687, %1396 ], [ %1394, %1393 ], [ %1394, %1395 ], [ %.41687, %._crit_edge2059 ]
  call void @ref_matmul(ptr noundef nonnull %9, ptr noundef %.31753, ptr noundef %598, ptr noundef %643)
  %1431 = load i32, ptr %21, align 4, !tbaa !17
  %.not1804 = icmp eq i32 %1431, 0
  br i1 %.not1804, label %1433, label %1432

1432:                                             ; preds = %.thread1885
  store i32 12, ptr %9, align 8, !tbaa !27
  br label %1433

1433:                                             ; preds = %1432, %.thread1885
  %1434 = load i32, ptr %22, align 8, !tbaa !18
  %.not1805 = icmp eq i32 %1434, 0
  br i1 %.not1805, label %1436, label %1435

1435:                                             ; preds = %1433
  store i32 12, ptr %9, align 8, !tbaa !27
  br label %1436

1436:                                             ; preds = %1433, %1435
  br i1 %380, label %1437, label %1450

1437:                                             ; preds = %1436
  %1438 = load i32, ptr %481, align 8
  %1439 = and i32 %1438, -2
  %or.cond387 = icmp eq i32 %1439, 2
  br i1 %or.cond387, label %1440, label %1449

1440:                                             ; preds = %1437
  %1441 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %1438) #13
  %1442 = icmp eq i32 %1441, 4
  br i1 %1442, label %1443, label %1448

1443:                                             ; preds = %1440
  %1444 = load i32, ptr %519, align 4, !tbaa !48
  %1445 = and i32 %1444, 3
  %1446 = icmp eq i32 %1445, 0
  br i1 %1446, label %1447, label %1448

1447:                                             ; preds = %1443
  call void @convert_output_to_vnni4(ptr noundef nonnull %9, ptr noundef %643)
  br label %1450

1448:                                             ; preds = %1443, %1440
  call void @convert_output_to_vnni2(ptr noundef nonnull %9, ptr noundef %643)
  br label %1450

1449:                                             ; preds = %1437
  call void @convert_output_to_vnni4(ptr noundef nonnull %9, ptr noundef %643)
  br label %1450

1450:                                             ; preds = %1449, %1448, %1447, %1436
  %1451 = load i32, ptr %19, align 8, !tbaa !15
  %.not1806 = icmp eq i32 %1451, 0
  br i1 %.not1806, label %1510, label %1452

1452:                                             ; preds = %1450
  %1453 = load i32, ptr %3, align 4, !tbaa !5
  %1454 = sext i32 %1453 to i64
  %1455 = load i32, ptr %8, align 4, !tbaa !5
  %1456 = sdiv i32 %1455, 2
  %1457 = sext i32 %1456 to i64
  %1458 = load i32, ptr %9, align 8
  switch i32 %1458, label %1459 [
    i32 0, label %1464
    i32 1, label %.fold.split1844
  ]

1459:                                             ; preds = %1452
  %1460 = and i32 %1458, -2
  %switch.tableidx2243 = add i32 %1460, -2
  %1461 = icmp ult i32 %switch.tableidx2243, 11
  br i1 %1461, label %switch.hole_check2244, label %1462

1462:                                             ; preds = %switch.hole_check2244, %1459
  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.split1844:                                  ; preds = %1452
  br label %1464

switch.hole_check2244:                            ; preds = %1459
  %switch.maskindex2246 = trunc nuw i32 %switch.tableidx2243 to i16
  %switch.shifted2247 = lshr i16 1365, %switch.maskindex2246
  %switch.lobit2248 = trunc i16 %switch.shifted2247 to i1
  br i1 %switch.lobit2248, label %switch.lookup2245, label %1462

switch.lookup2245:                                ; preds = %switch.hole_check2244
  %1463 = zext nneg i32 %switch.tableidx2243 to i64
  %switch.gep2249 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %1463
  %switch.load2250 = load i64, ptr %switch.gep2249, align 8
  br label %1464

1464:                                             ; preds = %switch.lookup2245, %1452, %.fold.split1844
  %1465 = phi i64 [ 8, %1452 ], [ 4, %.fold.split1844 ], [ %switch.load2250, %switch.lookup2245 ]
  %1466 = mul nsw i64 %1454, %524
  %1467 = mul i64 %1466, %1457
  %1468 = mul i64 %1467, %1465
  %1469 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1468, i64 noundef 64) #13
  %1470 = load i32, ptr %6, align 4, !tbaa !5
  %1471 = icmp sgt i32 %1470, 0
  %1472 = load i32, ptr %8, align 4
  %1473 = icmp sgt i32 %1472, 0
  %1474 = load i32, ptr %3, align 4
  %1475 = sdiv i32 %1472, 2
  %1476 = sext i32 %1472 to i64
  br label %.preheader1962

.preheader1962:                                   ; preds = %1464, %._crit_edge2065
  %.016542066 = phi i32 [ 0, %1464 ], [ %1507, %._crit_edge2065 ]
  br i1 %1471, label %.preheader1956.lr.ph, label %._crit_edge2065

.preheader1956.lr.ph:                             ; preds = %.preheader1962
  %1477 = mul nsw i32 %1474, %.016542066
  %1478 = mul nsw i32 %1477, %1472
  %1479 = mul nsw i32 %1477, %1475
  br i1 %1473, label %.preheader1956.us, label %._crit_edge2065

.preheader1956.us:                                ; preds = %.preheader1956.lr.ph, %._crit_edge2063.us
  %.016532064.us = phi i32 [ %1506, %._crit_edge2063.us ], [ 0, %.preheader1956.lr.ph ]
  %1480 = add i32 %1478, %.016532064.us
  br label %1481

1481:                                             ; preds = %.preheader1956.us, %1481
  %indvars.iv2135 = phi i64 [ 0, %.preheader1956.us ], [ %indvars.iv.next2136, %1481 ]
  %1482 = trunc i64 %indvars.iv2135 to i32
  %1483 = mul i32 %1474, %1482
  %1484 = add i32 %1480, %1483
  %1485 = sext i32 %1484 to i64
  %1486 = getelementptr inbounds i8, ptr %.31753, i64 %1485
  %1487 = load i8, ptr %1486, align 1, !tbaa !60
  %1488 = trunc i64 %indvars.iv2135 to i32
  %1489 = or disjoint i32 %1488, 1
  %1490 = mul i32 %1489, %1474
  %1491 = add i32 %1480, %1490
  %1492 = sext i32 %1491 to i64
  %1493 = getelementptr inbounds i8, ptr %.31753, i64 %1492
  %1494 = load i8, ptr %1493, align 1, !tbaa !60
  %1495 = and i8 %1487, 15
  %1496 = shl i8 %1494, 4
  %1497 = or disjoint i8 %1496, %1495
  %1498 = lshr exact i64 %indvars.iv2135, 1
  %1499 = trunc i64 %1498 to i32
  %1500 = mul i32 %1474, %1499
  %1501 = add i32 %1500, %.016532064.us
  %1502 = add i32 %1501, %1479
  %1503 = sext i32 %1502 to i64
  %1504 = getelementptr inbounds i8, ptr %1469, i64 %1503
  store i8 %1497, ptr %1504, align 1, !tbaa !60
  %indvars.iv.next2136 = add nuw nsw i64 %indvars.iv2135, 2
  %1505 = icmp slt i64 %indvars.iv.next2136, %1476
  br i1 %1505, label %1481, label %._crit_edge2063.us, !llvm.loop !95

._crit_edge2063.us:                               ; preds = %1481
  %1506 = add nuw nsw i32 %.016532064.us, 1
  %exitcond2138.not = icmp eq i32 %1506, %1470
  br i1 %exitcond2138.not, label %._crit_edge2065, label %.preheader1956.us, !llvm.loop !96

._crit_edge2065:                                  ; preds = %._crit_edge2063.us, %.preheader1956.lr.ph, %.preheader1962
  %1507 = add nuw nsw i32 %.016542066, 1
  %exitcond2139.not = icmp eq i32 %1507, %367
  br i1 %exitcond2139.not, label %1508, label %.preheader1962, !llvm.loop !97

1508:                                             ; preds = %._crit_edge2065
  %1509 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1469, ptr noundef %598, ptr noundef %613, ptr noundef %628, i32 noundef %.01719, i32 noundef %.01693, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1469) #13
  br label %1524

1510:                                             ; preds = %1450
  %1511 = load <4 x i32>, ptr %20, align 8
  %.fr = freeze <4 x i32> %1511
  %1512 = icmp ne <4 x i32> %.fr, zeroinitializer
  %1513 = load i32, ptr %21, align 4
  %.fr2258 = freeze i32 %1513
  %1514 = load i32, ptr %22, align 8
  %.fr2256 = freeze i32 %1514
  %1515 = load i32, ptr %23, align 4
  %1516 = icmp ne i32 %1515, 0
  %1517 = bitcast <4 x i1> %1512 to i4
  %1518 = icmp ne i4 %1517, 0
  %1519 = or i32 %.fr2258, %.fr2256
  %1520 = icmp ne i32 %1519, 0
  %1521 = or i1 %1518, %1520
  %op.rdx2255 = select i1 %1521, i1 true, i1 %1516
  %or.cond407 = and i1 %541, %op.rdx2255
  br i1 %or.cond407, label %1524, label %1522

1522:                                             ; preds = %1510
  %1523 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %.31753, ptr noundef %598, ptr noundef %613, ptr noundef %628, i32 noundef %.01719, i32 noundef %.01693, ptr noundef nonnull %11)
  br label %1524

1524:                                             ; preds = %1522, %1510, %1508
  %.71690 = phi double [ %1509, %1508 ], [ %.516881887, %1510 ], [ %1523, %1522 ]
  %1525 = load i32, ptr %481, align 8
  br i1 %380, label %1526, label %1561

1526:                                             ; preds = %1524
  %1527 = and i32 %1525, -2
  %or.cond410 = icmp eq i32 %1527, 2
  br i1 %or.cond410, label %1528, label %1553

1528:                                             ; preds = %1526
  %1529 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %1525) #13
  %1530 = icmp eq i32 %1529, 4
  br i1 %1530, label %1531, label %1544

1531:                                             ; preds = %1528
  %1532 = load i32, ptr %519, align 4, !tbaa !48
  %1533 = and i32 %1532, 3
  %1534 = icmp eq i32 %1533, 0
  br i1 %1534, label %1535, label %1544

1535:                                             ; preds = %1531
  %1536 = load i32, ptr %481, align 8, !tbaa !30
  %1537 = load i32, ptr %5, align 4, !tbaa !5
  %1538 = shl nsw i32 %1537, 2
  %1539 = load i32, ptr %6, align 4, !tbaa !5
  %1540 = shl nsw i32 %1539, 2
  %1541 = load i32, ptr %7, align 4, !tbaa !5
  %1542 = sdiv i32 %1541, 4
  %1543 = call double @check_matrix(i32 noundef %1536, ptr noundef %643, ptr noundef %613, i32 noundef %1538, i32 noundef %1540, i32 noundef %1542)
  br label %1566

1544:                                             ; preds = %1531, %1528
  %1545 = load i32, ptr %481, align 8, !tbaa !30
  %1546 = load i32, ptr %5, align 4, !tbaa !5
  %1547 = shl nsw i32 %1546, 1
  %1548 = load i32, ptr %6, align 4, !tbaa !5
  %1549 = shl nsw i32 %1548, 1
  %1550 = load i32, ptr %7, align 4, !tbaa !5
  %1551 = sdiv i32 %1550, 2
  %1552 = call double @check_matrix(i32 noundef %1545, ptr noundef %643, ptr noundef %613, i32 noundef %1547, i32 noundef %1549, i32 noundef %1551)
  br label %1566

1553:                                             ; preds = %1526
  %1554 = load i32, ptr %5, align 4, !tbaa !5
  %1555 = shl nsw i32 %1554, 2
  %1556 = load i32, ptr %6, align 4, !tbaa !5
  %1557 = shl nsw i32 %1556, 2
  %1558 = load i32, ptr %7, align 4, !tbaa !5
  %1559 = sdiv i32 %1558, 4
  %1560 = call double @check_matrix(i32 noundef %1525, ptr noundef %643, ptr noundef %613, i32 noundef %1555, i32 noundef %1557, i32 noundef %1559)
  br label %1566

1561:                                             ; preds = %1524
  %1562 = load i32, ptr %5, align 4, !tbaa !5
  %1563 = load i32, ptr %6, align 4, !tbaa !5
  %1564 = load i32, ptr %7, align 4, !tbaa !5
  %1565 = call double @check_matrix(i32 noundef %1525, ptr noundef %643, ptr noundef %613, i32 noundef %1562, i32 noundef %1563, i32 noundef %1564)
  br label %1566

1566:                                             ; preds = %1561, %1535, %1544, %1553
  %.01748 = phi double [ %1543, %1535 ], [ %1552, %1544 ], [ %1560, %1553 ], [ %1565, %1561 ]
  br i1 %or.cond358, label %1567, label %1574

1567:                                             ; preds = %1566
  switch i32 %.01658, label %1574 [
    i32 14, label %1568
    i32 3, label %1568
    i32 1, label %1568
  ]

1568:                                             ; preds = %1567, %1567, %1567
  switch i32 %.01659, label %1574 [
    i32 3, label %1569
    i32 1, label %1569
  ]

1569:                                             ; preds = %1568, %1568
  %1570 = load ptr, ptr %526, align 8, !tbaa !56
  call void @libxsmm_free(ptr noundef %1570) #13
  %1571 = load ptr, ptr %527, align 8, !tbaa !57
  call void @libxsmm_free(ptr noundef %1571) #13
  %1572 = load ptr, ptr %528, align 8, !tbaa !58
  call void @libxsmm_free(ptr noundef %1572) #13
  %1573 = load ptr, ptr %529, align 8, !tbaa !59
  call void @libxsmm_free(ptr noundef %1573) #13
  br label %1574

1574:                                             ; preds = %1568, %1567, %1569, %1566
  %1575 = load i32, ptr %20, align 8, !tbaa !16
  %.not1807 = icmp eq i32 %1575, 0
  br i1 %.not1807, label %1578, label %1576

1576:                                             ; preds = %1574
  %1577 = load ptr, ptr %530, align 8, !tbaa !62
  call void @libxsmm_free(ptr noundef %1577) #13
  br label %1578

1578:                                             ; preds = %1576, %1574
  %1579 = load i32, ptr %21, align 4, !tbaa !17
  %1580 = icmp ne i32 %1579, 0
  %1581 = load i32, ptr %22, align 8
  %1582 = icmp ne i32 %1581, 0
  %or.cond421 = select i1 %1580, i1 true, i1 %1582
  %1583 = load i32, ptr %23, align 4
  %1584 = icmp ne i32 %1583, 0
  %or.cond424 = select i1 %or.cond421, i1 true, i1 %1584
  br i1 %or.cond424, label %1585, label %.thread1891

1585:                                             ; preds = %1578
  %1586 = load ptr, ptr %531, align 8, !tbaa !64
  call void @libxsmm_free(ptr noundef %1586) #13
  %.pr = load i32, ptr %23, align 4, !tbaa !19
  %.not1808 = icmp eq i32 %.pr, 0
  br i1 %.not1808, label %.thread1891, label %1587

1587:                                             ; preds = %1585
  %1588 = load ptr, ptr %532, align 8, !tbaa !66
  call void @libxsmm_free(ptr noundef %1588) #13
  br label %.thread1891

.thread1891:                                      ; preds = %1578, %1587, %1585
  br i1 %or.cond1837, label %1589, label %1591

1589:                                             ; preds = %.thread1891
  %1590 = load ptr, ptr %526, align 8, !tbaa !56
  call void @libxsmm_free(ptr noundef %1590) #13
  br label %1591

1591:                                             ; preds = %1589, %.thread1891
  call void @libxsmm_free(ptr noundef %.31753) #13
  call void @libxsmm_free(ptr noundef %598) #13
  call void @libxsmm_free(ptr noundef %613) #13
  call void @libxsmm_free(ptr noundef %628) #13
  call void @libxsmm_free(ptr noundef %643) #13
  %1592 = load i32, ptr %496, align 8, !tbaa !45
  %1593 = icmp eq i32 %1592, 1
  br i1 %1593, label %1594, label %1595

1594:                                             ; preds = %1591
  call void @libxsmm_free(ptr noundef %.01759) #13
  br label %1595

1595:                                             ; preds = %1594, %1591
  %1596 = load i32, ptr %497, align 4, !tbaa !46
  %1597 = icmp eq i32 %1596, 2
  br i1 %1597, label %1598, label %1599

1598:                                             ; preds = %1595
  call void @libxsmm_free(ptr noundef %.01760) #13
  call void @libxsmm_free(ptr noundef %.01762) #13
  br label %1599

1599:                                             ; preds = %1598, %1595
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #13
  br i1 %380, label %1600, label %1602

1600:                                             ; preds = %1599
  %1601 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38)
  br label %1602

1602:                                             ; preds = %1600, %1599
  br i1 %or.cond5, label %1603, label %1624

1603:                                             ; preds = %1602
  %1604 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.39, double noundef %.71690)
  %1605 = load i32, ptr %6, align 4, !tbaa !5
  %1606 = sitofp i32 %1605 to double
  %1607 = fmul double %543, %1606
  %1608 = load i32, ptr %7, align 4, !tbaa !5
  %1609 = sitofp i32 %1608 to double
  %1610 = fmul double %1607, %1609
  %1611 = load i32, ptr %8, align 4, !tbaa !5
  %1612 = sitofp i32 %1611 to double
  %1613 = fmul double %1610, %1612
  %1614 = fmul double %1613, %544
  %1615 = fmul double %1614, 2.000000e+00
  %1616 = fmul double %.71690, 1.000000e+09
  %1617 = fdiv double %1615, %1616
  %1618 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %1617)
  %1619 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41, double noundef %.01748)
  %1620 = load i32, ptr %497, align 4, !tbaa !46
  %1621 = icmp eq i32 %1620, 2
  br i1 %1621, label %1622, label %1690

1622:                                             ; preds = %1603
  %1623 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.42, double noundef 0.000000e+00)
  br label %1690

1624:                                             ; preds = %1602
  br i1 %542, label %1625, label %1648

1625:                                             ; preds = %1624
  %1626 = load i32, ptr %497, align 4, !tbaa !46
  %1627 = icmp eq i32 %1626, 2
  %1628 = load i32, ptr %6, align 4, !tbaa !5
  %1629 = load i32, ptr %7, align 4, !tbaa !5
  %1630 = load i32, ptr %8, align 4, !tbaa !5
  %1631 = load i32, ptr %3, align 4, !tbaa !5
  %1632 = load i32, ptr %4, align 4, !tbaa !5
  %1633 = load i32, ptr %5, align 4, !tbaa !5
  %1634 = sitofp i32 %1628 to double
  %1635 = fmul double %543, %1634
  %1636 = sitofp i32 %1629 to double
  %1637 = fmul double %1635, %1636
  %1638 = sitofp i32 %1630 to double
  %1639 = fmul double %1637, %1638
  %1640 = fmul double %1639, %544
  %1641 = fmul double %1640, 2.000000e+00
  %1642 = fmul double %.71690, 1.000000e+09
  %1643 = fdiv double %1641, %1642
  br i1 %1627, label %1644, label %1646

1644:                                             ; preds = %1625
  %1645 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.43, ptr noundef %.01648, ptr noundef %.01649, ptr noundef %.01650, ptr noundef %.01651, i32 noundef %1628, i32 noundef %1629, i32 noundef %1630, i32 noundef %1631, i32 noundef %1632, i32 noundef %1633, i32 noundef %367, i32 noundef %.21681, i32 noundef %368, double noundef %1643, double noundef %.01748, double noundef 0.000000e+00)
  br label %switch.lookup2251

1646:                                             ; preds = %1625
  %1647 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44, ptr noundef %.01648, ptr noundef %.01649, ptr noundef %.01650, ptr noundef %.01651, i32 noundef %1628, i32 noundef %1629, i32 noundef %1630, i32 noundef %1631, i32 noundef %1632, i32 noundef %1633, i32 noundef %367, i32 noundef %.21681, i32 noundef %368, double noundef %1643, double noundef %.01748)
  br label %switch.lookup2251

1648:                                             ; preds = %1624
  %1649 = load i32, ptr %6, align 4, !tbaa !5
  %1650 = load i32, ptr %7, align 4, !tbaa !5
  %1651 = load i32, ptr %8, align 4, !tbaa !5
  %1652 = load i32, ptr %3, align 4, !tbaa !5
  %1653 = load i32, ptr %4, align 4, !tbaa !5
  %1654 = load i32, ptr %5, align 4, !tbaa !5
  %1655 = sitofp i32 %1649 to double
  %1656 = fmul double %543, %1655
  %1657 = sitofp i32 %1650 to double
  %1658 = fmul double %1656, %1657
  %1659 = sitofp i32 %1651 to double
  %1660 = fmul double %1658, %1659
  %1661 = fmul double %1660, %544
  %1662 = fmul double %1661, 2.000000e+00
  %1663 = fmul double %.71690, 1.000000e+09
  %1664 = fdiv double %1662, %1663
  %1665 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.45, ptr noundef %.01648, ptr noundef %.01649, ptr noundef %.01650, ptr noundef %.01651, i32 noundef %1649, i32 noundef %1650, i32 noundef %1651, i32 noundef %1652, i32 noundef %1653, i32 noundef %1654, i32 noundef %367, i32 noundef %.21681, i32 noundef %368, double noundef %1664)
  br label %switch.lookup2251

switch.lookup2251:                                ; preds = %1648, %1646, %1644
  %switch.load2253 = load ptr, ptr %switch.gep2252, align 8
  %1666 = load ptr, ptr %1, align 8, !tbaa !9
  %1667 = load i32, ptr %6, align 4, !tbaa !5
  %1668 = load i32, ptr %7, align 4, !tbaa !5
  %1669 = load i32, ptr %8, align 4, !tbaa !5
  %1670 = load i32, ptr %3, align 4, !tbaa !5
  %1671 = load i32, ptr %4, align 4, !tbaa !5
  %1672 = load i32, ptr %5, align 4, !tbaa !5
  %1673 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.48, ptr noundef %1666, ptr noundef %.01648, ptr noundef %.01649, ptr noundef %.01650, ptr noundef %.01651, i32 noundef %1667, i32 noundef %1668, i32 noundef %1669, i32 noundef %1670, i32 noundef %1671, i32 noundef %1672, double noundef 1.000000e+00, double noundef %.11671, i32 noundef %.01660, i32 noundef %.01663, i32 noundef %.01664, i32 noundef %.01665, i32 noundef %.01666, i32 noundef %.01667, i32 noundef %.01668, ptr noundef nonnull %.str.10..str.11, ptr noundef nonnull %switch.load2253, i32 noundef %367, i32 noundef %368, i32 noundef %.01719, i32 noundef %.31718)
  %1674 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.49, double noundef %.71690)
  %1675 = load i32, ptr %6, align 4, !tbaa !5
  %1676 = sitofp i32 %1675 to double
  %1677 = fmul double %543, %1676
  %1678 = load i32, ptr %7, align 4, !tbaa !5
  %1679 = sitofp i32 %1678 to double
  %1680 = fmul double %1677, %1679
  %1681 = load i32, ptr %8, align 4, !tbaa !5
  %1682 = sitofp i32 %1681 to double
  %1683 = fmul double %1680, %1682
  %1684 = fmul double %1683, %544
  %1685 = fmul double %1684, 2.000000e+00
  %1686 = fmul double %.71690, 1.000000e+09
  %1687 = fdiv double %1685, %1686
  %1688 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.50, double noundef %1687)
  %1689 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41, double noundef %.01748)
  br label %1690

.critedge444.thread:                              ; preds = %546
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %10) #13
  br label %1700

1690:                                             ; preds = %1622, %1603, %switch.lookup2251
  %1691 = fcmp olt double %.01705, %.01748
  %or.cond432 = select i1 %1691, i1 %542, i1 false
  %.11706 = select i1 %or.cond432, double %.01748, double %.01705
  %1692 = load i64, ptr @tests_executed, align 8, !tbaa !98
  %1693 = add i64 %1692, 1
  store i64 %1693, ptr @tests_executed, align 8, !tbaa !98
  %1694 = icmp ne i32 %.21734, 0
  %1695 = load i32, ptr @is_reference_kernel, align 4
  %1696 = icmp eq i32 %1695, 0
  %or.cond440 = select i1 %1694, i1 %1696, i1 false
  br i1 %or.cond440, label %.critedge.backedge, label %1697

.critedge.backedge:                               ; preds = %1690, %1697
  br label %.critedge, !llvm.loop !100

1697:                                             ; preds = %1690
  %1698 = icmp ne i32 %1695, 0
  %or.cond442 = select i1 %1694, i1 %1698, i1 false
  %1699 = icmp ult i64 %1693, 10
  %or.cond642 = select i1 %or.cond442, i1 %1699, i1 false
  br i1 %or.cond642, label %.critedge.backedge, label %.critedge444

.critedge444:                                     ; preds = %1697
  br i1 %or.cond5, label %1702, label %1700

1700:                                             ; preds = %.critedge444.thread, %.critedge444
  %.2170719001905 = phi double [ %.01705, %.critedge444.thread ], [ %.11706, %.critedge444 ]
  %1701 = call i32 @fclose(ptr noundef %.01699)
  br label %1704

1702:                                             ; preds = %.critedge444
  %1703 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28)
  br label %1704

1704:                                             ; preds = %1702, %1700
  %.2170719001904 = phi double [ %.11706, %1702 ], [ %.2170719001905, %1700 ]
  %1705 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.52, double noundef %.2170719001904)
  %1706 = load i32, ptr %497, align 4, !tbaa !46
  %1707 = icmp eq i32 %1706, 2
  br i1 %1707, label %1708, label %1710

1708:                                             ; preds = %1704
  %1709 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.53, double noundef 0.000000e+00)
  br label %1710

1710:                                             ; preds = %1708, %1704
  %1711 = load i32, ptr %481, align 8, !tbaa !30
  %1712 = icmp eq i32 %1711, 2
  br i1 %1712, label %1713, label %1731

1713:                                             ; preds = %1710
  %1714 = load i32, ptr %497, align 4
  %1715 = icmp eq i32 %1714, 3
  br i1 %1715, label %1716, label %1721

1716:                                             ; preds = %1713
  %1717 = fcmp ult double %.2170719001904, 7.000000e-03
  br i1 %1717, label %1718, label %1804

1718:                                             ; preds = %1716
  %1719 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1720 = call i32 @libxsmm_return_success_code(i32 noundef %1719)
  br label %1804

1721:                                             ; preds = %1713
  %1722 = add i32 %1714, -1
  %or.cond447 = icmp ult i32 %1722, 2
  br i1 %or.cond447, label %1723, label %1726

1723:                                             ; preds = %1721
  %1724 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1725 = call i32 @libxsmm_return_success_code(i32 noundef %1724)
  br label %1804

1726:                                             ; preds = %1721
  %1727 = fcmp ult double %.2170719001904, 5.000000e-03
  br i1 %1727, label %1728, label %1804

1728:                                             ; preds = %1726
  %1729 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1730 = call i32 @libxsmm_return_success_code(i32 noundef %1729)
  br label %1804

1731:                                             ; preds = %1710
  %1732 = load i32, ptr %479, align 4, !tbaa !28
  %1733 = icmp eq i32 %1732, 3
  br i1 %1733, label %1734, label %1739

1734:                                             ; preds = %1731
  %1735 = fcmp ult double %.2170719001904, 8.000000e-03
  br i1 %1735, label %1736, label %1804

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 %1804

1739:                                             ; preds = %1731
  %1740 = load i32, ptr %497, align 4
  %1741 = icmp eq i32 %1740, 3
  switch i32 %1711, label %1788 [
    i32 4, label %1742
    i32 5, label %1765
  ]

1742:                                             ; preds = %1739
  br i1 %1741, label %1743, label %1755

1743:                                             ; preds = %1742
  %1744 = fcmp ult double %.2170719001904, 0x3F826E978D4FDF3B
  br i1 %1744, label %1752, label %1745

1745:                                             ; preds = %1743
  %1746 = load i32, ptr %496, align 8, !tbaa !45
  %1747 = icmp ne i32 %1746, 1
  %1748 = fcmp ult double %.2170719001904, 1.800000e-02
  %or.cond1848 = and i1 %1748, %1747
  br i1 %or.cond1848, label %1749, label %1804

1749:                                             ; preds = %1745
  %1750 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1751 = call i32 @libxsmm_return_success_code(i32 noundef %1750)
  br label %1804

1752:                                             ; preds = %1743
  %1753 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1754 = call i32 @libxsmm_return_success_code(i32 noundef %1753)
  br label %1804

1755:                                             ; preds = %1742
  %1756 = add i32 %1740, -1
  %or.cond450 = icmp ult i32 %1756, 2
  br i1 %or.cond450, label %1757, label %1760

1757:                                             ; preds = %1755
  %1758 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1759 = call i32 @libxsmm_return_success_code(i32 noundef %1758)
  br label %1804

1760:                                             ; preds = %1755
  %1761 = fcmp ult double %.2170719001904, 5.000000e-03
  br i1 %1761, label %1762, label %1804

1762:                                             ; preds = %1760
  %1763 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1764 = call i32 @libxsmm_return_success_code(i32 noundef %1763)
  br label %1804

1765:                                             ; preds = %1739
  br i1 %1741, label %1766, label %1778

1766:                                             ; preds = %1765
  %1767 = fcmp ult double %.2170719001904, 0x3F826E978D4FDF3B
  br i1 %1767, label %1775, label %1768

1768:                                             ; preds = %1766
  %1769 = load i32, ptr %496, align 8, !tbaa !45
  %1770 = icmp ne i32 %1769, 1
  %1771 = fcmp ult double %.2170719001904, 1.800000e-02
  %or.cond1849 = and i1 %1771, %1770
  br i1 %or.cond1849, label %1772, label %1804

1772:                                             ; preds = %1768
  %1773 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1774 = call i32 @libxsmm_return_success_code(i32 noundef %1773)
  br label %1804

1775:                                             ; preds = %1766
  %1776 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1777 = call i32 @libxsmm_return_success_code(i32 noundef %1776)
  br label %1804

1778:                                             ; preds = %1765
  %1779 = add i32 %1740, -1
  %or.cond453 = icmp ult i32 %1779, 2
  br i1 %or.cond453, label %1780, label %1783

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 %1804

1783:                                             ; preds = %1778
  %1784 = fcmp ult double %.2170719001904, 5.000000e-03
  br i1 %1784, label %1785, label %1804

1785:                                             ; preds = %1783
  %1786 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1787 = call i32 @libxsmm_return_success_code(i32 noundef %1786)
  br label %1804

1788:                                             ; preds = %1739
  br i1 %1741, label %1789, label %1794

1789:                                             ; preds = %1788
  %1790 = fcmp ult double %.2170719001904, 7.000000e-04
  br i1 %1790, label %1791, label %1804

1791:                                             ; preds = %1789
  %1792 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1793 = call i32 @libxsmm_return_success_code(i32 noundef %1792)
  br label %1804

1794:                                             ; preds = %1788
  %1795 = add i32 %1740, -1
  %or.cond456 = icmp ult i32 %1795, 2
  br i1 %or.cond456, label %1796, label %1799

1796:                                             ; preds = %1794
  %1797 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1798 = call i32 @libxsmm_return_success_code(i32 noundef %1797)
  br label %1804

1799:                                             ; preds = %1794
  %1800 = fcmp ult double %.2170719001904, 1.200000e-05
  br i1 %1800, label %1801, label %1804

1801:                                             ; preds = %1799
  %1802 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1803 = call i32 @libxsmm_return_success_code(i32 noundef %1802)
  br label %1804

1804:                                             ; preds = %1799, %1789, %1783, %1768, %1760, %1745, %1734, %1726, %1716, %1801, %1796, %1791, %1785, %1780, %1775, %1772, %1762, %1757, %1752, %1749, %1736, %1728, %1723, %1718, %346, %340, %310, %167, %149
  %.01647 = phi i32 [ 1, %346 ], [ %1720, %1718 ], [ %1725, %1723 ], [ %1730, %1728 ], [ %1738, %1736 ], [ %1751, %1749 ], [ %1754, %1752 ], [ %1759, %1757 ], [ %1764, %1762 ], [ %1774, %1772 ], [ %1777, %1775 ], [ %1782, %1780 ], [ %1787, %1785 ], [ %1793, %1791 ], [ %1798, %1796 ], [ %1803, %1801 ], [ 1, %167 ], [ 1, %149 ], [ 1, %310 ], [ 1, %340 ], [ 1, %1716 ], [ 1, %1726 ], [ 1, %1734 ], [ 1, %1745 ], [ 1, %1760 ], [ 1, %1768 ], [ 1, %1783 ], [ 1, %1789 ], [ 1, %1799 ]
  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 %.01647
}

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