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

; 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 [15 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [55 x i8], align 1
@stderr = external global ptr, align 8
@.str.21 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [77 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [23 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.52 = 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 %5381

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

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

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

773:                                              ; preds = %771
  br label %774

774:                                              ; preds = %773, %489
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %775 = call ptr @getenv(ptr noundef @.str.17) #10
  store ptr %775, ptr %50, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %776 = load ptr, ptr %50, align 8, !tbaa !9
  %777 = load ptr, ptr %50, align 8, !tbaa !9
  %778 = call ptr @libxsmm_stristr(ptr noundef %777, ptr noundef @.str.18)
  %779 = icmp eq ptr %776, %778
  br i1 %779, label %785, label %780

780:                                              ; preds = %774
  %781 = load ptr, ptr %50, align 8, !tbaa !9
  %782 = load ptr, ptr %50, align 8, !tbaa !9
  %783 = call ptr @libxsmm_stristr(ptr noundef %782, ptr noundef @.str.19)
  %784 = icmp eq ptr %781, %783
  br label %785

785:                                              ; preds = %780, %774
  %786 = phi i1 [ true, %774 ], [ %784, %780 ]
  %787 = zext i1 %786 to i32
  store i32 %787, ptr %51, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %788 = call i32 @libxsmm_cpuid(ptr noundef null)
  store i32 %788, ptr %52, align 4, !tbaa !5
  %789 = load i32, ptr %51, align 4, !tbaa !5
  %790 = icmp ne i32 %789, 0
  br i1 %790, label %799, label %791

791:                                              ; preds = %785
  %792 = load i32, ptr %52, align 4, !tbaa !5
  %793 = icmp slt i32 %792, 1104
  br i1 %793, label %794, label %799

794:                                              ; preds = %791
  %795 = load i32, ptr %39, align 4, !tbaa !5
  %796 = icmp ne i32 %795, 0
  br i1 %796, label %797, label %799

797:                                              ; preds = %794
  %798 = call i32 (ptr, ...) @printf(ptr noundef @.str.20)
  store i32 0, ptr %39, align 4, !tbaa !5
  br label %799

799:                                              ; preds = %797, %794, %791, %785
  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
  %800 = load i32, ptr %29, align 4, !tbaa !5
  %801 = icmp slt i32 %800, 1
  br i1 %801, label %802, label %803

802:                                              ; preds = %799
  br label %805

803:                                              ; preds = %799
  %804 = load i32, ptr %29, align 4, !tbaa !5
  br label %805

805:                                              ; preds = %803, %802
  %806 = phi i32 [ 1, %802 ], [ %804, %803 ]
  store i32 %806, ptr %29, align 4, !tbaa !5
  %807 = load i32, ptr %30, align 4, !tbaa !5
  %808 = icmp eq i32 %807, 0
  br i1 %808, label %812, label %809

809:                                              ; preds = %805
  %810 = load i32, ptr %30, align 4, !tbaa !5
  %811 = icmp eq i32 %810, 4
  br i1 %811, label %812, label %813

812:                                              ; preds = %809, %805
  br label %815

813:                                              ; preds = %809
  %814 = load i32, ptr %29, align 4, !tbaa !5
  br label %815

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

819:                                              ; preds = %815
  %820 = load i32, ptr %30, align 4, !tbaa !5
  %821 = icmp eq i32 %820, 4
  br i1 %821, label %822, label %823

822:                                              ; preds = %819, %815
  br label %825

823:                                              ; preds = %819
  %824 = load i32, ptr %31, align 4, !tbaa !5
  br label %825

825:                                              ; preds = %823, %822
  %826 = phi i32 [ 0, %822 ], [ %824, %823 ]
  store i32 %826, ptr %31, align 4, !tbaa !5
  %827 = load double, ptr %27, align 8, !tbaa !11
  %828 = fcmp une double %827, 1.000000e+00
  br i1 %828, label %829, label %832

829:                                              ; preds = %825
  %830 = load ptr, ptr @stderr, align 8, !tbaa !9
  %831 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %830, ptr noundef @.str.21) #10
  call void @exit(i32 noundef 1) #12
  unreachable

832:                                              ; preds = %825
  %833 = load double, ptr %28, align 8, !tbaa !11
  %834 = fcmp une double %833, 0.000000e+00
  br i1 %834, label %835, label %841

835:                                              ; preds = %832
  %836 = load double, ptr %28, align 8, !tbaa !11
  %837 = fcmp une double %836, 1.000000e+00
  br i1 %837, label %838, label %841

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

841:                                              ; preds = %835, %832
  %842 = load double, ptr %28, align 8, !tbaa !11
  %843 = fcmp une double %842, 0.000000e+00
  br i1 %843, label %844, label %850

844:                                              ; preds = %841
  %845 = load i32, ptr %26, align 4, !tbaa !5
  %846 = icmp sgt i32 %845, 0
  br i1 %846, label %847, label %850

847:                                              ; preds = %844
  %848 = load ptr, ptr @stderr, align 8, !tbaa !9
  %849 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %848, ptr noundef @.str.23) #10
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  br label %850

850:                                              ; preds = %847, %844, %841
  %851 = load i32, ptr %10, align 4, !tbaa !5
  %852 = icmp eq i32 %851, 0
  br i1 %852, label %853, label %862

853:                                              ; preds = %850
  %854 = load i32, ptr %11, align 4, !tbaa !5
  %855 = icmp eq i32 %854, 0
  br i1 %855, label %856, label %862

856:                                              ; preds = %853
  %857 = load i32, ptr %12, align 4, !tbaa !5
  %858 = icmp eq i32 %857, 0
  br i1 %858, label %859, label %862

859:                                              ; preds = %856
  %860 = load i32, ptr %13, align 4, !tbaa !5
  %861 = icmp eq i32 %860, 0
  br i1 %861, label %1493, label %862

862:                                              ; preds = %859, %856, %853, %850
  %863 = load i32, ptr %10, align 4, !tbaa !5
  %864 = icmp eq i32 %863, 1
  br i1 %864, label %865, label %874

865:                                              ; preds = %862
  %866 = load i32, ptr %11, align 4, !tbaa !5
  %867 = icmp eq i32 %866, 1
  br i1 %867, label %868, label %874

868:                                              ; preds = %865
  %869 = load i32, ptr %12, align 4, !tbaa !5
  %870 = icmp eq i32 %869, 1
  br i1 %870, label %871, label %874

871:                                              ; preds = %868
  %872 = load i32, ptr %13, align 4, !tbaa !5
  %873 = icmp eq i32 %872, 1
  br i1 %873, label %1493, label %874

874:                                              ; preds = %871, %868, %865, %862
  %875 = load i32, ptr %10, align 4, !tbaa !5
  %876 = icmp eq i32 %875, 10
  br i1 %876, label %877, label %886

877:                                              ; preds = %874
  %878 = load i32, ptr %11, align 4, !tbaa !5
  %879 = icmp eq i32 %878, 10
  br i1 %879, label %880, label %886

880:                                              ; preds = %877
  %881 = load i32, ptr %12, align 4, !tbaa !5
  %882 = icmp eq i32 %881, 8
  br i1 %882, label %883, label %886

883:                                              ; preds = %880
  %884 = load i32, ptr %13, align 4, !tbaa !5
  %885 = icmp eq i32 %884, 8
  br i1 %885, label %1493, label %886

886:                                              ; preds = %883, %880, %877, %874
  %887 = load i32, ptr %10, align 4, !tbaa !5
  %888 = icmp eq i32 %887, 13
  br i1 %888, label %889, label %898

889:                                              ; preds = %886
  %890 = load i32, ptr %11, align 4, !tbaa !5
  %891 = icmp eq i32 %890, 13
  br i1 %891, label %892, label %898

892:                                              ; preds = %889
  %893 = load i32, ptr %12, align 4, !tbaa !5
  %894 = icmp eq i32 %893, 8
  br i1 %894, label %895, label %898

895:                                              ; preds = %892
  %896 = load i32, ptr %13, align 4, !tbaa !5
  %897 = icmp eq i32 %896, 8
  br i1 %897, label %1493, label %898

898:                                              ; preds = %895, %892, %889, %886
  %899 = load i32, ptr %10, align 4, !tbaa !5
  %900 = icmp eq i32 %899, 12
  br i1 %900, label %901, label %910

901:                                              ; preds = %898
  %902 = load i32, ptr %11, align 4, !tbaa !5
  %903 = icmp eq i32 %902, 12
  br i1 %903, label %904, label %910

904:                                              ; preds = %901
  %905 = load i32, ptr %12, align 4, !tbaa !5
  %906 = icmp eq i32 %905, 8
  br i1 %906, label %907, label %910

907:                                              ; preds = %904
  %908 = load i32, ptr %13, align 4, !tbaa !5
  %909 = icmp eq i32 %908, 8
  br i1 %909, label %1493, label %910

910:                                              ; preds = %907, %904, %901, %898
  %911 = load i32, ptr %10, align 4, !tbaa !5
  %912 = icmp eq i32 %911, 13
  br i1 %912, label %913, label %922

913:                                              ; preds = %910
  %914 = load i32, ptr %11, align 4, !tbaa !5
  %915 = icmp eq i32 %914, 12
  br i1 %915, label %916, label %922

916:                                              ; preds = %913
  %917 = load i32, ptr %12, align 4, !tbaa !5
  %918 = icmp eq i32 %917, 8
  br i1 %918, label %919, label %922

919:                                              ; preds = %916
  %920 = load i32, ptr %13, align 4, !tbaa !5
  %921 = icmp eq i32 %920, 8
  br i1 %921, label %1493, label %922

922:                                              ; preds = %919, %916, %913, %910
  %923 = load i32, ptr %10, align 4, !tbaa !5
  %924 = icmp eq i32 %923, 12
  br i1 %924, label %925, label %934

925:                                              ; preds = %922
  %926 = load i32, ptr %11, align 4, !tbaa !5
  %927 = icmp eq i32 %926, 13
  br i1 %927, label %928, label %934

928:                                              ; preds = %925
  %929 = load i32, ptr %12, align 4, !tbaa !5
  %930 = icmp eq i32 %929, 8
  br i1 %930, label %931, label %934

931:                                              ; preds = %928
  %932 = load i32, ptr %13, align 4, !tbaa !5
  %933 = icmp eq i32 %932, 8
  br i1 %933, label %1493, label %934

934:                                              ; preds = %931, %928, %925, %922
  %935 = load i32, ptr %10, align 4, !tbaa !5
  %936 = icmp eq i32 %935, 13
  br i1 %936, label %937, label %946

937:                                              ; preds = %934
  %938 = load i32, ptr %11, align 4, !tbaa !5
  %939 = icmp eq i32 %938, 13
  br i1 %939, label %940, label %946

940:                                              ; preds = %937
  %941 = load i32, ptr %12, align 4, !tbaa !5
  %942 = icmp eq i32 %941, 8
  br i1 %942, label %943, label %946

943:                                              ; preds = %940
  %944 = load i32, ptr %13, align 4, !tbaa !5
  %945 = icmp eq i32 %944, 1
  br i1 %945, label %1493, label %946

946:                                              ; preds = %943, %940, %937, %934
  %947 = load i32, ptr %10, align 4, !tbaa !5
  %948 = icmp eq i32 %947, 12
  br i1 %948, label %949, label %958

949:                                              ; preds = %946
  %950 = load i32, ptr %11, align 4, !tbaa !5
  %951 = icmp eq i32 %950, 12
  br i1 %951, label %952, label %958

952:                                              ; preds = %949
  %953 = load i32, ptr %12, align 4, !tbaa !5
  %954 = icmp eq i32 %953, 8
  br i1 %954, label %955, label %958

955:                                              ; preds = %952
  %956 = load i32, ptr %13, align 4, !tbaa !5
  %957 = icmp eq i32 %956, 1
  br i1 %957, label %1493, label %958

958:                                              ; preds = %955, %952, %949, %946
  %959 = load i32, ptr %10, align 4, !tbaa !5
  %960 = icmp eq i32 %959, 12
  br i1 %960, label %961, label %970

961:                                              ; preds = %958
  %962 = load i32, ptr %11, align 4, !tbaa !5
  %963 = icmp eq i32 %962, 12
  br i1 %963, label %964, label %970

964:                                              ; preds = %961
  %965 = load i32, ptr %12, align 4, !tbaa !5
  %966 = icmp eq i32 %965, 8
  br i1 %966, label %967, label %970

967:                                              ; preds = %964
  %968 = load i32, ptr %13, align 4, !tbaa !5
  %969 = icmp eq i32 %968, 2
  br i1 %969, label %1493, label %970

970:                                              ; preds = %967, %964, %961, %958
  %971 = load i32, ptr %10, align 4, !tbaa !5
  %972 = icmp eq i32 %971, 13
  br i1 %972, label %973, label %982

973:                                              ; preds = %970
  %974 = load i32, ptr %11, align 4, !tbaa !5
  %975 = icmp eq i32 %974, 12
  br i1 %975, label %976, label %982

976:                                              ; preds = %973
  %977 = load i32, ptr %12, align 4, !tbaa !5
  %978 = icmp eq i32 %977, 8
  br i1 %978, label %979, label %982

979:                                              ; preds = %976
  %980 = load i32, ptr %13, align 4, !tbaa !5
  %981 = icmp eq i32 %980, 1
  br i1 %981, label %1493, label %982

982:                                              ; preds = %979, %976, %973, %970
  %983 = load i32, ptr %10, align 4, !tbaa !5
  %984 = icmp eq i32 %983, 12
  br i1 %984, label %985, label %994

985:                                              ; preds = %982
  %986 = load i32, ptr %11, align 4, !tbaa !5
  %987 = icmp eq i32 %986, 13
  br i1 %987, label %988, label %994

988:                                              ; preds = %985
  %989 = load i32, ptr %12, align 4, !tbaa !5
  %990 = icmp eq i32 %989, 8
  br i1 %990, label %991, label %994

991:                                              ; preds = %988
  %992 = load i32, ptr %13, align 4, !tbaa !5
  %993 = icmp eq i32 %992, 1
  br i1 %993, label %1493, label %994

994:                                              ; preds = %991, %988, %985, %982
  %995 = load i32, ptr %10, align 4, !tbaa !5
  %996 = icmp eq i32 %995, 12
  br i1 %996, label %997, label %1006

997:                                              ; preds = %994
  %998 = load i32, ptr %11, align 4, !tbaa !5
  %999 = icmp eq i32 %998, 2
  br i1 %999, label %1000, label %1006

1000:                                             ; preds = %997
  %1001 = load i32, ptr %12, align 4, !tbaa !5
  %1002 = icmp eq i32 %1001, 1
  br i1 %1002, label %1003, label %1006

1003:                                             ; preds = %1000
  %1004 = load i32, ptr %13, align 4, !tbaa !5
  %1005 = icmp eq i32 %1004, 2
  br i1 %1005, label %1493, label %1006

1006:                                             ; preds = %1003, %1000, %997, %994
  %1007 = load i32, ptr %10, align 4, !tbaa !5
  %1008 = icmp eq i32 %1007, 12
  br i1 %1008, label %1009, label %1018

1009:                                             ; preds = %1006
  %1010 = load i32, ptr %11, align 4, !tbaa !5
  %1011 = icmp eq i32 %1010, 2
  br i1 %1011, label %1012, label %1018

1012:                                             ; preds = %1009
  %1013 = load i32, ptr %12, align 4, !tbaa !5
  %1014 = icmp eq i32 %1013, 1
  br i1 %1014, label %1015, label %1018

1015:                                             ; preds = %1012
  %1016 = load i32, ptr %13, align 4, !tbaa !5
  %1017 = icmp eq i32 %1016, 1
  br i1 %1017, label %1493, label %1018

1018:                                             ; preds = %1015, %1012, %1009, %1006
  %1019 = load i32, ptr %10, align 4, !tbaa !5
  %1020 = icmp eq i32 %1019, 12
  br i1 %1020, label %1021, label %1030

1021:                                             ; preds = %1018
  %1022 = load i32, ptr %11, align 4, !tbaa !5
  %1023 = icmp eq i32 %1022, 1
  br i1 %1023, label %1024, label %1030

1024:                                             ; preds = %1021
  %1025 = load i32, ptr %12, align 4, !tbaa !5
  %1026 = icmp eq i32 %1025, 1
  br i1 %1026, label %1027, label %1030

1027:                                             ; preds = %1024
  %1028 = load i32, ptr %13, align 4, !tbaa !5
  %1029 = icmp eq i32 %1028, 1
  br i1 %1029, label %1493, label %1030

1030:                                             ; preds = %1027, %1024, %1021, %1018
  %1031 = load i32, ptr %10, align 4, !tbaa !5
  %1032 = icmp eq i32 %1031, 4
  br i1 %1032, label %1033, label %1042

1033:                                             ; preds = %1030
  %1034 = load i32, ptr %11, align 4, !tbaa !5
  %1035 = icmp eq i32 %1034, 2
  br i1 %1035, label %1036, label %1042

1036:                                             ; preds = %1033
  %1037 = load i32, ptr %12, align 4, !tbaa !5
  %1038 = icmp eq i32 %1037, 1
  br i1 %1038, label %1039, label %1042

1039:                                             ; preds = %1036
  %1040 = load i32, ptr %13, align 4, !tbaa !5
  %1041 = icmp eq i32 %1040, 2
  br i1 %1041, label %1493, label %1042

1042:                                             ; preds = %1039, %1036, %1033, %1030
  %1043 = load i32, ptr %10, align 4, !tbaa !5
  %1044 = icmp eq i32 %1043, 4
  br i1 %1044, label %1045, label %1054

1045:                                             ; preds = %1042
  %1046 = load i32, ptr %11, align 4, !tbaa !5
  %1047 = icmp eq i32 %1046, 2
  br i1 %1047, label %1048, label %1054

1048:                                             ; preds = %1045
  %1049 = load i32, ptr %12, align 4, !tbaa !5
  %1050 = icmp eq i32 %1049, 1
  br i1 %1050, label %1051, label %1054

1051:                                             ; preds = %1048
  %1052 = load i32, ptr %13, align 4, !tbaa !5
  %1053 = icmp eq i32 %1052, 1
  br i1 %1053, label %1493, label %1054

1054:                                             ; preds = %1051, %1048, %1045, %1042
  %1055 = load i32, ptr %10, align 4, !tbaa !5
  %1056 = icmp eq i32 %1055, 5
  br i1 %1056, label %1057, label %1066

1057:                                             ; preds = %1054
  %1058 = load i32, ptr %11, align 4, !tbaa !5
  %1059 = icmp eq i32 %1058, 2
  br i1 %1059, label %1060, label %1066

1060:                                             ; preds = %1057
  %1061 = load i32, ptr %12, align 4, !tbaa !5
  %1062 = icmp eq i32 %1061, 1
  br i1 %1062, label %1063, label %1066

1063:                                             ; preds = %1060
  %1064 = load i32, ptr %13, align 4, !tbaa !5
  %1065 = icmp eq i32 %1064, 2
  br i1 %1065, label %1493, label %1066

1066:                                             ; preds = %1063, %1060, %1057, %1054
  %1067 = load i32, ptr %10, align 4, !tbaa !5
  %1068 = icmp eq i32 %1067, 5
  br i1 %1068, label %1069, label %1078

1069:                                             ; preds = %1066
  %1070 = load i32, ptr %11, align 4, !tbaa !5
  %1071 = icmp eq i32 %1070, 2
  br i1 %1071, label %1072, label %1078

1072:                                             ; preds = %1069
  %1073 = load i32, ptr %12, align 4, !tbaa !5
  %1074 = icmp eq i32 %1073, 1
  br i1 %1074, label %1075, label %1078

1075:                                             ; preds = %1072
  %1076 = load i32, ptr %13, align 4, !tbaa !5
  %1077 = icmp eq i32 %1076, 1
  br i1 %1077, label %1493, label %1078

1078:                                             ; preds = %1075, %1072, %1069, %1066
  %1079 = load i32, ptr %10, align 4, !tbaa !5
  %1080 = icmp eq i32 %1079, 13
  br i1 %1080, label %1081, label %1090

1081:                                             ; preds = %1078
  %1082 = load i32, ptr %11, align 4, !tbaa !5
  %1083 = icmp eq i32 %1082, 2
  br i1 %1083, label %1084, label %1090

1084:                                             ; preds = %1081
  %1085 = load i32, ptr %12, align 4, !tbaa !5
  %1086 = icmp eq i32 %1085, 1
  br i1 %1086, label %1087, label %1090

1087:                                             ; preds = %1084
  %1088 = load i32, ptr %13, align 4, !tbaa !5
  %1089 = icmp eq i32 %1088, 2
  br i1 %1089, label %1493, label %1090

1090:                                             ; preds = %1087, %1084, %1081, %1078
  %1091 = load i32, ptr %10, align 4, !tbaa !5
  %1092 = icmp eq i32 %1091, 13
  br i1 %1092, label %1093, label %1102

1093:                                             ; preds = %1090
  %1094 = load i32, ptr %11, align 4, !tbaa !5
  %1095 = icmp eq i32 %1094, 2
  br i1 %1095, label %1096, label %1102

1096:                                             ; preds = %1093
  %1097 = load i32, ptr %12, align 4, !tbaa !5
  %1098 = icmp eq i32 %1097, 1
  br i1 %1098, label %1099, label %1102

1099:                                             ; preds = %1096
  %1100 = load i32, ptr %13, align 4, !tbaa !5
  %1101 = icmp eq i32 %1100, 1
  br i1 %1101, label %1493, label %1102

1102:                                             ; preds = %1099, %1096, %1093, %1090
  %1103 = load i32, ptr %10, align 4, !tbaa !5
  %1104 = icmp eq i32 %1103, 4
  br i1 %1104, label %1105, label %1114

1105:                                             ; preds = %1102
  %1106 = load i32, ptr %11, align 4, !tbaa !5
  %1107 = icmp eq i32 %1106, 3
  br i1 %1107, label %1108, label %1114

1108:                                             ; preds = %1105
  %1109 = load i32, ptr %12, align 4, !tbaa !5
  %1110 = icmp eq i32 %1109, 3
  br i1 %1110, label %1111, label %1114

1111:                                             ; preds = %1108
  %1112 = load i32, ptr %13, align 4, !tbaa !5
  %1113 = icmp eq i32 %1112, 3
  br i1 %1113, label %1493, label %1114

1114:                                             ; preds = %1111, %1108, %1105, %1102
  %1115 = load i32, ptr %10, align 4, !tbaa !5
  %1116 = icmp eq i32 %1115, 4
  br i1 %1116, label %1117, label %1126

1117:                                             ; preds = %1114
  %1118 = load i32, ptr %11, align 4, !tbaa !5
  %1119 = icmp eq i32 %1118, 3
  br i1 %1119, label %1120, label %1126

1120:                                             ; preds = %1117
  %1121 = load i32, ptr %12, align 4, !tbaa !5
  %1122 = icmp eq i32 %1121, 1
  br i1 %1122, label %1123, label %1126

1123:                                             ; preds = %1120
  %1124 = load i32, ptr %13, align 4, !tbaa !5
  %1125 = icmp eq i32 %1124, 3
  br i1 %1125, label %1493, label %1126

1126:                                             ; preds = %1123, %1120, %1117, %1114
  %1127 = load i32, ptr %10, align 4, !tbaa !5
  %1128 = icmp eq i32 %1127, 4
  br i1 %1128, label %1129, label %1138

1129:                                             ; preds = %1126
  %1130 = load i32, ptr %11, align 4, !tbaa !5
  %1131 = icmp eq i32 %1130, 3
  br i1 %1131, label %1132, label %1138

1132:                                             ; preds = %1129
  %1133 = load i32, ptr %12, align 4, !tbaa !5
  %1134 = icmp eq i32 %1133, 14
  br i1 %1134, label %1135, label %1138

1135:                                             ; preds = %1132
  %1136 = load i32, ptr %13, align 4, !tbaa !5
  %1137 = icmp eq i32 %1136, 3
  br i1 %1137, label %1493, label %1138

1138:                                             ; preds = %1135, %1132, %1129, %1126
  %1139 = load i32, ptr %10, align 4, !tbaa !5
  %1140 = icmp eq i32 %1139, 4
  br i1 %1140, label %1141, label %1150

1141:                                             ; preds = %1138
  %1142 = load i32, ptr %11, align 4, !tbaa !5
  %1143 = icmp eq i32 %1142, 3
  br i1 %1143, label %1144, label %1150

1144:                                             ; preds = %1141
  %1145 = load i32, ptr %12, align 4, !tbaa !5
  %1146 = icmp eq i32 %1145, 3
  br i1 %1146, label %1147, label %1150

1147:                                             ; preds = %1144
  %1148 = load i32, ptr %13, align 4, !tbaa !5
  %1149 = icmp eq i32 %1148, 1
  br i1 %1149, label %1493, label %1150

1150:                                             ; preds = %1147, %1144, %1141, %1138
  %1151 = load i32, ptr %10, align 4, !tbaa !5
  %1152 = icmp eq i32 %1151, 4
  br i1 %1152, label %1153, label %1162

1153:                                             ; preds = %1150
  %1154 = load i32, ptr %11, align 4, !tbaa !5
  %1155 = icmp eq i32 %1154, 3
  br i1 %1155, label %1156, label %1162

1156:                                             ; preds = %1153
  %1157 = load i32, ptr %12, align 4, !tbaa !5
  %1158 = icmp eq i32 %1157, 1
  br i1 %1158, label %1159, label %1162

1159:                                             ; preds = %1156
  %1160 = load i32, ptr %13, align 4, !tbaa !5
  %1161 = icmp eq i32 %1160, 1
  br i1 %1161, label %1493, label %1162

1162:                                             ; preds = %1159, %1156, %1153, %1150
  %1163 = load i32, ptr %10, align 4, !tbaa !5
  %1164 = icmp eq i32 %1163, 4
  br i1 %1164, label %1165, label %1174

1165:                                             ; preds = %1162
  %1166 = load i32, ptr %11, align 4, !tbaa !5
  %1167 = icmp eq i32 %1166, 3
  br i1 %1167, label %1168, label %1174

1168:                                             ; preds = %1165
  %1169 = load i32, ptr %12, align 4, !tbaa !5
  %1170 = icmp eq i32 %1169, 14
  br i1 %1170, label %1171, label %1174

1171:                                             ; preds = %1168
  %1172 = load i32, ptr %13, align 4, !tbaa !5
  %1173 = icmp eq i32 %1172, 1
  br i1 %1173, label %1493, label %1174

1174:                                             ; preds = %1171, %1168, %1165, %1162
  %1175 = load i32, ptr %10, align 4, !tbaa !5
  %1176 = icmp eq i32 %1175, 12
  br i1 %1176, label %1177, label %1186

1177:                                             ; preds = %1174
  %1178 = load i32, ptr %11, align 4, !tbaa !5
  %1179 = icmp eq i32 %1178, 3
  br i1 %1179, label %1180, label %1186

1180:                                             ; preds = %1177
  %1181 = load i32, ptr %12, align 4, !tbaa !5
  %1182 = icmp eq i32 %1181, 3
  br i1 %1182, label %1183, label %1186

1183:                                             ; preds = %1180
  %1184 = load i32, ptr %13, align 4, !tbaa !5
  %1185 = icmp eq i32 %1184, 3
  br i1 %1185, label %1493, label %1186

1186:                                             ; preds = %1183, %1180, %1177, %1174
  %1187 = load i32, ptr %10, align 4, !tbaa !5
  %1188 = icmp eq i32 %1187, 12
  br i1 %1188, label %1189, label %1198

1189:                                             ; preds = %1186
  %1190 = load i32, ptr %11, align 4, !tbaa !5
  %1191 = icmp eq i32 %1190, 3
  br i1 %1191, label %1192, label %1198

1192:                                             ; preds = %1189
  %1193 = load i32, ptr %12, align 4, !tbaa !5
  %1194 = icmp eq i32 %1193, 1
  br i1 %1194, label %1195, label %1198

1195:                                             ; preds = %1192
  %1196 = load i32, ptr %13, align 4, !tbaa !5
  %1197 = icmp eq i32 %1196, 3
  br i1 %1197, label %1493, label %1198

1198:                                             ; preds = %1195, %1192, %1189, %1186
  %1199 = load i32, ptr %10, align 4, !tbaa !5
  %1200 = icmp eq i32 %1199, 12
  br i1 %1200, label %1201, label %1210

1201:                                             ; preds = %1198
  %1202 = load i32, ptr %11, align 4, !tbaa !5
  %1203 = icmp eq i32 %1202, 3
  br i1 %1203, label %1204, label %1210

1204:                                             ; preds = %1201
  %1205 = load i32, ptr %12, align 4, !tbaa !5
  %1206 = icmp eq i32 %1205, 14
  br i1 %1206, label %1207, label %1210

1207:                                             ; preds = %1204
  %1208 = load i32, ptr %13, align 4, !tbaa !5
  %1209 = icmp eq i32 %1208, 3
  br i1 %1209, label %1493, label %1210

1210:                                             ; preds = %1207, %1204, %1201, %1198
  %1211 = load i32, ptr %10, align 4, !tbaa !5
  %1212 = icmp eq i32 %1211, 12
  br i1 %1212, label %1213, label %1222

1213:                                             ; preds = %1210
  %1214 = load i32, ptr %11, align 4, !tbaa !5
  %1215 = icmp eq i32 %1214, 3
  br i1 %1215, label %1216, label %1222

1216:                                             ; preds = %1213
  %1217 = load i32, ptr %12, align 4, !tbaa !5
  %1218 = icmp eq i32 %1217, 3
  br i1 %1218, label %1219, label %1222

1219:                                             ; preds = %1216
  %1220 = load i32, ptr %13, align 4, !tbaa !5
  %1221 = icmp eq i32 %1220, 1
  br i1 %1221, label %1493, label %1222

1222:                                             ; preds = %1219, %1216, %1213, %1210
  %1223 = load i32, ptr %10, align 4, !tbaa !5
  %1224 = icmp eq i32 %1223, 12
  br i1 %1224, label %1225, label %1234

1225:                                             ; preds = %1222
  %1226 = load i32, ptr %11, align 4, !tbaa !5
  %1227 = icmp eq i32 %1226, 3
  br i1 %1227, label %1228, label %1234

1228:                                             ; preds = %1225
  %1229 = load i32, ptr %12, align 4, !tbaa !5
  %1230 = icmp eq i32 %1229, 1
  br i1 %1230, label %1231, label %1234

1231:                                             ; preds = %1228
  %1232 = load i32, ptr %13, align 4, !tbaa !5
  %1233 = icmp eq i32 %1232, 1
  br i1 %1233, label %1493, label %1234

1234:                                             ; preds = %1231, %1228, %1225, %1222
  %1235 = load i32, ptr %10, align 4, !tbaa !5
  %1236 = icmp eq i32 %1235, 12
  br i1 %1236, label %1237, label %1246

1237:                                             ; preds = %1234
  %1238 = load i32, ptr %11, align 4, !tbaa !5
  %1239 = icmp eq i32 %1238, 3
  br i1 %1239, label %1240, label %1246

1240:                                             ; preds = %1237
  %1241 = load i32, ptr %12, align 4, !tbaa !5
  %1242 = icmp eq i32 %1241, 14
  br i1 %1242, label %1243, label %1246

1243:                                             ; preds = %1240
  %1244 = load i32, ptr %13, align 4, !tbaa !5
  %1245 = icmp eq i32 %1244, 1
  br i1 %1245, label %1493, label %1246

1246:                                             ; preds = %1243, %1240, %1237, %1234
  %1247 = load i32, ptr %10, align 4, !tbaa !5
  %1248 = icmp eq i32 %1247, 13
  br i1 %1248, label %1249, label %1258

1249:                                             ; preds = %1246
  %1250 = load i32, ptr %11, align 4, !tbaa !5
  %1251 = icmp eq i32 %1250, 3
  br i1 %1251, label %1252, label %1258

1252:                                             ; preds = %1249
  %1253 = load i32, ptr %12, align 4, !tbaa !5
  %1254 = icmp eq i32 %1253, 3
  br i1 %1254, label %1255, label %1258

1255:                                             ; preds = %1252
  %1256 = load i32, ptr %13, align 4, !tbaa !5
  %1257 = icmp eq i32 %1256, 3
  br i1 %1257, label %1493, label %1258

1258:                                             ; preds = %1255, %1252, %1249, %1246
  %1259 = load i32, ptr %10, align 4, !tbaa !5
  %1260 = icmp eq i32 %1259, 13
  br i1 %1260, label %1261, label %1270

1261:                                             ; preds = %1258
  %1262 = load i32, ptr %11, align 4, !tbaa !5
  %1263 = icmp eq i32 %1262, 3
  br i1 %1263, label %1264, label %1270

1264:                                             ; preds = %1261
  %1265 = load i32, ptr %12, align 4, !tbaa !5
  %1266 = icmp eq i32 %1265, 1
  br i1 %1266, label %1267, label %1270

1267:                                             ; preds = %1264
  %1268 = load i32, ptr %13, align 4, !tbaa !5
  %1269 = icmp eq i32 %1268, 3
  br i1 %1269, label %1493, label %1270

1270:                                             ; preds = %1267, %1264, %1261, %1258
  %1271 = load i32, ptr %10, align 4, !tbaa !5
  %1272 = icmp eq i32 %1271, 13
  br i1 %1272, label %1273, label %1282

1273:                                             ; preds = %1270
  %1274 = load i32, ptr %11, align 4, !tbaa !5
  %1275 = icmp eq i32 %1274, 3
  br i1 %1275, label %1276, label %1282

1276:                                             ; preds = %1273
  %1277 = load i32, ptr %12, align 4, !tbaa !5
  %1278 = icmp eq i32 %1277, 14
  br i1 %1278, label %1279, label %1282

1279:                                             ; preds = %1276
  %1280 = load i32, ptr %13, align 4, !tbaa !5
  %1281 = icmp eq i32 %1280, 3
  br i1 %1281, label %1493, label %1282

1282:                                             ; preds = %1279, %1276, %1273, %1270
  %1283 = load i32, ptr %10, align 4, !tbaa !5
  %1284 = icmp eq i32 %1283, 13
  br i1 %1284, label %1285, label %1294

1285:                                             ; preds = %1282
  %1286 = load i32, ptr %11, align 4, !tbaa !5
  %1287 = icmp eq i32 %1286, 3
  br i1 %1287, label %1288, label %1294

1288:                                             ; preds = %1285
  %1289 = load i32, ptr %12, align 4, !tbaa !5
  %1290 = icmp eq i32 %1289, 3
  br i1 %1290, label %1291, label %1294

1291:                                             ; preds = %1288
  %1292 = load i32, ptr %13, align 4, !tbaa !5
  %1293 = icmp eq i32 %1292, 1
  br i1 %1293, label %1493, label %1294

1294:                                             ; preds = %1291, %1288, %1285, %1282
  %1295 = load i32, ptr %10, align 4, !tbaa !5
  %1296 = icmp eq i32 %1295, 13
  br i1 %1296, label %1297, label %1306

1297:                                             ; preds = %1294
  %1298 = load i32, ptr %11, align 4, !tbaa !5
  %1299 = icmp eq i32 %1298, 3
  br i1 %1299, label %1300, label %1306

1300:                                             ; preds = %1297
  %1301 = load i32, ptr %12, align 4, !tbaa !5
  %1302 = icmp eq i32 %1301, 1
  br i1 %1302, label %1303, label %1306

1303:                                             ; preds = %1300
  %1304 = load i32, ptr %13, align 4, !tbaa !5
  %1305 = icmp eq i32 %1304, 1
  br i1 %1305, label %1493, label %1306

1306:                                             ; preds = %1303, %1300, %1297, %1294
  %1307 = load i32, ptr %10, align 4, !tbaa !5
  %1308 = icmp eq i32 %1307, 13
  br i1 %1308, label %1309, label %1318

1309:                                             ; preds = %1306
  %1310 = load i32, ptr %11, align 4, !tbaa !5
  %1311 = icmp eq i32 %1310, 3
  br i1 %1311, label %1312, label %1318

1312:                                             ; preds = %1309
  %1313 = load i32, ptr %12, align 4, !tbaa !5
  %1314 = icmp eq i32 %1313, 14
  br i1 %1314, label %1315, label %1318

1315:                                             ; preds = %1312
  %1316 = load i32, ptr %13, align 4, !tbaa !5
  %1317 = icmp eq i32 %1316, 1
  br i1 %1317, label %1493, label %1318

1318:                                             ; preds = %1315, %1312, %1309, %1306
  %1319 = load i32, ptr %10, align 4, !tbaa !5
  %1320 = icmp eq i32 %1319, 3
  br i1 %1320, label %1321, label %1330

1321:                                             ; preds = %1318
  %1322 = load i32, ptr %11, align 4, !tbaa !5
  %1323 = icmp eq i32 %1322, 3
  br i1 %1323, label %1324, label %1330

1324:                                             ; preds = %1321
  %1325 = load i32, ptr %12, align 4, !tbaa !5
  %1326 = icmp eq i32 %1325, 3
  br i1 %1326, label %1327, label %1330

1327:                                             ; preds = %1324
  %1328 = load i32, ptr %13, align 4, !tbaa !5
  %1329 = icmp eq i32 %1328, 3
  br i1 %1329, label %1493, label %1330

1330:                                             ; preds = %1327, %1324, %1321, %1318
  %1331 = load i32, ptr %10, align 4, !tbaa !5
  %1332 = icmp eq i32 %1331, 3
  br i1 %1332, label %1333, label %1342

1333:                                             ; preds = %1330
  %1334 = load i32, ptr %11, align 4, !tbaa !5
  %1335 = icmp eq i32 %1334, 3
  br i1 %1335, label %1336, label %1342

1336:                                             ; preds = %1333
  %1337 = load i32, ptr %12, align 4, !tbaa !5
  %1338 = icmp eq i32 %1337, 1
  br i1 %1338, label %1339, label %1342

1339:                                             ; preds = %1336
  %1340 = load i32, ptr %13, align 4, !tbaa !5
  %1341 = icmp eq i32 %1340, 3
  br i1 %1341, label %1493, label %1342

1342:                                             ; preds = %1339, %1336, %1333, %1330
  %1343 = load i32, ptr %10, align 4, !tbaa !5
  %1344 = icmp eq i32 %1343, 3
  br i1 %1344, label %1345, label %1354

1345:                                             ; preds = %1342
  %1346 = load i32, ptr %11, align 4, !tbaa !5
  %1347 = icmp eq i32 %1346, 3
  br i1 %1347, label %1348, label %1354

1348:                                             ; preds = %1345
  %1349 = load i32, ptr %12, align 4, !tbaa !5
  %1350 = icmp eq i32 %1349, 14
  br i1 %1350, label %1351, label %1354

1351:                                             ; preds = %1348
  %1352 = load i32, ptr %13, align 4, !tbaa !5
  %1353 = icmp eq i32 %1352, 3
  br i1 %1353, label %1493, label %1354

1354:                                             ; preds = %1351, %1348, %1345, %1342
  %1355 = load i32, ptr %10, align 4, !tbaa !5
  %1356 = icmp eq i32 %1355, 3
  br i1 %1356, label %1357, label %1366

1357:                                             ; preds = %1354
  %1358 = load i32, ptr %11, align 4, !tbaa !5
  %1359 = icmp eq i32 %1358, 3
  br i1 %1359, label %1360, label %1366

1360:                                             ; preds = %1357
  %1361 = load i32, ptr %12, align 4, !tbaa !5
  %1362 = icmp eq i32 %1361, 3
  br i1 %1362, label %1363, label %1366

1363:                                             ; preds = %1360
  %1364 = load i32, ptr %13, align 4, !tbaa !5
  %1365 = icmp eq i32 %1364, 1
  br i1 %1365, label %1493, label %1366

1366:                                             ; preds = %1363, %1360, %1357, %1354
  %1367 = load i32, ptr %10, align 4, !tbaa !5
  %1368 = icmp eq i32 %1367, 3
  br i1 %1368, label %1369, label %1378

1369:                                             ; preds = %1366
  %1370 = load i32, ptr %11, align 4, !tbaa !5
  %1371 = icmp eq i32 %1370, 3
  br i1 %1371, label %1372, label %1378

1372:                                             ; preds = %1369
  %1373 = load i32, ptr %12, align 4, !tbaa !5
  %1374 = icmp eq i32 %1373, 3
  br i1 %1374, label %1375, label %1378

1375:                                             ; preds = %1372
  %1376 = load i32, ptr %13, align 4, !tbaa !5
  %1377 = icmp eq i32 %1376, 3
  br i1 %1377, label %1493, label %1378

1378:                                             ; preds = %1375, %1372, %1369, %1366
  %1379 = load i32, ptr %10, align 4, !tbaa !5
  %1380 = icmp eq i32 %1379, 3
  br i1 %1380, label %1381, label %1390

1381:                                             ; preds = %1378
  %1382 = load i32, ptr %11, align 4, !tbaa !5
  %1383 = icmp eq i32 %1382, 3
  br i1 %1383, label %1384, label %1390

1384:                                             ; preds = %1381
  %1385 = load i32, ptr %12, align 4, !tbaa !5
  %1386 = icmp eq i32 %1385, 1
  br i1 %1386, label %1387, label %1390

1387:                                             ; preds = %1384
  %1388 = load i32, ptr %13, align 4, !tbaa !5
  %1389 = icmp eq i32 %1388, 1
  br i1 %1389, label %1493, label %1390

1390:                                             ; preds = %1387, %1384, %1381, %1378
  %1391 = load i32, ptr %10, align 4, !tbaa !5
  %1392 = icmp eq i32 %1391, 3
  br i1 %1392, label %1393, label %1402

1393:                                             ; preds = %1390
  %1394 = load i32, ptr %11, align 4, !tbaa !5
  %1395 = icmp eq i32 %1394, 3
  br i1 %1395, label %1396, label %1402

1396:                                             ; preds = %1393
  %1397 = load i32, ptr %12, align 4, !tbaa !5
  %1398 = icmp eq i32 %1397, 14
  br i1 %1398, label %1399, label %1402

1399:                                             ; preds = %1396
  %1400 = load i32, ptr %13, align 4, !tbaa !5
  %1401 = icmp eq i32 %1400, 1
  br i1 %1401, label %1493, label %1402

1402:                                             ; preds = %1399, %1396, %1393, %1390
  %1403 = load i32, ptr %10, align 4, !tbaa !5
  %1404 = icmp eq i32 %1403, 2
  br i1 %1404, label %1405, label %1414

1405:                                             ; preds = %1402
  %1406 = load i32, ptr %11, align 4, !tbaa !5
  %1407 = icmp eq i32 %1406, 2
  br i1 %1407, label %1408, label %1414

1408:                                             ; preds = %1405
  %1409 = load i32, ptr %12, align 4, !tbaa !5
  %1410 = icmp eq i32 %1409, 1
  br i1 %1410, label %1411, label %1414

1411:                                             ; preds = %1408
  %1412 = load i32, ptr %13, align 4, !tbaa !5
  %1413 = icmp eq i32 %1412, 1
  br i1 %1413, label %1493, label %1414

1414:                                             ; preds = %1411, %1408, %1405, %1402
  %1415 = load i32, ptr %10, align 4, !tbaa !5
  %1416 = icmp eq i32 %1415, 2
  br i1 %1416, label %1417, label %1426

1417:                                             ; preds = %1414
  %1418 = load i32, ptr %11, align 4, !tbaa !5
  %1419 = icmp eq i32 %1418, 2
  br i1 %1419, label %1420, label %1426

1420:                                             ; preds = %1417
  %1421 = load i32, ptr %12, align 4, !tbaa !5
  %1422 = icmp eq i32 %1421, 1
  br i1 %1422, label %1423, label %1426

1423:                                             ; preds = %1420
  %1424 = load i32, ptr %13, align 4, !tbaa !5
  %1425 = icmp eq i32 %1424, 2
  br i1 %1425, label %1493, label %1426

1426:                                             ; preds = %1423, %1420, %1417, %1414
  %1427 = load i32, ptr %10, align 4, !tbaa !5
  %1428 = icmp eq i32 %1427, 4
  br i1 %1428, label %1429, label %1438

1429:                                             ; preds = %1426
  %1430 = load i32, ptr %11, align 4, !tbaa !5
  %1431 = icmp eq i32 %1430, 4
  br i1 %1431, label %1432, label %1438

1432:                                             ; preds = %1429
  %1433 = load i32, ptr %12, align 4, !tbaa !5
  %1434 = icmp eq i32 %1433, 1
  br i1 %1434, label %1435, label %1438

1435:                                             ; preds = %1432
  %1436 = load i32, ptr %13, align 4, !tbaa !5
  %1437 = icmp eq i32 %1436, 1
  br i1 %1437, label %1493, label %1438

1438:                                             ; preds = %1435, %1432, %1429, %1426
  %1439 = load i32, ptr %10, align 4, !tbaa !5
  %1440 = icmp eq i32 %1439, 4
  br i1 %1440, label %1441, label %1450

1441:                                             ; preds = %1438
  %1442 = load i32, ptr %11, align 4, !tbaa !5
  %1443 = icmp eq i32 %1442, 4
  br i1 %1443, label %1444, label %1450

1444:                                             ; preds = %1441
  %1445 = load i32, ptr %12, align 4, !tbaa !5
  %1446 = icmp eq i32 %1445, 1
  br i1 %1446, label %1447, label %1450

1447:                                             ; preds = %1444
  %1448 = load i32, ptr %13, align 4, !tbaa !5
  %1449 = icmp eq i32 %1448, 4
  br i1 %1449, label %1493, label %1450

1450:                                             ; preds = %1447, %1444, %1441, %1438
  %1451 = load i32, ptr %10, align 4, !tbaa !5
  %1452 = icmp eq i32 %1451, 5
  br i1 %1452, label %1453, label %1462

1453:                                             ; preds = %1450
  %1454 = load i32, ptr %11, align 4, !tbaa !5
  %1455 = icmp eq i32 %1454, 5
  br i1 %1455, label %1456, label %1462

1456:                                             ; preds = %1453
  %1457 = load i32, ptr %12, align 4, !tbaa !5
  %1458 = icmp eq i32 %1457, 1
  br i1 %1458, label %1459, label %1462

1459:                                             ; preds = %1456
  %1460 = load i32, ptr %13, align 4, !tbaa !5
  %1461 = icmp eq i32 %1460, 1
  br i1 %1461, label %1493, label %1462

1462:                                             ; preds = %1459, %1456, %1453, %1450
  %1463 = load i32, ptr %10, align 4, !tbaa !5
  %1464 = icmp eq i32 %1463, 5
  br i1 %1464, label %1465, label %1474

1465:                                             ; preds = %1462
  %1466 = load i32, ptr %11, align 4, !tbaa !5
  %1467 = icmp eq i32 %1466, 5
  br i1 %1467, label %1468, label %1474

1468:                                             ; preds = %1465
  %1469 = load i32, ptr %12, align 4, !tbaa !5
  %1470 = icmp eq i32 %1469, 1
  br i1 %1470, label %1471, label %1474

1471:                                             ; preds = %1468
  %1472 = load i32, ptr %13, align 4, !tbaa !5
  %1473 = icmp eq i32 %1472, 5
  br i1 %1473, label %1493, label %1474

1474:                                             ; preds = %1471, %1468, %1465, %1462
  %1475 = load i32, ptr %10, align 4, !tbaa !5
  %1476 = icmp eq i32 %1475, 5
  br i1 %1476, label %1477, label %1486

1477:                                             ; preds = %1474
  %1478 = load i32, ptr %11, align 4, !tbaa !5
  %1479 = icmp eq i32 %1478, 5
  br i1 %1479, label %1480, label %1486

1480:                                             ; preds = %1477
  %1481 = load i32, ptr %12, align 4, !tbaa !5
  %1482 = icmp eq i32 %1481, 1
  br i1 %1482, label %1483, label %1486

1483:                                             ; preds = %1480
  %1484 = load i32, ptr %13, align 4, !tbaa !5
  %1485 = icmp eq i32 %1484, 5
  br i1 %1485, label %1493, label %1486

1486:                                             ; preds = %1483, %1480, %1477, %1474
  %1487 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1488 = load ptr, ptr %6, align 8, !tbaa !9
  %1489 = load ptr, ptr %7, align 8, !tbaa !9
  %1490 = load ptr, ptr %8, align 8, !tbaa !9
  %1491 = load ptr, ptr %9, align 8, !tbaa !9
  %1492 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1487, ptr noundef @.str.24, ptr noundef %1488, ptr noundef %1489, ptr noundef %1490, ptr noundef %1491) #10
  call void @exit(i32 noundef 1) #12
  unreachable

1493:                                             ; preds = %1483, %1471, %1459, %1447, %1435, %1423, %1411, %1399, %1387, %1375, %1363, %1351, %1339, %1327, %1315, %1303, %1291, %1279, %1267, %1255, %1243, %1231, %1219, %1207, %1195, %1183, %1171, %1159, %1147, %1135, %1123, %1111, %1099, %1087, %1075, %1063, %1051, %1039, %1027, %1015, %1003, %991, %979, %967, %955, %943, %931, %919, %907, %895, %883, %871, %859
  %1494 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  store i32 0, ptr %1494, align 4, !tbaa !25
  %1495 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 20
  store i32 0, ptr %1495, align 8, !tbaa !26
  %1496 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 21
  store i32 0, ptr %1496, align 4, !tbaa !27
  %1497 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 29
  store float 0.000000e+00, ptr %1497, align 4, !tbaa !28
  %1498 = load i32, ptr %10, align 4, !tbaa !5
  %1499 = icmp eq i32 %1498, 13
  br i1 %1499, label %1500, label %1502

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

1502:                                             ; preds = %1500, %1493
  %1503 = load i32, ptr %11, align 4, !tbaa !5
  %1504 = icmp eq i32 %1503, 13
  br i1 %1504, label %1505, label %1507

1505:                                             ; preds = %1502
  store i32 12, ptr %11, align 4, !tbaa !5
  %1506 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 20
  store i32 1, ptr %1506, align 8, !tbaa !26
  br label %1507

1507:                                             ; preds = %1505, %1502
  %1508 = load i32, ptr %10, align 4, !tbaa !5
  %1509 = icmp eq i32 %1508, 12
  br i1 %1509, label %1513, label %1510

1510:                                             ; preds = %1507
  %1511 = load i32, ptr %10, align 4, !tbaa !5
  %1512 = icmp eq i32 %1511, 13
  br i1 %1512, label %1513, label %1518

1513:                                             ; preds = %1510, %1507
  %1514 = load i32, ptr %13, align 4, !tbaa !5
  %1515 = icmp eq i32 %1514, 1
  br i1 %1515, label %1516, label %1518

1516:                                             ; preds = %1513
  %1517 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 29
  store float 1.000000e+00, ptr %1517, align 4, !tbaa !28
  br label %1518

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

1562:                                             ; preds = %1518
  %1563 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %1564 = load i32, ptr %1563, align 8, !tbaa !32
  %1565 = icmp ne i32 %1564, 3
  br i1 %1565, label %1566, label %1581

1566:                                             ; preds = %1562
  %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, 4
  br i1 %1569, label %1570, label %1581

1570:                                             ; preds = %1566
  %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, 5
  br i1 %1573, label %1574, label %1581

1574:                                             ; preds = %1570
  %1575 = load i32, ptr %26, align 4, !tbaa !5
  %1576 = icmp sgt i32 %1575, 0
  br i1 %1576, label %1577, label %1580

1577:                                             ; preds = %1574
  %1578 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1579 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1578, ptr noundef @.str.25) #10
  call void @exit(i32 noundef 1) #12
  unreachable

1580:                                             ; preds = %1574
  br label %1581

1581:                                             ; preds = %1580, %1570, %1566, %1562, %1518
  %1582 = load i32, ptr %33, align 4, !tbaa !5
  %1583 = icmp ne i32 %1582, 0
  br i1 %1583, label %1584, label %1587

1584:                                             ; preds = %1581
  %1585 = load ptr, ptr %34, align 8, !tbaa !9
  %1586 = call noalias ptr @fopen(ptr noundef %1585, ptr noundef @.str.26)
  store ptr %1586, ptr %35, align 8, !tbaa !9
  br label %1621

1587:                                             ; preds = %1581
  %1588 = load i32, ptr %23, align 4, !tbaa !5
  %1589 = icmp eq i32 %1588, 0
  br i1 %1589, label %1590, label %1605

1590:                                             ; preds = %1587
  %1591 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  %1592 = load i32, ptr %17, align 4, !tbaa !5
  %1593 = load i32, ptr %19, align 4, !tbaa !5
  %1594 = load i32, ptr %19, align 4, !tbaa !5
  %1595 = load i32, ptr %18, align 4, !tbaa !5
  %1596 = load i32, ptr %17, align 4, !tbaa !5
  %1597 = load i32, ptr %18, align 4, !tbaa !5
  %1598 = load ptr, ptr %6, align 8, !tbaa !9
  %1599 = load ptr, ptr %7, align 8, !tbaa !9
  %1600 = load ptr, ptr %8, align 8, !tbaa !9
  %1601 = load ptr, ptr %9, align 8, !tbaa !9
  %1602 = load i32, ptr %29, align 4, !tbaa !5
  %1603 = call i32 (ptr, ...) @printf(ptr noundef @.str.28, i32 noundef %1592, i32 noundef %1593, i32 noundef %1594, i32 noundef %1595, i32 noundef %1596, i32 noundef %1597, ptr noundef %1598, ptr noundef %1599, ptr noundef %1600, ptr noundef %1601, i32 noundef %1602)
  %1604 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  br label %1620

1605:                                             ; preds = %1587
  %1606 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  %1607 = load i32, ptr %17, align 4, !tbaa !5
  %1608 = load i32, ptr %19, align 4, !tbaa !5
  %1609 = load i32, ptr %19, align 4, !tbaa !5
  %1610 = load i32, ptr %18, align 4, !tbaa !5
  %1611 = load i32, ptr %17, align 4, !tbaa !5
  %1612 = load i32, ptr %18, align 4, !tbaa !5
  %1613 = load ptr, ptr %6, align 8, !tbaa !9
  %1614 = load ptr, ptr %7, align 8, !tbaa !9
  %1615 = load ptr, ptr %8, align 8, !tbaa !9
  %1616 = load ptr, ptr %9, align 8, !tbaa !9
  %1617 = load i32, ptr %29, align 4, !tbaa !5
  %1618 = call i32 (ptr, ...) @printf(ptr noundef @.str.29, i32 noundef %1607, i32 noundef %1608, i32 noundef %1609, i32 noundef %1610, i32 noundef %1611, i32 noundef %1612, ptr noundef %1613, ptr noundef %1614, ptr noundef %1615, ptr noundef %1616, i32 noundef %1617)
  %1619 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  br label %1620

1620:                                             ; preds = %1605, %1590
  br label %1621

1621:                                             ; preds = %1620, %1584
  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 %1622

1622:                                             ; preds = %5185, %1621
  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
  %1623 = load i32, ptr %47, align 4, !tbaa !5
  %1624 = icmp eq i32 %1623, 0
  br i1 %1624, label %1625, label %1649

1625:                                             ; preds = %1622
  %1626 = load i32, ptr %33, align 4, !tbaa !5
  %1627 = icmp ne i32 %1626, 0
  br i1 %1627, label %1628, label %1648

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

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

1634:                                             ; preds = %1628
  store i32 1, ptr %46, align 4, !tbaa !5
  br label %1635

1635:                                             ; preds = %1634
  %1636 = getelementptr inbounds [512 x i8], ptr %55, i64 0, i64 0
  %1637 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %1636, ptr noundef @.str.30, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %14, ptr noundef %15, ptr noundef %16) #10
  %1638 = icmp ne i32 6, %1637
  br i1 %1638, label %1639, label %1640

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

1640:                                             ; preds = %1635
  %1641 = load i32, ptr %46, align 4, !tbaa !5
  %1642 = icmp eq i32 %1641, 0
  br i1 %1642, label %1643, label %1644

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

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

1645:                                             ; preds = %1644, %1643, %1633
  call void @llvm.lifetime.end.p0(i64 512, ptr %55) #10
  %1646 = load i32, ptr %49, align 4
  switch i32 %1646, label %5165 [
    i32 0, label %1647
  ]

1647:                                             ; preds = %1645
  br label %1648

1648:                                             ; preds = %1647, %1625
  br label %1649

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

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

1677:                                             ; preds = %1665
  br label %1771

1678:                                             ; preds = %1665
  %1679 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1680 = load i32, ptr %1679, align 8, !tbaa !29
  %1681 = icmp eq i32 1, %1680
  br i1 %1681, label %1682, label %1683

1682:                                             ; preds = %1678
  br label %1769

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

1687:                                             ; preds = %1683
  br label %1767

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

1692:                                             ; preds = %1688
  br label %1765

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

1697:                                             ; preds = %1693
  br label %1763

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

1702:                                             ; preds = %1698
  br label %1761

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

1707:                                             ; preds = %1703
  br label %1759

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

1712:                                             ; preds = %1708
  br label %1757

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

1717:                                             ; preds = %1713
  br label %1755

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

1722:                                             ; preds = %1718
  br label %1753

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

1727:                                             ; preds = %1723
  br label %1751

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

1732:                                             ; preds = %1728
  br label %1749

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

1737:                                             ; preds = %1733
  br label %1747

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

1742:                                             ; preds = %1738
  br label %1745

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

1744:                                             ; No predecessors!
  br label %1745

1745:                                             ; preds = %1744, %1742
  %1746 = phi i32 [ 1, %1742 ], [ 0, %1744 ]
  br label %1747

1747:                                             ; preds = %1745, %1737
  %1748 = phi i32 [ 1, %1737 ], [ %1746, %1745 ]
  br label %1749

1749:                                             ; preds = %1747, %1732
  %1750 = phi i32 [ 2, %1732 ], [ %1748, %1747 ]
  br label %1751

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

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

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

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

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

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

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

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

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

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

1771:                                             ; preds = %1769, %1677
  %1772 = phi i32 [ 8, %1677 ], [ %1770, %1769 ]
  %1773 = sext i32 %1772 to i64
  %1774 = mul i64 %1673, %1773
  %1775 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1774, i64 noundef 64)
  store ptr %1775, ptr %56, align 8, !tbaa !9
  br label %1887

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

1788:                                             ; preds = %1776
  br label %1882

1789:                                             ; preds = %1776
  %1790 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %1791 = load i32, ptr %1790, align 8, !tbaa !29
  %1792 = icmp eq i32 1, %1791
  br i1 %1792, label %1793, label %1794

1793:                                             ; preds = %1789
  br label %1880

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

1798:                                             ; preds = %1794
  br label %1878

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

1803:                                             ; preds = %1799
  br label %1876

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

1808:                                             ; preds = %1804
  br label %1874

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

1813:                                             ; preds = %1809
  br label %1872

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

1818:                                             ; preds = %1814
  br label %1870

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

1823:                                             ; preds = %1819
  br label %1868

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

1828:                                             ; preds = %1824
  br label %1866

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

1833:                                             ; preds = %1829
  br label %1864

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

1838:                                             ; preds = %1834
  br label %1862

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

1843:                                             ; preds = %1839
  br label %1860

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

1848:                                             ; preds = %1844
  br label %1858

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

1853:                                             ; preds = %1849
  br label %1856

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

1855:                                             ; No predecessors!
  br label %1856

1856:                                             ; preds = %1855, %1853
  %1857 = phi i32 [ 1, %1853 ], [ 0, %1855 ]
  br label %1858

1858:                                             ; preds = %1856, %1848
  %1859 = phi i32 [ 1, %1848 ], [ %1857, %1856 ]
  br label %1860

1860:                                             ; preds = %1858, %1843
  %1861 = phi i32 [ 2, %1843 ], [ %1859, %1858 ]
  br label %1862

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

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

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

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

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

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

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

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

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

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

1882:                                             ; preds = %1880, %1788
  %1883 = phi i32 [ 8, %1788 ], [ %1881, %1880 ]
  %1884 = sext i32 %1883 to i64
  %1885 = mul i64 %1784, %1884
  %1886 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1885, i64 noundef 64)
  store ptr %1886, ptr %56, align 8, !tbaa !9
  br label %1887

1887:                                             ; preds = %1882, %1771
  %1888 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 15
  %1889 = load i32, ptr %1888, align 4, !tbaa !36
  %1890 = icmp eq i32 %1889, 0
  br i1 %1890, label %1891, label %2002

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

1903:                                             ; preds = %1891
  br label %1997

1904:                                             ; preds = %1891
  %1905 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %1906 = load i32, ptr %1905, align 4, !tbaa !30
  %1907 = icmp eq i32 1, %1906
  br i1 %1907, label %1908, label %1909

1908:                                             ; preds = %1904
  br label %1995

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

1913:                                             ; preds = %1909
  br label %1993

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

1918:                                             ; preds = %1914
  br label %1991

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

1923:                                             ; preds = %1919
  br label %1989

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

1928:                                             ; preds = %1924
  br label %1987

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

1933:                                             ; preds = %1929
  br label %1985

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

1938:                                             ; preds = %1934
  br label %1983

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

1943:                                             ; preds = %1939
  br label %1981

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

1948:                                             ; preds = %1944
  br label %1979

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

1953:                                             ; preds = %1949
  br label %1977

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

1958:                                             ; preds = %1954
  br label %1975

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

1963:                                             ; preds = %1959
  br label %1973

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

1968:                                             ; preds = %1964
  br label %1971

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

1970:                                             ; No predecessors!
  br label %1971

1971:                                             ; preds = %1970, %1968
  %1972 = phi i32 [ 1, %1968 ], [ 0, %1970 ]
  br label %1973

1973:                                             ; preds = %1971, %1963
  %1974 = phi i32 [ 1, %1963 ], [ %1972, %1971 ]
  br label %1975

1975:                                             ; preds = %1973, %1958
  %1976 = phi i32 [ 2, %1958 ], [ %1974, %1973 ]
  br label %1977

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

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

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

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

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

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

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

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

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

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

1997:                                             ; preds = %1995, %1903
  %1998 = phi i32 [ 8, %1903 ], [ %1996, %1995 ]
  %1999 = sext i32 %1998 to i64
  %2000 = mul i64 %1899, %1999
  %2001 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2000, i64 noundef 64)
  store ptr %2001, ptr %57, align 8, !tbaa !9
  br label %2113

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

2014:                                             ; preds = %2002
  br label %2108

2015:                                             ; preds = %2002
  %2016 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %2017 = load i32, ptr %2016, align 4, !tbaa !30
  %2018 = icmp eq i32 1, %2017
  br i1 %2018, label %2019, label %2020

2019:                                             ; preds = %2015
  br label %2106

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

2024:                                             ; preds = %2020
  br label %2104

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

2029:                                             ; preds = %2025
  br label %2102

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

2034:                                             ; preds = %2030
  br label %2100

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

2039:                                             ; preds = %2035
  br label %2098

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

2044:                                             ; preds = %2040
  br label %2096

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

2049:                                             ; preds = %2045
  br label %2094

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

2054:                                             ; preds = %2050
  br label %2092

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

2059:                                             ; preds = %2055
  br label %2090

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

2064:                                             ; preds = %2060
  br label %2088

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

2069:                                             ; preds = %2065
  br label %2086

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

2074:                                             ; preds = %2070
  br label %2084

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

2079:                                             ; preds = %2075
  br label %2082

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

2081:                                             ; No predecessors!
  br label %2082

2082:                                             ; preds = %2081, %2079
  %2083 = phi i32 [ 1, %2079 ], [ 0, %2081 ]
  br label %2084

2084:                                             ; preds = %2082, %2074
  %2085 = phi i32 [ 1, %2074 ], [ %2083, %2082 ]
  br label %2086

2086:                                             ; preds = %2084, %2069
  %2087 = phi i32 [ 2, %2069 ], [ %2085, %2084 ]
  br label %2088

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

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

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

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

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

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

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

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

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

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

2108:                                             ; preds = %2106, %2014
  %2109 = phi i32 [ 8, %2014 ], [ %2107, %2106 ]
  %2110 = sext i32 %2109 to i64
  %2111 = mul i64 %2010, %2110
  %2112 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2111, i64 noundef 64)
  store ptr %2112, ptr %57, align 8, !tbaa !9
  br label %2113

2113:                                             ; preds = %2108, %1997
  %2114 = load i32, ptr %16, align 4, !tbaa !5
  %2115 = sext i32 %2114 to i64
  %2116 = load i32, ptr %18, align 4, !tbaa !5
  %2117 = sext i32 %2116 to i64
  %2118 = mul i64 %2115, %2117
  %2119 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2120 = load i32, ptr %2119, align 8, !tbaa !32
  %2121 = icmp eq i32 0, %2120
  br i1 %2121, label %2122, label %2123

2122:                                             ; preds = %2113
  br label %2216

2123:                                             ; preds = %2113
  %2124 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2125 = load i32, ptr %2124, align 8, !tbaa !32
  %2126 = icmp eq i32 1, %2125
  br i1 %2126, label %2127, label %2128

2127:                                             ; preds = %2123
  br label %2214

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

2132:                                             ; preds = %2128
  br label %2212

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

2137:                                             ; preds = %2133
  br label %2210

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

2142:                                             ; preds = %2138
  br label %2208

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

2147:                                             ; preds = %2143
  br label %2206

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

2152:                                             ; preds = %2148
  br label %2204

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

2157:                                             ; preds = %2153
  br label %2202

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

2162:                                             ; preds = %2158
  br label %2200

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

2167:                                             ; preds = %2163
  br label %2198

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

2172:                                             ; preds = %2168
  br label %2196

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

2177:                                             ; preds = %2173
  br label %2194

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

2182:                                             ; preds = %2178
  br label %2192

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

2187:                                             ; preds = %2183
  br label %2190

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

2189:                                             ; No predecessors!
  br label %2190

2190:                                             ; preds = %2189, %2187
  %2191 = phi i32 [ 1, %2187 ], [ 0, %2189 ]
  br label %2192

2192:                                             ; preds = %2190, %2182
  %2193 = phi i32 [ 1, %2182 ], [ %2191, %2190 ]
  br label %2194

2194:                                             ; preds = %2192, %2177
  %2195 = phi i32 [ 2, %2177 ], [ %2193, %2192 ]
  br label %2196

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

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

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

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

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

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

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

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

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

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

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

2229:                                             ; preds = %2216
  br label %2323

2230:                                             ; preds = %2216
  %2231 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2232 = load i32, ptr %2231, align 8, !tbaa !32
  %2233 = icmp eq i32 1, %2232
  br i1 %2233, label %2234, label %2235

2234:                                             ; preds = %2230
  br label %2321

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

2239:                                             ; preds = %2235
  br label %2319

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

2244:                                             ; preds = %2240
  br label %2317

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

2249:                                             ; preds = %2245
  br label %2315

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

2254:                                             ; preds = %2250
  br label %2313

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

2259:                                             ; preds = %2255
  br label %2311

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

2264:                                             ; preds = %2260
  br label %2309

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

2269:                                             ; preds = %2265
  br label %2307

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

2274:                                             ; preds = %2270
  br label %2305

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

2279:                                             ; preds = %2275
  br label %2303

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

2284:                                             ; preds = %2280
  br label %2301

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

2289:                                             ; preds = %2285
  br label %2299

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

2294:                                             ; preds = %2290
  br label %2297

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

2296:                                             ; No predecessors!
  br label %2297

2297:                                             ; preds = %2296, %2294
  %2298 = phi i32 [ 1, %2294 ], [ 0, %2296 ]
  br label %2299

2299:                                             ; preds = %2297, %2289
  %2300 = phi i32 [ 1, %2289 ], [ %2298, %2297 ]
  br label %2301

2301:                                             ; preds = %2299, %2284
  %2302 = phi i32 [ 2, %2284 ], [ %2300, %2299 ]
  br label %2303

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

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

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

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

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

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

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

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

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

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

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

2336:                                             ; preds = %2323
  br label %2430

2337:                                             ; preds = %2323
  %2338 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2339 = load i32, ptr %2338, align 8, !tbaa !32
  %2340 = icmp eq i32 1, %2339
  br i1 %2340, label %2341, label %2342

2341:                                             ; preds = %2337
  br label %2428

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

2346:                                             ; preds = %2342
  br label %2426

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

2351:                                             ; preds = %2347
  br label %2424

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

2356:                                             ; preds = %2352
  br label %2422

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

2361:                                             ; preds = %2357
  br label %2420

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

2366:                                             ; preds = %2362
  br label %2418

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

2371:                                             ; preds = %2367
  br label %2416

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

2376:                                             ; preds = %2372
  br label %2414

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

2381:                                             ; preds = %2377
  br label %2412

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

2386:                                             ; preds = %2382
  br label %2410

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

2391:                                             ; preds = %2387
  br label %2408

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

2396:                                             ; preds = %2392
  br label %2406

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

2401:                                             ; preds = %2397
  br label %2404

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

2403:                                             ; No predecessors!
  br label %2404

2404:                                             ; preds = %2403, %2401
  %2405 = phi i32 [ 1, %2401 ], [ 0, %2403 ]
  br label %2406

2406:                                             ; preds = %2404, %2396
  %2407 = phi i32 [ 1, %2396 ], [ %2405, %2404 ]
  br label %2408

2408:                                             ; preds = %2406, %2391
  %2409 = phi i32 [ 2, %2391 ], [ %2407, %2406 ]
  br label %2410

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

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

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

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

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

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

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

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

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

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

2430:                                             ; preds = %2428, %2336
  %2431 = phi i32 [ 8, %2336 ], [ %2429, %2428 ]
  %2432 = sext i32 %2431 to i64
  %2433 = mul i64 %2332, %2432
  %2434 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %2433, i64 noundef 64)
  store ptr %2434, ptr %60, align 8, !tbaa !9
  %2435 = load i32, ptr %10, align 4, !tbaa !5
  %2436 = icmp eq i32 %2435, 12
  br i1 %2436, label %2437, label %2536

2437:                                             ; preds = %2430
  %2438 = load i32, ptr %11, align 4, !tbaa !5
  %2439 = icmp eq i32 %2438, 3
  br i1 %2439, label %2440, label %2536

2440:                                             ; preds = %2437
  %2441 = load i32, ptr %12, align 4, !tbaa !5
  %2442 = icmp eq i32 %2441, 3
  br i1 %2442, label %2449, label %2443

2443:                                             ; preds = %2440
  %2444 = load i32, ptr %12, align 4, !tbaa !5
  %2445 = icmp eq i32 %2444, 1
  br i1 %2445, label %2449, label %2446

2446:                                             ; preds = %2443
  %2447 = load i32, ptr %12, align 4, !tbaa !5
  %2448 = icmp eq i32 %2447, 14
  br i1 %2448, label %2449, label %2536

2449:                                             ; preds = %2446, %2443, %2440
  %2450 = load i32, ptr %13, align 4, !tbaa !5
  %2451 = icmp eq i32 %2450, 3
  br i1 %2451, label %2455, label %2452

2452:                                             ; preds = %2449
  %2453 = load i32, ptr %13, align 4, !tbaa !5
  %2454 = icmp eq i32 %2453, 1
  br i1 %2454, label %2455, label %2536

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

2476:                                             ; preds = %2496, %2455
  %2477 = load i32, ptr %67, align 4, !tbaa !5
  %2478 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2479 = load i32, ptr %2478, align 8, !tbaa !49
  %2480 = icmp slt i32 %2477, %2479
  br i1 %2480, label %2481, label %2499

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

2496:                                             ; preds = %2481
  %2497 = load i32, ptr %67, align 4, !tbaa !5
  %2498 = add nsw i32 %2497, 1
  store i32 %2498, ptr %67, align 4, !tbaa !5
  br label %2476, !llvm.loop !55

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

2536:                                             ; preds = %2499, %2452, %2446, %2437, %2430
  %2537 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %2538 = load i32, ptr %2537, align 8, !tbaa !17
  %2539 = icmp ugt i32 %2538, 0
  br i1 %2539, label %2540, label %2567

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

2547:                                             ; preds = %2561, %2540
  %2548 = load i32, ptr %72, align 4, !tbaa !5
  %2549 = load i32, ptr %14, align 4, !tbaa !5
  %2550 = load i32, ptr %29, align 4, !tbaa !5
  %2551 = mul nsw i32 %2549, %2550
  %2552 = icmp slt i32 %2548, %2551
  br i1 %2552, label %2553, label %2564

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

2561:                                             ; preds = %2553
  %2562 = load i32, ptr %72, align 4, !tbaa !5
  %2563 = add nsw i32 %2562, 1
  store i32 %2563, ptr %72, align 4, !tbaa !5
  br label %2547, !llvm.loop !62

2564:                                             ; preds = %2547
  %2565 = load ptr, ptr %73, align 8, !tbaa !9
  %2566 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 33
  store ptr %2565, ptr %2566, 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 %2567

2567:                                             ; preds = %2564, %2536
  %2568 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %2569 = load i32, ptr %2568, align 4, !tbaa !18
  %2570 = icmp ugt i32 %2569, 0
  br i1 %2570, label %2579, label %2571

2571:                                             ; preds = %2567
  %2572 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %2573 = load i32, ptr %2572, align 8, !tbaa !19
  %2574 = icmp ugt i32 %2573, 0
  br i1 %2574, label %2579, label %2575

2575:                                             ; preds = %2571
  %2576 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %2577 = load i32, ptr %2576, align 4, !tbaa !20
  %2578 = icmp ugt i32 %2577, 0
  br i1 %2578, label %2579, label %2650

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

2595:                                             ; preds = %2608, %2579
  %2596 = load i32, ptr %74, align 4, !tbaa !5
  %2597 = load i32, ptr %75, align 4, !tbaa !5
  %2598 = icmp ult i32 %2596, %2597
  br i1 %2598, label %2599, label %2611

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

2608:                                             ; preds = %2599
  %2609 = load i32, ptr %74, align 4, !tbaa !5
  %2610 = add nsw i32 %2609, 1
  store i32 %2610, ptr %74, align 4, !tbaa !5
  br label %2595, !llvm.loop !64

2611:                                             ; preds = %2595
  %2612 = load ptr, ptr %76, align 8, !tbaa !9
  %2613 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 34
  store ptr %2612, ptr %2613, align 8, !tbaa !65
  %2614 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %2615 = load i32, ptr %2614, align 4, !tbaa !20
  %2616 = icmp ugt i32 %2615, 0
  br i1 %2616, label %2617, label %2649

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

2632:                                             ; preds = %2643, %2617
  %2633 = load i32, ptr %74, align 4, !tbaa !5
  %2634 = load i32, ptr %75, align 4, !tbaa !5
  %2635 = icmp ult i32 %2633, %2634
  br i1 %2635, label %2636, label %2646

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

2643:                                             ; preds = %2636
  %2644 = load i32, ptr %74, align 4, !tbaa !5
  %2645 = add nsw i32 %2644, 1
  store i32 %2645, ptr %74, align 4, !tbaa !5
  br label %2632, !llvm.loop !66

2646:                                             ; preds = %2632
  %2647 = load ptr, ptr %77, align 8, !tbaa !9
  %2648 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 35
  store ptr %2647, ptr %2648, align 8, !tbaa !67
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #10
  br label %2649

2649:                                             ; preds = %2646, %2611
  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 %2650

2650:                                             ; preds = %2649, %2575
  %2651 = load i32, ptr %10, align 4, !tbaa !5
  %2652 = icmp eq i32 %2651, 12
  br i1 %2652, label %2653, label %2687

2653:                                             ; preds = %2650
  %2654 = load i32, ptr %11, align 4, !tbaa !5
  %2655 = icmp eq i32 %2654, 2
  br i1 %2655, label %2656, label %2687

2656:                                             ; preds = %2653
  %2657 = load i32, ptr %13, align 4, !tbaa !5
  %2658 = icmp eq i32 %2657, 2
  br i1 %2658, label %2662, label %2659

2659:                                             ; preds = %2656
  %2660 = load i32, ptr %13, align 4, !tbaa !5
  %2661 = icmp eq i32 %2660, 1
  br i1 %2661, label %2662, label %2687

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

2668:                                             ; preds = %2681, %2662
  %2669 = load i32, ptr %78, align 4, !tbaa !5
  %2670 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 4
  %2671 = load i32, ptr %2670, align 8, !tbaa !49
  %2672 = icmp slt i32 %2669, %2671
  br i1 %2672, label %2673, label %2684

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

2681:                                             ; preds = %2673
  %2682 = load i32, ptr %78, align 4, !tbaa !5
  %2683 = add nsw i32 %2682, 1
  store i32 %2683, ptr %78, align 4, !tbaa !5
  br label %2668, !llvm.loop !68

2684:                                             ; preds = %2668
  %2685 = load ptr, ptr %79, align 8, !tbaa !9
  %2686 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  store ptr %2685, ptr %2686, 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 %2687

2687:                                             ; preds = %2684, %2659, %2653, %2650
  %2688 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %2689 = load i32, ptr %2688, align 8, !tbaa !47
  %2690 = icmp eq i32 %2689, 1
  br i1 %2690, label %2691, label %2808

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

2700:                                             ; preds = %2691
  br label %2794

2701:                                             ; preds = %2691
  %2702 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %2703 = load i32, ptr %2702, align 8, !tbaa !32
  %2704 = icmp eq i32 1, %2703
  br i1 %2704, label %2705, label %2706

2705:                                             ; preds = %2701
  br label %2792

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

2710:                                             ; preds = %2706
  br label %2790

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

2715:                                             ; preds = %2711
  br label %2788

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

2720:                                             ; preds = %2716
  br label %2786

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

2725:                                             ; preds = %2721
  br label %2784

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

2730:                                             ; preds = %2726
  br label %2782

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

2735:                                             ; preds = %2731
  br label %2780

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

2740:                                             ; preds = %2736
  br label %2778

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

2745:                                             ; preds = %2741
  br label %2776

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

2750:                                             ; preds = %2746
  br label %2774

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

2755:                                             ; preds = %2751
  br label %2772

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

2760:                                             ; preds = %2756
  br label %2770

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

2765:                                             ; preds = %2761
  br label %2768

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

2767:                                             ; No predecessors!
  br label %2768

2768:                                             ; preds = %2767, %2765
  %2769 = phi i32 [ 1, %2765 ], [ 0, %2767 ]
  br label %2770

2770:                                             ; preds = %2768, %2760
  %2771 = phi i32 [ 1, %2760 ], [ %2769, %2768 ]
  br label %2772

2772:                                             ; preds = %2770, %2755
  %2773 = phi i32 [ 2, %2755 ], [ %2771, %2770 ]
  br label %2774

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

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

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

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

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

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

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

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

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

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

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

2808:                                             ; preds = %2794, %2687
  %2809 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %2810 = load i32, ptr %2809, align 4, !tbaa !48
  %2811 = icmp eq i32 %2810, 2
  br i1 %2811, label %2812, label %2846

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

2846:                                             ; preds = %2812, %2808
  %2847 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 14
  %2848 = load i32, ptr %2847, align 8, !tbaa !35
  %2849 = icmp eq i32 %2848, 0
  br i1 %2849, label %2850, label %3042

2850:                                             ; preds = %2846
  %2851 = load i32, ptr %47, align 4, !tbaa !5
  %2852 = icmp eq i32 %2851, 0
  br i1 %2852, label %2853, label %3032

2853:                                             ; preds = %2850
  %2854 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  %2855 = load i32, ptr %2854, align 4, !tbaa !21
  %2856 = icmp ugt i32 %2855, 0
  br i1 %2856, label %2857, label %2904

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

2877:                                             ; preds = %2857
  br label %2881

2878:                                             ; preds = %2857
  %2879 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %2880 = load i32, ptr %2879, align 4, !tbaa !25
  br label %2881

2881:                                             ; preds = %2878, %2877
  %2882 = phi i32 [ 1, %2877 ], [ %2880, %2878 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef 4, ptr noundef %2870, i32 noundef %2871, i32 noundef %2872, i32 noundef %2873, i32 noundef %2882)
  store i32 0, ptr %81, align 4, !tbaa !5
  br label %2883

2883:                                             ; preds = %2900, %2881
  %2884 = load i32, ptr %81, align 4, !tbaa !5
  %2885 = load i32, ptr %14, align 4, !tbaa !5
  %2886 = load i32, ptr %19, align 4, !tbaa !5
  %2887 = mul nsw i32 %2885, %2886
  %2888 = load i32, ptr %29, align 4, !tbaa !5
  %2889 = mul nsw i32 %2887, %2888
  %2890 = icmp slt i32 %2884, %2889
  br i1 %2890, label %2891, label %2903

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

2900:                                             ; preds = %2891
  %2901 = load i32, ptr %81, align 4, !tbaa !5
  %2902 = add nsw i32 %2901, 1
  store i32 %2902, ptr %81, align 4, !tbaa !5
  br label %2883, !llvm.loop !74

2903:                                             ; preds = %2883
  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 %3031

2904:                                             ; preds = %2853
  %2905 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  %2906 = load i32, ptr %2905, align 8, !tbaa !22
  %2907 = icmp ugt i32 %2906, 0
  br i1 %2907, label %2908, label %2955

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

2928:                                             ; preds = %2908
  br label %2932

2929:                                             ; preds = %2908
  %2930 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %2931 = load i32, ptr %2930, align 4, !tbaa !25
  br label %2932

2932:                                             ; preds = %2929, %2928
  %2933 = phi i32 [ 1, %2928 ], [ %2931, %2929 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef 4, ptr noundef %2921, i32 noundef %2922, i32 noundef %2923, i32 noundef %2924, i32 noundef %2933)
  store i32 0, ptr %85, align 4, !tbaa !5
  br label %2934

2934:                                             ; preds = %2951, %2932
  %2935 = load i32, ptr %85, align 4, !tbaa !5
  %2936 = load i32, ptr %14, align 4, !tbaa !5
  %2937 = load i32, ptr %19, align 4, !tbaa !5
  %2938 = mul nsw i32 %2936, %2937
  %2939 = load i32, ptr %29, align 4, !tbaa !5
  %2940 = mul nsw i32 %2938, %2939
  %2941 = icmp slt i32 %2935, %2940
  br i1 %2941, label %2942, label %2954

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

2951:                                             ; preds = %2942
  %2952 = load i32, ptr %85, align 4, !tbaa !5
  %2953 = add nsw i32 %2952, 1
  store i32 %2953, ptr %85, align 4, !tbaa !5
  br label %2934, !llvm.loop !75

2954:                                             ; preds = %2934
  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 %3030

2955:                                             ; preds = %2904
  %2956 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  %2957 = load i32, ptr %2956, align 4, !tbaa !23
  %2958 = icmp ugt i32 %2957, 0
  br i1 %2958, label %2959, label %3006

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

2979:                                             ; preds = %2959
  br label %2983

2980:                                             ; preds = %2959
  %2981 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %2982 = load i32, ptr %2981, align 4, !tbaa !25
  br label %2983

2983:                                             ; preds = %2980, %2979
  %2984 = phi i32 [ 1, %2979 ], [ %2982, %2980 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef 5, ptr noundef %2972, i32 noundef %2973, i32 noundef %2974, i32 noundef %2975, i32 noundef %2984)
  store i32 0, ptr %89, align 4, !tbaa !5
  br label %2985

2985:                                             ; preds = %3002, %2983
  %2986 = load i32, ptr %89, align 4, !tbaa !5
  %2987 = load i32, ptr %14, align 4, !tbaa !5
  %2988 = load i32, ptr %19, align 4, !tbaa !5
  %2989 = mul nsw i32 %2987, %2988
  %2990 = load i32, ptr %29, align 4, !tbaa !5
  %2991 = mul nsw i32 %2989, %2990
  %2992 = icmp slt i32 %2986, %2991
  br i1 %2992, label %2993, label %3005

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

3002:                                             ; preds = %2993
  %3003 = load i32, ptr %89, align 4, !tbaa !5
  %3004 = add nsw i32 %3003, 1
  store i32 %3004, ptr %89, align 4, !tbaa !5
  br label %2985, !llvm.loop !76

3005:                                             ; preds = %2985
  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 %3029

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

3016:                                             ; preds = %3006
  br label %3027

3017:                                             ; preds = %3006
  %3018 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %3019 = load i32, ptr %3018, align 8, !tbaa !17
  %3020 = icmp ugt i32 %3019, 0
  br i1 %3020, label %3021, label %3022

3021:                                             ; preds = %3017
  br label %3025

3022:                                             ; preds = %3017
  %3023 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %3024 = load i32, ptr %3023, align 4, !tbaa !25
  br label %3025

3025:                                             ; preds = %3022, %3021
  %3026 = phi i32 [ 1, %3021 ], [ %3024, %3022 ]
  br label %3027

3027:                                             ; preds = %3025, %3016
  %3028 = phi i32 [ 1, %3016 ], [ %3026, %3025 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3008, ptr noundef %3009, i32 noundef %3010, i32 noundef %3011, i32 noundef %3012, i32 noundef %3028)
  br label %3029

3029:                                             ; preds = %3027, %3005
  br label %3030

3030:                                             ; preds = %3029, %2954
  br label %3031

3031:                                             ; preds = %3030, %2903
  br label %3041

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

3041:                                             ; preds = %3032, %3031
  br label %3078

3042:                                             ; preds = %2846
  %3043 = load i32, ptr %47, align 4, !tbaa !5
  %3044 = icmp eq i32 %3043, 0
  br i1 %3044, label %3045, label %3068

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

3055:                                             ; preds = %3045
  br label %3066

3056:                                             ; preds = %3045
  %3057 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %3058 = load i32, ptr %3057, align 8, !tbaa !17
  %3059 = icmp ugt i32 %3058, 0
  br i1 %3059, label %3060, label %3061

3060:                                             ; preds = %3056
  br label %3064

3061:                                             ; preds = %3056
  %3062 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 19
  %3063 = load i32, ptr %3062, align 4, !tbaa !25
  br label %3064

3064:                                             ; preds = %3061, %3060
  %3065 = phi i32 [ 1, %3060 ], [ %3063, %3061 ]
  br label %3066

3066:                                             ; preds = %3064, %3055
  %3067 = phi i32 [ 1, %3055 ], [ %3065, %3064 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3047, ptr noundef %3048, i32 noundef %3049, i32 noundef %3050, i32 noundef %3051, i32 noundef %3067)
  br label %3077

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

3077:                                             ; preds = %3068, %3066
  br label %3078

3078:                                             ; preds = %3077, %3041
  %3079 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 15
  %3080 = load i32, ptr %3079, align 4, !tbaa !36
  %3081 = icmp eq i32 %3080, 0
  br i1 %3081, label %3082, label %3109

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

3092:                                             ; preds = %3082
  br label %3096

3093:                                             ; preds = %3082
  %3094 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 20
  %3095 = load i32, ptr %3094, align 8, !tbaa !26
  br label %3096

3096:                                             ; preds = %3093, %3092
  %3097 = phi i32 [ 1, %3092 ], [ %3095, %3093 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3084, ptr noundef %3085, i32 noundef %3086, i32 noundef %3087, i32 noundef %3088, i32 noundef %3097)
  %3098 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %3099 = load i32, ptr %3098, align 4, !tbaa !48
  %3100 = icmp eq i32 %3099, 2
  br i1 %3100, label %3101, label %3108

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

3108:                                             ; preds = %3101, %3096
  br label %3136

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

3119:                                             ; preds = %3109
  br label %3123

3120:                                             ; preds = %3109
  %3121 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 20
  %3122 = load i32, ptr %3121, align 8, !tbaa !26
  br label %3123

3123:                                             ; preds = %3120, %3119
  %3124 = phi i32 [ 1, %3119 ], [ %3122, %3120 ]
  call void @init_random_matrix(ptr noundef %44, i32 noundef %3111, ptr noundef %3112, i32 noundef %3113, i32 noundef %3114, i32 noundef %3115, i32 noundef %3124)
  %3125 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %3126 = load i32, ptr %3125, align 4, !tbaa !48
  %3127 = icmp eq i32 %3126, 2
  br i1 %3127, label %3128, label %3135

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

3135:                                             ; preds = %3128, %3123
  br label %3136

3136:                                             ; preds = %3135, %3108
  %3137 = load double, ptr %28, align 8, !tbaa !11
  %3138 = fcmp oeq double %3137, 0.000000e+00
  br i1 %3138, label %3139, label %3155

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

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

3171:                                             ; preds = %3155, %3139
  %3172 = load i32, ptr %41, align 4, !tbaa !5
  %3173 = icmp ne i32 %3172, 0
  br i1 %3173, label %3177, label %3174

3174:                                             ; preds = %3171
  %3175 = load i32, ptr %42, align 4, !tbaa !5
  %3176 = icmp ne i32 %3175, 0
  br i1 %3176, label %3177, label %3181

3177:                                             ; preds = %3174, %3171
  %3178 = load ptr, ptr %56, align 8, !tbaa !9
  %3179 = load ptr, ptr %57, align 8, !tbaa !9
  %3180 = load ptr, ptr %60, align 8, !tbaa !9
  call void @ref_fused_matmul(ptr noundef %44, ptr noundef %3178, ptr noundef %3179, ptr noundef %3180, ptr noundef %66)
  br label %4380

3181:                                             ; preds = %3174
  %3182 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %3183 = load i32, ptr %3182, align 8, !tbaa !17
  %3184 = icmp ugt i32 %3183, 0
  br i1 %3184, label %3185, label %3727

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

3201:                                             ; preds = %3185
  br label %3295

3202:                                             ; preds = %3185
  %3203 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %3204 = load i32, ptr %3203, align 8, !tbaa !29
  %3205 = icmp eq i32 1, %3204
  br i1 %3205, label %3206, label %3207

3206:                                             ; preds = %3202
  br label %3293

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

3211:                                             ; preds = %3207
  br label %3291

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

3216:                                             ; preds = %3212
  br label %3289

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

3221:                                             ; preds = %3217
  br label %3287

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

3226:                                             ; preds = %3222
  br label %3285

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

3231:                                             ; preds = %3227
  br label %3283

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

3236:                                             ; preds = %3232
  br label %3281

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

3241:                                             ; preds = %3237
  br label %3279

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

3246:                                             ; preds = %3242
  br label %3277

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

3251:                                             ; preds = %3247
  br label %3275

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

3256:                                             ; preds = %3252
  br label %3273

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

3261:                                             ; preds = %3257
  br label %3271

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

3266:                                             ; preds = %3262
  br label %3269

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

3268:                                             ; No predecessors!
  br label %3269

3269:                                             ; preds = %3268, %3266
  %3270 = phi i32 [ 1, %3266 ], [ 0, %3268 ]
  br label %3271

3271:                                             ; preds = %3269, %3261
  %3272 = phi i32 [ 1, %3261 ], [ %3270, %3269 ]
  br label %3273

3273:                                             ; preds = %3271, %3256
  %3274 = phi i32 [ 2, %3256 ], [ %3272, %3271 ]
  br label %3275

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

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

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

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

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

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

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

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

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

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

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

3302:                                             ; preds = %3625, %3295
  %3303 = load i32, ptr %94, align 4, !tbaa !5
  %3304 = load i32, ptr %29, align 4, !tbaa !5
  %3305 = icmp slt i32 %3303, %3304
  br i1 %3305, label %3306, label %3628

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

3307:                                             ; preds = %3621, %3306
  %3308 = load i32, ptr %95, align 4, !tbaa !5
  %3309 = load i32, ptr %17, align 4, !tbaa !5
  %3310 = icmp slt i32 %3308, %3309
  br i1 %3310, label %3311, label %3624

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

3312:                                             ; preds = %3617, %3311
  %3313 = load i32, ptr %96, align 4, !tbaa !5
  %3314 = load i32, ptr %19, align 4, !tbaa !5
  %3315 = icmp slt i32 %3313, %3314
  br i1 %3315, label %3316, label %3620

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

3617:                                             ; preds = %3316
  %3618 = load i32, ptr %96, align 4, !tbaa !5
  %3619 = add nsw i32 %3618, 8
  store i32 %3619, ptr %96, align 4, !tbaa !5
  br label %3312, !llvm.loop !77

3620:                                             ; preds = %3312
  br label %3621

3621:                                             ; preds = %3620
  %3622 = load i32, ptr %95, align 4, !tbaa !5
  %3623 = add nsw i32 %3622, 1
  store i32 %3623, ptr %95, align 4, !tbaa !5
  br label %3307, !llvm.loop !78

3624:                                             ; preds = %3307
  br label %3625

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

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

3637:                                             ; preds = %3723, %3628
  %3638 = load i32, ptr %94, align 4, !tbaa !5
  %3639 = load i32, ptr %29, align 4, !tbaa !5
  %3640 = icmp slt i32 %3638, %3639
  br i1 %3640, label %3641, label %3726

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

3642:                                             ; preds = %3719, %3641
  %3643 = load i32, ptr %96, align 4, !tbaa !5
  %3644 = load i32, ptr %19, align 4, !tbaa !5
  %3645 = sdiv i32 %3644, 4
  %3646 = icmp slt i32 %3643, %3645
  br i1 %3646, label %3647, label %3722

3647:                                             ; preds = %3642
  store i32 0, ptr %95, align 4, !tbaa !5
  br label %3648

3648:                                             ; preds = %3715, %3647
  %3649 = load i32, ptr %95, align 4, !tbaa !5
  %3650 = load i32, ptr %17, align 4, !tbaa !5
  %3651 = icmp slt i32 %3649, %3650
  br i1 %3651, label %3652, label %3718

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

3663:                                             ; preds = %3711, %3652
  %3664 = load i32, ptr %97, align 4, !tbaa !5
  %3665 = icmp slt i32 %3664, 4
  br i1 %3665, label %3666, label %3714

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

3711:                                             ; preds = %3666
  %3712 = load i32, ptr %97, align 4, !tbaa !5
  %3713 = add nsw i32 %3712, 1
  store i32 %3713, ptr %97, align 4, !tbaa !5
  br label %3663, !llvm.loop !80

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

3715:                                             ; preds = %3714
  %3716 = load i32, ptr %95, align 4, !tbaa !5
  %3717 = add nsw i32 %3716, 1
  store i32 %3717, ptr %95, align 4, !tbaa !5
  br label %3648, !llvm.loop !81

3718:                                             ; preds = %3648
  br label %3719

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

3722:                                             ; preds = %3642
  br label %3723

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

3726:                                             ; preds = %3637
  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 %3727

3727:                                             ; preds = %3726, %3181
  %3728 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %3729 = load i32, ptr %3728, align 4, !tbaa !18
  %3730 = icmp ugt i32 %3729, 0
  br i1 %3730, label %3731, label %3910

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

3754:                                             ; preds = %3896, %3731
  %3755 = load i32, ptr %106, align 4, !tbaa !5
  %3756 = load i32, ptr %29, align 4, !tbaa !5
  %3757 = icmp slt i32 %3755, %3756
  br i1 %3757, label %3758, label %3899

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

3759:                                             ; preds = %3892, %3758
  %3760 = load i32, ptr %107, align 4, !tbaa !5
  %3761 = load i32, ptr %17, align 4, !tbaa !5
  %3762 = icmp slt i32 %3760, %3761
  br i1 %3762, label %3763, label %3895

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

3764:                                             ; preds = %3888, %3763
  %3765 = load i32, ptr %108, align 4, !tbaa !5
  %3766 = load i32, ptr %19, align 4, !tbaa !5
  %3767 = sdiv i32 %3766, 2
  %3768 = icmp slt i32 %3765, %3767
  br i1 %3768, label %3769, label %3891

3769:                                             ; preds = %3764
  %3770 = load i32, ptr %108, align 4, !tbaa !5
  %3771 = srem i32 %3770, 16
  %3772 = icmp eq i32 %3771, 0
  br i1 %3772, label %3773, label %3798

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

3798:                                             ; preds = %3773, %3769
  store i32 0, ptr %109, align 4, !tbaa !5
  br label %3799

3799:                                             ; preds = %3884, %3798
  %3800 = load i32, ptr %109, align 4, !tbaa !5
  %3801 = icmp slt i32 %3800, 2
  br i1 %3801, label %3802, label %3887

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

3884:                                             ; preds = %3802
  %3885 = load i32, ptr %109, align 4, !tbaa !5
  %3886 = add nsw i32 %3885, 2
  store i32 %3886, ptr %109, align 4, !tbaa !5
  br label %3799, !llvm.loop !86

3887:                                             ; preds = %3799
  br label %3888

3888:                                             ; preds = %3887
  %3889 = load i32, ptr %108, align 4, !tbaa !5
  %3890 = add nsw i32 %3889, 1
  store i32 %3890, ptr %108, align 4, !tbaa !5
  br label %3764, !llvm.loop !87

3891:                                             ; preds = %3764
  br label %3892

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

3895:                                             ; preds = %3759
  br label %3896

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

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

3910:                                             ; preds = %3899, %3727
  %3911 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %3912 = load i32, ptr %3911, align 8, !tbaa !19
  %3913 = icmp ugt i32 %3912, 0
  br i1 %3913, label %3914, label %4091

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

3937:                                             ; preds = %4077, %3914
  %3938 = load i32, ptr %123, align 4, !tbaa !5
  %3939 = load i32, ptr %29, align 4, !tbaa !5
  %3940 = icmp slt i32 %3938, %3939
  br i1 %3940, label %3941, label %4080

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

3942:                                             ; preds = %4073, %3941
  %3943 = load i32, ptr %124, align 4, !tbaa !5
  %3944 = load i32, ptr %17, align 4, !tbaa !5
  %3945 = icmp slt i32 %3943, %3944
  br i1 %3945, label %3946, label %4076

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

3947:                                             ; preds = %4069, %3946
  %3948 = load i32, ptr %125, align 4, !tbaa !5
  %3949 = load i32, ptr %19, align 4, !tbaa !5
  %3950 = sdiv i32 %3949, 2
  %3951 = icmp slt i32 %3948, %3950
  br i1 %3951, label %3952, label %4072

3952:                                             ; preds = %3947
  %3953 = load i32, ptr %125, align 4, !tbaa !5
  %3954 = srem i32 %3953, 16
  %3955 = icmp eq i32 %3954, 0
  br i1 %3955, label %3956, label %3981

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

3981:                                             ; preds = %3956, %3952
  store i32 0, ptr %126, align 4, !tbaa !5
  br label %3982

3982:                                             ; preds = %4065, %3981
  %3983 = load i32, ptr %126, align 4, !tbaa !5
  %3984 = icmp slt i32 %3983, 2
  br i1 %3984, label %3985, label %4068

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

4065:                                             ; preds = %3985
  %4066 = load i32, ptr %126, align 4, !tbaa !5
  %4067 = add nsw i32 %4066, 2
  store i32 %4067, ptr %126, align 4, !tbaa !5
  br label %3982, !llvm.loop !90

4068:                                             ; preds = %3982
  br label %4069

4069:                                             ; preds = %4068
  %4070 = load i32, ptr %125, align 4, !tbaa !5
  %4071 = add nsw i32 %4070, 1
  store i32 %4071, ptr %125, align 4, !tbaa !5
  br label %3947, !llvm.loop !91

4072:                                             ; preds = %3947
  br label %4073

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

4076:                                             ; preds = %3942
  br label %4077

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

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

4091:                                             ; preds = %4080, %3910
  %4092 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %4093 = load i32, ptr %4092, align 4, !tbaa !20
  %4094 = icmp ugt i32 %4093, 0
  br i1 %4094, label %4095, label %4265

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

4118:                                             ; preds = %4251, %4095
  %4119 = load i32, ptr %138, align 4, !tbaa !5
  %4120 = load i32, ptr %29, align 4, !tbaa !5
  %4121 = icmp slt i32 %4119, %4120
  br i1 %4121, label %4122, label %4254

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

4123:                                             ; preds = %4247, %4122
  %4124 = load i32, ptr %139, align 4, !tbaa !5
  %4125 = load i32, ptr %17, align 4, !tbaa !5
  %4126 = icmp slt i32 %4124, %4125
  br i1 %4126, label %4127, label %4250

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

4128:                                             ; preds = %4243, %4127
  %4129 = load i32, ptr %140, align 4, !tbaa !5
  %4130 = load i32, ptr %19, align 4, !tbaa !5
  %4131 = sdiv i32 %4130, 8
  %4132 = icmp slt i32 %4129, %4131
  br i1 %4132, label %4133, label %4246

4133:                                             ; preds = %4128
  store i32 0, ptr %141, align 4, !tbaa !5
  br label %4134

4134:                                             ; preds = %4239, %4133
  %4135 = load i32, ptr %141, align 4, !tbaa !5
  %4136 = icmp slt i32 %4135, 8
  br i1 %4136, label %4137, label %4242

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

4239:                                             ; preds = %4137
  %4240 = load i32, ptr %141, align 4, !tbaa !5
  %4241 = add nsw i32 %4240, 2
  store i32 %4241, ptr %141, align 4, !tbaa !5
  br label %4134, !llvm.loop !94

4242:                                             ; preds = %4134
  br label %4243

4243:                                             ; preds = %4242
  %4244 = load i32, ptr %140, align 4, !tbaa !5
  %4245 = add nsw i32 %4244, 1
  store i32 %4245, ptr %140, align 4, !tbaa !5
  br label %4128, !llvm.loop !95

4246:                                             ; preds = %4128
  br label %4247

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

4250:                                             ; preds = %4123
  br label %4251

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

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

4265:                                             ; preds = %4254, %4091
  %4266 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  %4267 = load i32, ptr %4266, align 4, !tbaa !21
  %4268 = icmp ugt i32 %4267, 0
  br i1 %4268, label %4277, label %4269

4269:                                             ; preds = %4265
  %4270 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  %4271 = load i32, ptr %4270, align 8, !tbaa !22
  %4272 = icmp ugt i32 %4271, 0
  br i1 %4272, label %4277, label %4273

4273:                                             ; preds = %4269
  %4274 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 46
  %4275 = load i32, ptr %4274, align 4, !tbaa !23
  %4276 = icmp ugt i32 %4275, 0
  br i1 %4276, label %4277, label %4293

4277:                                             ; preds = %4273, %4269, %4265
  %4278 = load i32, ptr %30, align 4, !tbaa !5
  %4279 = icmp ne i32 %4278, 4
  br i1 %4279, label %4280, label %4293

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

4290:                                             ; preds = %4280
  %4291 = load ptr, ptr %61, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4291)
  br label %4292

4292:                                             ; preds = %4290, %4280
  br label %4293

4293:                                             ; preds = %4292, %4277, %4273
  %4294 = load i32, ptr %30, align 4, !tbaa !5
  %4295 = icmp eq i32 %4294, 4
  br i1 %4295, label %4296, label %4364

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

4300:                                             ; preds = %4360, %4296
  %4301 = load i32, ptr %152, align 4, !tbaa !5
  %4302 = load i32, ptr %19, align 4, !tbaa !5
  %4303 = icmp slt i32 %4301, %4302
  br i1 %4303, label %4304, label %4363

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

4305:                                             ; preds = %4356, %4304
  %4306 = load i32, ptr %151, align 4, !tbaa !5
  %4307 = load i32, ptr %17, align 4, !tbaa !5
  %4308 = icmp slt i32 %4306, %4307
  br i1 %4308, label %4309, label %4359

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

4315:                                             ; preds = %4309
  %4316 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4317 = load i32, ptr %4316, align 8, !tbaa !29
  %4318 = icmp eq i32 %4317, 2
  br i1 %4318, label %4319, label %4328

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

4328:                                             ; preds = %4319, %4315
  %4329 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4330 = load i32, ptr %4329, align 8, !tbaa !29
  %4331 = icmp eq i32 %4330, 3
  br i1 %4331, label %4332, label %4341

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

4341:                                             ; preds = %4332, %4328
  %4342 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4343 = load i32, ptr %4342, align 8, !tbaa !29
  %4344 = icmp eq i32 %4343, 1
  br i1 %4344, label %4345, label %4354

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

4354:                                             ; preds = %4345, %4341
  br label %4355

4355:                                             ; preds = %4354, %4309
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #10
  br label %4356

4356:                                             ; preds = %4355
  %4357 = load i32, ptr %151, align 4, !tbaa !5
  %4358 = add nsw i32 %4357, 1
  store i32 %4358, ptr %151, align 4, !tbaa !5
  br label %4305, !llvm.loop !98

4359:                                             ; preds = %4305
  br label %4360

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

4363:                                             ; preds = %4300
  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 %4364

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

4371:                                             ; preds = %4364
  %4372 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  store i32 12, ptr %4372, align 8, !tbaa !29
  br label %4373

4373:                                             ; preds = %4371, %4364
  %4374 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %4375 = load i32, ptr %4374, align 8, !tbaa !19
  %4376 = icmp ugt i32 %4375, 0
  br i1 %4376, label %4377, label %4379

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

4379:                                             ; preds = %4377, %4373
  br label %4380

4380:                                             ; preds = %4379, %3177
  %4381 = load i32, ptr %26, align 4, !tbaa !5
  %4382 = icmp sgt i32 %4381, 0
  br i1 %4382, label %4383, label %4409

4383:                                             ; preds = %4380
  %4384 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4385 = load i32, ptr %4384, align 8, !tbaa !32
  %4386 = icmp eq i32 %4385, 2
  br i1 %4386, label %4391, label %4387

4387:                                             ; preds = %4383
  %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, 3
  br i1 %4390, label %4391, label %4406

4391:                                             ; preds = %4387, %4383
  %4392 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4393 = load i32, ptr %4392, align 8, !tbaa !32
  %4394 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %4393)
  %4395 = icmp eq i32 %4394, 4
  br i1 %4395, label %4396, label %4403

4396:                                             ; preds = %4391
  %4397 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 5
  %4398 = load i32, ptr %4397, align 4, !tbaa !50
  %4399 = srem i32 %4398, 4
  %4400 = icmp eq i32 %4399, 0
  br i1 %4400, label %4401, label %4403

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

4403:                                             ; preds = %4396, %4391
  %4404 = load ptr, ptr %60, align 8, !tbaa !9
  call void @convert_output_to_vnni2(ptr noundef %44, ptr noundef %4404)
  br label %4405

4405:                                             ; preds = %4403, %4401
  br label %4408

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

4408:                                             ; preds = %4406, %4405
  br label %4409

4409:                                             ; preds = %4408, %4380
  %4410 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 39
  %4411 = load i32, ptr %4410, align 8, !tbaa !15
  %4412 = icmp ugt i32 %4411, 0
  br i1 %4412, label %4413, label %4625

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

4426:                                             ; preds = %4413
  br label %4520

4427:                                             ; preds = %4413
  %4428 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 0
  %4429 = load i32, ptr %4428, align 8, !tbaa !29
  %4430 = icmp eq i32 1, %4429
  br i1 %4430, label %4431, label %4432

4431:                                             ; preds = %4427
  br label %4518

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

4436:                                             ; preds = %4432
  br label %4516

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

4441:                                             ; preds = %4437
  br label %4514

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

4446:                                             ; preds = %4442
  br label %4512

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

4451:                                             ; preds = %4447
  br label %4510

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

4456:                                             ; preds = %4452
  br label %4508

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

4461:                                             ; preds = %4457
  br label %4506

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

4466:                                             ; preds = %4462
  br label %4504

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

4471:                                             ; preds = %4467
  br label %4502

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

4476:                                             ; preds = %4472
  br label %4500

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

4481:                                             ; preds = %4477
  br label %4498

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

4486:                                             ; preds = %4482
  br label %4496

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

4491:                                             ; preds = %4487
  br label %4494

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

4493:                                             ; No predecessors!
  br label %4494

4494:                                             ; preds = %4493, %4491
  %4495 = phi i32 [ 1, %4491 ], [ 0, %4493 ]
  br label %4496

4496:                                             ; preds = %4494, %4486
  %4497 = phi i32 [ 1, %4486 ], [ %4495, %4494 ]
  br label %4498

4498:                                             ; preds = %4496, %4481
  %4499 = phi i32 [ 2, %4481 ], [ %4497, %4496 ]
  br label %4500

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

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

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

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

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

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

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

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

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

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

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

4527:                                             ; preds = %4613, %4520
  %4528 = load i32, ptr %158, align 4, !tbaa !5
  %4529 = load i32, ptr %29, align 4, !tbaa !5
  %4530 = icmp slt i32 %4528, %4529
  br i1 %4530, label %4531, label %4616

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

4532:                                             ; preds = %4609, %4531
  %4533 = load i32, ptr %159, align 4, !tbaa !5
  %4534 = load i32, ptr %17, align 4, !tbaa !5
  %4535 = icmp slt i32 %4533, %4534
  br i1 %4535, label %4536, label %4612

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

4537:                                             ; preds = %4605, %4536
  %4538 = load i32, ptr %160, align 4, !tbaa !5
  %4539 = load i32, ptr %19, align 4, !tbaa !5
  %4540 = icmp slt i32 %4538, %4539
  br i1 %4540, label %4541, label %4608

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

4605:                                             ; preds = %4541
  %4606 = load i32, ptr %160, align 4, !tbaa !5
  %4607 = add nsw i32 %4606, 2
  store i32 %4607, ptr %160, align 4, !tbaa !5
  br label %4537, !llvm.loop !100

4608:                                             ; preds = %4537
  br label %4609

4609:                                             ; preds = %4608
  %4610 = load i32, ptr %159, align 4, !tbaa !5
  %4611 = add nsw i32 %4610, 1
  store i32 %4611, ptr %159, align 4, !tbaa !5
  br label %4532, !llvm.loop !101

4612:                                             ; preds = %4532
  br label %4613

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

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

4625:                                             ; preds = %4409
  %4626 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %4627 = load i32, ptr %4626, align 8, !tbaa !17
  %4628 = icmp ugt i32 %4627, 0
  br i1 %4628, label %4653, label %4629

4629:                                             ; preds = %4625
  %4630 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 44
  %4631 = load i32, ptr %4630, align 4, !tbaa !21
  %4632 = icmp ugt i32 %4631, 0
  br i1 %4632, label %4653, label %4633

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

4637:                                             ; preds = %4633
  %4638 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 45
  %4639 = load i32, ptr %4638, align 8, !tbaa !22
  %4640 = icmp ugt i32 %4639, 0
  br i1 %4640, label %4653, label %4641

4641:                                             ; preds = %4637
  %4642 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %4643 = load i32, ptr %4642, align 4, !tbaa !18
  %4644 = icmp ugt i32 %4643, 0
  br i1 %4644, label %4653, label %4645

4645:                                             ; preds = %4641
  %4646 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %4647 = load i32, ptr %4646, align 8, !tbaa !19
  %4648 = icmp ugt i32 %4647, 0
  br i1 %4648, label %4653, label %4649

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

4653:                                             ; preds = %4649, %4645, %4641, %4637, %4633, %4629, %4625
  %4654 = load i32, ptr %30, align 4, !tbaa !5
  %4655 = icmp ne i32 %4654, 4
  br i1 %4655, label %4656, label %4657

4656:                                             ; preds = %4653
  br label %4665

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

4665:                                             ; preds = %4657, %4656
  br label %4666

4666:                                             ; preds = %4665, %4616
  %4667 = load i32, ptr %26, align 4, !tbaa !5
  %4668 = icmp sgt i32 %4667, 0
  br i1 %4668, label %4669, label %4725

4669:                                             ; preds = %4666
  %4670 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4671 = load i32, ptr %4670, align 8, !tbaa !32
  %4672 = icmp eq i32 %4671, 2
  br i1 %4672, label %4677, label %4673

4673:                                             ; preds = %4669
  %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, 3
  br i1 %4676, label %4677, label %4712

4677:                                             ; preds = %4673, %4669
  %4678 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %4679 = load i32, ptr %4678, align 8, !tbaa !32
  %4680 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %4679)
  %4681 = icmp eq i32 %4680, 4
  br i1 %4681, label %4682, label %4699

4682:                                             ; preds = %4677
  %4683 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 5
  %4684 = load i32, ptr %4683, align 4, !tbaa !50
  %4685 = srem i32 %4684, 4
  %4686 = icmp eq i32 %4685, 0
  br i1 %4686, label %4687, label %4699

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

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

4711:                                             ; preds = %4699, %4687
  br label %4724

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

4724:                                             ; preds = %4712, %4711
  br label %4734

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

4734:                                             ; preds = %4725, %4724
  %4735 = load i32, ptr %42, align 4, !tbaa !5
  %4736 = icmp eq i32 %4735, 2
  br i1 %4736, label %4737, label %4747

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

4747:                                             ; preds = %4737, %4734
  %4748 = load i32, ptr %10, align 4, !tbaa !5
  %4749 = icmp eq i32 %4748, 12
  br i1 %4749, label %4750, label %4777

4750:                                             ; preds = %4747
  %4751 = load i32, ptr %11, align 4, !tbaa !5
  %4752 = icmp eq i32 %4751, 3
  br i1 %4752, label %4753, label %4777

4753:                                             ; preds = %4750
  %4754 = load i32, ptr %12, align 4, !tbaa !5
  %4755 = icmp eq i32 %4754, 3
  br i1 %4755, label %4762, label %4756

4756:                                             ; preds = %4753
  %4757 = load i32, ptr %12, align 4, !tbaa !5
  %4758 = icmp eq i32 %4757, 1
  br i1 %4758, label %4762, label %4759

4759:                                             ; preds = %4756
  %4760 = load i32, ptr %12, align 4, !tbaa !5
  %4761 = icmp eq i32 %4760, 14
  br i1 %4761, label %4762, label %4777

4762:                                             ; preds = %4759, %4756, %4753
  %4763 = load i32, ptr %13, align 4, !tbaa !5
  %4764 = icmp eq i32 %4763, 3
  br i1 %4764, label %4768, label %4765

4765:                                             ; preds = %4762
  %4766 = load i32, ptr %13, align 4, !tbaa !5
  %4767 = icmp eq i32 %4766, 1
  br i1 %4767, label %4768, label %4777

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

4777:                                             ; preds = %4768, %4765, %4759, %4750, %4747
  %4778 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 43
  %4779 = load i32, ptr %4778, align 8, !tbaa !17
  %4780 = icmp ugt i32 %4779, 0
  br i1 %4780, label %4781, label %4784

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

4784:                                             ; preds = %4781, %4777
  %4785 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 40
  %4786 = load i32, ptr %4785, align 4, !tbaa !18
  %4787 = icmp ugt i32 %4786, 0
  br i1 %4787, label %4796, label %4788

4788:                                             ; preds = %4784
  %4789 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 41
  %4790 = load i32, ptr %4789, align 8, !tbaa !19
  %4791 = icmp ugt i32 %4790, 0
  br i1 %4791, label %4796, label %4792

4792:                                             ; preds = %4788
  %4793 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 42
  %4794 = load i32, ptr %4793, align 4, !tbaa !20
  %4795 = icmp ugt i32 %4794, 0
  br i1 %4795, label %4796, label %4799

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

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

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

4806:                                             ; preds = %4803, %4799
  %4807 = load i32, ptr %10, align 4, !tbaa !5
  %4808 = icmp eq i32 %4807, 12
  br i1 %4808, label %4809, label %4821

4809:                                             ; preds = %4806
  %4810 = load i32, ptr %11, align 4, !tbaa !5
  %4811 = icmp eq i32 %4810, 2
  br i1 %4811, label %4812, label %4821

4812:                                             ; preds = %4809
  %4813 = load i32, ptr %13, align 4, !tbaa !5
  %4814 = icmp eq i32 %4813, 2
  br i1 %4814, label %4818, label %4815

4815:                                             ; preds = %4812
  %4816 = load i32, ptr %13, align 4, !tbaa !5
  %4817 = icmp eq i32 %4816, 1
  br i1 %4817, label %4818, label %4821

4818:                                             ; preds = %4815, %4812
  %4819 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 30
  %4820 = load ptr, ptr %4819, align 8, !tbaa !57
  call void @libxsmm_free(ptr noundef %4820)
  br label %4821

4821:                                             ; preds = %4818, %4815, %4809, %4806
  %4822 = load ptr, ptr %56, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4822)
  %4823 = load ptr, ptr %57, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4823)
  %4824 = load ptr, ptr %58, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4824)
  %4825 = load ptr, ptr %59, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4825)
  %4826 = load ptr, ptr %60, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4826)
  %4827 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %4828 = load i32, ptr %4827, align 8, !tbaa !47
  %4829 = icmp eq i32 %4828, 1
  br i1 %4829, label %4830, label %4832

4830:                                             ; preds = %4821
  %4831 = load ptr, ptr %62, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4831)
  br label %4832

4832:                                             ; preds = %4830, %4821
  %4833 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %4834 = load i32, ptr %4833, align 4, !tbaa !48
  %4835 = icmp eq i32 %4834, 2
  br i1 %4835, label %4836, label %4839

4836:                                             ; preds = %4832
  %4837 = load ptr, ptr %63, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4837)
  %4838 = load ptr, ptr %64, align 8, !tbaa !9
  call void @libxsmm_free(ptr noundef %4838)
  br label %4839

4839:                                             ; preds = %4836, %4832
  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
  %4840 = load i32, ptr %41, align 4, !tbaa !5
  %4841 = icmp ne i32 %4840, 0
  br i1 %4841, label %4842, label %4849

4842:                                             ; preds = %4839
  %4843 = load i32, ptr %41, align 4, !tbaa !5
  %4844 = icmp eq i32 %4843, 1
  br i1 %4844, label %4845, label %4847

4845:                                             ; preds = %4842
  %4846 = call i32 (ptr, ...) @printf(ptr noundef @.str.33)
  br label %4848

4847:                                             ; preds = %4842
  br label %4848

4848:                                             ; preds = %4847, %4845
  br label %4849

4849:                                             ; preds = %4848, %4839
  %4850 = load i32, ptr %42, align 4, !tbaa !5
  %4851 = icmp ne i32 %4850, 0
  br i1 %4851, label %4852, label %4871

4852:                                             ; preds = %4849
  %4853 = load i32, ptr %42, align 4, !tbaa !5
  %4854 = icmp eq i32 %4853, 1
  br i1 %4854, label %4855, label %4857

4855:                                             ; preds = %4852
  %4856 = call i32 (ptr, ...) @printf(ptr noundef @.str.34)
  br label %4870

4857:                                             ; preds = %4852
  %4858 = load i32, ptr %42, align 4, !tbaa !5
  %4859 = icmp eq i32 %4858, 2
  br i1 %4859, label %4860, label %4862

4860:                                             ; preds = %4857
  %4861 = call i32 (ptr, ...) @printf(ptr noundef @.str.35)
  br label %4869

4862:                                             ; preds = %4857
  %4863 = load i32, ptr %42, align 4, !tbaa !5
  %4864 = icmp eq i32 %4863, 3
  br i1 %4864, label %4865, label %4867

4865:                                             ; preds = %4862
  %4866 = call i32 (ptr, ...) @printf(ptr noundef @.str.36)
  br label %4868

4867:                                             ; preds = %4862
  br label %4868

4868:                                             ; preds = %4867, %4865
  br label %4869

4869:                                             ; preds = %4868, %4860
  br label %4870

4870:                                             ; preds = %4869, %4855
  br label %4871

4871:                                             ; preds = %4870, %4849
  %4872 = load i32, ptr %26, align 4, !tbaa !5
  %4873 = icmp sgt i32 %4872, 0
  br i1 %4873, label %4874, label %4876

4874:                                             ; preds = %4871
  %4875 = call i32 (ptr, ...) @printf(ptr noundef @.str.37)
  br label %4876

4876:                                             ; preds = %4874, %4871
  %4877 = load double, ptr %53, align 8, !tbaa !11
  %4878 = fcmp ogt double %4877, 8.000000e-03
  br i1 %4878, label %4879, label %4883

4879:                                             ; preds = %4876
  %4880 = load i32, ptr %47, align 4, !tbaa !5
  %4881 = icmp eq i32 %4880, 0
  br i1 %4881, label %4882, label %4883

4882:                                             ; preds = %4879
  store i32 1, ptr %47, align 4, !tbaa !5
  br label %4888

4883:                                             ; preds = %4879, %4876
  %4884 = load i32, ptr %47, align 4, !tbaa !5
  %4885 = icmp eq i32 %4884, 1
  br i1 %4885, label %4886, label %4887

4886:                                             ; preds = %4883
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %4887

4887:                                             ; preds = %4886, %4883
  br label %4888

4888:                                             ; preds = %4887, %4882
  %4889 = load i32, ptr %33, align 4, !tbaa !5
  %4890 = icmp eq i32 %4889, 0
  br i1 %4890, label %4891, label %4925

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

4921:                                             ; preds = %4891
  %4922 = load double, ptr %54, align 8, !tbaa !11
  %4923 = call i32 (ptr, ...) @printf(ptr noundef @.str.41, double noundef %4922)
  br label %4924

4924:                                             ; preds = %4921, %4891
  br label %5133

4925:                                             ; preds = %4888
  %4926 = load i32, ptr %36, align 4, !tbaa !5
  %4927 = icmp eq i32 %4926, 1
  br i1 %4927, label %4928, label %5008

4928:                                             ; preds = %4925
  %4929 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %4930 = load i32, ptr %4929, align 4, !tbaa !48
  %4931 = icmp eq i32 %4930, 2
  br i1 %4931, label %4932, label %4970

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

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

5007:                                             ; preds = %4970, %4932
  br label %5044

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

5044:                                             ; preds = %5008, %5007
  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
  %5045 = load i32, ptr %43, align 4, !tbaa !5
  switch i32 %5045, label %5048 [
    i32 0, label %5046
    i32 1, label %5047
  ]

5046:                                             ; preds = %5044
  store ptr @.str.10, ptr %166, align 8, !tbaa !9
  br label %5049

5047:                                             ; preds = %5044
  store ptr @.str.11, ptr %166, align 8, !tbaa !9
  br label %5049

5048:                                             ; preds = %5044
  store ptr @.str.45, ptr %166, align 8, !tbaa !9
  br label %5049

5049:                                             ; preds = %5048, %5047, %5046
  %5050 = load i32, ptr %30, align 4, !tbaa !5
  switch i32 %5050, label %5056 [
    i32 0, label %5051
    i32 1, label %5052
    i32 2, label %5053
    i32 3, label %5054
    i32 4, label %5055
  ]

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

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

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

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

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

5056:                                             ; preds = %5049
  store ptr @.str.45, ptr %167, align 8, !tbaa !9
  br label %5057

5057:                                             ; preds = %5056, %5055, %5054, %5053, %5052, %5051
  %5058 = load ptr, ptr %166, align 8, !tbaa !9
  %5059 = icmp ne ptr null, %5058
  br i1 %5059, label %5060, label %5064

5060:                                             ; preds = %5057
  %5061 = load ptr, ptr %167, align 8, !tbaa !9
  %5062 = icmp ne ptr null, %5061
  br i1 %5062, label %5063, label %5064

5063:                                             ; preds = %5060
  br label %5065

5064:                                             ; preds = %5060, %5057
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str.32, i32 noundef 3813, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

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

5127:                                             ; preds = %5065
  %5128 = load double, ptr %53, align 8, !tbaa !11
  %5129 = call i32 (ptr, ...) @printf(ptr noundef @.str.40, double noundef %5128)
  br label %5132

5130:                                             ; preds = %5065
  %5131 = call i32 (ptr, ...) @printf(ptr noundef @.str.50)
  br label %5132

5132:                                             ; preds = %5130, %5127
  br label %5133

5133:                                             ; preds = %5132, %4924
  %5134 = load double, ptr %37, align 8, !tbaa !11
  %5135 = load double, ptr %53, align 8, !tbaa !11
  %5136 = fcmp olt double %5134, %5135
  br i1 %5136, label %5137, label %5145

5137:                                             ; preds = %5133
  %5138 = load i32, ptr %36, align 4, !tbaa !5
  %5139 = icmp eq i32 %5138, 1
  br i1 %5139, label %5140, label %5145

5140:                                             ; preds = %5137
  %5141 = load i32, ptr %47, align 4, !tbaa !5
  %5142 = icmp eq i32 %5141, 0
  br i1 %5142, label %5143, label %5145

5143:                                             ; preds = %5140
  %5144 = load double, ptr %53, align 8, !tbaa !11
  store double %5144, ptr %37, align 8, !tbaa !11
  br label %5145

5145:                                             ; preds = %5143, %5140, %5137, %5133
  %5146 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5147 = load i32, ptr %5146, align 4, !tbaa !48
  %5148 = icmp eq i32 %5147, 2
  br i1 %5148, label %5149, label %5162

5149:                                             ; preds = %5145
  %5150 = load double, ptr %38, align 8, !tbaa !11
  %5151 = load double, ptr %54, align 8, !tbaa !11
  %5152 = fcmp olt double %5150, %5151
  br i1 %5152, label %5153, label %5161

5153:                                             ; preds = %5149
  %5154 = load i32, ptr %36, align 4, !tbaa !5
  %5155 = icmp eq i32 %5154, 1
  br i1 %5155, label %5156, label %5161

5156:                                             ; preds = %5153
  %5157 = load i32, ptr %47, align 4, !tbaa !5
  %5158 = icmp eq i32 %5157, 0
  br i1 %5158, label %5159, label %5161

5159:                                             ; preds = %5156
  %5160 = load double, ptr %54, align 8, !tbaa !11
  store double %5160, ptr %38, align 8, !tbaa !11
  br label %5161

5161:                                             ; preds = %5159, %5156, %5153, %5149
  br label %5162

5162:                                             ; preds = %5161, %5145
  %5163 = load i64, ptr @tests_executed, align 8, !tbaa !103
  %5164 = add i64 %5163, 1
  store i64 %5164, ptr @tests_executed, align 8, !tbaa !103
  store i32 0, ptr %49, align 4
  br label %5165

5165:                                             ; preds = %5162, %1645
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  %5166 = load i32, ptr %49, align 4
  switch i32 %5166, label %5383 [
    i32 0, label %5167
    i32 2, label %5187
  ]

5167:                                             ; preds = %5165
  br label %5168

5168:                                             ; preds = %5167
  %5169 = load i32, ptr %46, align 4, !tbaa !5
  %5170 = icmp ugt i32 %5169, 0
  br i1 %5170, label %5171, label %5174

5171:                                             ; preds = %5168
  %5172 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5173 = icmp eq i32 %5172, 0
  br i1 %5173, label %5185, label %5174

5174:                                             ; preds = %5171, %5168
  %5175 = load i32, ptr %46, align 4, !tbaa !5
  %5176 = icmp ugt i32 %5175, 0
  br i1 %5176, label %5177, label %5183

5177:                                             ; preds = %5174
  %5178 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5179 = icmp ugt i32 %5178, 0
  br i1 %5179, label %5180, label %5183

5180:                                             ; preds = %5177
  %5181 = load i64, ptr @tests_executed, align 8, !tbaa !103
  %5182 = icmp ult i64 %5181, 10
  br label %5183

5183:                                             ; preds = %5180, %5177, %5174
  %5184 = phi i1 [ false, %5177 ], [ false, %5174 ], [ %5182, %5180 ]
  br label %5185

5185:                                             ; preds = %5183, %5171
  %5186 = phi i1 [ true, %5171 ], [ %5184, %5183 ]
  br i1 %5186, label %1622, label %5187, !llvm.loop !105

5187:                                             ; preds = %5185, %5165
  %5188 = load i32, ptr %33, align 4, !tbaa !5
  %5189 = icmp ne i32 %5188, 0
  br i1 %5189, label %5190, label %5193

5190:                                             ; preds = %5187
  %5191 = load ptr, ptr %35, align 8, !tbaa !9
  %5192 = call i32 @fclose(ptr noundef %5191)
  br label %5195

5193:                                             ; preds = %5187
  %5194 = call i32 (ptr, ...) @printf(ptr noundef @.str.27)
  br label %5195

5195:                                             ; preds = %5193, %5190
  %5196 = load double, ptr %37, align 8, !tbaa !11
  %5197 = call i32 (ptr, ...) @printf(ptr noundef @.str.51, double noundef %5196)
  %5198 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5199 = load i32, ptr %5198, align 4, !tbaa !48
  %5200 = icmp eq i32 %5199, 2
  br i1 %5200, label %5201, label %5204

5201:                                             ; preds = %5195
  %5202 = load double, ptr %38, align 8, !tbaa !11
  %5203 = call i32 (ptr, ...) @printf(ptr noundef @.str.52, double noundef %5202)
  br label %5204

5204:                                             ; preds = %5201, %5195
  %5205 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %5206 = load i32, ptr %5205, align 8, !tbaa !32
  %5207 = icmp eq i32 %5206, 2
  br i1 %5207, label %5208, label %5241

5208:                                             ; preds = %5204
  %5209 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5210 = load i32, ptr %5209, align 4, !tbaa !48
  %5211 = icmp eq i32 %5210, 3
  br i1 %5211, label %5212, label %5219

5212:                                             ; preds = %5208
  %5213 = load double, ptr %37, align 8, !tbaa !11
  %5214 = fcmp oge double %5213, 7.000000e-03
  br i1 %5214, label %5215, label %5216

5215:                                             ; preds = %5212
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5216:                                             ; preds = %5212
  %5217 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5218 = call i32 @libxsmm_return_success_code(i32 noundef %5217)
  store i32 %5218, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5219:                                             ; preds = %5208
  %5220 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5221 = load i32, ptr %5220, align 4, !tbaa !48
  %5222 = icmp eq i32 %5221, 2
  br i1 %5222, label %5227, label %5223

5223:                                             ; preds = %5219
  %5224 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5225 = load i32, ptr %5224, align 4, !tbaa !48
  %5226 = icmp eq i32 %5225, 1
  br i1 %5226, label %5227, label %5234

5227:                                             ; preds = %5223, %5219
  %5228 = load double, ptr %38, align 8, !tbaa !11
  %5229 = fcmp oge double %5228, 5.000000e-03
  br i1 %5229, label %5230, label %5231

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

5231:                                             ; preds = %5227
  %5232 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5233 = call i32 @libxsmm_return_success_code(i32 noundef %5232)
  store i32 %5233, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

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

5237:                                             ; preds = %5234
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

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

5241:                                             ; preds = %5204
  %5242 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 1
  %5243 = load i32, ptr %5242, align 4, !tbaa !30
  %5244 = icmp eq i32 %5243, 3
  br i1 %5244, label %5245, label %5252

5245:                                             ; preds = %5241
  %5246 = load double, ptr %37, align 8, !tbaa !11
  %5247 = fcmp oge double %5246, 8.000000e-03
  br i1 %5247, label %5248, label %5249

5248:                                             ; preds = %5245
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5249:                                             ; preds = %5245
  %5250 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5251 = call i32 @libxsmm_return_success_code(i32 noundef %5250)
  store i32 %5251, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5252:                                             ; preds = %5241
  %5253 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %5254 = load i32, ptr %5253, align 8, !tbaa !32
  %5255 = icmp eq i32 %5254, 4
  br i1 %5255, label %5256, label %5300

5256:                                             ; preds = %5252
  %5257 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5258 = load i32, ptr %5257, align 4, !tbaa !48
  %5259 = icmp eq i32 %5258, 3
  br i1 %5259, label %5260, label %5278

5260:                                             ; preds = %5256
  %5261 = load double, ptr %37, align 8, !tbaa !11
  %5262 = fcmp oge double %5261, 0x3F826E978D4FDF3B
  br i1 %5262, label %5263, label %5275

5263:                                             ; preds = %5260
  %5264 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %5265 = load i32, ptr %5264, align 8, !tbaa !47
  %5266 = icmp eq i32 %5265, 1
  br i1 %5266, label %5267, label %5268

5267:                                             ; preds = %5263
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5268:                                             ; preds = %5263
  %5269 = load double, ptr %37, align 8, !tbaa !11
  %5270 = fcmp oge double %5269, 1.800000e-02
  br i1 %5270, label %5271, label %5272

5271:                                             ; preds = %5268
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5272:                                             ; preds = %5268
  %5273 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5274 = call i32 @libxsmm_return_success_code(i32 noundef %5273)
  store i32 %5274, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5275:                                             ; preds = %5260
  %5276 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5277 = call i32 @libxsmm_return_success_code(i32 noundef %5276)
  store i32 %5277, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5278:                                             ; preds = %5256
  %5279 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5280 = load i32, ptr %5279, align 4, !tbaa !48
  %5281 = icmp eq i32 %5280, 2
  br i1 %5281, label %5286, label %5282

5282:                                             ; preds = %5278
  %5283 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5284 = load i32, ptr %5283, align 4, !tbaa !48
  %5285 = icmp eq i32 %5284, 1
  br i1 %5285, label %5286, label %5293

5286:                                             ; preds = %5282, %5278
  %5287 = load double, ptr %38, align 8, !tbaa !11
  %5288 = fcmp oge double %5287, 5.000000e-03
  br i1 %5288, label %5289, label %5290

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

5290:                                             ; preds = %5286
  %5291 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5292 = call i32 @libxsmm_return_success_code(i32 noundef %5291)
  store i32 %5292, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5293:                                             ; preds = %5282
  %5294 = load double, ptr %37, align 8, !tbaa !11
  %5295 = fcmp oge double %5294, 5.000000e-03
  br i1 %5295, label %5296, label %5297

5296:                                             ; preds = %5293
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5297:                                             ; preds = %5293
  %5298 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5299 = call i32 @libxsmm_return_success_code(i32 noundef %5298)
  store i32 %5299, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5300:                                             ; preds = %5252
  %5301 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 2
  %5302 = load i32, ptr %5301, align 8, !tbaa !32
  %5303 = icmp eq i32 %5302, 5
  br i1 %5303, label %5304, label %5348

5304:                                             ; preds = %5300
  %5305 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5306 = load i32, ptr %5305, align 4, !tbaa !48
  %5307 = icmp eq i32 %5306, 3
  br i1 %5307, label %5308, label %5326

5308:                                             ; preds = %5304
  %5309 = load double, ptr %37, align 8, !tbaa !11
  %5310 = fcmp oge double %5309, 0x3F826E978D4FDF3B
  br i1 %5310, label %5311, label %5323

5311:                                             ; preds = %5308
  %5312 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 37
  %5313 = load i32, ptr %5312, align 8, !tbaa !47
  %5314 = icmp eq i32 %5313, 1
  br i1 %5314, label %5315, label %5316

5315:                                             ; preds = %5311
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5316:                                             ; preds = %5311
  %5317 = load double, ptr %37, align 8, !tbaa !11
  %5318 = fcmp oge double %5317, 1.800000e-02
  br i1 %5318, label %5319, label %5320

5319:                                             ; preds = %5316
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5320:                                             ; preds = %5316
  %5321 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5322 = call i32 @libxsmm_return_success_code(i32 noundef %5321)
  store i32 %5322, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5323:                                             ; preds = %5308
  %5324 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5325 = call i32 @libxsmm_return_success_code(i32 noundef %5324)
  store i32 %5325, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5326:                                             ; preds = %5304
  %5327 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5328 = load i32, ptr %5327, align 4, !tbaa !48
  %5329 = icmp eq i32 %5328, 2
  br i1 %5329, label %5334, label %5330

5330:                                             ; preds = %5326
  %5331 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5332 = load i32, ptr %5331, align 4, !tbaa !48
  %5333 = icmp eq i32 %5332, 1
  br i1 %5333, label %5334, label %5341

5334:                                             ; preds = %5330, %5326
  %5335 = load double, ptr %38, align 8, !tbaa !11
  %5336 = fcmp oge double %5335, 5.000000e-03
  br i1 %5336, label %5337, label %5338

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

5338:                                             ; preds = %5334
  %5339 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5340 = call i32 @libxsmm_return_success_code(i32 noundef %5339)
  store i32 %5340, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5341:                                             ; preds = %5330
  %5342 = load double, ptr %37, align 8, !tbaa !11
  %5343 = fcmp oge double %5342, 5.000000e-03
  br i1 %5343, label %5344, label %5345

5344:                                             ; preds = %5341
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

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

5348:                                             ; preds = %5300
  %5349 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5350 = load i32, ptr %5349, align 4, !tbaa !48
  %5351 = icmp eq i32 %5350, 3
  br i1 %5351, label %5352, label %5359

5352:                                             ; preds = %5348
  %5353 = load double, ptr %37, align 8, !tbaa !11
  %5354 = fcmp oge double %5353, 7.000000e-04
  br i1 %5354, label %5355, label %5356

5355:                                             ; preds = %5352
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5356:                                             ; preds = %5352
  %5357 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5358 = call i32 @libxsmm_return_success_code(i32 noundef %5357)
  store i32 %5358, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5359:                                             ; preds = %5348
  %5360 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5361 = load i32, ptr %5360, align 4, !tbaa !48
  %5362 = icmp eq i32 %5361, 2
  br i1 %5362, label %5367, label %5363

5363:                                             ; preds = %5359
  %5364 = getelementptr inbounds %struct.gemm_def, ptr %44, i32 0, i32 38
  %5365 = load i32, ptr %5364, align 4, !tbaa !48
  %5366 = icmp eq i32 %5365, 1
  br i1 %5366, label %5367, label %5374

5367:                                             ; preds = %5363, %5359
  %5368 = load double, ptr %38, align 8, !tbaa !11
  %5369 = fcmp oge double %5368, 2.000000e-05
  br i1 %5369, label %5370, label %5371

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

5371:                                             ; preds = %5367
  %5372 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5373 = call i32 @libxsmm_return_success_code(i32 noundef %5372)
  store i32 %5373, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5374:                                             ; preds = %5363
  %5375 = load double, ptr %37, align 8, !tbaa !11
  %5376 = fcmp oge double %5375, 1.200000e-05
  br i1 %5376, label %5377, label %5378

5377:                                             ; preds = %5374
  store i32 1, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5378:                                             ; preds = %5374
  %5379 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %5380 = call i32 @libxsmm_return_success_code(i32 noundef %5379)
  store i32 %5380, ptr %3, align 4
  store i32 1, ptr %49, align 4
  br label %5381

5381:                                             ; preds = %5378, %5377, %5371, %5370, %5356, %5355, %5345, %5344, %5338, %5337, %5323, %5320, %5319, %5315, %5297, %5296, %5290, %5289, %5275, %5272, %5271, %5267, %5249, %5248, %5238, %5237, %5231, %5230, %5216, %5215, %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
  %5382 = load i32, ptr %3, align 4
  ret i32 %5382

5383:                                             ; preds = %5165
  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

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

declare ptr @libxsmm_stristr(ptr noundef, ptr noundef) #6

declare i32 @libxsmm_cpuid(ptr noundef) #6

declare i32 @printf(ptr noundef, ...) #6

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

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

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #7

declare noalias ptr @fopen(ptr noundef, ptr noundef) #6

declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #6

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

declare void @libxsmm_rng_set_seed(i32 noundef) #6

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

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

declare void @libxsmm_convert_f16_f32(ptr noundef, ptr noundef, i64 noundef) #6

; Function Attrs: inlinehint nounwind uwtable
declare hidden double @get_random_pos_p5_num() #4

; Function Attrs: nounwind
declare i32 @rand() #5

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

declare void @libxsmm_rne_convert_fp32_bf16(ptr noundef, ptr noundef, i64 noundef) #6

declare void @libxsmm_convert_hf8_f32(ptr noundef, ptr noundef, i64 noundef) #6

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

; 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() #6

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

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

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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 [15 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [55 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.21 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [77 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [23 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.52 = 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 %struct.fusion_args, align 8
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca i16, align 2
  %19 = 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
  %20 = getelementptr inbounds i8, ptr %9, i64 192
  %21 = getelementptr inbounds i8, ptr %9, i64 208
  %22 = getelementptr inbounds i8, ptr %9, i64 196
  %23 = getelementptr inbounds i8, ptr %9, i64 200
  %24 = getelementptr inbounds i8, ptr %9, i64 204
  %25 = getelementptr inbounds i8, ptr %9, i64 212
  %26 = getelementptr inbounds i8, ptr %9, i64 216
  %27 = getelementptr inbounds i8, ptr %9, i64 220
  %28 = add i32 %0, -29
  %or.cond5 = icmp ult i32 %28, -4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %20, i8 0, i64 32, i1 false)
  br i1 %or.cond5, label %195, label %29

29:                                               ; preds = %2
  %30 = getelementptr inbounds i8, ptr %1, i64 8
  %31 = load ptr, ptr %30, align 8, !tbaa !9
  %32 = getelementptr inbounds i8, ptr %1, i64 16
  %33 = load ptr, ptr %32, align 8, !tbaa !9
  %34 = getelementptr inbounds i8, ptr %1, i64 24
  %35 = load ptr, ptr %34, align 8, !tbaa !9
  %36 = getelementptr inbounds i8, ptr %1, i64 32
  %37 = load ptr, ptr %36, align 8, !tbaa !9
  %38 = getelementptr inbounds i8, ptr %9, i64 224
  store i32 0, ptr %38, align 8, !tbaa !11
  %39 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str) #14
  %40 = icmp eq i32 %39, 0
  br i1 %40, label %41, label %42

41:                                               ; preds = %29
  store i32 1, ptr %20, align 8, !tbaa !15
  store i32 1, ptr %38, align 8, !tbaa !11
  br label %94

42:                                               ; preds = %29
  %43 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.1) #14
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %54

45:                                               ; preds = %42
  %46 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.2) #14
  %47 = icmp eq i32 %46, 0
  br i1 %47, label %48, label %49

48:                                               ; preds = %45
  store i32 1, ptr %20, align 8, !tbaa !15
  br label %49

49:                                               ; preds = %48, %45
  %50 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.3) #14
  %51 = icmp eq i32 %50, 0
  br i1 %51, label %52, label %53

52:                                               ; preds = %49
  store i32 1, ptr %21, align 8, !tbaa !16
  br label %53

53:                                               ; preds = %52, %49
  %.1 = phi i32 [ 12, %52 ], [ 13, %49 ]
  store i32 1, ptr %38, align 8, !tbaa !11
  br label %94

54:                                               ; preds = %42
  %55 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.4) #14
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %57, label %69

57:                                               ; preds = %54
  %58 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %59 = icmp eq i32 %58, 0
  br i1 %59, label %60, label %61

60:                                               ; preds = %57
  store i32 1, ptr %22, align 4, !tbaa !17
  br label %61

61:                                               ; preds = %60, %57
  %62 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.6) #14
  %63 = icmp eq i32 %62, 0
  br i1 %63, label %64, label %65

64:                                               ; preds = %61
  store i32 1, ptr %23, align 8, !tbaa !18
  br label %65

65:                                               ; preds = %64, %61
  %66 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.7) #14
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %68, label %94

68:                                               ; preds = %65
  store i32 1, ptr %24, align 4, !tbaa !19
  br label %94

69:                                               ; preds = %54
  %70 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.8) #14
  %71 = icmp eq i32 %70, 0
  br i1 %71, label %72, label %85

72:                                               ; preds = %69
  %73 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %74 = icmp eq i32 %73, 0
  br i1 %74, label %75, label %76

75:                                               ; preds = %72
  store i32 1, ptr %25, align 4, !tbaa !20
  br label %94

76:                                               ; preds = %72
  %77 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.2) #14
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %79, label %85

79:                                               ; preds = %76
  %80 = getelementptr inbounds i8, ptr %1, i64 136
  %81 = load ptr, ptr %80, align 8, !tbaa !9
  %82 = tail call i32 @atoi(ptr nocapture noundef %81) #14
  %83 = icmp sgt i32 %82, 0
  br i1 %83, label %84, label %85

84:                                               ; preds = %79
  store i32 1, ptr %26, align 8, !tbaa !21
  br label %94

85:                                               ; preds = %69, %79, %76
  %86 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.9) #14
  %87 = icmp eq i32 %86, 0
  br i1 %87, label %88, label %92

88:                                               ; preds = %85
  %89 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %90 = icmp eq i32 %89, 0
  br i1 %90, label %91, label %92

91:                                               ; preds = %88
  store i32 1, ptr %27, align 4, !tbaa !22
  br label %94

92:                                               ; preds = %88, %85
  %93 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %31)
  br label %94

94:                                               ; preds = %53, %75, %91, %92, %84, %65, %68, %41
  %.4 = phi i32 [ 12, %41 ], [ %.1, %53 ], [ 12, %68 ], [ 12, %65 ], [ 2, %75 ], [ 3, %84 ], [ 2, %91 ], [ %93, %92 ]
  %95 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %33)
  %96 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %35)
  %97 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %37)
  %98 = getelementptr inbounds i8, ptr %1, i64 40
  %99 = load ptr, ptr %98, align 8, !tbaa !9
  %100 = tail call i32 @atoi(ptr nocapture noundef %99) #14
  store i32 %100, ptr %6, align 4, !tbaa !5
  %101 = getelementptr inbounds i8, ptr %1, i64 48
  %102 = load ptr, ptr %101, align 8, !tbaa !9
  %103 = tail call i32 @atoi(ptr nocapture noundef %102) #14
  store i32 %103, ptr %7, align 4, !tbaa !5
  %104 = getelementptr inbounds i8, ptr %1, i64 56
  %105 = load ptr, ptr %104, align 8, !tbaa !9
  %106 = tail call i32 @atoi(ptr nocapture noundef %105) #14
  store i32 %106, ptr %8, align 4, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %1, i64 64
  %108 = load ptr, ptr %107, align 8, !tbaa !9
  %109 = tail call i32 @atoi(ptr nocapture noundef %108) #14
  store i32 %109, ptr %3, align 4, !tbaa !5
  %110 = getelementptr inbounds i8, ptr %1, i64 72
  %111 = load ptr, ptr %110, align 8, !tbaa !9
  %112 = tail call i32 @atoi(ptr nocapture noundef %111) #14
  store i32 %112, ptr %4, align 4, !tbaa !5
  %113 = getelementptr inbounds i8, ptr %1, i64 80
  %114 = load ptr, ptr %113, align 8, !tbaa !9
  %115 = tail call i32 @atoi(ptr nocapture noundef %114) #14
  store i32 %115, ptr %5, align 4, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %1, i64 88
  %117 = load ptr, ptr %116, align 8, !tbaa !9
  %118 = tail call double @atof(ptr noundef %117) #14
  %119 = getelementptr inbounds i8, ptr %1, i64 96
  %120 = load ptr, ptr %119, align 8, !tbaa !9
  %121 = tail call double @atof(ptr noundef %120) #14
  %122 = getelementptr inbounds i8, ptr %1, i64 104
  %123 = load ptr, ptr %122, align 8, !tbaa !9
  %124 = tail call i32 @atoi(ptr nocapture noundef %123) #14
  %125 = getelementptr inbounds i8, ptr %1, i64 112
  %126 = load ptr, ptr %125, align 8, !tbaa !9
  %127 = tail call i32 @atoi(ptr nocapture noundef %126) #14
  %128 = getelementptr inbounds i8, ptr %1, i64 120
  %129 = load ptr, ptr %128, align 8, !tbaa !9
  %130 = tail call i32 @atoi(ptr nocapture noundef %129) #14
  %131 = getelementptr inbounds i8, ptr %1, i64 128
  %132 = load ptr, ptr %131, align 8, !tbaa !9
  %133 = tail call i32 @atoi(ptr nocapture noundef %132) #14
  %134 = getelementptr inbounds i8, ptr %1, i64 136
  %135 = load ptr, ptr %134, align 8, !tbaa !9
  %136 = tail call i32 @atoi(ptr nocapture noundef %135) #14
  %137 = getelementptr inbounds i8, ptr %1, i64 144
  %138 = load ptr, ptr %137, align 8, !tbaa !9
  %139 = tail call i32 @atoi(ptr nocapture noundef %138) #14
  %140 = getelementptr inbounds i8, ptr %1, i64 152
  %141 = load ptr, ptr %140, align 8, !tbaa !9
  %142 = tail call i32 @atoi(ptr nocapture noundef %141) #14
  %143 = getelementptr inbounds i8, ptr %1, i64 160
  %144 = load ptr, ptr %143, align 8, !tbaa !9
  %145 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.10, ptr noundef nonnull dereferenceable(1) %144) #14
  %146 = icmp eq i32 %145, 0
  br i1 %146, label %151, label %147

147:                                              ; preds = %94
  %148 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.11, ptr noundef nonnull dereferenceable(1) %144) #14
  %149 = icmp eq i32 %148, 0
  br i1 %149, label %151, label %150

150:                                              ; preds = %147
  tail call void @print_help()
  br label %1853

151:                                              ; preds = %147, %94
  %.01736 = phi i32 [ 0, %94 ], [ 1, %147 ]
  %152 = getelementptr inbounds i8, ptr %1, i64 168
  %153 = load ptr, ptr %152, align 8, !tbaa !9
  %154 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.12, ptr noundef nonnull dereferenceable(1) %153) #14
  %155 = icmp eq i32 %154, 0
  br i1 %155, label %174, label %156

156:                                              ; preds = %151
  %157 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef nonnull dereferenceable(1) %153) #14
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %174, label %159

159:                                              ; preds = %156
  %160 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.14, ptr noundef nonnull dereferenceable(1) %153) #14
  %161 = icmp eq i32 %160, 0
  br i1 %161, label %174, label %162

162:                                              ; preds = %159
  %163 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.15, ptr noundef nonnull dereferenceable(1) %153) #14
  %164 = icmp eq i32 %163, 0
  br i1 %164, label %174, label %165

165:                                              ; preds = %162
  %166 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.16, ptr noundef nonnull dereferenceable(1) %153) #14
  %167 = icmp eq i32 %166, 0
  br i1 %167, label %169, label %168

168:                                              ; preds = %165
  tail call void @print_help()
  br label %1853

169:                                              ; preds = %165
  %170 = getelementptr inbounds i8, ptr %1, i64 176
  %171 = load ptr, ptr %170, align 8, !tbaa !9
  %172 = tail call double @atof(ptr noundef %171) #14
  %173 = fptrunc double %172 to float
  br label %178

174:                                              ; preds = %151, %156, %159, %162
  %.01685.ph = phi i32 [ 3, %162 ], [ 2, %159 ], [ 1, %156 ], [ 0, %151 ]
  %175 = getelementptr inbounds i8, ptr %1, i64 176
  %176 = load ptr, ptr %175, align 8, !tbaa !9
  %177 = tail call i32 @atoi(ptr nocapture noundef %176) #14
  br label %178

178:                                              ; preds = %174, %169
  %.016851862 = phi i32 [ 4, %169 ], [ %.01685.ph, %174 ]
  %.01746 = phi float [ %173, %169 ], [ 0x3FD99999A0000000, %174 ]
  %.01682 = phi i32 [ 1, %169 ], [ %177, %174 ]
  %179 = getelementptr inbounds i8, ptr %1, i64 184
  %180 = load ptr, ptr %179, align 8, !tbaa !9
  %181 = tail call i32 @atoi(ptr nocapture noundef %180) #14
  %182 = getelementptr inbounds i8, ptr %1, i64 192
  %183 = load ptr, ptr %182, align 8, !tbaa !9
  %184 = tail call i32 @atoi(ptr nocapture noundef %183) #14
  %185 = icmp ugt i32 %0, 25
  br i1 %185, label %186, label %.thread1868

186:                                              ; preds = %178
  %187 = getelementptr inbounds i8, ptr %1, i64 200
  %188 = load ptr, ptr %187, align 8, !tbaa !9
  %189 = tail call i32 @atoi(ptr nocapture noundef %188) #14
  %.not1964 = icmp eq i32 %0, 26
  br i1 %.not1964, label %.thread1868, label %190

190:                                              ; preds = %186
  %191 = getelementptr inbounds i8, ptr %1, i64 208
  %192 = load ptr, ptr %191, align 8, !tbaa !9
  %193 = tail call i32 @atoi(ptr nocapture noundef %192) #14
  %194 = icmp ugt i32 %0, 27
  br i1 %194, label %.thread1868.sink.split, label %.thread1868

195:                                              ; preds = %2
  %196 = and i32 %0, -4
  %switch1857 = icmp eq i32 %196, 20
  br i1 %switch1857, label %197, label %341

197:                                              ; preds = %195
  %198 = getelementptr inbounds i8, ptr %1, i64 8
  %199 = load ptr, ptr %198, align 8, !tbaa !9
  %200 = getelementptr inbounds i8, ptr %1, i64 16
  %201 = load ptr, ptr %200, align 8, !tbaa !9
  %202 = getelementptr inbounds i8, ptr %1, i64 24
  %203 = load ptr, ptr %202, align 8, !tbaa !9
  %204 = getelementptr inbounds i8, ptr %1, i64 32
  %205 = load ptr, ptr %204, align 8, !tbaa !9
  %206 = getelementptr inbounds i8, ptr %9, i64 224
  store i32 0, ptr %206, align 8, !tbaa !11
  %207 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %199, ptr noundef nonnull dereferenceable(1) @.str) #14
  %208 = icmp eq i32 %207, 0
  br i1 %208, label %209, label %210

209:                                              ; preds = %197
  store i32 1, ptr %20, align 8, !tbaa !15
  store i32 1, ptr %206, align 8, !tbaa !11
  br label %262

210:                                              ; preds = %197
  %211 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %199, ptr noundef nonnull dereferenceable(1) @.str.1) #14
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %222

213:                                              ; preds = %210
  %214 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.2) #14
  %215 = icmp eq i32 %214, 0
  br i1 %215, label %216, label %217

216:                                              ; preds = %213
  store i32 1, ptr %20, align 8, !tbaa !15
  br label %217

217:                                              ; preds = %216, %213
  %218 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.3) #14
  %219 = icmp eq i32 %218, 0
  br i1 %219, label %220, label %221

220:                                              ; preds = %217
  store i32 1, ptr %21, align 8, !tbaa !16
  br label %221

221:                                              ; preds = %220, %217
  %.6 = phi i32 [ 12, %220 ], [ 13, %217 ]
  store i32 1, ptr %206, align 8, !tbaa !11
  br label %262

222:                                              ; preds = %210
  %223 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %199, ptr noundef nonnull dereferenceable(1) @.str.4) #14
  %224 = icmp eq i32 %223, 0
  br i1 %224, label %225, label %237

225:                                              ; preds = %222
  %226 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %227 = icmp eq i32 %226, 0
  br i1 %227, label %228, label %229

228:                                              ; preds = %225
  store i32 1, ptr %22, align 4, !tbaa !17
  br label %229

229:                                              ; preds = %228, %225
  %230 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.6) #14
  %231 = icmp eq i32 %230, 0
  br i1 %231, label %232, label %233

232:                                              ; preds = %229
  store i32 1, ptr %23, align 8, !tbaa !18
  br label %233

233:                                              ; preds = %232, %229
  %234 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.7) #14
  %235 = icmp eq i32 %234, 0
  br i1 %235, label %236, label %262

236:                                              ; preds = %233
  store i32 1, ptr %24, align 4, !tbaa !19
  br label %262

237:                                              ; preds = %222
  %238 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %199, ptr noundef nonnull dereferenceable(1) @.str.8) #14
  %239 = icmp eq i32 %238, 0
  br i1 %239, label %240, label %253

240:                                              ; preds = %237
  %241 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %242 = icmp eq i32 %241, 0
  br i1 %242, label %243, label %244

243:                                              ; preds = %240
  store i32 1, ptr %25, align 4, !tbaa !20
  br label %262

244:                                              ; preds = %240
  %245 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.2) #14
  %246 = icmp eq i32 %245, 0
  br i1 %246, label %247, label %253

247:                                              ; preds = %244
  %248 = getelementptr inbounds i8, ptr %1, i64 96
  %249 = load ptr, ptr %248, align 8, !tbaa !9
  %250 = tail call i32 @atoi(ptr nocapture noundef %249) #14
  %251 = icmp sgt i32 %250, 0
  br i1 %251, label %252, label %253

252:                                              ; preds = %247
  store i32 1, ptr %26, align 8, !tbaa !21
  br label %262

253:                                              ; preds = %237, %247, %244
  %254 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %199, ptr noundef nonnull dereferenceable(1) @.str.9) #14
  %255 = icmp eq i32 %254, 0
  br i1 %255, label %256, label %260

256:                                              ; preds = %253
  %257 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.5) #14
  %258 = icmp eq i32 %257, 0
  br i1 %258, label %259, label %260

259:                                              ; preds = %256
  store i32 1, ptr %27, align 4, !tbaa !22
  br label %262

260:                                              ; preds = %256, %253
  %261 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %199)
  br label %262

262:                                              ; preds = %221, %243, %259, %260, %252, %233, %236, %209
  %.9 = phi i32 [ 12, %209 ], [ %.6, %221 ], [ 12, %236 ], [ 12, %233 ], [ 2, %243 ], [ 3, %252 ], [ 2, %259 ], [ %261, %260 ]
  %263 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %201)
  %264 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %203)
  %265 = tail call i32 @char_to_libxsmm_datatype(ptr noundef %205)
  %266 = getelementptr inbounds i8, ptr %1, i64 40
  %267 = load ptr, ptr %266, align 8, !tbaa !9
  %268 = getelementptr inbounds i8, ptr %1, i64 48
  %269 = load ptr, ptr %268, align 8, !tbaa !9
  %270 = tail call double @atof(ptr noundef %269) #14
  %271 = getelementptr inbounds i8, ptr %1, i64 56
  %272 = load ptr, ptr %271, align 8, !tbaa !9
  %273 = tail call double @atof(ptr noundef %272) #14
  %274 = getelementptr inbounds i8, ptr %1, i64 64
  %275 = load ptr, ptr %274, align 8, !tbaa !9
  %276 = tail call i32 @atoi(ptr nocapture noundef %275) #14
  %277 = getelementptr inbounds i8, ptr %1, i64 72
  %278 = load ptr, ptr %277, align 8, !tbaa !9
  %279 = tail call i32 @atoi(ptr nocapture noundef %278) #14
  %280 = getelementptr inbounds i8, ptr %1, i64 80
  %281 = load ptr, ptr %280, align 8, !tbaa !9
  %282 = tail call i32 @atoi(ptr nocapture noundef %281) #14
  %283 = getelementptr inbounds i8, ptr %1, i64 88
  %284 = load ptr, ptr %283, align 8, !tbaa !9
  %285 = tail call i32 @atoi(ptr nocapture noundef %284) #14
  %286 = getelementptr inbounds i8, ptr %1, i64 96
  %287 = load ptr, ptr %286, align 8, !tbaa !9
  %288 = tail call i32 @atoi(ptr nocapture noundef %287) #14
  %289 = getelementptr inbounds i8, ptr %1, i64 104
  %290 = load ptr, ptr %289, align 8, !tbaa !9
  %291 = tail call i32 @atoi(ptr nocapture noundef %290) #14
  %292 = getelementptr inbounds i8, ptr %1, i64 112
  %293 = load ptr, ptr %292, align 8, !tbaa !9
  %294 = tail call i32 @atoi(ptr nocapture noundef %293) #14
  %295 = getelementptr inbounds i8, ptr %1, i64 120
  %296 = load ptr, ptr %295, align 8, !tbaa !9
  %297 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.12, ptr noundef nonnull dereferenceable(1) %296) #14
  %298 = icmp eq i32 %297, 0
  br i1 %298, label %317, label %299

299:                                              ; preds = %262
  %300 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef nonnull dereferenceable(1) %296) #14
  %301 = icmp eq i32 %300, 0
  br i1 %301, label %317, label %302

302:                                              ; preds = %299
  %303 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.14, ptr noundef nonnull dereferenceable(1) %296) #14
  %304 = icmp eq i32 %303, 0
  br i1 %304, label %317, label %305

305:                                              ; preds = %302
  %306 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.15, ptr noundef nonnull dereferenceable(1) %296) #14
  %307 = icmp eq i32 %306, 0
  br i1 %307, label %317, label %308

308:                                              ; preds = %305
  %309 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @.str.16, ptr noundef nonnull dereferenceable(1) %296) #14
  %310 = icmp eq i32 %309, 0
  br i1 %310, label %312, label %311

311:                                              ; preds = %308
  tail call void @print_help()
  br label %1853

312:                                              ; preds = %308
  %313 = getelementptr inbounds i8, ptr %1, i64 128
  %314 = load ptr, ptr %313, align 8, !tbaa !9
  %315 = tail call double @atof(ptr noundef %314) #14
  %316 = fptrunc double %315 to float
  br label %321

317:                                              ; preds = %262, %299, %302, %305
  %.11686.ph = phi i32 [ 3, %305 ], [ 2, %302 ], [ 1, %299 ], [ 0, %262 ]
  %318 = getelementptr inbounds i8, ptr %1, i64 128
  %319 = load ptr, ptr %318, align 8, !tbaa !9
  %320 = tail call i32 @atoi(ptr nocapture noundef %319) #14
  br label %321

321:                                              ; preds = %317, %312
  %.116861875 = phi i32 [ 4, %312 ], [ %.11686.ph, %317 ]
  %.11747 = phi float [ %316, %312 ], [ 0x3FD99999A0000000, %317 ]
  %.11683 = phi i32 [ 1, %312 ], [ %320, %317 ]
  %322 = getelementptr inbounds i8, ptr %1, i64 136
  %323 = load ptr, ptr %322, align 8, !tbaa !9
  %324 = tail call i32 @atoi(ptr nocapture noundef %323) #14
  %325 = getelementptr inbounds i8, ptr %1, i64 144
  %326 = load ptr, ptr %325, align 8, !tbaa !9
  %327 = tail call i32 @atoi(ptr nocapture noundef %326) #14
  %328 = getelementptr inbounds i8, ptr %1, i64 152
  %329 = load ptr, ptr %328, align 8, !tbaa !9
  %330 = tail call i32 @atoi(ptr nocapture noundef %329) #14
  %331 = icmp ugt i32 %0, 20
  br i1 %331, label %332, label %.thread1868

332:                                              ; preds = %321
  %333 = getelementptr inbounds i8, ptr %1, i64 160
  %334 = load ptr, ptr %333, align 8, !tbaa !9
  %335 = tail call i32 @atoi(ptr nocapture noundef %334) #14
  %.not1965 = icmp eq i32 %0, 21
  br i1 %.not1965, label %.thread1868, label %336

336:                                              ; preds = %332
  %337 = getelementptr inbounds i8, ptr %1, i64 168
  %338 = load ptr, ptr %337, align 8, !tbaa !9
  %339 = tail call i32 @atoi(ptr nocapture noundef %338) #14
  %340 = icmp ugt i32 %0, 22
  br i1 %340, label %.thread1868.sink.split, label %.thread1868

341:                                              ; preds = %195
  tail call void @print_help()
  br label %1853

.thread1868.sink.split:                           ; preds = %336, %190
  %.sink = phi i64 [ 216, %190 ], [ 176, %336 ]
  %.21748.ph = phi float [ %.01746, %190 ], [ %.11747, %336 ]
  %.11737.ph = phi i32 [ %.01736, %190 ], [ 0, %336 ]
  %.21732.ph = phi i32 [ %193, %190 ], [ %339, %336 ]
  %.01725.ph = phi i32 [ %184, %190 ], [ %327, %336 ]
  %.21723.ph = phi i32 [ %189, %190 ], [ %335, %336 ]
  %.01710.ph = phi i32 [ 1, %190 ], [ %330, %336 ]
  %.01704.ph = phi ptr [ null, %190 ], [ %267, %336 ]
  %.01699.ph = phi i32 [ 0, %190 ], [ 1, %336 ]
  %.01688.ph = phi i32 [ %181, %190 ], [ %324, %336 ]
  %.21687.ph = phi i32 [ %.016851862, %190 ], [ %.116861875, %336 ]
  %.21684.ph = phi i32 [ %.01682, %190 ], [ %.11683, %336 ]
  %.01676.ph = phi double [ %121, %190 ], [ %273, %336 ]
  %.01675.ph = phi double [ %118, %190 ], [ %270, %336 ]
  %.01674.ph = phi i32 [ %142, %190 ], [ %294, %336 ]
  %.01673.ph = phi i32 [ %139, %190 ], [ %291, %336 ]
  %.01672.ph = phi i32 [ %136, %190 ], [ %288, %336 ]
  %.01671.ph = phi i32 [ %133, %190 ], [ %285, %336 ]
  %.01670.ph = phi i32 [ %130, %190 ], [ %282, %336 ]
  %.01669.ph = phi i32 [ %127, %190 ], [ %279, %336 ]
  %.01666.ph = phi i32 [ %124, %190 ], [ %276, %336 ]
  %.01665.ph = phi i32 [ %97, %190 ], [ %265, %336 ]
  %.01664.ph = phi i32 [ %96, %190 ], [ %264, %336 ]
  %.01662.ph = phi i32 [ %95, %190 ], [ %263, %336 ]
  %.10.ph = phi i32 [ %.4, %190 ], [ %.9, %336 ]
  %.01657.ph = phi ptr [ %37, %190 ], [ %205, %336 ]
  %.01656.ph = phi ptr [ %35, %190 ], [ %203, %336 ]
  %.01655.ph = phi ptr [ %33, %190 ], [ %201, %336 ]
  %.01654.ph = phi ptr [ %31, %190 ], [ %199, %336 ]
  %342 = getelementptr inbounds i8, ptr %1, i64 %.sink
  %343 = load ptr, ptr %342, align 8, !tbaa !9
  %344 = tail call i32 @atoi(ptr nocapture noundef %343) #14
  br label %.thread1868

.thread1868:                                      ; preds = %.thread1868.sink.split, %321, %332, %178, %186, %336, %190
  %.21748 = phi float [ %.01746, %190 ], [ %.11747, %336 ], [ %.01746, %186 ], [ %.01746, %178 ], [ %.11747, %332 ], [ %.11747, %321 ], [ %.21748.ph, %.thread1868.sink.split ]
  %.11737 = phi i32 [ %.01736, %190 ], [ 0, %336 ], [ %.01736, %186 ], [ %.01736, %178 ], [ 0, %332 ], [ 0, %321 ], [ %.11737.ph, %.thread1868.sink.split ]
  %.21735 = phi i32 [ 0, %190 ], [ 0, %336 ], [ 0, %186 ], [ 0, %178 ], [ 0, %332 ], [ 0, %321 ], [ %344, %.thread1868.sink.split ]
  %.21732 = phi i32 [ %193, %190 ], [ %339, %336 ], [ 0, %186 ], [ 0, %178 ], [ 0, %332 ], [ 0, %321 ], [ %.21732.ph, %.thread1868.sink.split ]
  %.01725 = phi i32 [ %184, %190 ], [ %327, %336 ], [ %184, %186 ], [ %184, %178 ], [ %327, %332 ], [ %327, %321 ], [ %.01725.ph, %.thread1868.sink.split ]
  %.21723 = phi i32 [ %189, %190 ], [ %335, %336 ], [ %189, %186 ], [ 0, %178 ], [ %335, %332 ], [ 0, %321 ], [ %.21723.ph, %.thread1868.sink.split ]
  %.01710 = phi i32 [ 1, %190 ], [ %330, %336 ], [ 1, %186 ], [ 1, %178 ], [ %330, %332 ], [ %330, %321 ], [ %.01710.ph, %.thread1868.sink.split ]
  %.01704 = phi ptr [ null, %190 ], [ %267, %336 ], [ null, %186 ], [ null, %178 ], [ %267, %332 ], [ %267, %321 ], [ %.01704.ph, %.thread1868.sink.split ]
  %.01699 = phi i32 [ 0, %190 ], [ 1, %336 ], [ 0, %186 ], [ 0, %178 ], [ 1, %332 ], [ 1, %321 ], [ %.01699.ph, %.thread1868.sink.split ]
  %.01688 = phi i32 [ %181, %190 ], [ %324, %336 ], [ %181, %186 ], [ %181, %178 ], [ %324, %332 ], [ %324, %321 ], [ %.01688.ph, %.thread1868.sink.split ]
  %.21687 = phi i32 [ %.016851862, %190 ], [ %.116861875, %336 ], [ %.016851862, %186 ], [ %.016851862, %178 ], [ %.116861875, %332 ], [ %.116861875, %321 ], [ %.21687.ph, %.thread1868.sink.split ]
  %.21684 = phi i32 [ %.01682, %190 ], [ %.11683, %336 ], [ %.01682, %186 ], [ %.01682, %178 ], [ %.11683, %332 ], [ %.11683, %321 ], [ %.21684.ph, %.thread1868.sink.split ]
  %.01676 = phi double [ %121, %190 ], [ %273, %336 ], [ %121, %186 ], [ %121, %178 ], [ %273, %332 ], [ %273, %321 ], [ %.01676.ph, %.thread1868.sink.split ]
  %.01675 = phi double [ %118, %190 ], [ %270, %336 ], [ %118, %186 ], [ %118, %178 ], [ %270, %332 ], [ %270, %321 ], [ %.01675.ph, %.thread1868.sink.split ]
  %.01674 = phi i32 [ %142, %190 ], [ %294, %336 ], [ %142, %186 ], [ %142, %178 ], [ %294, %332 ], [ %294, %321 ], [ %.01674.ph, %.thread1868.sink.split ]
  %.01673 = phi i32 [ %139, %190 ], [ %291, %336 ], [ %139, %186 ], [ %139, %178 ], [ %291, %332 ], [ %291, %321 ], [ %.01673.ph, %.thread1868.sink.split ]
  %.01672 = phi i32 [ %136, %190 ], [ %288, %336 ], [ %136, %186 ], [ %136, %178 ], [ %288, %332 ], [ %288, %321 ], [ %.01672.ph, %.thread1868.sink.split ]
  %.01671 = phi i32 [ %133, %190 ], [ %285, %336 ], [ %133, %186 ], [ %133, %178 ], [ %285, %332 ], [ %285, %321 ], [ %.01671.ph, %.thread1868.sink.split ]
  %.01670 = phi i32 [ %130, %190 ], [ %282, %336 ], [ %130, %186 ], [ %130, %178 ], [ %282, %332 ], [ %282, %321 ], [ %.01670.ph, %.thread1868.sink.split ]
  %.01669 = phi i32 [ %127, %190 ], [ %279, %336 ], [ %127, %186 ], [ %127, %178 ], [ %279, %332 ], [ %279, %321 ], [ %.01669.ph, %.thread1868.sink.split ]
  %.01666 = phi i32 [ %124, %190 ], [ %276, %336 ], [ %124, %186 ], [ %124, %178 ], [ %276, %332 ], [ %276, %321 ], [ %.01666.ph, %.thread1868.sink.split ]
  %.01665 = phi i32 [ %97, %190 ], [ %265, %336 ], [ %97, %186 ], [ %97, %178 ], [ %265, %332 ], [ %265, %321 ], [ %.01665.ph, %.thread1868.sink.split ]
  %.01664 = phi i32 [ %96, %190 ], [ %264, %336 ], [ %96, %186 ], [ %96, %178 ], [ %264, %332 ], [ %264, %321 ], [ %.01664.ph, %.thread1868.sink.split ]
  %.01662 = phi i32 [ %95, %190 ], [ %263, %336 ], [ %95, %186 ], [ %95, %178 ], [ %263, %332 ], [ %263, %321 ], [ %.01662.ph, %.thread1868.sink.split ]
  %.10 = phi i32 [ %.4, %190 ], [ %.9, %336 ], [ %.4, %186 ], [ %.4, %178 ], [ %.9, %332 ], [ %.9, %321 ], [ %.10.ph, %.thread1868.sink.split ]
  %.01657 = phi ptr [ %37, %190 ], [ %205, %336 ], [ %37, %186 ], [ %37, %178 ], [ %205, %332 ], [ %205, %321 ], [ %.01657.ph, %.thread1868.sink.split ]
  %.01656 = phi ptr [ %35, %190 ], [ %203, %336 ], [ %35, %186 ], [ %35, %178 ], [ %203, %332 ], [ %203, %321 ], [ %.01656.ph, %.thread1868.sink.split ]
  %.01655 = phi ptr [ %33, %190 ], [ %201, %336 ], [ %33, %186 ], [ %33, %178 ], [ %201, %332 ], [ %201, %321 ], [ %.01655.ph, %.thread1868.sink.split ]
  %.01654 = phi ptr [ %31, %190 ], [ %199, %336 ], [ %31, %186 ], [ %31, %178 ], [ %199, %332 ], [ %199, %321 ], [ %.01654.ph, %.thread1868.sink.split ]
  %345 = tail call ptr @getenv(ptr noundef nonnull @.str.17) #13
  %346 = tail call ptr @libxsmm_stristr(ptr noundef %345, ptr noundef nonnull @.str.18) #13
  %347 = icmp eq ptr %345, %346
  br i1 %347, label %351, label %348

348:                                              ; preds = %.thread1868
  %349 = tail call ptr @libxsmm_stristr(ptr noundef %345, ptr noundef nonnull @.str.19) #13
  %350 = icmp eq ptr %345, %349
  br label %351

351:                                              ; preds = %348, %.thread1868
  %352 = phi i1 [ true, %.thread1868 ], [ %350, %348 ]
  %353 = tail call i32 @libxsmm_cpuid(ptr noundef null) #13
  %354 = xor i1 %352, true
  %355 = icmp slt i32 %353, 1104
  %or.cond13 = select i1 %354, i1 %355, i1 false
  %356 = icmp ne i32 %.21723, 0
  %or.cond15 = select i1 %or.cond13, i1 %356, i1 false
  br i1 %or.cond15, label %357, label %359

357:                                              ; preds = %351
  %358 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20)
  br label %359

359:                                              ; preds = %357, %351
  %.31724 = phi i32 [ 0, %357 ], [ %.21723, %351 ]
  %360 = tail call i32 @llvm.smax.i32(i32 %.21684, i32 1)
  %361 = icmp eq i32 %.21687, 0
  %362 = icmp eq i32 %.21687, 4
  %or.cond17 = or i1 %361, %362
  %363 = select i1 %or.cond17, i32 1, i32 %360
  %364 = select i1 %or.cond17, i32 0, i32 %.01688
  %365 = fcmp une double %.01675, 1.000000e+00
  br i1 %365, label %366, label %369

366:                                              ; preds = %359
  %367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %368 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %367, ptr noundef nonnull @.str.21) #15
  tail call void @exit(i32 noundef 1) #16
  unreachable

369:                                              ; preds = %359
  %370 = fcmp une double %.01676, 0.000000e+00
  %371 = fcmp une double %.01676, 1.000000e+00
  %or.cond21 = and i1 %370, %371
  br i1 %or.cond21, label %372, label %375

372:                                              ; preds = %369
  %373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %374 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %373, ptr noundef nonnull @.str.22) #15
  tail call void @exit(i32 noundef 1) #16
  unreachable

375:                                              ; preds = %369
  %376 = icmp sgt i32 %.01674, 0
  %or.cond23 = select i1 %370, i1 %376, i1 false
  br i1 %or.cond23, label %377, label %380

377:                                              ; preds = %375
  %378 = load ptr, ptr @stderr, align 8, !tbaa !9
  %379 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %378, ptr noundef nonnull @.str.23) #15
  br label %380

380:                                              ; preds = %377, %375
  %.11677 = phi double [ 0.000000e+00, %377 ], [ %.01676, %375 ]
  %381 = icmp eq i32 %.10, 0
  %382 = icmp eq i32 %.01662, 0
  %or.cond25 = select i1 %381, i1 %382, i1 false
  %383 = icmp eq i32 %.01664, 0
  %or.cond27 = select i1 %or.cond25, i1 %383, i1 false
  %384 = icmp eq i32 %.01665, 0
  %or.cond29 = select i1 %or.cond27, i1 %384, i1 false
  br i1 %or.cond29, label %.thread1888, label %385

385:                                              ; preds = %380
  %386 = icmp eq i32 %.10, 1
  %387 = icmp eq i32 %.01662, 1
  %or.cond31 = select i1 %386, i1 %387, i1 false
  %388 = icmp eq i32 %.01664, 1
  %or.cond33 = select i1 %or.cond31, i1 %388, i1 false
  %389 = icmp eq i32 %.01665, 1
  %or.cond35 = select i1 %or.cond33, i1 %389, i1 false
  br i1 %or.cond35, label %.thread1888, label %390

390:                                              ; preds = %385
  %391 = icmp eq i32 %.10, 10
  %392 = icmp eq i32 %.01662, 10
  %or.cond37 = select i1 %391, i1 %392, i1 false
  %393 = icmp eq i32 %.01664, 8
  %or.cond39 = select i1 %or.cond37, i1 %393, i1 false
  %394 = icmp eq i32 %.01665, 8
  %or.cond41 = select i1 %or.cond39, i1 %394, i1 false
  br i1 %or.cond41, label %.thread1888, label %395

395:                                              ; preds = %390
  %396 = icmp eq i32 %.10, 13
  %397 = icmp eq i32 %.01662, 13
  %or.cond43 = select i1 %396, i1 %397, i1 false
  %or.cond45 = select i1 %or.cond43, i1 %393, i1 false
  %or.cond47 = select i1 %or.cond45, i1 %394, i1 false
  br i1 %or.cond47, label %.thread1887, label %398

398:                                              ; preds = %395
  %399 = icmp eq i32 %.10, 12
  %400 = icmp eq i32 %.01662, 12
  %or.cond49 = select i1 %399, i1 %400, i1 false
  %or.cond51 = select i1 %or.cond49, i1 %393, i1 false
  %or.cond53 = select i1 %or.cond51, i1 %394, i1 false
  br i1 %or.cond53, label %.thread1888, label %401

401:                                              ; preds = %398
  %or.cond55 = select i1 %396, i1 %400, i1 false
  %or.cond57 = select i1 %or.cond55, i1 %393, i1 false
  %or.cond59 = select i1 %or.cond57, i1 %394, i1 false
  br i1 %or.cond59, label %.thread1887, label %402

402:                                              ; preds = %401
  %or.cond61 = select i1 %399, i1 %397, i1 false
  %or.cond63 = select i1 %or.cond61, i1 %393, i1 false
  %or.cond65 = select i1 %or.cond63, i1 %394, i1 false
  %or.cond71 = select i1 %or.cond45, i1 %389, i1 false
  %or.cond = select i1 %or.cond65, i1 true, i1 %or.cond71
  %or.cond77 = select i1 %or.cond51, i1 %389, i1 false
  %or.cond1819 = select i1 %or.cond, i1 true, i1 %or.cond77
  br i1 %or.cond1819, label %453, label %403

403:                                              ; preds = %402
  %404 = icmp eq i32 %.01665, 2
  %or.cond83 = select i1 %or.cond51, i1 %404, i1 false
  %or.cond89 = select i1 %or.cond57, i1 %389, i1 false
  %or.cond1820 = select i1 %or.cond83, i1 true, i1 %or.cond89
  %or.cond95 = select i1 %or.cond63, i1 %389, i1 false
  %or.cond1821 = select i1 %or.cond1820, i1 true, i1 %or.cond95
  br i1 %or.cond1821, label %453, label %405

405:                                              ; preds = %403
  %406 = icmp eq i32 %.01662, 2
  %or.cond97 = select i1 %399, i1 %406, i1 false
  %or.cond99 = select i1 %or.cond97, i1 %388, i1 false
  %407 = add i32 %.01665, -1
  %408 = icmp ult i32 %407, 2
  %or.cond1822 = select i1 %or.cond99, i1 %408, i1 false
  br i1 %or.cond1822, label %.thread1888, label %409

409:                                              ; preds = %405
  %or.cond109 = select i1 %399, i1 %387, i1 false
  %or.cond111 = select i1 %or.cond109, i1 %388, i1 false
  %or.cond113 = select i1 %or.cond111, i1 %389, i1 false
  br i1 %or.cond113, label %.thread1888, label %410

410:                                              ; preds = %409
  %411 = icmp eq i32 %.10, 4
  %or.cond115 = select i1 %411, i1 %406, i1 false
  %or.cond117 = select i1 %or.cond115, i1 %388, i1 false
  %or.cond1823 = select i1 %or.cond117, i1 %408, i1 false
  br i1 %or.cond1823, label %.thread1888, label %412

412:                                              ; preds = %410
  %413 = icmp eq i32 %.10, 5
  %or.cond127 = select i1 %413, i1 %406, i1 false
  %or.cond129 = select i1 %or.cond127, i1 %388, i1 false
  %or.cond1824 = select i1 %or.cond129, i1 %408, i1 false
  br i1 %or.cond1824, label %.thread1888, label %414

414:                                              ; preds = %412
  %or.cond139 = select i1 %396, i1 %406, i1 false
  %or.cond141 = select i1 %or.cond139, i1 %388, i1 false
  %or.cond1825 = select i1 %or.cond141, i1 %408, i1 false
  br i1 %or.cond1825, label %.thread1887, label %415

415:                                              ; preds = %414
  %416 = icmp eq i32 %.01662, 3
  %or.cond151 = select i1 %411, i1 %416, i1 false
  %417 = icmp eq i32 %.01664, 3
  %or.cond153 = select i1 %or.cond151, i1 %417, i1 false
  %418 = icmp eq i32 %.01665, 3
  %or.cond155 = select i1 %or.cond153, i1 %418, i1 false
  br i1 %or.cond155, label %.thread1888, label %419

419:                                              ; preds = %415
  %or.cond159 = select i1 %or.cond151, i1 %388, i1 false
  %or.cond161 = select i1 %or.cond159, i1 %418, i1 false
  br i1 %or.cond161, label %.thread1888, label %420

420:                                              ; preds = %419
  %421 = icmp eq i32 %.01664, 14
  %or.cond165 = select i1 %or.cond151, i1 %421, i1 false
  %or.cond167 = select i1 %or.cond165, i1 %418, i1 false
  %or.cond173 = select i1 %or.cond153, i1 %389, i1 false
  %or.cond1826 = select i1 %or.cond167, i1 true, i1 %or.cond173
  %or.cond179 = select i1 %or.cond159, i1 %389, i1 false
  %or.cond1827 = select i1 %or.cond1826, i1 true, i1 %or.cond179
  %or.cond185 = select i1 %or.cond165, i1 %389, i1 false
  %or.cond1828 = select i1 %or.cond1827, i1 true, i1 %or.cond185
  br i1 %or.cond1828, label %453, label %422

422:                                              ; preds = %420
  %or.cond187 = select i1 %399, i1 %416, i1 false
  %or.cond189 = select i1 %or.cond187, i1 %417, i1 false
  %or.cond191 = select i1 %or.cond189, i1 %418, i1 false
  br i1 %or.cond191, label %.thread1888, label %423

423:                                              ; preds = %422
  %or.cond195 = select i1 %or.cond187, i1 %388, i1 false
  %or.cond197 = select i1 %or.cond195, i1 %418, i1 false
  br i1 %or.cond197, label %.thread1888, label %424

424:                                              ; preds = %423
  %or.cond201 = select i1 %or.cond187, i1 %421, i1 false
  %or.cond203 = select i1 %or.cond201, i1 %418, i1 false
  %or.cond209 = select i1 %or.cond189, i1 %389, i1 false
  %or.cond1829 = select i1 %or.cond203, i1 true, i1 %or.cond209
  %or.cond215 = select i1 %or.cond195, i1 %389, i1 false
  %or.cond1830 = select i1 %or.cond1829, i1 true, i1 %or.cond215
  %or.cond221 = select i1 %or.cond201, i1 %389, i1 false
  %or.cond1831 = select i1 %or.cond1830, i1 true, i1 %or.cond221
  br i1 %or.cond1831, label %453, label %425

425:                                              ; preds = %424
  %or.cond223 = select i1 %396, i1 %416, i1 false
  %or.cond225 = select i1 %or.cond223, i1 %417, i1 false
  %or.cond227 = select i1 %or.cond225, i1 %418, i1 false
  br i1 %or.cond227, label %.thread1887, label %426

426:                                              ; preds = %425
  %or.cond231 = select i1 %or.cond223, i1 %388, i1 false
  %or.cond233 = select i1 %or.cond231, i1 %418, i1 false
  br i1 %or.cond233, label %.thread1887, label %427

427:                                              ; preds = %426
  %or.cond237 = select i1 %or.cond223, i1 %421, i1 false
  %or.cond239 = select i1 %or.cond237, i1 %418, i1 false
  %or.cond245 = select i1 %or.cond225, i1 %389, i1 false
  %or.cond1832 = select i1 %or.cond239, i1 true, i1 %or.cond245
  %or.cond251 = select i1 %or.cond231, i1 %389, i1 false
  %or.cond1833 = select i1 %or.cond1832, i1 true, i1 %or.cond251
  %or.cond257 = select i1 %or.cond237, i1 %389, i1 false
  %or.cond1834 = select i1 %or.cond1833, i1 true, i1 %or.cond257
  br i1 %or.cond1834, label %453, label %428

428:                                              ; preds = %427
  %429 = icmp eq i32 %.10, 3
  %or.cond259 = select i1 %429, i1 %416, i1 false
  %or.cond261 = select i1 %or.cond259, i1 %417, i1 false
  %or.cond263 = select i1 %or.cond261, i1 %418, i1 false
  br i1 %or.cond263, label %.thread1888, label %430

430:                                              ; preds = %428
  %or.cond267 = select i1 %or.cond259, i1 %388, i1 false
  %or.cond269 = select i1 %or.cond267, i1 %418, i1 false
  br i1 %or.cond269, label %.thread1888, label %431

431:                                              ; preds = %430
  %or.cond273 = select i1 %or.cond259, i1 %421, i1 false
  %or.cond275 = select i1 %or.cond273, i1 %418, i1 false
  %or.cond281 = select i1 %or.cond261, i1 %389, i1 false
  %or.cond1835 = select i1 %or.cond275, i1 true, i1 %or.cond281
  %or.cond293 = select i1 %or.cond267, i1 %389, i1 false
  %or.cond1836 = select i1 %or.cond1835, i1 true, i1 %or.cond293
  %or.cond299 = select i1 %or.cond273, i1 %389, i1 false
  %or.cond1837 = select i1 %or.cond1836, i1 true, i1 %or.cond299
  br i1 %or.cond1837, label %453, label %432

432:                                              ; preds = %431
  %433 = icmp eq i32 %.10, 2
  %or.cond301 = select i1 %433, i1 %406, i1 false
  %or.cond303 = select i1 %or.cond301, i1 %388, i1 false
  %or.cond1838 = select i1 %or.cond303, i1 %408, i1 false
  br i1 %or.cond1838, label %.thread1888, label %434

434:                                              ; preds = %432
  %435 = icmp eq i32 %.01662, 4
  %or.cond313 = select i1 %411, i1 %435, i1 false
  %or.cond315 = select i1 %or.cond313, i1 %388, i1 false
  %436 = icmp eq i32 %.01665, 4
  %437 = or i1 %389, %436
  %or.cond1839 = select i1 %or.cond315, i1 %437, i1 false
  br i1 %or.cond1839, label %.thread1888, label %438

438:                                              ; preds = %434
  %439 = icmp eq i32 %.01662, 5
  %or.cond325 = select i1 %413, i1 %439, i1 false
  %or.cond327 = select i1 %or.cond325, i1 %388, i1 false
  %440 = icmp eq i32 %.01665, 5
  %441 = or i1 %389, %440
  %or.cond1840 = select i1 %or.cond327, i1 %441, i1 false
  br i1 %or.cond1840, label %.thread1888, label %442

442:                                              ; preds = %438
  %443 = load ptr, ptr @stderr, align 8, !tbaa !9
  %444 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %443, ptr noundef nonnull @.str.24, ptr noundef %.01654, ptr noundef %.01655, ptr noundef %.01656, ptr noundef %.01657) #15
  tail call void @exit(i32 noundef 1) #16
  unreachable

.thread1888:                                      ; preds = %380, %385, %390, %398, %405, %409, %410, %412, %415, %419, %422, %423, %428, %430, %432, %434, %438
  %445 = getelementptr inbounds i8, ptr %9, i64 84
  store i32 0, ptr %445, align 4, !tbaa !23
  %446 = getelementptr inbounds i8, ptr %9, i64 88
  store i32 0, ptr %446, align 8, !tbaa !24
  %447 = getelementptr inbounds i8, ptr %9, i64 92
  store i32 0, ptr %447, align 4, !tbaa !25
  %448 = getelementptr inbounds i8, ptr %9, i64 124
  store float 0.000000e+00, ptr %448, align 4, !tbaa !26
  br label %467

.thread1887:                                      ; preds = %426, %425, %414, %401, %395
  %449 = getelementptr inbounds i8, ptr %9, i64 84
  %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 %458

453:                                              ; preds = %431, %427, %424, %420, %403, %402
  %454 = getelementptr inbounds i8, ptr %9, i64 84
  store i32 0, ptr %454, align 4, !tbaa !23
  %455 = getelementptr inbounds i8, ptr %9, i64 88
  store i32 0, ptr %455, align 8, !tbaa !24
  %456 = getelementptr inbounds i8, ptr %9, i64 92
  store i32 0, ptr %456, align 4, !tbaa !25
  %457 = getelementptr inbounds i8, ptr %9, i64 124
  store float 0.000000e+00, ptr %457, align 4, !tbaa !26
  br i1 %396, label %458, label %462

458:                                              ; preds = %.thread1887, %453
  %459 = phi ptr [ %452, %.thread1887 ], [ %457, %453 ]
  %460 = phi ptr [ %450, %.thread1887 ], [ %455, %453 ]
  %461 = phi ptr [ %449, %.thread1887 ], [ %454, %453 ]
  store i32 1, ptr %461, align 4, !tbaa !23
  br label %462

462:                                              ; preds = %458, %453
  %463 = phi ptr [ %459, %458 ], [ %457, %453 ]
  %464 = phi ptr [ %460, %458 ], [ %455, %453 ]
  %465 = phi ptr [ %461, %458 ], [ %454, %453 ]
  %.11 = phi i32 [ 12, %458 ], [ %.10, %453 ]
  br i1 %397, label %466, label %467

466:                                              ; preds = %462
  store i32 1, ptr %464, align 8, !tbaa !24
  br label %467

467:                                              ; preds = %.thread1888, %466, %462
  %.111890 = phi i32 [ %.11, %466 ], [ %.11, %462 ], [ %.10, %.thread1888 ]
  %468 = phi ptr [ %465, %466 ], [ %465, %462 ], [ %445, %.thread1888 ]
  %469 = phi ptr [ %464, %466 ], [ %464, %462 ], [ %446, %.thread1888 ]
  %470 = phi ptr [ %463, %466 ], [ %463, %462 ], [ %448, %.thread1888 ]
  %.11663 = phi i32 [ 12, %466 ], [ %.01662, %462 ], [ %.01662, %.thread1888 ]
  %471 = icmp eq i32 %.111890, 12
  %472 = icmp eq i32 %.01665, 1
  %or.cond345 = select i1 %471, i1 %472, i1 false
  br i1 %or.cond345, label %473, label %474

473:                                              ; preds = %467
  store float 1.000000e+00, ptr %470, align 4, !tbaa !26
  br label %474

474:                                              ; preds = %467, %473
  store i32 %.111890, ptr %9, align 8, !tbaa !27
  %475 = getelementptr inbounds i8, ptr %9, i64 4
  store i32 %.11663, ptr %475, align 4, !tbaa !28
  %476 = getelementptr inbounds i8, ptr %9, i64 12
  store i32 %.01664, ptr %476, align 4, !tbaa !29
  %477 = getelementptr inbounds i8, ptr %9, i64 8
  store i32 %.01665, ptr %477, align 8, !tbaa !30
  %478 = getelementptr inbounds i8, ptr %9, i64 48
  store double 1.000000e+00, ptr %478, align 8, !tbaa !31
  %479 = getelementptr inbounds i8, ptr %9, i64 56
  store double %.11677, ptr %479, align 8, !tbaa !32
  %480 = getelementptr inbounds i8, ptr %9, i64 64
  store i32 %.01670, ptr %480, align 8, !tbaa !33
  %481 = getelementptr inbounds i8, ptr %9, i64 68
  store i32 %.01671, ptr %481, align 4, !tbaa !34
  %482 = getelementptr inbounds i8, ptr %9, i64 72
  store i32 %.01672, ptr %482, align 8, !tbaa !35
  %483 = getelementptr inbounds i8, ptr %9, i64 76
  store i32 %.01673, ptr %483, align 4, !tbaa !36
  %484 = getelementptr inbounds i8, ptr %9, i64 80
  store i32 %.01674, ptr %484, align 8, !tbaa !37
  %485 = getelementptr inbounds i8, ptr %9, i64 96
  store i32 %.01666, ptr %485, align 8, !tbaa !38
  %486 = getelementptr inbounds i8, ptr %9, i64 100
  store i32 %.01669, ptr %486, align 4, !tbaa !39
  %487 = getelementptr inbounds i8, ptr %9, i64 104
  store i32 %.11737, ptr %487, align 8, !tbaa !40
  %488 = getelementptr inbounds i8, ptr %9, i64 108
  store i32 %.21687, ptr %488, align 4, !tbaa !41
  %489 = getelementptr inbounds i8, ptr %9, i64 112
  store i32 %363, ptr %489, align 8, !tbaa !42
  %490 = getelementptr inbounds i8, ptr %9, i64 116
  store i32 %364, ptr %490, align 4, !tbaa !43
  %491 = getelementptr inbounds i8, ptr %9, i64 120
  store i32 %.31724, ptr %491, align 8, !tbaa !44
  %492 = getelementptr inbounds i8, ptr %9, i64 184
  store i32 %.21732, ptr %492, align 8, !tbaa !45
  %493 = getelementptr inbounds i8, ptr %9, i64 188
  store i32 %.21735, ptr %493, align 4, !tbaa !46
  %494 = add nsw i32 %.01665, -6
  %or.cond354 = icmp ult i32 %494, -4
  %or.cond458 = select i1 %or.cond354, i1 %376, i1 false
  br i1 %or.cond458, label %495, label %498

495:                                              ; preds = %474
  %496 = load ptr, ptr @stderr, align 8, !tbaa !9
  %497 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %496, ptr noundef nonnull @.str.25) #15
  tail call void @exit(i32 noundef 1) #16
  unreachable

498:                                              ; preds = %474
  br i1 %or.cond5, label %499, label %501

499:                                              ; preds = %498
  %500 = tail call noalias ptr @fopen(ptr noundef %.01704, ptr noundef nonnull @.str.26)
  br label %513

501:                                              ; preds = %498
  %502 = icmp eq i32 %.01671, 0
  %503 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27)
  %504 = load i32, ptr %6, align 4, !tbaa !5
  %505 = load i32, ptr %8, align 4, !tbaa !5
  %506 = load i32, ptr %7, align 4, !tbaa !5
  br i1 %502, label %507, label %510

507:                                              ; preds = %501
  %508 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, i32 noundef %504, i32 noundef %505, i32 noundef %505, i32 noundef %506, i32 noundef %504, i32 noundef %506, ptr noundef %.01654, ptr noundef %.01655, ptr noundef %.01656, ptr noundef %.01657, i32 noundef %363)
  %509 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27)
  br label %513

510:                                              ; preds = %501
  %511 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.29, i32 noundef %504, i32 noundef %505, i32 noundef %505, i32 noundef %506, i32 noundef %504, i32 noundef %506, ptr noundef %.01654, ptr noundef %.01655, ptr noundef %.01656, ptr noundef %.01657, i32 noundef %363)
  %512 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27)
  br label %513

513:                                              ; preds = %507, %510, %499
  %.01705 = phi ptr [ %500, %499 ], [ null, %507 ], [ null, %510 ]
  %514 = getelementptr inbounds i8, ptr %9, i64 16
  %515 = getelementptr inbounds i8, ptr %9, i64 20
  %516 = getelementptr inbounds i8, ptr %9, i64 24
  %517 = getelementptr inbounds i8, ptr %9, i64 28
  %518 = getelementptr inbounds i8, ptr %9, i64 32
  %519 = getelementptr inbounds i8, ptr %9, i64 36
  %520 = zext nneg i32 %363 to i64
  %521 = icmp eq i32 %.11663, 3
  %or.cond356 = select i1 %471, i1 %521, i1 false
  %522 = getelementptr inbounds i8, ptr %9, i64 128
  %523 = getelementptr inbounds i8, ptr %9, i64 176
  %524 = getelementptr inbounds i8, ptr %9, i64 136
  %525 = getelementptr inbounds i8, ptr %9, i64 144
  %526 = getelementptr inbounds i8, ptr %9, i64 152
  %527 = getelementptr inbounds i8, ptr %9, i64 160
  %528 = getelementptr inbounds i8, ptr %9, i64 168
  %529 = icmp eq i32 %.11663, 2
  %or.cond370 = select i1 %471, i1 %529, i1 false
  %530 = add nsw i32 %.01665, -1
  %or.cond372 = icmp ult i32 %530, 2
  %or.cond1847 = select i1 %or.cond370, i1 %or.cond372, i1 false
  %531 = getelementptr inbounds i8, ptr %9, i64 44
  %532 = getelementptr inbounds i8, ptr %9, i64 40
  %533 = getelementptr inbounds i8, ptr %11, i64 8
  %534 = getelementptr inbounds i8, ptr %12, i64 8
  %535 = fcmp oeq double %.11677, 0.000000e+00
  %536 = icmp ne i32 %.21732, 0
  %537 = icmp ne i32 %.21735, 0
  %or.cond374 = select i1 %536, i1 true, i1 %537
  %538 = shl nuw nsw i64 %520, 1
  %539 = shl nuw nsw i64 %520, 2
  %540 = icmp ne i32 %.21687, 4
  %541 = icmp eq i32 %.21735, 2
  %542 = icmp eq i32 %.21732, 1
  %543 = icmp eq i32 %.21735, 1
  %544 = sitofp i32 %.01725 to double
  %545 = uitofp nneg i32 %363 to double
  %546 = icmp eq i32 %.01710, 1
  %switch = icmp eq i32 %.11737, 0
  %.str.10..str.11 = select i1 %switch, ptr @.str.10, ptr @.str.11
  %547 = add i32 %.21735, -1
  %or.cond2330 = icmp ult i32 %547, 3
  %brmerge.not = icmp eq i32 %.21735, 3
  %.str.34.mux = select i1 %543, ptr @.str.34, ptr @.str.35
  %.str.34.mux.mux = select i1 %brmerge.not, ptr @.str.36, ptr %.str.34.mux
  %548 = sext i32 %.21687 to i64
  %switch.gep2332 = getelementptr inbounds [5 x ptr], ptr @switch.table.main.6, i64 0, i64 %548
  br label %.critedge

.critedge:                                        ; preds = %.critedge.backedge, %513
  %.01742 = phi i32 [ 0, %513 ], [ %.217442201, %.critedge.backedge ]
  %.01738 = phi i32 [ 0, %513 ], [ 1, %.critedge.backedge ]
  %.01714 = phi double [ 0.000000e+00, %513 ], [ %.11715, %.critedge.backedge ]
  %.01711 = phi double [ 0.000000e+00, %513 ], [ %.117122202, %.critedge.backedge ]
  %.01689 = phi double [ 0.000000e+00, %513 ], [ %.71696, %.critedge.backedge ]
  %549 = icmp eq i32 %.01742, 0
  %or.cond460 = and i1 %or.cond5, %549
  br i1 %or.cond460, label %550, label %556

550:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %10) #13
  %551 = call ptr @fgets(ptr noundef nonnull %10, i32 noundef 512, ptr noundef %.01705)
  %.not1801 = icmp eq ptr %551, null
  br i1 %.not1801, label %.critedge444.thread, label %552

552:                                              ; preds = %550
  %553 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %10, ptr noundef nonnull @.str.30, 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 %553, 6
  br i1 %.not, label %555, label %554

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

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

556:                                              ; preds = %555, %.critedge
  %.21740 = phi i32 [ 1, %555 ], [ %.01738, %.critedge ]
  %557 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %557, ptr %514, align 8, !tbaa !47
  %558 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %558, ptr %515, align 4, !tbaa !48
  %559 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %559, ptr %516, align 8, !tbaa !49
  %560 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %560, ptr %517, align 4, !tbaa !50
  %561 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %561, ptr %518, align 8, !tbaa !51
  %562 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %562, ptr %519, 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.lifetime.start.p0(i64 16, ptr nonnull %12) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, i8 0, i64 16, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %12, i8 0, i64 16, i1 false)
  %563 = load i32, ptr %480, align 8, !tbaa !33
  %564 = icmp eq i32 %563, 0
  %565 = load i32, ptr %3, align 4, !tbaa !5
  %566 = sext i32 %565 to i64
  %567 = load i32, ptr %9, align 8
  br i1 %564, label %568, label %573

568:                                              ; preds = %556
  %569 = load i32, ptr %8, align 4, !tbaa !5
  switch i32 %567, label %570 [
    i32 0, label %578
    i32 1, label %.fold.split
  ]

570:                                              ; preds = %568
  %571 = and i32 %567, -2
  switch i32 %571, label %572 [
    i32 2, label %578
    i32 4, label %.fold.split1924
    i32 6, label %.fold.split1925
    i32 8, label %.fold.split1926
    i32 10, label %578
    i32 12, label %.fold.split1927
  ]

572:                                              ; preds = %570
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.32, i32 noundef 3244, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split:                                      ; preds = %568
  br label %578

.fold.split1924:                                  ; preds = %570
  br label %578

.fold.split1925:                                  ; preds = %570
  br label %578

.fold.split1926:                                  ; preds = %570
  br label %578

.fold.split1927:                                  ; preds = %570
  br label %578

573:                                              ; preds = %556
  %574 = load i32, ptr %6, align 4, !tbaa !5
  switch i32 %567, label %575 [
    i32 0, label %578
    i32 1, label %.fold.split1841
  ]

575:                                              ; preds = %573
  %576 = and i32 %567, -2
  switch i32 %576, label %577 [
    i32 2, label %578
    i32 4, label %.fold.split1928
    i32 6, label %.fold.split1929
    i32 8, label %.fold.split1930
    i32 10, label %578
    i32 12, label %.fold.split1931
  ]

577:                                              ; preds = %575
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.32, i32 noundef 3246, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1841:                                  ; preds = %573
  br label %578

.fold.split1928:                                  ; preds = %575
  br label %578

.fold.split1929:                                  ; preds = %575
  br label %578

.fold.split1930:                                  ; preds = %575
  br label %578

.fold.split1931:                                  ; preds = %575
  br label %578

578:                                              ; preds = %.fold.split1841, %573, %.fold.split1928, %.fold.split1929, %.fold.split1930, %.fold.split1931, %575, %575, %.fold.split, %568, %.fold.split1924, %.fold.split1925, %.fold.split1926, %.fold.split1927, %570, %570
  %.sink2241.in = phi i32 [ %569, %570 ], [ %569, %570 ], [ %569, %.fold.split1927 ], [ %569, %.fold.split1926 ], [ %569, %.fold.split1925 ], [ %569, %.fold.split1924 ], [ %569, %568 ], [ %569, %.fold.split ], [ %574, %575 ], [ %574, %575 ], [ %574, %.fold.split1931 ], [ %574, %.fold.split1930 ], [ %574, %.fold.split1929 ], [ %574, %.fold.split1928 ], [ %574, %573 ], [ %574, %.fold.split1841 ]
  %.sink2239 = phi i64 [ 2, %570 ], [ 2, %570 ], [ 1, %.fold.split1927 ], [ 4, %.fold.split1926 ], [ 8, %.fold.split1925 ], [ 1, %.fold.split1924 ], [ 8, %568 ], [ 4, %.fold.split ], [ 2, %575 ], [ 2, %575 ], [ 1, %.fold.split1931 ], [ 4, %.fold.split1930 ], [ 8, %.fold.split1929 ], [ 1, %.fold.split1928 ], [ 8, %573 ], [ 4, %.fold.split1841 ]
  %.sink2241 = sext i32 %.sink2241.in to i64
  %579 = mul nsw i64 %566, %520
  %580 = mul i64 %579, %.sink2241
  %581 = mul i64 %580, %.sink2239
  %582 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %581, i64 noundef 64) #13
  %583 = load i32, ptr %481, align 4, !tbaa !34
  %584 = icmp eq i32 %583, 0
  %585 = load i32, ptr %4, align 4, !tbaa !5
  %586 = sext i32 %585 to i64
  %587 = load i32, ptr %475, align 4
  br i1 %584, label %588, label %593

588:                                              ; preds = %578
  %589 = load i32, ptr %7, align 4, !tbaa !5
  switch i32 %587, label %590 [
    i32 0, label %598
    i32 1, label %.fold.split1842
  ]

590:                                              ; preds = %588
  %591 = and i32 %587, -2
  switch i32 %591, label %592 [
    i32 2, label %598
    i32 4, label %.fold.split1932
    i32 6, label %.fold.split1933
    i32 8, label %.fold.split1934
    i32 10, label %598
    i32 12, label %.fold.split1935
  ]

592:                                              ; preds = %590
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.32, i32 noundef 3249, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1842:                                  ; preds = %588
  br label %598

.fold.split1932:                                  ; preds = %590
  br label %598

.fold.split1933:                                  ; preds = %590
  br label %598

.fold.split1934:                                  ; preds = %590
  br label %598

.fold.split1935:                                  ; preds = %590
  br label %598

593:                                              ; preds = %578
  %594 = load i32, ptr %8, align 4, !tbaa !5
  switch i32 %587, label %595 [
    i32 0, label %598
    i32 1, label %.fold.split1843
  ]

595:                                              ; preds = %593
  %596 = and i32 %587, -2
  switch i32 %596, label %597 [
    i32 2, label %598
    i32 4, label %.fold.split1936
    i32 6, label %.fold.split1937
    i32 8, label %.fold.split1938
    i32 10, label %598
    i32 12, label %.fold.split1939
  ]

597:                                              ; preds = %595
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.32, i32 noundef 3251, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1843:                                  ; preds = %593
  br label %598

.fold.split1936:                                  ; preds = %595
  br label %598

.fold.split1937:                                  ; preds = %595
  br label %598

.fold.split1938:                                  ; preds = %595
  br label %598

.fold.split1939:                                  ; preds = %595
  br label %598

598:                                              ; preds = %.fold.split1843, %593, %.fold.split1936, %.fold.split1937, %.fold.split1938, %.fold.split1939, %595, %595, %.fold.split1842, %588, %.fold.split1932, %.fold.split1933, %.fold.split1934, %.fold.split1935, %590, %590
  %.sink2246.in = phi i32 [ %589, %590 ], [ %589, %590 ], [ %589, %.fold.split1935 ], [ %589, %.fold.split1934 ], [ %589, %.fold.split1933 ], [ %589, %.fold.split1932 ], [ %589, %588 ], [ %589, %.fold.split1842 ], [ %594, %595 ], [ %594, %595 ], [ %594, %.fold.split1939 ], [ %594, %.fold.split1938 ], [ %594, %.fold.split1937 ], [ %594, %.fold.split1936 ], [ %594, %593 ], [ %594, %.fold.split1843 ]
  %.sink2244 = phi i64 [ 2, %590 ], [ 2, %590 ], [ 1, %.fold.split1935 ], [ 4, %.fold.split1934 ], [ 8, %.fold.split1933 ], [ 1, %.fold.split1932 ], [ 8, %588 ], [ 4, %.fold.split1842 ], [ 2, %595 ], [ 2, %595 ], [ 1, %.fold.split1939 ], [ 4, %.fold.split1938 ], [ 8, %.fold.split1937 ], [ 1, %.fold.split1936 ], [ 8, %593 ], [ 4, %.fold.split1843 ]
  %.sink2246 = sext i32 %.sink2246.in to i64
  %599 = mul nsw i64 %586, %520
  %600 = mul i64 %599, %.sink2246
  %601 = mul i64 %600, %.sink2244
  %602 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %601, i64 noundef 64) #13
  %603 = load i32, ptr %5, align 4, !tbaa !5
  %604 = sext i32 %603 to i64
  %605 = load i32, ptr %7, align 4, !tbaa !5
  %606 = sext i32 %605 to i64
  %607 = mul nsw i64 %606, %604
  %608 = load i32, ptr %477, align 8
  switch i32 %608, label %609 [
    i32 0, label %614
    i32 1, label %.fold.split1844
  ]

609:                                              ; preds = %598
  %610 = and i32 %608, -2
  %switch.tableidx = add i32 %610, -2
  %611 = icmp ult i32 %switch.tableidx, 11
  br i1 %611, label %switch.hole_check, label %612

612:                                              ; preds = %switch.hole_check, %609
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.32, i32 noundef 3253, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1844:                                  ; preds = %598
  br label %614

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

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

614:                                              ; preds = %switch.lookup, %598, %.fold.split1844
  %615 = phi i64 [ 8, %598 ], [ 4, %.fold.split1844 ], [ %switch.load, %switch.lookup ]
  %616 = mul i64 %607, %615
  %617 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %616, i64 noundef 64) #13
  %618 = load i32, ptr %5, align 4, !tbaa !5
  %619 = sext i32 %618 to i64
  %620 = load i32, ptr %7, align 4, !tbaa !5
  %621 = sext i32 %620 to i64
  %622 = mul nsw i64 %621, %619
  %623 = load i32, ptr %477, align 8
  switch i32 %623, label %624 [
    i32 0, label %629
    i32 1, label %.fold.split1845
  ]

624:                                              ; preds = %614
  %625 = and i32 %623, -2
  %switch.tableidx2284 = add i32 %625, -2
  %626 = icmp ult i32 %switch.tableidx2284, 11
  br i1 %626, label %switch.hole_check2285, label %627

627:                                              ; preds = %switch.hole_check2285, %624
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.32, i32 noundef 3254, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1845:                                  ; preds = %614
  br label %629

switch.hole_check2285:                            ; preds = %624
  %switch.maskindex2287 = trunc nuw i32 %switch.tableidx2284 to i16
  %switch.shifted2288 = lshr i16 1365, %switch.maskindex2287
  %switch.lobit2289 = trunc i16 %switch.shifted2288 to i1
  br i1 %switch.lobit2289, label %switch.lookup2286, label %627

switch.lookup2286:                                ; preds = %switch.hole_check2285
  %628 = zext nneg i32 %switch.tableidx2284 to i64
  %switch.gep2290 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %628
  %switch.load2291 = load i64, ptr %switch.gep2290, align 8
  br label %629

629:                                              ; preds = %switch.lookup2286, %614, %.fold.split1845
  %630 = phi i64 [ 8, %614 ], [ 4, %.fold.split1845 ], [ %switch.load2291, %switch.lookup2286 ]
  %631 = mul i64 %622, %630
  %632 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %631, i64 noundef 64) #13
  %633 = load i32, ptr %5, align 4, !tbaa !5
  %634 = sext i32 %633 to i64
  %635 = load i32, ptr %7, align 4, !tbaa !5
  %636 = sext i32 %635 to i64
  %637 = mul nsw i64 %636, %634
  %638 = load i32, ptr %477, align 8
  switch i32 %638, label %639 [
    i32 0, label %644
    i32 1, label %.fold.split1846
  ]

639:                                              ; preds = %629
  %640 = and i32 %638, -2
  %switch.tableidx2293 = add i32 %640, -2
  %641 = icmp ult i32 %switch.tableidx2293, 11
  br i1 %641, label %switch.hole_check2294, label %642

642:                                              ; preds = %switch.hole_check2294, %639
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.32, i32 noundef 3255, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1846:                                  ; preds = %629
  br label %644

switch.hole_check2294:                            ; preds = %639
  %switch.maskindex2296 = trunc nuw i32 %switch.tableidx2293 to i16
  %switch.shifted2297 = lshr i16 1365, %switch.maskindex2296
  %switch.lobit2298 = trunc i16 %switch.shifted2297 to i1
  br i1 %switch.lobit2298, label %switch.lookup2295, label %642

switch.lookup2295:                                ; preds = %switch.hole_check2294
  %643 = zext nneg i32 %switch.tableidx2293 to i64
  %switch.gep2299 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %643
  %switch.load2300 = load i64, ptr %switch.gep2299, align 8
  br label %644

644:                                              ; preds = %switch.lookup2295, %629, %.fold.split1846
  %645 = phi i64 [ 8, %629 ], [ 4, %.fold.split1846 ], [ %switch.load2300, %switch.lookup2295 ]
  %646 = mul i64 %637, %645
  %647 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %646, i64 noundef 64) #13
  br i1 %or.cond356, label %648, label %692

648:                                              ; preds = %644
  switch i32 %.01664, label %692 [
    i32 14, label %649
    i32 3, label %649
    i32 1, label %649
  ]

649:                                              ; preds = %648, %648, %648
  switch i32 %.01665, label %692 [
    i32 3, label %650
    i32 1, label %650
  ]

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

.._crit_edge_crit_edge:                           ; preds = %650
  %.pre2194 = sext i32 %667 to i64
  br label %._crit_edge

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

._crit_edge:                                      ; preds = %.lr.ph, %.._crit_edge_crit_edge
  %.pre-phi = phi i64 [ %.pre2194, %.._crit_edge_crit_edge ], [ %678, %.lr.ph ]
  store ptr %654, ptr %522, align 8, !tbaa !56
  store ptr %658, ptr %523, align 8, !tbaa !57
  store ptr %662, ptr %524, align 8, !tbaa !58
  store ptr %666, ptr %525, align 8, !tbaa !59
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %654, ptr noundef %658, i64 noundef %.pre-phi) #13
  %680 = load ptr, ptr %523, align 8, !tbaa !57
  %681 = load ptr, ptr %522, align 8, !tbaa !56
  %682 = load i32, ptr %514, align 8, !tbaa !47
  %683 = sext i32 %682 to i64
  call void @libxsmm_convert_f16_f32(ptr noundef %680, ptr noundef %681, i64 noundef %683) #13
  %684 = load ptr, ptr %524, align 8, !tbaa !58
  %685 = load ptr, ptr %525, align 8, !tbaa !59
  %686 = load i32, ptr %514, align 8, !tbaa !47
  %687 = sext i32 %686 to i64
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef %684, ptr noundef %685, i64 noundef %687) #13
  %688 = load ptr, ptr %525, align 8, !tbaa !59
  %689 = load ptr, ptr %524, align 8, !tbaa !58
  %690 = load i32, ptr %514, align 8, !tbaa !47
  %691 = sext i32 %690 to i64
  call void @libxsmm_convert_f16_f32(ptr noundef %688, ptr noundef %689, i64 noundef %691) #13
  br label %692

692:                                              ; preds = %649, %648, %._crit_edge, %644
  %693 = load i32, ptr %21, align 8, !tbaa !16
  %.not1802 = icmp eq i32 %693, 0
  br i1 %.not1802, label %710, label %694

694:                                              ; preds = %692
  %695 = load i32, ptr %3, align 4, !tbaa !5
  %696 = mul nsw i32 %695, %363
  %697 = sext i32 %696 to i64
  %698 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %697, i64 noundef 64) #13
  %699 = load i32, ptr %3, align 4, !tbaa !5
  %700 = mul nsw i32 %699, %363
  %701 = icmp sgt i32 %700, 0
  br i1 %701, label %.lr.ph2017, label %._crit_edge2018

.lr.ph2017:                                       ; preds = %694, %.lr.ph2017
  %indvars.iv2133 = phi i64 [ %indvars.iv.next2134, %.lr.ph2017 ], [ 0, %694 ]
  %702 = call double @get_random_pos_p5_num()
  %703 = fmul double %702, 2.000000e+01
  %704 = fptoui double %703 to i8
  %705 = getelementptr inbounds i8, ptr %698, i64 %indvars.iv2133
  store i8 %704, ptr %705, align 1, !tbaa !60
  %indvars.iv.next2134 = add nuw nsw i64 %indvars.iv2133, 1
  %706 = load i32, ptr %3, align 4, !tbaa !5
  %707 = mul nsw i32 %706, %363
  %708 = sext i32 %707 to i64
  %709 = icmp slt i64 %indvars.iv.next2134, %708
  br i1 %709, label %.lr.ph2017, label %._crit_edge2018, !llvm.loop !61

._crit_edge2018:                                  ; preds = %.lr.ph2017, %694
  store ptr %698, ptr %526, align 8, !tbaa !62
  br label %710

710:                                              ; preds = %._crit_edge2018, %692
  %711 = load i32, ptr %22, align 4, !tbaa !17
  %712 = icmp ne i32 %711, 0
  %713 = load i32, ptr %23, align 8
  %714 = icmp ne i32 %713, 0
  %or.cond365 = select i1 %712, i1 true, i1 %714
  %715 = load i32, ptr %24, align 4
  %716 = icmp ne i32 %715, 0
  %or.cond368 = select i1 %or.cond365, i1 true, i1 %716
  br i1 %or.cond368, label %717, label %743

717:                                              ; preds = %710
  %718 = load i32, ptr %3, align 4, !tbaa !5
  %719 = load i32, ptr %516, align 8, !tbaa !49
  %720 = sdiv i32 %719, 32
  %721 = mul i32 %718, %363
  %722 = mul i32 %721, %720
  %723 = zext i32 %722 to i64
  %724 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %723, i64 noundef 64) #13
  %.not2100 = icmp eq i32 %722, 0
  br i1 %.not2100, label %._crit_edge2022, label %.lr.ph2021

.lr.ph2021:                                       ; preds = %717, %.lr.ph2021
  %indvars.iv2136 = phi i64 [ %indvars.iv.next2137, %.lr.ph2021 ], [ 0, %717 ]
  %725 = call i32 @rand() #13
  %726 = srem i32 %725, 10
  %727 = trunc nsw i32 %726 to i8
  %728 = add i8 %727, 126
  %729 = getelementptr inbounds i8, ptr %724, i64 %indvars.iv2136
  store i8 %728, ptr %729, align 1, !tbaa !60
  %indvars.iv.next2137 = add nuw nsw i64 %indvars.iv2136, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next2137, %723
  br i1 %exitcond.not, label %._crit_edge2022, label %.lr.ph2021, !llvm.loop !63

._crit_edge2022:                                  ; preds = %.lr.ph2021, %717
  store ptr %724, ptr %527, align 8, !tbaa !64
  %730 = load i32, ptr %24, align 4, !tbaa !19
  %.not1803 = icmp eq i32 %730, 0
  br i1 %.not1803, label %743, label %731

731:                                              ; preds = %._crit_edge2022
  %732 = load i32, ptr %7, align 4, !tbaa !5
  %733 = load i32, ptr %4, align 4, !tbaa !5
  %734 = sdiv i32 %733, 32
  %735 = mul i32 %732, %363
  %736 = mul i32 %735, %734
  %737 = zext i32 %736 to i64
  %738 = shl nuw nsw i64 %737, 2
  %739 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %738, i64 noundef 64) #13
  %.not2101 = icmp eq i32 %736, 0
  br i1 %.not2101, label %._crit_edge2026, label %.lr.ph2025

.lr.ph2025:                                       ; preds = %731, %.lr.ph2025
  %indvars.iv2139 = phi i64 [ %indvars.iv.next2140, %.lr.ph2025 ], [ 0, %731 ]
  %740 = call double @get_random_posneg_p5_num()
  %741 = fptrunc double %740 to float
  %742 = getelementptr inbounds float, ptr %739, i64 %indvars.iv2139
  store float %741, ptr %742, align 4, !tbaa !53
  %indvars.iv.next2140 = add nuw nsw i64 %indvars.iv2139, 1
  %exitcond2143.not = icmp eq i64 %indvars.iv.next2140, %737
  br i1 %exitcond2143.not, label %._crit_edge2026, label %.lr.ph2025, !llvm.loop !65

._crit_edge2026:                                  ; preds = %.lr.ph2025, %731
  store ptr %739, ptr %528, align 8, !tbaa !66
  br label %743

743:                                              ; preds = %._crit_edge2022, %._crit_edge2026, %710
  br i1 %or.cond1847, label %744, label %758

744:                                              ; preds = %743
  %745 = load i32, ptr %514, align 8, !tbaa !47
  %746 = sext i32 %745 to i64
  %747 = shl nsw i64 %746, 2
  %748 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %747, i64 noundef 64) #13
  %749 = load i32, ptr %514, align 8, !tbaa !47
  %750 = icmp sgt i32 %749, 0
  br i1 %750, label %.lr.ph2029, label %._crit_edge2030

.lr.ph2029:                                       ; preds = %744, %.lr.ph2029
  %indvars.iv2144 = phi i64 [ %indvars.iv.next2145, %.lr.ph2029 ], [ 0, %744 ]
  %751 = call double @get_random_posneg_p5_num()
  %752 = fptrunc double %751 to float
  %753 = fmul float %752, 0x3FB99999A0000000
  %754 = getelementptr inbounds float, ptr %748, i64 %indvars.iv2144
  store float %753, ptr %754, align 4, !tbaa !53
  %indvars.iv.next2145 = add nuw nsw i64 %indvars.iv2144, 1
  %755 = load i32, ptr %514, align 8, !tbaa !47
  %756 = sext i32 %755 to i64
  %757 = icmp slt i64 %indvars.iv.next2145, %756
  br i1 %757, label %.lr.ph2029, label %._crit_edge2030, !llvm.loop !67

._crit_edge2030:                                  ; preds = %.lr.ph2029, %744
  store ptr %748, ptr %522, align 8, !tbaa !56
  br label %758

758:                                              ; preds = %._crit_edge2030, %743
  %759 = load i32, ptr %492, align 8, !tbaa !45
  %760 = icmp eq i32 %759, 1
  br i1 %760, label %761, label %776

761:                                              ; preds = %758
  %762 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %762, ptr %531, align 4, !tbaa !68
  %763 = sext i32 %762 to i64
  %764 = load i32, ptr %477, align 8
  switch i32 %764, label %765 [
    i32 0, label %770
    i32 1, label %.fold.split1848
  ]

765:                                              ; preds = %761
  %766 = and i32 %764, -2
  %switch.tableidx2302 = add i32 %766, -2
  %767 = icmp ult i32 %switch.tableidx2302, 11
  br i1 %767, label %switch.hole_check2303, label %768

768:                                              ; preds = %switch.hole_check2303, %765
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.32, i32 noundef 3317, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1848:                                  ; preds = %761
  br label %770

switch.hole_check2303:                            ; preds = %765
  %switch.maskindex2305 = trunc nuw i32 %switch.tableidx2302 to i16
  %switch.shifted2306 = lshr i16 1365, %switch.maskindex2305
  %switch.lobit2307 = trunc i16 %switch.shifted2306 to i1
  br i1 %switch.lobit2307, label %switch.lookup2304, label %768

switch.lookup2304:                                ; preds = %switch.hole_check2303
  %769 = zext nneg i32 %switch.tableidx2302 to i64
  %switch.gep2308 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %769
  %switch.load2309 = load i64, ptr %switch.gep2308, align 8
  br label %770

770:                                              ; preds = %switch.lookup2304, %761, %.fold.split1848
  %771 = phi i64 [ 8, %761 ], [ 4, %.fold.split1848 ], [ %switch.load2309, %switch.lookup2304 ]
  %772 = mul nsw i64 %771, %763
  %773 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %772, i64 noundef 64) #13
  %774 = load i32, ptr %477, align 8, !tbaa !30
  %775 = load i32, ptr %531, align 4, !tbaa !68
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %774, ptr noundef %773, i32 noundef 1, i32 noundef %775, i32 noundef 1, i32 noundef 0)
  store ptr %773, ptr %11, align 8, !tbaa !69
  store ptr %773, ptr %12, align 8, !tbaa !69
  br label %776

776:                                              ; preds = %770, %758
  %.01769 = phi ptr [ %773, %770 ], [ null, %758 ]
  %777 = load i32, ptr %493, align 4, !tbaa !46
  %778 = icmp eq i32 %777, 2
  br i1 %778, label %779, label %797

779:                                              ; preds = %776
  %780 = load i32, ptr %5, align 4, !tbaa !5
  %781 = add nsw i32 %780, 15
  %782 = sdiv i32 %781, 16
  %783 = shl nsw i32 %782, 1
  store i32 %783, ptr %532, align 8, !tbaa !71
  %784 = sext i32 %783 to i64
  %785 = load i32, ptr %7, align 4, !tbaa !5
  %786 = sext i32 %785 to i64
  %787 = mul nsw i64 %784, %786
  %788 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %787, i64 noundef 64) #13
  %789 = load i32, ptr %7, align 4, !tbaa !5
  %790 = sext i32 %789 to i64
  %791 = mul nsw i64 %790, %784
  %792 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %791, i64 noundef 64) #13
  %793 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef 12, ptr noundef %788, i32 noundef 1, i32 noundef %783, i32 noundef %793)
  %794 = load i32, ptr %7, align 4, !tbaa !5
  %795 = sext i32 %794 to i64
  %796 = mul nsw i64 %795, %784
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %792, ptr align 1 %788, i64 %796, i1 false)
  store ptr %788, ptr %533, align 8, !tbaa !72
  store ptr %792, ptr %534, align 8, !tbaa !72
  br label %797

797:                                              ; preds = %779, %776
  %.01772 = phi ptr [ %792, %779 ], [ null, %776 ]
  %.01770 = phi ptr [ %788, %779 ], [ null, %776 ]
  %798 = load i32, ptr %480, align 8, !tbaa !33
  %799 = icmp eq i32 %798, 0
  br i1 %799, label %800, label %903

800:                                              ; preds = %797
  br i1 %549, label %801, label %898

801:                                              ; preds = %800
  %802 = load i32, ptr %25, align 4, !tbaa !20
  %.not1805 = icmp eq i32 %802, 0
  br i1 %.not1805, label %830, label %803

803:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #13
  %804 = load i32, ptr %3, align 4, !tbaa !5
  %805 = sext i32 %804 to i64
  %806 = load i32, ptr %8, align 4, !tbaa !5
  %807 = sext i32 %806 to i64
  %808 = mul nsw i64 %805, %520
  %809 = mul i64 %808, %807
  %810 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %809, i64 noundef 64) #13
  %811 = load i32, ptr %3, align 4, !tbaa !5
  %812 = load i32, ptr %8, align 4, !tbaa !5
  %813 = load i32, ptr %493, align 4, !tbaa !46
  %814 = icmp eq i32 %813, 2
  %815 = load i32, ptr %468, align 4
  %816 = select i1 %814, i32 1, i32 %815
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef 4, ptr noundef %810, i32 noundef %363, i32 noundef %811, i32 noundef %812, i32 noundef %816)
  %817 = load i32, ptr %3, align 4, !tbaa !5
  %818 = load i32, ptr %8, align 4, !tbaa !5
  %819 = mul i32 %817, %363
  %820 = mul i32 %819, %818
  %821 = icmp sgt i32 %820, 0
  br i1 %821, label %.lr.ph2033, label %._crit_edge2034

.lr.ph2033:                                       ; preds = %803, %.lr.ph2033
  %indvars.iv2147 = phi i64 [ %indvars.iv.next2148, %.lr.ph2033 ], [ 0, %803 ]
  %822 = getelementptr inbounds i8, ptr %810, i64 %indvars.iv2147
  call void @libxsmm_convert_bf8_f32(ptr noundef %822, ptr noundef nonnull %13, i64 noundef 1) #13
  %823 = getelementptr inbounds i16, ptr %582, i64 %indvars.iv2147
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %13, ptr noundef %823, i64 noundef 1) #13
  %indvars.iv.next2148 = add nuw nsw i64 %indvars.iv2147, 1
  %824 = load i32, ptr %3, align 4, !tbaa !5
  %825 = load i32, ptr %8, align 4, !tbaa !5
  %826 = mul i32 %824, %363
  %827 = mul i32 %826, %825
  %828 = sext i32 %827 to i64
  %829 = icmp slt i64 %indvars.iv.next2148, %828
  br i1 %829, label %.lr.ph2033, label %._crit_edge2034, !llvm.loop !73

._crit_edge2034:                                  ; preds = %.lr.ph2033, %803
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #13
  br label %919

830:                                              ; preds = %801
  %831 = load i32, ptr %26, align 8, !tbaa !21
  %.not1806 = icmp eq i32 %831, 0
  br i1 %.not1806, label %859, label %832

832:                                              ; preds = %830
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #13
  %833 = load i32, ptr %3, align 4, !tbaa !5
  %834 = sext i32 %833 to i64
  %835 = load i32, ptr %8, align 4, !tbaa !5
  %836 = sext i32 %835 to i64
  %837 = mul nsw i64 %834, %520
  %838 = mul i64 %837, %836
  %839 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %838, i64 noundef 64) #13
  %840 = load i32, ptr %3, align 4, !tbaa !5
  %841 = load i32, ptr %8, align 4, !tbaa !5
  %842 = load i32, ptr %493, align 4, !tbaa !46
  %843 = icmp eq i32 %842, 2
  %844 = load i32, ptr %468, align 4
  %845 = select i1 %843, i32 1, i32 %844
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef 4, ptr noundef %839, i32 noundef %363, i32 noundef %840, i32 noundef %841, i32 noundef %845)
  %846 = load i32, ptr %3, align 4, !tbaa !5
  %847 = load i32, ptr %8, align 4, !tbaa !5
  %848 = mul i32 %846, %363
  %849 = mul i32 %848, %847
  %850 = icmp sgt i32 %849, 0
  br i1 %850, label %.lr.ph2037, label %._crit_edge2038

.lr.ph2037:                                       ; preds = %832, %.lr.ph2037
  %indvars.iv2150 = phi i64 [ %indvars.iv.next2151, %.lr.ph2037 ], [ 0, %832 ]
  %851 = getelementptr inbounds i8, ptr %839, i64 %indvars.iv2150
  call void @libxsmm_convert_bf8_f32(ptr noundef %851, ptr noundef nonnull %14, i64 noundef 1) #13
  %852 = getelementptr inbounds i16, ptr %582, i64 %indvars.iv2150
  call void @libxsmm_rne_convert_fp32_f16(ptr noundef nonnull %14, ptr noundef %852, i64 noundef 1) #13
  %indvars.iv.next2151 = add nuw nsw i64 %indvars.iv2150, 1
  %853 = load i32, ptr %3, align 4, !tbaa !5
  %854 = load i32, ptr %8, align 4, !tbaa !5
  %855 = mul i32 %853, %363
  %856 = mul i32 %855, %854
  %857 = sext i32 %856 to i64
  %858 = icmp slt i64 %indvars.iv.next2151, %857
  br i1 %858, label %.lr.ph2037, label %._crit_edge2038, !llvm.loop !74

._crit_edge2038:                                  ; preds = %.lr.ph2037, %832
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #13
  br label %919

859:                                              ; preds = %830
  %860 = load i32, ptr %27, align 4, !tbaa !22
  %.not1807 = icmp eq i32 %860, 0
  br i1 %.not1807, label %888, label %861

861:                                              ; preds = %859
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #13
  %862 = load i32, ptr %3, align 4, !tbaa !5
  %863 = sext i32 %862 to i64
  %864 = load i32, ptr %8, align 4, !tbaa !5
  %865 = sext i32 %864 to i64
  %866 = mul nsw i64 %863, %520
  %867 = mul i64 %866, %865
  %868 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %867, i64 noundef 64) #13
  %869 = load i32, ptr %3, align 4, !tbaa !5
  %870 = load i32, ptr %8, align 4, !tbaa !5
  %871 = load i32, ptr %493, align 4, !tbaa !46
  %872 = icmp eq i32 %871, 2
  %873 = load i32, ptr %468, align 4
  %874 = select i1 %872, i32 1, i32 %873
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef 5, ptr noundef %868, i32 noundef %363, i32 noundef %869, i32 noundef %870, i32 noundef %874)
  %875 = load i32, ptr %3, align 4, !tbaa !5
  %876 = load i32, ptr %8, align 4, !tbaa !5
  %877 = mul i32 %875, %363
  %878 = mul i32 %877, %876
  %879 = icmp sgt i32 %878, 0
  br i1 %879, label %.lr.ph2041, label %._crit_edge2042

.lr.ph2041:                                       ; preds = %861, %.lr.ph2041
  %indvars.iv2153 = phi i64 [ %indvars.iv.next2154, %.lr.ph2041 ], [ 0, %861 ]
  %880 = getelementptr inbounds i8, ptr %868, i64 %indvars.iv2153
  call void @libxsmm_convert_hf8_f32(ptr noundef %880, ptr noundef nonnull %15, i64 noundef 1) #13
  %881 = getelementptr inbounds i16, ptr %582, i64 %indvars.iv2153
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %15, ptr noundef %881, i64 noundef 1) #13
  %indvars.iv.next2154 = add nuw nsw i64 %indvars.iv2153, 1
  %882 = load i32, ptr %3, align 4, !tbaa !5
  %883 = load i32, ptr %8, align 4, !tbaa !5
  %884 = mul i32 %882, %363
  %885 = mul i32 %884, %883
  %886 = sext i32 %885 to i64
  %887 = icmp slt i64 %indvars.iv.next2154, %886
  br i1 %887, label %.lr.ph2041, label %._crit_edge2042, !llvm.loop !75

._crit_edge2042:                                  ; preds = %.lr.ph2041, %861
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #13
  br label %919

888:                                              ; preds = %859
  %889 = load i32, ptr %9, align 8, !tbaa !27
  %890 = load i32, ptr %3, align 4, !tbaa !5
  %891 = load i32, ptr %8, align 4, !tbaa !5
  %892 = load i32, ptr %493, align 4, !tbaa !46
  %893 = icmp eq i32 %892, 2
  %894 = load i32, ptr %21, align 8
  %.not1808 = icmp eq i32 %894, 0
  %895 = load i32, ptr %468, align 4
  %896 = select i1 %.not1808, i32 %895, i32 1
  %897 = select i1 %893, i32 1, i32 %896
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %889, ptr noundef %582, i32 noundef %363, i32 noundef %890, i32 noundef %891, i32 noundef %897)
  br label %919

898:                                              ; preds = %800
  %899 = load i32, ptr %482, align 8, !tbaa !35
  %900 = load i32, ptr %9, align 8, !tbaa !27
  %901 = load i32, ptr %3, align 4, !tbaa !5
  %902 = load i32, ptr %8, align 4, !tbaa !5
  call void @init_identity_matrix(i32 noundef %899, i32 noundef %900, ptr noundef %582, i32 noundef %363, i32 noundef %901, i32 noundef %902)
  br label %919

903:                                              ; preds = %797
  br i1 %549, label %904, label %914

904:                                              ; preds = %903
  %905 = load i32, ptr %9, align 8, !tbaa !27
  %906 = load i32, ptr %3, align 4, !tbaa !5
  %907 = load i32, ptr %6, align 4, !tbaa !5
  %908 = load i32, ptr %493, align 4, !tbaa !46
  %909 = icmp eq i32 %908, 2
  %910 = load i32, ptr %21, align 8
  %.not1804 = icmp eq i32 %910, 0
  %911 = load i32, ptr %468, align 4
  %912 = select i1 %.not1804, i32 %911, i32 1
  %913 = select i1 %909, i32 1, i32 %912
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %905, ptr noundef %582, i32 noundef %363, i32 noundef %906, i32 noundef %907, i32 noundef %913)
  br label %919

914:                                              ; preds = %903
  %915 = load i32, ptr %482, align 8, !tbaa !35
  %916 = load i32, ptr %9, align 8, !tbaa !27
  %917 = load i32, ptr %3, align 4, !tbaa !5
  %918 = load i32, ptr %6, align 4, !tbaa !5
  call void @init_identity_matrix(i32 noundef %915, i32 noundef %916, ptr noundef %582, i32 noundef %363, i32 noundef %917, i32 noundef %918)
  br label %919

919:                                              ; preds = %904, %914, %898, %._crit_edge2038, %888, %._crit_edge2042, %._crit_edge2034
  %.01767 = phi ptr [ %810, %._crit_edge2034 ], [ %839, %._crit_edge2038 ], [ %868, %._crit_edge2042 ], [ null, %888 ], [ null, %898 ], [ null, %904 ], [ null, %914 ]
  %920 = load i32, ptr %481, align 4, !tbaa !34
  %921 = icmp eq i32 %920, 0
  %922 = load i32, ptr %475, align 4, !tbaa !28
  %923 = load i32, ptr %4, align 4, !tbaa !5
  %924 = load i32, ptr %493, align 4, !tbaa !46
  %925 = icmp eq i32 %924, 2
  %926 = load i32, ptr %469, align 8
  %927 = select i1 %925, i32 1, i32 %926
  br i1 %921, label %928, label %936

928:                                              ; preds = %919
  %929 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %922, ptr noundef %602, i32 noundef %363, i32 noundef %923, i32 noundef %929, i32 noundef %927)
  %930 = load i32, ptr %493, align 4, !tbaa !46
  %931 = icmp eq i32 %930, 2
  br i1 %931, label %932, label %944

932:                                              ; preds = %928
  %933 = load i32, ptr %475, align 4, !tbaa !28
  %934 = load i32, ptr %4, align 4, !tbaa !5
  %935 = load i32, ptr %7, align 4, !tbaa !5
  call void @negate_random_cols_rows(i32 noundef %933, ptr noundef %602, i32 noundef %363, i32 noundef %934, i32 noundef %935, i32 noundef 0)
  br label %944

936:                                              ; preds = %919
  %937 = load i32, ptr %8, align 4, !tbaa !5
  call void @init_random_matrix(ptr noundef nonnull %9, i32 noundef %922, ptr noundef %602, i32 noundef %363, i32 noundef %923, i32 noundef %937, i32 noundef %927)
  %938 = load i32, ptr %493, align 4, !tbaa !46
  %939 = icmp eq i32 %938, 2
  br i1 %939, label %940, label %944

940:                                              ; preds = %936
  %941 = load i32, ptr %475, align 4, !tbaa !28
  %942 = load i32, ptr %4, align 4, !tbaa !5
  %943 = load i32, ptr %8, align 4, !tbaa !5
  call void @negate_random_cols_rows(i32 noundef %941, ptr noundef %602, i32 noundef %363, i32 noundef %942, i32 noundef %943, i32 noundef 1)
  br label %944

944:                                              ; preds = %936, %940, %928, %932
  %945 = load i32, ptr %477, align 8, !tbaa !30
  %946 = load i32, ptr %5, align 4, !tbaa !5
  %947 = load i32, ptr %7, align 4, !tbaa !5
  br i1 %535, label %948, label %955

948:                                              ; preds = %944
  call void @init_garbage_matrix(i32 noundef %945, ptr noundef %617, i32 noundef 1, i32 noundef %946, i32 noundef %947)
  %949 = load i32, ptr %477, align 8, !tbaa !30
  %950 = load i32, ptr %5, align 4, !tbaa !5
  %951 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_garbage_matrix(i32 noundef %949, ptr noundef %632, i32 noundef 1, i32 noundef %950, i32 noundef %951)
  %952 = load i32, ptr %477, align 8, !tbaa !30
  %953 = load i32, ptr %5, align 4, !tbaa !5
  %954 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_garbage_matrix(i32 noundef %952, ptr noundef %647, i32 noundef 1, i32 noundef %953, i32 noundef %954)
  br label %962

955:                                              ; preds = %944
  call void @init_zero_matrix(i32 noundef %945, ptr noundef %617, i32 noundef 1, i32 noundef %946, i32 noundef %947)
  %956 = load i32, ptr %477, align 8, !tbaa !30
  %957 = load i32, ptr %5, align 4, !tbaa !5
  %958 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef %956, ptr noundef %632, i32 noundef 1, i32 noundef %957, i32 noundef %958)
  %959 = load i32, ptr %477, align 8, !tbaa !30
  %960 = load i32, ptr %5, align 4, !tbaa !5
  %961 = load i32, ptr %7, align 4, !tbaa !5
  call void @init_zero_matrix(i32 noundef %959, ptr noundef %647, i32 noundef 1, i32 noundef %960, i32 noundef %961)
  br label %962

962:                                              ; preds = %955, %948
  br i1 %or.cond374, label %963, label %964

963:                                              ; preds = %962
  call void @ref_fused_matmul(ptr noundef nonnull %9, ptr noundef %582, ptr noundef %602, ptr noundef %647, ptr noundef nonnull %12)
  br label %1454

964:                                              ; preds = %962
  %965 = load i32, ptr %21, align 8, !tbaa !16
  %.not1809 = icmp eq i32 %965, 0
  br i1 %.not1809, label %.loopexit, label %966

966:                                              ; preds = %964
  %967 = load i32, ptr %3, align 4, !tbaa !5
  %968 = sext i32 %967 to i64
  %969 = load i32, ptr %8, align 4, !tbaa !5
  %970 = add nsw i32 %969, 7
  %971 = sdiv i32 %970, 8
  %972 = shl nsw i32 %971, 2
  %973 = sext i32 %972 to i64
  %974 = load i32, ptr %9, align 8
  switch i32 %974, label %975 [
    i32 0, label %980
    i32 1, label %.fold.split1849
  ]

975:                                              ; preds = %966
  %976 = and i32 %974, -2
  %switch.tableidx2311 = add i32 %976, -2
  %977 = icmp ult i32 %switch.tableidx2311, 11
  br i1 %977, label %switch.hole_check2312, label %978

978:                                              ; preds = %switch.hole_check2312, %975
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.32, i32 noundef 3419, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1849:                                  ; preds = %966
  br label %980

switch.hole_check2312:                            ; preds = %975
  %switch.maskindex2314 = trunc nuw i32 %switch.tableidx2311 to i16
  %switch.shifted2315 = lshr i16 1365, %switch.maskindex2314
  %switch.lobit2316 = trunc i16 %switch.shifted2315 to i1
  br i1 %switch.lobit2316, label %switch.lookup2313, label %978

switch.lookup2313:                                ; preds = %switch.hole_check2312
  %979 = zext nneg i32 %switch.tableidx2311 to i64
  %switch.gep2317 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %979
  %switch.load2318 = load i64, ptr %switch.gep2317, align 8
  br label %980

980:                                              ; preds = %switch.lookup2313, %966, %.fold.split1849
  %981 = phi i64 [ 8, %966 ], [ 4, %.fold.split1849 ], [ %switch.load2318, %switch.lookup2313 ]
  %982 = mul nsw i64 %968, %520
  %983 = mul i64 %982, %973
  %984 = mul i64 %983, %981
  %985 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %984, i64 noundef 64) #13
  %986 = load i32, ptr %6, align 4, !tbaa !5
  %987 = icmp sgt i32 %986, 0
  %988 = load i32, ptr %8, align 4
  %989 = icmp sgt i32 %988, 0
  %990 = load i32, ptr %3, align 4
  %factor.op.mul = shl i32 %990, 2
  %991 = sdiv i32 %988, 2
  %992 = sext i32 %988 to i64
  br label %.preheader1986

.preheader1986:                                   ; preds = %980, %._crit_edge2051
  %.017562052 = phi i32 [ 0, %980 ], [ %1022, %._crit_edge2051 ]
  br i1 %987, label %.preheader1979.lr.ph, label %._crit_edge2051

.preheader1979.lr.ph:                             ; preds = %.preheader1986
  %993 = mul nsw i32 %990, %.017562052
  %994 = mul nsw i32 %993, %988
  %995 = mul nsw i32 %993, %991
  br i1 %989, label %.preheader1979.us, label %._crit_edge2051

.preheader1979.us:                                ; preds = %.preheader1979.lr.ph, %._crit_edge2045.us
  %.017542050.us = phi i32 [ %1021, %._crit_edge2045.us ], [ 0, %.preheader1979.lr.ph ]
  %996 = shl nsw i32 %.017542050.us, 2
  %997 = add i32 %994, %996
  br label %998

998:                                              ; preds = %.preheader1979.us, %998
  %indvars.iv2156 = phi i64 [ 0, %.preheader1979.us ], [ %indvars.iv.next2157, %998 ]
  %999 = lshr exact i64 %indvars.iv2156, 2
  %1000 = trunc nuw nsw i64 %999 to i32
  %.reass.us = mul i32 %factor.op.mul, %1000
  %1001 = add i32 %997, %.reass.us
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds i8, ptr %582, i64 %1002
  %1004 = trunc i64 %999 to i32
  %1005 = or disjoint i32 %1004, 1
  %.reass2047.us = mul i32 %1005, %factor.op.mul
  %1006 = add i32 %997, %.reass2047.us
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds i8, ptr %582, i64 %1007
  %1009 = lshr exact i64 %indvars.iv2156, 3
  %1010 = trunc nuw nsw i64 %1009 to i32
  %.reass2049.us = mul i32 %factor.op.mul, %1010
  %1011 = add i32 %.reass2049.us, %996
  %1012 = add i32 %1011, %995
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds i8, ptr %985, i64 %1013
  %1015 = load <4 x i8>, ptr %1003, align 1, !tbaa !60
  %1016 = load <4 x i8>, ptr %1008, align 1, !tbaa !60
  %1017 = and <4 x i8> %1015, <i8 15, i8 15, i8 15, i8 15>
  %1018 = shl <4 x i8> %1016, <i8 4, i8 4, i8 4, i8 4>
  %1019 = or disjoint <4 x i8> %1018, %1017
  store <4 x i8> %1019, ptr %1014, align 1, !tbaa !60
  %indvars.iv.next2157 = add nuw nsw i64 %indvars.iv2156, 8
  %1020 = icmp slt i64 %indvars.iv.next2157, %992
  br i1 %1020, label %998, label %._crit_edge2045.us, !llvm.loop !76

._crit_edge2045.us:                               ; preds = %998
  %1021 = add nuw nsw i32 %.017542050.us, 1
  %exitcond2159.not = icmp eq i32 %1021, %986
  br i1 %exitcond2159.not, label %._crit_edge2051, label %.preheader1979.us, !llvm.loop !77

._crit_edge2051:                                  ; preds = %._crit_edge2045.us, %.preheader1979.lr.ph, %.preheader1986
  %1022 = add nuw nsw i32 %.017562052, 1
  %exitcond2160.not = icmp eq i32 %1022, %363
  br i1 %exitcond2160.not, label %1023, label %.preheader1986, !llvm.loop !78

1023:                                             ; preds = %._crit_edge2051
  %1024 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %985, ptr noundef %602, ptr noundef %617, ptr noundef %632, i32 noundef %.01725, i32 noundef %.01699, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %985) #13
  %1025 = load i32, ptr %8, align 4, !tbaa !5
  %1026 = sdiv i32 %1025, 4
  %1027 = icmp slt i32 %1025, 4
  %1028 = load i32, ptr %6, align 4
  %1029 = icmp slt i32 %1028, 1
  %1030 = load ptr, ptr %526, align 8
  %1031 = load i32, ptr %3, align 4
  %1032 = sext i32 %1031 to i64
  %wide.trip.count2168 = zext nneg i32 %1028 to i64
  %brmerge = select i1 %1027, i1 true, i1 %1029
  br label %.preheader1985

.preheader1985:                                   ; preds = %1023, %._crit_edge2058
  %indvars.iv2171 = phi i64 [ 0, %1023 ], [ %indvars.iv.next2172, %._crit_edge2058 ]
  br i1 %brmerge, label %._crit_edge2058, label %.preheader1978.us.preheader

.preheader1978.us.preheader:                      ; preds = %.preheader1985
  %1033 = mul nsw i64 %indvars.iv2171, %1032
  %1034 = getelementptr i8, ptr %1030, i64 %1033
  %1035 = trunc i64 %1033 to i32
  %1036 = mul i32 %1025, %1035
  br label %.preheader1978.us

.preheader1978.us:                                ; preds = %.preheader1978.us.preheader, %._crit_edge2056.us
  %.117532057.us = phi i32 [ %1062, %._crit_edge2056.us ], [ 0, %.preheader1978.us.preheader ]
  %1037 = mul i32 %1031, %.117532057.us
  br label %1038

1038:                                             ; preds = %.preheader1978.us, %1038
  %indvars.iv2165 = phi i64 [ 0, %.preheader1978.us ], [ %indvars.iv.next2166, %1038 ]
  %1039 = getelementptr i8, ptr %1034, i64 %indvars.iv2165
  %1040 = load i8, ptr %1039, align 1, !tbaa !60
  %1041 = trunc nuw nsw i64 %indvars.iv2165 to i32
  %reass.add.us = add i32 %1037, %1041
  %reass.mul.us = shl i32 %reass.add.us, 2
  %1042 = add i32 %reass.mul.us, %1036
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds i8, ptr %582, i64 %1043
  %1045 = load i8, ptr %1044, align 1, !tbaa !60
  %1046 = sub i8 %1045, %1040
  store i8 %1046, ptr %1044, align 1, !tbaa !60
  %1047 = add i32 %1042, 1
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds i8, ptr %582, i64 %1048
  %1050 = load i8, ptr %1049, align 1, !tbaa !60
  %1051 = sub i8 %1050, %1040
  store i8 %1051, ptr %1049, align 1, !tbaa !60
  %1052 = add i32 %1042, 2
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds i8, ptr %582, i64 %1053
  %1055 = load i8, ptr %1054, align 1, !tbaa !60
  %1056 = sub i8 %1055, %1040
  store i8 %1056, ptr %1054, align 1, !tbaa !60
  %1057 = add i32 %1042, 3
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds i8, ptr %582, i64 %1058
  %1060 = load i8, ptr %1059, align 1, !tbaa !60
  %1061 = sub i8 %1060, %1040
  store i8 %1061, ptr %1059, align 1, !tbaa !60
  %indvars.iv.next2166 = add nuw nsw i64 %indvars.iv2165, 1
  %exitcond2169.not = icmp eq i64 %indvars.iv.next2166, %wide.trip.count2168
  br i1 %exitcond2169.not, label %._crit_edge2056.us, label %1038, !llvm.loop !79

._crit_edge2056.us:                               ; preds = %1038
  %1062 = add nuw nsw i32 %.117532057.us, 1
  %exitcond2170.not = icmp eq i32 %1062, %1026
  br i1 %exitcond2170.not, label %._crit_edge2058, label %.preheader1978.us, !llvm.loop !80

._crit_edge2058:                                  ; preds = %._crit_edge2056.us, %.preheader1985
  %indvars.iv.next2172 = add nuw nsw i64 %indvars.iv2171, 1
  %exitcond2175.not = icmp eq i64 %indvars.iv.next2172, %520
  br i1 %exitcond2175.not, label %.loopexit, label %.preheader1985, !llvm.loop !81

.loopexit:                                        ; preds = %._crit_edge2058, %964
  %.11690 = phi double [ %.01689, %964 ], [ %1024, %._crit_edge2058 ]
  %1063 = load i32, ptr %22, align 4, !tbaa !17
  %.not1810 = icmp eq i32 %1063, 0
  br i1 %.not1810, label %1144, label %1064

1064:                                             ; preds = %.loopexit
  %1065 = load i32, ptr %3, align 4, !tbaa !5
  %1066 = sext i32 %1065 to i64
  %1067 = load i32, ptr %8, align 4, !tbaa !5
  %1068 = sext i32 %1067 to i64
  %1069 = lshr i64 %1068, 1
  %1070 = mul nsw i64 %1066, %520
  %1071 = mul i64 %1070, %1069
  %1072 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1071, i64 noundef 64) #13
  call void @libxsmm_free(ptr noundef %582) #13
  %1073 = load i32, ptr %3, align 4, !tbaa !5
  %1074 = sext i32 %1073 to i64
  %1075 = load i32, ptr %8, align 4, !tbaa !5
  %1076 = sext i32 %1075 to i64
  %1077 = mul nsw i64 %538, %1074
  %1078 = mul i64 %1077, %1076
  %1079 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1078, i64 noundef 64) #13
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1984

.preheader1984:                                   ; preds = %1064, %._crit_edge2067
  %1080 = phi i32 [ %.pre, %1064 ], [ %1139, %._crit_edge2067 ]
  %1081 = phi i32 [ %.pre, %1064 ], [ %1140, %._crit_edge2067 ]
  %.017172070 = phi float [ 0.000000e+00, %1064 ], [ %.11718.lcssa, %._crit_edge2067 ]
  %.017292069 = phi i32 [ 0, %1064 ], [ %1141, %._crit_edge2067 ]
  %1082 = icmp sgt i32 %1081, 0
  br i1 %1082, label %.preheader1977.preheader, label %._crit_edge2067

.preheader1977.preheader:                         ; preds = %.preheader1984
  %.pre2184 = load i32, ptr %8, align 4, !tbaa !5
  br label %.preheader1977

.preheader1977:                                   ; preds = %.preheader1977.preheader, %._crit_edge2063
  %1083 = phi i32 [ %1135, %._crit_edge2063 ], [ %1080, %.preheader1977.preheader ]
  %1084 = phi i32 [ %1136, %._crit_edge2063 ], [ %.pre2184, %.preheader1977.preheader ]
  %.117182066 = phi float [ %.21719.lcssa, %._crit_edge2063 ], [ %.017172070, %.preheader1977.preheader ]
  %.017282065 = phi i32 [ %1137, %._crit_edge2063 ], [ 0, %.preheader1977.preheader ]
  %1085 = icmp sgt i32 %1084, 1
  br i1 %1085, label %.lr.ph2062, label %._crit_edge2063

.lr.ph2062:                                       ; preds = %.preheader1977, %.critedge1851
  %1086 = phi i32 [ %1118, %.critedge1851 ], [ %1084, %.preheader1977 ]
  %.217192061 = phi float [ %.31720, %.critedge1851 ], [ %.117182066, %.preheader1977 ]
  %.017272060 = phi i32 [ %1133, %.critedge1851 ], [ 0, %.preheader1977 ]
  %1087 = and i32 %.017272060, 15
  %1088 = icmp eq i32 %1087, 0
  br i1 %1088, label %1089, label %.critedge1851

1089:                                             ; preds = %.lr.ph2062
  %1090 = load ptr, ptr %527, align 8, !tbaa !64
  %1091 = load i32, ptr %3, align 4, !tbaa !5
  %1092 = sdiv i32 %1086, 32
  %1093 = mul i32 %1092, %.017292069
  %1094 = lshr exact i32 %.017272060, 4
  %reass.add1966 = add i32 %1093, %1094
  %reass.mul1967 = mul i32 %reass.add1966, %1091
  %1095 = add i32 %reass.mul1967, %.017282065
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds i8, ptr %1090, i64 %1096
  %1098 = load i8, ptr %1097, align 1, !tbaa !60
  %1099 = zext i8 %1098 to i32
  %1100 = shl nuw nsw i32 %1099, 23
  %1101 = bitcast i32 %1100 to float
  br label %.critedge1851

.critedge1851:                                    ; preds = %1089, %.lr.ph2062
  %.31720 = phi float [ %1101, %1089 ], [ %.217192061, %.lr.ph2062 ]
  %1102 = call i32 @rand() #13
  %1103 = srem i32 %1102, 16
  %1104 = trunc nsw i32 %1103 to i8
  %1105 = call i32 @rand() #13
  %1106 = srem i32 %1105, 16
  %1107 = trunc nsw i32 %1106 to i8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #13
  %1108 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1104)
  %1109 = fmul float %.31720, %1108
  store float %1109, ptr %16, align 4, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %1110 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1107)
  %1111 = fmul float %.31720, %1110
  store float %1111, ptr %17, align 4, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #13
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %19) #13
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %16, ptr noundef nonnull %18, i64 noundef 1) #13
  call void @libxsmm_rne_convert_fp32_bf16(ptr noundef nonnull %17, ptr noundef nonnull %19, i64 noundef 1) #13
  %1112 = and i32 %1103, 15
  %1113 = shl nsw i32 %1106, 4
  %1114 = or disjoint i32 %1113, %1112
  %1115 = trunc i32 %1114 to i8
  %1116 = load i32, ptr %3, align 4, !tbaa !5
  %1117 = mul nsw i32 %1116, %.017292069
  %1118 = load i32, ptr %8, align 4, !tbaa !5
  %1119 = sdiv i32 %1118, 2
  %1120 = mul nsw i32 %1119, %1117
  %1121 = mul nsw i32 %1116, %.017272060
  %1122 = add i32 %1121, %.017282065
  %1123 = add i32 %1122, %1120
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds i8, ptr %1072, i64 %1124
  store i8 %1115, ptr %1125, align 1, !tbaa !60
  %1126 = load i16, ptr %18, align 2, !tbaa !82
  %1127 = mul nsw i32 %1117, %1118
  %reass.mul1969 = shl i32 %1122, 1
  %1128 = add i32 %reass.mul1969, %1127
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds i16, ptr %1079, i64 %1129
  store i16 %1126, ptr %1130, align 2, !tbaa !82
  %1131 = load i16, ptr %19, align 2, !tbaa !82
  %1132 = getelementptr i8, ptr %1130, i64 2
  store i16 %1131, ptr %1132, align 2, !tbaa !82
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %19) #13
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #13
  %1133 = add nuw nsw i32 %.017272060, 1
  %1134 = icmp slt i32 %1133, %1119
  br i1 %1134, label %.lr.ph2062, label %._crit_edge2063.loopexit, !llvm.loop !84

._crit_edge2063.loopexit:                         ; preds = %.critedge1851
  %.pre2185 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge2063

._crit_edge2063:                                  ; preds = %._crit_edge2063.loopexit, %.preheader1977
  %1135 = phi i32 [ %1083, %.preheader1977 ], [ %.pre2185, %._crit_edge2063.loopexit ]
  %1136 = phi i32 [ %1084, %.preheader1977 ], [ %1118, %._crit_edge2063.loopexit ]
  %.21719.lcssa = phi float [ %.117182066, %.preheader1977 ], [ %.31720, %._crit_edge2063.loopexit ]
  %1137 = add nuw nsw i32 %.017282065, 1
  %1138 = icmp slt i32 %1137, %1135
  br i1 %1138, label %.preheader1977, label %._crit_edge2067, !llvm.loop !85

._crit_edge2067:                                  ; preds = %._crit_edge2063, %.preheader1984
  %1139 = phi i32 [ %1080, %.preheader1984 ], [ %1135, %._crit_edge2063 ]
  %1140 = phi i32 [ %1081, %.preheader1984 ], [ %1135, %._crit_edge2063 ]
  %.11718.lcssa = phi float [ %.017172070, %.preheader1984 ], [ %.21719.lcssa, %._crit_edge2063 ]
  %1141 = add nuw nsw i32 %.017292069, 1
  %exitcond2176.not = icmp eq i32 %1141, %363
  br i1 %exitcond2176.not, label %1142, label %.preheader1984, !llvm.loop !86

1142:                                             ; preds = %._crit_edge2067
  %1143 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1072, ptr noundef %602, ptr noundef %617, ptr noundef %632, i32 noundef %.01725, i32 noundef %.01699, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1072) #13
  store i32 2, ptr %9, align 8, !tbaa !27
  store i32 1, ptr %482, align 8, !tbaa !35
  br label %1144

1144:                                             ; preds = %1142, %.loopexit
  %.11761 = phi ptr [ %1079, %1142 ], [ %582, %.loopexit ]
  %.21691 = phi double [ %1143, %1142 ], [ %.11690, %.loopexit ]
  %1145 = load i32, ptr %23, align 8, !tbaa !18
  %.not1811 = icmp eq i32 %1145, 0
  br i1 %.not1811, label %1231, label %1146

1146:                                             ; preds = %1144
  %1147 = load i32, ptr %3, align 4, !tbaa !5
  %1148 = sext i32 %1147 to i64
  %1149 = load i32, ptr %8, align 4, !tbaa !5
  %1150 = sext i32 %1149 to i64
  %1151 = lshr i64 %1150, 1
  %1152 = mul nsw i64 %1148, %520
  %1153 = mul i64 %1152, %1151
  %1154 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1153, i64 noundef 64) #13
  call void @libxsmm_free(ptr noundef %.11761) #13
  %1155 = load i32, ptr %3, align 4, !tbaa !5
  %1156 = sext i32 %1155 to i64
  %1157 = load i32, ptr %8, align 4, !tbaa !5
  %1158 = sext i32 %1157 to i64
  %1159 = mul i64 %539, %1156
  %1160 = mul i64 %1159, %1158
  %1161 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1160, i64 noundef 64) #13
  %.pre2186 = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1983

.preheader1983:                                   ; preds = %1146, %._crit_edge2078
  %1162 = phi i32 [ %.pre2186, %1146 ], [ %1226, %._crit_edge2078 ]
  %1163 = phi i32 [ %.pre2186, %1146 ], [ %1227, %._crit_edge2078 ]
  %.017002081 = phi float [ 0.000000e+00, %1146 ], [ %.11701.lcssa, %._crit_edge2078 ]
  %.017092080 = phi i32 [ 0, %1146 ], [ %1228, %._crit_edge2078 ]
  %1164 = icmp sgt i32 %1163, 0
  br i1 %1164, label %.preheader1976.preheader, label %._crit_edge2078

.preheader1976.preheader:                         ; preds = %.preheader1983
  %.pre2187 = load i32, ptr %8, align 4, !tbaa !5
  br label %.preheader1976

.preheader1976:                                   ; preds = %.preheader1976.preheader, %._crit_edge2074
  %1165 = phi i32 [ %1222, %._crit_edge2074 ], [ %1162, %.preheader1976.preheader ]
  %1166 = phi i32 [ %1223, %._crit_edge2074 ], [ %.pre2187, %.preheader1976.preheader ]
  %.117012077 = phi float [ %.21702.lcssa, %._crit_edge2074 ], [ %.017002081, %.preheader1976.preheader ]
  %.017082076 = phi i32 [ %1224, %._crit_edge2074 ], [ 0, %.preheader1976.preheader ]
  %1167 = icmp sgt i32 %1166, 1
  br i1 %1167, label %.lr.ph2073, label %._crit_edge2074

.lr.ph2073:                                       ; preds = %.preheader1976, %.critedge1853
  %1168 = phi i32 [ %1200, %.critedge1853 ], [ %1166, %.preheader1976 ]
  %.217022072 = phi float [ %.31703, %.critedge1853 ], [ %.117012077, %.preheader1976 ]
  %.017072071 = phi i32 [ %1220, %.critedge1853 ], [ 0, %.preheader1976 ]
  %1169 = and i32 %.017072071, 15
  %1170 = icmp eq i32 %1169, 0
  br i1 %1170, label %1171, label %.critedge1853

1171:                                             ; preds = %.lr.ph2073
  %1172 = load ptr, ptr %527, align 8, !tbaa !64
  %1173 = load i32, ptr %3, align 4, !tbaa !5
  %1174 = sdiv i32 %1168, 32
  %1175 = mul i32 %1174, %.017092080
  %1176 = lshr exact i32 %.017072071, 4
  %reass.add1970 = add i32 %1175, %1176
  %reass.mul1971 = mul i32 %reass.add1970, %1173
  %1177 = add i32 %reass.mul1971, %.017082076
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds i8, ptr %1172, i64 %1178
  %1180 = load i8, ptr %1179, align 1, !tbaa !60
  %1181 = zext i8 %1180 to i32
  %1182 = shl nuw nsw i32 %1181, 23
  %1183 = bitcast i32 %1182 to float
  br label %.critedge1853

.critedge1853:                                    ; preds = %1171, %.lr.ph2073
  %.31703 = phi float [ %1183, %1171 ], [ %.217022072, %.lr.ph2073 ]
  %1184 = call i32 @rand() #13
  %1185 = srem i32 %1184, 16
  %1186 = trunc nsw i32 %1185 to i8
  %1187 = call i32 @rand() #13
  %1188 = srem i32 %1187, 16
  %1189 = trunc nsw i32 %1188 to i8
  %1190 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1186)
  %1191 = fmul float %.31703, %1190
  %1192 = call float @convert_mxfp4_to_float(i8 noundef zeroext %1189)
  %1193 = fmul float %.31703, %1192
  %1194 = and i32 %1185, 15
  %1195 = shl nsw i32 %1188, 4
  %1196 = or disjoint i32 %1195, %1194
  %1197 = trunc i32 %1196 to i8
  %1198 = load i32, ptr %3, align 4, !tbaa !5
  %1199 = mul nsw i32 %1198, %.017092080
  %1200 = load i32, ptr %8, align 4, !tbaa !5
  %1201 = sdiv i32 %1200, 2
  %1202 = mul nsw i32 %1201, %1199
  %1203 = mul nsw i32 %1198, %.017072071
  %1204 = add i32 %1203, %.017082076
  %1205 = add i32 %1204, %1202
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds i8, ptr %1154, i64 %1206
  store i8 %1197, ptr %1207, align 1, !tbaa !60
  %1208 = mul nsw i32 %1199, %1200
  %1209 = shl nuw nsw i32 %.017072071, 1
  %1210 = mul nsw i32 %1198, %1209
  %1211 = add i32 %1208, %.017082076
  %1212 = add i32 %1211, %1210
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds float, ptr %1161, i64 %1213
  store float %1191, ptr %1214, align 4, !tbaa !53
  %1215 = or disjoint i32 %1209, 1
  %1216 = mul nsw i32 %1198, %1215
  %1217 = add i32 %1211, %1216
  %1218 = sext i32 %1217 to i64
  %1219 = getelementptr inbounds float, ptr %1161, i64 %1218
  store float %1193, ptr %1219, align 4, !tbaa !53
  %1220 = add nuw nsw i32 %.017072071, 1
  %1221 = icmp slt i32 %1220, %1201
  br i1 %1221, label %.lr.ph2073, label %._crit_edge2074.loopexit, !llvm.loop !87

._crit_edge2074.loopexit:                         ; preds = %.critedge1853
  %.pre2188 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge2074

._crit_edge2074:                                  ; preds = %._crit_edge2074.loopexit, %.preheader1976
  %1222 = phi i32 [ %1165, %.preheader1976 ], [ %.pre2188, %._crit_edge2074.loopexit ]
  %1223 = phi i32 [ %1166, %.preheader1976 ], [ %1200, %._crit_edge2074.loopexit ]
  %.21702.lcssa = phi float [ %.117012077, %.preheader1976 ], [ %.31703, %._crit_edge2074.loopexit ]
  %1224 = add nuw nsw i32 %.017082076, 1
  %1225 = icmp slt i32 %1224, %1222
  br i1 %1225, label %.preheader1976, label %._crit_edge2078, !llvm.loop !88

._crit_edge2078:                                  ; preds = %._crit_edge2074, %.preheader1983
  %1226 = phi i32 [ %1162, %.preheader1983 ], [ %1222, %._crit_edge2074 ]
  %1227 = phi i32 [ %1163, %.preheader1983 ], [ %1222, %._crit_edge2074 ]
  %.11701.lcssa = phi float [ %.017002081, %.preheader1983 ], [ %.21702.lcssa, %._crit_edge2074 ]
  %1228 = add nuw nsw i32 %.017092080, 1
  %exitcond2177.not = icmp eq i32 %1228, %363
  br i1 %exitcond2177.not, label %1229, label %.preheader1983, !llvm.loop !89

1229:                                             ; preds = %._crit_edge2078
  %1230 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1154, ptr noundef %602, ptr noundef %617, ptr noundef %632, i32 noundef %.01725, i32 noundef %.01699, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1154) #13
  store i32 1, ptr %9, align 8, !tbaa !27
  store i32 1, ptr %482, align 8, !tbaa !35
  br label %1231

1231:                                             ; preds = %1229, %1144
  %.21762 = phi ptr [ %1161, %1229 ], [ %.11761, %1144 ]
  %.31692 = phi double [ %1230, %1229 ], [ %.21691, %1144 ]
  %1232 = load i32, ptr %24, align 4, !tbaa !19
  %.not1812 = icmp eq i32 %1232, 0
  br i1 %.not1812, label %1404, label %1233

1233:                                             ; preds = %1231
  %1234 = load i32, ptr %3, align 4, !tbaa !5
  %1235 = sext i32 %1234 to i64
  %1236 = load i32, ptr %8, align 4, !tbaa !5
  %1237 = sext i32 %1236 to i64
  %1238 = lshr i64 %1237, 1
  %1239 = mul nsw i64 %1235, %520
  %1240 = mul i64 %1239, %1238
  %1241 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1240, i64 noundef 64) #13
  call void @libxsmm_free(ptr noundef %.21762) #13
  %1242 = load i32, ptr %3, align 4, !tbaa !5
  %1243 = sext i32 %1242 to i64
  %1244 = load i32, ptr %8, align 4, !tbaa !5
  %1245 = sext i32 %1244 to i64
  %1246 = mul nsw i64 %1243, %520
  %1247 = mul i64 %1246, %1245
  %1248 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1247, i64 noundef 64) #13
  %.pre2189 = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1982

.preheader1982:                                   ; preds = %1233, %._crit_edge2086
  %1249 = phi i32 [ %.pre2189, %1233 ], [ %1399, %._crit_edge2086 ]
  %1250 = phi i32 [ %.pre2189, %1233 ], [ %1400, %._crit_edge2086 ]
  %.016812087 = phi i32 [ 0, %1233 ], [ %1401, %._crit_edge2086 ]
  %1251 = icmp sgt i32 %1250, 0
  br i1 %1251, label %.preheader1975.preheader, label %._crit_edge2086

.preheader1975.preheader:                         ; preds = %.preheader1982
  %.pre2190 = load i32, ptr %8, align 4, !tbaa !5
  br label %.preheader1975

.preheader1975:                                   ; preds = %.preheader1975.preheader, %._crit_edge2084
  %1252 = phi i32 [ %1395, %._crit_edge2084 ], [ %1249, %.preheader1975.preheader ]
  %1253 = phi i32 [ %1396, %._crit_edge2084 ], [ %.pre2190, %.preheader1975.preheader ]
  %.016802085 = phi i32 [ %1397, %._crit_edge2084 ], [ 0, %.preheader1975.preheader ]
  %1254 = icmp sgt i32 %1253, 7
  br i1 %1254, label %.preheader.lr.ph, label %._crit_edge2084

.preheader.lr.ph:                                 ; preds = %.preheader1975
  %1255 = shl nsw i32 %.016802085, 5
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %.preheader
  %.016792083 = phi i32 [ 0, %.preheader.lr.ph ], [ %1392, %.preheader ]
  %1256 = shl nsw i32 %.016792083, 3
  %1257 = and i32 %1256, 2147483616
  %.masked = and i32 %1256, 24
  %1258 = call i32 @rand() #13
  %1259 = srem i32 %1258, 16
  %1260 = trunc nsw i32 %1259 to i8
  %1261 = call i32 @rand() #13
  %1262 = srem i32 %1261, 16
  %1263 = trunc nsw i32 %1262 to i8
  %1264 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1260)
  %1265 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1263)
  %1266 = and i32 %1259, 15
  %1267 = shl nsw i32 %1262, 4
  %1268 = or disjoint i32 %1267, %1266
  %1269 = trunc i32 %1268 to i8
  %1270 = load i32, ptr %3, align 4, !tbaa !5
  %1271 = mul nsw i32 %1270, %.016812087
  %1272 = load i32, ptr %8, align 4, !tbaa !5
  %1273 = sdiv i32 %1272, 2
  %1274 = mul nsw i32 %1273, %1271
  %1275 = mul i32 %1270, %.016792083
  %reass.add1972 = add i32 %1275, %.016802085
  %reass.mul1973 = shl i32 %reass.add1972, 2
  %1276 = add i32 %1274, %reass.mul1973
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds i8, ptr %1241, i64 %1277
  store i8 %1269, ptr %1278, align 1, !tbaa !60
  %1279 = mul nsw i32 %1271, %1272
  %1280 = mul i32 %1257, %1270
  %1281 = add i32 %1280, %1255
  %1282 = add i32 %1281, %1279
  %1283 = add nsw i32 %1282, %.masked
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds i8, ptr %1248, i64 %1284
  store i8 %1264, ptr %1285, align 1, !tbaa !60
  %1286 = or disjoint i32 %.masked, 4
  %1287 = add nsw i32 %1286, %1282
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds i8, ptr %1248, i64 %1288
  store i8 %1265, ptr %1289, align 1, !tbaa !60
  %1290 = call i32 @rand() #13
  %1291 = srem i32 %1290, 16
  %1292 = trunc nsw i32 %1291 to i8
  %1293 = call i32 @rand() #13
  %1294 = srem i32 %1293, 16
  %1295 = trunc nsw i32 %1294 to i8
  %1296 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1292)
  %1297 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1295)
  %1298 = and i32 %1291, 15
  %1299 = shl nsw i32 %1294, 4
  %1300 = or disjoint i32 %1299, %1298
  %1301 = trunc i32 %1300 to i8
  %1302 = load i32, ptr %3, align 4, !tbaa !5
  %1303 = mul nsw i32 %1302, %.016812087
  %1304 = load i32, ptr %8, align 4, !tbaa !5
  %1305 = sdiv i32 %1304, 2
  %1306 = mul nsw i32 %1305, %1303
  %1307 = mul i32 %1302, %.016792083
  %reass.add1972.1 = add i32 %1307, %.016802085
  %reass.mul1973.1 = shl i32 %reass.add1972.1, 2
  %1308 = add i32 %1306, 1
  %1309 = add i32 %1308, %reass.mul1973.1
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds i8, ptr %1241, i64 %1310
  store i8 %1301, ptr %1311, align 1, !tbaa !60
  %1312 = mul nsw i32 %1303, %1304
  %1313 = mul i32 %1257, %1302
  %1314 = add i32 %1313, %1255
  %1315 = add i32 %1314, %1312
  %1316 = or disjoint i32 %.masked, 1
  %1317 = add nsw i32 %1315, %1316
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds i8, ptr %1248, i64 %1318
  store i8 %1296, ptr %1319, align 1, !tbaa !60
  %1320 = or disjoint i32 %.masked, 5
  %1321 = add nsw i32 %1320, %1315
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds i8, ptr %1248, i64 %1322
  store i8 %1297, ptr %1323, align 1, !tbaa !60
  %1324 = call i32 @rand() #13
  %1325 = srem i32 %1324, 16
  %1326 = trunc nsw i32 %1325 to i8
  %1327 = call i32 @rand() #13
  %1328 = srem i32 %1327, 16
  %1329 = trunc nsw i32 %1328 to i8
  %1330 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1326)
  %1331 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1329)
  %1332 = and i32 %1325, 15
  %1333 = shl nsw i32 %1328, 4
  %1334 = or disjoint i32 %1333, %1332
  %1335 = trunc i32 %1334 to i8
  %1336 = load i32, ptr %3, align 4, !tbaa !5
  %1337 = mul nsw i32 %1336, %.016812087
  %1338 = load i32, ptr %8, align 4, !tbaa !5
  %1339 = sdiv i32 %1338, 2
  %1340 = mul nsw i32 %1339, %1337
  %1341 = mul i32 %1336, %.016792083
  %reass.add1972.2 = add i32 %1341, %.016802085
  %reass.mul1973.2 = shl i32 %reass.add1972.2, 2
  %1342 = add i32 %1340, 2
  %1343 = add i32 %1342, %reass.mul1973.2
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds i8, ptr %1241, i64 %1344
  store i8 %1335, ptr %1345, align 1, !tbaa !60
  %1346 = mul nsw i32 %1337, %1338
  %1347 = mul i32 %1257, %1336
  %1348 = add i32 %1347, %1255
  %1349 = add i32 %1348, %1346
  %1350 = or disjoint i32 %.masked, 2
  %1351 = add nsw i32 %1349, %1350
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds i8, ptr %1248, i64 %1352
  store i8 %1330, ptr %1353, align 1, !tbaa !60
  %1354 = or disjoint i32 %.masked, 6
  %1355 = add nsw i32 %1354, %1349
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds i8, ptr %1248, i64 %1356
  store i8 %1331, ptr %1357, align 1, !tbaa !60
  %1358 = call i32 @rand() #13
  %1359 = srem i32 %1358, 16
  %1360 = trunc nsw i32 %1359 to i8
  %1361 = call i32 @rand() #13
  %1362 = srem i32 %1361, 16
  %1363 = trunc nsw i32 %1362 to i8
  %1364 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1360)
  %1365 = call signext i8 @convert_mxfp4_to_char(i8 noundef zeroext %1363)
  %1366 = and i32 %1359, 15
  %1367 = shl nsw i32 %1362, 4
  %1368 = or disjoint i32 %1367, %1366
  %1369 = trunc i32 %1368 to i8
  %1370 = load i32, ptr %3, align 4, !tbaa !5
  %1371 = mul nsw i32 %1370, %.016812087
  %1372 = load i32, ptr %8, align 4, !tbaa !5
  %1373 = sdiv i32 %1372, 2
  %1374 = mul nsw i32 %1373, %1371
  %1375 = mul i32 %1370, %.016792083
  %reass.add1972.3 = add i32 %1375, %.016802085
  %reass.mul1973.3 = shl i32 %reass.add1972.3, 2
  %1376 = add i32 %1374, 3
  %1377 = add i32 %1376, %reass.mul1973.3
  %1378 = sext i32 %1377 to i64
  %1379 = getelementptr inbounds i8, ptr %1241, i64 %1378
  store i8 %1369, ptr %1379, align 1, !tbaa !60
  %1380 = mul nsw i32 %1371, %1372
  %1381 = mul i32 %1257, %1370
  %1382 = add i32 %1381, %1255
  %1383 = add i32 %1382, %1380
  %1384 = or disjoint i32 %.masked, 3
  %1385 = add nsw i32 %1383, %1384
  %1386 = sext i32 %1385 to i64
  %1387 = getelementptr inbounds i8, ptr %1248, i64 %1386
  store i8 %1364, ptr %1387, align 1, !tbaa !60
  %1388 = or disjoint i32 %.masked, 7
  %1389 = add nsw i32 %1388, %1383
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds i8, ptr %1248, i64 %1390
  store i8 %1365, ptr %1391, align 1, !tbaa !60
  %1392 = add nuw nsw i32 %.016792083, 1
  %1393 = sdiv i32 %1372, 8
  %1394 = icmp slt i32 %1392, %1393
  br i1 %1394, label %.preheader, label %._crit_edge2084.loopexit, !llvm.loop !90

._crit_edge2084.loopexit:                         ; preds = %.preheader
  %.pre2191 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge2084

._crit_edge2084:                                  ; preds = %._crit_edge2084.loopexit, %.preheader1975
  %1395 = phi i32 [ %.pre2191, %._crit_edge2084.loopexit ], [ %1252, %.preheader1975 ]
  %1396 = phi i32 [ %1372, %._crit_edge2084.loopexit ], [ %1253, %.preheader1975 ]
  %1397 = add nuw nsw i32 %.016802085, 1
  %1398 = icmp slt i32 %1397, %1395
  br i1 %1398, label %.preheader1975, label %._crit_edge2086, !llvm.loop !91

._crit_edge2086:                                  ; preds = %._crit_edge2084, %.preheader1982
  %1399 = phi i32 [ %1249, %.preheader1982 ], [ %1395, %._crit_edge2084 ]
  %1400 = phi i32 [ %1250, %.preheader1982 ], [ %1395, %._crit_edge2084 ]
  %1401 = add nuw nsw i32 %.016812087, 1
  %exitcond2178.not = icmp eq i32 %1401, %363
  br i1 %exitcond2178.not, label %1402, label %.preheader1982, !llvm.loop !92

1402:                                             ; preds = %._crit_edge2086
  %1403 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1241, ptr noundef %602, ptr noundef %617, ptr noundef %632, i32 noundef %.01725, i32 noundef %.01699, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1241) #13
  store i32 12, ptr %9, align 8, !tbaa !27
  store i32 1, ptr %482, align 8, !tbaa !35
  br label %1404

1404:                                             ; preds = %1402, %1231
  %.31763 = phi ptr [ %1248, %1402 ], [ %.21762, %1231 ]
  %.41693 = phi double [ %1403, %1402 ], [ %.31692, %1231 ]
  %1405 = load i32, ptr %25, align 4, !tbaa !20
  %1406 = icmp ne i32 %1405, 0
  %1407 = load i32, ptr %26, align 8
  %1408 = icmp ne i32 %1407, 0
  %or.cond377 = select i1 %1406, i1 true, i1 %1408
  %1409 = load i32, ptr %27, align 4
  %1410 = icmp ne i32 %1409, 0
  %or.cond380 = select i1 %or.cond377, i1 true, i1 %1410
  %or.cond382 = and i1 %540, %or.cond380
  br i1 %or.cond382, label %1411, label %1414

1411:                                             ; preds = %1404
  %1412 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %.01767, ptr noundef %602, ptr noundef %617, ptr noundef %632, i32 noundef %.01725, i32 noundef %.01699, ptr noundef nonnull %11)
  %.not1813 = icmp eq ptr %.01767, null
  br i1 %.not1813, label %.thread1895, label %1413

1413:                                             ; preds = %1411
  call void @libxsmm_free(ptr noundef nonnull %.01767) #13
  br label %.thread1895

1414:                                             ; preds = %1404
  %1415 = load i32, ptr %8, align 4
  %1416 = icmp sgt i32 %1415, 0
  %or.cond2099 = select i1 %362, i1 %1416, i1 false
  br i1 %or.cond2099, label %.preheader1981.preheader, label %.thread1895

.preheader1981.preheader:                         ; preds = %1414
  %.pre2192 = load i32, ptr %6, align 4, !tbaa !5
  br label %.preheader1981

.preheader1981:                                   ; preds = %.preheader1981.preheader, %._crit_edge2090
  %1417 = phi i32 [ %1445, %._crit_edge2090 ], [ %1415, %.preheader1981.preheader ]
  %1418 = phi i32 [ %1446, %._crit_edge2090 ], [ %.pre2192, %.preheader1981.preheader ]
  %.016672091 = phi i32 [ %1447, %._crit_edge2090 ], [ 0, %.preheader1981.preheader ]
  %1419 = icmp sgt i32 %1418, 0
  br i1 %1419, label %.lr.ph2089, label %._crit_edge2090

.lr.ph2089:                                       ; preds = %.preheader1981, %.thread1900
  %.016682088 = phi i32 [ %1442, %.thread1900 ], [ 0, %.preheader1981 ]
  %1420 = call double @libxsmm_rng_f64() #13
  %1421 = fptrunc double %1420 to float
  %1422 = fcmp ult float %.21748, %1421
  br i1 %1422, label %.thread1900, label %1423

1423:                                             ; preds = %.lr.ph2089
  %1424 = load i32, ptr %9, align 8, !tbaa !27
  switch i32 %1424, label %.thread1900 [
    i32 2, label %.thread1898
    i32 3, label %1430
    i32 1, label %1436
  ]

.thread1898:                                      ; preds = %1423
  %1425 = load i32, ptr %6, align 4, !tbaa !5
  %1426 = mul nsw i32 %1425, %.016672091
  %1427 = add nsw i32 %1426, %.016682088
  %1428 = sext i32 %1427 to i64
  %1429 = getelementptr inbounds i16, ptr %.31763, i64 %1428
  store i16 0, ptr %1429, align 2, !tbaa !82
  br label %.thread1900

1430:                                             ; preds = %1423
  %1431 = load i32, ptr %6, align 4, !tbaa !5
  %1432 = mul nsw i32 %1431, %.016672091
  %1433 = add nsw i32 %1432, %.016682088
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds i16, ptr %.31763, i64 %1434
  store i16 0, ptr %1435, align 2, !tbaa !82
  br label %.thread1900

1436:                                             ; preds = %1423
  %1437 = load i32, ptr %6, align 4, !tbaa !5
  %1438 = mul nsw i32 %1437, %.016672091
  %1439 = add nsw i32 %1438, %.016682088
  %1440 = sext i32 %1439 to i64
  %1441 = getelementptr inbounds float, ptr %.31763, i64 %1440
  store float 0.000000e+00, ptr %1441, align 4, !tbaa !53
  br label %.thread1900

.thread1900:                                      ; preds = %1423, %1430, %.thread1898, %1436, %.lr.ph2089
  %1442 = add nuw nsw i32 %.016682088, 1
  %1443 = load i32, ptr %6, align 4, !tbaa !5
  %1444 = icmp slt i32 %1442, %1443
  br i1 %1444, label %.lr.ph2089, label %._crit_edge2090.loopexit, !llvm.loop !93

._crit_edge2090.loopexit:                         ; preds = %.thread1900
  %.pre2193 = load i32, ptr %8, align 4, !tbaa !5
  br label %._crit_edge2090

._crit_edge2090:                                  ; preds = %._crit_edge2090.loopexit, %.preheader1981
  %1445 = phi i32 [ %.pre2193, %._crit_edge2090.loopexit ], [ %1417, %.preheader1981 ]
  %1446 = phi i32 [ %1443, %._crit_edge2090.loopexit ], [ %1418, %.preheader1981 ]
  %1447 = add nuw nsw i32 %.016672091, 1
  %1448 = icmp slt i32 %1447, %1445
  br i1 %1448, label %.preheader1981, label %.thread1895, !llvm.loop !94

.thread1895:                                      ; preds = %._crit_edge2090, %1413, %1411, %1414
  %.516941897 = phi double [ %.41693, %1414 ], [ %1412, %1411 ], [ %1412, %1413 ], [ %.41693, %._crit_edge2090 ]
  call void @ref_matmul(ptr noundef nonnull %9, ptr noundef %.31763, ptr noundef %602, ptr noundef %647)
  %1449 = load i32, ptr %22, align 4, !tbaa !17
  %.not1814 = icmp eq i32 %1449, 0
  br i1 %.not1814, label %1451, label %1450

1450:                                             ; preds = %.thread1895
  store i32 12, ptr %9, align 8, !tbaa !27
  br label %1451

1451:                                             ; preds = %1450, %.thread1895
  %1452 = load i32, ptr %23, align 8, !tbaa !18
  %.not1815 = icmp eq i32 %1452, 0
  br i1 %.not1815, label %1454, label %1453

1453:                                             ; preds = %1451
  store i32 12, ptr %9, align 8, !tbaa !27
  br label %1454

1454:                                             ; preds = %1451, %1453, %963
  %.41764 = phi ptr [ %582, %963 ], [ %.31763, %1453 ], [ %.31763, %1451 ]
  %.61695 = phi double [ %.01689, %963 ], [ %.516941897, %1453 ], [ %.516941897, %1451 ]
  br i1 %376, label %1455, label %1468

1455:                                             ; preds = %1454
  %1456 = load i32, ptr %477, align 8
  %1457 = and i32 %1456, -2
  %or.cond385 = icmp eq i32 %1457, 2
  br i1 %or.cond385, label %1458, label %1467

1458:                                             ; preds = %1455
  %1459 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %1456) #13
  %1460 = icmp eq i32 %1459, 4
  br i1 %1460, label %1461, label %1466

1461:                                             ; preds = %1458
  %1462 = load i32, ptr %515, align 4, !tbaa !48
  %1463 = and i32 %1462, 3
  %1464 = icmp eq i32 %1463, 0
  br i1 %1464, label %1465, label %1466

1465:                                             ; preds = %1461
  call void @convert_output_to_vnni4(ptr noundef nonnull %9, ptr noundef %647)
  br label %1468

1466:                                             ; preds = %1461, %1458
  call void @convert_output_to_vnni2(ptr noundef nonnull %9, ptr noundef %647)
  br label %1468

1467:                                             ; preds = %1455
  call void @convert_output_to_vnni4(ptr noundef nonnull %9, ptr noundef %647)
  br label %1468

1468:                                             ; preds = %1467, %1466, %1465, %1454
  %1469 = load i32, ptr %20, align 8, !tbaa !15
  %.not1816 = icmp eq i32 %1469, 0
  br i1 %.not1816, label %1528, label %1470

1470:                                             ; preds = %1468
  %1471 = load i32, ptr %3, align 4, !tbaa !5
  %1472 = sext i32 %1471 to i64
  %1473 = load i32, ptr %8, align 4, !tbaa !5
  %1474 = sdiv i32 %1473, 2
  %1475 = sext i32 %1474 to i64
  %1476 = load i32, ptr %9, align 8
  switch i32 %1476, label %1477 [
    i32 0, label %1482
    i32 1, label %.fold.split1854
  ]

1477:                                             ; preds = %1470
  %1478 = and i32 %1476, -2
  %switch.tableidx2322 = add i32 %1478, -2
  %1479 = icmp ult i32 %switch.tableidx2322, 11
  br i1 %1479, label %switch.hole_check2323, label %1480

1480:                                             ; preds = %switch.hole_check2323, %1477
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.32, i32 noundef 3660, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

.fold.split1854:                                  ; preds = %1470
  br label %1482

switch.hole_check2323:                            ; preds = %1477
  %switch.maskindex2325 = trunc nuw i32 %switch.tableidx2322 to i16
  %switch.shifted2326 = lshr i16 1365, %switch.maskindex2325
  %switch.lobit2327 = trunc i16 %switch.shifted2326 to i1
  br i1 %switch.lobit2327, label %switch.lookup2324, label %1480

switch.lookup2324:                                ; preds = %switch.hole_check2323
  %1481 = zext nneg i32 %switch.tableidx2322 to i64
  %switch.gep2328 = getelementptr inbounds [11 x i64], ptr @switch.table.main.5, i64 0, i64 %1481
  %switch.load2329 = load i64, ptr %switch.gep2328, align 8
  br label %1482

1482:                                             ; preds = %switch.lookup2324, %1470, %.fold.split1854
  %1483 = phi i64 [ 8, %1470 ], [ 4, %.fold.split1854 ], [ %switch.load2329, %switch.lookup2324 ]
  %1484 = mul nsw i64 %1472, %520
  %1485 = mul i64 %1484, %1475
  %1486 = mul i64 %1485, %1483
  %1487 = call noalias ptr @libxsmm_aligned_malloc(i64 noundef %1486, i64 noundef 64) #13
  %1488 = load i32, ptr %6, align 4, !tbaa !5
  %1489 = icmp sgt i32 %1488, 0
  %1490 = load i32, ptr %8, align 4
  %1491 = icmp sgt i32 %1490, 0
  %1492 = load i32, ptr %3, align 4
  %1493 = sdiv i32 %1490, 2
  %1494 = sext i32 %1490 to i64
  br label %.preheader1980

.preheader1980:                                   ; preds = %1482, %._crit_edge2096
  %.016602097 = phi i32 [ 0, %1482 ], [ %1525, %._crit_edge2096 ]
  br i1 %1489, label %.preheader1974.lr.ph, label %._crit_edge2096

.preheader1974.lr.ph:                             ; preds = %.preheader1980
  %1495 = mul nsw i32 %1492, %.016602097
  %1496 = mul nsw i32 %1495, %1490
  %1497 = mul nsw i32 %1495, %1493
  br i1 %1491, label %.preheader1974.us, label %._crit_edge2096

.preheader1974.us:                                ; preds = %.preheader1974.lr.ph, %._crit_edge2094.us
  %.016592095.us = phi i32 [ %1524, %._crit_edge2094.us ], [ 0, %.preheader1974.lr.ph ]
  %1498 = add i32 %1496, %.016592095.us
  br label %1499

1499:                                             ; preds = %.preheader1974.us, %1499
  %indvars.iv2179 = phi i64 [ 0, %.preheader1974.us ], [ %indvars.iv.next2180, %1499 ]
  %1500 = trunc i64 %indvars.iv2179 to i32
  %1501 = mul i32 %1492, %1500
  %1502 = add i32 %1498, %1501
  %1503 = sext i32 %1502 to i64
  %1504 = getelementptr inbounds i8, ptr %.41764, i64 %1503
  %1505 = load i8, ptr %1504, align 1, !tbaa !60
  %1506 = trunc i64 %indvars.iv2179 to i32
  %1507 = or disjoint i32 %1506, 1
  %1508 = mul i32 %1507, %1492
  %1509 = add i32 %1498, %1508
  %1510 = sext i32 %1509 to i64
  %1511 = getelementptr inbounds i8, ptr %.41764, i64 %1510
  %1512 = load i8, ptr %1511, align 1, !tbaa !60
  %1513 = and i8 %1505, 15
  %1514 = shl i8 %1512, 4
  %1515 = or disjoint i8 %1514, %1513
  %1516 = lshr exact i64 %indvars.iv2179, 1
  %1517 = trunc i64 %1516 to i32
  %1518 = mul i32 %1492, %1517
  %1519 = add i32 %1518, %.016592095.us
  %1520 = add i32 %1519, %1497
  %1521 = sext i32 %1520 to i64
  %1522 = getelementptr inbounds i8, ptr %1487, i64 %1521
  store i8 %1515, ptr %1522, align 1, !tbaa !60
  %indvars.iv.next2180 = add nuw nsw i64 %indvars.iv2179, 2
  %1523 = icmp slt i64 %indvars.iv.next2180, %1494
  br i1 %1523, label %1499, label %._crit_edge2094.us, !llvm.loop !95

._crit_edge2094.us:                               ; preds = %1499
  %1524 = add nuw nsw i32 %.016592095.us, 1
  %exitcond2182.not = icmp eq i32 %1524, %1488
  br i1 %exitcond2182.not, label %._crit_edge2096, label %.preheader1974.us, !llvm.loop !96

._crit_edge2096:                                  ; preds = %._crit_edge2094.us, %.preheader1974.lr.ph, %.preheader1980
  %1525 = add nuw nsw i32 %.016602097, 1
  %exitcond2183.not = icmp eq i32 %1525, %363
  br i1 %exitcond2183.not, label %1526, label %.preheader1980, !llvm.loop !97

1526:                                             ; preds = %._crit_edge2096
  %1527 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %1487, ptr noundef %602, ptr noundef %617, ptr noundef %632, i32 noundef %.01725, i32 noundef %.01699, ptr noundef nonnull %11)
  call void @libxsmm_free(ptr noundef %1487) #13
  br label %1542

1528:                                             ; preds = %1468
  %1529 = load <4 x i32>, ptr %21, align 8
  %.fr = freeze <4 x i32> %1529
  %1530 = icmp ne <4 x i32> %.fr, zeroinitializer
  %1531 = load i32, ptr %22, align 4
  %.fr2338 = freeze i32 %1531
  %1532 = load i32, ptr %23, align 8
  %.fr2336 = freeze i32 %1532
  %1533 = load i32, ptr %24, align 4
  %1534 = icmp ne i32 %1533, 0
  %1535 = bitcast <4 x i1> %1530 to i4
  %1536 = icmp ne i4 %1535, 0
  %1537 = or i32 %.fr2338, %.fr2336
  %1538 = icmp ne i32 %1537, 0
  %1539 = or i1 %1536, %1538
  %op.rdx2335 = select i1 %1539, i1 true, i1 %1534
  %or.cond405 = and i1 %540, %op.rdx2335
  br i1 %or.cond405, label %1542, label %1540

1540:                                             ; preds = %1528
  %1541 = call double @jit_matmul(ptr noundef nonnull %9, ptr noundef %.41764, ptr noundef %602, ptr noundef %617, ptr noundef %632, i32 noundef %.01725, i32 noundef %.01699, ptr noundef nonnull %11)
  br label %1542

1542:                                             ; preds = %1540, %1528, %1526
  %.71696 = phi double [ %1527, %1526 ], [ %.61695, %1528 ], [ %1541, %1540 ]
  %1543 = load i32, ptr %477, align 8
  br i1 %376, label %1544, label %1579

1544:                                             ; preds = %1542
  %1545 = and i32 %1543, -2
  %or.cond408 = icmp eq i32 %1545, 2
  br i1 %or.cond408, label %1546, label %1571

1546:                                             ; preds = %1544
  %1547 = call i32 @libxsmm_cpuid_dot_pack_factor(i32 noundef %1543) #13
  %1548 = icmp eq i32 %1547, 4
  br i1 %1548, label %1549, label %1562

1549:                                             ; preds = %1546
  %1550 = load i32, ptr %515, align 4, !tbaa !48
  %1551 = and i32 %1550, 3
  %1552 = icmp eq i32 %1551, 0
  br i1 %1552, label %1553, label %1562

1553:                                             ; preds = %1549
  %1554 = load i32, ptr %477, align 8, !tbaa !30
  %1555 = load i32, ptr %5, align 4, !tbaa !5
  %1556 = shl nsw i32 %1555, 2
  %1557 = load i32, ptr %6, align 4, !tbaa !5
  %1558 = shl nsw i32 %1557, 2
  %1559 = load i32, ptr %7, align 4, !tbaa !5
  %1560 = sdiv i32 %1559, 4
  %1561 = call double @check_matrix(i32 noundef %1554, ptr noundef %647, ptr noundef %617, i32 noundef %1556, i32 noundef %1558, i32 noundef %1560)
  br label %1584

1562:                                             ; preds = %1549, %1546
  %1563 = load i32, ptr %477, align 8, !tbaa !30
  %1564 = load i32, ptr %5, align 4, !tbaa !5
  %1565 = shl nsw i32 %1564, 1
  %1566 = load i32, ptr %6, align 4, !tbaa !5
  %1567 = shl nsw i32 %1566, 1
  %1568 = load i32, ptr %7, align 4, !tbaa !5
  %1569 = sdiv i32 %1568, 2
  %1570 = call double @check_matrix(i32 noundef %1563, ptr noundef %647, ptr noundef %617, i32 noundef %1565, i32 noundef %1567, i32 noundef %1569)
  br label %1584

1571:                                             ; preds = %1544
  %1572 = load i32, ptr %5, align 4, !tbaa !5
  %1573 = shl nsw i32 %1572, 2
  %1574 = load i32, ptr %6, align 4, !tbaa !5
  %1575 = shl nsw i32 %1574, 2
  %1576 = load i32, ptr %7, align 4, !tbaa !5
  %1577 = sdiv i32 %1576, 4
  %1578 = call double @check_matrix(i32 noundef %1543, ptr noundef %647, ptr noundef %617, i32 noundef %1573, i32 noundef %1575, i32 noundef %1577)
  br label %1584

1579:                                             ; preds = %1542
  %1580 = load i32, ptr %5, align 4, !tbaa !5
  %1581 = load i32, ptr %6, align 4, !tbaa !5
  %1582 = load i32, ptr %7, align 4, !tbaa !5
  %1583 = call double @check_matrix(i32 noundef %1543, ptr noundef %647, ptr noundef %617, i32 noundef %1580, i32 noundef %1581, i32 noundef %1582)
  br label %1584

1584:                                             ; preds = %1571, %1562, %1553, %1579
  %.01758 = phi double [ %1561, %1553 ], [ %1570, %1562 ], [ %1578, %1571 ], [ %1583, %1579 ]
  br i1 %541, label %1585, label %1592

1585:                                             ; preds = %1584
  %1586 = load i32, ptr %532, align 8, !tbaa !71
  %1587 = load i32, ptr %6, align 4, !tbaa !5
  %1588 = add nsw i32 %1587, 7
  %1589 = sdiv i32 %1588, 8
  %1590 = load i32, ptr %7, align 4, !tbaa !5
  %1591 = call double @check_matrix(i32 noundef 12, ptr noundef %.01772, ptr noundef %.01770, i32 noundef %1586, i32 noundef %1589, i32 noundef %1590)
  br label %1592

1592:                                             ; preds = %1585, %1584
  %.01759 = phi double [ %1591, %1585 ], [ 0.000000e+00, %1584 ]
  br i1 %or.cond356, label %1593, label %1600

1593:                                             ; preds = %1592
  switch i32 %.01664, label %1600 [
    i32 14, label %1594
    i32 3, label %1594
    i32 1, label %1594
  ]

1594:                                             ; preds = %1593, %1593, %1593
  switch i32 %.01665, label %1600 [
    i32 3, label %1595
    i32 1, label %1595
  ]

1595:                                             ; preds = %1594, %1594
  %1596 = load ptr, ptr %522, align 8, !tbaa !56
  call void @libxsmm_free(ptr noundef %1596) #13
  %1597 = load ptr, ptr %523, align 8, !tbaa !57
  call void @libxsmm_free(ptr noundef %1597) #13
  %1598 = load ptr, ptr %524, align 8, !tbaa !58
  call void @libxsmm_free(ptr noundef %1598) #13
  %1599 = load ptr, ptr %525, align 8, !tbaa !59
  call void @libxsmm_free(ptr noundef %1599) #13
  br label %1600

1600:                                             ; preds = %1594, %1593, %1595, %1592
  %1601 = load i32, ptr %21, align 8, !tbaa !16
  %.not1817 = icmp eq i32 %1601, 0
  br i1 %.not1817, label %1604, label %1602

1602:                                             ; preds = %1600
  %1603 = load ptr, ptr %526, align 8, !tbaa !62
  call void @libxsmm_free(ptr noundef %1603) #13
  br label %1604

1604:                                             ; preds = %1602, %1600
  %1605 = load i32, ptr %22, align 4, !tbaa !17
  %1606 = icmp ne i32 %1605, 0
  %1607 = load i32, ptr %23, align 8
  %1608 = icmp ne i32 %1607, 0
  %or.cond419 = select i1 %1606, i1 true, i1 %1608
  %1609 = load i32, ptr %24, align 4
  %1610 = icmp ne i32 %1609, 0
  %or.cond422 = select i1 %or.cond419, i1 true, i1 %1610
  br i1 %or.cond422, label %1611, label %.thread1901

1611:                                             ; preds = %1604
  %1612 = load ptr, ptr %527, align 8, !tbaa !64
  call void @libxsmm_free(ptr noundef %1612) #13
  %.pr = load i32, ptr %24, align 4, !tbaa !19
  %.not1818 = icmp eq i32 %.pr, 0
  br i1 %.not1818, label %.thread1901, label %1613

1613:                                             ; preds = %1611
  %1614 = load ptr, ptr %528, align 8, !tbaa !66
  call void @libxsmm_free(ptr noundef %1614) #13
  br label %.thread1901

.thread1901:                                      ; preds = %1604, %1613, %1611
  br i1 %or.cond1847, label %1615, label %1617

1615:                                             ; preds = %.thread1901
  %1616 = load ptr, ptr %522, align 8, !tbaa !56
  call void @libxsmm_free(ptr noundef %1616) #13
  br label %1617

1617:                                             ; preds = %1615, %.thread1901
  call void @libxsmm_free(ptr noundef %.41764) #13
  call void @libxsmm_free(ptr noundef %602) #13
  call void @libxsmm_free(ptr noundef %617) #13
  call void @libxsmm_free(ptr noundef %632) #13
  call void @libxsmm_free(ptr noundef %647) #13
  %1618 = load i32, ptr %492, align 8, !tbaa !45
  %1619 = icmp eq i32 %1618, 1
  br i1 %1619, label %1620, label %1621

1620:                                             ; preds = %1617
  call void @libxsmm_free(ptr noundef %.01769) #13
  br label %1621

1621:                                             ; preds = %1620, %1617
  %1622 = load i32, ptr %493, align 4, !tbaa !46
  %1623 = icmp eq i32 %1622, 2
  br i1 %1623, label %1624, label %1625

1624:                                             ; preds = %1621
  call void @libxsmm_free(ptr noundef %.01770) #13
  call void @libxsmm_free(ptr noundef %.01772) #13
  br label %1625

1625:                                             ; preds = %1624, %1621
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #13
  br i1 %542, label %1626, label %1628

1626:                                             ; preds = %1625
  %1627 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.33)
  br label %1628

1628:                                             ; preds = %1626, %1625
  br i1 %or.cond2330, label %.sink.split, label %1630

.sink.split:                                      ; preds = %1628
  %1629 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.34.mux.mux)
  br label %1630

1630:                                             ; preds = %.sink.split, %1628
  br i1 %376, label %1631, label %1633

1631:                                             ; preds = %1630
  %1632 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.37)
  br label %1633

1633:                                             ; preds = %1631, %1630
  %1634 = fcmp ogt double %.01758, 8.000000e-03
  %or.cond428 = and i1 %549, %1634
  br i1 %or.cond5, label %1657, label %1635

1635:                                             ; preds = %1633
  %1636 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38, double noundef %.71696)
  %1637 = load i32, ptr %6, align 4, !tbaa !5
  %1638 = sitofp i32 %1637 to double
  %1639 = fmul double %544, %1638
  %1640 = load i32, ptr %7, align 4, !tbaa !5
  %1641 = sitofp i32 %1640 to double
  %1642 = fmul double %1639, %1641
  %1643 = load i32, ptr %8, align 4, !tbaa !5
  %1644 = sitofp i32 %1643 to double
  %1645 = fmul double %1642, %1644
  %1646 = fmul double %1645, %545
  %1647 = fmul double %1646, 2.000000e+00
  %1648 = fmul double %.71696, 1.000000e+09
  %1649 = fdiv double %1647, %1648
  %1650 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.39, double noundef %1649)
  %1651 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %.01758)
  %1652 = load i32, ptr %493, align 4, !tbaa !46
  %1653 = icmp eq i32 %1652, 2
  br i1 %1653, label %1655, label %.thread

.thread:                                          ; preds = %1635
  %1654 = fcmp olt double %.01711, %.01758
  %or.cond4322198 = select i1 %1654, i1 %546, i1 false
  %.117122200 = select i1 %or.cond4322198, double %.01758, double %.01711
  br label %1732

1655:                                             ; preds = %1635
  %1656 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41, double noundef %.01759)
  br label %1726

1657:                                             ; preds = %1633
  br i1 %546, label %1658, label %1681

1658:                                             ; preds = %1657
  %1659 = load i32, ptr %493, align 4, !tbaa !46
  %1660 = icmp eq i32 %1659, 2
  %1661 = load i32, ptr %6, align 4, !tbaa !5
  %1662 = load i32, ptr %7, align 4, !tbaa !5
  %1663 = load i32, ptr %8, align 4, !tbaa !5
  %1664 = load i32, ptr %3, align 4, !tbaa !5
  %1665 = load i32, ptr %4, align 4, !tbaa !5
  %1666 = load i32, ptr %5, align 4, !tbaa !5
  %1667 = sitofp i32 %1661 to double
  %1668 = fmul double %544, %1667
  %1669 = sitofp i32 %1662 to double
  %1670 = fmul double %1668, %1669
  %1671 = sitofp i32 %1663 to double
  %1672 = fmul double %1670, %1671
  %1673 = fmul double %1672, %545
  %1674 = fmul double %1673, 2.000000e+00
  %1675 = fmul double %.71696, 1.000000e+09
  %1676 = fdiv double %1674, %1675
  br i1 %1660, label %1677, label %1679

1677:                                             ; preds = %1658
  %1678 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.42, ptr noundef %.01654, ptr noundef %.01655, ptr noundef %.01656, ptr noundef %.01657, i32 noundef %1661, i32 noundef %1662, i32 noundef %1663, i32 noundef %1664, i32 noundef %1665, i32 noundef %1666, i32 noundef %363, i32 noundef %.21687, i32 noundef %364, double noundef %1676, double noundef %.01758, double noundef %.01759)
  br label %switch.lookup2331

1679:                                             ; preds = %1658
  %1680 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.43, ptr noundef %.01654, ptr noundef %.01655, ptr noundef %.01656, ptr noundef %.01657, i32 noundef %1661, i32 noundef %1662, i32 noundef %1663, i32 noundef %1664, i32 noundef %1665, i32 noundef %1666, i32 noundef %363, i32 noundef %.21687, i32 noundef %364, double noundef %1676, double noundef %.01758)
  br label %switch.lookup2331

1681:                                             ; preds = %1657
  %1682 = load i32, ptr %6, align 4, !tbaa !5
  %1683 = load i32, ptr %7, align 4, !tbaa !5
  %1684 = load i32, ptr %8, align 4, !tbaa !5
  %1685 = load i32, ptr %3, align 4, !tbaa !5
  %1686 = load i32, ptr %4, align 4, !tbaa !5
  %1687 = load i32, ptr %5, align 4, !tbaa !5
  %1688 = sitofp i32 %1682 to double
  %1689 = fmul double %544, %1688
  %1690 = sitofp i32 %1683 to double
  %1691 = fmul double %1689, %1690
  %1692 = sitofp i32 %1684 to double
  %1693 = fmul double %1691, %1692
  %1694 = fmul double %1693, %545
  %1695 = fmul double %1694, 2.000000e+00
  %1696 = fmul double %.71696, 1.000000e+09
  %1697 = fdiv double %1695, %1696
  %1698 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44, ptr noundef %.01654, ptr noundef %.01655, ptr noundef %.01656, ptr noundef %.01657, i32 noundef %1682, i32 noundef %1683, i32 noundef %1684, i32 noundef %1685, i32 noundef %1686, i32 noundef %1687, i32 noundef %363, i32 noundef %.21687, i32 noundef %364, double noundef %1697)
  br label %switch.lookup2331

switch.lookup2331:                                ; preds = %1681, %1679, %1677
  %switch.load2333 = load ptr, ptr %switch.gep2332, align 8
  %1699 = load ptr, ptr %1, align 8, !tbaa !9
  %1700 = load i32, ptr %6, align 4, !tbaa !5
  %1701 = load i32, ptr %7, align 4, !tbaa !5
  %1702 = load i32, ptr %8, align 4, !tbaa !5
  %1703 = load i32, ptr %3, align 4, !tbaa !5
  %1704 = load i32, ptr %4, align 4, !tbaa !5
  %1705 = load i32, ptr %5, align 4, !tbaa !5
  %1706 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.47, ptr noundef %1699, ptr noundef %.01654, ptr noundef %.01655, ptr noundef %.01656, ptr noundef %.01657, i32 noundef %1700, i32 noundef %1701, i32 noundef %1702, i32 noundef %1703, i32 noundef %1704, i32 noundef %1705, double noundef 1.000000e+00, double noundef %.11677, i32 noundef %.01666, i32 noundef %.01669, i32 noundef %.01670, i32 noundef %.01671, i32 noundef %.01672, i32 noundef %.01673, i32 noundef %.01674, ptr noundef nonnull %.str.10..str.11, ptr noundef nonnull %switch.load2333, i32 noundef %363, i32 noundef %364, i32 noundef %.01725, i32 noundef %.31724, i32 noundef %.21732, i32 noundef %.21735)
  %1707 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.48, double noundef %.71696)
  %1708 = load i32, ptr %6, align 4, !tbaa !5
  %1709 = sitofp i32 %1708 to double
  %1710 = fmul double %544, %1709
  %1711 = load i32, ptr %7, align 4, !tbaa !5
  %1712 = sitofp i32 %1711 to double
  %1713 = fmul double %1710, %1712
  %1714 = load i32, ptr %8, align 4, !tbaa !5
  %1715 = sitofp i32 %1714 to double
  %1716 = fmul double %1713, %1715
  %1717 = fmul double %1716, %545
  %1718 = fmul double %1717, 2.000000e+00
  %1719 = fmul double %.71696, 1.000000e+09
  %1720 = fdiv double %1718, %1719
  %1721 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.49, double noundef %1720)
  br i1 %or.cond428, label %1724, label %1722

1722:                                             ; preds = %switch.lookup2331
  %1723 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40, double noundef %.01758)
  br label %1726

1724:                                             ; preds = %switch.lookup2331
  %1725 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.50)
  br label %1726

1726:                                             ; preds = %1722, %1724, %1655
  %.ph = phi i1 [ false, %1724 ], [ true, %1722 ], [ true, %1655 ]
  %.21744.ph = phi i32 [ 1, %1724 ], [ 0, %1722 ], [ 0, %1655 ]
  %.pr2196 = load i32, ptr %493, align 4, !tbaa !46
  %1727 = fcmp olt double %.01711, %.01758
  %or.cond432 = select i1 %1727, i1 %546, i1 false
  %or.cond434 = and i1 %or.cond432, %.ph
  %.11712 = select i1 %or.cond434, double %.01758, double %.01711
  %1728 = icmp eq i32 %.pr2196, 2
  br i1 %1728, label %1729, label %1732

1729:                                             ; preds = %1726
  %1730 = fcmp olt double %.01714, %.01759
  %or.cond436 = select i1 %1730, i1 %546, i1 false
  %or.cond438 = and i1 %or.cond436, %.ph
  br i1 %or.cond438, label %1731, label %1732

1731:                                             ; preds = %1729
  br label %1732

.critedge444.thread:                              ; preds = %550
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %10) #13
  br label %1741

1732:                                             ; preds = %.thread, %1726, %1731, %1729
  %.117122202 = phi double [ %.11712, %1731 ], [ %.11712, %1729 ], [ %.11712, %1726 ], [ %.117122200, %.thread ]
  %.217442201 = phi i32 [ %.21744.ph, %1731 ], [ %.21744.ph, %1729 ], [ %.21744.ph, %1726 ], [ 0, %.thread ]
  %.11715 = phi double [ %.01759, %1731 ], [ %.01714, %1729 ], [ %.01714, %1726 ], [ %.01714, %.thread ]
  %1733 = load i64, ptr @tests_executed, align 8, !tbaa !98
  %1734 = add i64 %1733, 1
  store i64 %1734, ptr @tests_executed, align 8, !tbaa !98
  %1735 = icmp ne i32 %.21740, 0
  %1736 = load i32, ptr @is_reference_kernel, align 4
  %1737 = icmp eq i32 %1736, 0
  %or.cond440 = select i1 %1735, i1 %1737, i1 false
  br i1 %or.cond440, label %.critedge.backedge, label %1738

.critedge.backedge:                               ; preds = %1732, %1738
  br label %.critedge, !llvm.loop !100

1738:                                             ; preds = %1732
  %1739 = icmp ne i32 %1736, 0
  %or.cond442 = select i1 %1735, i1 %1739, i1 false
  %1740 = icmp ult i64 %1734, 10
  %or.cond644 = select i1 %or.cond442, i1 %1740, i1 false
  br i1 %or.cond644, label %.critedge.backedge, label %.critedge444

.critedge444:                                     ; preds = %1738
  br i1 %or.cond5, label %1741, label %1743

1741:                                             ; preds = %.critedge444.thread, %.critedge444
  %.2171619131923 = phi double [ %.01714, %.critedge444.thread ], [ %.11715, %.critedge444 ]
  %.2171319151921 = phi double [ %.01711, %.critedge444.thread ], [ %.117122202, %.critedge444 ]
  %1742 = call i32 @fclose(ptr noundef %.01705)
  br label %1745

1743:                                             ; preds = %.critedge444
  %1744 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27)
  br label %1745

1745:                                             ; preds = %1743, %1741
  %.2171619131922 = phi double [ %.11715, %1743 ], [ %.2171619131923, %1741 ]
  %.2171319151920 = phi double [ %.117122202, %1743 ], [ %.2171319151921, %1741 ]
  %1746 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.51, double noundef %.2171319151920)
  %1747 = load i32, ptr %493, align 4, !tbaa !46
  %1748 = icmp eq i32 %1747, 2
  br i1 %1748, label %1749, label %1751

1749:                                             ; preds = %1745
  %1750 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.52, double noundef %.2171619131922)
  br label %1751

1751:                                             ; preds = %1749, %1745
  %1752 = load i32, ptr %477, align 8, !tbaa !30
  %1753 = icmp eq i32 %1752, 2
  br i1 %1753, label %1754, label %1774

1754:                                             ; preds = %1751
  %1755 = load i32, ptr %493, align 4
  %1756 = icmp eq i32 %1755, 3
  br i1 %1756, label %1757, label %1762

1757:                                             ; preds = %1754
  %1758 = fcmp ult double %.2171319151920, 7.000000e-03
  br i1 %1758, label %1759, label %1853

1759:                                             ; preds = %1757
  %1760 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1761 = call i32 @libxsmm_return_success_code(i32 noundef %1760)
  br label %1853

1762:                                             ; preds = %1754
  %1763 = add i32 %1755, -1
  %or.cond447 = icmp ult i32 %1763, 2
  br i1 %or.cond447, label %1764, label %1769

1764:                                             ; preds = %1762
  %1765 = fcmp ult double %.2171619131922, 5.000000e-03
  br i1 %1765, label %1766, label %1853

1766:                                             ; preds = %1764
  %1767 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1768 = call i32 @libxsmm_return_success_code(i32 noundef %1767)
  br label %1853

1769:                                             ; preds = %1762
  %1770 = fcmp ult double %.2171319151920, 5.000000e-03
  br i1 %1770, label %1771, label %1853

1771:                                             ; preds = %1769
  %1772 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1773 = call i32 @libxsmm_return_success_code(i32 noundef %1772)
  br label %1853

1774:                                             ; preds = %1751
  %1775 = load i32, ptr %475, align 4, !tbaa !28
  %1776 = icmp eq i32 %1775, 3
  br i1 %1776, label %1777, label %1782

1777:                                             ; preds = %1774
  %1778 = fcmp ult double %.2171319151920, 8.000000e-03
  br i1 %1778, label %1779, label %1853

1779:                                             ; preds = %1777
  %1780 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1781 = call i32 @libxsmm_return_success_code(i32 noundef %1780)
  br label %1853

1782:                                             ; preds = %1774
  %1783 = load i32, ptr %493, align 4
  %1784 = icmp eq i32 %1783, 3
  switch i32 %1752, label %1835 [
    i32 4, label %1785
    i32 5, label %1810
  ]

1785:                                             ; preds = %1782
  br i1 %1784, label %1786, label %1798

1786:                                             ; preds = %1785
  %1787 = fcmp ult double %.2171319151920, 0x3F826E978D4FDF3B
  br i1 %1787, label %1795, label %1788

1788:                                             ; preds = %1786
  %1789 = load i32, ptr %492, align 8, !tbaa !45
  %1790 = icmp ne i32 %1789, 1
  %1791 = fcmp ult double %.2171319151920, 1.800000e-02
  %or.cond1858 = and i1 %1791, %1790
  br i1 %or.cond1858, label %1792, label %1853

1792:                                             ; preds = %1788
  %1793 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1794 = call i32 @libxsmm_return_success_code(i32 noundef %1793)
  br label %1853

1795:                                             ; preds = %1786
  %1796 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1797 = call i32 @libxsmm_return_success_code(i32 noundef %1796)
  br label %1853

1798:                                             ; preds = %1785
  %1799 = add i32 %1783, -1
  %or.cond450 = icmp ult i32 %1799, 2
  br i1 %or.cond450, label %1800, label %1805

1800:                                             ; preds = %1798
  %1801 = fcmp ult double %.2171619131922, 5.000000e-03
  br i1 %1801, label %1802, label %1853

1802:                                             ; preds = %1800
  %1803 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1804 = call i32 @libxsmm_return_success_code(i32 noundef %1803)
  br label %1853

1805:                                             ; preds = %1798
  %1806 = fcmp ult double %.2171319151920, 5.000000e-03
  br i1 %1806, label %1807, label %1853

1807:                                             ; preds = %1805
  %1808 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1809 = call i32 @libxsmm_return_success_code(i32 noundef %1808)
  br label %1853

1810:                                             ; preds = %1782
  br i1 %1784, label %1811, label %1823

1811:                                             ; preds = %1810
  %1812 = fcmp ult double %.2171319151920, 0x3F826E978D4FDF3B
  br i1 %1812, label %1820, label %1813

1813:                                             ; preds = %1811
  %1814 = load i32, ptr %492, align 8, !tbaa !45
  %1815 = icmp ne i32 %1814, 1
  %1816 = fcmp ult double %.2171319151920, 1.800000e-02
  %or.cond1859 = and i1 %1816, %1815
  br i1 %or.cond1859, label %1817, label %1853

1817:                                             ; preds = %1813
  %1818 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1819 = call i32 @libxsmm_return_success_code(i32 noundef %1818)
  br label %1853

1820:                                             ; preds = %1811
  %1821 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1822 = call i32 @libxsmm_return_success_code(i32 noundef %1821)
  br label %1853

1823:                                             ; preds = %1810
  %1824 = add i32 %1783, -1
  %or.cond453 = icmp ult i32 %1824, 2
  br i1 %or.cond453, label %1825, label %1830

1825:                                             ; preds = %1823
  %1826 = fcmp ult double %.2171619131922, 5.000000e-03
  br i1 %1826, label %1827, label %1853

1827:                                             ; preds = %1825
  %1828 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1829 = call i32 @libxsmm_return_success_code(i32 noundef %1828)
  br label %1853

1830:                                             ; preds = %1823
  %1831 = fcmp ult double %.2171319151920, 5.000000e-03
  br i1 %1831, label %1832, label %1853

1832:                                             ; preds = %1830
  %1833 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1834 = call i32 @libxsmm_return_success_code(i32 noundef %1833)
  br label %1853

1835:                                             ; preds = %1782
  br i1 %1784, label %1836, label %1841

1836:                                             ; preds = %1835
  %1837 = fcmp ult double %.2171319151920, 7.000000e-04
  br i1 %1837, label %1838, label %1853

1838:                                             ; preds = %1836
  %1839 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1840 = call i32 @libxsmm_return_success_code(i32 noundef %1839)
  br label %1853

1841:                                             ; preds = %1835
  %1842 = add i32 %1783, -1
  %or.cond456 = icmp ult i32 %1842, 2
  br i1 %or.cond456, label %1843, label %1848

1843:                                             ; preds = %1841
  %1844 = fcmp ult double %.2171619131922, 2.000000e-05
  br i1 %1844, label %1845, label %1853

1845:                                             ; preds = %1843
  %1846 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1847 = call i32 @libxsmm_return_success_code(i32 noundef %1846)
  br label %1853

1848:                                             ; preds = %1841
  %1849 = fcmp ult double %.2171319151920, 1.200000e-05
  br i1 %1849, label %1850, label %1853

1850:                                             ; preds = %1848
  %1851 = load i32, ptr @is_reference_kernel, align 4, !tbaa !5
  %1852 = call i32 @libxsmm_return_success_code(i32 noundef %1851)
  br label %1853

1853:                                             ; preds = %1848, %1843, %1836, %1830, %1825, %1813, %1805, %1800, %1788, %1777, %1769, %1764, %1757, %1850, %1845, %1838, %1832, %1827, %1820, %1817, %1807, %1802, %1795, %1792, %1779, %1771, %1766, %1759, %341, %311, %168, %150
  %.01653 = phi i32 [ %1761, %1759 ], [ %1768, %1766 ], [ %1773, %1771 ], [ %1781, %1779 ], [ %1794, %1792 ], [ %1797, %1795 ], [ %1804, %1802 ], [ %1809, %1807 ], [ %1819, %1817 ], [ %1822, %1820 ], [ %1829, %1827 ], [ %1834, %1832 ], [ %1840, %1838 ], [ %1847, %1845 ], [ %1852, %1850 ], [ 1, %168 ], [ 1, %150 ], [ 1, %311 ], [ 1, %341 ], [ 1, %1757 ], [ 1, %1764 ], [ 1, %1769 ], [ 1, %1777 ], [ 1, %1788 ], [ 1, %1800 ], [ 1, %1805 ], [ 1, %1813 ], [ 1, %1825 ], [ 1, %1830 ], [ 1, %1836 ], [ 1, %1843 ], [ 1, %1848 ]
  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 %.01653
}

; 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 memory(read)
declare noundef ptr @getenv(ptr nocapture noundef) local_unnamed_addr #5

declare ptr @libxsmm_stristr(ptr noundef, ptr noundef) local_unnamed_addr #6

declare i32 @libxsmm_cpuid(ptr noundef) local_unnamed_addr #6

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) 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 #7

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

; Function Attrs: nofree nounwind
declare noundef ptr @fgets(ptr noundef, i32 noundef, ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: nofree nounwind
declare noundef i32 @__isoc99_sscanf(ptr nocapture noundef readonly, ptr nocapture noundef readonly, ...) local_unnamed_addr #7

declare void @libxsmm_rng_set_seed(i32 noundef) local_unnamed_addr #6

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

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

declare void @libxsmm_convert_f16_f32(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #6

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

declare void @libxsmm_rne_convert_fp32_bf16(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #6

declare void @libxsmm_convert_hf8_f32(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @init_identity_matrix(i32 noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @negate_random_cols_rows(i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @init_garbage_matrix(i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @ref_fused_matmul(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr 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 #6

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

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

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

; 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 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 #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #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