; LLVM IR from libxsmm/libxsmm :: src (generator_x86_instructions)

; 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.libxsmm_tile_config = type { i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8, i16, i8 }
%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }

@.str = external hidden unnamed_addr constant [82 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@stderr = external global ptr, align 8
@.str.99 = external hidden unnamed_addr constant [23 x i8], align 1
@__func__.libxsmm_x86_instruction_tile_control = external hidden unnamed_addr constant [37 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [36 x i8], align 1

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

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

declare void @libxsmm_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2

declare void @libxsmm_get_x86_gp_reg_name(i32 noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #2

declare void @libxsmm_append_code_as_string(ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_x86_instruction_tile_control(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, ptr noundef %6) #3 {
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca [64 x i8], align 16
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %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 i32, align 4
  %28 = alloca [512 x i8], align 16
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca [4 x i8], align 1
  %32 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store i32 %1, ptr %9, align 4, !tbaa !9
  store i32 %2, ptr %10, align 4, !tbaa !9
  store i32 %3, ptr %11, align 4, !tbaa !9
  store i32 %4, ptr %12, align 4, !tbaa !9
  store i32 %5, ptr %13, align 4, !tbaa !9
  store ptr %6, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %15) #5
  %33 = load i32, ptr %10, align 4, !tbaa !9
  %34 = load i32, ptr %12, align 4, !tbaa !9
  %35 = icmp eq i32 %34, 127
  br i1 %35, label %36, label %53

36:                                               ; preds = %7
  %37 = load ptr, ptr %14, align 8, !tbaa !5
  %38 = icmp eq ptr %37, null
  br i1 %38, label %39, label %53

39:                                               ; preds = %36
  %40 = load i32, ptr %11, align 4, !tbaa !9
  %41 = icmp ne i32 %40, 50003
  br i1 %41, label %42, label %53

42:                                               ; preds = %39
  %43 = load ptr, ptr @stderr, align 8, !tbaa !5
  %44 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %43, ptr noundef @.str.99) #5
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  %46 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %47 = icmp ult i32 1, %46
  br i1 %47, label %48, label %50

48:                                               ; preds = %42
  %49 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %51

50:                                               ; preds = %42
  br label %51

51:                                               ; preds = %50, %48
  %52 = phi i32 [ %49, %48 ], [ 1, %50 ]
  call void @libxsmm_handle_error(ptr noundef %45, i32 noundef 90000, ptr noundef @__func__.libxsmm_x86_instruction_tile_control, ptr noundef @.str, i32 noundef 3575, i32 noundef %52)
  store i32 1, ptr %16, align 4
  br label %672

53:                                               ; preds = %39, %36, %7
  %54 = load i32, ptr %11, align 4, !tbaa !9
  %55 = icmp eq i32 %54, 50001
  br i1 %55, label %56, label %227

56:                                               ; preds = %53
  %57 = load ptr, ptr %14, align 8, !tbaa !5
  %58 = icmp ne ptr %57, null
  br i1 %58, label %59, label %227

59:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %60

60:                                               ; preds = %67, %59
  %61 = load i32, ptr %17, align 4, !tbaa !9
  %62 = icmp ult i32 %61, 64
  br i1 %62, label %63, label %70

63:                                               ; preds = %60
  %64 = load i32, ptr %17, align 4, !tbaa !9
  %65 = zext i32 %64 to i64
  %66 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 %65
  store i8 0, ptr %66, align 1, !tbaa !11
  br label %67

67:                                               ; preds = %63
  %68 = load i32, ptr %17, align 4, !tbaa !9
  %69 = add i32 %68, 1
  store i32 %69, ptr %17, align 4, !tbaa !9
  br label %60, !llvm.loop !12

70:                                               ; preds = %60
  %71 = load ptr, ptr %14, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %71, i32 0, i32 0
  %73 = load i8, ptr %72, align 2, !tbaa !14
  %74 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 0
  store i8 %73, ptr %74, align 16, !tbaa !11
  %75 = load ptr, ptr %14, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %75, i32 0, i32 1
  %77 = load i16, ptr %76, align 2, !tbaa !17
  %78 = zext i16 %77 to i32
  %79 = and i32 255, %78
  %80 = trunc i32 %79 to i8
  %81 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 16
  store i8 %80, ptr %81, align 16, !tbaa !11
  %82 = load ptr, ptr %14, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %82, i32 0, i32 1
  %84 = load i16, ptr %83, align 2, !tbaa !17
  %85 = zext i16 %84 to i32
  %86 = ashr i32 %85, 8
  %87 = and i32 255, %86
  %88 = trunc i32 %87 to i8
  %89 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 17
  store i8 %88, ptr %89, align 1, !tbaa !11
  %90 = load ptr, ptr %14, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %90, i32 0, i32 2
  %92 = load i8, ptr %91, align 2, !tbaa !18
  %93 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 48
  store i8 %92, ptr %93, align 16, !tbaa !11
  %94 = load ptr, ptr %14, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %94, i32 0, i32 3
  %96 = load i16, ptr %95, align 2, !tbaa !19
  %97 = zext i16 %96 to i32
  %98 = and i32 255, %97
  %99 = trunc i32 %98 to i8
  %100 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 18
  store i8 %99, ptr %100, align 2, !tbaa !11
  %101 = load ptr, ptr %14, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %101, i32 0, i32 3
  %103 = load i16, ptr %102, align 2, !tbaa !19
  %104 = zext i16 %103 to i32
  %105 = ashr i32 %104, 8
  %106 = and i32 255, %105
  %107 = trunc i32 %106 to i8
  %108 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 19
  store i8 %107, ptr %108, align 1, !tbaa !11
  %109 = load ptr, ptr %14, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %109, i32 0, i32 4
  %111 = load i8, ptr %110, align 2, !tbaa !20
  %112 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 49
  store i8 %111, ptr %112, align 1, !tbaa !11
  %113 = load ptr, ptr %14, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %113, i32 0, i32 5
  %115 = load i16, ptr %114, align 2, !tbaa !21
  %116 = zext i16 %115 to i32
  %117 = and i32 255, %116
  %118 = trunc i32 %117 to i8
  %119 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 20
  store i8 %118, ptr %119, align 4, !tbaa !11
  %120 = load ptr, ptr %14, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %120, i32 0, i32 5
  %122 = load i16, ptr %121, align 2, !tbaa !21
  %123 = zext i16 %122 to i32
  %124 = ashr i32 %123, 8
  %125 = and i32 255, %124
  %126 = trunc i32 %125 to i8
  %127 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 21
  store i8 %126, ptr %127, align 1, !tbaa !11
  %128 = load ptr, ptr %14, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %128, i32 0, i32 6
  %130 = load i8, ptr %129, align 2, !tbaa !22
  %131 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 50
  store i8 %130, ptr %131, align 2, !tbaa !11
  %132 = load ptr, ptr %14, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %132, i32 0, i32 7
  %134 = load i16, ptr %133, align 2, !tbaa !23
  %135 = zext i16 %134 to i32
  %136 = and i32 255, %135
  %137 = trunc i32 %136 to i8
  %138 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 22
  store i8 %137, ptr %138, align 2, !tbaa !11
  %139 = load ptr, ptr %14, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %139, i32 0, i32 7
  %141 = load i16, ptr %140, align 2, !tbaa !23
  %142 = zext i16 %141 to i32
  %143 = ashr i32 %142, 8
  %144 = and i32 255, %143
  %145 = trunc i32 %144 to i8
  %146 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 23
  store i8 %145, ptr %146, align 1, !tbaa !11
  %147 = load ptr, ptr %14, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %147, i32 0, i32 8
  %149 = load i8, ptr %148, align 2, !tbaa !24
  %150 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 51
  store i8 %149, ptr %150, align 1, !tbaa !11
  %151 = load ptr, ptr %14, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %151, i32 0, i32 9
  %153 = load i16, ptr %152, align 2, !tbaa !25
  %154 = zext i16 %153 to i32
  %155 = and i32 255, %154
  %156 = trunc i32 %155 to i8
  %157 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 24
  store i8 %156, ptr %157, align 8, !tbaa !11
  %158 = load ptr, ptr %14, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %158, i32 0, i32 9
  %160 = load i16, ptr %159, align 2, !tbaa !25
  %161 = zext i16 %160 to i32
  %162 = ashr i32 %161, 8
  %163 = and i32 255, %162
  %164 = trunc i32 %163 to i8
  %165 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 25
  store i8 %164, ptr %165, align 1, !tbaa !11
  %166 = load ptr, ptr %14, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %166, i32 0, i32 10
  %168 = load i8, ptr %167, align 2, !tbaa !26
  %169 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 52
  store i8 %168, ptr %169, align 4, !tbaa !11
  %170 = load ptr, ptr %14, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %170, i32 0, i32 11
  %172 = load i16, ptr %171, align 2, !tbaa !27
  %173 = zext i16 %172 to i32
  %174 = and i32 255, %173
  %175 = trunc i32 %174 to i8
  %176 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 26
  store i8 %175, ptr %176, align 2, !tbaa !11
  %177 = load ptr, ptr %14, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %177, i32 0, i32 11
  %179 = load i16, ptr %178, align 2, !tbaa !27
  %180 = zext i16 %179 to i32
  %181 = ashr i32 %180, 8
  %182 = and i32 255, %181
  %183 = trunc i32 %182 to i8
  %184 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 27
  store i8 %183, ptr %184, align 1, !tbaa !11
  %185 = load ptr, ptr %14, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %185, i32 0, i32 12
  %187 = load i8, ptr %186, align 2, !tbaa !28
  %188 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 53
  store i8 %187, ptr %188, align 1, !tbaa !11
  %189 = load ptr, ptr %14, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %189, i32 0, i32 13
  %191 = load i16, ptr %190, align 2, !tbaa !29
  %192 = zext i16 %191 to i32
  %193 = and i32 255, %192
  %194 = trunc i32 %193 to i8
  %195 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 28
  store i8 %194, ptr %195, align 4, !tbaa !11
  %196 = load ptr, ptr %14, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %196, i32 0, i32 13
  %198 = load i16, ptr %197, align 2, !tbaa !29
  %199 = zext i16 %198 to i32
  %200 = ashr i32 %199, 8
  %201 = and i32 255, %200
  %202 = trunc i32 %201 to i8
  %203 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 29
  store i8 %202, ptr %203, align 1, !tbaa !11
  %204 = load ptr, ptr %14, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %204, i32 0, i32 14
  %206 = load i8, ptr %205, align 2, !tbaa !30
  %207 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 54
  store i8 %206, ptr %207, align 2, !tbaa !11
  %208 = load ptr, ptr %14, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %208, i32 0, i32 15
  %210 = load i16, ptr %209, align 2, !tbaa !31
  %211 = zext i16 %210 to i32
  %212 = and i32 255, %211
  %213 = trunc i32 %212 to i8
  %214 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 30
  store i8 %213, ptr %214, align 2, !tbaa !11
  %215 = load ptr, ptr %14, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %215, i32 0, i32 15
  %217 = load i16, ptr %216, align 2, !tbaa !31
  %218 = zext i16 %217 to i32
  %219 = ashr i32 %218, 8
  %220 = and i32 255, %219
  %221 = trunc i32 %220 to i8
  %222 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 31
  store i8 %221, ptr %222, align 1, !tbaa !11
  %223 = load ptr, ptr %14, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.libxsmm_tile_config, ptr %223, i32 0, i32 16
  %225 = load i8, ptr %224, align 2, !tbaa !32
  %226 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 55
  store i8 %225, ptr %226, align 1, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %227

227:                                              ; preds = %70, %56, %53
  %228 = load ptr, ptr %8, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %228, i32 0, i32 3
  %230 = load i32, ptr %229, align 8, !tbaa !33
  %231 = icmp ugt i32 %230, 1
  br i1 %231, label %232, label %439

232:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %233 = load ptr, ptr %8, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %233, i32 0, i32 0
  %235 = load ptr, ptr %234, align 8, !tbaa !35
  store ptr %235, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %236 = load ptr, ptr %8, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %236, i32 0, i32 2
  %238 = load i32, ptr %237, align 4, !tbaa !36
  store i32 %238, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %239 = load ptr, ptr %8, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %239, i32 0, i32 1
  %241 = load i32, ptr %240, align 8, !tbaa !37
  store i32 %241, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %242 = load i32, ptr %12, align 4, !tbaa !9
  %243 = urem i32 %242, 8
  store i32 %243, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  %244 = load i32, ptr %12, align 4, !tbaa !9
  %245 = icmp ugt i32 %244, 7
  br i1 %245, label %246, label %249

246:                                              ; preds = %232
  %247 = load i32, ptr %12, align 4, !tbaa !9
  %248 = icmp ule i32 %247, 15
  br label %249

249:                                              ; preds = %246, %232
  %250 = phi i1 [ false, %232 ], [ %248, %246 ]
  %251 = zext i1 %250 to i64
  %252 = select i1 %250, i32 1, i32 0
  store i32 %252, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 0, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  store i32 0, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store i32 0, ptr %27, align 4, !tbaa !9
  %253 = load i32, ptr %20, align 4, !tbaa !9
  %254 = load i32, ptr %19, align 4, !tbaa !9
  %255 = sub i32 %253, %254
  %256 = icmp ult i32 %255, 80
  br i1 %256, label %257, label %266

257:                                              ; preds = %249
  %258 = load ptr, ptr %8, align 8, !tbaa !5
  %259 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %260 = icmp ult i32 1, %259
  br i1 %260, label %261, label %263

261:                                              ; preds = %257
  %262 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %264

263:                                              ; preds = %257
  br label %264

264:                                              ; preds = %263, %261
  %265 = phi i32 [ %262, %261 ], [ 1, %263 ]
  call void @libxsmm_handle_error(ptr noundef %258, i32 noundef 90002, ptr noundef @__func__.libxsmm_x86_instruction_tile_control, ptr noundef @.str, i32 noundef 3630, i32 noundef %265)
  store i32 1, ptr %16, align 4
  br label %436

266:                                              ; preds = %249
  %267 = load i32, ptr %11, align 4, !tbaa !9
  switch i32 %267, label %270 [
    i32 50001, label %273
    i32 50002, label %268
    i32 50003, label %269
  ]

268:                                              ; preds = %266
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %273

269:                                              ; preds = %266
  store i32 192, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %273

270:                                              ; preds = %266
  %271 = load ptr, ptr @stderr, align 8, !tbaa !5
  %272 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %271, ptr noundef @.str.100) #5
  br label %273

273:                                              ; preds = %270, %269, %268, %266
  %274 = load i32, ptr %12, align 4, !tbaa !9
  %275 = icmp eq i32 %274, 127
  br i1 %275, label %276, label %364

276:                                              ; preds = %273
  %277 = load ptr, ptr %14, align 8, !tbaa !5
  %278 = icmp ne ptr %277, null
  br i1 %278, label %279, label %364

279:                                              ; preds = %276
  %280 = load i32, ptr %11, align 4, !tbaa !9
  %281 = icmp eq i32 %280, 50001
  br i1 %281, label %282, label %364

282:                                              ; preds = %279
  %283 = load ptr, ptr %18, align 8, !tbaa !5
  %284 = load i32, ptr %19, align 4, !tbaa !9
  %285 = add i32 %284, 1
  store i32 %285, ptr %19, align 4, !tbaa !9
  %286 = zext i32 %284 to i64
  %287 = getelementptr inbounds i8, ptr %283, i64 %286
  store i8 -21, ptr %287, align 1, !tbaa !11
  %288 = load ptr, ptr %18, align 8, !tbaa !5
  %289 = load i32, ptr %19, align 4, !tbaa !9
  %290 = add i32 %289, 1
  store i32 %290, ptr %19, align 4, !tbaa !9
  %291 = zext i32 %289 to i64
  %292 = getelementptr inbounds i8, ptr %288, i64 %291
  store i8 64, ptr %292, align 1, !tbaa !11
  %293 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %293, ptr %21, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %310, %282
  %295 = load i32, ptr %21, align 4, !tbaa !9
  %296 = load i32, ptr %19, align 4, !tbaa !9
  %297 = add i32 %296, 64
  %298 = icmp ult i32 %295, %297
  br i1 %298, label %299, label %313

299:                                              ; preds = %294
  %300 = load i32, ptr %21, align 4, !tbaa !9
  %301 = load i32, ptr %19, align 4, !tbaa !9
  %302 = sub i32 %300, %301
  %303 = zext i32 %302 to i64
  %304 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 %303
  %305 = load i8, ptr %304, align 1, !tbaa !11
  %306 = load ptr, ptr %18, align 8, !tbaa !5
  %307 = load i32, ptr %21, align 4, !tbaa !9
  %308 = zext i32 %307 to i64
  %309 = getelementptr inbounds i8, ptr %306, i64 %308
  store i8 %305, ptr %309, align 1, !tbaa !11
  br label %310

310:                                              ; preds = %299
  %311 = load i32, ptr %21, align 4, !tbaa !9
  %312 = add i32 %311, 1
  store i32 %312, ptr %21, align 4, !tbaa !9
  br label %294, !llvm.loop !38

313:                                              ; preds = %294
  %314 = load i32, ptr %19, align 4, !tbaa !9
  %315 = add i32 %314, 64
  store i32 %315, ptr %19, align 4, !tbaa !9
  %316 = load ptr, ptr %18, align 8, !tbaa !5
  %317 = load i32, ptr %19, align 4, !tbaa !9
  %318 = add i32 %317, 1
  store i32 %318, ptr %19, align 4, !tbaa !9
  %319 = zext i32 %317 to i64
  %320 = getelementptr inbounds i8, ptr %316, i64 %319
  store i8 -60, ptr %320, align 1, !tbaa !11
  %321 = load ptr, ptr %18, align 8, !tbaa !5
  %322 = load i32, ptr %19, align 4, !tbaa !9
  %323 = add i32 %322, 1
  store i32 %323, ptr %19, align 4, !tbaa !9
  %324 = zext i32 %322 to i64
  %325 = getelementptr inbounds i8, ptr %321, i64 %324
  store i8 -30, ptr %325, align 1, !tbaa !11
  %326 = load ptr, ptr %18, align 8, !tbaa !5
  %327 = load i32, ptr %19, align 4, !tbaa !9
  %328 = add i32 %327, 1
  store i32 %328, ptr %19, align 4, !tbaa !9
  %329 = zext i32 %327 to i64
  %330 = getelementptr inbounds i8, ptr %326, i64 %329
  store i8 120, ptr %330, align 1, !tbaa !11
  %331 = load ptr, ptr %18, align 8, !tbaa !5
  %332 = load i32, ptr %19, align 4, !tbaa !9
  %333 = add i32 %332, 1
  store i32 %333, ptr %19, align 4, !tbaa !9
  %334 = zext i32 %332 to i64
  %335 = getelementptr inbounds i8, ptr %331, i64 %334
  store i8 73, ptr %335, align 1, !tbaa !11
  %336 = load ptr, ptr %18, align 8, !tbaa !5
  %337 = load i32, ptr %19, align 4, !tbaa !9
  %338 = add i32 %337, 1
  store i32 %338, ptr %19, align 4, !tbaa !9
  %339 = zext i32 %337 to i64
  %340 = getelementptr inbounds i8, ptr %336, i64 %339
  store i8 5, ptr %340, align 1, !tbaa !11
  %341 = load ptr, ptr %18, align 8, !tbaa !5
  %342 = load i32, ptr %19, align 4, !tbaa !9
  %343 = add i32 %342, 1
  store i32 %343, ptr %19, align 4, !tbaa !9
  %344 = zext i32 %342 to i64
  %345 = getelementptr inbounds i8, ptr %341, i64 %344
  store i8 -73, ptr %345, align 1, !tbaa !11
  %346 = load ptr, ptr %18, align 8, !tbaa !5
  %347 = load i32, ptr %19, align 4, !tbaa !9
  %348 = add i32 %347, 1
  store i32 %348, ptr %19, align 4, !tbaa !9
  %349 = zext i32 %347 to i64
  %350 = getelementptr inbounds i8, ptr %346, i64 %349
  store i8 -1, ptr %350, align 1, !tbaa !11
  %351 = load ptr, ptr %18, align 8, !tbaa !5
  %352 = load i32, ptr %19, align 4, !tbaa !9
  %353 = add i32 %352, 1
  store i32 %353, ptr %19, align 4, !tbaa !9
  %354 = zext i32 %352 to i64
  %355 = getelementptr inbounds i8, ptr %351, i64 %354
  store i8 -1, ptr %355, align 1, !tbaa !11
  %356 = load ptr, ptr %18, align 8, !tbaa !5
  %357 = load i32, ptr %19, align 4, !tbaa !9
  %358 = add i32 %357, 1
  store i32 %358, ptr %19, align 4, !tbaa !9
  %359 = zext i32 %357 to i64
  %360 = getelementptr inbounds i8, ptr %356, i64 %359
  store i8 -1, ptr %360, align 1, !tbaa !11
  %361 = load i32, ptr %19, align 4, !tbaa !9
  %362 = load ptr, ptr %8, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %362, i32 0, i32 2
  store i32 %361, ptr %363, align 4, !tbaa !36
  br label %435

364:                                              ; preds = %279, %276, %273
  %365 = load ptr, ptr %18, align 8, !tbaa !5
  %366 = load i32, ptr %19, align 4, !tbaa !9
  %367 = add i32 %366, 1
  store i32 %367, ptr %19, align 4, !tbaa !9
  %368 = zext i32 %366 to i64
  %369 = getelementptr inbounds i8, ptr %365, i64 %368
  store i8 -60, ptr %369, align 1, !tbaa !11
  %370 = load i32, ptr %23, align 4, !tbaa !9
  %371 = mul nsw i32 %370, 32
  %372 = sub nsw i32 226, %371
  %373 = trunc i32 %372 to i8
  %374 = load ptr, ptr %18, align 8, !tbaa !5
  %375 = load i32, ptr %19, align 4, !tbaa !9
  %376 = add i32 %375, 1
  store i32 %376, ptr %19, align 4, !tbaa !9
  %377 = zext i32 %375 to i64
  %378 = getelementptr inbounds i8, ptr %374, i64 %377
  store i8 %373, ptr %378, align 1, !tbaa !11
  %379 = load i32, ptr %24, align 4, !tbaa !9
  %380 = add nsw i32 120, %379
  %381 = trunc i32 %380 to i8
  %382 = load ptr, ptr %18, align 8, !tbaa !5
  %383 = load i32, ptr %19, align 4, !tbaa !9
  %384 = add i32 %383, 1
  store i32 %384, ptr %19, align 4, !tbaa !9
  %385 = zext i32 %383 to i64
  %386 = getelementptr inbounds i8, ptr %382, i64 %385
  store i8 %381, ptr %386, align 1, !tbaa !11
  %387 = load ptr, ptr %18, align 8, !tbaa !5
  %388 = load i32, ptr %19, align 4, !tbaa !9
  %389 = add i32 %388, 1
  store i32 %389, ptr %19, align 4, !tbaa !9
  %390 = zext i32 %388 to i64
  %391 = getelementptr inbounds i8, ptr %387, i64 %390
  store i8 73, ptr %391, align 1, !tbaa !11
  %392 = load i32, ptr %19, align 4, !tbaa !9
  %393 = sub i32 %392, 1
  store i32 %393, ptr %26, align 4, !tbaa !9
  %394 = load i32, ptr %22, align 4, !tbaa !9
  %395 = add nsw i32 0, %394
  %396 = load i32, ptr %25, align 4, !tbaa !9
  %397 = add nsw i32 %395, %396
  %398 = trunc i32 %397 to i8
  %399 = load ptr, ptr %18, align 8, !tbaa !5
  %400 = load i32, ptr %19, align 4, !tbaa !9
  %401 = add i32 %400, 1
  store i32 %401, ptr %19, align 4, !tbaa !9
  %402 = zext i32 %400 to i64
  %403 = getelementptr inbounds i8, ptr %399, i64 %402
  store i8 %398, ptr %403, align 1, !tbaa !11
  %404 = load i32, ptr %22, align 4, !tbaa !9
  %405 = icmp eq i32 %404, 4
  br i1 %405, label %406, label %412

406:                                              ; preds = %364
  %407 = load ptr, ptr %18, align 8, !tbaa !5
  %408 = load i32, ptr %19, align 4, !tbaa !9
  %409 = add i32 %408, 1
  store i32 %409, ptr %19, align 4, !tbaa !9
  %410 = zext i32 %408 to i64
  %411 = getelementptr inbounds i8, ptr %407, i64 %410
  store i8 36, ptr %411, align 1, !tbaa !11
  br label %412

412:                                              ; preds = %406, %364
  %413 = load i32, ptr %22, align 4, !tbaa !9
  %414 = icmp eq i32 %413, 5
  br i1 %414, label %415, label %419

415:                                              ; preds = %412
  %416 = load i32, ptr %13, align 4, !tbaa !9
  %417 = icmp eq i32 %416, 0
  br i1 %417, label %418, label %419

418:                                              ; preds = %415
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %419

419:                                              ; preds = %418, %415, %412
  %420 = load i32, ptr %11, align 4, !tbaa !9
  %421 = icmp ne i32 %420, 50003
  br i1 %421, label %422, label %431

422:                                              ; preds = %419
  %423 = load i32, ptr %26, align 4, !tbaa !9
  %424 = load i32, ptr %19, align 4, !tbaa !9
  %425 = load i32, ptr %13, align 4, !tbaa !9
  %426 = load i32, ptr %27, align 4, !tbaa !9
  %427 = load ptr, ptr %18, align 8, !tbaa !5
  %428 = call i32 @internal_x86_instructions_add_offset(i32 noundef %423, i32 noundef %424, i32 noundef %425, i32 noundef %426, i32 noundef 1, ptr noundef %427)
  %429 = load i32, ptr %19, align 4, !tbaa !9
  %430 = add i32 %429, %428
  store i32 %430, ptr %19, align 4, !tbaa !9
  br label %431

431:                                              ; preds = %422, %419
  %432 = load i32, ptr %19, align 4, !tbaa !9
  %433 = load ptr, ptr %8, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %433, i32 0, i32 2
  store i32 %432, ptr %434, align 4, !tbaa !36
  br label %435

435:                                              ; preds = %431, %313
  store i32 0, ptr %16, align 4
  br label %436

436:                                              ; preds = %435, %264
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  %437 = load i32, ptr %16, align 4
  switch i32 %437, label %672 [
    i32 0, label %438
  ]

438:                                              ; preds = %436
  br label %671

439:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 512, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  store i32 511, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  store i32 0, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  %440 = load i32, ptr %11, align 4, !tbaa !9
  switch i32 %440, label %669 [
    i32 50001, label %441
    i32 50002, label %623
    i32 50003, label %653
  ]

441:                                              ; preds = %439
  %442 = load ptr, ptr %14, align 8, !tbaa !5
  %443 = icmp ne ptr %442, null
  br i1 %443, label %444, label %592

444:                                              ; preds = %441
  %445 = load ptr, ptr %8, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %445, i32 0, i32 3
  %447 = load i32, ptr %446, align 8, !tbaa !33
  %448 = icmp eq i32 %447, 0
  br i1 %448, label %449, label %520

449:                                              ; preds = %444
  %450 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %451 = load i32, ptr %29, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = load i32, ptr %9, align 4, !tbaa !9
  %454 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %450, i64 noundef %452, ptr noundef @.str.101, i32 noundef %453) #5
  store i32 %454, ptr %30, align 4, !tbaa !9
  %455 = load ptr, ptr %8, align 8, !tbaa !5
  %456 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %457 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %455, ptr noundef %456, i32 noundef %457)
  %458 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %459 = load i32, ptr %29, align 4, !tbaa !9
  %460 = sext i32 %459 to i64
  %461 = load i32, ptr %9, align 4, !tbaa !9
  %462 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %458, i64 noundef %460, ptr noundef @.str.102, i32 noundef %461) #5
  store i32 %462, ptr %30, align 4, !tbaa !9
  %463 = load ptr, ptr %8, align 8, !tbaa !5
  %464 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %465 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %463, ptr noundef %464, i32 noundef %465)
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %500, %449
  %467 = load i32, ptr %32, align 4, !tbaa !9
  %468 = icmp ult i32 %467, 64
  br i1 %468, label %469, label %503

469:                                              ; preds = %466
  %470 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %471 = load i32, ptr %29, align 4, !tbaa !9
  %472 = sext i32 %471 to i64
  %473 = load i32, ptr %32, align 4, !tbaa !9
  %474 = zext i32 %473 to i64
  %475 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 %474
  %476 = load i8, ptr %475, align 1, !tbaa !11
  %477 = sext i8 %476 to i32
  %478 = load i32, ptr %32, align 4, !tbaa !9
  %479 = add i32 %478, 1
  %480 = zext i32 %479 to i64
  %481 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 %480
  %482 = load i8, ptr %481, align 1, !tbaa !11
  %483 = sext i8 %482 to i32
  %484 = load i32, ptr %32, align 4, !tbaa !9
  %485 = add i32 %484, 2
  %486 = zext i32 %485 to i64
  %487 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 %486
  %488 = load i8, ptr %487, align 1, !tbaa !11
  %489 = sext i8 %488 to i32
  %490 = load i32, ptr %32, align 4, !tbaa !9
  %491 = add i32 %490, 3
  %492 = zext i32 %491 to i64
  %493 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 %492
  %494 = load i8, ptr %493, align 1, !tbaa !11
  %495 = sext i8 %494 to i32
  %496 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %470, i64 noundef %472, ptr noundef @.str.103, i32 noundef %477, i32 noundef %483, i32 noundef %489, i32 noundef %495) #5
  store i32 %496, ptr %30, align 4, !tbaa !9
  %497 = load ptr, ptr %8, align 8, !tbaa !5
  %498 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %499 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %497, ptr noundef %498, i32 noundef %499)
  br label %500

500:                                              ; preds = %469
  %501 = load i32, ptr %32, align 4, !tbaa !9
  %502 = add i32 %501, 4
  store i32 %502, ptr %32, align 4, !tbaa !9
  br label %466, !llvm.loop !39

503:                                              ; preds = %466
  %504 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %505 = load i32, ptr %29, align 4, !tbaa !9
  %506 = sext i32 %505 to i64
  %507 = load i32, ptr %9, align 4, !tbaa !9
  %508 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %504, i64 noundef %506, ptr noundef @.str.104, i32 noundef %507) #5
  store i32 %508, ptr %30, align 4, !tbaa !9
  %509 = load ptr, ptr %8, align 8, !tbaa !5
  %510 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %511 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %509, ptr noundef %510, i32 noundef %511)
  %512 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %513 = load i32, ptr %29, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = load i32, ptr %9, align 4, !tbaa !9
  %516 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %512, i64 noundef %514, ptr noundef @.str.105, i32 noundef %515) #5
  store i32 %516, ptr %30, align 4, !tbaa !9
  %517 = load ptr, ptr %8, align 8, !tbaa !5
  %518 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %519 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %517, ptr noundef %518, i32 noundef %519)
  br label %591

520:                                              ; preds = %444
  %521 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %522 = load i32, ptr %29, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = load i32, ptr %9, align 4, !tbaa !9
  %525 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %521, i64 noundef %523, ptr noundef @.str.106, i32 noundef %524) #5
  store i32 %525, ptr %30, align 4, !tbaa !9
  %526 = load ptr, ptr %8, align 8, !tbaa !5
  %527 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %528 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %526, ptr noundef %527, i32 noundef %528)
  %529 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %530 = load i32, ptr %29, align 4, !tbaa !9
  %531 = sext i32 %530 to i64
  %532 = load i32, ptr %9, align 4, !tbaa !9
  %533 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %529, i64 noundef %531, ptr noundef @.str.107, i32 noundef %532) #5
  store i32 %533, ptr %30, align 4, !tbaa !9
  %534 = load ptr, ptr %8, align 8, !tbaa !5
  %535 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %536 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %534, ptr noundef %535, i32 noundef %536)
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %537

537:                                              ; preds = %571, %520
  %538 = load i32, ptr %32, align 4, !tbaa !9
  %539 = icmp ult i32 %538, 64
  br i1 %539, label %540, label %574

540:                                              ; preds = %537
  %541 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %542 = load i32, ptr %29, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = load i32, ptr %32, align 4, !tbaa !9
  %545 = zext i32 %544 to i64
  %546 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 %545
  %547 = load i8, ptr %546, align 1, !tbaa !11
  %548 = sext i8 %547 to i32
  %549 = load i32, ptr %32, align 4, !tbaa !9
  %550 = add i32 %549, 1
  %551 = zext i32 %550 to i64
  %552 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 %551
  %553 = load i8, ptr %552, align 1, !tbaa !11
  %554 = sext i8 %553 to i32
  %555 = load i32, ptr %32, align 4, !tbaa !9
  %556 = add i32 %555, 2
  %557 = zext i32 %556 to i64
  %558 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 %557
  %559 = load i8, ptr %558, align 1, !tbaa !11
  %560 = sext i8 %559 to i32
  %561 = load i32, ptr %32, align 4, !tbaa !9
  %562 = add i32 %561, 3
  %563 = zext i32 %562 to i64
  %564 = getelementptr inbounds [64 x i8], ptr %15, i64 0, i64 %563
  %565 = load i8, ptr %564, align 1, !tbaa !11
  %566 = sext i8 %565 to i32
  %567 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %541, i64 noundef %543, ptr noundef @.str.108, i32 noundef %548, i32 noundef %554, i32 noundef %560, i32 noundef %566) #5
  store i32 %567, ptr %30, align 4, !tbaa !9
  %568 = load ptr, ptr %8, align 8, !tbaa !5
  %569 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %570 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %568, ptr noundef %569, i32 noundef %570)
  br label %571

571:                                              ; preds = %540
  %572 = load i32, ptr %32, align 4, !tbaa !9
  %573 = add i32 %572, 4
  store i32 %573, ptr %32, align 4, !tbaa !9
  br label %537, !llvm.loop !40

574:                                              ; preds = %537
  %575 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %576 = load i32, ptr %29, align 4, !tbaa !9
  %577 = sext i32 %576 to i64
  %578 = load i32, ptr %9, align 4, !tbaa !9
  %579 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %575, i64 noundef %577, ptr noundef @.str.109, i32 noundef %578) #5
  store i32 %579, ptr %30, align 4, !tbaa !9
  %580 = load ptr, ptr %8, align 8, !tbaa !5
  %581 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %582 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %580, ptr noundef %581, i32 noundef %582)
  %583 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %584 = load i32, ptr %29, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = load i32, ptr %9, align 4, !tbaa !9
  %587 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %583, i64 noundef %585, ptr noundef @.str.110, i32 noundef %586) #5
  store i32 %587, ptr %30, align 4, !tbaa !9
  %588 = load ptr, ptr %8, align 8, !tbaa !5
  %589 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %590 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %588, ptr noundef %589, i32 noundef %590)
  br label %591

591:                                              ; preds = %574, %503
  br label %622

592:                                              ; preds = %441
  %593 = load i32, ptr %12, align 4, !tbaa !9
  %594 = icmp ne i32 %593, 127
  br i1 %594, label %595, label %620

595:                                              ; preds = %592
  %596 = load i32, ptr %12, align 4, !tbaa !9
  %597 = getelementptr inbounds [4 x i8], ptr %31, i64 0, i64 0
  call void @libxsmm_get_x86_gp_reg_name(i32 noundef %596, ptr noundef %597, i32 noundef 3)
  %598 = load ptr, ptr %8, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %598, i32 0, i32 3
  %600 = load i32, ptr %599, align 8, !tbaa !33
  %601 = icmp eq i32 %600, 0
  br i1 %601, label %602, label %609

602:                                              ; preds = %595
  %603 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %604 = load i32, ptr %29, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = load i32, ptr %13, align 4, !tbaa !9
  %607 = getelementptr inbounds [4 x i8], ptr %31, i64 0, i64 0
  %608 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %603, i64 noundef %605, ptr noundef @.str.111, i32 noundef %606, ptr noundef %607) #5
  store i32 %608, ptr %30, align 4, !tbaa !9
  br label %616

609:                                              ; preds = %595
  %610 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %611 = load i32, ptr %29, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = load i32, ptr %13, align 4, !tbaa !9
  %614 = getelementptr inbounds [4 x i8], ptr %31, i64 0, i64 0
  %615 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %610, i64 noundef %612, ptr noundef @.str.112, i32 noundef %613, ptr noundef %614) #5
  store i32 %615, ptr %30, align 4, !tbaa !9
  br label %616

616:                                              ; preds = %609, %602
  %617 = load ptr, ptr %8, align 8, !tbaa !5
  %618 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %619 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %617, ptr noundef %618, i32 noundef %619)
  br label %621

620:                                              ; preds = %592
  br label %621

621:                                              ; preds = %620, %616
  br label %622

622:                                              ; preds = %621, %591
  br label %670

623:                                              ; preds = %439
  %624 = load i32, ptr %12, align 4, !tbaa !9
  %625 = icmp ne i32 %624, 127
  br i1 %625, label %626, label %651

626:                                              ; preds = %623
  %627 = load i32, ptr %12, align 4, !tbaa !9
  %628 = getelementptr inbounds [4 x i8], ptr %31, i64 0, i64 0
  call void @libxsmm_get_x86_gp_reg_name(i32 noundef %627, ptr noundef %628, i32 noundef 3)
  %629 = load ptr, ptr %8, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %629, i32 0, i32 3
  %631 = load i32, ptr %630, align 8, !tbaa !33
  %632 = icmp eq i32 %631, 0
  br i1 %632, label %633, label %640

633:                                              ; preds = %626
  %634 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %635 = load i32, ptr %29, align 4, !tbaa !9
  %636 = sext i32 %635 to i64
  %637 = load i32, ptr %13, align 4, !tbaa !9
  %638 = getelementptr inbounds [4 x i8], ptr %31, i64 0, i64 0
  %639 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %634, i64 noundef %636, ptr noundef @.str.113, i32 noundef %637, ptr noundef %638) #5
  store i32 %639, ptr %30, align 4, !tbaa !9
  br label %647

640:                                              ; preds = %626
  %641 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %642 = load i32, ptr %29, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = load i32, ptr %13, align 4, !tbaa !9
  %645 = getelementptr inbounds [4 x i8], ptr %31, i64 0, i64 0
  %646 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %641, i64 noundef %643, ptr noundef @.str.114, i32 noundef %644, ptr noundef %645) #5
  store i32 %646, ptr %30, align 4, !tbaa !9
  br label %647

647:                                              ; preds = %640, %633
  %648 = load ptr, ptr %8, align 8, !tbaa !5
  %649 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %650 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_append_code_as_string(ptr noundef %648, ptr noundef %649, i32 noundef %650)
  br label %652

651:                                              ; preds = %623
  br label %652

652:                                              ; preds = %651, %647
  br label %670

653:                                              ; preds = %439
  %654 = load ptr, ptr %8, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %654, i32 0, i32 3
  %656 = load i32, ptr %655, align 8, !tbaa !33
  %657 = icmp eq i32 %656, 0
  br i1 %657, label %658, label %663

658:                                              ; preds = %653
  %659 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %660 = load i32, ptr %29, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %659, i64 noundef %661, ptr noundef @.str.115) #5
  store i32 %662, ptr %30, align 4, !tbaa !9
  br label %668

663:                                              ; preds = %653
  %664 = getelementptr inbounds [512 x i8], ptr %28, i64 0, i64 0
  %665 = load i32, ptr %29, align 4, !tbaa !9
  %666 = sext i32 %665 to i64
  %667 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %664, i64 noundef %666, ptr noundef @.str.116) #5
  store i32 %667, ptr %30, align 4, !tbaa !9
  br label %668

668:                                              ; preds = %663, %658
  br label %670

669:                                              ; preds = %439
  br label %670

670:                                              ; preds = %669, %668, %652, %622
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 512, ptr %28) #5
  br label %671

671:                                              ; preds = %670, %438
  store i32 0, ptr %16, align 4
  br label %672

672:                                              ; preds = %671, %436, %51
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #5
  %673 = load i32, ptr %16, align 4
  switch i32 %673, label %675 [
    i32 0, label %674
    i32 1, label %674
  ]

674:                                              ; preds = %672, %672
  ret void

675:                                              ; preds = %672
  unreachable
}

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @internal_x86_instructions_add_offset(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) #4

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #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 }

!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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !7, i64 0}
!15 = !{!"libxsmm_tile_config", !7, i64 0, !16, i64 2, !7, i64 4, !16, i64 6, !7, i64 8, !16, i64 10, !7, i64 12, !16, i64 14, !7, i64 16, !16, i64 18, !7, i64 20, !16, i64 22, !7, i64 24, !16, i64 26, !7, i64 28, !16, i64 30, !7, i64 32}
!16 = !{!"short", !7, i64 0}
!17 = !{!15, !16, i64 2}
!18 = !{!15, !7, i64 4}
!19 = !{!15, !16, i64 6}
!20 = !{!15, !7, i64 8}
!21 = !{!15, !16, i64 10}
!22 = !{!15, !7, i64 12}
!23 = !{!15, !16, i64 14}
!24 = !{!15, !7, i64 16}
!25 = !{!15, !16, i64 18}
!26 = !{!15, !7, i64 20}
!27 = !{!15, !16, i64 22}
!28 = !{!15, !7, i64 24}
!29 = !{!15, !16, i64 26}
!30 = !{!15, !7, i64 28}
!31 = !{!15, !16, i64 30}
!32 = !{!15, !7, i64 32}
!33 = !{!34, !10, i64 16}
!34 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!35 = !{!34, !6, i64 0}
!36 = !{!34, !10, i64 12}
!37 = !{!34, !10, i64 8}
!38 = distinct !{!38, !13}
!39 = distinct !{!39, !13}
!40 = distinct !{!40, !13}


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

@.str = external hidden unnamed_addr constant [82 x i8], align 1
@libxsmm_ninit = external local_unnamed_addr global i32, align 4
@libxsmm_verbosity = external local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str.99 = external hidden unnamed_addr constant [23 x i8], align 1
@__func__.libxsmm_x86_instruction_tile_control = external hidden unnamed_addr constant [37 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [36 x i8], align 1

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

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

declare void @libxsmm_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #2

declare void @libxsmm_get_x86_gp_reg_name(i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #2

declare void @libxsmm_append_code_as_string(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_x86_instruction_tile_control(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, ptr noundef readonly %6) local_unnamed_addr #3 {
  %8 = alloca [64 x i8], align 16
  %9 = ptrtoint ptr %8 to i64
  %10 = alloca [512 x i8], align 16
  %11 = alloca [4 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #6
  %12 = icmp eq i32 %4, 127
  %13 = icmp eq ptr %6, null
  %or.cond = and i1 %12, %13
  %14 = icmp ne i32 %3, 50003
  %or.cond3 = and i1 %14, %or.cond
  br i1 %or.cond3, label %15, label %22

15:                                               ; preds = %7
  %16 = load ptr, ptr @stderr, align 8, !tbaa !5
  %17 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %16, ptr noundef nonnull @.str.99) #7
  %18 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %19 = icmp ugt i32 %18, 1
  %20 = load i32, ptr @libxsmm_verbosity, align 4
  %21 = select i1 %19, i32 %20, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_x86_instruction_tile_control, ptr noundef nonnull @.str, i32 noundef 3575, i32 noundef %21) #6
  br label %673

22:                                               ; preds = %7
  %23 = icmp eq i32 %3, 50001
  %24 = icmp ne ptr %6, null
  %or.cond5 = and i1 %23, %24
  br i1 %or.cond5, label %.preheader.preheader, label %106

.preheader.preheader:                             ; preds = %22
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %8, i8 0, i64 64, i1 false), !tbaa !11
  %25 = load i8, ptr %6, align 2, !tbaa !12
  store i8 %25, ptr %8, align 16, !tbaa !11
  %26 = getelementptr inbounds i8, ptr %6, i64 2
  %27 = load i16, ptr %26, align 2, !tbaa !15
  %28 = trunc i16 %27 to i8
  %29 = getelementptr inbounds i8, ptr %8, i64 16
  store i8 %28, ptr %29, align 16, !tbaa !11
  %30 = lshr i16 %27, 8
  %31 = trunc nuw i16 %30 to i8
  %32 = getelementptr inbounds i8, ptr %8, i64 17
  store i8 %31, ptr %32, align 1, !tbaa !11
  %33 = getelementptr inbounds i8, ptr %6, i64 4
  %34 = load i8, ptr %33, align 2, !tbaa !16
  %35 = getelementptr inbounds i8, ptr %8, i64 48
  store i8 %34, ptr %35, align 16, !tbaa !11
  %36 = getelementptr inbounds i8, ptr %6, i64 6
  %37 = load i16, ptr %36, align 2, !tbaa !17
  %38 = trunc i16 %37 to i8
  %39 = getelementptr inbounds i8, ptr %8, i64 18
  store i8 %38, ptr %39, align 2, !tbaa !11
  %40 = lshr i16 %37, 8
  %41 = trunc nuw i16 %40 to i8
  %42 = getelementptr inbounds i8, ptr %8, i64 19
  store i8 %41, ptr %42, align 1, !tbaa !11
  %43 = getelementptr inbounds i8, ptr %6, i64 8
  %44 = load i8, ptr %43, align 2, !tbaa !18
  %45 = getelementptr inbounds i8, ptr %8, i64 49
  store i8 %44, ptr %45, align 1, !tbaa !11
  %46 = getelementptr inbounds i8, ptr %6, i64 10
  %47 = load i16, ptr %46, align 2, !tbaa !19
  %48 = trunc i16 %47 to i8
  %49 = getelementptr inbounds i8, ptr %8, i64 20
  store i8 %48, ptr %49, align 4, !tbaa !11
  %50 = lshr i16 %47, 8
  %51 = trunc nuw i16 %50 to i8
  %52 = getelementptr inbounds i8, ptr %8, i64 21
  store i8 %51, ptr %52, align 1, !tbaa !11
  %53 = getelementptr inbounds i8, ptr %6, i64 12
  %54 = load i8, ptr %53, align 2, !tbaa !20
  %55 = getelementptr inbounds i8, ptr %8, i64 50
  store i8 %54, ptr %55, align 2, !tbaa !11
  %56 = getelementptr inbounds i8, ptr %6, i64 14
  %57 = load i16, ptr %56, align 2, !tbaa !21
  %58 = trunc i16 %57 to i8
  %59 = getelementptr inbounds i8, ptr %8, i64 22
  store i8 %58, ptr %59, align 2, !tbaa !11
  %60 = lshr i16 %57, 8
  %61 = trunc nuw i16 %60 to i8
  %62 = getelementptr inbounds i8, ptr %8, i64 23
  store i8 %61, ptr %62, align 1, !tbaa !11
  %63 = getelementptr inbounds i8, ptr %6, i64 16
  %64 = load i8, ptr %63, align 2, !tbaa !22
  %65 = getelementptr inbounds i8, ptr %8, i64 51
  store i8 %64, ptr %65, align 1, !tbaa !11
  %66 = getelementptr inbounds i8, ptr %6, i64 18
  %67 = load i16, ptr %66, align 2, !tbaa !23
  %68 = trunc i16 %67 to i8
  %69 = getelementptr inbounds i8, ptr %8, i64 24
  store i8 %68, ptr %69, align 8, !tbaa !11
  %70 = lshr i16 %67, 8
  %71 = trunc nuw i16 %70 to i8
  %72 = getelementptr inbounds i8, ptr %8, i64 25
  store i8 %71, ptr %72, align 1, !tbaa !11
  %73 = getelementptr inbounds i8, ptr %6, i64 20
  %74 = load i8, ptr %73, align 2, !tbaa !24
  %75 = getelementptr inbounds i8, ptr %8, i64 52
  store i8 %74, ptr %75, align 4, !tbaa !11
  %76 = getelementptr inbounds i8, ptr %6, i64 22
  %77 = load i16, ptr %76, align 2, !tbaa !25
  %78 = trunc i16 %77 to i8
  %79 = getelementptr inbounds i8, ptr %8, i64 26
  store i8 %78, ptr %79, align 2, !tbaa !11
  %80 = lshr i16 %77, 8
  %81 = trunc nuw i16 %80 to i8
  %82 = getelementptr inbounds i8, ptr %8, i64 27
  store i8 %81, ptr %82, align 1, !tbaa !11
  %83 = getelementptr inbounds i8, ptr %6, i64 24
  %84 = load i8, ptr %83, align 2, !tbaa !26
  %85 = getelementptr inbounds i8, ptr %8, i64 53
  store i8 %84, ptr %85, align 1, !tbaa !11
  %86 = getelementptr inbounds i8, ptr %6, i64 26
  %87 = load i16, ptr %86, align 2, !tbaa !27
  %88 = trunc i16 %87 to i8
  %89 = getelementptr inbounds i8, ptr %8, i64 28
  store i8 %88, ptr %89, align 4, !tbaa !11
  %90 = lshr i16 %87, 8
  %91 = trunc nuw i16 %90 to i8
  %92 = getelementptr inbounds i8, ptr %8, i64 29
  store i8 %91, ptr %92, align 1, !tbaa !11
  %93 = getelementptr inbounds i8, ptr %6, i64 28
  %94 = load i8, ptr %93, align 2, !tbaa !28
  %95 = getelementptr inbounds i8, ptr %8, i64 54
  store i8 %94, ptr %95, align 2, !tbaa !11
  %96 = getelementptr inbounds i8, ptr %6, i64 30
  %97 = load i16, ptr %96, align 2, !tbaa !29
  %98 = trunc i16 %97 to i8
  %99 = getelementptr inbounds i8, ptr %8, i64 30
  store i8 %98, ptr %99, align 2, !tbaa !11
  %100 = lshr i16 %97, 8
  %101 = trunc nuw i16 %100 to i8
  %102 = getelementptr inbounds i8, ptr %8, i64 31
  store i8 %101, ptr %102, align 1, !tbaa !11
  %103 = getelementptr inbounds i8, ptr %6, i64 32
  %104 = load i8, ptr %103, align 2, !tbaa !30
  %105 = getelementptr inbounds i8, ptr %8, i64 55
  store i8 %104, ptr %105, align 1, !tbaa !11
  br label %106

106:                                              ; preds = %.preheader.preheader, %22
  %107 = getelementptr inbounds i8, ptr %0, i64 16
  %108 = load i32, ptr %107, align 8, !tbaa !31
  %109 = icmp ugt i32 %108, 1
  br i1 %109, label %110, label %235

110:                                              ; preds = %106
  %111 = load ptr, ptr %0, align 8, !tbaa !33
  %112 = ptrtoint ptr %111 to i64
  %113 = getelementptr inbounds i8, ptr %0, i64 12
  %114 = load i32, ptr %113, align 4, !tbaa !34
  %115 = getelementptr inbounds i8, ptr %0, i64 8
  %116 = load i32, ptr %115, align 8, !tbaa !35
  %117 = and i32 %4, 7
  %118 = and i32 %4, -8
  %119 = icmp eq i32 %118, 8
  %120 = sub i32 %116, %114
  %121 = icmp ugt i32 %120, 79
  br i1 %121, label %127, label %122

122:                                              ; preds = %110
  %123 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %124 = icmp ugt i32 %123, 1
  %125 = load i32, ptr @libxsmm_verbosity, align 4
  %126 = select i1 %124, i32 %125, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90002, ptr noundef nonnull @__func__.libxsmm_x86_instruction_tile_control, ptr noundef nonnull @.str, i32 noundef 3630, i32 noundef %126) #6
  br label %673

127:                                              ; preds = %110
  switch i32 %3, label %131 [
    i32 50001, label %137
    i32 50002, label %.thread
    i32 50003, label %.thread.thread
  ]

.thread.thread:                                   ; preds = %127
  %128 = add i32 %114, 1
  %129 = zext i32 %114 to i64
  %130 = getelementptr inbounds i8, ptr %111, i64 %129
  store i8 -60, ptr %130, align 1, !tbaa !11
  br label %206

131:                                              ; preds = %127
  %132 = load ptr, ptr @stderr, align 8, !tbaa !5
  %133 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %132, ptr noundef nonnull @.str.100) #7
  %134 = add i32 %114, 1
  %135 = zext i32 %114 to i64
  %136 = getelementptr inbounds i8, ptr %111, i64 %135
  store i8 -60, ptr %136, align 1, !tbaa !11
  br i1 %119, label %204, label %206

137:                                              ; preds = %127
  %or.cond7 = and i1 %12, %24
  br i1 %or.cond7, label %138, label %.thread

138:                                              ; preds = %137
  %139 = add i32 %114, 1
  %140 = zext i32 %114 to i64
  %141 = getelementptr inbounds i8, ptr %111, i64 %140
  store i8 -21, ptr %141, align 1, !tbaa !11
  %142 = add i32 %114, 2
  %143 = zext i32 %139 to i64
  %144 = getelementptr inbounds i8, ptr %111, i64 %143
  store i8 64, ptr %144, align 1, !tbaa !11
  %145 = add i32 %114, 66
  %146 = icmp ult i32 %142, %145
  br i1 %146, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %138
  %147 = zext i32 %142 to i64
  %148 = add i64 %112, %147
  %149 = sub i64 %148, %9
  %diff.check = icmp ult i64 %149, 32
  br i1 %diff.check, label %.lr.ph, label %vector.body

vector.body:                                      ; preds = %.lr.ph.preheader
  %150 = getelementptr inbounds i8, ptr %8, i64 16
  %wide.load = load <16 x i8>, ptr %8, align 16, !tbaa !11
  %wide.load241 = load <16 x i8>, ptr %150, align 16, !tbaa !11
  %151 = getelementptr i8, ptr %111, i64 %147
  %152 = getelementptr inbounds i8, ptr %151, i64 16
  store <16 x i8> %wide.load, ptr %151, align 1, !tbaa !11
  store <16 x i8> %wide.load241, ptr %152, align 1, !tbaa !11
  %153 = getelementptr inbounds i8, ptr %8, i64 32
  %154 = getelementptr inbounds i8, ptr %8, i64 48
  %wide.load.1 = load <16 x i8>, ptr %153, align 16, !tbaa !11
  %wide.load241.1 = load <16 x i8>, ptr %154, align 16, !tbaa !11
  %155 = getelementptr i8, ptr %111, i64 32
  %156 = getelementptr i8, ptr %155, i64 %147
  %157 = getelementptr inbounds i8, ptr %156, i64 16
  store <16 x i8> %wide.load.1, ptr %156, align 1, !tbaa !11
  store <16 x i8> %wide.load241.1, ptr %157, align 1, !tbaa !11
  br label %._crit_edge

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph ], [ %147, %.lr.ph.preheader ]
  %158 = sub nuw nsw i64 %indvars.iv, %147
  %159 = getelementptr inbounds [64 x i8], ptr %8, i64 0, i64 %158
  %160 = load i8, ptr %159, align 1, !tbaa !11
  %161 = getelementptr inbounds i8, ptr %111, i64 %indvars.iv
  store i8 %160, ptr %161, align 1, !tbaa !11
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %162 = sub nuw nsw i64 %indvars.iv.next, %147
  %163 = getelementptr inbounds [64 x i8], ptr %8, i64 0, i64 %162
  %164 = load i8, ptr %163, align 1, !tbaa !11
  %165 = getelementptr inbounds i8, ptr %111, i64 %indvars.iv.next
  store i8 %164, ptr %165, align 1, !tbaa !11
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %166 = sub nuw nsw i64 %indvars.iv.next.1, %147
  %167 = getelementptr inbounds [64 x i8], ptr %8, i64 0, i64 %166
  %168 = load i8, ptr %167, align 1, !tbaa !11
  %169 = getelementptr inbounds i8, ptr %111, i64 %indvars.iv.next.1
  store i8 %168, ptr %169, align 1, !tbaa !11
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %170 = sub nuw nsw i64 %indvars.iv.next.2, %147
  %171 = getelementptr inbounds [64 x i8], ptr %8, i64 0, i64 %170
  %172 = load i8, ptr %171, align 1, !tbaa !11
  %173 = getelementptr inbounds i8, ptr %111, i64 %indvars.iv.next.2
  store i8 %172, ptr %173, align 1, !tbaa !11
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %lftr.wideiv.3 = trunc i64 %indvars.iv.next.3 to i32
  %exitcond.not.3 = icmp eq i32 %145, %lftr.wideiv.3
  br i1 %exitcond.not.3, label %._crit_edge, label %.lr.ph, !llvm.loop !36

._crit_edge:                                      ; preds = %.lr.ph, %vector.body, %138
  %174 = add i32 %114, 67
  %175 = zext i32 %145 to i64
  %176 = getelementptr inbounds i8, ptr %111, i64 %175
  store i8 -60, ptr %176, align 1, !tbaa !11
  %177 = add i32 %114, 68
  %178 = zext i32 %174 to i64
  %179 = getelementptr inbounds i8, ptr %111, i64 %178
  store i8 -30, ptr %179, align 1, !tbaa !11
  %180 = add i32 %114, 69
  %181 = zext i32 %177 to i64
  %182 = getelementptr inbounds i8, ptr %111, i64 %181
  store i8 120, ptr %182, align 1, !tbaa !11
  %183 = add i32 %114, 70
  %184 = zext i32 %180 to i64
  %185 = getelementptr inbounds i8, ptr %111, i64 %184
  store i8 73, ptr %185, align 1, !tbaa !11
  %186 = add i32 %114, 71
  %187 = zext i32 %183 to i64
  %188 = getelementptr inbounds i8, ptr %111, i64 %187
  store i8 5, ptr %188, align 1, !tbaa !11
  %189 = add i32 %114, 72
  %190 = zext i32 %186 to i64
  %191 = getelementptr inbounds i8, ptr %111, i64 %190
  store i8 -73, ptr %191, align 1, !tbaa !11
  %192 = add i32 %114, 73
  %193 = zext i32 %189 to i64
  %194 = getelementptr inbounds i8, ptr %111, i64 %193
  store i8 -1, ptr %194, align 1, !tbaa !11
  %195 = add i32 %114, 74
  %196 = zext i32 %192 to i64
  %197 = getelementptr inbounds i8, ptr %111, i64 %196
  store i8 -1, ptr %197, align 1, !tbaa !11
  %198 = add i32 %114, 75
  %199 = zext i32 %195 to i64
  %200 = getelementptr inbounds i8, ptr %111, i64 %199
  store i8 -1, ptr %200, align 1, !tbaa !11
  br label %234

.thread:                                          ; preds = %127, %137
  %.0202221 = phi i8 [ 120, %137 ], [ 121, %127 ]
  %201 = add i32 %114, 1
  %202 = zext i32 %114 to i64
  %203 = getelementptr inbounds i8, ptr %111, i64 %202
  store i8 -60, ptr %203, align 1, !tbaa !11
  br i1 %119, label %204, label %206

204:                                              ; preds = %131, %.thread
  %205 = phi i32 [ %134, %131 ], [ %201, %.thread ]
  %.0202221231 = phi i8 [ 120, %131 ], [ %.0202221, %.thread ]
  br label %206

206:                                              ; preds = %131, %.thread.thread, %.thread, %204
  %207 = phi i32 [ %205, %204 ], [ %201, %.thread ], [ %128, %.thread.thread ], [ %134, %131 ]
  %.0204219229 = phi i32 [ %117, %204 ], [ %117, %.thread ], [ 0, %.thread.thread ], [ %117, %131 ]
  %.0202221228 = phi i8 [ %.0202221231, %204 ], [ %.0202221, %.thread ], [ 120, %.thread.thread ], [ 120, %131 ]
  %.0201222227 = phi i32 [ 0, %204 ], [ 0, %.thread ], [ 192, %.thread.thread ], [ 0, %131 ]
  %208 = phi i8 [ -62, %204 ], [ -30, %.thread ], [ -30, %.thread.thread ], [ -30, %131 ]
  %209 = add i32 %114, 2
  %210 = zext i32 %207 to i64
  %211 = getelementptr inbounds i8, ptr %111, i64 %210
  store i8 %208, ptr %211, align 1, !tbaa !11
  %212 = add i32 %114, 3
  %213 = zext i32 %209 to i64
  %214 = getelementptr inbounds i8, ptr %111, i64 %213
  store i8 %.0202221228, ptr %214, align 1, !tbaa !11
  %215 = add i32 %114, 4
  %216 = zext i32 %212 to i64
  %217 = getelementptr inbounds i8, ptr %111, i64 %216
  store i8 73, ptr %217, align 1, !tbaa !11
  %218 = or disjoint i32 %.0201222227, %.0204219229
  %219 = trunc nuw i32 %218 to i8
  %220 = add i32 %114, 5
  %221 = zext i32 %215 to i64
  %222 = getelementptr inbounds i8, ptr %111, i64 %221
  store i8 %219, ptr %222, align 1, !tbaa !11
  %223 = icmp eq i32 %.0204219229, 4
  br i1 %223, label %224, label %228

224:                                              ; preds = %206
  %225 = add i32 %114, 6
  %226 = zext i32 %220 to i64
  %227 = getelementptr inbounds i8, ptr %111, i64 %226
  store i8 36, ptr %227, align 1, !tbaa !11
  br label %228

228:                                              ; preds = %224, %206
  %.0206 = phi i32 [ %225, %224 ], [ %220, %206 ]
  br i1 %14, label %229, label %234

229:                                              ; preds = %228
  %230 = icmp eq i32 %.0204219229, 5
  %231 = icmp eq i32 %5, 0
  %or.cond11 = and i1 %231, %230
  %spec.select = zext i1 %or.cond11 to i32
  %232 = tail call i32 @internal_x86_instructions_add_offset(i32 noundef %212, i32 noundef %.0206, i32 noundef %5, i32 noundef %spec.select, i32 noundef 1, ptr noundef nonnull %111)
  %233 = add i32 %232, %.0206
  br label %234

234:                                              ; preds = %228, %229, %._crit_edge
  %storemerge = phi i32 [ %198, %._crit_edge ], [ %233, %229 ], [ %.0206, %228 ]
  store i32 %storemerge, ptr %113, align 4, !tbaa !34
  br label %673

235:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  switch i32 %3, label %672 [
    i32 50001, label %236
    i32 50002, label %661
    i32 50003, label %666
  ]

236:                                              ; preds = %235
  br i1 %24, label %237, label %656

237:                                              ; preds = %236
  %238 = icmp eq i32 %108, 0
  %239 = getelementptr inbounds i8, ptr %8, i64 1
  %240 = getelementptr inbounds i8, ptr %8, i64 2
  %241 = getelementptr inbounds i8, ptr %8, i64 3
  %242 = getelementptr inbounds i8, ptr %8, i64 4
  %243 = getelementptr inbounds i8, ptr %8, i64 5
  %244 = getelementptr inbounds i8, ptr %8, i64 6
  %245 = getelementptr inbounds i8, ptr %8, i64 7
  br i1 %238, label %246, label %451

246:                                              ; preds = %237
  %247 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.101, i32 noundef %1) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %247) #6
  %248 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.102, i32 noundef %1) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %248) #6
  %249 = load i8, ptr %8, align 16, !tbaa !11
  %250 = sext i8 %249 to i32
  %251 = load i8, ptr %239, align 1, !tbaa !11
  %252 = sext i8 %251 to i32
  %253 = load i8, ptr %240, align 2, !tbaa !11
  %254 = sext i8 %253 to i32
  %255 = load i8, ptr %241, align 1, !tbaa !11
  %256 = sext i8 %255 to i32
  %257 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %250, i32 noundef %252, i32 noundef %254, i32 noundef %256) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %257) #6
  %258 = load i8, ptr %242, align 4, !tbaa !11
  %259 = sext i8 %258 to i32
  %260 = load i8, ptr %243, align 1, !tbaa !11
  %261 = sext i8 %260 to i32
  %262 = load i8, ptr %244, align 2, !tbaa !11
  %263 = sext i8 %262 to i32
  %264 = load i8, ptr %245, align 1, !tbaa !11
  %265 = sext i8 %264 to i32
  %266 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %259, i32 noundef %261, i32 noundef %263, i32 noundef %265) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %266) #6
  %267 = getelementptr inbounds i8, ptr %8, i64 8
  %268 = load i8, ptr %267, align 8, !tbaa !11
  %269 = sext i8 %268 to i32
  %270 = getelementptr inbounds i8, ptr %8, i64 9
  %271 = load i8, ptr %270, align 1, !tbaa !11
  %272 = sext i8 %271 to i32
  %273 = getelementptr inbounds i8, ptr %8, i64 10
  %274 = load i8, ptr %273, align 2, !tbaa !11
  %275 = sext i8 %274 to i32
  %276 = getelementptr inbounds i8, ptr %8, i64 11
  %277 = load i8, ptr %276, align 1, !tbaa !11
  %278 = sext i8 %277 to i32
  %279 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %269, i32 noundef %272, i32 noundef %275, i32 noundef %278) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %279) #6
  %280 = getelementptr inbounds i8, ptr %8, i64 12
  %281 = load i8, ptr %280, align 4, !tbaa !11
  %282 = sext i8 %281 to i32
  %283 = getelementptr inbounds i8, ptr %8, i64 13
  %284 = load i8, ptr %283, align 1, !tbaa !11
  %285 = sext i8 %284 to i32
  %286 = getelementptr inbounds i8, ptr %8, i64 14
  %287 = load i8, ptr %286, align 2, !tbaa !11
  %288 = sext i8 %287 to i32
  %289 = getelementptr inbounds i8, ptr %8, i64 15
  %290 = load i8, ptr %289, align 1, !tbaa !11
  %291 = sext i8 %290 to i32
  %292 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %282, i32 noundef %285, i32 noundef %288, i32 noundef %291) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %292) #6
  %293 = getelementptr inbounds i8, ptr %8, i64 16
  %294 = load i8, ptr %293, align 16, !tbaa !11
  %295 = sext i8 %294 to i32
  %296 = getelementptr inbounds i8, ptr %8, i64 17
  %297 = load i8, ptr %296, align 1, !tbaa !11
  %298 = sext i8 %297 to i32
  %299 = getelementptr inbounds i8, ptr %8, i64 18
  %300 = load i8, ptr %299, align 2, !tbaa !11
  %301 = sext i8 %300 to i32
  %302 = getelementptr inbounds i8, ptr %8, i64 19
  %303 = load i8, ptr %302, align 1, !tbaa !11
  %304 = sext i8 %303 to i32
  %305 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %295, i32 noundef %298, i32 noundef %301, i32 noundef %304) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %305) #6
  %306 = getelementptr inbounds i8, ptr %8, i64 20
  %307 = load i8, ptr %306, align 4, !tbaa !11
  %308 = sext i8 %307 to i32
  %309 = getelementptr inbounds i8, ptr %8, i64 21
  %310 = load i8, ptr %309, align 1, !tbaa !11
  %311 = sext i8 %310 to i32
  %312 = getelementptr inbounds i8, ptr %8, i64 22
  %313 = load i8, ptr %312, align 2, !tbaa !11
  %314 = sext i8 %313 to i32
  %315 = getelementptr inbounds i8, ptr %8, i64 23
  %316 = load i8, ptr %315, align 1, !tbaa !11
  %317 = sext i8 %316 to i32
  %318 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %308, i32 noundef %311, i32 noundef %314, i32 noundef %317) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %318) #6
  %319 = getelementptr inbounds i8, ptr %8, i64 24
  %320 = load i8, ptr %319, align 8, !tbaa !11
  %321 = sext i8 %320 to i32
  %322 = getelementptr inbounds i8, ptr %8, i64 25
  %323 = load i8, ptr %322, align 1, !tbaa !11
  %324 = sext i8 %323 to i32
  %325 = getelementptr inbounds i8, ptr %8, i64 26
  %326 = load i8, ptr %325, align 2, !tbaa !11
  %327 = sext i8 %326 to i32
  %328 = getelementptr inbounds i8, ptr %8, i64 27
  %329 = load i8, ptr %328, align 1, !tbaa !11
  %330 = sext i8 %329 to i32
  %331 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %321, i32 noundef %324, i32 noundef %327, i32 noundef %330) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %331) #6
  %332 = getelementptr inbounds i8, ptr %8, i64 28
  %333 = load i8, ptr %332, align 4, !tbaa !11
  %334 = sext i8 %333 to i32
  %335 = getelementptr inbounds i8, ptr %8, i64 29
  %336 = load i8, ptr %335, align 1, !tbaa !11
  %337 = sext i8 %336 to i32
  %338 = getelementptr inbounds i8, ptr %8, i64 30
  %339 = load i8, ptr %338, align 2, !tbaa !11
  %340 = sext i8 %339 to i32
  %341 = getelementptr inbounds i8, ptr %8, i64 31
  %342 = load i8, ptr %341, align 1, !tbaa !11
  %343 = sext i8 %342 to i32
  %344 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %334, i32 noundef %337, i32 noundef %340, i32 noundef %343) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %344) #6
  %345 = getelementptr inbounds i8, ptr %8, i64 32
  %346 = load i8, ptr %345, align 16, !tbaa !11
  %347 = sext i8 %346 to i32
  %348 = getelementptr inbounds i8, ptr %8, i64 33
  %349 = load i8, ptr %348, align 1, !tbaa !11
  %350 = sext i8 %349 to i32
  %351 = getelementptr inbounds i8, ptr %8, i64 34
  %352 = load i8, ptr %351, align 2, !tbaa !11
  %353 = sext i8 %352 to i32
  %354 = getelementptr inbounds i8, ptr %8, i64 35
  %355 = load i8, ptr %354, align 1, !tbaa !11
  %356 = sext i8 %355 to i32
  %357 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %347, i32 noundef %350, i32 noundef %353, i32 noundef %356) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %357) #6
  %358 = getelementptr inbounds i8, ptr %8, i64 36
  %359 = load i8, ptr %358, align 4, !tbaa !11
  %360 = sext i8 %359 to i32
  %361 = getelementptr inbounds i8, ptr %8, i64 37
  %362 = load i8, ptr %361, align 1, !tbaa !11
  %363 = sext i8 %362 to i32
  %364 = getelementptr inbounds i8, ptr %8, i64 38
  %365 = load i8, ptr %364, align 2, !tbaa !11
  %366 = sext i8 %365 to i32
  %367 = getelementptr inbounds i8, ptr %8, i64 39
  %368 = load i8, ptr %367, align 1, !tbaa !11
  %369 = sext i8 %368 to i32
  %370 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %360, i32 noundef %363, i32 noundef %366, i32 noundef %369) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %370) #6
  %371 = getelementptr inbounds i8, ptr %8, i64 40
  %372 = load i8, ptr %371, align 8, !tbaa !11
  %373 = sext i8 %372 to i32
  %374 = getelementptr inbounds i8, ptr %8, i64 41
  %375 = load i8, ptr %374, align 1, !tbaa !11
  %376 = sext i8 %375 to i32
  %377 = getelementptr inbounds i8, ptr %8, i64 42
  %378 = load i8, ptr %377, align 2, !tbaa !11
  %379 = sext i8 %378 to i32
  %380 = getelementptr inbounds i8, ptr %8, i64 43
  %381 = load i8, ptr %380, align 1, !tbaa !11
  %382 = sext i8 %381 to i32
  %383 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %373, i32 noundef %376, i32 noundef %379, i32 noundef %382) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %383) #6
  %384 = getelementptr inbounds i8, ptr %8, i64 44
  %385 = load i8, ptr %384, align 4, !tbaa !11
  %386 = sext i8 %385 to i32
  %387 = getelementptr inbounds i8, ptr %8, i64 45
  %388 = load i8, ptr %387, align 1, !tbaa !11
  %389 = sext i8 %388 to i32
  %390 = getelementptr inbounds i8, ptr %8, i64 46
  %391 = load i8, ptr %390, align 2, !tbaa !11
  %392 = sext i8 %391 to i32
  %393 = getelementptr inbounds i8, ptr %8, i64 47
  %394 = load i8, ptr %393, align 1, !tbaa !11
  %395 = sext i8 %394 to i32
  %396 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %386, i32 noundef %389, i32 noundef %392, i32 noundef %395) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %396) #6
  %397 = getelementptr inbounds i8, ptr %8, i64 48
  %398 = load i8, ptr %397, align 16, !tbaa !11
  %399 = sext i8 %398 to i32
  %400 = getelementptr inbounds i8, ptr %8, i64 49
  %401 = load i8, ptr %400, align 1, !tbaa !11
  %402 = sext i8 %401 to i32
  %403 = getelementptr inbounds i8, ptr %8, i64 50
  %404 = load i8, ptr %403, align 2, !tbaa !11
  %405 = sext i8 %404 to i32
  %406 = getelementptr inbounds i8, ptr %8, i64 51
  %407 = load i8, ptr %406, align 1, !tbaa !11
  %408 = sext i8 %407 to i32
  %409 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %399, i32 noundef %402, i32 noundef %405, i32 noundef %408) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %409) #6
  %410 = getelementptr inbounds i8, ptr %8, i64 52
  %411 = load i8, ptr %410, align 4, !tbaa !11
  %412 = sext i8 %411 to i32
  %413 = getelementptr inbounds i8, ptr %8, i64 53
  %414 = load i8, ptr %413, align 1, !tbaa !11
  %415 = sext i8 %414 to i32
  %416 = getelementptr inbounds i8, ptr %8, i64 54
  %417 = load i8, ptr %416, align 2, !tbaa !11
  %418 = sext i8 %417 to i32
  %419 = getelementptr inbounds i8, ptr %8, i64 55
  %420 = load i8, ptr %419, align 1, !tbaa !11
  %421 = sext i8 %420 to i32
  %422 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %412, i32 noundef %415, i32 noundef %418, i32 noundef %421) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %422) #6
  %423 = getelementptr inbounds i8, ptr %8, i64 56
  %424 = load i8, ptr %423, align 8, !tbaa !11
  %425 = sext i8 %424 to i32
  %426 = getelementptr inbounds i8, ptr %8, i64 57
  %427 = load i8, ptr %426, align 1, !tbaa !11
  %428 = sext i8 %427 to i32
  %429 = getelementptr inbounds i8, ptr %8, i64 58
  %430 = load i8, ptr %429, align 2, !tbaa !11
  %431 = sext i8 %430 to i32
  %432 = getelementptr inbounds i8, ptr %8, i64 59
  %433 = load i8, ptr %432, align 1, !tbaa !11
  %434 = sext i8 %433 to i32
  %435 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %425, i32 noundef %428, i32 noundef %431, i32 noundef %434) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %435) #6
  %436 = getelementptr inbounds i8, ptr %8, i64 60
  %437 = load i8, ptr %436, align 4, !tbaa !11
  %438 = sext i8 %437 to i32
  %439 = getelementptr inbounds i8, ptr %8, i64 61
  %440 = load i8, ptr %439, align 1, !tbaa !11
  %441 = sext i8 %440 to i32
  %442 = getelementptr inbounds i8, ptr %8, i64 62
  %443 = load i8, ptr %442, align 2, !tbaa !11
  %444 = sext i8 %443 to i32
  %445 = getelementptr inbounds i8, ptr %8, i64 63
  %446 = load i8, ptr %445, align 1, !tbaa !11
  %447 = sext i8 %446 to i32
  %448 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.103, i32 noundef %438, i32 noundef %441, i32 noundef %444, i32 noundef %447) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %448) #6
  %449 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.104, i32 noundef %1) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %449) #6
  %450 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.105, i32 noundef %1) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %450) #6
  br label %672

451:                                              ; preds = %237
  %452 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.106, i32 noundef %1) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %452) #6
  %453 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.107, i32 noundef %1) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %453) #6
  %454 = load i8, ptr %8, align 16, !tbaa !11
  %455 = sext i8 %454 to i32
  %456 = load i8, ptr %239, align 1, !tbaa !11
  %457 = sext i8 %456 to i32
  %458 = load i8, ptr %240, align 2, !tbaa !11
  %459 = sext i8 %458 to i32
  %460 = load i8, ptr %241, align 1, !tbaa !11
  %461 = sext i8 %460 to i32
  %462 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %455, i32 noundef %457, i32 noundef %459, i32 noundef %461) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %462) #6
  %463 = load i8, ptr %242, align 4, !tbaa !11
  %464 = sext i8 %463 to i32
  %465 = load i8, ptr %243, align 1, !tbaa !11
  %466 = sext i8 %465 to i32
  %467 = load i8, ptr %244, align 2, !tbaa !11
  %468 = sext i8 %467 to i32
  %469 = load i8, ptr %245, align 1, !tbaa !11
  %470 = sext i8 %469 to i32
  %471 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %464, i32 noundef %466, i32 noundef %468, i32 noundef %470) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %471) #6
  %472 = getelementptr inbounds i8, ptr %8, i64 8
  %473 = load i8, ptr %472, align 8, !tbaa !11
  %474 = sext i8 %473 to i32
  %475 = getelementptr inbounds i8, ptr %8, i64 9
  %476 = load i8, ptr %475, align 1, !tbaa !11
  %477 = sext i8 %476 to i32
  %478 = getelementptr inbounds i8, ptr %8, i64 10
  %479 = load i8, ptr %478, align 2, !tbaa !11
  %480 = sext i8 %479 to i32
  %481 = getelementptr inbounds i8, ptr %8, i64 11
  %482 = load i8, ptr %481, align 1, !tbaa !11
  %483 = sext i8 %482 to i32
  %484 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %474, i32 noundef %477, i32 noundef %480, i32 noundef %483) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %484) #6
  %485 = getelementptr inbounds i8, ptr %8, i64 12
  %486 = load i8, ptr %485, align 4, !tbaa !11
  %487 = sext i8 %486 to i32
  %488 = getelementptr inbounds i8, ptr %8, i64 13
  %489 = load i8, ptr %488, align 1, !tbaa !11
  %490 = sext i8 %489 to i32
  %491 = getelementptr inbounds i8, ptr %8, i64 14
  %492 = load i8, ptr %491, align 2, !tbaa !11
  %493 = sext i8 %492 to i32
  %494 = getelementptr inbounds i8, ptr %8, i64 15
  %495 = load i8, ptr %494, align 1, !tbaa !11
  %496 = sext i8 %495 to i32
  %497 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %487, i32 noundef %490, i32 noundef %493, i32 noundef %496) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %497) #6
  %498 = getelementptr inbounds i8, ptr %8, i64 16
  %499 = load i8, ptr %498, align 16, !tbaa !11
  %500 = sext i8 %499 to i32
  %501 = getelementptr inbounds i8, ptr %8, i64 17
  %502 = load i8, ptr %501, align 1, !tbaa !11
  %503 = sext i8 %502 to i32
  %504 = getelementptr inbounds i8, ptr %8, i64 18
  %505 = load i8, ptr %504, align 2, !tbaa !11
  %506 = sext i8 %505 to i32
  %507 = getelementptr inbounds i8, ptr %8, i64 19
  %508 = load i8, ptr %507, align 1, !tbaa !11
  %509 = sext i8 %508 to i32
  %510 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %500, i32 noundef %503, i32 noundef %506, i32 noundef %509) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %510) #6
  %511 = getelementptr inbounds i8, ptr %8, i64 20
  %512 = load i8, ptr %511, align 4, !tbaa !11
  %513 = sext i8 %512 to i32
  %514 = getelementptr inbounds i8, ptr %8, i64 21
  %515 = load i8, ptr %514, align 1, !tbaa !11
  %516 = sext i8 %515 to i32
  %517 = getelementptr inbounds i8, ptr %8, i64 22
  %518 = load i8, ptr %517, align 2, !tbaa !11
  %519 = sext i8 %518 to i32
  %520 = getelementptr inbounds i8, ptr %8, i64 23
  %521 = load i8, ptr %520, align 1, !tbaa !11
  %522 = sext i8 %521 to i32
  %523 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %513, i32 noundef %516, i32 noundef %519, i32 noundef %522) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %523) #6
  %524 = getelementptr inbounds i8, ptr %8, i64 24
  %525 = load i8, ptr %524, align 8, !tbaa !11
  %526 = sext i8 %525 to i32
  %527 = getelementptr inbounds i8, ptr %8, i64 25
  %528 = load i8, ptr %527, align 1, !tbaa !11
  %529 = sext i8 %528 to i32
  %530 = getelementptr inbounds i8, ptr %8, i64 26
  %531 = load i8, ptr %530, align 2, !tbaa !11
  %532 = sext i8 %531 to i32
  %533 = getelementptr inbounds i8, ptr %8, i64 27
  %534 = load i8, ptr %533, align 1, !tbaa !11
  %535 = sext i8 %534 to i32
  %536 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %526, i32 noundef %529, i32 noundef %532, i32 noundef %535) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %536) #6
  %537 = getelementptr inbounds i8, ptr %8, i64 28
  %538 = load i8, ptr %537, align 4, !tbaa !11
  %539 = sext i8 %538 to i32
  %540 = getelementptr inbounds i8, ptr %8, i64 29
  %541 = load i8, ptr %540, align 1, !tbaa !11
  %542 = sext i8 %541 to i32
  %543 = getelementptr inbounds i8, ptr %8, i64 30
  %544 = load i8, ptr %543, align 2, !tbaa !11
  %545 = sext i8 %544 to i32
  %546 = getelementptr inbounds i8, ptr %8, i64 31
  %547 = load i8, ptr %546, align 1, !tbaa !11
  %548 = sext i8 %547 to i32
  %549 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %539, i32 noundef %542, i32 noundef %545, i32 noundef %548) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %549) #6
  %550 = getelementptr inbounds i8, ptr %8, i64 32
  %551 = load i8, ptr %550, align 16, !tbaa !11
  %552 = sext i8 %551 to i32
  %553 = getelementptr inbounds i8, ptr %8, i64 33
  %554 = load i8, ptr %553, align 1, !tbaa !11
  %555 = sext i8 %554 to i32
  %556 = getelementptr inbounds i8, ptr %8, i64 34
  %557 = load i8, ptr %556, align 2, !tbaa !11
  %558 = sext i8 %557 to i32
  %559 = getelementptr inbounds i8, ptr %8, i64 35
  %560 = load i8, ptr %559, align 1, !tbaa !11
  %561 = sext i8 %560 to i32
  %562 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %552, i32 noundef %555, i32 noundef %558, i32 noundef %561) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %562) #6
  %563 = getelementptr inbounds i8, ptr %8, i64 36
  %564 = load i8, ptr %563, align 4, !tbaa !11
  %565 = sext i8 %564 to i32
  %566 = getelementptr inbounds i8, ptr %8, i64 37
  %567 = load i8, ptr %566, align 1, !tbaa !11
  %568 = sext i8 %567 to i32
  %569 = getelementptr inbounds i8, ptr %8, i64 38
  %570 = load i8, ptr %569, align 2, !tbaa !11
  %571 = sext i8 %570 to i32
  %572 = getelementptr inbounds i8, ptr %8, i64 39
  %573 = load i8, ptr %572, align 1, !tbaa !11
  %574 = sext i8 %573 to i32
  %575 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %565, i32 noundef %568, i32 noundef %571, i32 noundef %574) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %575) #6
  %576 = getelementptr inbounds i8, ptr %8, i64 40
  %577 = load i8, ptr %576, align 8, !tbaa !11
  %578 = sext i8 %577 to i32
  %579 = getelementptr inbounds i8, ptr %8, i64 41
  %580 = load i8, ptr %579, align 1, !tbaa !11
  %581 = sext i8 %580 to i32
  %582 = getelementptr inbounds i8, ptr %8, i64 42
  %583 = load i8, ptr %582, align 2, !tbaa !11
  %584 = sext i8 %583 to i32
  %585 = getelementptr inbounds i8, ptr %8, i64 43
  %586 = load i8, ptr %585, align 1, !tbaa !11
  %587 = sext i8 %586 to i32
  %588 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %578, i32 noundef %581, i32 noundef %584, i32 noundef %587) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %588) #6
  %589 = getelementptr inbounds i8, ptr %8, i64 44
  %590 = load i8, ptr %589, align 4, !tbaa !11
  %591 = sext i8 %590 to i32
  %592 = getelementptr inbounds i8, ptr %8, i64 45
  %593 = load i8, ptr %592, align 1, !tbaa !11
  %594 = sext i8 %593 to i32
  %595 = getelementptr inbounds i8, ptr %8, i64 46
  %596 = load i8, ptr %595, align 2, !tbaa !11
  %597 = sext i8 %596 to i32
  %598 = getelementptr inbounds i8, ptr %8, i64 47
  %599 = load i8, ptr %598, align 1, !tbaa !11
  %600 = sext i8 %599 to i32
  %601 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %591, i32 noundef %594, i32 noundef %597, i32 noundef %600) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %601) #6
  %602 = getelementptr inbounds i8, ptr %8, i64 48
  %603 = load i8, ptr %602, align 16, !tbaa !11
  %604 = sext i8 %603 to i32
  %605 = getelementptr inbounds i8, ptr %8, i64 49
  %606 = load i8, ptr %605, align 1, !tbaa !11
  %607 = sext i8 %606 to i32
  %608 = getelementptr inbounds i8, ptr %8, i64 50
  %609 = load i8, ptr %608, align 2, !tbaa !11
  %610 = sext i8 %609 to i32
  %611 = getelementptr inbounds i8, ptr %8, i64 51
  %612 = load i8, ptr %611, align 1, !tbaa !11
  %613 = sext i8 %612 to i32
  %614 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %604, i32 noundef %607, i32 noundef %610, i32 noundef %613) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %614) #6
  %615 = getelementptr inbounds i8, ptr %8, i64 52
  %616 = load i8, ptr %615, align 4, !tbaa !11
  %617 = sext i8 %616 to i32
  %618 = getelementptr inbounds i8, ptr %8, i64 53
  %619 = load i8, ptr %618, align 1, !tbaa !11
  %620 = sext i8 %619 to i32
  %621 = getelementptr inbounds i8, ptr %8, i64 54
  %622 = load i8, ptr %621, align 2, !tbaa !11
  %623 = sext i8 %622 to i32
  %624 = getelementptr inbounds i8, ptr %8, i64 55
  %625 = load i8, ptr %624, align 1, !tbaa !11
  %626 = sext i8 %625 to i32
  %627 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %617, i32 noundef %620, i32 noundef %623, i32 noundef %626) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %627) #6
  %628 = getelementptr inbounds i8, ptr %8, i64 56
  %629 = load i8, ptr %628, align 8, !tbaa !11
  %630 = sext i8 %629 to i32
  %631 = getelementptr inbounds i8, ptr %8, i64 57
  %632 = load i8, ptr %631, align 1, !tbaa !11
  %633 = sext i8 %632 to i32
  %634 = getelementptr inbounds i8, ptr %8, i64 58
  %635 = load i8, ptr %634, align 2, !tbaa !11
  %636 = sext i8 %635 to i32
  %637 = getelementptr inbounds i8, ptr %8, i64 59
  %638 = load i8, ptr %637, align 1, !tbaa !11
  %639 = sext i8 %638 to i32
  %640 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %630, i32 noundef %633, i32 noundef %636, i32 noundef %639) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %640) #6
  %641 = getelementptr inbounds i8, ptr %8, i64 60
  %642 = load i8, ptr %641, align 4, !tbaa !11
  %643 = sext i8 %642 to i32
  %644 = getelementptr inbounds i8, ptr %8, i64 61
  %645 = load i8, ptr %644, align 1, !tbaa !11
  %646 = sext i8 %645 to i32
  %647 = getelementptr inbounds i8, ptr %8, i64 62
  %648 = load i8, ptr %647, align 2, !tbaa !11
  %649 = sext i8 %648 to i32
  %650 = getelementptr inbounds i8, ptr %8, i64 63
  %651 = load i8, ptr %650, align 1, !tbaa !11
  %652 = sext i8 %651 to i32
  %653 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.108, i32 noundef %643, i32 noundef %646, i32 noundef %649, i32 noundef %652) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %653) #6
  %654 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.109, i32 noundef %1) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %654) #6
  %655 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.110, i32 noundef %1) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %655) #6
  br label %672

656:                                              ; preds = %236
  br i1 %12, label %672, label %657

657:                                              ; preds = %656
  call void @libxsmm_get_x86_gp_reg_name(i32 noundef %4, ptr noundef nonnull %11, i32 noundef 3) #6
  %658 = load i32, ptr %107, align 8, !tbaa !31
  %659 = icmp eq i32 %658, 0
  %.str.111..str.112 = select i1 %659, ptr @.str.111, ptr @.str.112
  %660 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull %.str.111..str.112, i32 noundef %5, ptr noundef nonnull %11) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %660) #6
  br label %672

661:                                              ; preds = %235
  br i1 %12, label %672, label %662

662:                                              ; preds = %661
  call void @libxsmm_get_x86_gp_reg_name(i32 noundef %4, ptr noundef nonnull %11, i32 noundef 3) #6
  %663 = load i32, ptr %107, align 8, !tbaa !31
  %664 = icmp eq i32 %663, 0
  %.str.113..str.114 = select i1 %664, ptr @.str.113, ptr @.str.114
  %665 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull %.str.113..str.114, i32 noundef %5, ptr noundef nonnull %11) #6
  call void @libxsmm_append_code_as_string(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %665) #6
  br label %672

666:                                              ; preds = %235
  %667 = icmp eq i32 %108, 0
  br i1 %667, label %668, label %670

668:                                              ; preds = %666
  %669 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.115) #6
  br label %672

670:                                              ; preds = %666
  %671 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 511, ptr noundef nonnull @.str.116) #6
  br label %672

672:                                              ; preds = %235, %668, %670, %662, %661, %451, %246, %656, %657
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %10) #6
  br label %673

673:                                              ; preds = %122, %234, %672, %15
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #6
  ret void
}

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @internal_x86_instructions_add_offset(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }
attributes #7 = { cold 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !7, i64 0}
!13 = !{!"libxsmm_tile_config", !7, i64 0, !14, i64 2, !7, i64 4, !14, i64 6, !7, i64 8, !14, i64 10, !7, i64 12, !14, i64 14, !7, i64 16, !14, i64 18, !7, i64 20, !14, i64 22, !7, i64 24, !14, i64 26, !7, i64 28, !14, i64 30, !7, i64 32}
!14 = !{!"short", !7, i64 0}
!15 = !{!13, !14, i64 2}
!16 = !{!13, !7, i64 4}
!17 = !{!13, !14, i64 6}
!18 = !{!13, !7, i64 8}
!19 = !{!13, !14, i64 10}
!20 = !{!13, !7, i64 12}
!21 = !{!13, !14, i64 14}
!22 = !{!13, !7, i64 16}
!23 = !{!13, !14, i64 18}
!24 = !{!13, !7, i64 20}
!25 = !{!13, !14, i64 22}
!26 = !{!13, !7, i64 24}
!27 = !{!13, !14, i64 26}
!28 = !{!13, !7, i64 28}
!29 = !{!13, !14, i64 30}
!30 = !{!13, !7, i64 32}
!31 = !{!32, !10, i64 16}
!32 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!33 = !{!32, !6, i64 0}
!34 = !{!32, !10, i64 12}
!35 = !{!32, !10, i64 8}
!36 = distinct !{!36, !37, !38}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!"llvm.loop.isvectorized", i32 1}


; Effective O3 passes: ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass