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

; 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_matequation_kernel_config_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [32 x i32], i32, i32, i32, i32, ptr, ptr, i32, i32, i32, [64 x i32], [64 x i32], %struct.libxsmm_mateltwise_kernel_config_struct, %struct.libxsmm_micro_kernel_config }
%struct.libxsmm_mateltwise_kernel_config_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8 }
%struct.libxsmm_micro_kernel_config = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], [4 x i32], i32, [2 x %struct.libxsmm_blocking_info_t], %struct.libxsmm_tile_config, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_blocking_info_t = type { i32, [4 x i32], i32, i32 }
%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 }
%struct.libxsmm_meqn_descriptor = type <{ i32, i32, i32, i8, i32 }>
%struct.libxsmm_matequation_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.libxsmm_mateltwise_gp_reg_mapping_struct, %struct.libxsmm_gp_reg_mapping_struct }
%struct.libxsmm_mateltwise_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [95 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64 = external hidden unnamed_addr constant [277 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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_meqn_setup_input_output_masks_aarch64(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9) #2 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %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 i8, align 1
  %29 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store i32 %4, ptr %15, align 4, !tbaa !9
  store i32 %5, ptr %16, align 4, !tbaa !9
  store ptr %6, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  store ptr %9, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  store i32 0, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  store i32 0, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %30 = load ptr, ptr %13, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %30, i32 0, i32 15
  %32 = load i32, ptr %31, align 4, !tbaa !11
  store i32 %32, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %33 = load ptr, ptr %13, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %33, i32 0, i32 17
  %35 = load i32, ptr %34, align 4, !tbaa !17
  store i32 %35, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %36 = load ptr, ptr %13, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %36, i32 0, i32 55
  %38 = load i32, ptr %37, align 4, !tbaa !18
  store i32 %38, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #4
  %39 = load ptr, ptr %11, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %39, i32 0, i32 6
  %41 = load i32, ptr %40, align 4, !tbaa !19
  %42 = icmp uge i32 %41, 2201
  br i1 %42, label %43, label %48

43:                                               ; preds = %10
  %44 = load ptr, ptr %11, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %44, i32 0, i32 6
  %46 = load i32, ptr %45, align 4, !tbaa !19
  %47 = icmp ule i32 %46, 2999
  br label %48

48:                                               ; preds = %43, %10
  %49 = phi i1 [ false, %10 ], [ %47, %43 ]
  %50 = zext i1 %49 to i32
  %51 = trunc i32 %50 to i8
  store i8 %51, ptr %28, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  %52 = load ptr, ptr %14, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %52, i32 0, i32 3
  %54 = load i8, ptr %53, align 1, !tbaa !22
  %55 = zext i8 %54 to i32
  %56 = ashr i32 %55, 4
  %57 = icmp eq i32 0, %56
  br i1 %57, label %58, label %220

58:                                               ; preds = %48
  %59 = load ptr, ptr %14, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %59, i32 0, i32 3
  %61 = load i8, ptr %60, align 1, !tbaa !22
  %62 = zext i8 %61 to i32
  %63 = and i32 %62, 15
  %64 = icmp eq i32 0, %63
  br i1 %64, label %65, label %66

65:                                               ; preds = %58
  br label %218

66:                                               ; preds = %58
  %67 = load ptr, ptr %14, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %67, i32 0, i32 3
  %69 = load i8, ptr %68, align 1, !tbaa !22
  %70 = zext i8 %69 to i32
  %71 = and i32 %70, 15
  %72 = icmp eq i32 1, %71
  br i1 %72, label %73, label %74

73:                                               ; preds = %66
  br label %216

74:                                               ; preds = %66
  %75 = load ptr, ptr %14, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %75, i32 0, i32 3
  %77 = load i8, ptr %76, align 1, !tbaa !22
  %78 = zext i8 %77 to i32
  %79 = and i32 %78, 15
  %80 = icmp eq i32 2, %79
  br i1 %80, label %81, label %82

81:                                               ; preds = %74
  br label %214

82:                                               ; preds = %74
  %83 = load ptr, ptr %14, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %83, i32 0, i32 3
  %85 = load i8, ptr %84, align 1, !tbaa !22
  %86 = zext i8 %85 to i32
  %87 = and i32 %86, 15
  %88 = icmp eq i32 3, %87
  br i1 %88, label %89, label %90

89:                                               ; preds = %82
  br label %212

90:                                               ; preds = %82
  %91 = load ptr, ptr %14, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %91, i32 0, i32 3
  %93 = load i8, ptr %92, align 1, !tbaa !22
  %94 = zext i8 %93 to i32
  %95 = and i32 %94, 15
  %96 = icmp eq i32 4, %95
  br i1 %96, label %97, label %98

97:                                               ; preds = %90
  br label %210

98:                                               ; preds = %90
  %99 = load ptr, ptr %14, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %99, i32 0, i32 3
  %101 = load i8, ptr %100, align 1, !tbaa !22
  %102 = zext i8 %101 to i32
  %103 = and i32 %102, 15
  %104 = icmp eq i32 5, %103
  br i1 %104, label %105, label %106

105:                                              ; preds = %98
  br label %208

106:                                              ; preds = %98
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %107, i32 0, i32 3
  %109 = load i8, ptr %108, align 1, !tbaa !22
  %110 = zext i8 %109 to i32
  %111 = and i32 %110, 15
  %112 = icmp eq i32 6, %111
  br i1 %112, label %113, label %114

113:                                              ; preds = %106
  br label %206

114:                                              ; preds = %106
  %115 = load ptr, ptr %14, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %115, i32 0, i32 3
  %117 = load i8, ptr %116, align 1, !tbaa !22
  %118 = zext i8 %117 to i32
  %119 = and i32 %118, 15
  %120 = icmp eq i32 7, %119
  br i1 %120, label %121, label %122

121:                                              ; preds = %114
  br label %204

122:                                              ; preds = %114
  %123 = load ptr, ptr %14, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %123, i32 0, i32 3
  %125 = load i8, ptr %124, align 1, !tbaa !22
  %126 = zext i8 %125 to i32
  %127 = and i32 %126, 15
  %128 = icmp eq i32 8, %127
  br i1 %128, label %129, label %130

129:                                              ; preds = %122
  br label %202

130:                                              ; preds = %122
  %131 = load ptr, ptr %14, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %131, i32 0, i32 3
  %133 = load i8, ptr %132, align 1, !tbaa !22
  %134 = zext i8 %133 to i32
  %135 = and i32 %134, 15
  %136 = icmp eq i32 9, %135
  br i1 %136, label %137, label %138

137:                                              ; preds = %130
  br label %200

138:                                              ; preds = %130
  %139 = load ptr, ptr %14, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %139, i32 0, i32 3
  %141 = load i8, ptr %140, align 1, !tbaa !22
  %142 = zext i8 %141 to i32
  %143 = and i32 %142, 15
  %144 = icmp eq i32 10, %143
  br i1 %144, label %145, label %146

145:                                              ; preds = %138
  br label %198

146:                                              ; preds = %138
  %147 = load ptr, ptr %14, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %147, i32 0, i32 3
  %149 = load i8, ptr %148, align 1, !tbaa !22
  %150 = zext i8 %149 to i32
  %151 = and i32 %150, 15
  %152 = icmp eq i32 11, %151
  br i1 %152, label %153, label %154

153:                                              ; preds = %146
  br label %196

154:                                              ; preds = %146
  %155 = load ptr, ptr %14, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %155, i32 0, i32 3
  %157 = load i8, ptr %156, align 1, !tbaa !22
  %158 = zext i8 %157 to i32
  %159 = and i32 %158, 15
  %160 = icmp eq i32 12, %159
  br i1 %160, label %161, label %162

161:                                              ; preds = %154
  br label %194

162:                                              ; preds = %154
  %163 = load ptr, ptr %14, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %163, i32 0, i32 3
  %165 = load i8, ptr %164, align 1, !tbaa !22
  %166 = zext i8 %165 to i32
  %167 = and i32 %166, 15
  %168 = icmp eq i32 13, %167
  br i1 %168, label %169, label %170

169:                                              ; preds = %162
  br label %192

170:                                              ; preds = %162
  %171 = load ptr, ptr %14, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %171, i32 0, i32 3
  %173 = load i8, ptr %172, align 1, !tbaa !22
  %174 = zext i8 %173 to i32
  %175 = and i32 %174, 15
  %176 = icmp eq i32 14, %175
  br i1 %176, label %177, label %178

177:                                              ; preds = %170
  br label %190

178:                                              ; preds = %170
  %179 = load ptr, ptr %14, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %179, i32 0, i32 3
  %181 = load i8, ptr %180, align 1, !tbaa !22
  %182 = zext i8 %181 to i32
  %183 = and i32 %182, 15
  %184 = icmp eq i32 15, %183
  br i1 %184, label %185, label %186

185:                                              ; preds = %178
  br label %188

186:                                              ; preds = %178
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

187:                                              ; No predecessors!
  br label %188

188:                                              ; preds = %187, %185
  %189 = phi i32 [ 15, %185 ], [ 0, %187 ]
  br label %190

190:                                              ; preds = %188, %177
  %191 = phi i32 [ 14, %177 ], [ %189, %188 ]
  br label %192

192:                                              ; preds = %190, %169
  %193 = phi i32 [ 12, %169 ], [ %191, %190 ]
  br label %194

194:                                              ; preds = %192, %161
  %195 = phi i32 [ 12, %161 ], [ %193, %192 ]
  br label %196

196:                                              ; preds = %194, %153
  %197 = phi i32 [ 10, %153 ], [ %195, %194 ]
  br label %198

198:                                              ; preds = %196, %145
  %199 = phi i32 [ 10, %145 ], [ %197, %196 ]
  br label %200

200:                                              ; preds = %198, %137
  %201 = phi i32 [ 8, %137 ], [ %199, %198 ]
  br label %202

202:                                              ; preds = %200, %129
  %203 = phi i32 [ 8, %129 ], [ %201, %200 ]
  br label %204

204:                                              ; preds = %202, %121
  %205 = phi i32 [ 6, %121 ], [ %203, %202 ]
  br label %206

206:                                              ; preds = %204, %113
  %207 = phi i32 [ 6, %113 ], [ %205, %204 ]
  br label %208

208:                                              ; preds = %206, %105
  %209 = phi i32 [ 5, %105 ], [ %207, %206 ]
  br label %210

210:                                              ; preds = %208, %97
  %211 = phi i32 [ 4, %97 ], [ %209, %208 ]
  br label %212

212:                                              ; preds = %210, %89
  %213 = phi i32 [ 3, %89 ], [ %211, %210 ]
  br label %214

214:                                              ; preds = %212, %81
  %215 = phi i32 [ 2, %81 ], [ %213, %212 ]
  br label %216

216:                                              ; preds = %214, %73
  %217 = phi i32 [ 1, %73 ], [ %215, %214 ]
  br label %218

218:                                              ; preds = %216, %65
  %219 = phi i32 [ 0, %65 ], [ %217, %216 ]
  br label %226

220:                                              ; preds = %48
  %221 = load ptr, ptr %14, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %221, i32 0, i32 3
  %223 = load i8, ptr %222, align 1, !tbaa !22
  %224 = zext i8 %223 to i32
  %225 = ashr i32 %224, 4
  br label %226

226:                                              ; preds = %220, %218
  %227 = phi i32 [ %219, %218 ], [ %225, %220 ]
  %228 = icmp eq i32 0, %227
  br i1 %228, label %229, label %230

229:                                              ; preds = %226
  br label %2585

230:                                              ; preds = %226
  %231 = load ptr, ptr %14, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %231, i32 0, i32 3
  %233 = load i8, ptr %232, align 1, !tbaa !22
  %234 = zext i8 %233 to i32
  %235 = ashr i32 %234, 4
  %236 = icmp eq i32 0, %235
  br i1 %236, label %237, label %399

237:                                              ; preds = %230
  %238 = load ptr, ptr %14, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %238, i32 0, i32 3
  %240 = load i8, ptr %239, align 1, !tbaa !22
  %241 = zext i8 %240 to i32
  %242 = and i32 %241, 15
  %243 = icmp eq i32 0, %242
  br i1 %243, label %244, label %245

244:                                              ; preds = %237
  br label %397

245:                                              ; preds = %237
  %246 = load ptr, ptr %14, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %246, i32 0, i32 3
  %248 = load i8, ptr %247, align 1, !tbaa !22
  %249 = zext i8 %248 to i32
  %250 = and i32 %249, 15
  %251 = icmp eq i32 1, %250
  br i1 %251, label %252, label %253

252:                                              ; preds = %245
  br label %395

253:                                              ; preds = %245
  %254 = load ptr, ptr %14, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %254, i32 0, i32 3
  %256 = load i8, ptr %255, align 1, !tbaa !22
  %257 = zext i8 %256 to i32
  %258 = and i32 %257, 15
  %259 = icmp eq i32 2, %258
  br i1 %259, label %260, label %261

260:                                              ; preds = %253
  br label %393

261:                                              ; preds = %253
  %262 = load ptr, ptr %14, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %262, i32 0, i32 3
  %264 = load i8, ptr %263, align 1, !tbaa !22
  %265 = zext i8 %264 to i32
  %266 = and i32 %265, 15
  %267 = icmp eq i32 3, %266
  br i1 %267, label %268, label %269

268:                                              ; preds = %261
  br label %391

269:                                              ; preds = %261
  %270 = load ptr, ptr %14, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %270, i32 0, i32 3
  %272 = load i8, ptr %271, align 1, !tbaa !22
  %273 = zext i8 %272 to i32
  %274 = and i32 %273, 15
  %275 = icmp eq i32 4, %274
  br i1 %275, label %276, label %277

276:                                              ; preds = %269
  br label %389

277:                                              ; preds = %269
  %278 = load ptr, ptr %14, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %278, i32 0, i32 3
  %280 = load i8, ptr %279, align 1, !tbaa !22
  %281 = zext i8 %280 to i32
  %282 = and i32 %281, 15
  %283 = icmp eq i32 5, %282
  br i1 %283, label %284, label %285

284:                                              ; preds = %277
  br label %387

285:                                              ; preds = %277
  %286 = load ptr, ptr %14, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %286, i32 0, i32 3
  %288 = load i8, ptr %287, align 1, !tbaa !22
  %289 = zext i8 %288 to i32
  %290 = and i32 %289, 15
  %291 = icmp eq i32 6, %290
  br i1 %291, label %292, label %293

292:                                              ; preds = %285
  br label %385

293:                                              ; preds = %285
  %294 = load ptr, ptr %14, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %294, i32 0, i32 3
  %296 = load i8, ptr %295, align 1, !tbaa !22
  %297 = zext i8 %296 to i32
  %298 = and i32 %297, 15
  %299 = icmp eq i32 7, %298
  br i1 %299, label %300, label %301

300:                                              ; preds = %293
  br label %383

301:                                              ; preds = %293
  %302 = load ptr, ptr %14, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %302, i32 0, i32 3
  %304 = load i8, ptr %303, align 1, !tbaa !22
  %305 = zext i8 %304 to i32
  %306 = and i32 %305, 15
  %307 = icmp eq i32 8, %306
  br i1 %307, label %308, label %309

308:                                              ; preds = %301
  br label %381

309:                                              ; preds = %301
  %310 = load ptr, ptr %14, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %310, i32 0, i32 3
  %312 = load i8, ptr %311, align 1, !tbaa !22
  %313 = zext i8 %312 to i32
  %314 = and i32 %313, 15
  %315 = icmp eq i32 9, %314
  br i1 %315, label %316, label %317

316:                                              ; preds = %309
  br label %379

317:                                              ; preds = %309
  %318 = load ptr, ptr %14, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %318, i32 0, i32 3
  %320 = load i8, ptr %319, align 1, !tbaa !22
  %321 = zext i8 %320 to i32
  %322 = and i32 %321, 15
  %323 = icmp eq i32 10, %322
  br i1 %323, label %324, label %325

324:                                              ; preds = %317
  br label %377

325:                                              ; preds = %317
  %326 = load ptr, ptr %14, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %326, i32 0, i32 3
  %328 = load i8, ptr %327, align 1, !tbaa !22
  %329 = zext i8 %328 to i32
  %330 = and i32 %329, 15
  %331 = icmp eq i32 11, %330
  br i1 %331, label %332, label %333

332:                                              ; preds = %325
  br label %375

333:                                              ; preds = %325
  %334 = load ptr, ptr %14, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %334, i32 0, i32 3
  %336 = load i8, ptr %335, align 1, !tbaa !22
  %337 = zext i8 %336 to i32
  %338 = and i32 %337, 15
  %339 = icmp eq i32 12, %338
  br i1 %339, label %340, label %341

340:                                              ; preds = %333
  br label %373

341:                                              ; preds = %333
  %342 = load ptr, ptr %14, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %342, i32 0, i32 3
  %344 = load i8, ptr %343, align 1, !tbaa !22
  %345 = zext i8 %344 to i32
  %346 = and i32 %345, 15
  %347 = icmp eq i32 13, %346
  br i1 %347, label %348, label %349

348:                                              ; preds = %341
  br label %371

349:                                              ; preds = %341
  %350 = load ptr, ptr %14, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %350, i32 0, i32 3
  %352 = load i8, ptr %351, align 1, !tbaa !22
  %353 = zext i8 %352 to i32
  %354 = and i32 %353, 15
  %355 = icmp eq i32 14, %354
  br i1 %355, label %356, label %357

356:                                              ; preds = %349
  br label %369

357:                                              ; preds = %349
  %358 = load ptr, ptr %14, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %358, i32 0, i32 3
  %360 = load i8, ptr %359, align 1, !tbaa !22
  %361 = zext i8 %360 to i32
  %362 = and i32 %361, 15
  %363 = icmp eq i32 15, %362
  br i1 %363, label %364, label %365

364:                                              ; preds = %357
  br label %367

365:                                              ; preds = %357
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

366:                                              ; No predecessors!
  br label %367

367:                                              ; preds = %366, %364
  %368 = phi i32 [ 15, %364 ], [ 0, %366 ]
  br label %369

369:                                              ; preds = %367, %356
  %370 = phi i32 [ 14, %356 ], [ %368, %367 ]
  br label %371

371:                                              ; preds = %369, %348
  %372 = phi i32 [ 12, %348 ], [ %370, %369 ]
  br label %373

373:                                              ; preds = %371, %340
  %374 = phi i32 [ 12, %340 ], [ %372, %371 ]
  br label %375

375:                                              ; preds = %373, %332
  %376 = phi i32 [ 10, %332 ], [ %374, %373 ]
  br label %377

377:                                              ; preds = %375, %324
  %378 = phi i32 [ 10, %324 ], [ %376, %375 ]
  br label %379

379:                                              ; preds = %377, %316
  %380 = phi i32 [ 8, %316 ], [ %378, %377 ]
  br label %381

381:                                              ; preds = %379, %308
  %382 = phi i32 [ 8, %308 ], [ %380, %379 ]
  br label %383

383:                                              ; preds = %381, %300
  %384 = phi i32 [ 6, %300 ], [ %382, %381 ]
  br label %385

385:                                              ; preds = %383, %292
  %386 = phi i32 [ 6, %292 ], [ %384, %383 ]
  br label %387

387:                                              ; preds = %385, %284
  %388 = phi i32 [ 5, %284 ], [ %386, %385 ]
  br label %389

389:                                              ; preds = %387, %276
  %390 = phi i32 [ 4, %276 ], [ %388, %387 ]
  br label %391

391:                                              ; preds = %389, %268
  %392 = phi i32 [ 3, %268 ], [ %390, %389 ]
  br label %393

393:                                              ; preds = %391, %260
  %394 = phi i32 [ 2, %260 ], [ %392, %391 ]
  br label %395

395:                                              ; preds = %393, %252
  %396 = phi i32 [ 1, %252 ], [ %394, %393 ]
  br label %397

397:                                              ; preds = %395, %244
  %398 = phi i32 [ 0, %244 ], [ %396, %395 ]
  br label %405

399:                                              ; preds = %230
  %400 = load ptr, ptr %14, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %400, i32 0, i32 3
  %402 = load i8, ptr %401, align 1, !tbaa !22
  %403 = zext i8 %402 to i32
  %404 = ashr i32 %403, 4
  br label %405

405:                                              ; preds = %399, %397
  %406 = phi i32 [ %398, %397 ], [ %404, %399 ]
  %407 = icmp eq i32 1, %406
  br i1 %407, label %408, label %409

408:                                              ; preds = %405
  br label %2583

409:                                              ; preds = %405
  %410 = load ptr, ptr %14, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %410, i32 0, i32 3
  %412 = load i8, ptr %411, align 1, !tbaa !22
  %413 = zext i8 %412 to i32
  %414 = ashr i32 %413, 4
  %415 = icmp eq i32 0, %414
  br i1 %415, label %416, label %578

416:                                              ; preds = %409
  %417 = load ptr, ptr %14, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %417, i32 0, i32 3
  %419 = load i8, ptr %418, align 1, !tbaa !22
  %420 = zext i8 %419 to i32
  %421 = and i32 %420, 15
  %422 = icmp eq i32 0, %421
  br i1 %422, label %423, label %424

423:                                              ; preds = %416
  br label %576

424:                                              ; preds = %416
  %425 = load ptr, ptr %14, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %425, i32 0, i32 3
  %427 = load i8, ptr %426, align 1, !tbaa !22
  %428 = zext i8 %427 to i32
  %429 = and i32 %428, 15
  %430 = icmp eq i32 1, %429
  br i1 %430, label %431, label %432

431:                                              ; preds = %424
  br label %574

432:                                              ; preds = %424
  %433 = load ptr, ptr %14, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %433, i32 0, i32 3
  %435 = load i8, ptr %434, align 1, !tbaa !22
  %436 = zext i8 %435 to i32
  %437 = and i32 %436, 15
  %438 = icmp eq i32 2, %437
  br i1 %438, label %439, label %440

439:                                              ; preds = %432
  br label %572

440:                                              ; preds = %432
  %441 = load ptr, ptr %14, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %441, i32 0, i32 3
  %443 = load i8, ptr %442, align 1, !tbaa !22
  %444 = zext i8 %443 to i32
  %445 = and i32 %444, 15
  %446 = icmp eq i32 3, %445
  br i1 %446, label %447, label %448

447:                                              ; preds = %440
  br label %570

448:                                              ; preds = %440
  %449 = load ptr, ptr %14, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %449, i32 0, i32 3
  %451 = load i8, ptr %450, align 1, !tbaa !22
  %452 = zext i8 %451 to i32
  %453 = and i32 %452, 15
  %454 = icmp eq i32 4, %453
  br i1 %454, label %455, label %456

455:                                              ; preds = %448
  br label %568

456:                                              ; preds = %448
  %457 = load ptr, ptr %14, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %457, i32 0, i32 3
  %459 = load i8, ptr %458, align 1, !tbaa !22
  %460 = zext i8 %459 to i32
  %461 = and i32 %460, 15
  %462 = icmp eq i32 5, %461
  br i1 %462, label %463, label %464

463:                                              ; preds = %456
  br label %566

464:                                              ; preds = %456
  %465 = load ptr, ptr %14, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %465, i32 0, i32 3
  %467 = load i8, ptr %466, align 1, !tbaa !22
  %468 = zext i8 %467 to i32
  %469 = and i32 %468, 15
  %470 = icmp eq i32 6, %469
  br i1 %470, label %471, label %472

471:                                              ; preds = %464
  br label %564

472:                                              ; preds = %464
  %473 = load ptr, ptr %14, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %473, i32 0, i32 3
  %475 = load i8, ptr %474, align 1, !tbaa !22
  %476 = zext i8 %475 to i32
  %477 = and i32 %476, 15
  %478 = icmp eq i32 7, %477
  br i1 %478, label %479, label %480

479:                                              ; preds = %472
  br label %562

480:                                              ; preds = %472
  %481 = load ptr, ptr %14, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %481, i32 0, i32 3
  %483 = load i8, ptr %482, align 1, !tbaa !22
  %484 = zext i8 %483 to i32
  %485 = and i32 %484, 15
  %486 = icmp eq i32 8, %485
  br i1 %486, label %487, label %488

487:                                              ; preds = %480
  br label %560

488:                                              ; preds = %480
  %489 = load ptr, ptr %14, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %489, i32 0, i32 3
  %491 = load i8, ptr %490, align 1, !tbaa !22
  %492 = zext i8 %491 to i32
  %493 = and i32 %492, 15
  %494 = icmp eq i32 9, %493
  br i1 %494, label %495, label %496

495:                                              ; preds = %488
  br label %558

496:                                              ; preds = %488
  %497 = load ptr, ptr %14, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %497, i32 0, i32 3
  %499 = load i8, ptr %498, align 1, !tbaa !22
  %500 = zext i8 %499 to i32
  %501 = and i32 %500, 15
  %502 = icmp eq i32 10, %501
  br i1 %502, label %503, label %504

503:                                              ; preds = %496
  br label %556

504:                                              ; preds = %496
  %505 = load ptr, ptr %14, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %505, i32 0, i32 3
  %507 = load i8, ptr %506, align 1, !tbaa !22
  %508 = zext i8 %507 to i32
  %509 = and i32 %508, 15
  %510 = icmp eq i32 11, %509
  br i1 %510, label %511, label %512

511:                                              ; preds = %504
  br label %554

512:                                              ; preds = %504
  %513 = load ptr, ptr %14, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %513, i32 0, i32 3
  %515 = load i8, ptr %514, align 1, !tbaa !22
  %516 = zext i8 %515 to i32
  %517 = and i32 %516, 15
  %518 = icmp eq i32 12, %517
  br i1 %518, label %519, label %520

519:                                              ; preds = %512
  br label %552

520:                                              ; preds = %512
  %521 = load ptr, ptr %14, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %521, i32 0, i32 3
  %523 = load i8, ptr %522, align 1, !tbaa !22
  %524 = zext i8 %523 to i32
  %525 = and i32 %524, 15
  %526 = icmp eq i32 13, %525
  br i1 %526, label %527, label %528

527:                                              ; preds = %520
  br label %550

528:                                              ; preds = %520
  %529 = load ptr, ptr %14, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %529, i32 0, i32 3
  %531 = load i8, ptr %530, align 1, !tbaa !22
  %532 = zext i8 %531 to i32
  %533 = and i32 %532, 15
  %534 = icmp eq i32 14, %533
  br i1 %534, label %535, label %536

535:                                              ; preds = %528
  br label %548

536:                                              ; preds = %528
  %537 = load ptr, ptr %14, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %537, i32 0, i32 3
  %539 = load i8, ptr %538, align 1, !tbaa !22
  %540 = zext i8 %539 to i32
  %541 = and i32 %540, 15
  %542 = icmp eq i32 15, %541
  br i1 %542, label %543, label %544

543:                                              ; preds = %536
  br label %546

544:                                              ; preds = %536
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

545:                                              ; No predecessors!
  br label %546

546:                                              ; preds = %545, %543
  %547 = phi i32 [ 15, %543 ], [ 0, %545 ]
  br label %548

548:                                              ; preds = %546, %535
  %549 = phi i32 [ 14, %535 ], [ %547, %546 ]
  br label %550

550:                                              ; preds = %548, %527
  %551 = phi i32 [ 12, %527 ], [ %549, %548 ]
  br label %552

552:                                              ; preds = %550, %519
  %553 = phi i32 [ 12, %519 ], [ %551, %550 ]
  br label %554

554:                                              ; preds = %552, %511
  %555 = phi i32 [ 10, %511 ], [ %553, %552 ]
  br label %556

556:                                              ; preds = %554, %503
  %557 = phi i32 [ 10, %503 ], [ %555, %554 ]
  br label %558

558:                                              ; preds = %556, %495
  %559 = phi i32 [ 8, %495 ], [ %557, %556 ]
  br label %560

560:                                              ; preds = %558, %487
  %561 = phi i32 [ 8, %487 ], [ %559, %558 ]
  br label %562

562:                                              ; preds = %560, %479
  %563 = phi i32 [ 6, %479 ], [ %561, %560 ]
  br label %564

564:                                              ; preds = %562, %471
  %565 = phi i32 [ 6, %471 ], [ %563, %562 ]
  br label %566

566:                                              ; preds = %564, %463
  %567 = phi i32 [ 5, %463 ], [ %565, %564 ]
  br label %568

568:                                              ; preds = %566, %455
  %569 = phi i32 [ 4, %455 ], [ %567, %566 ]
  br label %570

570:                                              ; preds = %568, %447
  %571 = phi i32 [ 3, %447 ], [ %569, %568 ]
  br label %572

572:                                              ; preds = %570, %439
  %573 = phi i32 [ 2, %439 ], [ %571, %570 ]
  br label %574

574:                                              ; preds = %572, %431
  %575 = phi i32 [ 1, %431 ], [ %573, %572 ]
  br label %576

576:                                              ; preds = %574, %423
  %577 = phi i32 [ 0, %423 ], [ %575, %574 ]
  br label %584

578:                                              ; preds = %409
  %579 = load ptr, ptr %14, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %579, i32 0, i32 3
  %581 = load i8, ptr %580, align 1, !tbaa !22
  %582 = zext i8 %581 to i32
  %583 = ashr i32 %582, 4
  br label %584

584:                                              ; preds = %578, %576
  %585 = phi i32 [ %577, %576 ], [ %583, %578 ]
  %586 = icmp eq i32 2, %585
  br i1 %586, label %587, label %588

587:                                              ; preds = %584
  br label %2581

588:                                              ; preds = %584
  %589 = load ptr, ptr %14, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %589, i32 0, i32 3
  %591 = load i8, ptr %590, align 1, !tbaa !22
  %592 = zext i8 %591 to i32
  %593 = ashr i32 %592, 4
  %594 = icmp eq i32 0, %593
  br i1 %594, label %595, label %757

595:                                              ; preds = %588
  %596 = load ptr, ptr %14, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %596, i32 0, i32 3
  %598 = load i8, ptr %597, align 1, !tbaa !22
  %599 = zext i8 %598 to i32
  %600 = and i32 %599, 15
  %601 = icmp eq i32 0, %600
  br i1 %601, label %602, label %603

602:                                              ; preds = %595
  br label %755

603:                                              ; preds = %595
  %604 = load ptr, ptr %14, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %604, i32 0, i32 3
  %606 = load i8, ptr %605, align 1, !tbaa !22
  %607 = zext i8 %606 to i32
  %608 = and i32 %607, 15
  %609 = icmp eq i32 1, %608
  br i1 %609, label %610, label %611

610:                                              ; preds = %603
  br label %753

611:                                              ; preds = %603
  %612 = load ptr, ptr %14, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %612, i32 0, i32 3
  %614 = load i8, ptr %613, align 1, !tbaa !22
  %615 = zext i8 %614 to i32
  %616 = and i32 %615, 15
  %617 = icmp eq i32 2, %616
  br i1 %617, label %618, label %619

618:                                              ; preds = %611
  br label %751

619:                                              ; preds = %611
  %620 = load ptr, ptr %14, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %620, i32 0, i32 3
  %622 = load i8, ptr %621, align 1, !tbaa !22
  %623 = zext i8 %622 to i32
  %624 = and i32 %623, 15
  %625 = icmp eq i32 3, %624
  br i1 %625, label %626, label %627

626:                                              ; preds = %619
  br label %749

627:                                              ; preds = %619
  %628 = load ptr, ptr %14, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %628, i32 0, i32 3
  %630 = load i8, ptr %629, align 1, !tbaa !22
  %631 = zext i8 %630 to i32
  %632 = and i32 %631, 15
  %633 = icmp eq i32 4, %632
  br i1 %633, label %634, label %635

634:                                              ; preds = %627
  br label %747

635:                                              ; preds = %627
  %636 = load ptr, ptr %14, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %636, i32 0, i32 3
  %638 = load i8, ptr %637, align 1, !tbaa !22
  %639 = zext i8 %638 to i32
  %640 = and i32 %639, 15
  %641 = icmp eq i32 5, %640
  br i1 %641, label %642, label %643

642:                                              ; preds = %635
  br label %745

643:                                              ; preds = %635
  %644 = load ptr, ptr %14, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %644, i32 0, i32 3
  %646 = load i8, ptr %645, align 1, !tbaa !22
  %647 = zext i8 %646 to i32
  %648 = and i32 %647, 15
  %649 = icmp eq i32 6, %648
  br i1 %649, label %650, label %651

650:                                              ; preds = %643
  br label %743

651:                                              ; preds = %643
  %652 = load ptr, ptr %14, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %652, i32 0, i32 3
  %654 = load i8, ptr %653, align 1, !tbaa !22
  %655 = zext i8 %654 to i32
  %656 = and i32 %655, 15
  %657 = icmp eq i32 7, %656
  br i1 %657, label %658, label %659

658:                                              ; preds = %651
  br label %741

659:                                              ; preds = %651
  %660 = load ptr, ptr %14, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %660, i32 0, i32 3
  %662 = load i8, ptr %661, align 1, !tbaa !22
  %663 = zext i8 %662 to i32
  %664 = and i32 %663, 15
  %665 = icmp eq i32 8, %664
  br i1 %665, label %666, label %667

666:                                              ; preds = %659
  br label %739

667:                                              ; preds = %659
  %668 = load ptr, ptr %14, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %668, i32 0, i32 3
  %670 = load i8, ptr %669, align 1, !tbaa !22
  %671 = zext i8 %670 to i32
  %672 = and i32 %671, 15
  %673 = icmp eq i32 9, %672
  br i1 %673, label %674, label %675

674:                                              ; preds = %667
  br label %737

675:                                              ; preds = %667
  %676 = load ptr, ptr %14, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %676, i32 0, i32 3
  %678 = load i8, ptr %677, align 1, !tbaa !22
  %679 = zext i8 %678 to i32
  %680 = and i32 %679, 15
  %681 = icmp eq i32 10, %680
  br i1 %681, label %682, label %683

682:                                              ; preds = %675
  br label %735

683:                                              ; preds = %675
  %684 = load ptr, ptr %14, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %684, i32 0, i32 3
  %686 = load i8, ptr %685, align 1, !tbaa !22
  %687 = zext i8 %686 to i32
  %688 = and i32 %687, 15
  %689 = icmp eq i32 11, %688
  br i1 %689, label %690, label %691

690:                                              ; preds = %683
  br label %733

691:                                              ; preds = %683
  %692 = load ptr, ptr %14, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %692, i32 0, i32 3
  %694 = load i8, ptr %693, align 1, !tbaa !22
  %695 = zext i8 %694 to i32
  %696 = and i32 %695, 15
  %697 = icmp eq i32 12, %696
  br i1 %697, label %698, label %699

698:                                              ; preds = %691
  br label %731

699:                                              ; preds = %691
  %700 = load ptr, ptr %14, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %700, i32 0, i32 3
  %702 = load i8, ptr %701, align 1, !tbaa !22
  %703 = zext i8 %702 to i32
  %704 = and i32 %703, 15
  %705 = icmp eq i32 13, %704
  br i1 %705, label %706, label %707

706:                                              ; preds = %699
  br label %729

707:                                              ; preds = %699
  %708 = load ptr, ptr %14, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %708, i32 0, i32 3
  %710 = load i8, ptr %709, align 1, !tbaa !22
  %711 = zext i8 %710 to i32
  %712 = and i32 %711, 15
  %713 = icmp eq i32 14, %712
  br i1 %713, label %714, label %715

714:                                              ; preds = %707
  br label %727

715:                                              ; preds = %707
  %716 = load ptr, ptr %14, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %716, i32 0, i32 3
  %718 = load i8, ptr %717, align 1, !tbaa !22
  %719 = zext i8 %718 to i32
  %720 = and i32 %719, 15
  %721 = icmp eq i32 15, %720
  br i1 %721, label %722, label %723

722:                                              ; preds = %715
  br label %725

723:                                              ; preds = %715
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

724:                                              ; No predecessors!
  br label %725

725:                                              ; preds = %724, %722
  %726 = phi i32 [ 15, %722 ], [ 0, %724 ]
  br label %727

727:                                              ; preds = %725, %714
  %728 = phi i32 [ 14, %714 ], [ %726, %725 ]
  br label %729

729:                                              ; preds = %727, %706
  %730 = phi i32 [ 12, %706 ], [ %728, %727 ]
  br label %731

731:                                              ; preds = %729, %698
  %732 = phi i32 [ 12, %698 ], [ %730, %729 ]
  br label %733

733:                                              ; preds = %731, %690
  %734 = phi i32 [ 10, %690 ], [ %732, %731 ]
  br label %735

735:                                              ; preds = %733, %682
  %736 = phi i32 [ 10, %682 ], [ %734, %733 ]
  br label %737

737:                                              ; preds = %735, %674
  %738 = phi i32 [ 8, %674 ], [ %736, %735 ]
  br label %739

739:                                              ; preds = %737, %666
  %740 = phi i32 [ 8, %666 ], [ %738, %737 ]
  br label %741

741:                                              ; preds = %739, %658
  %742 = phi i32 [ 6, %658 ], [ %740, %739 ]
  br label %743

743:                                              ; preds = %741, %650
  %744 = phi i32 [ 6, %650 ], [ %742, %741 ]
  br label %745

745:                                              ; preds = %743, %642
  %746 = phi i32 [ 5, %642 ], [ %744, %743 ]
  br label %747

747:                                              ; preds = %745, %634
  %748 = phi i32 [ 4, %634 ], [ %746, %745 ]
  br label %749

749:                                              ; preds = %747, %626
  %750 = phi i32 [ 3, %626 ], [ %748, %747 ]
  br label %751

751:                                              ; preds = %749, %618
  %752 = phi i32 [ 2, %618 ], [ %750, %749 ]
  br label %753

753:                                              ; preds = %751, %610
  %754 = phi i32 [ 1, %610 ], [ %752, %751 ]
  br label %755

755:                                              ; preds = %753, %602
  %756 = phi i32 [ 0, %602 ], [ %754, %753 ]
  br label %763

757:                                              ; preds = %588
  %758 = load ptr, ptr %14, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %758, i32 0, i32 3
  %760 = load i8, ptr %759, align 1, !tbaa !22
  %761 = zext i8 %760 to i32
  %762 = ashr i32 %761, 4
  br label %763

763:                                              ; preds = %757, %755
  %764 = phi i32 [ %756, %755 ], [ %762, %757 ]
  %765 = icmp eq i32 3, %764
  br i1 %765, label %766, label %767

766:                                              ; preds = %763
  br label %2579

767:                                              ; preds = %763
  %768 = load ptr, ptr %14, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %768, i32 0, i32 3
  %770 = load i8, ptr %769, align 1, !tbaa !22
  %771 = zext i8 %770 to i32
  %772 = ashr i32 %771, 4
  %773 = icmp eq i32 0, %772
  br i1 %773, label %774, label %936

774:                                              ; preds = %767
  %775 = load ptr, ptr %14, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %775, i32 0, i32 3
  %777 = load i8, ptr %776, align 1, !tbaa !22
  %778 = zext i8 %777 to i32
  %779 = and i32 %778, 15
  %780 = icmp eq i32 0, %779
  br i1 %780, label %781, label %782

781:                                              ; preds = %774
  br label %934

782:                                              ; preds = %774
  %783 = load ptr, ptr %14, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %783, i32 0, i32 3
  %785 = load i8, ptr %784, align 1, !tbaa !22
  %786 = zext i8 %785 to i32
  %787 = and i32 %786, 15
  %788 = icmp eq i32 1, %787
  br i1 %788, label %789, label %790

789:                                              ; preds = %782
  br label %932

790:                                              ; preds = %782
  %791 = load ptr, ptr %14, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %791, i32 0, i32 3
  %793 = load i8, ptr %792, align 1, !tbaa !22
  %794 = zext i8 %793 to i32
  %795 = and i32 %794, 15
  %796 = icmp eq i32 2, %795
  br i1 %796, label %797, label %798

797:                                              ; preds = %790
  br label %930

798:                                              ; preds = %790
  %799 = load ptr, ptr %14, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %799, i32 0, i32 3
  %801 = load i8, ptr %800, align 1, !tbaa !22
  %802 = zext i8 %801 to i32
  %803 = and i32 %802, 15
  %804 = icmp eq i32 3, %803
  br i1 %804, label %805, label %806

805:                                              ; preds = %798
  br label %928

806:                                              ; preds = %798
  %807 = load ptr, ptr %14, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %807, i32 0, i32 3
  %809 = load i8, ptr %808, align 1, !tbaa !22
  %810 = zext i8 %809 to i32
  %811 = and i32 %810, 15
  %812 = icmp eq i32 4, %811
  br i1 %812, label %813, label %814

813:                                              ; preds = %806
  br label %926

814:                                              ; preds = %806
  %815 = load ptr, ptr %14, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %815, i32 0, i32 3
  %817 = load i8, ptr %816, align 1, !tbaa !22
  %818 = zext i8 %817 to i32
  %819 = and i32 %818, 15
  %820 = icmp eq i32 5, %819
  br i1 %820, label %821, label %822

821:                                              ; preds = %814
  br label %924

822:                                              ; preds = %814
  %823 = load ptr, ptr %14, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %823, i32 0, i32 3
  %825 = load i8, ptr %824, align 1, !tbaa !22
  %826 = zext i8 %825 to i32
  %827 = and i32 %826, 15
  %828 = icmp eq i32 6, %827
  br i1 %828, label %829, label %830

829:                                              ; preds = %822
  br label %922

830:                                              ; preds = %822
  %831 = load ptr, ptr %14, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %831, i32 0, i32 3
  %833 = load i8, ptr %832, align 1, !tbaa !22
  %834 = zext i8 %833 to i32
  %835 = and i32 %834, 15
  %836 = icmp eq i32 7, %835
  br i1 %836, label %837, label %838

837:                                              ; preds = %830
  br label %920

838:                                              ; preds = %830
  %839 = load ptr, ptr %14, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %839, i32 0, i32 3
  %841 = load i8, ptr %840, align 1, !tbaa !22
  %842 = zext i8 %841 to i32
  %843 = and i32 %842, 15
  %844 = icmp eq i32 8, %843
  br i1 %844, label %845, label %846

845:                                              ; preds = %838
  br label %918

846:                                              ; preds = %838
  %847 = load ptr, ptr %14, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %847, i32 0, i32 3
  %849 = load i8, ptr %848, align 1, !tbaa !22
  %850 = zext i8 %849 to i32
  %851 = and i32 %850, 15
  %852 = icmp eq i32 9, %851
  br i1 %852, label %853, label %854

853:                                              ; preds = %846
  br label %916

854:                                              ; preds = %846
  %855 = load ptr, ptr %14, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %855, i32 0, i32 3
  %857 = load i8, ptr %856, align 1, !tbaa !22
  %858 = zext i8 %857 to i32
  %859 = and i32 %858, 15
  %860 = icmp eq i32 10, %859
  br i1 %860, label %861, label %862

861:                                              ; preds = %854
  br label %914

862:                                              ; preds = %854
  %863 = load ptr, ptr %14, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %863, i32 0, i32 3
  %865 = load i8, ptr %864, align 1, !tbaa !22
  %866 = zext i8 %865 to i32
  %867 = and i32 %866, 15
  %868 = icmp eq i32 11, %867
  br i1 %868, label %869, label %870

869:                                              ; preds = %862
  br label %912

870:                                              ; preds = %862
  %871 = load ptr, ptr %14, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %871, i32 0, i32 3
  %873 = load i8, ptr %872, align 1, !tbaa !22
  %874 = zext i8 %873 to i32
  %875 = and i32 %874, 15
  %876 = icmp eq i32 12, %875
  br i1 %876, label %877, label %878

877:                                              ; preds = %870
  br label %910

878:                                              ; preds = %870
  %879 = load ptr, ptr %14, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %879, i32 0, i32 3
  %881 = load i8, ptr %880, align 1, !tbaa !22
  %882 = zext i8 %881 to i32
  %883 = and i32 %882, 15
  %884 = icmp eq i32 13, %883
  br i1 %884, label %885, label %886

885:                                              ; preds = %878
  br label %908

886:                                              ; preds = %878
  %887 = load ptr, ptr %14, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %887, i32 0, i32 3
  %889 = load i8, ptr %888, align 1, !tbaa !22
  %890 = zext i8 %889 to i32
  %891 = and i32 %890, 15
  %892 = icmp eq i32 14, %891
  br i1 %892, label %893, label %894

893:                                              ; preds = %886
  br label %906

894:                                              ; preds = %886
  %895 = load ptr, ptr %14, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %895, i32 0, i32 3
  %897 = load i8, ptr %896, align 1, !tbaa !22
  %898 = zext i8 %897 to i32
  %899 = and i32 %898, 15
  %900 = icmp eq i32 15, %899
  br i1 %900, label %901, label %902

901:                                              ; preds = %894
  br label %904

902:                                              ; preds = %894
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

903:                                              ; No predecessors!
  br label %904

904:                                              ; preds = %903, %901
  %905 = phi i32 [ 15, %901 ], [ 0, %903 ]
  br label %906

906:                                              ; preds = %904, %893
  %907 = phi i32 [ 14, %893 ], [ %905, %904 ]
  br label %908

908:                                              ; preds = %906, %885
  %909 = phi i32 [ 12, %885 ], [ %907, %906 ]
  br label %910

910:                                              ; preds = %908, %877
  %911 = phi i32 [ 12, %877 ], [ %909, %908 ]
  br label %912

912:                                              ; preds = %910, %869
  %913 = phi i32 [ 10, %869 ], [ %911, %910 ]
  br label %914

914:                                              ; preds = %912, %861
  %915 = phi i32 [ 10, %861 ], [ %913, %912 ]
  br label %916

916:                                              ; preds = %914, %853
  %917 = phi i32 [ 8, %853 ], [ %915, %914 ]
  br label %918

918:                                              ; preds = %916, %845
  %919 = phi i32 [ 8, %845 ], [ %917, %916 ]
  br label %920

920:                                              ; preds = %918, %837
  %921 = phi i32 [ 6, %837 ], [ %919, %918 ]
  br label %922

922:                                              ; preds = %920, %829
  %923 = phi i32 [ 6, %829 ], [ %921, %920 ]
  br label %924

924:                                              ; preds = %922, %821
  %925 = phi i32 [ 5, %821 ], [ %923, %922 ]
  br label %926

926:                                              ; preds = %924, %813
  %927 = phi i32 [ 4, %813 ], [ %925, %924 ]
  br label %928

928:                                              ; preds = %926, %805
  %929 = phi i32 [ 3, %805 ], [ %927, %926 ]
  br label %930

930:                                              ; preds = %928, %797
  %931 = phi i32 [ 2, %797 ], [ %929, %928 ]
  br label %932

932:                                              ; preds = %930, %789
  %933 = phi i32 [ 1, %789 ], [ %931, %930 ]
  br label %934

934:                                              ; preds = %932, %781
  %935 = phi i32 [ 0, %781 ], [ %933, %932 ]
  br label %942

936:                                              ; preds = %767
  %937 = load ptr, ptr %14, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %937, i32 0, i32 3
  %939 = load i8, ptr %938, align 1, !tbaa !22
  %940 = zext i8 %939 to i32
  %941 = ashr i32 %940, 4
  br label %942

942:                                              ; preds = %936, %934
  %943 = phi i32 [ %935, %934 ], [ %941, %936 ]
  %944 = icmp eq i32 4, %943
  br i1 %944, label %945, label %946

945:                                              ; preds = %942
  br label %2577

946:                                              ; preds = %942
  %947 = load ptr, ptr %14, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %947, i32 0, i32 3
  %949 = load i8, ptr %948, align 1, !tbaa !22
  %950 = zext i8 %949 to i32
  %951 = ashr i32 %950, 4
  %952 = icmp eq i32 0, %951
  br i1 %952, label %953, label %1115

953:                                              ; preds = %946
  %954 = load ptr, ptr %14, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %954, i32 0, i32 3
  %956 = load i8, ptr %955, align 1, !tbaa !22
  %957 = zext i8 %956 to i32
  %958 = and i32 %957, 15
  %959 = icmp eq i32 0, %958
  br i1 %959, label %960, label %961

960:                                              ; preds = %953
  br label %1113

961:                                              ; preds = %953
  %962 = load ptr, ptr %14, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %962, i32 0, i32 3
  %964 = load i8, ptr %963, align 1, !tbaa !22
  %965 = zext i8 %964 to i32
  %966 = and i32 %965, 15
  %967 = icmp eq i32 1, %966
  br i1 %967, label %968, label %969

968:                                              ; preds = %961
  br label %1111

969:                                              ; preds = %961
  %970 = load ptr, ptr %14, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %970, i32 0, i32 3
  %972 = load i8, ptr %971, align 1, !tbaa !22
  %973 = zext i8 %972 to i32
  %974 = and i32 %973, 15
  %975 = icmp eq i32 2, %974
  br i1 %975, label %976, label %977

976:                                              ; preds = %969
  br label %1109

977:                                              ; preds = %969
  %978 = load ptr, ptr %14, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %978, i32 0, i32 3
  %980 = load i8, ptr %979, align 1, !tbaa !22
  %981 = zext i8 %980 to i32
  %982 = and i32 %981, 15
  %983 = icmp eq i32 3, %982
  br i1 %983, label %984, label %985

984:                                              ; preds = %977
  br label %1107

985:                                              ; preds = %977
  %986 = load ptr, ptr %14, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %986, i32 0, i32 3
  %988 = load i8, ptr %987, align 1, !tbaa !22
  %989 = zext i8 %988 to i32
  %990 = and i32 %989, 15
  %991 = icmp eq i32 4, %990
  br i1 %991, label %992, label %993

992:                                              ; preds = %985
  br label %1105

993:                                              ; preds = %985
  %994 = load ptr, ptr %14, align 8, !tbaa !5
  %995 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %994, i32 0, i32 3
  %996 = load i8, ptr %995, align 1, !tbaa !22
  %997 = zext i8 %996 to i32
  %998 = and i32 %997, 15
  %999 = icmp eq i32 5, %998
  br i1 %999, label %1000, label %1001

1000:                                             ; preds = %993
  br label %1103

1001:                                             ; preds = %993
  %1002 = load ptr, ptr %14, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1002, i32 0, i32 3
  %1004 = load i8, ptr %1003, align 1, !tbaa !22
  %1005 = zext i8 %1004 to i32
  %1006 = and i32 %1005, 15
  %1007 = icmp eq i32 6, %1006
  br i1 %1007, label %1008, label %1009

1008:                                             ; preds = %1001
  br label %1101

1009:                                             ; preds = %1001
  %1010 = load ptr, ptr %14, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1010, i32 0, i32 3
  %1012 = load i8, ptr %1011, align 1, !tbaa !22
  %1013 = zext i8 %1012 to i32
  %1014 = and i32 %1013, 15
  %1015 = icmp eq i32 7, %1014
  br i1 %1015, label %1016, label %1017

1016:                                             ; preds = %1009
  br label %1099

1017:                                             ; preds = %1009
  %1018 = load ptr, ptr %14, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1018, i32 0, i32 3
  %1020 = load i8, ptr %1019, align 1, !tbaa !22
  %1021 = zext i8 %1020 to i32
  %1022 = and i32 %1021, 15
  %1023 = icmp eq i32 8, %1022
  br i1 %1023, label %1024, label %1025

1024:                                             ; preds = %1017
  br label %1097

1025:                                             ; preds = %1017
  %1026 = load ptr, ptr %14, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1026, i32 0, i32 3
  %1028 = load i8, ptr %1027, align 1, !tbaa !22
  %1029 = zext i8 %1028 to i32
  %1030 = and i32 %1029, 15
  %1031 = icmp eq i32 9, %1030
  br i1 %1031, label %1032, label %1033

1032:                                             ; preds = %1025
  br label %1095

1033:                                             ; preds = %1025
  %1034 = load ptr, ptr %14, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1034, i32 0, i32 3
  %1036 = load i8, ptr %1035, align 1, !tbaa !22
  %1037 = zext i8 %1036 to i32
  %1038 = and i32 %1037, 15
  %1039 = icmp eq i32 10, %1038
  br i1 %1039, label %1040, label %1041

1040:                                             ; preds = %1033
  br label %1093

1041:                                             ; preds = %1033
  %1042 = load ptr, ptr %14, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1042, i32 0, i32 3
  %1044 = load i8, ptr %1043, align 1, !tbaa !22
  %1045 = zext i8 %1044 to i32
  %1046 = and i32 %1045, 15
  %1047 = icmp eq i32 11, %1046
  br i1 %1047, label %1048, label %1049

1048:                                             ; preds = %1041
  br label %1091

1049:                                             ; preds = %1041
  %1050 = load ptr, ptr %14, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1050, i32 0, i32 3
  %1052 = load i8, ptr %1051, align 1, !tbaa !22
  %1053 = zext i8 %1052 to i32
  %1054 = and i32 %1053, 15
  %1055 = icmp eq i32 12, %1054
  br i1 %1055, label %1056, label %1057

1056:                                             ; preds = %1049
  br label %1089

1057:                                             ; preds = %1049
  %1058 = load ptr, ptr %14, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1058, i32 0, i32 3
  %1060 = load i8, ptr %1059, align 1, !tbaa !22
  %1061 = zext i8 %1060 to i32
  %1062 = and i32 %1061, 15
  %1063 = icmp eq i32 13, %1062
  br i1 %1063, label %1064, label %1065

1064:                                             ; preds = %1057
  br label %1087

1065:                                             ; preds = %1057
  %1066 = load ptr, ptr %14, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1066, i32 0, i32 3
  %1068 = load i8, ptr %1067, align 1, !tbaa !22
  %1069 = zext i8 %1068 to i32
  %1070 = and i32 %1069, 15
  %1071 = icmp eq i32 14, %1070
  br i1 %1071, label %1072, label %1073

1072:                                             ; preds = %1065
  br label %1085

1073:                                             ; preds = %1065
  %1074 = load ptr, ptr %14, align 8, !tbaa !5
  %1075 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1074, i32 0, i32 3
  %1076 = load i8, ptr %1075, align 1, !tbaa !22
  %1077 = zext i8 %1076 to i32
  %1078 = and i32 %1077, 15
  %1079 = icmp eq i32 15, %1078
  br i1 %1079, label %1080, label %1081

1080:                                             ; preds = %1073
  br label %1083

1081:                                             ; preds = %1073
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

1082:                                             ; No predecessors!
  br label %1083

1083:                                             ; preds = %1082, %1080
  %1084 = phi i32 [ 15, %1080 ], [ 0, %1082 ]
  br label %1085

1085:                                             ; preds = %1083, %1072
  %1086 = phi i32 [ 14, %1072 ], [ %1084, %1083 ]
  br label %1087

1087:                                             ; preds = %1085, %1064
  %1088 = phi i32 [ 12, %1064 ], [ %1086, %1085 ]
  br label %1089

1089:                                             ; preds = %1087, %1056
  %1090 = phi i32 [ 12, %1056 ], [ %1088, %1087 ]
  br label %1091

1091:                                             ; preds = %1089, %1048
  %1092 = phi i32 [ 10, %1048 ], [ %1090, %1089 ]
  br label %1093

1093:                                             ; preds = %1091, %1040
  %1094 = phi i32 [ 10, %1040 ], [ %1092, %1091 ]
  br label %1095

1095:                                             ; preds = %1093, %1032
  %1096 = phi i32 [ 8, %1032 ], [ %1094, %1093 ]
  br label %1097

1097:                                             ; preds = %1095, %1024
  %1098 = phi i32 [ 8, %1024 ], [ %1096, %1095 ]
  br label %1099

1099:                                             ; preds = %1097, %1016
  %1100 = phi i32 [ 6, %1016 ], [ %1098, %1097 ]
  br label %1101

1101:                                             ; preds = %1099, %1008
  %1102 = phi i32 [ 6, %1008 ], [ %1100, %1099 ]
  br label %1103

1103:                                             ; preds = %1101, %1000
  %1104 = phi i32 [ 5, %1000 ], [ %1102, %1101 ]
  br label %1105

1105:                                             ; preds = %1103, %992
  %1106 = phi i32 [ 4, %992 ], [ %1104, %1103 ]
  br label %1107

1107:                                             ; preds = %1105, %984
  %1108 = phi i32 [ 3, %984 ], [ %1106, %1105 ]
  br label %1109

1109:                                             ; preds = %1107, %976
  %1110 = phi i32 [ 2, %976 ], [ %1108, %1107 ]
  br label %1111

1111:                                             ; preds = %1109, %968
  %1112 = phi i32 [ 1, %968 ], [ %1110, %1109 ]
  br label %1113

1113:                                             ; preds = %1111, %960
  %1114 = phi i32 [ 0, %960 ], [ %1112, %1111 ]
  br label %1121

1115:                                             ; preds = %946
  %1116 = load ptr, ptr %14, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1116, i32 0, i32 3
  %1118 = load i8, ptr %1117, align 1, !tbaa !22
  %1119 = zext i8 %1118 to i32
  %1120 = ashr i32 %1119, 4
  br label %1121

1121:                                             ; preds = %1115, %1113
  %1122 = phi i32 [ %1114, %1113 ], [ %1120, %1115 ]
  %1123 = icmp eq i32 5, %1122
  br i1 %1123, label %1124, label %1125

1124:                                             ; preds = %1121
  br label %2575

1125:                                             ; preds = %1121
  %1126 = load ptr, ptr %14, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1126, i32 0, i32 3
  %1128 = load i8, ptr %1127, align 1, !tbaa !22
  %1129 = zext i8 %1128 to i32
  %1130 = ashr i32 %1129, 4
  %1131 = icmp eq i32 0, %1130
  br i1 %1131, label %1132, label %1294

1132:                                             ; preds = %1125
  %1133 = load ptr, ptr %14, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1133, i32 0, i32 3
  %1135 = load i8, ptr %1134, align 1, !tbaa !22
  %1136 = zext i8 %1135 to i32
  %1137 = and i32 %1136, 15
  %1138 = icmp eq i32 0, %1137
  br i1 %1138, label %1139, label %1140

1139:                                             ; preds = %1132
  br label %1292

1140:                                             ; preds = %1132
  %1141 = load ptr, ptr %14, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1141, i32 0, i32 3
  %1143 = load i8, ptr %1142, align 1, !tbaa !22
  %1144 = zext i8 %1143 to i32
  %1145 = and i32 %1144, 15
  %1146 = icmp eq i32 1, %1145
  br i1 %1146, label %1147, label %1148

1147:                                             ; preds = %1140
  br label %1290

1148:                                             ; preds = %1140
  %1149 = load ptr, ptr %14, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1149, i32 0, i32 3
  %1151 = load i8, ptr %1150, align 1, !tbaa !22
  %1152 = zext i8 %1151 to i32
  %1153 = and i32 %1152, 15
  %1154 = icmp eq i32 2, %1153
  br i1 %1154, label %1155, label %1156

1155:                                             ; preds = %1148
  br label %1288

1156:                                             ; preds = %1148
  %1157 = load ptr, ptr %14, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1157, i32 0, i32 3
  %1159 = load i8, ptr %1158, align 1, !tbaa !22
  %1160 = zext i8 %1159 to i32
  %1161 = and i32 %1160, 15
  %1162 = icmp eq i32 3, %1161
  br i1 %1162, label %1163, label %1164

1163:                                             ; preds = %1156
  br label %1286

1164:                                             ; preds = %1156
  %1165 = load ptr, ptr %14, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1165, i32 0, i32 3
  %1167 = load i8, ptr %1166, align 1, !tbaa !22
  %1168 = zext i8 %1167 to i32
  %1169 = and i32 %1168, 15
  %1170 = icmp eq i32 4, %1169
  br i1 %1170, label %1171, label %1172

1171:                                             ; preds = %1164
  br label %1284

1172:                                             ; preds = %1164
  %1173 = load ptr, ptr %14, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1173, i32 0, i32 3
  %1175 = load i8, ptr %1174, align 1, !tbaa !22
  %1176 = zext i8 %1175 to i32
  %1177 = and i32 %1176, 15
  %1178 = icmp eq i32 5, %1177
  br i1 %1178, label %1179, label %1180

1179:                                             ; preds = %1172
  br label %1282

1180:                                             ; preds = %1172
  %1181 = load ptr, ptr %14, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1181, i32 0, i32 3
  %1183 = load i8, ptr %1182, align 1, !tbaa !22
  %1184 = zext i8 %1183 to i32
  %1185 = and i32 %1184, 15
  %1186 = icmp eq i32 6, %1185
  br i1 %1186, label %1187, label %1188

1187:                                             ; preds = %1180
  br label %1280

1188:                                             ; preds = %1180
  %1189 = load ptr, ptr %14, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1189, i32 0, i32 3
  %1191 = load i8, ptr %1190, align 1, !tbaa !22
  %1192 = zext i8 %1191 to i32
  %1193 = and i32 %1192, 15
  %1194 = icmp eq i32 7, %1193
  br i1 %1194, label %1195, label %1196

1195:                                             ; preds = %1188
  br label %1278

1196:                                             ; preds = %1188
  %1197 = load ptr, ptr %14, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1197, i32 0, i32 3
  %1199 = load i8, ptr %1198, align 1, !tbaa !22
  %1200 = zext i8 %1199 to i32
  %1201 = and i32 %1200, 15
  %1202 = icmp eq i32 8, %1201
  br i1 %1202, label %1203, label %1204

1203:                                             ; preds = %1196
  br label %1276

1204:                                             ; preds = %1196
  %1205 = load ptr, ptr %14, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1205, i32 0, i32 3
  %1207 = load i8, ptr %1206, align 1, !tbaa !22
  %1208 = zext i8 %1207 to i32
  %1209 = and i32 %1208, 15
  %1210 = icmp eq i32 9, %1209
  br i1 %1210, label %1211, label %1212

1211:                                             ; preds = %1204
  br label %1274

1212:                                             ; preds = %1204
  %1213 = load ptr, ptr %14, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1213, i32 0, i32 3
  %1215 = load i8, ptr %1214, align 1, !tbaa !22
  %1216 = zext i8 %1215 to i32
  %1217 = and i32 %1216, 15
  %1218 = icmp eq i32 10, %1217
  br i1 %1218, label %1219, label %1220

1219:                                             ; preds = %1212
  br label %1272

1220:                                             ; preds = %1212
  %1221 = load ptr, ptr %14, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1221, i32 0, i32 3
  %1223 = load i8, ptr %1222, align 1, !tbaa !22
  %1224 = zext i8 %1223 to i32
  %1225 = and i32 %1224, 15
  %1226 = icmp eq i32 11, %1225
  br i1 %1226, label %1227, label %1228

1227:                                             ; preds = %1220
  br label %1270

1228:                                             ; preds = %1220
  %1229 = load ptr, ptr %14, align 8, !tbaa !5
  %1230 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1229, i32 0, i32 3
  %1231 = load i8, ptr %1230, align 1, !tbaa !22
  %1232 = zext i8 %1231 to i32
  %1233 = and i32 %1232, 15
  %1234 = icmp eq i32 12, %1233
  br i1 %1234, label %1235, label %1236

1235:                                             ; preds = %1228
  br label %1268

1236:                                             ; preds = %1228
  %1237 = load ptr, ptr %14, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1237, i32 0, i32 3
  %1239 = load i8, ptr %1238, align 1, !tbaa !22
  %1240 = zext i8 %1239 to i32
  %1241 = and i32 %1240, 15
  %1242 = icmp eq i32 13, %1241
  br i1 %1242, label %1243, label %1244

1243:                                             ; preds = %1236
  br label %1266

1244:                                             ; preds = %1236
  %1245 = load ptr, ptr %14, align 8, !tbaa !5
  %1246 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1245, i32 0, i32 3
  %1247 = load i8, ptr %1246, align 1, !tbaa !22
  %1248 = zext i8 %1247 to i32
  %1249 = and i32 %1248, 15
  %1250 = icmp eq i32 14, %1249
  br i1 %1250, label %1251, label %1252

1251:                                             ; preds = %1244
  br label %1264

1252:                                             ; preds = %1244
  %1253 = load ptr, ptr %14, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1253, i32 0, i32 3
  %1255 = load i8, ptr %1254, align 1, !tbaa !22
  %1256 = zext i8 %1255 to i32
  %1257 = and i32 %1256, 15
  %1258 = icmp eq i32 15, %1257
  br i1 %1258, label %1259, label %1260

1259:                                             ; preds = %1252
  br label %1262

1260:                                             ; preds = %1252
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

1261:                                             ; No predecessors!
  br label %1262

1262:                                             ; preds = %1261, %1259
  %1263 = phi i32 [ 15, %1259 ], [ 0, %1261 ]
  br label %1264

1264:                                             ; preds = %1262, %1251
  %1265 = phi i32 [ 14, %1251 ], [ %1263, %1262 ]
  br label %1266

1266:                                             ; preds = %1264, %1243
  %1267 = phi i32 [ 12, %1243 ], [ %1265, %1264 ]
  br label %1268

1268:                                             ; preds = %1266, %1235
  %1269 = phi i32 [ 12, %1235 ], [ %1267, %1266 ]
  br label %1270

1270:                                             ; preds = %1268, %1227
  %1271 = phi i32 [ 10, %1227 ], [ %1269, %1268 ]
  br label %1272

1272:                                             ; preds = %1270, %1219
  %1273 = phi i32 [ 10, %1219 ], [ %1271, %1270 ]
  br label %1274

1274:                                             ; preds = %1272, %1211
  %1275 = phi i32 [ 8, %1211 ], [ %1273, %1272 ]
  br label %1276

1276:                                             ; preds = %1274, %1203
  %1277 = phi i32 [ 8, %1203 ], [ %1275, %1274 ]
  br label %1278

1278:                                             ; preds = %1276, %1195
  %1279 = phi i32 [ 6, %1195 ], [ %1277, %1276 ]
  br label %1280

1280:                                             ; preds = %1278, %1187
  %1281 = phi i32 [ 6, %1187 ], [ %1279, %1278 ]
  br label %1282

1282:                                             ; preds = %1280, %1179
  %1283 = phi i32 [ 5, %1179 ], [ %1281, %1280 ]
  br label %1284

1284:                                             ; preds = %1282, %1171
  %1285 = phi i32 [ 4, %1171 ], [ %1283, %1282 ]
  br label %1286

1286:                                             ; preds = %1284, %1163
  %1287 = phi i32 [ 3, %1163 ], [ %1285, %1284 ]
  br label %1288

1288:                                             ; preds = %1286, %1155
  %1289 = phi i32 [ 2, %1155 ], [ %1287, %1286 ]
  br label %1290

1290:                                             ; preds = %1288, %1147
  %1291 = phi i32 [ 1, %1147 ], [ %1289, %1288 ]
  br label %1292

1292:                                             ; preds = %1290, %1139
  %1293 = phi i32 [ 0, %1139 ], [ %1291, %1290 ]
  br label %1300

1294:                                             ; preds = %1125
  %1295 = load ptr, ptr %14, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1295, i32 0, i32 3
  %1297 = load i8, ptr %1296, align 1, !tbaa !22
  %1298 = zext i8 %1297 to i32
  %1299 = ashr i32 %1298, 4
  br label %1300

1300:                                             ; preds = %1294, %1292
  %1301 = phi i32 [ %1293, %1292 ], [ %1299, %1294 ]
  %1302 = icmp eq i32 6, %1301
  br i1 %1302, label %1303, label %1304

1303:                                             ; preds = %1300
  br label %2573

1304:                                             ; preds = %1300
  %1305 = load ptr, ptr %14, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1305, i32 0, i32 3
  %1307 = load i8, ptr %1306, align 1, !tbaa !22
  %1308 = zext i8 %1307 to i32
  %1309 = ashr i32 %1308, 4
  %1310 = icmp eq i32 0, %1309
  br i1 %1310, label %1311, label %1473

1311:                                             ; preds = %1304
  %1312 = load ptr, ptr %14, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1312, i32 0, i32 3
  %1314 = load i8, ptr %1313, align 1, !tbaa !22
  %1315 = zext i8 %1314 to i32
  %1316 = and i32 %1315, 15
  %1317 = icmp eq i32 0, %1316
  br i1 %1317, label %1318, label %1319

1318:                                             ; preds = %1311
  br label %1471

1319:                                             ; preds = %1311
  %1320 = load ptr, ptr %14, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1320, i32 0, i32 3
  %1322 = load i8, ptr %1321, align 1, !tbaa !22
  %1323 = zext i8 %1322 to i32
  %1324 = and i32 %1323, 15
  %1325 = icmp eq i32 1, %1324
  br i1 %1325, label %1326, label %1327

1326:                                             ; preds = %1319
  br label %1469

1327:                                             ; preds = %1319
  %1328 = load ptr, ptr %14, align 8, !tbaa !5
  %1329 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1328, i32 0, i32 3
  %1330 = load i8, ptr %1329, align 1, !tbaa !22
  %1331 = zext i8 %1330 to i32
  %1332 = and i32 %1331, 15
  %1333 = icmp eq i32 2, %1332
  br i1 %1333, label %1334, label %1335

1334:                                             ; preds = %1327
  br label %1467

1335:                                             ; preds = %1327
  %1336 = load ptr, ptr %14, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1336, i32 0, i32 3
  %1338 = load i8, ptr %1337, align 1, !tbaa !22
  %1339 = zext i8 %1338 to i32
  %1340 = and i32 %1339, 15
  %1341 = icmp eq i32 3, %1340
  br i1 %1341, label %1342, label %1343

1342:                                             ; preds = %1335
  br label %1465

1343:                                             ; preds = %1335
  %1344 = load ptr, ptr %14, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1344, i32 0, i32 3
  %1346 = load i8, ptr %1345, align 1, !tbaa !22
  %1347 = zext i8 %1346 to i32
  %1348 = and i32 %1347, 15
  %1349 = icmp eq i32 4, %1348
  br i1 %1349, label %1350, label %1351

1350:                                             ; preds = %1343
  br label %1463

1351:                                             ; preds = %1343
  %1352 = load ptr, ptr %14, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1352, i32 0, i32 3
  %1354 = load i8, ptr %1353, align 1, !tbaa !22
  %1355 = zext i8 %1354 to i32
  %1356 = and i32 %1355, 15
  %1357 = icmp eq i32 5, %1356
  br i1 %1357, label %1358, label %1359

1358:                                             ; preds = %1351
  br label %1461

1359:                                             ; preds = %1351
  %1360 = load ptr, ptr %14, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1360, i32 0, i32 3
  %1362 = load i8, ptr %1361, align 1, !tbaa !22
  %1363 = zext i8 %1362 to i32
  %1364 = and i32 %1363, 15
  %1365 = icmp eq i32 6, %1364
  br i1 %1365, label %1366, label %1367

1366:                                             ; preds = %1359
  br label %1459

1367:                                             ; preds = %1359
  %1368 = load ptr, ptr %14, align 8, !tbaa !5
  %1369 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1368, i32 0, i32 3
  %1370 = load i8, ptr %1369, align 1, !tbaa !22
  %1371 = zext i8 %1370 to i32
  %1372 = and i32 %1371, 15
  %1373 = icmp eq i32 7, %1372
  br i1 %1373, label %1374, label %1375

1374:                                             ; preds = %1367
  br label %1457

1375:                                             ; preds = %1367
  %1376 = load ptr, ptr %14, align 8, !tbaa !5
  %1377 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1376, i32 0, i32 3
  %1378 = load i8, ptr %1377, align 1, !tbaa !22
  %1379 = zext i8 %1378 to i32
  %1380 = and i32 %1379, 15
  %1381 = icmp eq i32 8, %1380
  br i1 %1381, label %1382, label %1383

1382:                                             ; preds = %1375
  br label %1455

1383:                                             ; preds = %1375
  %1384 = load ptr, ptr %14, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1384, i32 0, i32 3
  %1386 = load i8, ptr %1385, align 1, !tbaa !22
  %1387 = zext i8 %1386 to i32
  %1388 = and i32 %1387, 15
  %1389 = icmp eq i32 9, %1388
  br i1 %1389, label %1390, label %1391

1390:                                             ; preds = %1383
  br label %1453

1391:                                             ; preds = %1383
  %1392 = load ptr, ptr %14, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1392, i32 0, i32 3
  %1394 = load i8, ptr %1393, align 1, !tbaa !22
  %1395 = zext i8 %1394 to i32
  %1396 = and i32 %1395, 15
  %1397 = icmp eq i32 10, %1396
  br i1 %1397, label %1398, label %1399

1398:                                             ; preds = %1391
  br label %1451

1399:                                             ; preds = %1391
  %1400 = load ptr, ptr %14, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1400, i32 0, i32 3
  %1402 = load i8, ptr %1401, align 1, !tbaa !22
  %1403 = zext i8 %1402 to i32
  %1404 = and i32 %1403, 15
  %1405 = icmp eq i32 11, %1404
  br i1 %1405, label %1406, label %1407

1406:                                             ; preds = %1399
  br label %1449

1407:                                             ; preds = %1399
  %1408 = load ptr, ptr %14, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1408, i32 0, i32 3
  %1410 = load i8, ptr %1409, align 1, !tbaa !22
  %1411 = zext i8 %1410 to i32
  %1412 = and i32 %1411, 15
  %1413 = icmp eq i32 12, %1412
  br i1 %1413, label %1414, label %1415

1414:                                             ; preds = %1407
  br label %1447

1415:                                             ; preds = %1407
  %1416 = load ptr, ptr %14, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1416, i32 0, i32 3
  %1418 = load i8, ptr %1417, align 1, !tbaa !22
  %1419 = zext i8 %1418 to i32
  %1420 = and i32 %1419, 15
  %1421 = icmp eq i32 13, %1420
  br i1 %1421, label %1422, label %1423

1422:                                             ; preds = %1415
  br label %1445

1423:                                             ; preds = %1415
  %1424 = load ptr, ptr %14, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1424, i32 0, i32 3
  %1426 = load i8, ptr %1425, align 1, !tbaa !22
  %1427 = zext i8 %1426 to i32
  %1428 = and i32 %1427, 15
  %1429 = icmp eq i32 14, %1428
  br i1 %1429, label %1430, label %1431

1430:                                             ; preds = %1423
  br label %1443

1431:                                             ; preds = %1423
  %1432 = load ptr, ptr %14, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1432, i32 0, i32 3
  %1434 = load i8, ptr %1433, align 1, !tbaa !22
  %1435 = zext i8 %1434 to i32
  %1436 = and i32 %1435, 15
  %1437 = icmp eq i32 15, %1436
  br i1 %1437, label %1438, label %1439

1438:                                             ; preds = %1431
  br label %1441

1439:                                             ; preds = %1431
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

1440:                                             ; No predecessors!
  br label %1441

1441:                                             ; preds = %1440, %1438
  %1442 = phi i32 [ 15, %1438 ], [ 0, %1440 ]
  br label %1443

1443:                                             ; preds = %1441, %1430
  %1444 = phi i32 [ 14, %1430 ], [ %1442, %1441 ]
  br label %1445

1445:                                             ; preds = %1443, %1422
  %1446 = phi i32 [ 12, %1422 ], [ %1444, %1443 ]
  br label %1447

1447:                                             ; preds = %1445, %1414
  %1448 = phi i32 [ 12, %1414 ], [ %1446, %1445 ]
  br label %1449

1449:                                             ; preds = %1447, %1406
  %1450 = phi i32 [ 10, %1406 ], [ %1448, %1447 ]
  br label %1451

1451:                                             ; preds = %1449, %1398
  %1452 = phi i32 [ 10, %1398 ], [ %1450, %1449 ]
  br label %1453

1453:                                             ; preds = %1451, %1390
  %1454 = phi i32 [ 8, %1390 ], [ %1452, %1451 ]
  br label %1455

1455:                                             ; preds = %1453, %1382
  %1456 = phi i32 [ 8, %1382 ], [ %1454, %1453 ]
  br label %1457

1457:                                             ; preds = %1455, %1374
  %1458 = phi i32 [ 6, %1374 ], [ %1456, %1455 ]
  br label %1459

1459:                                             ; preds = %1457, %1366
  %1460 = phi i32 [ 6, %1366 ], [ %1458, %1457 ]
  br label %1461

1461:                                             ; preds = %1459, %1358
  %1462 = phi i32 [ 5, %1358 ], [ %1460, %1459 ]
  br label %1463

1463:                                             ; preds = %1461, %1350
  %1464 = phi i32 [ 4, %1350 ], [ %1462, %1461 ]
  br label %1465

1465:                                             ; preds = %1463, %1342
  %1466 = phi i32 [ 3, %1342 ], [ %1464, %1463 ]
  br label %1467

1467:                                             ; preds = %1465, %1334
  %1468 = phi i32 [ 2, %1334 ], [ %1466, %1465 ]
  br label %1469

1469:                                             ; preds = %1467, %1326
  %1470 = phi i32 [ 1, %1326 ], [ %1468, %1467 ]
  br label %1471

1471:                                             ; preds = %1469, %1318
  %1472 = phi i32 [ 0, %1318 ], [ %1470, %1469 ]
  br label %1479

1473:                                             ; preds = %1304
  %1474 = load ptr, ptr %14, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1474, i32 0, i32 3
  %1476 = load i8, ptr %1475, align 1, !tbaa !22
  %1477 = zext i8 %1476 to i32
  %1478 = ashr i32 %1477, 4
  br label %1479

1479:                                             ; preds = %1473, %1471
  %1480 = phi i32 [ %1472, %1471 ], [ %1478, %1473 ]
  %1481 = icmp eq i32 7, %1480
  br i1 %1481, label %1482, label %1483

1482:                                             ; preds = %1479
  br label %2571

1483:                                             ; preds = %1479
  %1484 = load ptr, ptr %14, align 8, !tbaa !5
  %1485 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1484, i32 0, i32 3
  %1486 = load i8, ptr %1485, align 1, !tbaa !22
  %1487 = zext i8 %1486 to i32
  %1488 = ashr i32 %1487, 4
  %1489 = icmp eq i32 0, %1488
  br i1 %1489, label %1490, label %1652

1490:                                             ; preds = %1483
  %1491 = load ptr, ptr %14, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1491, i32 0, i32 3
  %1493 = load i8, ptr %1492, align 1, !tbaa !22
  %1494 = zext i8 %1493 to i32
  %1495 = and i32 %1494, 15
  %1496 = icmp eq i32 0, %1495
  br i1 %1496, label %1497, label %1498

1497:                                             ; preds = %1490
  br label %1650

1498:                                             ; preds = %1490
  %1499 = load ptr, ptr %14, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1499, i32 0, i32 3
  %1501 = load i8, ptr %1500, align 1, !tbaa !22
  %1502 = zext i8 %1501 to i32
  %1503 = and i32 %1502, 15
  %1504 = icmp eq i32 1, %1503
  br i1 %1504, label %1505, label %1506

1505:                                             ; preds = %1498
  br label %1648

1506:                                             ; preds = %1498
  %1507 = load ptr, ptr %14, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1507, i32 0, i32 3
  %1509 = load i8, ptr %1508, align 1, !tbaa !22
  %1510 = zext i8 %1509 to i32
  %1511 = and i32 %1510, 15
  %1512 = icmp eq i32 2, %1511
  br i1 %1512, label %1513, label %1514

1513:                                             ; preds = %1506
  br label %1646

1514:                                             ; preds = %1506
  %1515 = load ptr, ptr %14, align 8, !tbaa !5
  %1516 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1515, i32 0, i32 3
  %1517 = load i8, ptr %1516, align 1, !tbaa !22
  %1518 = zext i8 %1517 to i32
  %1519 = and i32 %1518, 15
  %1520 = icmp eq i32 3, %1519
  br i1 %1520, label %1521, label %1522

1521:                                             ; preds = %1514
  br label %1644

1522:                                             ; preds = %1514
  %1523 = load ptr, ptr %14, align 8, !tbaa !5
  %1524 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1523, i32 0, i32 3
  %1525 = load i8, ptr %1524, align 1, !tbaa !22
  %1526 = zext i8 %1525 to i32
  %1527 = and i32 %1526, 15
  %1528 = icmp eq i32 4, %1527
  br i1 %1528, label %1529, label %1530

1529:                                             ; preds = %1522
  br label %1642

1530:                                             ; preds = %1522
  %1531 = load ptr, ptr %14, align 8, !tbaa !5
  %1532 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1531, i32 0, i32 3
  %1533 = load i8, ptr %1532, align 1, !tbaa !22
  %1534 = zext i8 %1533 to i32
  %1535 = and i32 %1534, 15
  %1536 = icmp eq i32 5, %1535
  br i1 %1536, label %1537, label %1538

1537:                                             ; preds = %1530
  br label %1640

1538:                                             ; preds = %1530
  %1539 = load ptr, ptr %14, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1539, i32 0, i32 3
  %1541 = load i8, ptr %1540, align 1, !tbaa !22
  %1542 = zext i8 %1541 to i32
  %1543 = and i32 %1542, 15
  %1544 = icmp eq i32 6, %1543
  br i1 %1544, label %1545, label %1546

1545:                                             ; preds = %1538
  br label %1638

1546:                                             ; preds = %1538
  %1547 = load ptr, ptr %14, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1547, i32 0, i32 3
  %1549 = load i8, ptr %1548, align 1, !tbaa !22
  %1550 = zext i8 %1549 to i32
  %1551 = and i32 %1550, 15
  %1552 = icmp eq i32 7, %1551
  br i1 %1552, label %1553, label %1554

1553:                                             ; preds = %1546
  br label %1636

1554:                                             ; preds = %1546
  %1555 = load ptr, ptr %14, align 8, !tbaa !5
  %1556 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1555, i32 0, i32 3
  %1557 = load i8, ptr %1556, align 1, !tbaa !22
  %1558 = zext i8 %1557 to i32
  %1559 = and i32 %1558, 15
  %1560 = icmp eq i32 8, %1559
  br i1 %1560, label %1561, label %1562

1561:                                             ; preds = %1554
  br label %1634

1562:                                             ; preds = %1554
  %1563 = load ptr, ptr %14, align 8, !tbaa !5
  %1564 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1563, i32 0, i32 3
  %1565 = load i8, ptr %1564, align 1, !tbaa !22
  %1566 = zext i8 %1565 to i32
  %1567 = and i32 %1566, 15
  %1568 = icmp eq i32 9, %1567
  br i1 %1568, label %1569, label %1570

1569:                                             ; preds = %1562
  br label %1632

1570:                                             ; preds = %1562
  %1571 = load ptr, ptr %14, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1571, i32 0, i32 3
  %1573 = load i8, ptr %1572, align 1, !tbaa !22
  %1574 = zext i8 %1573 to i32
  %1575 = and i32 %1574, 15
  %1576 = icmp eq i32 10, %1575
  br i1 %1576, label %1577, label %1578

1577:                                             ; preds = %1570
  br label %1630

1578:                                             ; preds = %1570
  %1579 = load ptr, ptr %14, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1579, i32 0, i32 3
  %1581 = load i8, ptr %1580, align 1, !tbaa !22
  %1582 = zext i8 %1581 to i32
  %1583 = and i32 %1582, 15
  %1584 = icmp eq i32 11, %1583
  br i1 %1584, label %1585, label %1586

1585:                                             ; preds = %1578
  br label %1628

1586:                                             ; preds = %1578
  %1587 = load ptr, ptr %14, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1587, i32 0, i32 3
  %1589 = load i8, ptr %1588, align 1, !tbaa !22
  %1590 = zext i8 %1589 to i32
  %1591 = and i32 %1590, 15
  %1592 = icmp eq i32 12, %1591
  br i1 %1592, label %1593, label %1594

1593:                                             ; preds = %1586
  br label %1626

1594:                                             ; preds = %1586
  %1595 = load ptr, ptr %14, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1595, i32 0, i32 3
  %1597 = load i8, ptr %1596, align 1, !tbaa !22
  %1598 = zext i8 %1597 to i32
  %1599 = and i32 %1598, 15
  %1600 = icmp eq i32 13, %1599
  br i1 %1600, label %1601, label %1602

1601:                                             ; preds = %1594
  br label %1624

1602:                                             ; preds = %1594
  %1603 = load ptr, ptr %14, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1603, i32 0, i32 3
  %1605 = load i8, ptr %1604, align 1, !tbaa !22
  %1606 = zext i8 %1605 to i32
  %1607 = and i32 %1606, 15
  %1608 = icmp eq i32 14, %1607
  br i1 %1608, label %1609, label %1610

1609:                                             ; preds = %1602
  br label %1622

1610:                                             ; preds = %1602
  %1611 = load ptr, ptr %14, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1611, i32 0, i32 3
  %1613 = load i8, ptr %1612, align 1, !tbaa !22
  %1614 = zext i8 %1613 to i32
  %1615 = and i32 %1614, 15
  %1616 = icmp eq i32 15, %1615
  br i1 %1616, label %1617, label %1618

1617:                                             ; preds = %1610
  br label %1620

1618:                                             ; preds = %1610
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

1619:                                             ; No predecessors!
  br label %1620

1620:                                             ; preds = %1619, %1617
  %1621 = phi i32 [ 15, %1617 ], [ 0, %1619 ]
  br label %1622

1622:                                             ; preds = %1620, %1609
  %1623 = phi i32 [ 14, %1609 ], [ %1621, %1620 ]
  br label %1624

1624:                                             ; preds = %1622, %1601
  %1625 = phi i32 [ 12, %1601 ], [ %1623, %1622 ]
  br label %1626

1626:                                             ; preds = %1624, %1593
  %1627 = phi i32 [ 12, %1593 ], [ %1625, %1624 ]
  br label %1628

1628:                                             ; preds = %1626, %1585
  %1629 = phi i32 [ 10, %1585 ], [ %1627, %1626 ]
  br label %1630

1630:                                             ; preds = %1628, %1577
  %1631 = phi i32 [ 10, %1577 ], [ %1629, %1628 ]
  br label %1632

1632:                                             ; preds = %1630, %1569
  %1633 = phi i32 [ 8, %1569 ], [ %1631, %1630 ]
  br label %1634

1634:                                             ; preds = %1632, %1561
  %1635 = phi i32 [ 8, %1561 ], [ %1633, %1632 ]
  br label %1636

1636:                                             ; preds = %1634, %1553
  %1637 = phi i32 [ 6, %1553 ], [ %1635, %1634 ]
  br label %1638

1638:                                             ; preds = %1636, %1545
  %1639 = phi i32 [ 6, %1545 ], [ %1637, %1636 ]
  br label %1640

1640:                                             ; preds = %1638, %1537
  %1641 = phi i32 [ 5, %1537 ], [ %1639, %1638 ]
  br label %1642

1642:                                             ; preds = %1640, %1529
  %1643 = phi i32 [ 4, %1529 ], [ %1641, %1640 ]
  br label %1644

1644:                                             ; preds = %1642, %1521
  %1645 = phi i32 [ 3, %1521 ], [ %1643, %1642 ]
  br label %1646

1646:                                             ; preds = %1644, %1513
  %1647 = phi i32 [ 2, %1513 ], [ %1645, %1644 ]
  br label %1648

1648:                                             ; preds = %1646, %1505
  %1649 = phi i32 [ 1, %1505 ], [ %1647, %1646 ]
  br label %1650

1650:                                             ; preds = %1648, %1497
  %1651 = phi i32 [ 0, %1497 ], [ %1649, %1648 ]
  br label %1658

1652:                                             ; preds = %1483
  %1653 = load ptr, ptr %14, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1653, i32 0, i32 3
  %1655 = load i8, ptr %1654, align 1, !tbaa !22
  %1656 = zext i8 %1655 to i32
  %1657 = ashr i32 %1656, 4
  br label %1658

1658:                                             ; preds = %1652, %1650
  %1659 = phi i32 [ %1651, %1650 ], [ %1657, %1652 ]
  %1660 = icmp eq i32 8, %1659
  br i1 %1660, label %1661, label %1662

1661:                                             ; preds = %1658
  br label %2569

1662:                                             ; preds = %1658
  %1663 = load ptr, ptr %14, align 8, !tbaa !5
  %1664 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1663, i32 0, i32 3
  %1665 = load i8, ptr %1664, align 1, !tbaa !22
  %1666 = zext i8 %1665 to i32
  %1667 = ashr i32 %1666, 4
  %1668 = icmp eq i32 0, %1667
  br i1 %1668, label %1669, label %1831

1669:                                             ; preds = %1662
  %1670 = load ptr, ptr %14, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1670, i32 0, i32 3
  %1672 = load i8, ptr %1671, align 1, !tbaa !22
  %1673 = zext i8 %1672 to i32
  %1674 = and i32 %1673, 15
  %1675 = icmp eq i32 0, %1674
  br i1 %1675, label %1676, label %1677

1676:                                             ; preds = %1669
  br label %1829

1677:                                             ; preds = %1669
  %1678 = load ptr, ptr %14, align 8, !tbaa !5
  %1679 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1678, i32 0, i32 3
  %1680 = load i8, ptr %1679, align 1, !tbaa !22
  %1681 = zext i8 %1680 to i32
  %1682 = and i32 %1681, 15
  %1683 = icmp eq i32 1, %1682
  br i1 %1683, label %1684, label %1685

1684:                                             ; preds = %1677
  br label %1827

1685:                                             ; preds = %1677
  %1686 = load ptr, ptr %14, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1686, i32 0, i32 3
  %1688 = load i8, ptr %1687, align 1, !tbaa !22
  %1689 = zext i8 %1688 to i32
  %1690 = and i32 %1689, 15
  %1691 = icmp eq i32 2, %1690
  br i1 %1691, label %1692, label %1693

1692:                                             ; preds = %1685
  br label %1825

1693:                                             ; preds = %1685
  %1694 = load ptr, ptr %14, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1694, i32 0, i32 3
  %1696 = load i8, ptr %1695, align 1, !tbaa !22
  %1697 = zext i8 %1696 to i32
  %1698 = and i32 %1697, 15
  %1699 = icmp eq i32 3, %1698
  br i1 %1699, label %1700, label %1701

1700:                                             ; preds = %1693
  br label %1823

1701:                                             ; preds = %1693
  %1702 = load ptr, ptr %14, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1702, i32 0, i32 3
  %1704 = load i8, ptr %1703, align 1, !tbaa !22
  %1705 = zext i8 %1704 to i32
  %1706 = and i32 %1705, 15
  %1707 = icmp eq i32 4, %1706
  br i1 %1707, label %1708, label %1709

1708:                                             ; preds = %1701
  br label %1821

1709:                                             ; preds = %1701
  %1710 = load ptr, ptr %14, align 8, !tbaa !5
  %1711 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1710, i32 0, i32 3
  %1712 = load i8, ptr %1711, align 1, !tbaa !22
  %1713 = zext i8 %1712 to i32
  %1714 = and i32 %1713, 15
  %1715 = icmp eq i32 5, %1714
  br i1 %1715, label %1716, label %1717

1716:                                             ; preds = %1709
  br label %1819

1717:                                             ; preds = %1709
  %1718 = load ptr, ptr %14, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1718, i32 0, i32 3
  %1720 = load i8, ptr %1719, align 1, !tbaa !22
  %1721 = zext i8 %1720 to i32
  %1722 = and i32 %1721, 15
  %1723 = icmp eq i32 6, %1722
  br i1 %1723, label %1724, label %1725

1724:                                             ; preds = %1717
  br label %1817

1725:                                             ; preds = %1717
  %1726 = load ptr, ptr %14, align 8, !tbaa !5
  %1727 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1726, i32 0, i32 3
  %1728 = load i8, ptr %1727, align 1, !tbaa !22
  %1729 = zext i8 %1728 to i32
  %1730 = and i32 %1729, 15
  %1731 = icmp eq i32 7, %1730
  br i1 %1731, label %1732, label %1733

1732:                                             ; preds = %1725
  br label %1815

1733:                                             ; preds = %1725
  %1734 = load ptr, ptr %14, align 8, !tbaa !5
  %1735 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1734, i32 0, i32 3
  %1736 = load i8, ptr %1735, align 1, !tbaa !22
  %1737 = zext i8 %1736 to i32
  %1738 = and i32 %1737, 15
  %1739 = icmp eq i32 8, %1738
  br i1 %1739, label %1740, label %1741

1740:                                             ; preds = %1733
  br label %1813

1741:                                             ; preds = %1733
  %1742 = load ptr, ptr %14, align 8, !tbaa !5
  %1743 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1742, i32 0, i32 3
  %1744 = load i8, ptr %1743, align 1, !tbaa !22
  %1745 = zext i8 %1744 to i32
  %1746 = and i32 %1745, 15
  %1747 = icmp eq i32 9, %1746
  br i1 %1747, label %1748, label %1749

1748:                                             ; preds = %1741
  br label %1811

1749:                                             ; preds = %1741
  %1750 = load ptr, ptr %14, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1750, i32 0, i32 3
  %1752 = load i8, ptr %1751, align 1, !tbaa !22
  %1753 = zext i8 %1752 to i32
  %1754 = and i32 %1753, 15
  %1755 = icmp eq i32 10, %1754
  br i1 %1755, label %1756, label %1757

1756:                                             ; preds = %1749
  br label %1809

1757:                                             ; preds = %1749
  %1758 = load ptr, ptr %14, align 8, !tbaa !5
  %1759 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1758, i32 0, i32 3
  %1760 = load i8, ptr %1759, align 1, !tbaa !22
  %1761 = zext i8 %1760 to i32
  %1762 = and i32 %1761, 15
  %1763 = icmp eq i32 11, %1762
  br i1 %1763, label %1764, label %1765

1764:                                             ; preds = %1757
  br label %1807

1765:                                             ; preds = %1757
  %1766 = load ptr, ptr %14, align 8, !tbaa !5
  %1767 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1766, i32 0, i32 3
  %1768 = load i8, ptr %1767, align 1, !tbaa !22
  %1769 = zext i8 %1768 to i32
  %1770 = and i32 %1769, 15
  %1771 = icmp eq i32 12, %1770
  br i1 %1771, label %1772, label %1773

1772:                                             ; preds = %1765
  br label %1805

1773:                                             ; preds = %1765
  %1774 = load ptr, ptr %14, align 8, !tbaa !5
  %1775 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1774, i32 0, i32 3
  %1776 = load i8, ptr %1775, align 1, !tbaa !22
  %1777 = zext i8 %1776 to i32
  %1778 = and i32 %1777, 15
  %1779 = icmp eq i32 13, %1778
  br i1 %1779, label %1780, label %1781

1780:                                             ; preds = %1773
  br label %1803

1781:                                             ; preds = %1773
  %1782 = load ptr, ptr %14, align 8, !tbaa !5
  %1783 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1782, i32 0, i32 3
  %1784 = load i8, ptr %1783, align 1, !tbaa !22
  %1785 = zext i8 %1784 to i32
  %1786 = and i32 %1785, 15
  %1787 = icmp eq i32 14, %1786
  br i1 %1787, label %1788, label %1789

1788:                                             ; preds = %1781
  br label %1801

1789:                                             ; preds = %1781
  %1790 = load ptr, ptr %14, align 8, !tbaa !5
  %1791 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1790, i32 0, i32 3
  %1792 = load i8, ptr %1791, align 1, !tbaa !22
  %1793 = zext i8 %1792 to i32
  %1794 = and i32 %1793, 15
  %1795 = icmp eq i32 15, %1794
  br i1 %1795, label %1796, label %1797

1796:                                             ; preds = %1789
  br label %1799

1797:                                             ; preds = %1789
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

1798:                                             ; No predecessors!
  br label %1799

1799:                                             ; preds = %1798, %1796
  %1800 = phi i32 [ 15, %1796 ], [ 0, %1798 ]
  br label %1801

1801:                                             ; preds = %1799, %1788
  %1802 = phi i32 [ 14, %1788 ], [ %1800, %1799 ]
  br label %1803

1803:                                             ; preds = %1801, %1780
  %1804 = phi i32 [ 12, %1780 ], [ %1802, %1801 ]
  br label %1805

1805:                                             ; preds = %1803, %1772
  %1806 = phi i32 [ 12, %1772 ], [ %1804, %1803 ]
  br label %1807

1807:                                             ; preds = %1805, %1764
  %1808 = phi i32 [ 10, %1764 ], [ %1806, %1805 ]
  br label %1809

1809:                                             ; preds = %1807, %1756
  %1810 = phi i32 [ 10, %1756 ], [ %1808, %1807 ]
  br label %1811

1811:                                             ; preds = %1809, %1748
  %1812 = phi i32 [ 8, %1748 ], [ %1810, %1809 ]
  br label %1813

1813:                                             ; preds = %1811, %1740
  %1814 = phi i32 [ 8, %1740 ], [ %1812, %1811 ]
  br label %1815

1815:                                             ; preds = %1813, %1732
  %1816 = phi i32 [ 6, %1732 ], [ %1814, %1813 ]
  br label %1817

1817:                                             ; preds = %1815, %1724
  %1818 = phi i32 [ 6, %1724 ], [ %1816, %1815 ]
  br label %1819

1819:                                             ; preds = %1817, %1716
  %1820 = phi i32 [ 5, %1716 ], [ %1818, %1817 ]
  br label %1821

1821:                                             ; preds = %1819, %1708
  %1822 = phi i32 [ 4, %1708 ], [ %1820, %1819 ]
  br label %1823

1823:                                             ; preds = %1821, %1700
  %1824 = phi i32 [ 3, %1700 ], [ %1822, %1821 ]
  br label %1825

1825:                                             ; preds = %1823, %1692
  %1826 = phi i32 [ 2, %1692 ], [ %1824, %1823 ]
  br label %1827

1827:                                             ; preds = %1825, %1684
  %1828 = phi i32 [ 1, %1684 ], [ %1826, %1825 ]
  br label %1829

1829:                                             ; preds = %1827, %1676
  %1830 = phi i32 [ 0, %1676 ], [ %1828, %1827 ]
  br label %1837

1831:                                             ; preds = %1662
  %1832 = load ptr, ptr %14, align 8, !tbaa !5
  %1833 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1832, i32 0, i32 3
  %1834 = load i8, ptr %1833, align 1, !tbaa !22
  %1835 = zext i8 %1834 to i32
  %1836 = ashr i32 %1835, 4
  br label %1837

1837:                                             ; preds = %1831, %1829
  %1838 = phi i32 [ %1830, %1829 ], [ %1836, %1831 ]
  %1839 = icmp eq i32 9, %1838
  br i1 %1839, label %1840, label %1841

1840:                                             ; preds = %1837
  br label %2567

1841:                                             ; preds = %1837
  %1842 = load ptr, ptr %14, align 8, !tbaa !5
  %1843 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1842, i32 0, i32 3
  %1844 = load i8, ptr %1843, align 1, !tbaa !22
  %1845 = zext i8 %1844 to i32
  %1846 = ashr i32 %1845, 4
  %1847 = icmp eq i32 0, %1846
  br i1 %1847, label %1848, label %2010

1848:                                             ; preds = %1841
  %1849 = load ptr, ptr %14, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1849, i32 0, i32 3
  %1851 = load i8, ptr %1850, align 1, !tbaa !22
  %1852 = zext i8 %1851 to i32
  %1853 = and i32 %1852, 15
  %1854 = icmp eq i32 0, %1853
  br i1 %1854, label %1855, label %1856

1855:                                             ; preds = %1848
  br label %2008

1856:                                             ; preds = %1848
  %1857 = load ptr, ptr %14, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1857, i32 0, i32 3
  %1859 = load i8, ptr %1858, align 1, !tbaa !22
  %1860 = zext i8 %1859 to i32
  %1861 = and i32 %1860, 15
  %1862 = icmp eq i32 1, %1861
  br i1 %1862, label %1863, label %1864

1863:                                             ; preds = %1856
  br label %2006

1864:                                             ; preds = %1856
  %1865 = load ptr, ptr %14, align 8, !tbaa !5
  %1866 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1865, i32 0, i32 3
  %1867 = load i8, ptr %1866, align 1, !tbaa !22
  %1868 = zext i8 %1867 to i32
  %1869 = and i32 %1868, 15
  %1870 = icmp eq i32 2, %1869
  br i1 %1870, label %1871, label %1872

1871:                                             ; preds = %1864
  br label %2004

1872:                                             ; preds = %1864
  %1873 = load ptr, ptr %14, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1873, i32 0, i32 3
  %1875 = load i8, ptr %1874, align 1, !tbaa !22
  %1876 = zext i8 %1875 to i32
  %1877 = and i32 %1876, 15
  %1878 = icmp eq i32 3, %1877
  br i1 %1878, label %1879, label %1880

1879:                                             ; preds = %1872
  br label %2002

1880:                                             ; preds = %1872
  %1881 = load ptr, ptr %14, align 8, !tbaa !5
  %1882 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1881, i32 0, i32 3
  %1883 = load i8, ptr %1882, align 1, !tbaa !22
  %1884 = zext i8 %1883 to i32
  %1885 = and i32 %1884, 15
  %1886 = icmp eq i32 4, %1885
  br i1 %1886, label %1887, label %1888

1887:                                             ; preds = %1880
  br label %2000

1888:                                             ; preds = %1880
  %1889 = load ptr, ptr %14, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1889, i32 0, i32 3
  %1891 = load i8, ptr %1890, align 1, !tbaa !22
  %1892 = zext i8 %1891 to i32
  %1893 = and i32 %1892, 15
  %1894 = icmp eq i32 5, %1893
  br i1 %1894, label %1895, label %1896

1895:                                             ; preds = %1888
  br label %1998

1896:                                             ; preds = %1888
  %1897 = load ptr, ptr %14, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1897, i32 0, i32 3
  %1899 = load i8, ptr %1898, align 1, !tbaa !22
  %1900 = zext i8 %1899 to i32
  %1901 = and i32 %1900, 15
  %1902 = icmp eq i32 6, %1901
  br i1 %1902, label %1903, label %1904

1903:                                             ; preds = %1896
  br label %1996

1904:                                             ; preds = %1896
  %1905 = load ptr, ptr %14, align 8, !tbaa !5
  %1906 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1905, i32 0, i32 3
  %1907 = load i8, ptr %1906, align 1, !tbaa !22
  %1908 = zext i8 %1907 to i32
  %1909 = and i32 %1908, 15
  %1910 = icmp eq i32 7, %1909
  br i1 %1910, label %1911, label %1912

1911:                                             ; preds = %1904
  br label %1994

1912:                                             ; preds = %1904
  %1913 = load ptr, ptr %14, align 8, !tbaa !5
  %1914 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1913, i32 0, i32 3
  %1915 = load i8, ptr %1914, align 1, !tbaa !22
  %1916 = zext i8 %1915 to i32
  %1917 = and i32 %1916, 15
  %1918 = icmp eq i32 8, %1917
  br i1 %1918, label %1919, label %1920

1919:                                             ; preds = %1912
  br label %1992

1920:                                             ; preds = %1912
  %1921 = load ptr, ptr %14, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1921, i32 0, i32 3
  %1923 = load i8, ptr %1922, align 1, !tbaa !22
  %1924 = zext i8 %1923 to i32
  %1925 = and i32 %1924, 15
  %1926 = icmp eq i32 9, %1925
  br i1 %1926, label %1927, label %1928

1927:                                             ; preds = %1920
  br label %1990

1928:                                             ; preds = %1920
  %1929 = load ptr, ptr %14, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1929, i32 0, i32 3
  %1931 = load i8, ptr %1930, align 1, !tbaa !22
  %1932 = zext i8 %1931 to i32
  %1933 = and i32 %1932, 15
  %1934 = icmp eq i32 10, %1933
  br i1 %1934, label %1935, label %1936

1935:                                             ; preds = %1928
  br label %1988

1936:                                             ; preds = %1928
  %1937 = load ptr, ptr %14, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1937, i32 0, i32 3
  %1939 = load i8, ptr %1938, align 1, !tbaa !22
  %1940 = zext i8 %1939 to i32
  %1941 = and i32 %1940, 15
  %1942 = icmp eq i32 11, %1941
  br i1 %1942, label %1943, label %1944

1943:                                             ; preds = %1936
  br label %1986

1944:                                             ; preds = %1936
  %1945 = load ptr, ptr %14, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1945, i32 0, i32 3
  %1947 = load i8, ptr %1946, align 1, !tbaa !22
  %1948 = zext i8 %1947 to i32
  %1949 = and i32 %1948, 15
  %1950 = icmp eq i32 12, %1949
  br i1 %1950, label %1951, label %1952

1951:                                             ; preds = %1944
  br label %1984

1952:                                             ; preds = %1944
  %1953 = load ptr, ptr %14, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1953, i32 0, i32 3
  %1955 = load i8, ptr %1954, align 1, !tbaa !22
  %1956 = zext i8 %1955 to i32
  %1957 = and i32 %1956, 15
  %1958 = icmp eq i32 13, %1957
  br i1 %1958, label %1959, label %1960

1959:                                             ; preds = %1952
  br label %1982

1960:                                             ; preds = %1952
  %1961 = load ptr, ptr %14, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1961, i32 0, i32 3
  %1963 = load i8, ptr %1962, align 1, !tbaa !22
  %1964 = zext i8 %1963 to i32
  %1965 = and i32 %1964, 15
  %1966 = icmp eq i32 14, %1965
  br i1 %1966, label %1967, label %1968

1967:                                             ; preds = %1960
  br label %1980

1968:                                             ; preds = %1960
  %1969 = load ptr, ptr %14, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1969, i32 0, i32 3
  %1971 = load i8, ptr %1970, align 1, !tbaa !22
  %1972 = zext i8 %1971 to i32
  %1973 = and i32 %1972, 15
  %1974 = icmp eq i32 15, %1973
  br i1 %1974, label %1975, label %1976

1975:                                             ; preds = %1968
  br label %1978

1976:                                             ; preds = %1968
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

1977:                                             ; No predecessors!
  br label %1978

1978:                                             ; preds = %1977, %1975
  %1979 = phi i32 [ 15, %1975 ], [ 0, %1977 ]
  br label %1980

1980:                                             ; preds = %1978, %1967
  %1981 = phi i32 [ 14, %1967 ], [ %1979, %1978 ]
  br label %1982

1982:                                             ; preds = %1980, %1959
  %1983 = phi i32 [ 12, %1959 ], [ %1981, %1980 ]
  br label %1984

1984:                                             ; preds = %1982, %1951
  %1985 = phi i32 [ 12, %1951 ], [ %1983, %1982 ]
  br label %1986

1986:                                             ; preds = %1984, %1943
  %1987 = phi i32 [ 10, %1943 ], [ %1985, %1984 ]
  br label %1988

1988:                                             ; preds = %1986, %1935
  %1989 = phi i32 [ 10, %1935 ], [ %1987, %1986 ]
  br label %1990

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

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

1994:                                             ; preds = %1992, %1911
  %1995 = phi i32 [ 6, %1911 ], [ %1993, %1992 ]
  br label %1996

1996:                                             ; preds = %1994, %1903
  %1997 = phi i32 [ 6, %1903 ], [ %1995, %1994 ]
  br label %1998

1998:                                             ; preds = %1996, %1895
  %1999 = phi i32 [ 5, %1895 ], [ %1997, %1996 ]
  br label %2000

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

2002:                                             ; preds = %2000, %1879
  %2003 = phi i32 [ 3, %1879 ], [ %2001, %2000 ]
  br label %2004

2004:                                             ; preds = %2002, %1871
  %2005 = phi i32 [ 2, %1871 ], [ %2003, %2002 ]
  br label %2006

2006:                                             ; preds = %2004, %1863
  %2007 = phi i32 [ 1, %1863 ], [ %2005, %2004 ]
  br label %2008

2008:                                             ; preds = %2006, %1855
  %2009 = phi i32 [ 0, %1855 ], [ %2007, %2006 ]
  br label %2016

2010:                                             ; preds = %1841
  %2011 = load ptr, ptr %14, align 8, !tbaa !5
  %2012 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2011, i32 0, i32 3
  %2013 = load i8, ptr %2012, align 1, !tbaa !22
  %2014 = zext i8 %2013 to i32
  %2015 = ashr i32 %2014, 4
  br label %2016

2016:                                             ; preds = %2010, %2008
  %2017 = phi i32 [ %2009, %2008 ], [ %2015, %2010 ]
  %2018 = icmp eq i32 10, %2017
  br i1 %2018, label %2019, label %2020

2019:                                             ; preds = %2016
  br label %2565

2020:                                             ; preds = %2016
  %2021 = load ptr, ptr %14, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2021, i32 0, i32 3
  %2023 = load i8, ptr %2022, align 1, !tbaa !22
  %2024 = zext i8 %2023 to i32
  %2025 = ashr i32 %2024, 4
  %2026 = icmp eq i32 0, %2025
  br i1 %2026, label %2027, label %2189

2027:                                             ; preds = %2020
  %2028 = load ptr, ptr %14, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2028, i32 0, i32 3
  %2030 = load i8, ptr %2029, align 1, !tbaa !22
  %2031 = zext i8 %2030 to i32
  %2032 = and i32 %2031, 15
  %2033 = icmp eq i32 0, %2032
  br i1 %2033, label %2034, label %2035

2034:                                             ; preds = %2027
  br label %2187

2035:                                             ; preds = %2027
  %2036 = load ptr, ptr %14, align 8, !tbaa !5
  %2037 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2036, i32 0, i32 3
  %2038 = load i8, ptr %2037, align 1, !tbaa !22
  %2039 = zext i8 %2038 to i32
  %2040 = and i32 %2039, 15
  %2041 = icmp eq i32 1, %2040
  br i1 %2041, label %2042, label %2043

2042:                                             ; preds = %2035
  br label %2185

2043:                                             ; preds = %2035
  %2044 = load ptr, ptr %14, align 8, !tbaa !5
  %2045 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2044, i32 0, i32 3
  %2046 = load i8, ptr %2045, align 1, !tbaa !22
  %2047 = zext i8 %2046 to i32
  %2048 = and i32 %2047, 15
  %2049 = icmp eq i32 2, %2048
  br i1 %2049, label %2050, label %2051

2050:                                             ; preds = %2043
  br label %2183

2051:                                             ; preds = %2043
  %2052 = load ptr, ptr %14, align 8, !tbaa !5
  %2053 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2052, i32 0, i32 3
  %2054 = load i8, ptr %2053, align 1, !tbaa !22
  %2055 = zext i8 %2054 to i32
  %2056 = and i32 %2055, 15
  %2057 = icmp eq i32 3, %2056
  br i1 %2057, label %2058, label %2059

2058:                                             ; preds = %2051
  br label %2181

2059:                                             ; preds = %2051
  %2060 = load ptr, ptr %14, align 8, !tbaa !5
  %2061 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2060, i32 0, i32 3
  %2062 = load i8, ptr %2061, align 1, !tbaa !22
  %2063 = zext i8 %2062 to i32
  %2064 = and i32 %2063, 15
  %2065 = icmp eq i32 4, %2064
  br i1 %2065, label %2066, label %2067

2066:                                             ; preds = %2059
  br label %2179

2067:                                             ; preds = %2059
  %2068 = load ptr, ptr %14, align 8, !tbaa !5
  %2069 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2068, i32 0, i32 3
  %2070 = load i8, ptr %2069, align 1, !tbaa !22
  %2071 = zext i8 %2070 to i32
  %2072 = and i32 %2071, 15
  %2073 = icmp eq i32 5, %2072
  br i1 %2073, label %2074, label %2075

2074:                                             ; preds = %2067
  br label %2177

2075:                                             ; preds = %2067
  %2076 = load ptr, ptr %14, align 8, !tbaa !5
  %2077 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2076, i32 0, i32 3
  %2078 = load i8, ptr %2077, align 1, !tbaa !22
  %2079 = zext i8 %2078 to i32
  %2080 = and i32 %2079, 15
  %2081 = icmp eq i32 6, %2080
  br i1 %2081, label %2082, label %2083

2082:                                             ; preds = %2075
  br label %2175

2083:                                             ; preds = %2075
  %2084 = load ptr, ptr %14, align 8, !tbaa !5
  %2085 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2084, i32 0, i32 3
  %2086 = load i8, ptr %2085, align 1, !tbaa !22
  %2087 = zext i8 %2086 to i32
  %2088 = and i32 %2087, 15
  %2089 = icmp eq i32 7, %2088
  br i1 %2089, label %2090, label %2091

2090:                                             ; preds = %2083
  br label %2173

2091:                                             ; preds = %2083
  %2092 = load ptr, ptr %14, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2092, i32 0, i32 3
  %2094 = load i8, ptr %2093, align 1, !tbaa !22
  %2095 = zext i8 %2094 to i32
  %2096 = and i32 %2095, 15
  %2097 = icmp eq i32 8, %2096
  br i1 %2097, label %2098, label %2099

2098:                                             ; preds = %2091
  br label %2171

2099:                                             ; preds = %2091
  %2100 = load ptr, ptr %14, align 8, !tbaa !5
  %2101 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2100, i32 0, i32 3
  %2102 = load i8, ptr %2101, align 1, !tbaa !22
  %2103 = zext i8 %2102 to i32
  %2104 = and i32 %2103, 15
  %2105 = icmp eq i32 9, %2104
  br i1 %2105, label %2106, label %2107

2106:                                             ; preds = %2099
  br label %2169

2107:                                             ; preds = %2099
  %2108 = load ptr, ptr %14, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2108, i32 0, i32 3
  %2110 = load i8, ptr %2109, align 1, !tbaa !22
  %2111 = zext i8 %2110 to i32
  %2112 = and i32 %2111, 15
  %2113 = icmp eq i32 10, %2112
  br i1 %2113, label %2114, label %2115

2114:                                             ; preds = %2107
  br label %2167

2115:                                             ; preds = %2107
  %2116 = load ptr, ptr %14, align 8, !tbaa !5
  %2117 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2116, i32 0, i32 3
  %2118 = load i8, ptr %2117, align 1, !tbaa !22
  %2119 = zext i8 %2118 to i32
  %2120 = and i32 %2119, 15
  %2121 = icmp eq i32 11, %2120
  br i1 %2121, label %2122, label %2123

2122:                                             ; preds = %2115
  br label %2165

2123:                                             ; preds = %2115
  %2124 = load ptr, ptr %14, align 8, !tbaa !5
  %2125 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2124, i32 0, i32 3
  %2126 = load i8, ptr %2125, align 1, !tbaa !22
  %2127 = zext i8 %2126 to i32
  %2128 = and i32 %2127, 15
  %2129 = icmp eq i32 12, %2128
  br i1 %2129, label %2130, label %2131

2130:                                             ; preds = %2123
  br label %2163

2131:                                             ; preds = %2123
  %2132 = load ptr, ptr %14, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2132, i32 0, i32 3
  %2134 = load i8, ptr %2133, align 1, !tbaa !22
  %2135 = zext i8 %2134 to i32
  %2136 = and i32 %2135, 15
  %2137 = icmp eq i32 13, %2136
  br i1 %2137, label %2138, label %2139

2138:                                             ; preds = %2131
  br label %2161

2139:                                             ; preds = %2131
  %2140 = load ptr, ptr %14, align 8, !tbaa !5
  %2141 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2140, i32 0, i32 3
  %2142 = load i8, ptr %2141, align 1, !tbaa !22
  %2143 = zext i8 %2142 to i32
  %2144 = and i32 %2143, 15
  %2145 = icmp eq i32 14, %2144
  br i1 %2145, label %2146, label %2147

2146:                                             ; preds = %2139
  br label %2159

2147:                                             ; preds = %2139
  %2148 = load ptr, ptr %14, align 8, !tbaa !5
  %2149 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2148, i32 0, i32 3
  %2150 = load i8, ptr %2149, align 1, !tbaa !22
  %2151 = zext i8 %2150 to i32
  %2152 = and i32 %2151, 15
  %2153 = icmp eq i32 15, %2152
  br i1 %2153, label %2154, label %2155

2154:                                             ; preds = %2147
  br label %2157

2155:                                             ; preds = %2147
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

2156:                                             ; No predecessors!
  br label %2157

2157:                                             ; preds = %2156, %2154
  %2158 = phi i32 [ 15, %2154 ], [ 0, %2156 ]
  br label %2159

2159:                                             ; preds = %2157, %2146
  %2160 = phi i32 [ 14, %2146 ], [ %2158, %2157 ]
  br label %2161

2161:                                             ; preds = %2159, %2138
  %2162 = phi i32 [ 12, %2138 ], [ %2160, %2159 ]
  br label %2163

2163:                                             ; preds = %2161, %2130
  %2164 = phi i32 [ 12, %2130 ], [ %2162, %2161 ]
  br label %2165

2165:                                             ; preds = %2163, %2122
  %2166 = phi i32 [ 10, %2122 ], [ %2164, %2163 ]
  br label %2167

2167:                                             ; preds = %2165, %2114
  %2168 = phi i32 [ 10, %2114 ], [ %2166, %2165 ]
  br label %2169

2169:                                             ; preds = %2167, %2106
  %2170 = phi i32 [ 8, %2106 ], [ %2168, %2167 ]
  br label %2171

2171:                                             ; preds = %2169, %2098
  %2172 = phi i32 [ 8, %2098 ], [ %2170, %2169 ]
  br label %2173

2173:                                             ; preds = %2171, %2090
  %2174 = phi i32 [ 6, %2090 ], [ %2172, %2171 ]
  br label %2175

2175:                                             ; preds = %2173, %2082
  %2176 = phi i32 [ 6, %2082 ], [ %2174, %2173 ]
  br label %2177

2177:                                             ; preds = %2175, %2074
  %2178 = phi i32 [ 5, %2074 ], [ %2176, %2175 ]
  br label %2179

2179:                                             ; preds = %2177, %2066
  %2180 = phi i32 [ 4, %2066 ], [ %2178, %2177 ]
  br label %2181

2181:                                             ; preds = %2179, %2058
  %2182 = phi i32 [ 3, %2058 ], [ %2180, %2179 ]
  br label %2183

2183:                                             ; preds = %2181, %2050
  %2184 = phi i32 [ 2, %2050 ], [ %2182, %2181 ]
  br label %2185

2185:                                             ; preds = %2183, %2042
  %2186 = phi i32 [ 1, %2042 ], [ %2184, %2183 ]
  br label %2187

2187:                                             ; preds = %2185, %2034
  %2188 = phi i32 [ 0, %2034 ], [ %2186, %2185 ]
  br label %2195

2189:                                             ; preds = %2020
  %2190 = load ptr, ptr %14, align 8, !tbaa !5
  %2191 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2190, i32 0, i32 3
  %2192 = load i8, ptr %2191, align 1, !tbaa !22
  %2193 = zext i8 %2192 to i32
  %2194 = ashr i32 %2193, 4
  br label %2195

2195:                                             ; preds = %2189, %2187
  %2196 = phi i32 [ %2188, %2187 ], [ %2194, %2189 ]
  %2197 = icmp eq i32 11, %2196
  br i1 %2197, label %2198, label %2199

2198:                                             ; preds = %2195
  br label %2563

2199:                                             ; preds = %2195
  %2200 = load ptr, ptr %14, align 8, !tbaa !5
  %2201 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2200, i32 0, i32 3
  %2202 = load i8, ptr %2201, align 1, !tbaa !22
  %2203 = zext i8 %2202 to i32
  %2204 = ashr i32 %2203, 4
  %2205 = icmp eq i32 0, %2204
  br i1 %2205, label %2206, label %2368

2206:                                             ; preds = %2199
  %2207 = load ptr, ptr %14, align 8, !tbaa !5
  %2208 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2207, i32 0, i32 3
  %2209 = load i8, ptr %2208, align 1, !tbaa !22
  %2210 = zext i8 %2209 to i32
  %2211 = and i32 %2210, 15
  %2212 = icmp eq i32 0, %2211
  br i1 %2212, label %2213, label %2214

2213:                                             ; preds = %2206
  br label %2366

2214:                                             ; preds = %2206
  %2215 = load ptr, ptr %14, align 8, !tbaa !5
  %2216 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2215, i32 0, i32 3
  %2217 = load i8, ptr %2216, align 1, !tbaa !22
  %2218 = zext i8 %2217 to i32
  %2219 = and i32 %2218, 15
  %2220 = icmp eq i32 1, %2219
  br i1 %2220, label %2221, label %2222

2221:                                             ; preds = %2214
  br label %2364

2222:                                             ; preds = %2214
  %2223 = load ptr, ptr %14, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2223, i32 0, i32 3
  %2225 = load i8, ptr %2224, align 1, !tbaa !22
  %2226 = zext i8 %2225 to i32
  %2227 = and i32 %2226, 15
  %2228 = icmp eq i32 2, %2227
  br i1 %2228, label %2229, label %2230

2229:                                             ; preds = %2222
  br label %2362

2230:                                             ; preds = %2222
  %2231 = load ptr, ptr %14, align 8, !tbaa !5
  %2232 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2231, i32 0, i32 3
  %2233 = load i8, ptr %2232, align 1, !tbaa !22
  %2234 = zext i8 %2233 to i32
  %2235 = and i32 %2234, 15
  %2236 = icmp eq i32 3, %2235
  br i1 %2236, label %2237, label %2238

2237:                                             ; preds = %2230
  br label %2360

2238:                                             ; preds = %2230
  %2239 = load ptr, ptr %14, align 8, !tbaa !5
  %2240 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2239, i32 0, i32 3
  %2241 = load i8, ptr %2240, align 1, !tbaa !22
  %2242 = zext i8 %2241 to i32
  %2243 = and i32 %2242, 15
  %2244 = icmp eq i32 4, %2243
  br i1 %2244, label %2245, label %2246

2245:                                             ; preds = %2238
  br label %2358

2246:                                             ; preds = %2238
  %2247 = load ptr, ptr %14, align 8, !tbaa !5
  %2248 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2247, i32 0, i32 3
  %2249 = load i8, ptr %2248, align 1, !tbaa !22
  %2250 = zext i8 %2249 to i32
  %2251 = and i32 %2250, 15
  %2252 = icmp eq i32 5, %2251
  br i1 %2252, label %2253, label %2254

2253:                                             ; preds = %2246
  br label %2356

2254:                                             ; preds = %2246
  %2255 = load ptr, ptr %14, align 8, !tbaa !5
  %2256 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2255, i32 0, i32 3
  %2257 = load i8, ptr %2256, align 1, !tbaa !22
  %2258 = zext i8 %2257 to i32
  %2259 = and i32 %2258, 15
  %2260 = icmp eq i32 6, %2259
  br i1 %2260, label %2261, label %2262

2261:                                             ; preds = %2254
  br label %2354

2262:                                             ; preds = %2254
  %2263 = load ptr, ptr %14, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2263, i32 0, i32 3
  %2265 = load i8, ptr %2264, align 1, !tbaa !22
  %2266 = zext i8 %2265 to i32
  %2267 = and i32 %2266, 15
  %2268 = icmp eq i32 7, %2267
  br i1 %2268, label %2269, label %2270

2269:                                             ; preds = %2262
  br label %2352

2270:                                             ; preds = %2262
  %2271 = load ptr, ptr %14, align 8, !tbaa !5
  %2272 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2271, i32 0, i32 3
  %2273 = load i8, ptr %2272, align 1, !tbaa !22
  %2274 = zext i8 %2273 to i32
  %2275 = and i32 %2274, 15
  %2276 = icmp eq i32 8, %2275
  br i1 %2276, label %2277, label %2278

2277:                                             ; preds = %2270
  br label %2350

2278:                                             ; preds = %2270
  %2279 = load ptr, ptr %14, align 8, !tbaa !5
  %2280 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2279, i32 0, i32 3
  %2281 = load i8, ptr %2280, align 1, !tbaa !22
  %2282 = zext i8 %2281 to i32
  %2283 = and i32 %2282, 15
  %2284 = icmp eq i32 9, %2283
  br i1 %2284, label %2285, label %2286

2285:                                             ; preds = %2278
  br label %2348

2286:                                             ; preds = %2278
  %2287 = load ptr, ptr %14, align 8, !tbaa !5
  %2288 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2287, i32 0, i32 3
  %2289 = load i8, ptr %2288, align 1, !tbaa !22
  %2290 = zext i8 %2289 to i32
  %2291 = and i32 %2290, 15
  %2292 = icmp eq i32 10, %2291
  br i1 %2292, label %2293, label %2294

2293:                                             ; preds = %2286
  br label %2346

2294:                                             ; preds = %2286
  %2295 = load ptr, ptr %14, align 8, !tbaa !5
  %2296 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2295, i32 0, i32 3
  %2297 = load i8, ptr %2296, align 1, !tbaa !22
  %2298 = zext i8 %2297 to i32
  %2299 = and i32 %2298, 15
  %2300 = icmp eq i32 11, %2299
  br i1 %2300, label %2301, label %2302

2301:                                             ; preds = %2294
  br label %2344

2302:                                             ; preds = %2294
  %2303 = load ptr, ptr %14, align 8, !tbaa !5
  %2304 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2303, i32 0, i32 3
  %2305 = load i8, ptr %2304, align 1, !tbaa !22
  %2306 = zext i8 %2305 to i32
  %2307 = and i32 %2306, 15
  %2308 = icmp eq i32 12, %2307
  br i1 %2308, label %2309, label %2310

2309:                                             ; preds = %2302
  br label %2342

2310:                                             ; preds = %2302
  %2311 = load ptr, ptr %14, align 8, !tbaa !5
  %2312 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2311, i32 0, i32 3
  %2313 = load i8, ptr %2312, align 1, !tbaa !22
  %2314 = zext i8 %2313 to i32
  %2315 = and i32 %2314, 15
  %2316 = icmp eq i32 13, %2315
  br i1 %2316, label %2317, label %2318

2317:                                             ; preds = %2310
  br label %2340

2318:                                             ; preds = %2310
  %2319 = load ptr, ptr %14, align 8, !tbaa !5
  %2320 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2319, i32 0, i32 3
  %2321 = load i8, ptr %2320, align 1, !tbaa !22
  %2322 = zext i8 %2321 to i32
  %2323 = and i32 %2322, 15
  %2324 = icmp eq i32 14, %2323
  br i1 %2324, label %2325, label %2326

2325:                                             ; preds = %2318
  br label %2338

2326:                                             ; preds = %2318
  %2327 = load ptr, ptr %14, align 8, !tbaa !5
  %2328 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2327, i32 0, i32 3
  %2329 = load i8, ptr %2328, align 1, !tbaa !22
  %2330 = zext i8 %2329 to i32
  %2331 = and i32 %2330, 15
  %2332 = icmp eq i32 15, %2331
  br i1 %2332, label %2333, label %2334

2333:                                             ; preds = %2326
  br label %2336

2334:                                             ; preds = %2326
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

2335:                                             ; No predecessors!
  br label %2336

2336:                                             ; preds = %2335, %2333
  %2337 = phi i32 [ 15, %2333 ], [ 0, %2335 ]
  br label %2338

2338:                                             ; preds = %2336, %2325
  %2339 = phi i32 [ 14, %2325 ], [ %2337, %2336 ]
  br label %2340

2340:                                             ; preds = %2338, %2317
  %2341 = phi i32 [ 12, %2317 ], [ %2339, %2338 ]
  br label %2342

2342:                                             ; preds = %2340, %2309
  %2343 = phi i32 [ 12, %2309 ], [ %2341, %2340 ]
  br label %2344

2344:                                             ; preds = %2342, %2301
  %2345 = phi i32 [ 10, %2301 ], [ %2343, %2342 ]
  br label %2346

2346:                                             ; preds = %2344, %2293
  %2347 = phi i32 [ 10, %2293 ], [ %2345, %2344 ]
  br label %2348

2348:                                             ; preds = %2346, %2285
  %2349 = phi i32 [ 8, %2285 ], [ %2347, %2346 ]
  br label %2350

2350:                                             ; preds = %2348, %2277
  %2351 = phi i32 [ 8, %2277 ], [ %2349, %2348 ]
  br label %2352

2352:                                             ; preds = %2350, %2269
  %2353 = phi i32 [ 6, %2269 ], [ %2351, %2350 ]
  br label %2354

2354:                                             ; preds = %2352, %2261
  %2355 = phi i32 [ 6, %2261 ], [ %2353, %2352 ]
  br label %2356

2356:                                             ; preds = %2354, %2253
  %2357 = phi i32 [ 5, %2253 ], [ %2355, %2354 ]
  br label %2358

2358:                                             ; preds = %2356, %2245
  %2359 = phi i32 [ 4, %2245 ], [ %2357, %2356 ]
  br label %2360

2360:                                             ; preds = %2358, %2237
  %2361 = phi i32 [ 3, %2237 ], [ %2359, %2358 ]
  br label %2362

2362:                                             ; preds = %2360, %2229
  %2363 = phi i32 [ 2, %2229 ], [ %2361, %2360 ]
  br label %2364

2364:                                             ; preds = %2362, %2221
  %2365 = phi i32 [ 1, %2221 ], [ %2363, %2362 ]
  br label %2366

2366:                                             ; preds = %2364, %2213
  %2367 = phi i32 [ 0, %2213 ], [ %2365, %2364 ]
  br label %2374

2368:                                             ; preds = %2199
  %2369 = load ptr, ptr %14, align 8, !tbaa !5
  %2370 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2369, i32 0, i32 3
  %2371 = load i8, ptr %2370, align 1, !tbaa !22
  %2372 = zext i8 %2371 to i32
  %2373 = ashr i32 %2372, 4
  br label %2374

2374:                                             ; preds = %2368, %2366
  %2375 = phi i32 [ %2367, %2366 ], [ %2373, %2368 ]
  %2376 = icmp eq i32 12, %2375
  br i1 %2376, label %2377, label %2378

2377:                                             ; preds = %2374
  br label %2561

2378:                                             ; preds = %2374
  %2379 = load ptr, ptr %14, align 8, !tbaa !5
  %2380 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2379, i32 0, i32 3
  %2381 = load i8, ptr %2380, align 1, !tbaa !22
  %2382 = zext i8 %2381 to i32
  %2383 = ashr i32 %2382, 4
  %2384 = icmp eq i32 0, %2383
  br i1 %2384, label %2385, label %2547

2385:                                             ; preds = %2378
  %2386 = load ptr, ptr %14, align 8, !tbaa !5
  %2387 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2386, i32 0, i32 3
  %2388 = load i8, ptr %2387, align 1, !tbaa !22
  %2389 = zext i8 %2388 to i32
  %2390 = and i32 %2389, 15
  %2391 = icmp eq i32 0, %2390
  br i1 %2391, label %2392, label %2393

2392:                                             ; preds = %2385
  br label %2545

2393:                                             ; preds = %2385
  %2394 = load ptr, ptr %14, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2394, i32 0, i32 3
  %2396 = load i8, ptr %2395, align 1, !tbaa !22
  %2397 = zext i8 %2396 to i32
  %2398 = and i32 %2397, 15
  %2399 = icmp eq i32 1, %2398
  br i1 %2399, label %2400, label %2401

2400:                                             ; preds = %2393
  br label %2543

2401:                                             ; preds = %2393
  %2402 = load ptr, ptr %14, align 8, !tbaa !5
  %2403 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2402, i32 0, i32 3
  %2404 = load i8, ptr %2403, align 1, !tbaa !22
  %2405 = zext i8 %2404 to i32
  %2406 = and i32 %2405, 15
  %2407 = icmp eq i32 2, %2406
  br i1 %2407, label %2408, label %2409

2408:                                             ; preds = %2401
  br label %2541

2409:                                             ; preds = %2401
  %2410 = load ptr, ptr %14, align 8, !tbaa !5
  %2411 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2410, i32 0, i32 3
  %2412 = load i8, ptr %2411, align 1, !tbaa !22
  %2413 = zext i8 %2412 to i32
  %2414 = and i32 %2413, 15
  %2415 = icmp eq i32 3, %2414
  br i1 %2415, label %2416, label %2417

2416:                                             ; preds = %2409
  br label %2539

2417:                                             ; preds = %2409
  %2418 = load ptr, ptr %14, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2418, i32 0, i32 3
  %2420 = load i8, ptr %2419, align 1, !tbaa !22
  %2421 = zext i8 %2420 to i32
  %2422 = and i32 %2421, 15
  %2423 = icmp eq i32 4, %2422
  br i1 %2423, label %2424, label %2425

2424:                                             ; preds = %2417
  br label %2537

2425:                                             ; preds = %2417
  %2426 = load ptr, ptr %14, align 8, !tbaa !5
  %2427 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2426, i32 0, i32 3
  %2428 = load i8, ptr %2427, align 1, !tbaa !22
  %2429 = zext i8 %2428 to i32
  %2430 = and i32 %2429, 15
  %2431 = icmp eq i32 5, %2430
  br i1 %2431, label %2432, label %2433

2432:                                             ; preds = %2425
  br label %2535

2433:                                             ; preds = %2425
  %2434 = load ptr, ptr %14, align 8, !tbaa !5
  %2435 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2434, i32 0, i32 3
  %2436 = load i8, ptr %2435, align 1, !tbaa !22
  %2437 = zext i8 %2436 to i32
  %2438 = and i32 %2437, 15
  %2439 = icmp eq i32 6, %2438
  br i1 %2439, label %2440, label %2441

2440:                                             ; preds = %2433
  br label %2533

2441:                                             ; preds = %2433
  %2442 = load ptr, ptr %14, align 8, !tbaa !5
  %2443 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2442, i32 0, i32 3
  %2444 = load i8, ptr %2443, align 1, !tbaa !22
  %2445 = zext i8 %2444 to i32
  %2446 = and i32 %2445, 15
  %2447 = icmp eq i32 7, %2446
  br i1 %2447, label %2448, label %2449

2448:                                             ; preds = %2441
  br label %2531

2449:                                             ; preds = %2441
  %2450 = load ptr, ptr %14, align 8, !tbaa !5
  %2451 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2450, i32 0, i32 3
  %2452 = load i8, ptr %2451, align 1, !tbaa !22
  %2453 = zext i8 %2452 to i32
  %2454 = and i32 %2453, 15
  %2455 = icmp eq i32 8, %2454
  br i1 %2455, label %2456, label %2457

2456:                                             ; preds = %2449
  br label %2529

2457:                                             ; preds = %2449
  %2458 = load ptr, ptr %14, align 8, !tbaa !5
  %2459 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2458, i32 0, i32 3
  %2460 = load i8, ptr %2459, align 1, !tbaa !22
  %2461 = zext i8 %2460 to i32
  %2462 = and i32 %2461, 15
  %2463 = icmp eq i32 9, %2462
  br i1 %2463, label %2464, label %2465

2464:                                             ; preds = %2457
  br label %2527

2465:                                             ; preds = %2457
  %2466 = load ptr, ptr %14, align 8, !tbaa !5
  %2467 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2466, i32 0, i32 3
  %2468 = load i8, ptr %2467, align 1, !tbaa !22
  %2469 = zext i8 %2468 to i32
  %2470 = and i32 %2469, 15
  %2471 = icmp eq i32 10, %2470
  br i1 %2471, label %2472, label %2473

2472:                                             ; preds = %2465
  br label %2525

2473:                                             ; preds = %2465
  %2474 = load ptr, ptr %14, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2474, i32 0, i32 3
  %2476 = load i8, ptr %2475, align 1, !tbaa !22
  %2477 = zext i8 %2476 to i32
  %2478 = and i32 %2477, 15
  %2479 = icmp eq i32 11, %2478
  br i1 %2479, label %2480, label %2481

2480:                                             ; preds = %2473
  br label %2523

2481:                                             ; preds = %2473
  %2482 = load ptr, ptr %14, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2482, i32 0, i32 3
  %2484 = load i8, ptr %2483, align 1, !tbaa !22
  %2485 = zext i8 %2484 to i32
  %2486 = and i32 %2485, 15
  %2487 = icmp eq i32 12, %2486
  br i1 %2487, label %2488, label %2489

2488:                                             ; preds = %2481
  br label %2521

2489:                                             ; preds = %2481
  %2490 = load ptr, ptr %14, align 8, !tbaa !5
  %2491 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2490, i32 0, i32 3
  %2492 = load i8, ptr %2491, align 1, !tbaa !22
  %2493 = zext i8 %2492 to i32
  %2494 = and i32 %2493, 15
  %2495 = icmp eq i32 13, %2494
  br i1 %2495, label %2496, label %2497

2496:                                             ; preds = %2489
  br label %2519

2497:                                             ; preds = %2489
  %2498 = load ptr, ptr %14, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2498, i32 0, i32 3
  %2500 = load i8, ptr %2499, align 1, !tbaa !22
  %2501 = zext i8 %2500 to i32
  %2502 = and i32 %2501, 15
  %2503 = icmp eq i32 14, %2502
  br i1 %2503, label %2504, label %2505

2504:                                             ; preds = %2497
  br label %2517

2505:                                             ; preds = %2497
  %2506 = load ptr, ptr %14, align 8, !tbaa !5
  %2507 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2506, i32 0, i32 3
  %2508 = load i8, ptr %2507, align 1, !tbaa !22
  %2509 = zext i8 %2508 to i32
  %2510 = and i32 %2509, 15
  %2511 = icmp eq i32 15, %2510
  br i1 %2511, label %2512, label %2513

2512:                                             ; preds = %2505
  br label %2515

2513:                                             ; preds = %2505
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

2514:                                             ; No predecessors!
  br label %2515

2515:                                             ; preds = %2514, %2512
  %2516 = phi i32 [ 15, %2512 ], [ 0, %2514 ]
  br label %2517

2517:                                             ; preds = %2515, %2504
  %2518 = phi i32 [ 14, %2504 ], [ %2516, %2515 ]
  br label %2519

2519:                                             ; preds = %2517, %2496
  %2520 = phi i32 [ 12, %2496 ], [ %2518, %2517 ]
  br label %2521

2521:                                             ; preds = %2519, %2488
  %2522 = phi i32 [ 12, %2488 ], [ %2520, %2519 ]
  br label %2523

2523:                                             ; preds = %2521, %2480
  %2524 = phi i32 [ 10, %2480 ], [ %2522, %2521 ]
  br label %2525

2525:                                             ; preds = %2523, %2472
  %2526 = phi i32 [ 10, %2472 ], [ %2524, %2523 ]
  br label %2527

2527:                                             ; preds = %2525, %2464
  %2528 = phi i32 [ 8, %2464 ], [ %2526, %2525 ]
  br label %2529

2529:                                             ; preds = %2527, %2456
  %2530 = phi i32 [ 8, %2456 ], [ %2528, %2527 ]
  br label %2531

2531:                                             ; preds = %2529, %2448
  %2532 = phi i32 [ 6, %2448 ], [ %2530, %2529 ]
  br label %2533

2533:                                             ; preds = %2531, %2440
  %2534 = phi i32 [ 6, %2440 ], [ %2532, %2531 ]
  br label %2535

2535:                                             ; preds = %2533, %2432
  %2536 = phi i32 [ 5, %2432 ], [ %2534, %2533 ]
  br label %2537

2537:                                             ; preds = %2535, %2424
  %2538 = phi i32 [ 4, %2424 ], [ %2536, %2535 ]
  br label %2539

2539:                                             ; preds = %2537, %2416
  %2540 = phi i32 [ 3, %2416 ], [ %2538, %2537 ]
  br label %2541

2541:                                             ; preds = %2539, %2408
  %2542 = phi i32 [ 2, %2408 ], [ %2540, %2539 ]
  br label %2543

2543:                                             ; preds = %2541, %2400
  %2544 = phi i32 [ 1, %2400 ], [ %2542, %2541 ]
  br label %2545

2545:                                             ; preds = %2543, %2392
  %2546 = phi i32 [ 0, %2392 ], [ %2544, %2543 ]
  br label %2553

2547:                                             ; preds = %2378
  %2548 = load ptr, ptr %14, align 8, !tbaa !5
  %2549 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2548, i32 0, i32 3
  %2550 = load i8, ptr %2549, align 1, !tbaa !22
  %2551 = zext i8 %2550 to i32
  %2552 = ashr i32 %2551, 4
  br label %2553

2553:                                             ; preds = %2547, %2545
  %2554 = phi i32 [ %2546, %2545 ], [ %2552, %2547 ]
  %2555 = icmp eq i32 13, %2554
  br i1 %2555, label %2556, label %2557

2556:                                             ; preds = %2553
  br label %2559

2557:                                             ; preds = %2553
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 343, ptr noundef @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #5
  unreachable

2558:                                             ; No predecessors!
  br label %2559

2559:                                             ; preds = %2558, %2556
  %2560 = phi i32 [ 1, %2556 ], [ 0, %2558 ]
  br label %2561

2561:                                             ; preds = %2559, %2377
  %2562 = phi i32 [ 1, %2377 ], [ %2560, %2559 ]
  br label %2563

2563:                                             ; preds = %2561, %2198
  %2564 = phi i32 [ 2, %2198 ], [ %2562, %2561 ]
  br label %2565

2565:                                             ; preds = %2563, %2019
  %2566 = phi i32 [ 2, %2019 ], [ %2564, %2563 ]
  br label %2567

2567:                                             ; preds = %2565, %1840
  %2568 = phi i32 [ 4, %1840 ], [ %2566, %2565 ]
  br label %2569

2569:                                             ; preds = %2567, %1661
  %2570 = phi i32 [ 4, %1661 ], [ %2568, %2567 ]
  br label %2571

2571:                                             ; preds = %2569, %1482
  %2572 = phi i32 [ 8, %1482 ], [ %2570, %2569 ]
  br label %2573

2573:                                             ; preds = %2571, %1303
  %2574 = phi i32 [ 8, %1303 ], [ %2572, %2571 ]
  br label %2575

2575:                                             ; preds = %2573, %1124
  %2576 = phi i32 [ 1, %1124 ], [ %2574, %2573 ]
  br label %2577

2577:                                             ; preds = %2575, %945
  %2578 = phi i32 [ 1, %945 ], [ %2576, %2575 ]
  br label %2579

2579:                                             ; preds = %2577, %766
  %2580 = phi i32 [ 2, %766 ], [ %2578, %2577 ]
  br label %2581

2581:                                             ; preds = %2579, %587
  %2582 = phi i32 [ 2, %587 ], [ %2580, %2579 ]
  br label %2583

2583:                                             ; preds = %2581, %408
  %2584 = phi i32 [ 4, %408 ], [ %2582, %2581 ]
  br label %2585

2585:                                             ; preds = %2583, %229
  %2586 = phi i32 [ 8, %229 ], [ %2584, %2583 ]
  %2587 = icmp eq i32 %2586, 8
  %2588 = zext i1 %2587 to i64
  %2589 = select i1 %2587, i32 8, i32 4
  store i32 %2589, ptr %29, align 4, !tbaa !9
  %2590 = load ptr, ptr %14, align 8, !tbaa !5
  %2591 = load i32, ptr %15, align 4, !tbaa !9
  %2592 = load i32, ptr %16, align 4, !tbaa !9
  %2593 = load i32, ptr %25, align 4, !tbaa !9
  %2594 = urem i32 %2592, %2593
  store i32 %2594, ptr %23, align 4, !tbaa !9
  %2595 = load i32, ptr %16, align 4, !tbaa !9
  %2596 = load i32, ptr %26, align 4, !tbaa !9
  %2597 = urem i32 %2595, %2596
  store i32 %2597, ptr %24, align 4, !tbaa !9
  %2598 = load i8, ptr %28, align 1, !tbaa !21
  %2599 = icmp ne i8 %2598, 0
  br i1 %2599, label %2600, label %2679

2600:                                             ; preds = %2585
  %2601 = load ptr, ptr %11, align 8, !tbaa !5
  %2602 = load i32, ptr %27, align 4, !tbaa !9
  %2603 = load i32, ptr %25, align 4, !tbaa !9
  %2604 = mul i32 %2603, 2
  %2605 = load ptr, ptr %12, align 8, !tbaa !5
  %2606 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2605, i32 0, i32 15
  %2607 = load i32, ptr %2606, align 4, !tbaa !24
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %2601, i32 noundef %2602, i32 noundef %2604, i32 noundef %2607)
  %2608 = load i32, ptr %27, align 4, !tbaa !9
  %2609 = load ptr, ptr %13, align 8, !tbaa !5
  %2610 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2609, i32 0, i32 23
  store i32 %2608, ptr %2610, align 4, !tbaa !28
  %2611 = load i32, ptr %27, align 4, !tbaa !9
  %2612 = add i32 %2611, 1
  store i32 %2612, ptr %27, align 4, !tbaa !9
  %2613 = load i32, ptr %23, align 4, !tbaa !9
  %2614 = icmp ne i32 %2613, 0
  br i1 %2614, label %2615, label %2645

2615:                                             ; preds = %2600
  %2616 = load ptr, ptr %11, align 8, !tbaa !5
  %2617 = load i32, ptr %27, align 4, !tbaa !9
  %2618 = load i32, ptr %16, align 4, !tbaa !9
  %2619 = load i32, ptr %25, align 4, !tbaa !9
  %2620 = urem i32 %2618, %2619
  %2621 = load i32, ptr %29, align 4, !tbaa !9
  %2622 = mul i32 %2620, %2621
  %2623 = load ptr, ptr %12, align 8, !tbaa !5
  %2624 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2623, i32 0, i32 15
  %2625 = load i32, ptr %2624, align 4, !tbaa !24
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %2616, i32 noundef %2617, i32 noundef %2622, i32 noundef %2625)
  %2626 = load i32, ptr %27, align 4, !tbaa !9
  %2627 = load ptr, ptr %13, align 8, !tbaa !5
  %2628 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2627, i32 0, i32 19
  store i32 %2626, ptr %2628, align 4, !tbaa !29
  %2629 = load ptr, ptr %11, align 8, !tbaa !5
  %2630 = load i32, ptr %27, align 4, !tbaa !9
  %2631 = add i32 %2630, 1
  %2632 = load i32, ptr %16, align 4, !tbaa !9
  %2633 = load i32, ptr %25, align 4, !tbaa !9
  %2634 = urem i32 %2632, %2633
  %2635 = mul i32 %2634, 2
  %2636 = load ptr, ptr %12, align 8, !tbaa !5
  %2637 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2636, i32 0, i32 15
  %2638 = load i32, ptr %2637, align 4, !tbaa !24
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %2629, i32 noundef %2631, i32 noundef %2635, i32 noundef %2638)
  %2639 = load i32, ptr %27, align 4, !tbaa !9
  %2640 = add i32 %2639, 1
  %2641 = load ptr, ptr %13, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2641, i32 0, i32 20
  store i32 %2640, ptr %2642, align 8, !tbaa !30
  %2643 = load i32, ptr %27, align 4, !tbaa !9
  %2644 = add i32 %2643, 2
  store i32 %2644, ptr %27, align 4, !tbaa !9
  br label %2645

2645:                                             ; preds = %2615, %2600
  %2646 = load i32, ptr %24, align 4, !tbaa !9
  %2647 = icmp ne i32 %2646, 0
  br i1 %2647, label %2648, label %2678

2648:                                             ; preds = %2645
  %2649 = load ptr, ptr %11, align 8, !tbaa !5
  %2650 = load i32, ptr %27, align 4, !tbaa !9
  %2651 = load i32, ptr %16, align 4, !tbaa !9
  %2652 = load i32, ptr %26, align 4, !tbaa !9
  %2653 = urem i32 %2651, %2652
  %2654 = load i32, ptr %29, align 4, !tbaa !9
  %2655 = mul i32 %2653, %2654
  %2656 = load ptr, ptr %12, align 8, !tbaa !5
  %2657 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2656, i32 0, i32 15
  %2658 = load i32, ptr %2657, align 4, !tbaa !24
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %2649, i32 noundef %2650, i32 noundef %2655, i32 noundef %2658)
  %2659 = load i32, ptr %27, align 4, !tbaa !9
  %2660 = load ptr, ptr %13, align 8, !tbaa !5
  %2661 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2660, i32 0, i32 21
  store i32 %2659, ptr %2661, align 4, !tbaa !31
  %2662 = load ptr, ptr %11, align 8, !tbaa !5
  %2663 = load i32, ptr %27, align 4, !tbaa !9
  %2664 = add i32 %2663, 1
  %2665 = load i32, ptr %16, align 4, !tbaa !9
  %2666 = load i32, ptr %26, align 4, !tbaa !9
  %2667 = urem i32 %2665, %2666
  %2668 = mul i32 %2667, 2
  %2669 = load ptr, ptr %12, align 8, !tbaa !5
  %2670 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2669, i32 0, i32 15
  %2671 = load i32, ptr %2670, align 4, !tbaa !24
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %2662, i32 noundef %2664, i32 noundef %2668, i32 noundef %2671)
  %2672 = load i32, ptr %27, align 4, !tbaa !9
  %2673 = add i32 %2672, 1
  %2674 = load ptr, ptr %13, align 8, !tbaa !5
  %2675 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2674, i32 0, i32 22
  store i32 %2673, ptr %2675, align 8, !tbaa !32
  %2676 = load i32, ptr %27, align 4, !tbaa !9
  %2677 = add i32 %2676, 2
  store i32 %2677, ptr %27, align 4, !tbaa !9
  br label %2678

2678:                                             ; preds = %2648, %2645
  br label %2686

2679:                                             ; preds = %2585
  %2680 = load i32, ptr %16, align 4, !tbaa !9
  %2681 = load i32, ptr %25, align 4, !tbaa !9
  %2682 = urem i32 %2680, %2681
  store i32 %2682, ptr %21, align 4, !tbaa !9
  %2683 = load i32, ptr %16, align 4, !tbaa !9
  %2684 = load i32, ptr %26, align 4, !tbaa !9
  %2685 = urem i32 %2683, %2684
  store i32 %2685, ptr %22, align 4, !tbaa !9
  br label %2686

2686:                                             ; preds = %2679, %2678
  %2687 = load i32, ptr %27, align 4, !tbaa !9
  %2688 = load ptr, ptr %13, align 8, !tbaa !5
  %2689 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2688, i32 0, i32 55
  store i32 %2687, ptr %2689, align 4, !tbaa !18
  %2690 = load i32, ptr %21, align 4, !tbaa !9
  %2691 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 %2690, ptr %2691, align 4, !tbaa !9
  %2692 = load i32, ptr %23, align 4, !tbaa !9
  %2693 = load ptr, ptr %17, align 8, !tbaa !5
  store i32 %2692, ptr %2693, align 4, !tbaa !9
  %2694 = load i32, ptr %22, align 4, !tbaa !9
  %2695 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 %2694, ptr %2695, align 4, !tbaa !9
  %2696 = load i32, ptr %24, align 4, !tbaa !9
  %2697 = load ptr, ptr %19, align 8, !tbaa !5
  store i32 %2696, ptr %2697, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  ret void
}

declare void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!12, !10, i64 60}
!12 = !{!"libxsmm_matequation_kernel_config_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !7, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !7, i64 188, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !6, i64 336, !6, i64 344, !10, i64 352, !10, i64 356, !10, i64 360, !7, i64 364, !7, i64 620, !13, i64 876, !14, i64 1392}
!13 = !{!"libxsmm_mateltwise_kernel_config_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !10, i64 388, !10, i64 392, !10, i64 396, !10, i64 400, !10, i64 404, !10, i64 408, !10, i64 412, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !10, i64 432, !10, i64 436, !10, i64 440, !10, i64 444, !10, i64 448, !10, i64 452, !10, i64 456, !10, i64 460, !10, i64 464, !10, i64 468, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !10, i64 488, !10, i64 492, !10, i64 496, !10, i64 500, !10, i64 504, !10, i64 508, !7, i64 512}
!14 = !{!"libxsmm_micro_kernel_config", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !7, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !10, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !7, i64 364, !7, i64 380, !7, i64 396, !7, i64 412, !7, i64 428, !7, i64 444, !10, i64 460, !7, i64 464, !15, i64 520, !10, i64 556, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !6, i64 592, !10, i64 600, !10, i64 604, !10, i64 608, !10, i64 612, !6, i64 616, !10, i64 624, !10, i64 628, !10, i64 632, !10, i64 636, !10, i64 640, !10, i64 644, !10, i64 648, !10, i64 652, !10, i64 656, !10, i64 660, !10, i64 664, !10, i64 668, !10, i64 672, !10, i64 676, !10, i64 680}
!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 = !{!12, !10, i64 68}
!18 = !{!12, !10, i64 356}
!19 = !{!20, !10, i64 28}
!20 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!21 = !{!7, !7, i64 0}
!22 = !{!23, !7, i64 12}
!23 = !{!"libxsmm_meqn_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 13}
!24 = !{!25, !10, i64 60}
!25 = !{!"libxsmm_matequation_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !26, i64 72, !27, i64 220}
!26 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144}
!27 = !{!"libxsmm_gp_reg_mapping_struct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128}
!28 = !{!12, !10, i64 92}
!29 = !{!12, !10, i64 76}
!30 = !{!12, !10, i64 80}
!31 = !{!12, !10, i64 84}
!32 = !{!12, !10, i64 88}


; 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 [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [95 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64 = external hidden unnamed_addr constant [277 x i8], align 1
@switch.table.libxsmm_meqn_setup_input_output_masks_aarch64 = private unnamed_addr constant [14 x i32] [i32 8, i32 4, i32 4, i32 4, i32 4, i32 4, i32 8, i32 8, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4], align 4

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_meqn_setup_input_output_masks_aarch64(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef %2, ptr nocapture noundef readonly %3, i32 noundef %4, i32 noundef %5, ptr nocapture noundef writeonly %6, ptr nocapture noundef writeonly %7, ptr nocapture noundef writeonly %8, ptr nocapture noundef writeonly %9) local_unnamed_addr #1 {
  %11 = getelementptr inbounds i8, ptr %2, i64 60
  %12 = load i32, ptr %11, align 4, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %2, i64 68
  %14 = load i32, ptr %13, align 4, !tbaa !15
  %15 = getelementptr inbounds i8, ptr %2, i64 356
  %16 = load i32, ptr %15, align 4, !tbaa !16
  %17 = getelementptr inbounds i8, ptr %0, i64 28
  %18 = load i32, ptr %17, align 4, !tbaa !17
  %19 = add i32 %18, -2201
  %spec.select = icmp ult i32 %19, 799
  %20 = getelementptr inbounds i8, ptr %3, i64 12
  %21 = load i8, ptr %20, align 1, !tbaa !19
  %22 = icmp ult i8 %21, 16
  br i1 %22, label %23, label %25

23:                                               ; preds = %10
  %24 = icmp ult i8 %21, 14
  br i1 %24, label %switch.lookup, label %.critedge525

25:                                               ; preds = %10
  %.mask675 = and i8 %21, -16
  %26 = icmp eq i8 %.mask675, 32
  %27 = and i8 %21, -48
  %28 = icmp eq i8 %27, 16
  %or.cond686 = or i1 %28, %26
  %29 = and i8 %21, -32
  %30 = icmp eq i8 %29, 64
  %or.cond688 = or i1 %30, %or.cond686
  br i1 %or.cond688, label %.critedge523, label %31

31:                                               ; preds = %25
  %32 = and i8 %21, -32
  %or.cond689 = icmp eq i8 %32, 96
  br i1 %or.cond689, label %.critedge523, label %33

33:                                               ; preds = %31
  %34 = and i8 %21, -32
  %or.cond690 = icmp eq i8 %34, -128
  %35 = icmp eq i8 %.mask675, -96
  %or.cond691 = or i1 %35, %or.cond690
  br i1 %or.cond691, label %.critedge523, label %36

36:                                               ; preds = %33
  %37 = icmp eq i8 %.mask675, -80
  %38 = and i8 %21, -32
  %39 = icmp eq i8 %38, -64
  %or.cond692 = or i1 %37, %39
  br i1 %or.cond692, label %.critedge523, label %.critedge525

.critedge525:                                     ; preds = %23, %36
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 343, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_meqn_setup_input_output_masks_aarch64) #3
  unreachable

switch.lookup:                                    ; preds = %23
  %40 = zext nneg i8 %21 to i64
  %switch.gep = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_meqn_setup_input_output_masks_aarch64, i64 0, i64 %40
  %switch.load = load i32, ptr %switch.gep, align 4
  br label %.critedge523

.critedge523:                                     ; preds = %switch.lookup, %25, %36, %33, %31
  %41 = phi i32 [ 4, %25 ], [ 8, %31 ], [ 4, %33 ], [ 4, %36 ], [ %switch.load, %switch.lookup ]
  %42 = urem i32 %5, %12
  %43 = urem i32 %5, %14
  br i1 %spec.select, label %44, label %69

44:                                               ; preds = %.critedge523
  %45 = shl i32 %12, 1
  %46 = getelementptr inbounds i8, ptr %1, i64 60
  %47 = load i32, ptr %46, align 4, !tbaa !21
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef %16, i32 noundef %45, i32 noundef %47) #4
  %48 = getelementptr inbounds i8, ptr %2, i64 92
  store i32 %16, ptr %48, align 4, !tbaa !25
  %49 = add i32 %16, 1
  %.not = icmp eq i32 %42, 0
  br i1 %.not, label %59, label %50

50:                                               ; preds = %44
  %51 = mul i32 %42, %41
  %52 = load i32, ptr %46, align 4, !tbaa !21
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef %49, i32 noundef %51, i32 noundef %52) #4
  %53 = getelementptr inbounds i8, ptr %2, i64 76
  store i32 %49, ptr %53, align 4, !tbaa !26
  %54 = add i32 %16, 2
  %55 = shl i32 %42, 1
  %56 = load i32, ptr %46, align 4, !tbaa !21
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef %54, i32 noundef %55, i32 noundef %56) #4
  %57 = getelementptr inbounds i8, ptr %2, i64 80
  store i32 %54, ptr %57, align 8, !tbaa !27
  %58 = add i32 %16, 3
  br label %59

59:                                               ; preds = %50, %44
  %.0319 = phi i32 [ %58, %50 ], [ %49, %44 ]
  %.not352 = icmp eq i32 %43, 0
  br i1 %.not352, label %69, label %60

60:                                               ; preds = %59
  %61 = mul i32 %43, %41
  %62 = load i32, ptr %46, align 4, !tbaa !21
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef %.0319, i32 noundef %61, i32 noundef %62) #4
  %63 = getelementptr inbounds i8, ptr %2, i64 84
  store i32 %.0319, ptr %63, align 4, !tbaa !28
  %64 = add i32 %.0319, 1
  %65 = shl i32 %43, 1
  %66 = load i32, ptr %46, align 4, !tbaa !21
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef %64, i32 noundef %65, i32 noundef %66) #4
  %67 = getelementptr inbounds i8, ptr %2, i64 88
  store i32 %64, ptr %67, align 8, !tbaa !29
  %68 = add i32 %.0319, 2
  br label %69

69:                                               ; preds = %.critedge523, %59, %60
  %.1 = phi i32 [ %68, %60 ], [ %.0319, %59 ], [ %16, %.critedge523 ]
  %.0318 = phi i32 [ 0, %60 ], [ 0, %59 ], [ %43, %.critedge523 ]
  %.0 = phi i32 [ 0, %60 ], [ 0, %59 ], [ %42, %.critedge523 ]
  store i32 %.1, ptr %15, align 4, !tbaa !16
  store i32 %.0, ptr %7, align 4, !tbaa !30
  store i32 %42, ptr %6, align 4, !tbaa !30
  store i32 %.0318, ptr %9, align 4, !tbaa !30
  store i32 %43, ptr %8, align 4, !tbaa !30
  ret void
}

declare void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

attributes #0 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { "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 = { noreturn nounwind }
attributes #4 = { 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, !7, i64 60}
!6 = !{!"libxsmm_matequation_kernel_config_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !8, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184, !8, i64 188, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !10, i64 336, !10, i64 344, !7, i64 352, !7, i64 356, !7, i64 360, !8, i64 364, !8, i64 620, !11, i64 876, !12, i64 1392}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"libxsmm_mateltwise_kernel_config_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184, !7, i64 188, !7, i64 192, !7, i64 196, !7, i64 200, !7, i64 204, !7, i64 208, !7, i64 212, !7, i64 216, !7, i64 220, !7, i64 224, !7, i64 228, !7, i64 232, !7, i64 236, !7, i64 240, !7, i64 244, !7, i64 248, !7, i64 252, !7, i64 256, !7, i64 260, !7, i64 264, !7, i64 268, !7, i64 272, !7, i64 276, !7, i64 280, !7, i64 284, !7, i64 288, !7, i64 292, !7, i64 296, !7, i64 300, !7, i64 304, !7, i64 308, !7, i64 312, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !7, i64 344, !7, i64 348, !7, i64 352, !7, i64 356, !7, i64 360, !7, i64 364, !7, i64 368, !7, i64 372, !7, i64 376, !7, i64 380, !7, i64 384, !7, i64 388, !7, i64 392, !7, i64 396, !7, i64 400, !7, i64 404, !7, i64 408, !7, i64 412, !7, i64 416, !7, i64 420, !7, i64 424, !7, i64 428, !7, i64 432, !7, i64 436, !7, i64 440, !7, i64 444, !7, i64 448, !7, i64 452, !7, i64 456, !7, i64 460, !7, i64 464, !7, i64 468, !7, i64 472, !7, i64 476, !7, i64 480, !7, i64 484, !7, i64 488, !7, i64 492, !7, i64 496, !7, i64 500, !7, i64 504, !7, i64 508, !8, i64 512}
!12 = !{!"libxsmm_micro_kernel_config", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !8, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184, !7, i64 188, !7, i64 192, !7, i64 196, !7, i64 200, !7, i64 204, !7, i64 208, !7, i64 212, !7, i64 216, !7, i64 220, !7, i64 224, !7, i64 228, !7, i64 232, !7, i64 236, !7, i64 240, !7, i64 244, !7, i64 248, !7, i64 252, !7, i64 256, !7, i64 260, !7, i64 264, !7, i64 268, !7, i64 272, !7, i64 276, !7, i64 280, !7, i64 284, !7, i64 288, !7, i64 292, !7, i64 296, !7, i64 300, !7, i64 304, !7, i64 308, !7, i64 312, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !7, i64 344, !7, i64 348, !7, i64 352, !7, i64 356, !7, i64 360, !8, i64 364, !8, i64 380, !8, i64 396, !8, i64 412, !8, i64 428, !8, i64 444, !7, i64 460, !8, i64 464, !13, i64 520, !7, i64 556, !7, i64 560, !7, i64 564, !7, i64 568, !7, i64 572, !7, i64 576, !7, i64 580, !7, i64 584, !10, i64 592, !7, i64 600, !7, i64 604, !7, i64 608, !7, i64 612, !10, i64 616, !7, i64 624, !7, i64 628, !7, i64 632, !7, i64 636, !7, i64 640, !7, i64 644, !7, i64 648, !7, i64 652, !7, i64 656, !7, i64 660, !7, i64 664, !7, i64 668, !7, i64 672, !7, i64 676, !7, i64 680}
!13 = !{!"libxsmm_tile_config", !8, i64 0, !14, i64 2, !8, i64 4, !14, i64 6, !8, i64 8, !14, i64 10, !8, i64 12, !14, i64 14, !8, i64 16, !14, i64 18, !8, i64 20, !14, i64 22, !8, i64 24, !14, i64 26, !8, i64 28, !14, i64 30, !8, i64 32}
!14 = !{!"short", !8, i64 0}
!15 = !{!6, !7, i64 68}
!16 = !{!6, !7, i64 356}
!17 = !{!18, !7, i64 28}
!18 = !{!"libxsmm_generated_code", !10, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!19 = !{!20, !8, i64 12}
!20 = !{!"libxsmm_meqn_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !8, i64 12, !7, i64 13}
!21 = !{!22, !7, i64 60}
!22 = !{!"libxsmm_matequation_gp_reg_mapping_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !23, i64 72, !24, i64 220}
!23 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144}
!24 = !{!"libxsmm_gp_reg_mapping_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128}
!25 = !{!6, !7, i64 92}
!26 = !{!6, !7, i64 76}
!27 = !{!6, !7, i64 80}
!28 = !{!6, !7, i64 84}
!29 = !{!6, !7, i64 88}
!30 = !{!7, !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass