; 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_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 }
%struct.libxsmm_meqn_arg = type { i32, i32, i32, i32, i32, i32, i32, %struct.libxsmm_matrix_arg_attributes }
%struct.libxsmm_matrix_arg_attributes = type { 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_generator_mateqn_adjust_args_addr_aarch64 = external hidden unnamed_addr constant [251 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

declare void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i64 noundef) #1

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

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

; 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) #2

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_mateqn_adjust_args_addr_aarch64(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, ptr noundef %7) #3 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store i32 %4, ptr %13, align 4, !tbaa !9
  store i32 %5, ptr %14, align 4, !tbaa !9
  store i32 %6, ptr %15, align 4, !tbaa !9
  store ptr %7, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  %25 = load ptr, ptr %12, align 8, !tbaa !5
  %26 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %25, i32 0, i32 13
  %27 = load i32, ptr %26, align 4, !tbaa !11
  store i32 %27, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  %28 = load ptr, ptr %10, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %28, i32 0, i32 3
  %30 = load i8, ptr %29, align 1, !tbaa !17
  %31 = zext i8 %30 to i32
  %32 = ashr i32 %31, 4
  %33 = icmp eq i32 0, %32
  br i1 %33, label %34, label %196

34:                                               ; preds = %8
  %35 = load ptr, ptr %10, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %35, i32 0, i32 3
  %37 = load i8, ptr %36, align 1, !tbaa !17
  %38 = zext i8 %37 to i32
  %39 = and i32 %38, 15
  %40 = icmp eq i32 0, %39
  br i1 %40, label %41, label %42

41:                                               ; preds = %34
  br label %194

42:                                               ; preds = %34
  %43 = load ptr, ptr %10, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %43, i32 0, i32 3
  %45 = load i8, ptr %44, align 1, !tbaa !17
  %46 = zext i8 %45 to i32
  %47 = and i32 %46, 15
  %48 = icmp eq i32 1, %47
  br i1 %48, label %49, label %50

49:                                               ; preds = %42
  br label %192

50:                                               ; preds = %42
  %51 = load ptr, ptr %10, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %51, i32 0, i32 3
  %53 = load i8, ptr %52, align 1, !tbaa !17
  %54 = zext i8 %53 to i32
  %55 = and i32 %54, 15
  %56 = icmp eq i32 2, %55
  br i1 %56, label %57, label %58

57:                                               ; preds = %50
  br label %190

58:                                               ; preds = %50
  %59 = load ptr, ptr %10, 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 !17
  %62 = zext i8 %61 to i32
  %63 = and i32 %62, 15
  %64 = icmp eq i32 3, %63
  br i1 %64, label %65, label %66

65:                                               ; preds = %58
  br label %188

66:                                               ; preds = %58
  %67 = load ptr, ptr %10, 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 !17
  %70 = zext i8 %69 to i32
  %71 = and i32 %70, 15
  %72 = icmp eq i32 4, %71
  br i1 %72, label %73, label %74

73:                                               ; preds = %66
  br label %186

74:                                               ; preds = %66
  %75 = load ptr, ptr %10, 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 !17
  %78 = zext i8 %77 to i32
  %79 = and i32 %78, 15
  %80 = icmp eq i32 5, %79
  br i1 %80, label %81, label %82

81:                                               ; preds = %74
  br label %184

82:                                               ; preds = %74
  %83 = load ptr, ptr %10, 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 !17
  %86 = zext i8 %85 to i32
  %87 = and i32 %86, 15
  %88 = icmp eq i32 6, %87
  br i1 %88, label %89, label %90

89:                                               ; preds = %82
  br label %182

90:                                               ; preds = %82
  %91 = load ptr, ptr %10, 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 !17
  %94 = zext i8 %93 to i32
  %95 = and i32 %94, 15
  %96 = icmp eq i32 7, %95
  br i1 %96, label %97, label %98

97:                                               ; preds = %90
  br label %180

98:                                               ; preds = %90
  %99 = load ptr, ptr %10, 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 !17
  %102 = zext i8 %101 to i32
  %103 = and i32 %102, 15
  %104 = icmp eq i32 8, %103
  br i1 %104, label %105, label %106

105:                                              ; preds = %98
  br label %178

106:                                              ; preds = %98
  %107 = load ptr, ptr %10, 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 !17
  %110 = zext i8 %109 to i32
  %111 = and i32 %110, 15
  %112 = icmp eq i32 9, %111
  br i1 %112, label %113, label %114

113:                                              ; preds = %106
  br label %176

114:                                              ; preds = %106
  %115 = load ptr, ptr %10, 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 !17
  %118 = zext i8 %117 to i32
  %119 = and i32 %118, 15
  %120 = icmp eq i32 10, %119
  br i1 %120, label %121, label %122

121:                                              ; preds = %114
  br label %174

122:                                              ; preds = %114
  %123 = load ptr, ptr %10, 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 !17
  %126 = zext i8 %125 to i32
  %127 = and i32 %126, 15
  %128 = icmp eq i32 11, %127
  br i1 %128, label %129, label %130

129:                                              ; preds = %122
  br label %172

130:                                              ; preds = %122
  %131 = load ptr, ptr %10, 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 !17
  %134 = zext i8 %133 to i32
  %135 = and i32 %134, 15
  %136 = icmp eq i32 12, %135
  br i1 %136, label %137, label %138

137:                                              ; preds = %130
  br label %170

138:                                              ; preds = %130
  %139 = load ptr, ptr %10, 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 !17
  %142 = zext i8 %141 to i32
  %143 = and i32 %142, 15
  %144 = icmp eq i32 13, %143
  br i1 %144, label %145, label %146

145:                                              ; preds = %138
  br label %168

146:                                              ; preds = %138
  %147 = load ptr, ptr %10, 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 !17
  %150 = zext i8 %149 to i32
  %151 = and i32 %150, 15
  %152 = icmp eq i32 14, %151
  br i1 %152, label %153, label %154

153:                                              ; preds = %146
  br label %166

154:                                              ; preds = %146
  %155 = load ptr, ptr %10, 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 !17
  %158 = zext i8 %157 to i32
  %159 = and i32 %158, 15
  %160 = icmp eq i32 15, %159
  br i1 %160, label %161, label %162

161:                                              ; preds = %154
  br label %164

162:                                              ; preds = %154
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

163:                                              ; No predecessors!
  br label %164

164:                                              ; preds = %163, %161
  %165 = phi i32 [ 15, %161 ], [ 0, %163 ]
  br label %166

166:                                              ; preds = %164, %153
  %167 = phi i32 [ 14, %153 ], [ %165, %164 ]
  br label %168

168:                                              ; preds = %166, %145
  %169 = phi i32 [ 12, %145 ], [ %167, %166 ]
  br label %170

170:                                              ; preds = %168, %137
  %171 = phi i32 [ 12, %137 ], [ %169, %168 ]
  br label %172

172:                                              ; preds = %170, %129
  %173 = phi i32 [ 10, %129 ], [ %171, %170 ]
  br label %174

174:                                              ; preds = %172, %121
  %175 = phi i32 [ 10, %121 ], [ %173, %172 ]
  br label %176

176:                                              ; preds = %174, %113
  %177 = phi i32 [ 8, %113 ], [ %175, %174 ]
  br label %178

178:                                              ; preds = %176, %105
  %179 = phi i32 [ 8, %105 ], [ %177, %176 ]
  br label %180

180:                                              ; preds = %178, %97
  %181 = phi i32 [ 6, %97 ], [ %179, %178 ]
  br label %182

182:                                              ; preds = %180, %89
  %183 = phi i32 [ 6, %89 ], [ %181, %180 ]
  br label %184

184:                                              ; preds = %182, %81
  %185 = phi i32 [ 5, %81 ], [ %183, %182 ]
  br label %186

186:                                              ; preds = %184, %73
  %187 = phi i32 [ 4, %73 ], [ %185, %184 ]
  br label %188

188:                                              ; preds = %186, %65
  %189 = phi i32 [ 3, %65 ], [ %187, %186 ]
  br label %190

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

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

194:                                              ; preds = %192, %41
  %195 = phi i32 [ 0, %41 ], [ %193, %192 ]
  br label %202

196:                                              ; preds = %8
  %197 = load ptr, ptr %10, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %197, i32 0, i32 3
  %199 = load i8, ptr %198, align 1, !tbaa !17
  %200 = zext i8 %199 to i32
  %201 = ashr i32 %200, 4
  br label %202

202:                                              ; preds = %196, %194
  %203 = phi i32 [ %195, %194 ], [ %201, %196 ]
  %204 = icmp eq i32 0, %203
  br i1 %204, label %205, label %206

205:                                              ; preds = %202
  br label %2561

206:                                              ; preds = %202
  %207 = load ptr, ptr %10, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %207, i32 0, i32 3
  %209 = load i8, ptr %208, align 1, !tbaa !17
  %210 = zext i8 %209 to i32
  %211 = ashr i32 %210, 4
  %212 = icmp eq i32 0, %211
  br i1 %212, label %213, label %375

213:                                              ; preds = %206
  %214 = load ptr, ptr %10, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %214, i32 0, i32 3
  %216 = load i8, ptr %215, align 1, !tbaa !17
  %217 = zext i8 %216 to i32
  %218 = and i32 %217, 15
  %219 = icmp eq i32 0, %218
  br i1 %219, label %220, label %221

220:                                              ; preds = %213
  br label %373

221:                                              ; preds = %213
  %222 = load ptr, ptr %10, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %222, i32 0, i32 3
  %224 = load i8, ptr %223, align 1, !tbaa !17
  %225 = zext i8 %224 to i32
  %226 = and i32 %225, 15
  %227 = icmp eq i32 1, %226
  br i1 %227, label %228, label %229

228:                                              ; preds = %221
  br label %371

229:                                              ; preds = %221
  %230 = load ptr, ptr %10, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %230, i32 0, i32 3
  %232 = load i8, ptr %231, align 1, !tbaa !17
  %233 = zext i8 %232 to i32
  %234 = and i32 %233, 15
  %235 = icmp eq i32 2, %234
  br i1 %235, label %236, label %237

236:                                              ; preds = %229
  br label %369

237:                                              ; preds = %229
  %238 = load ptr, ptr %10, 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 !17
  %241 = zext i8 %240 to i32
  %242 = and i32 %241, 15
  %243 = icmp eq i32 3, %242
  br i1 %243, label %244, label %245

244:                                              ; preds = %237
  br label %367

245:                                              ; preds = %237
  %246 = load ptr, ptr %10, 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 !17
  %249 = zext i8 %248 to i32
  %250 = and i32 %249, 15
  %251 = icmp eq i32 4, %250
  br i1 %251, label %252, label %253

252:                                              ; preds = %245
  br label %365

253:                                              ; preds = %245
  %254 = load ptr, ptr %10, 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 !17
  %257 = zext i8 %256 to i32
  %258 = and i32 %257, 15
  %259 = icmp eq i32 5, %258
  br i1 %259, label %260, label %261

260:                                              ; preds = %253
  br label %363

261:                                              ; preds = %253
  %262 = load ptr, ptr %10, 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 !17
  %265 = zext i8 %264 to i32
  %266 = and i32 %265, 15
  %267 = icmp eq i32 6, %266
  br i1 %267, label %268, label %269

268:                                              ; preds = %261
  br label %361

269:                                              ; preds = %261
  %270 = load ptr, ptr %10, 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 !17
  %273 = zext i8 %272 to i32
  %274 = and i32 %273, 15
  %275 = icmp eq i32 7, %274
  br i1 %275, label %276, label %277

276:                                              ; preds = %269
  br label %359

277:                                              ; preds = %269
  %278 = load ptr, ptr %10, 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 !17
  %281 = zext i8 %280 to i32
  %282 = and i32 %281, 15
  %283 = icmp eq i32 8, %282
  br i1 %283, label %284, label %285

284:                                              ; preds = %277
  br label %357

285:                                              ; preds = %277
  %286 = load ptr, ptr %10, 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 !17
  %289 = zext i8 %288 to i32
  %290 = and i32 %289, 15
  %291 = icmp eq i32 9, %290
  br i1 %291, label %292, label %293

292:                                              ; preds = %285
  br label %355

293:                                              ; preds = %285
  %294 = load ptr, ptr %10, 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 !17
  %297 = zext i8 %296 to i32
  %298 = and i32 %297, 15
  %299 = icmp eq i32 10, %298
  br i1 %299, label %300, label %301

300:                                              ; preds = %293
  br label %353

301:                                              ; preds = %293
  %302 = load ptr, ptr %10, 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 !17
  %305 = zext i8 %304 to i32
  %306 = and i32 %305, 15
  %307 = icmp eq i32 11, %306
  br i1 %307, label %308, label %309

308:                                              ; preds = %301
  br label %351

309:                                              ; preds = %301
  %310 = load ptr, ptr %10, 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 !17
  %313 = zext i8 %312 to i32
  %314 = and i32 %313, 15
  %315 = icmp eq i32 12, %314
  br i1 %315, label %316, label %317

316:                                              ; preds = %309
  br label %349

317:                                              ; preds = %309
  %318 = load ptr, ptr %10, 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 !17
  %321 = zext i8 %320 to i32
  %322 = and i32 %321, 15
  %323 = icmp eq i32 13, %322
  br i1 %323, label %324, label %325

324:                                              ; preds = %317
  br label %347

325:                                              ; preds = %317
  %326 = load ptr, ptr %10, 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 !17
  %329 = zext i8 %328 to i32
  %330 = and i32 %329, 15
  %331 = icmp eq i32 14, %330
  br i1 %331, label %332, label %333

332:                                              ; preds = %325
  br label %345

333:                                              ; preds = %325
  %334 = load ptr, ptr %10, 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 !17
  %337 = zext i8 %336 to i32
  %338 = and i32 %337, 15
  %339 = icmp eq i32 15, %338
  br i1 %339, label %340, label %341

340:                                              ; preds = %333
  br label %343

341:                                              ; preds = %333
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

342:                                              ; No predecessors!
  br label %343

343:                                              ; preds = %342, %340
  %344 = phi i32 [ 15, %340 ], [ 0, %342 ]
  br label %345

345:                                              ; preds = %343, %332
  %346 = phi i32 [ 14, %332 ], [ %344, %343 ]
  br label %347

347:                                              ; preds = %345, %324
  %348 = phi i32 [ 12, %324 ], [ %346, %345 ]
  br label %349

349:                                              ; preds = %347, %316
  %350 = phi i32 [ 12, %316 ], [ %348, %347 ]
  br label %351

351:                                              ; preds = %349, %308
  %352 = phi i32 [ 10, %308 ], [ %350, %349 ]
  br label %353

353:                                              ; preds = %351, %300
  %354 = phi i32 [ 10, %300 ], [ %352, %351 ]
  br label %355

355:                                              ; preds = %353, %292
  %356 = phi i32 [ 8, %292 ], [ %354, %353 ]
  br label %357

357:                                              ; preds = %355, %284
  %358 = phi i32 [ 8, %284 ], [ %356, %355 ]
  br label %359

359:                                              ; preds = %357, %276
  %360 = phi i32 [ 6, %276 ], [ %358, %357 ]
  br label %361

361:                                              ; preds = %359, %268
  %362 = phi i32 [ 6, %268 ], [ %360, %359 ]
  br label %363

363:                                              ; preds = %361, %260
  %364 = phi i32 [ 5, %260 ], [ %362, %361 ]
  br label %365

365:                                              ; preds = %363, %252
  %366 = phi i32 [ 4, %252 ], [ %364, %363 ]
  br label %367

367:                                              ; preds = %365, %244
  %368 = phi i32 [ 3, %244 ], [ %366, %365 ]
  br label %369

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

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

373:                                              ; preds = %371, %220
  %374 = phi i32 [ 0, %220 ], [ %372, %371 ]
  br label %381

375:                                              ; preds = %206
  %376 = load ptr, ptr %10, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %376, i32 0, i32 3
  %378 = load i8, ptr %377, align 1, !tbaa !17
  %379 = zext i8 %378 to i32
  %380 = ashr i32 %379, 4
  br label %381

381:                                              ; preds = %375, %373
  %382 = phi i32 [ %374, %373 ], [ %380, %375 ]
  %383 = icmp eq i32 1, %382
  br i1 %383, label %384, label %385

384:                                              ; preds = %381
  br label %2559

385:                                              ; preds = %381
  %386 = load ptr, ptr %10, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %386, i32 0, i32 3
  %388 = load i8, ptr %387, align 1, !tbaa !17
  %389 = zext i8 %388 to i32
  %390 = ashr i32 %389, 4
  %391 = icmp eq i32 0, %390
  br i1 %391, label %392, label %554

392:                                              ; preds = %385
  %393 = load ptr, ptr %10, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %393, i32 0, i32 3
  %395 = load i8, ptr %394, align 1, !tbaa !17
  %396 = zext i8 %395 to i32
  %397 = and i32 %396, 15
  %398 = icmp eq i32 0, %397
  br i1 %398, label %399, label %400

399:                                              ; preds = %392
  br label %552

400:                                              ; preds = %392
  %401 = load ptr, ptr %10, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %401, i32 0, i32 3
  %403 = load i8, ptr %402, align 1, !tbaa !17
  %404 = zext i8 %403 to i32
  %405 = and i32 %404, 15
  %406 = icmp eq i32 1, %405
  br i1 %406, label %407, label %408

407:                                              ; preds = %400
  br label %550

408:                                              ; preds = %400
  %409 = load ptr, ptr %10, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %409, i32 0, i32 3
  %411 = load i8, ptr %410, align 1, !tbaa !17
  %412 = zext i8 %411 to i32
  %413 = and i32 %412, 15
  %414 = icmp eq i32 2, %413
  br i1 %414, label %415, label %416

415:                                              ; preds = %408
  br label %548

416:                                              ; preds = %408
  %417 = load ptr, ptr %10, 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 !17
  %420 = zext i8 %419 to i32
  %421 = and i32 %420, 15
  %422 = icmp eq i32 3, %421
  br i1 %422, label %423, label %424

423:                                              ; preds = %416
  br label %546

424:                                              ; preds = %416
  %425 = load ptr, ptr %10, 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 !17
  %428 = zext i8 %427 to i32
  %429 = and i32 %428, 15
  %430 = icmp eq i32 4, %429
  br i1 %430, label %431, label %432

431:                                              ; preds = %424
  br label %544

432:                                              ; preds = %424
  %433 = load ptr, ptr %10, 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 !17
  %436 = zext i8 %435 to i32
  %437 = and i32 %436, 15
  %438 = icmp eq i32 5, %437
  br i1 %438, label %439, label %440

439:                                              ; preds = %432
  br label %542

440:                                              ; preds = %432
  %441 = load ptr, ptr %10, 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 !17
  %444 = zext i8 %443 to i32
  %445 = and i32 %444, 15
  %446 = icmp eq i32 6, %445
  br i1 %446, label %447, label %448

447:                                              ; preds = %440
  br label %540

448:                                              ; preds = %440
  %449 = load ptr, ptr %10, 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 !17
  %452 = zext i8 %451 to i32
  %453 = and i32 %452, 15
  %454 = icmp eq i32 7, %453
  br i1 %454, label %455, label %456

455:                                              ; preds = %448
  br label %538

456:                                              ; preds = %448
  %457 = load ptr, ptr %10, 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 !17
  %460 = zext i8 %459 to i32
  %461 = and i32 %460, 15
  %462 = icmp eq i32 8, %461
  br i1 %462, label %463, label %464

463:                                              ; preds = %456
  br label %536

464:                                              ; preds = %456
  %465 = load ptr, ptr %10, 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 !17
  %468 = zext i8 %467 to i32
  %469 = and i32 %468, 15
  %470 = icmp eq i32 9, %469
  br i1 %470, label %471, label %472

471:                                              ; preds = %464
  br label %534

472:                                              ; preds = %464
  %473 = load ptr, ptr %10, 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 !17
  %476 = zext i8 %475 to i32
  %477 = and i32 %476, 15
  %478 = icmp eq i32 10, %477
  br i1 %478, label %479, label %480

479:                                              ; preds = %472
  br label %532

480:                                              ; preds = %472
  %481 = load ptr, ptr %10, 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 !17
  %484 = zext i8 %483 to i32
  %485 = and i32 %484, 15
  %486 = icmp eq i32 11, %485
  br i1 %486, label %487, label %488

487:                                              ; preds = %480
  br label %530

488:                                              ; preds = %480
  %489 = load ptr, ptr %10, 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 !17
  %492 = zext i8 %491 to i32
  %493 = and i32 %492, 15
  %494 = icmp eq i32 12, %493
  br i1 %494, label %495, label %496

495:                                              ; preds = %488
  br label %528

496:                                              ; preds = %488
  %497 = load ptr, ptr %10, 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 !17
  %500 = zext i8 %499 to i32
  %501 = and i32 %500, 15
  %502 = icmp eq i32 13, %501
  br i1 %502, label %503, label %504

503:                                              ; preds = %496
  br label %526

504:                                              ; preds = %496
  %505 = load ptr, ptr %10, 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 !17
  %508 = zext i8 %507 to i32
  %509 = and i32 %508, 15
  %510 = icmp eq i32 14, %509
  br i1 %510, label %511, label %512

511:                                              ; preds = %504
  br label %524

512:                                              ; preds = %504
  %513 = load ptr, ptr %10, 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 !17
  %516 = zext i8 %515 to i32
  %517 = and i32 %516, 15
  %518 = icmp eq i32 15, %517
  br i1 %518, label %519, label %520

519:                                              ; preds = %512
  br label %522

520:                                              ; preds = %512
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

521:                                              ; No predecessors!
  br label %522

522:                                              ; preds = %521, %519
  %523 = phi i32 [ 15, %519 ], [ 0, %521 ]
  br label %524

524:                                              ; preds = %522, %511
  %525 = phi i32 [ 14, %511 ], [ %523, %522 ]
  br label %526

526:                                              ; preds = %524, %503
  %527 = phi i32 [ 12, %503 ], [ %525, %524 ]
  br label %528

528:                                              ; preds = %526, %495
  %529 = phi i32 [ 12, %495 ], [ %527, %526 ]
  br label %530

530:                                              ; preds = %528, %487
  %531 = phi i32 [ 10, %487 ], [ %529, %528 ]
  br label %532

532:                                              ; preds = %530, %479
  %533 = phi i32 [ 10, %479 ], [ %531, %530 ]
  br label %534

534:                                              ; preds = %532, %471
  %535 = phi i32 [ 8, %471 ], [ %533, %532 ]
  br label %536

536:                                              ; preds = %534, %463
  %537 = phi i32 [ 8, %463 ], [ %535, %534 ]
  br label %538

538:                                              ; preds = %536, %455
  %539 = phi i32 [ 6, %455 ], [ %537, %536 ]
  br label %540

540:                                              ; preds = %538, %447
  %541 = phi i32 [ 6, %447 ], [ %539, %538 ]
  br label %542

542:                                              ; preds = %540, %439
  %543 = phi i32 [ 5, %439 ], [ %541, %540 ]
  br label %544

544:                                              ; preds = %542, %431
  %545 = phi i32 [ 4, %431 ], [ %543, %542 ]
  br label %546

546:                                              ; preds = %544, %423
  %547 = phi i32 [ 3, %423 ], [ %545, %544 ]
  br label %548

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

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

552:                                              ; preds = %550, %399
  %553 = phi i32 [ 0, %399 ], [ %551, %550 ]
  br label %560

554:                                              ; preds = %385
  %555 = load ptr, ptr %10, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %555, i32 0, i32 3
  %557 = load i8, ptr %556, align 1, !tbaa !17
  %558 = zext i8 %557 to i32
  %559 = ashr i32 %558, 4
  br label %560

560:                                              ; preds = %554, %552
  %561 = phi i32 [ %553, %552 ], [ %559, %554 ]
  %562 = icmp eq i32 2, %561
  br i1 %562, label %563, label %564

563:                                              ; preds = %560
  br label %2557

564:                                              ; preds = %560
  %565 = load ptr, ptr %10, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %565, i32 0, i32 3
  %567 = load i8, ptr %566, align 1, !tbaa !17
  %568 = zext i8 %567 to i32
  %569 = ashr i32 %568, 4
  %570 = icmp eq i32 0, %569
  br i1 %570, label %571, label %733

571:                                              ; preds = %564
  %572 = load ptr, ptr %10, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %572, i32 0, i32 3
  %574 = load i8, ptr %573, align 1, !tbaa !17
  %575 = zext i8 %574 to i32
  %576 = and i32 %575, 15
  %577 = icmp eq i32 0, %576
  br i1 %577, label %578, label %579

578:                                              ; preds = %571
  br label %731

579:                                              ; preds = %571
  %580 = load ptr, ptr %10, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %580, i32 0, i32 3
  %582 = load i8, ptr %581, align 1, !tbaa !17
  %583 = zext i8 %582 to i32
  %584 = and i32 %583, 15
  %585 = icmp eq i32 1, %584
  br i1 %585, label %586, label %587

586:                                              ; preds = %579
  br label %729

587:                                              ; preds = %579
  %588 = load ptr, ptr %10, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %588, i32 0, i32 3
  %590 = load i8, ptr %589, align 1, !tbaa !17
  %591 = zext i8 %590 to i32
  %592 = and i32 %591, 15
  %593 = icmp eq i32 2, %592
  br i1 %593, label %594, label %595

594:                                              ; preds = %587
  br label %727

595:                                              ; preds = %587
  %596 = load ptr, ptr %10, 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 !17
  %599 = zext i8 %598 to i32
  %600 = and i32 %599, 15
  %601 = icmp eq i32 3, %600
  br i1 %601, label %602, label %603

602:                                              ; preds = %595
  br label %725

603:                                              ; preds = %595
  %604 = load ptr, ptr %10, 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 !17
  %607 = zext i8 %606 to i32
  %608 = and i32 %607, 15
  %609 = icmp eq i32 4, %608
  br i1 %609, label %610, label %611

610:                                              ; preds = %603
  br label %723

611:                                              ; preds = %603
  %612 = load ptr, ptr %10, 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 !17
  %615 = zext i8 %614 to i32
  %616 = and i32 %615, 15
  %617 = icmp eq i32 5, %616
  br i1 %617, label %618, label %619

618:                                              ; preds = %611
  br label %721

619:                                              ; preds = %611
  %620 = load ptr, ptr %10, 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 !17
  %623 = zext i8 %622 to i32
  %624 = and i32 %623, 15
  %625 = icmp eq i32 6, %624
  br i1 %625, label %626, label %627

626:                                              ; preds = %619
  br label %719

627:                                              ; preds = %619
  %628 = load ptr, ptr %10, 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 !17
  %631 = zext i8 %630 to i32
  %632 = and i32 %631, 15
  %633 = icmp eq i32 7, %632
  br i1 %633, label %634, label %635

634:                                              ; preds = %627
  br label %717

635:                                              ; preds = %627
  %636 = load ptr, ptr %10, 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 !17
  %639 = zext i8 %638 to i32
  %640 = and i32 %639, 15
  %641 = icmp eq i32 8, %640
  br i1 %641, label %642, label %643

642:                                              ; preds = %635
  br label %715

643:                                              ; preds = %635
  %644 = load ptr, ptr %10, 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 !17
  %647 = zext i8 %646 to i32
  %648 = and i32 %647, 15
  %649 = icmp eq i32 9, %648
  br i1 %649, label %650, label %651

650:                                              ; preds = %643
  br label %713

651:                                              ; preds = %643
  %652 = load ptr, ptr %10, 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 !17
  %655 = zext i8 %654 to i32
  %656 = and i32 %655, 15
  %657 = icmp eq i32 10, %656
  br i1 %657, label %658, label %659

658:                                              ; preds = %651
  br label %711

659:                                              ; preds = %651
  %660 = load ptr, ptr %10, 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 !17
  %663 = zext i8 %662 to i32
  %664 = and i32 %663, 15
  %665 = icmp eq i32 11, %664
  br i1 %665, label %666, label %667

666:                                              ; preds = %659
  br label %709

667:                                              ; preds = %659
  %668 = load ptr, ptr %10, 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 !17
  %671 = zext i8 %670 to i32
  %672 = and i32 %671, 15
  %673 = icmp eq i32 12, %672
  br i1 %673, label %674, label %675

674:                                              ; preds = %667
  br label %707

675:                                              ; preds = %667
  %676 = load ptr, ptr %10, 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 !17
  %679 = zext i8 %678 to i32
  %680 = and i32 %679, 15
  %681 = icmp eq i32 13, %680
  br i1 %681, label %682, label %683

682:                                              ; preds = %675
  br label %705

683:                                              ; preds = %675
  %684 = load ptr, ptr %10, 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 !17
  %687 = zext i8 %686 to i32
  %688 = and i32 %687, 15
  %689 = icmp eq i32 14, %688
  br i1 %689, label %690, label %691

690:                                              ; preds = %683
  br label %703

691:                                              ; preds = %683
  %692 = load ptr, ptr %10, 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 !17
  %695 = zext i8 %694 to i32
  %696 = and i32 %695, 15
  %697 = icmp eq i32 15, %696
  br i1 %697, label %698, label %699

698:                                              ; preds = %691
  br label %701

699:                                              ; preds = %691
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

700:                                              ; No predecessors!
  br label %701

701:                                              ; preds = %700, %698
  %702 = phi i32 [ 15, %698 ], [ 0, %700 ]
  br label %703

703:                                              ; preds = %701, %690
  %704 = phi i32 [ 14, %690 ], [ %702, %701 ]
  br label %705

705:                                              ; preds = %703, %682
  %706 = phi i32 [ 12, %682 ], [ %704, %703 ]
  br label %707

707:                                              ; preds = %705, %674
  %708 = phi i32 [ 12, %674 ], [ %706, %705 ]
  br label %709

709:                                              ; preds = %707, %666
  %710 = phi i32 [ 10, %666 ], [ %708, %707 ]
  br label %711

711:                                              ; preds = %709, %658
  %712 = phi i32 [ 10, %658 ], [ %710, %709 ]
  br label %713

713:                                              ; preds = %711, %650
  %714 = phi i32 [ 8, %650 ], [ %712, %711 ]
  br label %715

715:                                              ; preds = %713, %642
  %716 = phi i32 [ 8, %642 ], [ %714, %713 ]
  br label %717

717:                                              ; preds = %715, %634
  %718 = phi i32 [ 6, %634 ], [ %716, %715 ]
  br label %719

719:                                              ; preds = %717, %626
  %720 = phi i32 [ 6, %626 ], [ %718, %717 ]
  br label %721

721:                                              ; preds = %719, %618
  %722 = phi i32 [ 5, %618 ], [ %720, %719 ]
  br label %723

723:                                              ; preds = %721, %610
  %724 = phi i32 [ 4, %610 ], [ %722, %721 ]
  br label %725

725:                                              ; preds = %723, %602
  %726 = phi i32 [ 3, %602 ], [ %724, %723 ]
  br label %727

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

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

731:                                              ; preds = %729, %578
  %732 = phi i32 [ 0, %578 ], [ %730, %729 ]
  br label %739

733:                                              ; preds = %564
  %734 = load ptr, ptr %10, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %734, i32 0, i32 3
  %736 = load i8, ptr %735, align 1, !tbaa !17
  %737 = zext i8 %736 to i32
  %738 = ashr i32 %737, 4
  br label %739

739:                                              ; preds = %733, %731
  %740 = phi i32 [ %732, %731 ], [ %738, %733 ]
  %741 = icmp eq i32 3, %740
  br i1 %741, label %742, label %743

742:                                              ; preds = %739
  br label %2555

743:                                              ; preds = %739
  %744 = load ptr, ptr %10, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %744, i32 0, i32 3
  %746 = load i8, ptr %745, align 1, !tbaa !17
  %747 = zext i8 %746 to i32
  %748 = ashr i32 %747, 4
  %749 = icmp eq i32 0, %748
  br i1 %749, label %750, label %912

750:                                              ; preds = %743
  %751 = load ptr, ptr %10, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %751, i32 0, i32 3
  %753 = load i8, ptr %752, align 1, !tbaa !17
  %754 = zext i8 %753 to i32
  %755 = and i32 %754, 15
  %756 = icmp eq i32 0, %755
  br i1 %756, label %757, label %758

757:                                              ; preds = %750
  br label %910

758:                                              ; preds = %750
  %759 = load ptr, ptr %10, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %759, i32 0, i32 3
  %761 = load i8, ptr %760, align 1, !tbaa !17
  %762 = zext i8 %761 to i32
  %763 = and i32 %762, 15
  %764 = icmp eq i32 1, %763
  br i1 %764, label %765, label %766

765:                                              ; preds = %758
  br label %908

766:                                              ; preds = %758
  %767 = load ptr, ptr %10, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %767, i32 0, i32 3
  %769 = load i8, ptr %768, align 1, !tbaa !17
  %770 = zext i8 %769 to i32
  %771 = and i32 %770, 15
  %772 = icmp eq i32 2, %771
  br i1 %772, label %773, label %774

773:                                              ; preds = %766
  br label %906

774:                                              ; preds = %766
  %775 = load ptr, ptr %10, 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 !17
  %778 = zext i8 %777 to i32
  %779 = and i32 %778, 15
  %780 = icmp eq i32 3, %779
  br i1 %780, label %781, label %782

781:                                              ; preds = %774
  br label %904

782:                                              ; preds = %774
  %783 = load ptr, ptr %10, 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 !17
  %786 = zext i8 %785 to i32
  %787 = and i32 %786, 15
  %788 = icmp eq i32 4, %787
  br i1 %788, label %789, label %790

789:                                              ; preds = %782
  br label %902

790:                                              ; preds = %782
  %791 = load ptr, ptr %10, 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 !17
  %794 = zext i8 %793 to i32
  %795 = and i32 %794, 15
  %796 = icmp eq i32 5, %795
  br i1 %796, label %797, label %798

797:                                              ; preds = %790
  br label %900

798:                                              ; preds = %790
  %799 = load ptr, ptr %10, 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 !17
  %802 = zext i8 %801 to i32
  %803 = and i32 %802, 15
  %804 = icmp eq i32 6, %803
  br i1 %804, label %805, label %806

805:                                              ; preds = %798
  br label %898

806:                                              ; preds = %798
  %807 = load ptr, ptr %10, 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 !17
  %810 = zext i8 %809 to i32
  %811 = and i32 %810, 15
  %812 = icmp eq i32 7, %811
  br i1 %812, label %813, label %814

813:                                              ; preds = %806
  br label %896

814:                                              ; preds = %806
  %815 = load ptr, ptr %10, 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 !17
  %818 = zext i8 %817 to i32
  %819 = and i32 %818, 15
  %820 = icmp eq i32 8, %819
  br i1 %820, label %821, label %822

821:                                              ; preds = %814
  br label %894

822:                                              ; preds = %814
  %823 = load ptr, ptr %10, 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 !17
  %826 = zext i8 %825 to i32
  %827 = and i32 %826, 15
  %828 = icmp eq i32 9, %827
  br i1 %828, label %829, label %830

829:                                              ; preds = %822
  br label %892

830:                                              ; preds = %822
  %831 = load ptr, ptr %10, 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 !17
  %834 = zext i8 %833 to i32
  %835 = and i32 %834, 15
  %836 = icmp eq i32 10, %835
  br i1 %836, label %837, label %838

837:                                              ; preds = %830
  br label %890

838:                                              ; preds = %830
  %839 = load ptr, ptr %10, 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 !17
  %842 = zext i8 %841 to i32
  %843 = and i32 %842, 15
  %844 = icmp eq i32 11, %843
  br i1 %844, label %845, label %846

845:                                              ; preds = %838
  br label %888

846:                                              ; preds = %838
  %847 = load ptr, ptr %10, 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 !17
  %850 = zext i8 %849 to i32
  %851 = and i32 %850, 15
  %852 = icmp eq i32 12, %851
  br i1 %852, label %853, label %854

853:                                              ; preds = %846
  br label %886

854:                                              ; preds = %846
  %855 = load ptr, ptr %10, 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 !17
  %858 = zext i8 %857 to i32
  %859 = and i32 %858, 15
  %860 = icmp eq i32 13, %859
  br i1 %860, label %861, label %862

861:                                              ; preds = %854
  br label %884

862:                                              ; preds = %854
  %863 = load ptr, ptr %10, 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 !17
  %866 = zext i8 %865 to i32
  %867 = and i32 %866, 15
  %868 = icmp eq i32 14, %867
  br i1 %868, label %869, label %870

869:                                              ; preds = %862
  br label %882

870:                                              ; preds = %862
  %871 = load ptr, ptr %10, 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 !17
  %874 = zext i8 %873 to i32
  %875 = and i32 %874, 15
  %876 = icmp eq i32 15, %875
  br i1 %876, label %877, label %878

877:                                              ; preds = %870
  br label %880

878:                                              ; preds = %870
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

879:                                              ; No predecessors!
  br label %880

880:                                              ; preds = %879, %877
  %881 = phi i32 [ 15, %877 ], [ 0, %879 ]
  br label %882

882:                                              ; preds = %880, %869
  %883 = phi i32 [ 14, %869 ], [ %881, %880 ]
  br label %884

884:                                              ; preds = %882, %861
  %885 = phi i32 [ 12, %861 ], [ %883, %882 ]
  br label %886

886:                                              ; preds = %884, %853
  %887 = phi i32 [ 12, %853 ], [ %885, %884 ]
  br label %888

888:                                              ; preds = %886, %845
  %889 = phi i32 [ 10, %845 ], [ %887, %886 ]
  br label %890

890:                                              ; preds = %888, %837
  %891 = phi i32 [ 10, %837 ], [ %889, %888 ]
  br label %892

892:                                              ; preds = %890, %829
  %893 = phi i32 [ 8, %829 ], [ %891, %890 ]
  br label %894

894:                                              ; preds = %892, %821
  %895 = phi i32 [ 8, %821 ], [ %893, %892 ]
  br label %896

896:                                              ; preds = %894, %813
  %897 = phi i32 [ 6, %813 ], [ %895, %894 ]
  br label %898

898:                                              ; preds = %896, %805
  %899 = phi i32 [ 6, %805 ], [ %897, %896 ]
  br label %900

900:                                              ; preds = %898, %797
  %901 = phi i32 [ 5, %797 ], [ %899, %898 ]
  br label %902

902:                                              ; preds = %900, %789
  %903 = phi i32 [ 4, %789 ], [ %901, %900 ]
  br label %904

904:                                              ; preds = %902, %781
  %905 = phi i32 [ 3, %781 ], [ %903, %902 ]
  br label %906

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

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

910:                                              ; preds = %908, %757
  %911 = phi i32 [ 0, %757 ], [ %909, %908 ]
  br label %918

912:                                              ; preds = %743
  %913 = load ptr, ptr %10, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %913, i32 0, i32 3
  %915 = load i8, ptr %914, align 1, !tbaa !17
  %916 = zext i8 %915 to i32
  %917 = ashr i32 %916, 4
  br label %918

918:                                              ; preds = %912, %910
  %919 = phi i32 [ %911, %910 ], [ %917, %912 ]
  %920 = icmp eq i32 4, %919
  br i1 %920, label %921, label %922

921:                                              ; preds = %918
  br label %2553

922:                                              ; preds = %918
  %923 = load ptr, ptr %10, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %923, i32 0, i32 3
  %925 = load i8, ptr %924, align 1, !tbaa !17
  %926 = zext i8 %925 to i32
  %927 = ashr i32 %926, 4
  %928 = icmp eq i32 0, %927
  br i1 %928, label %929, label %1091

929:                                              ; preds = %922
  %930 = load ptr, ptr %10, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %930, i32 0, i32 3
  %932 = load i8, ptr %931, align 1, !tbaa !17
  %933 = zext i8 %932 to i32
  %934 = and i32 %933, 15
  %935 = icmp eq i32 0, %934
  br i1 %935, label %936, label %937

936:                                              ; preds = %929
  br label %1089

937:                                              ; preds = %929
  %938 = load ptr, ptr %10, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %938, i32 0, i32 3
  %940 = load i8, ptr %939, align 1, !tbaa !17
  %941 = zext i8 %940 to i32
  %942 = and i32 %941, 15
  %943 = icmp eq i32 1, %942
  br i1 %943, label %944, label %945

944:                                              ; preds = %937
  br label %1087

945:                                              ; preds = %937
  %946 = load ptr, ptr %10, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %946, i32 0, i32 3
  %948 = load i8, ptr %947, align 1, !tbaa !17
  %949 = zext i8 %948 to i32
  %950 = and i32 %949, 15
  %951 = icmp eq i32 2, %950
  br i1 %951, label %952, label %953

952:                                              ; preds = %945
  br label %1085

953:                                              ; preds = %945
  %954 = load ptr, ptr %10, 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 !17
  %957 = zext i8 %956 to i32
  %958 = and i32 %957, 15
  %959 = icmp eq i32 3, %958
  br i1 %959, label %960, label %961

960:                                              ; preds = %953
  br label %1083

961:                                              ; preds = %953
  %962 = load ptr, ptr %10, 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 !17
  %965 = zext i8 %964 to i32
  %966 = and i32 %965, 15
  %967 = icmp eq i32 4, %966
  br i1 %967, label %968, label %969

968:                                              ; preds = %961
  br label %1081

969:                                              ; preds = %961
  %970 = load ptr, ptr %10, 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 !17
  %973 = zext i8 %972 to i32
  %974 = and i32 %973, 15
  %975 = icmp eq i32 5, %974
  br i1 %975, label %976, label %977

976:                                              ; preds = %969
  br label %1079

977:                                              ; preds = %969
  %978 = load ptr, ptr %10, 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 !17
  %981 = zext i8 %980 to i32
  %982 = and i32 %981, 15
  %983 = icmp eq i32 6, %982
  br i1 %983, label %984, label %985

984:                                              ; preds = %977
  br label %1077

985:                                              ; preds = %977
  %986 = load ptr, ptr %10, 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 !17
  %989 = zext i8 %988 to i32
  %990 = and i32 %989, 15
  %991 = icmp eq i32 7, %990
  br i1 %991, label %992, label %993

992:                                              ; preds = %985
  br label %1075

993:                                              ; preds = %985
  %994 = load ptr, ptr %10, 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 !17
  %997 = zext i8 %996 to i32
  %998 = and i32 %997, 15
  %999 = icmp eq i32 8, %998
  br i1 %999, label %1000, label %1001

1000:                                             ; preds = %993
  br label %1073

1001:                                             ; preds = %993
  %1002 = load ptr, ptr %10, 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 !17
  %1005 = zext i8 %1004 to i32
  %1006 = and i32 %1005, 15
  %1007 = icmp eq i32 9, %1006
  br i1 %1007, label %1008, label %1009

1008:                                             ; preds = %1001
  br label %1071

1009:                                             ; preds = %1001
  %1010 = load ptr, ptr %10, 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 !17
  %1013 = zext i8 %1012 to i32
  %1014 = and i32 %1013, 15
  %1015 = icmp eq i32 10, %1014
  br i1 %1015, label %1016, label %1017

1016:                                             ; preds = %1009
  br label %1069

1017:                                             ; preds = %1009
  %1018 = load ptr, ptr %10, 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 !17
  %1021 = zext i8 %1020 to i32
  %1022 = and i32 %1021, 15
  %1023 = icmp eq i32 11, %1022
  br i1 %1023, label %1024, label %1025

1024:                                             ; preds = %1017
  br label %1067

1025:                                             ; preds = %1017
  %1026 = load ptr, ptr %10, 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 !17
  %1029 = zext i8 %1028 to i32
  %1030 = and i32 %1029, 15
  %1031 = icmp eq i32 12, %1030
  br i1 %1031, label %1032, label %1033

1032:                                             ; preds = %1025
  br label %1065

1033:                                             ; preds = %1025
  %1034 = load ptr, ptr %10, 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 !17
  %1037 = zext i8 %1036 to i32
  %1038 = and i32 %1037, 15
  %1039 = icmp eq i32 13, %1038
  br i1 %1039, label %1040, label %1041

1040:                                             ; preds = %1033
  br label %1063

1041:                                             ; preds = %1033
  %1042 = load ptr, ptr %10, 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 !17
  %1045 = zext i8 %1044 to i32
  %1046 = and i32 %1045, 15
  %1047 = icmp eq i32 14, %1046
  br i1 %1047, label %1048, label %1049

1048:                                             ; preds = %1041
  br label %1061

1049:                                             ; preds = %1041
  %1050 = load ptr, ptr %10, 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 !17
  %1053 = zext i8 %1052 to i32
  %1054 = and i32 %1053, 15
  %1055 = icmp eq i32 15, %1054
  br i1 %1055, label %1056, label %1057

1056:                                             ; preds = %1049
  br label %1059

1057:                                             ; preds = %1049
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

1058:                                             ; No predecessors!
  br label %1059

1059:                                             ; preds = %1058, %1056
  %1060 = phi i32 [ 15, %1056 ], [ 0, %1058 ]
  br label %1061

1061:                                             ; preds = %1059, %1048
  %1062 = phi i32 [ 14, %1048 ], [ %1060, %1059 ]
  br label %1063

1063:                                             ; preds = %1061, %1040
  %1064 = phi i32 [ 12, %1040 ], [ %1062, %1061 ]
  br label %1065

1065:                                             ; preds = %1063, %1032
  %1066 = phi i32 [ 12, %1032 ], [ %1064, %1063 ]
  br label %1067

1067:                                             ; preds = %1065, %1024
  %1068 = phi i32 [ 10, %1024 ], [ %1066, %1065 ]
  br label %1069

1069:                                             ; preds = %1067, %1016
  %1070 = phi i32 [ 10, %1016 ], [ %1068, %1067 ]
  br label %1071

1071:                                             ; preds = %1069, %1008
  %1072 = phi i32 [ 8, %1008 ], [ %1070, %1069 ]
  br label %1073

1073:                                             ; preds = %1071, %1000
  %1074 = phi i32 [ 8, %1000 ], [ %1072, %1071 ]
  br label %1075

1075:                                             ; preds = %1073, %992
  %1076 = phi i32 [ 6, %992 ], [ %1074, %1073 ]
  br label %1077

1077:                                             ; preds = %1075, %984
  %1078 = phi i32 [ 6, %984 ], [ %1076, %1075 ]
  br label %1079

1079:                                             ; preds = %1077, %976
  %1080 = phi i32 [ 5, %976 ], [ %1078, %1077 ]
  br label %1081

1081:                                             ; preds = %1079, %968
  %1082 = phi i32 [ 4, %968 ], [ %1080, %1079 ]
  br label %1083

1083:                                             ; preds = %1081, %960
  %1084 = phi i32 [ 3, %960 ], [ %1082, %1081 ]
  br label %1085

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

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

1089:                                             ; preds = %1087, %936
  %1090 = phi i32 [ 0, %936 ], [ %1088, %1087 ]
  br label %1097

1091:                                             ; preds = %922
  %1092 = load ptr, ptr %10, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1092, i32 0, i32 3
  %1094 = load i8, ptr %1093, align 1, !tbaa !17
  %1095 = zext i8 %1094 to i32
  %1096 = ashr i32 %1095, 4
  br label %1097

1097:                                             ; preds = %1091, %1089
  %1098 = phi i32 [ %1090, %1089 ], [ %1096, %1091 ]
  %1099 = icmp eq i32 5, %1098
  br i1 %1099, label %1100, label %1101

1100:                                             ; preds = %1097
  br label %2551

1101:                                             ; preds = %1097
  %1102 = load ptr, ptr %10, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1102, i32 0, i32 3
  %1104 = load i8, ptr %1103, align 1, !tbaa !17
  %1105 = zext i8 %1104 to i32
  %1106 = ashr i32 %1105, 4
  %1107 = icmp eq i32 0, %1106
  br i1 %1107, label %1108, label %1270

1108:                                             ; preds = %1101
  %1109 = load ptr, ptr %10, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1109, i32 0, i32 3
  %1111 = load i8, ptr %1110, align 1, !tbaa !17
  %1112 = zext i8 %1111 to i32
  %1113 = and i32 %1112, 15
  %1114 = icmp eq i32 0, %1113
  br i1 %1114, label %1115, label %1116

1115:                                             ; preds = %1108
  br label %1268

1116:                                             ; preds = %1108
  %1117 = load ptr, ptr %10, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1117, i32 0, i32 3
  %1119 = load i8, ptr %1118, align 1, !tbaa !17
  %1120 = zext i8 %1119 to i32
  %1121 = and i32 %1120, 15
  %1122 = icmp eq i32 1, %1121
  br i1 %1122, label %1123, label %1124

1123:                                             ; preds = %1116
  br label %1266

1124:                                             ; preds = %1116
  %1125 = load ptr, ptr %10, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1125, i32 0, i32 3
  %1127 = load i8, ptr %1126, align 1, !tbaa !17
  %1128 = zext i8 %1127 to i32
  %1129 = and i32 %1128, 15
  %1130 = icmp eq i32 2, %1129
  br i1 %1130, label %1131, label %1132

1131:                                             ; preds = %1124
  br label %1264

1132:                                             ; preds = %1124
  %1133 = load ptr, ptr %10, 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 !17
  %1136 = zext i8 %1135 to i32
  %1137 = and i32 %1136, 15
  %1138 = icmp eq i32 3, %1137
  br i1 %1138, label %1139, label %1140

1139:                                             ; preds = %1132
  br label %1262

1140:                                             ; preds = %1132
  %1141 = load ptr, ptr %10, 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 !17
  %1144 = zext i8 %1143 to i32
  %1145 = and i32 %1144, 15
  %1146 = icmp eq i32 4, %1145
  br i1 %1146, label %1147, label %1148

1147:                                             ; preds = %1140
  br label %1260

1148:                                             ; preds = %1140
  %1149 = load ptr, ptr %10, 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 !17
  %1152 = zext i8 %1151 to i32
  %1153 = and i32 %1152, 15
  %1154 = icmp eq i32 5, %1153
  br i1 %1154, label %1155, label %1156

1155:                                             ; preds = %1148
  br label %1258

1156:                                             ; preds = %1148
  %1157 = load ptr, ptr %10, 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 !17
  %1160 = zext i8 %1159 to i32
  %1161 = and i32 %1160, 15
  %1162 = icmp eq i32 6, %1161
  br i1 %1162, label %1163, label %1164

1163:                                             ; preds = %1156
  br label %1256

1164:                                             ; preds = %1156
  %1165 = load ptr, ptr %10, 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 !17
  %1168 = zext i8 %1167 to i32
  %1169 = and i32 %1168, 15
  %1170 = icmp eq i32 7, %1169
  br i1 %1170, label %1171, label %1172

1171:                                             ; preds = %1164
  br label %1254

1172:                                             ; preds = %1164
  %1173 = load ptr, ptr %10, 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 !17
  %1176 = zext i8 %1175 to i32
  %1177 = and i32 %1176, 15
  %1178 = icmp eq i32 8, %1177
  br i1 %1178, label %1179, label %1180

1179:                                             ; preds = %1172
  br label %1252

1180:                                             ; preds = %1172
  %1181 = load ptr, ptr %10, 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 !17
  %1184 = zext i8 %1183 to i32
  %1185 = and i32 %1184, 15
  %1186 = icmp eq i32 9, %1185
  br i1 %1186, label %1187, label %1188

1187:                                             ; preds = %1180
  br label %1250

1188:                                             ; preds = %1180
  %1189 = load ptr, ptr %10, 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 !17
  %1192 = zext i8 %1191 to i32
  %1193 = and i32 %1192, 15
  %1194 = icmp eq i32 10, %1193
  br i1 %1194, label %1195, label %1196

1195:                                             ; preds = %1188
  br label %1248

1196:                                             ; preds = %1188
  %1197 = load ptr, ptr %10, 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 !17
  %1200 = zext i8 %1199 to i32
  %1201 = and i32 %1200, 15
  %1202 = icmp eq i32 11, %1201
  br i1 %1202, label %1203, label %1204

1203:                                             ; preds = %1196
  br label %1246

1204:                                             ; preds = %1196
  %1205 = load ptr, ptr %10, 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 !17
  %1208 = zext i8 %1207 to i32
  %1209 = and i32 %1208, 15
  %1210 = icmp eq i32 12, %1209
  br i1 %1210, label %1211, label %1212

1211:                                             ; preds = %1204
  br label %1244

1212:                                             ; preds = %1204
  %1213 = load ptr, ptr %10, 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 !17
  %1216 = zext i8 %1215 to i32
  %1217 = and i32 %1216, 15
  %1218 = icmp eq i32 13, %1217
  br i1 %1218, label %1219, label %1220

1219:                                             ; preds = %1212
  br label %1242

1220:                                             ; preds = %1212
  %1221 = load ptr, ptr %10, 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 !17
  %1224 = zext i8 %1223 to i32
  %1225 = and i32 %1224, 15
  %1226 = icmp eq i32 14, %1225
  br i1 %1226, label %1227, label %1228

1227:                                             ; preds = %1220
  br label %1240

1228:                                             ; preds = %1220
  %1229 = load ptr, ptr %10, 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 !17
  %1232 = zext i8 %1231 to i32
  %1233 = and i32 %1232, 15
  %1234 = icmp eq i32 15, %1233
  br i1 %1234, label %1235, label %1236

1235:                                             ; preds = %1228
  br label %1238

1236:                                             ; preds = %1228
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

1237:                                             ; No predecessors!
  br label %1238

1238:                                             ; preds = %1237, %1235
  %1239 = phi i32 [ 15, %1235 ], [ 0, %1237 ]
  br label %1240

1240:                                             ; preds = %1238, %1227
  %1241 = phi i32 [ 14, %1227 ], [ %1239, %1238 ]
  br label %1242

1242:                                             ; preds = %1240, %1219
  %1243 = phi i32 [ 12, %1219 ], [ %1241, %1240 ]
  br label %1244

1244:                                             ; preds = %1242, %1211
  %1245 = phi i32 [ 12, %1211 ], [ %1243, %1242 ]
  br label %1246

1246:                                             ; preds = %1244, %1203
  %1247 = phi i32 [ 10, %1203 ], [ %1245, %1244 ]
  br label %1248

1248:                                             ; preds = %1246, %1195
  %1249 = phi i32 [ 10, %1195 ], [ %1247, %1246 ]
  br label %1250

1250:                                             ; preds = %1248, %1187
  %1251 = phi i32 [ 8, %1187 ], [ %1249, %1248 ]
  br label %1252

1252:                                             ; preds = %1250, %1179
  %1253 = phi i32 [ 8, %1179 ], [ %1251, %1250 ]
  br label %1254

1254:                                             ; preds = %1252, %1171
  %1255 = phi i32 [ 6, %1171 ], [ %1253, %1252 ]
  br label %1256

1256:                                             ; preds = %1254, %1163
  %1257 = phi i32 [ 6, %1163 ], [ %1255, %1254 ]
  br label %1258

1258:                                             ; preds = %1256, %1155
  %1259 = phi i32 [ 5, %1155 ], [ %1257, %1256 ]
  br label %1260

1260:                                             ; preds = %1258, %1147
  %1261 = phi i32 [ 4, %1147 ], [ %1259, %1258 ]
  br label %1262

1262:                                             ; preds = %1260, %1139
  %1263 = phi i32 [ 3, %1139 ], [ %1261, %1260 ]
  br label %1264

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

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

1268:                                             ; preds = %1266, %1115
  %1269 = phi i32 [ 0, %1115 ], [ %1267, %1266 ]
  br label %1276

1270:                                             ; preds = %1101
  %1271 = load ptr, ptr %10, align 8, !tbaa !5
  %1272 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1271, i32 0, i32 3
  %1273 = load i8, ptr %1272, align 1, !tbaa !17
  %1274 = zext i8 %1273 to i32
  %1275 = ashr i32 %1274, 4
  br label %1276

1276:                                             ; preds = %1270, %1268
  %1277 = phi i32 [ %1269, %1268 ], [ %1275, %1270 ]
  %1278 = icmp eq i32 6, %1277
  br i1 %1278, label %1279, label %1280

1279:                                             ; preds = %1276
  br label %2549

1280:                                             ; preds = %1276
  %1281 = load ptr, ptr %10, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1281, i32 0, i32 3
  %1283 = load i8, ptr %1282, align 1, !tbaa !17
  %1284 = zext i8 %1283 to i32
  %1285 = ashr i32 %1284, 4
  %1286 = icmp eq i32 0, %1285
  br i1 %1286, label %1287, label %1449

1287:                                             ; preds = %1280
  %1288 = load ptr, ptr %10, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1288, i32 0, i32 3
  %1290 = load i8, ptr %1289, align 1, !tbaa !17
  %1291 = zext i8 %1290 to i32
  %1292 = and i32 %1291, 15
  %1293 = icmp eq i32 0, %1292
  br i1 %1293, label %1294, label %1295

1294:                                             ; preds = %1287
  br label %1447

1295:                                             ; preds = %1287
  %1296 = load ptr, ptr %10, align 8, !tbaa !5
  %1297 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1296, i32 0, i32 3
  %1298 = load i8, ptr %1297, align 1, !tbaa !17
  %1299 = zext i8 %1298 to i32
  %1300 = and i32 %1299, 15
  %1301 = icmp eq i32 1, %1300
  br i1 %1301, label %1302, label %1303

1302:                                             ; preds = %1295
  br label %1445

1303:                                             ; preds = %1295
  %1304 = load ptr, ptr %10, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1304, i32 0, i32 3
  %1306 = load i8, ptr %1305, align 1, !tbaa !17
  %1307 = zext i8 %1306 to i32
  %1308 = and i32 %1307, 15
  %1309 = icmp eq i32 2, %1308
  br i1 %1309, label %1310, label %1311

1310:                                             ; preds = %1303
  br label %1443

1311:                                             ; preds = %1303
  %1312 = load ptr, ptr %10, 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 !17
  %1315 = zext i8 %1314 to i32
  %1316 = and i32 %1315, 15
  %1317 = icmp eq i32 3, %1316
  br i1 %1317, label %1318, label %1319

1318:                                             ; preds = %1311
  br label %1441

1319:                                             ; preds = %1311
  %1320 = load ptr, ptr %10, 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 !17
  %1323 = zext i8 %1322 to i32
  %1324 = and i32 %1323, 15
  %1325 = icmp eq i32 4, %1324
  br i1 %1325, label %1326, label %1327

1326:                                             ; preds = %1319
  br label %1439

1327:                                             ; preds = %1319
  %1328 = load ptr, ptr %10, 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 !17
  %1331 = zext i8 %1330 to i32
  %1332 = and i32 %1331, 15
  %1333 = icmp eq i32 5, %1332
  br i1 %1333, label %1334, label %1335

1334:                                             ; preds = %1327
  br label %1437

1335:                                             ; preds = %1327
  %1336 = load ptr, ptr %10, 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 !17
  %1339 = zext i8 %1338 to i32
  %1340 = and i32 %1339, 15
  %1341 = icmp eq i32 6, %1340
  br i1 %1341, label %1342, label %1343

1342:                                             ; preds = %1335
  br label %1435

1343:                                             ; preds = %1335
  %1344 = load ptr, ptr %10, 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 !17
  %1347 = zext i8 %1346 to i32
  %1348 = and i32 %1347, 15
  %1349 = icmp eq i32 7, %1348
  br i1 %1349, label %1350, label %1351

1350:                                             ; preds = %1343
  br label %1433

1351:                                             ; preds = %1343
  %1352 = load ptr, ptr %10, 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 !17
  %1355 = zext i8 %1354 to i32
  %1356 = and i32 %1355, 15
  %1357 = icmp eq i32 8, %1356
  br i1 %1357, label %1358, label %1359

1358:                                             ; preds = %1351
  br label %1431

1359:                                             ; preds = %1351
  %1360 = load ptr, ptr %10, 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 !17
  %1363 = zext i8 %1362 to i32
  %1364 = and i32 %1363, 15
  %1365 = icmp eq i32 9, %1364
  br i1 %1365, label %1366, label %1367

1366:                                             ; preds = %1359
  br label %1429

1367:                                             ; preds = %1359
  %1368 = load ptr, ptr %10, 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 !17
  %1371 = zext i8 %1370 to i32
  %1372 = and i32 %1371, 15
  %1373 = icmp eq i32 10, %1372
  br i1 %1373, label %1374, label %1375

1374:                                             ; preds = %1367
  br label %1427

1375:                                             ; preds = %1367
  %1376 = load ptr, ptr %10, 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 !17
  %1379 = zext i8 %1378 to i32
  %1380 = and i32 %1379, 15
  %1381 = icmp eq i32 11, %1380
  br i1 %1381, label %1382, label %1383

1382:                                             ; preds = %1375
  br label %1425

1383:                                             ; preds = %1375
  %1384 = load ptr, ptr %10, 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 !17
  %1387 = zext i8 %1386 to i32
  %1388 = and i32 %1387, 15
  %1389 = icmp eq i32 12, %1388
  br i1 %1389, label %1390, label %1391

1390:                                             ; preds = %1383
  br label %1423

1391:                                             ; preds = %1383
  %1392 = load ptr, ptr %10, 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 !17
  %1395 = zext i8 %1394 to i32
  %1396 = and i32 %1395, 15
  %1397 = icmp eq i32 13, %1396
  br i1 %1397, label %1398, label %1399

1398:                                             ; preds = %1391
  br label %1421

1399:                                             ; preds = %1391
  %1400 = load ptr, ptr %10, 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 !17
  %1403 = zext i8 %1402 to i32
  %1404 = and i32 %1403, 15
  %1405 = icmp eq i32 14, %1404
  br i1 %1405, label %1406, label %1407

1406:                                             ; preds = %1399
  br label %1419

1407:                                             ; preds = %1399
  %1408 = load ptr, ptr %10, 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 !17
  %1411 = zext i8 %1410 to i32
  %1412 = and i32 %1411, 15
  %1413 = icmp eq i32 15, %1412
  br i1 %1413, label %1414, label %1415

1414:                                             ; preds = %1407
  br label %1417

1415:                                             ; preds = %1407
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

1416:                                             ; No predecessors!
  br label %1417

1417:                                             ; preds = %1416, %1414
  %1418 = phi i32 [ 15, %1414 ], [ 0, %1416 ]
  br label %1419

1419:                                             ; preds = %1417, %1406
  %1420 = phi i32 [ 14, %1406 ], [ %1418, %1417 ]
  br label %1421

1421:                                             ; preds = %1419, %1398
  %1422 = phi i32 [ 12, %1398 ], [ %1420, %1419 ]
  br label %1423

1423:                                             ; preds = %1421, %1390
  %1424 = phi i32 [ 12, %1390 ], [ %1422, %1421 ]
  br label %1425

1425:                                             ; preds = %1423, %1382
  %1426 = phi i32 [ 10, %1382 ], [ %1424, %1423 ]
  br label %1427

1427:                                             ; preds = %1425, %1374
  %1428 = phi i32 [ 10, %1374 ], [ %1426, %1425 ]
  br label %1429

1429:                                             ; preds = %1427, %1366
  %1430 = phi i32 [ 8, %1366 ], [ %1428, %1427 ]
  br label %1431

1431:                                             ; preds = %1429, %1358
  %1432 = phi i32 [ 8, %1358 ], [ %1430, %1429 ]
  br label %1433

1433:                                             ; preds = %1431, %1350
  %1434 = phi i32 [ 6, %1350 ], [ %1432, %1431 ]
  br label %1435

1435:                                             ; preds = %1433, %1342
  %1436 = phi i32 [ 6, %1342 ], [ %1434, %1433 ]
  br label %1437

1437:                                             ; preds = %1435, %1334
  %1438 = phi i32 [ 5, %1334 ], [ %1436, %1435 ]
  br label %1439

1439:                                             ; preds = %1437, %1326
  %1440 = phi i32 [ 4, %1326 ], [ %1438, %1437 ]
  br label %1441

1441:                                             ; preds = %1439, %1318
  %1442 = phi i32 [ 3, %1318 ], [ %1440, %1439 ]
  br label %1443

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

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

1447:                                             ; preds = %1445, %1294
  %1448 = phi i32 [ 0, %1294 ], [ %1446, %1445 ]
  br label %1455

1449:                                             ; preds = %1280
  %1450 = load ptr, ptr %10, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1450, i32 0, i32 3
  %1452 = load i8, ptr %1451, align 1, !tbaa !17
  %1453 = zext i8 %1452 to i32
  %1454 = ashr i32 %1453, 4
  br label %1455

1455:                                             ; preds = %1449, %1447
  %1456 = phi i32 [ %1448, %1447 ], [ %1454, %1449 ]
  %1457 = icmp eq i32 7, %1456
  br i1 %1457, label %1458, label %1459

1458:                                             ; preds = %1455
  br label %2547

1459:                                             ; preds = %1455
  %1460 = load ptr, ptr %10, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1460, i32 0, i32 3
  %1462 = load i8, ptr %1461, align 1, !tbaa !17
  %1463 = zext i8 %1462 to i32
  %1464 = ashr i32 %1463, 4
  %1465 = icmp eq i32 0, %1464
  br i1 %1465, label %1466, label %1628

1466:                                             ; preds = %1459
  %1467 = load ptr, ptr %10, align 8, !tbaa !5
  %1468 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1467, i32 0, i32 3
  %1469 = load i8, ptr %1468, align 1, !tbaa !17
  %1470 = zext i8 %1469 to i32
  %1471 = and i32 %1470, 15
  %1472 = icmp eq i32 0, %1471
  br i1 %1472, label %1473, label %1474

1473:                                             ; preds = %1466
  br label %1626

1474:                                             ; preds = %1466
  %1475 = load ptr, ptr %10, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1475, i32 0, i32 3
  %1477 = load i8, ptr %1476, align 1, !tbaa !17
  %1478 = zext i8 %1477 to i32
  %1479 = and i32 %1478, 15
  %1480 = icmp eq i32 1, %1479
  br i1 %1480, label %1481, label %1482

1481:                                             ; preds = %1474
  br label %1624

1482:                                             ; preds = %1474
  %1483 = load ptr, ptr %10, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1483, i32 0, i32 3
  %1485 = load i8, ptr %1484, align 1, !tbaa !17
  %1486 = zext i8 %1485 to i32
  %1487 = and i32 %1486, 15
  %1488 = icmp eq i32 2, %1487
  br i1 %1488, label %1489, label %1490

1489:                                             ; preds = %1482
  br label %1622

1490:                                             ; preds = %1482
  %1491 = load ptr, ptr %10, 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 !17
  %1494 = zext i8 %1493 to i32
  %1495 = and i32 %1494, 15
  %1496 = icmp eq i32 3, %1495
  br i1 %1496, label %1497, label %1498

1497:                                             ; preds = %1490
  br label %1620

1498:                                             ; preds = %1490
  %1499 = load ptr, ptr %10, 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 !17
  %1502 = zext i8 %1501 to i32
  %1503 = and i32 %1502, 15
  %1504 = icmp eq i32 4, %1503
  br i1 %1504, label %1505, label %1506

1505:                                             ; preds = %1498
  br label %1618

1506:                                             ; preds = %1498
  %1507 = load ptr, ptr %10, 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 !17
  %1510 = zext i8 %1509 to i32
  %1511 = and i32 %1510, 15
  %1512 = icmp eq i32 5, %1511
  br i1 %1512, label %1513, label %1514

1513:                                             ; preds = %1506
  br label %1616

1514:                                             ; preds = %1506
  %1515 = load ptr, ptr %10, 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 !17
  %1518 = zext i8 %1517 to i32
  %1519 = and i32 %1518, 15
  %1520 = icmp eq i32 6, %1519
  br i1 %1520, label %1521, label %1522

1521:                                             ; preds = %1514
  br label %1614

1522:                                             ; preds = %1514
  %1523 = load ptr, ptr %10, 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 !17
  %1526 = zext i8 %1525 to i32
  %1527 = and i32 %1526, 15
  %1528 = icmp eq i32 7, %1527
  br i1 %1528, label %1529, label %1530

1529:                                             ; preds = %1522
  br label %1612

1530:                                             ; preds = %1522
  %1531 = load ptr, ptr %10, 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 !17
  %1534 = zext i8 %1533 to i32
  %1535 = and i32 %1534, 15
  %1536 = icmp eq i32 8, %1535
  br i1 %1536, label %1537, label %1538

1537:                                             ; preds = %1530
  br label %1610

1538:                                             ; preds = %1530
  %1539 = load ptr, ptr %10, 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 !17
  %1542 = zext i8 %1541 to i32
  %1543 = and i32 %1542, 15
  %1544 = icmp eq i32 9, %1543
  br i1 %1544, label %1545, label %1546

1545:                                             ; preds = %1538
  br label %1608

1546:                                             ; preds = %1538
  %1547 = load ptr, ptr %10, 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 !17
  %1550 = zext i8 %1549 to i32
  %1551 = and i32 %1550, 15
  %1552 = icmp eq i32 10, %1551
  br i1 %1552, label %1553, label %1554

1553:                                             ; preds = %1546
  br label %1606

1554:                                             ; preds = %1546
  %1555 = load ptr, ptr %10, 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 !17
  %1558 = zext i8 %1557 to i32
  %1559 = and i32 %1558, 15
  %1560 = icmp eq i32 11, %1559
  br i1 %1560, label %1561, label %1562

1561:                                             ; preds = %1554
  br label %1604

1562:                                             ; preds = %1554
  %1563 = load ptr, ptr %10, 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 !17
  %1566 = zext i8 %1565 to i32
  %1567 = and i32 %1566, 15
  %1568 = icmp eq i32 12, %1567
  br i1 %1568, label %1569, label %1570

1569:                                             ; preds = %1562
  br label %1602

1570:                                             ; preds = %1562
  %1571 = load ptr, ptr %10, 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 !17
  %1574 = zext i8 %1573 to i32
  %1575 = and i32 %1574, 15
  %1576 = icmp eq i32 13, %1575
  br i1 %1576, label %1577, label %1578

1577:                                             ; preds = %1570
  br label %1600

1578:                                             ; preds = %1570
  %1579 = load ptr, ptr %10, 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 !17
  %1582 = zext i8 %1581 to i32
  %1583 = and i32 %1582, 15
  %1584 = icmp eq i32 14, %1583
  br i1 %1584, label %1585, label %1586

1585:                                             ; preds = %1578
  br label %1598

1586:                                             ; preds = %1578
  %1587 = load ptr, ptr %10, 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 !17
  %1590 = zext i8 %1589 to i32
  %1591 = and i32 %1590, 15
  %1592 = icmp eq i32 15, %1591
  br i1 %1592, label %1593, label %1594

1593:                                             ; preds = %1586
  br label %1596

1594:                                             ; preds = %1586
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

1595:                                             ; No predecessors!
  br label %1596

1596:                                             ; preds = %1595, %1593
  %1597 = phi i32 [ 15, %1593 ], [ 0, %1595 ]
  br label %1598

1598:                                             ; preds = %1596, %1585
  %1599 = phi i32 [ 14, %1585 ], [ %1597, %1596 ]
  br label %1600

1600:                                             ; preds = %1598, %1577
  %1601 = phi i32 [ 12, %1577 ], [ %1599, %1598 ]
  br label %1602

1602:                                             ; preds = %1600, %1569
  %1603 = phi i32 [ 12, %1569 ], [ %1601, %1600 ]
  br label %1604

1604:                                             ; preds = %1602, %1561
  %1605 = phi i32 [ 10, %1561 ], [ %1603, %1602 ]
  br label %1606

1606:                                             ; preds = %1604, %1553
  %1607 = phi i32 [ 10, %1553 ], [ %1605, %1604 ]
  br label %1608

1608:                                             ; preds = %1606, %1545
  %1609 = phi i32 [ 8, %1545 ], [ %1607, %1606 ]
  br label %1610

1610:                                             ; preds = %1608, %1537
  %1611 = phi i32 [ 8, %1537 ], [ %1609, %1608 ]
  br label %1612

1612:                                             ; preds = %1610, %1529
  %1613 = phi i32 [ 6, %1529 ], [ %1611, %1610 ]
  br label %1614

1614:                                             ; preds = %1612, %1521
  %1615 = phi i32 [ 6, %1521 ], [ %1613, %1612 ]
  br label %1616

1616:                                             ; preds = %1614, %1513
  %1617 = phi i32 [ 5, %1513 ], [ %1615, %1614 ]
  br label %1618

1618:                                             ; preds = %1616, %1505
  %1619 = phi i32 [ 4, %1505 ], [ %1617, %1616 ]
  br label %1620

1620:                                             ; preds = %1618, %1497
  %1621 = phi i32 [ 3, %1497 ], [ %1619, %1618 ]
  br label %1622

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

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

1626:                                             ; preds = %1624, %1473
  %1627 = phi i32 [ 0, %1473 ], [ %1625, %1624 ]
  br label %1634

1628:                                             ; preds = %1459
  %1629 = load ptr, ptr %10, align 8, !tbaa !5
  %1630 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1629, i32 0, i32 3
  %1631 = load i8, ptr %1630, align 1, !tbaa !17
  %1632 = zext i8 %1631 to i32
  %1633 = ashr i32 %1632, 4
  br label %1634

1634:                                             ; preds = %1628, %1626
  %1635 = phi i32 [ %1627, %1626 ], [ %1633, %1628 ]
  %1636 = icmp eq i32 8, %1635
  br i1 %1636, label %1637, label %1638

1637:                                             ; preds = %1634
  br label %2545

1638:                                             ; preds = %1634
  %1639 = load ptr, ptr %10, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1639, i32 0, i32 3
  %1641 = load i8, ptr %1640, align 1, !tbaa !17
  %1642 = zext i8 %1641 to i32
  %1643 = ashr i32 %1642, 4
  %1644 = icmp eq i32 0, %1643
  br i1 %1644, label %1645, label %1807

1645:                                             ; preds = %1638
  %1646 = load ptr, ptr %10, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1646, i32 0, i32 3
  %1648 = load i8, ptr %1647, align 1, !tbaa !17
  %1649 = zext i8 %1648 to i32
  %1650 = and i32 %1649, 15
  %1651 = icmp eq i32 0, %1650
  br i1 %1651, label %1652, label %1653

1652:                                             ; preds = %1645
  br label %1805

1653:                                             ; preds = %1645
  %1654 = load ptr, ptr %10, align 8, !tbaa !5
  %1655 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1654, i32 0, i32 3
  %1656 = load i8, ptr %1655, align 1, !tbaa !17
  %1657 = zext i8 %1656 to i32
  %1658 = and i32 %1657, 15
  %1659 = icmp eq i32 1, %1658
  br i1 %1659, label %1660, label %1661

1660:                                             ; preds = %1653
  br label %1803

1661:                                             ; preds = %1653
  %1662 = load ptr, ptr %10, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1662, i32 0, i32 3
  %1664 = load i8, ptr %1663, align 1, !tbaa !17
  %1665 = zext i8 %1664 to i32
  %1666 = and i32 %1665, 15
  %1667 = icmp eq i32 2, %1666
  br i1 %1667, label %1668, label %1669

1668:                                             ; preds = %1661
  br label %1801

1669:                                             ; preds = %1661
  %1670 = load ptr, ptr %10, 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 !17
  %1673 = zext i8 %1672 to i32
  %1674 = and i32 %1673, 15
  %1675 = icmp eq i32 3, %1674
  br i1 %1675, label %1676, label %1677

1676:                                             ; preds = %1669
  br label %1799

1677:                                             ; preds = %1669
  %1678 = load ptr, ptr %10, 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 !17
  %1681 = zext i8 %1680 to i32
  %1682 = and i32 %1681, 15
  %1683 = icmp eq i32 4, %1682
  br i1 %1683, label %1684, label %1685

1684:                                             ; preds = %1677
  br label %1797

1685:                                             ; preds = %1677
  %1686 = load ptr, ptr %10, 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 !17
  %1689 = zext i8 %1688 to i32
  %1690 = and i32 %1689, 15
  %1691 = icmp eq i32 5, %1690
  br i1 %1691, label %1692, label %1693

1692:                                             ; preds = %1685
  br label %1795

1693:                                             ; preds = %1685
  %1694 = load ptr, ptr %10, 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 !17
  %1697 = zext i8 %1696 to i32
  %1698 = and i32 %1697, 15
  %1699 = icmp eq i32 6, %1698
  br i1 %1699, label %1700, label %1701

1700:                                             ; preds = %1693
  br label %1793

1701:                                             ; preds = %1693
  %1702 = load ptr, ptr %10, 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 !17
  %1705 = zext i8 %1704 to i32
  %1706 = and i32 %1705, 15
  %1707 = icmp eq i32 7, %1706
  br i1 %1707, label %1708, label %1709

1708:                                             ; preds = %1701
  br label %1791

1709:                                             ; preds = %1701
  %1710 = load ptr, ptr %10, 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 !17
  %1713 = zext i8 %1712 to i32
  %1714 = and i32 %1713, 15
  %1715 = icmp eq i32 8, %1714
  br i1 %1715, label %1716, label %1717

1716:                                             ; preds = %1709
  br label %1789

1717:                                             ; preds = %1709
  %1718 = load ptr, ptr %10, 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 !17
  %1721 = zext i8 %1720 to i32
  %1722 = and i32 %1721, 15
  %1723 = icmp eq i32 9, %1722
  br i1 %1723, label %1724, label %1725

1724:                                             ; preds = %1717
  br label %1787

1725:                                             ; preds = %1717
  %1726 = load ptr, ptr %10, 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 !17
  %1729 = zext i8 %1728 to i32
  %1730 = and i32 %1729, 15
  %1731 = icmp eq i32 10, %1730
  br i1 %1731, label %1732, label %1733

1732:                                             ; preds = %1725
  br label %1785

1733:                                             ; preds = %1725
  %1734 = load ptr, ptr %10, 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 !17
  %1737 = zext i8 %1736 to i32
  %1738 = and i32 %1737, 15
  %1739 = icmp eq i32 11, %1738
  br i1 %1739, label %1740, label %1741

1740:                                             ; preds = %1733
  br label %1783

1741:                                             ; preds = %1733
  %1742 = load ptr, ptr %10, 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 !17
  %1745 = zext i8 %1744 to i32
  %1746 = and i32 %1745, 15
  %1747 = icmp eq i32 12, %1746
  br i1 %1747, label %1748, label %1749

1748:                                             ; preds = %1741
  br label %1781

1749:                                             ; preds = %1741
  %1750 = load ptr, ptr %10, 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 !17
  %1753 = zext i8 %1752 to i32
  %1754 = and i32 %1753, 15
  %1755 = icmp eq i32 13, %1754
  br i1 %1755, label %1756, label %1757

1756:                                             ; preds = %1749
  br label %1779

1757:                                             ; preds = %1749
  %1758 = load ptr, ptr %10, 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 !17
  %1761 = zext i8 %1760 to i32
  %1762 = and i32 %1761, 15
  %1763 = icmp eq i32 14, %1762
  br i1 %1763, label %1764, label %1765

1764:                                             ; preds = %1757
  br label %1777

1765:                                             ; preds = %1757
  %1766 = load ptr, ptr %10, 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 !17
  %1769 = zext i8 %1768 to i32
  %1770 = and i32 %1769, 15
  %1771 = icmp eq i32 15, %1770
  br i1 %1771, label %1772, label %1773

1772:                                             ; preds = %1765
  br label %1775

1773:                                             ; preds = %1765
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

1774:                                             ; No predecessors!
  br label %1775

1775:                                             ; preds = %1774, %1772
  %1776 = phi i32 [ 15, %1772 ], [ 0, %1774 ]
  br label %1777

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

1779:                                             ; preds = %1777, %1756
  %1780 = phi i32 [ 12, %1756 ], [ %1778, %1777 ]
  br label %1781

1781:                                             ; preds = %1779, %1748
  %1782 = phi i32 [ 12, %1748 ], [ %1780, %1779 ]
  br label %1783

1783:                                             ; preds = %1781, %1740
  %1784 = phi i32 [ 10, %1740 ], [ %1782, %1781 ]
  br label %1785

1785:                                             ; preds = %1783, %1732
  %1786 = phi i32 [ 10, %1732 ], [ %1784, %1783 ]
  br label %1787

1787:                                             ; preds = %1785, %1724
  %1788 = phi i32 [ 8, %1724 ], [ %1786, %1785 ]
  br label %1789

1789:                                             ; preds = %1787, %1716
  %1790 = phi i32 [ 8, %1716 ], [ %1788, %1787 ]
  br label %1791

1791:                                             ; preds = %1789, %1708
  %1792 = phi i32 [ 6, %1708 ], [ %1790, %1789 ]
  br label %1793

1793:                                             ; preds = %1791, %1700
  %1794 = phi i32 [ 6, %1700 ], [ %1792, %1791 ]
  br label %1795

1795:                                             ; preds = %1793, %1692
  %1796 = phi i32 [ 5, %1692 ], [ %1794, %1793 ]
  br label %1797

1797:                                             ; preds = %1795, %1684
  %1798 = phi i32 [ 4, %1684 ], [ %1796, %1795 ]
  br label %1799

1799:                                             ; preds = %1797, %1676
  %1800 = phi i32 [ 3, %1676 ], [ %1798, %1797 ]
  br label %1801

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

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

1805:                                             ; preds = %1803, %1652
  %1806 = phi i32 [ 0, %1652 ], [ %1804, %1803 ]
  br label %1813

1807:                                             ; preds = %1638
  %1808 = load ptr, ptr %10, align 8, !tbaa !5
  %1809 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1808, i32 0, i32 3
  %1810 = load i8, ptr %1809, align 1, !tbaa !17
  %1811 = zext i8 %1810 to i32
  %1812 = ashr i32 %1811, 4
  br label %1813

1813:                                             ; preds = %1807, %1805
  %1814 = phi i32 [ %1806, %1805 ], [ %1812, %1807 ]
  %1815 = icmp eq i32 9, %1814
  br i1 %1815, label %1816, label %1817

1816:                                             ; preds = %1813
  br label %2543

1817:                                             ; preds = %1813
  %1818 = load ptr, ptr %10, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1818, i32 0, i32 3
  %1820 = load i8, ptr %1819, align 1, !tbaa !17
  %1821 = zext i8 %1820 to i32
  %1822 = ashr i32 %1821, 4
  %1823 = icmp eq i32 0, %1822
  br i1 %1823, label %1824, label %1986

1824:                                             ; preds = %1817
  %1825 = load ptr, ptr %10, align 8, !tbaa !5
  %1826 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1825, i32 0, i32 3
  %1827 = load i8, ptr %1826, align 1, !tbaa !17
  %1828 = zext i8 %1827 to i32
  %1829 = and i32 %1828, 15
  %1830 = icmp eq i32 0, %1829
  br i1 %1830, label %1831, label %1832

1831:                                             ; preds = %1824
  br label %1984

1832:                                             ; preds = %1824
  %1833 = load ptr, ptr %10, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1833, i32 0, i32 3
  %1835 = load i8, ptr %1834, align 1, !tbaa !17
  %1836 = zext i8 %1835 to i32
  %1837 = and i32 %1836, 15
  %1838 = icmp eq i32 1, %1837
  br i1 %1838, label %1839, label %1840

1839:                                             ; preds = %1832
  br label %1982

1840:                                             ; preds = %1832
  %1841 = load ptr, ptr %10, align 8, !tbaa !5
  %1842 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1841, i32 0, i32 3
  %1843 = load i8, ptr %1842, align 1, !tbaa !17
  %1844 = zext i8 %1843 to i32
  %1845 = and i32 %1844, 15
  %1846 = icmp eq i32 2, %1845
  br i1 %1846, label %1847, label %1848

1847:                                             ; preds = %1840
  br label %1980

1848:                                             ; preds = %1840
  %1849 = load ptr, ptr %10, 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 !17
  %1852 = zext i8 %1851 to i32
  %1853 = and i32 %1852, 15
  %1854 = icmp eq i32 3, %1853
  br i1 %1854, label %1855, label %1856

1855:                                             ; preds = %1848
  br label %1978

1856:                                             ; preds = %1848
  %1857 = load ptr, ptr %10, 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 !17
  %1860 = zext i8 %1859 to i32
  %1861 = and i32 %1860, 15
  %1862 = icmp eq i32 4, %1861
  br i1 %1862, label %1863, label %1864

1863:                                             ; preds = %1856
  br label %1976

1864:                                             ; preds = %1856
  %1865 = load ptr, ptr %10, 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 !17
  %1868 = zext i8 %1867 to i32
  %1869 = and i32 %1868, 15
  %1870 = icmp eq i32 5, %1869
  br i1 %1870, label %1871, label %1872

1871:                                             ; preds = %1864
  br label %1974

1872:                                             ; preds = %1864
  %1873 = load ptr, ptr %10, 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 !17
  %1876 = zext i8 %1875 to i32
  %1877 = and i32 %1876, 15
  %1878 = icmp eq i32 6, %1877
  br i1 %1878, label %1879, label %1880

1879:                                             ; preds = %1872
  br label %1972

1880:                                             ; preds = %1872
  %1881 = load ptr, ptr %10, 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 !17
  %1884 = zext i8 %1883 to i32
  %1885 = and i32 %1884, 15
  %1886 = icmp eq i32 7, %1885
  br i1 %1886, label %1887, label %1888

1887:                                             ; preds = %1880
  br label %1970

1888:                                             ; preds = %1880
  %1889 = load ptr, ptr %10, 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 !17
  %1892 = zext i8 %1891 to i32
  %1893 = and i32 %1892, 15
  %1894 = icmp eq i32 8, %1893
  br i1 %1894, label %1895, label %1896

1895:                                             ; preds = %1888
  br label %1968

1896:                                             ; preds = %1888
  %1897 = load ptr, ptr %10, 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 !17
  %1900 = zext i8 %1899 to i32
  %1901 = and i32 %1900, 15
  %1902 = icmp eq i32 9, %1901
  br i1 %1902, label %1903, label %1904

1903:                                             ; preds = %1896
  br label %1966

1904:                                             ; preds = %1896
  %1905 = load ptr, ptr %10, 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 !17
  %1908 = zext i8 %1907 to i32
  %1909 = and i32 %1908, 15
  %1910 = icmp eq i32 10, %1909
  br i1 %1910, label %1911, label %1912

1911:                                             ; preds = %1904
  br label %1964

1912:                                             ; preds = %1904
  %1913 = load ptr, ptr %10, 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 !17
  %1916 = zext i8 %1915 to i32
  %1917 = and i32 %1916, 15
  %1918 = icmp eq i32 11, %1917
  br i1 %1918, label %1919, label %1920

1919:                                             ; preds = %1912
  br label %1962

1920:                                             ; preds = %1912
  %1921 = load ptr, ptr %10, 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 !17
  %1924 = zext i8 %1923 to i32
  %1925 = and i32 %1924, 15
  %1926 = icmp eq i32 12, %1925
  br i1 %1926, label %1927, label %1928

1927:                                             ; preds = %1920
  br label %1960

1928:                                             ; preds = %1920
  %1929 = load ptr, ptr %10, 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 !17
  %1932 = zext i8 %1931 to i32
  %1933 = and i32 %1932, 15
  %1934 = icmp eq i32 13, %1933
  br i1 %1934, label %1935, label %1936

1935:                                             ; preds = %1928
  br label %1958

1936:                                             ; preds = %1928
  %1937 = load ptr, ptr %10, 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 !17
  %1940 = zext i8 %1939 to i32
  %1941 = and i32 %1940, 15
  %1942 = icmp eq i32 14, %1941
  br i1 %1942, label %1943, label %1944

1943:                                             ; preds = %1936
  br label %1956

1944:                                             ; preds = %1936
  %1945 = load ptr, ptr %10, 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 !17
  %1948 = zext i8 %1947 to i32
  %1949 = and i32 %1948, 15
  %1950 = icmp eq i32 15, %1949
  br i1 %1950, label %1951, label %1952

1951:                                             ; preds = %1944
  br label %1954

1952:                                             ; preds = %1944
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

1953:                                             ; No predecessors!
  br label %1954

1954:                                             ; preds = %1953, %1951
  %1955 = phi i32 [ 15, %1951 ], [ 0, %1953 ]
  br label %1956

1956:                                             ; preds = %1954, %1943
  %1957 = phi i32 [ 14, %1943 ], [ %1955, %1954 ]
  br label %1958

1958:                                             ; preds = %1956, %1935
  %1959 = phi i32 [ 12, %1935 ], [ %1957, %1956 ]
  br label %1960

1960:                                             ; preds = %1958, %1927
  %1961 = phi i32 [ 12, %1927 ], [ %1959, %1958 ]
  br label %1962

1962:                                             ; preds = %1960, %1919
  %1963 = phi i32 [ 10, %1919 ], [ %1961, %1960 ]
  br label %1964

1964:                                             ; preds = %1962, %1911
  %1965 = phi i32 [ 10, %1911 ], [ %1963, %1962 ]
  br label %1966

1966:                                             ; preds = %1964, %1903
  %1967 = phi i32 [ 8, %1903 ], [ %1965, %1964 ]
  br label %1968

1968:                                             ; preds = %1966, %1895
  %1969 = phi i32 [ 8, %1895 ], [ %1967, %1966 ]
  br label %1970

1970:                                             ; preds = %1968, %1887
  %1971 = phi i32 [ 6, %1887 ], [ %1969, %1968 ]
  br label %1972

1972:                                             ; preds = %1970, %1879
  %1973 = phi i32 [ 6, %1879 ], [ %1971, %1970 ]
  br label %1974

1974:                                             ; preds = %1972, %1871
  %1975 = phi i32 [ 5, %1871 ], [ %1973, %1972 ]
  br label %1976

1976:                                             ; preds = %1974, %1863
  %1977 = phi i32 [ 4, %1863 ], [ %1975, %1974 ]
  br label %1978

1978:                                             ; preds = %1976, %1855
  %1979 = phi i32 [ 3, %1855 ], [ %1977, %1976 ]
  br label %1980

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

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

1984:                                             ; preds = %1982, %1831
  %1985 = phi i32 [ 0, %1831 ], [ %1983, %1982 ]
  br label %1992

1986:                                             ; preds = %1817
  %1987 = load ptr, ptr %10, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1987, i32 0, i32 3
  %1989 = load i8, ptr %1988, align 1, !tbaa !17
  %1990 = zext i8 %1989 to i32
  %1991 = ashr i32 %1990, 4
  br label %1992

1992:                                             ; preds = %1986, %1984
  %1993 = phi i32 [ %1985, %1984 ], [ %1991, %1986 ]
  %1994 = icmp eq i32 10, %1993
  br i1 %1994, label %1995, label %1996

1995:                                             ; preds = %1992
  br label %2541

1996:                                             ; preds = %1992
  %1997 = load ptr, ptr %10, align 8, !tbaa !5
  %1998 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %1997, i32 0, i32 3
  %1999 = load i8, ptr %1998, align 1, !tbaa !17
  %2000 = zext i8 %1999 to i32
  %2001 = ashr i32 %2000, 4
  %2002 = icmp eq i32 0, %2001
  br i1 %2002, label %2003, label %2165

2003:                                             ; preds = %1996
  %2004 = load ptr, ptr %10, align 8, !tbaa !5
  %2005 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2004, i32 0, i32 3
  %2006 = load i8, ptr %2005, align 1, !tbaa !17
  %2007 = zext i8 %2006 to i32
  %2008 = and i32 %2007, 15
  %2009 = icmp eq i32 0, %2008
  br i1 %2009, label %2010, label %2011

2010:                                             ; preds = %2003
  br label %2163

2011:                                             ; preds = %2003
  %2012 = load ptr, ptr %10, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2012, i32 0, i32 3
  %2014 = load i8, ptr %2013, align 1, !tbaa !17
  %2015 = zext i8 %2014 to i32
  %2016 = and i32 %2015, 15
  %2017 = icmp eq i32 1, %2016
  br i1 %2017, label %2018, label %2019

2018:                                             ; preds = %2011
  br label %2161

2019:                                             ; preds = %2011
  %2020 = load ptr, ptr %10, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2020, i32 0, i32 3
  %2022 = load i8, ptr %2021, align 1, !tbaa !17
  %2023 = zext i8 %2022 to i32
  %2024 = and i32 %2023, 15
  %2025 = icmp eq i32 2, %2024
  br i1 %2025, label %2026, label %2027

2026:                                             ; preds = %2019
  br label %2159

2027:                                             ; preds = %2019
  %2028 = load ptr, ptr %10, 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 !17
  %2031 = zext i8 %2030 to i32
  %2032 = and i32 %2031, 15
  %2033 = icmp eq i32 3, %2032
  br i1 %2033, label %2034, label %2035

2034:                                             ; preds = %2027
  br label %2157

2035:                                             ; preds = %2027
  %2036 = load ptr, ptr %10, 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 !17
  %2039 = zext i8 %2038 to i32
  %2040 = and i32 %2039, 15
  %2041 = icmp eq i32 4, %2040
  br i1 %2041, label %2042, label %2043

2042:                                             ; preds = %2035
  br label %2155

2043:                                             ; preds = %2035
  %2044 = load ptr, ptr %10, 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 !17
  %2047 = zext i8 %2046 to i32
  %2048 = and i32 %2047, 15
  %2049 = icmp eq i32 5, %2048
  br i1 %2049, label %2050, label %2051

2050:                                             ; preds = %2043
  br label %2153

2051:                                             ; preds = %2043
  %2052 = load ptr, ptr %10, 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 !17
  %2055 = zext i8 %2054 to i32
  %2056 = and i32 %2055, 15
  %2057 = icmp eq i32 6, %2056
  br i1 %2057, label %2058, label %2059

2058:                                             ; preds = %2051
  br label %2151

2059:                                             ; preds = %2051
  %2060 = load ptr, ptr %10, 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 !17
  %2063 = zext i8 %2062 to i32
  %2064 = and i32 %2063, 15
  %2065 = icmp eq i32 7, %2064
  br i1 %2065, label %2066, label %2067

2066:                                             ; preds = %2059
  br label %2149

2067:                                             ; preds = %2059
  %2068 = load ptr, ptr %10, 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 !17
  %2071 = zext i8 %2070 to i32
  %2072 = and i32 %2071, 15
  %2073 = icmp eq i32 8, %2072
  br i1 %2073, label %2074, label %2075

2074:                                             ; preds = %2067
  br label %2147

2075:                                             ; preds = %2067
  %2076 = load ptr, ptr %10, 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 !17
  %2079 = zext i8 %2078 to i32
  %2080 = and i32 %2079, 15
  %2081 = icmp eq i32 9, %2080
  br i1 %2081, label %2082, label %2083

2082:                                             ; preds = %2075
  br label %2145

2083:                                             ; preds = %2075
  %2084 = load ptr, ptr %10, 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 !17
  %2087 = zext i8 %2086 to i32
  %2088 = and i32 %2087, 15
  %2089 = icmp eq i32 10, %2088
  br i1 %2089, label %2090, label %2091

2090:                                             ; preds = %2083
  br label %2143

2091:                                             ; preds = %2083
  %2092 = load ptr, ptr %10, 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 !17
  %2095 = zext i8 %2094 to i32
  %2096 = and i32 %2095, 15
  %2097 = icmp eq i32 11, %2096
  br i1 %2097, label %2098, label %2099

2098:                                             ; preds = %2091
  br label %2141

2099:                                             ; preds = %2091
  %2100 = load ptr, ptr %10, 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 !17
  %2103 = zext i8 %2102 to i32
  %2104 = and i32 %2103, 15
  %2105 = icmp eq i32 12, %2104
  br i1 %2105, label %2106, label %2107

2106:                                             ; preds = %2099
  br label %2139

2107:                                             ; preds = %2099
  %2108 = load ptr, ptr %10, 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 !17
  %2111 = zext i8 %2110 to i32
  %2112 = and i32 %2111, 15
  %2113 = icmp eq i32 13, %2112
  br i1 %2113, label %2114, label %2115

2114:                                             ; preds = %2107
  br label %2137

2115:                                             ; preds = %2107
  %2116 = load ptr, ptr %10, 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 !17
  %2119 = zext i8 %2118 to i32
  %2120 = and i32 %2119, 15
  %2121 = icmp eq i32 14, %2120
  br i1 %2121, label %2122, label %2123

2122:                                             ; preds = %2115
  br label %2135

2123:                                             ; preds = %2115
  %2124 = load ptr, ptr %10, 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 !17
  %2127 = zext i8 %2126 to i32
  %2128 = and i32 %2127, 15
  %2129 = icmp eq i32 15, %2128
  br i1 %2129, label %2130, label %2131

2130:                                             ; preds = %2123
  br label %2133

2131:                                             ; preds = %2123
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

2132:                                             ; No predecessors!
  br label %2133

2133:                                             ; preds = %2132, %2130
  %2134 = phi i32 [ 15, %2130 ], [ 0, %2132 ]
  br label %2135

2135:                                             ; preds = %2133, %2122
  %2136 = phi i32 [ 14, %2122 ], [ %2134, %2133 ]
  br label %2137

2137:                                             ; preds = %2135, %2114
  %2138 = phi i32 [ 12, %2114 ], [ %2136, %2135 ]
  br label %2139

2139:                                             ; preds = %2137, %2106
  %2140 = phi i32 [ 12, %2106 ], [ %2138, %2137 ]
  br label %2141

2141:                                             ; preds = %2139, %2098
  %2142 = phi i32 [ 10, %2098 ], [ %2140, %2139 ]
  br label %2143

2143:                                             ; preds = %2141, %2090
  %2144 = phi i32 [ 10, %2090 ], [ %2142, %2141 ]
  br label %2145

2145:                                             ; preds = %2143, %2082
  %2146 = phi i32 [ 8, %2082 ], [ %2144, %2143 ]
  br label %2147

2147:                                             ; preds = %2145, %2074
  %2148 = phi i32 [ 8, %2074 ], [ %2146, %2145 ]
  br label %2149

2149:                                             ; preds = %2147, %2066
  %2150 = phi i32 [ 6, %2066 ], [ %2148, %2147 ]
  br label %2151

2151:                                             ; preds = %2149, %2058
  %2152 = phi i32 [ 6, %2058 ], [ %2150, %2149 ]
  br label %2153

2153:                                             ; preds = %2151, %2050
  %2154 = phi i32 [ 5, %2050 ], [ %2152, %2151 ]
  br label %2155

2155:                                             ; preds = %2153, %2042
  %2156 = phi i32 [ 4, %2042 ], [ %2154, %2153 ]
  br label %2157

2157:                                             ; preds = %2155, %2034
  %2158 = phi i32 [ 3, %2034 ], [ %2156, %2155 ]
  br label %2159

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

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

2163:                                             ; preds = %2161, %2010
  %2164 = phi i32 [ 0, %2010 ], [ %2162, %2161 ]
  br label %2171

2165:                                             ; preds = %1996
  %2166 = load ptr, ptr %10, align 8, !tbaa !5
  %2167 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2166, i32 0, i32 3
  %2168 = load i8, ptr %2167, align 1, !tbaa !17
  %2169 = zext i8 %2168 to i32
  %2170 = ashr i32 %2169, 4
  br label %2171

2171:                                             ; preds = %2165, %2163
  %2172 = phi i32 [ %2164, %2163 ], [ %2170, %2165 ]
  %2173 = icmp eq i32 11, %2172
  br i1 %2173, label %2174, label %2175

2174:                                             ; preds = %2171
  br label %2539

2175:                                             ; preds = %2171
  %2176 = load ptr, ptr %10, align 8, !tbaa !5
  %2177 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2176, i32 0, i32 3
  %2178 = load i8, ptr %2177, align 1, !tbaa !17
  %2179 = zext i8 %2178 to i32
  %2180 = ashr i32 %2179, 4
  %2181 = icmp eq i32 0, %2180
  br i1 %2181, label %2182, label %2344

2182:                                             ; preds = %2175
  %2183 = load ptr, ptr %10, align 8, !tbaa !5
  %2184 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2183, i32 0, i32 3
  %2185 = load i8, ptr %2184, align 1, !tbaa !17
  %2186 = zext i8 %2185 to i32
  %2187 = and i32 %2186, 15
  %2188 = icmp eq i32 0, %2187
  br i1 %2188, label %2189, label %2190

2189:                                             ; preds = %2182
  br label %2342

2190:                                             ; preds = %2182
  %2191 = load ptr, ptr %10, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2191, i32 0, i32 3
  %2193 = load i8, ptr %2192, align 1, !tbaa !17
  %2194 = zext i8 %2193 to i32
  %2195 = and i32 %2194, 15
  %2196 = icmp eq i32 1, %2195
  br i1 %2196, label %2197, label %2198

2197:                                             ; preds = %2190
  br label %2340

2198:                                             ; preds = %2190
  %2199 = load ptr, ptr %10, align 8, !tbaa !5
  %2200 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2199, i32 0, i32 3
  %2201 = load i8, ptr %2200, align 1, !tbaa !17
  %2202 = zext i8 %2201 to i32
  %2203 = and i32 %2202, 15
  %2204 = icmp eq i32 2, %2203
  br i1 %2204, label %2205, label %2206

2205:                                             ; preds = %2198
  br label %2338

2206:                                             ; preds = %2198
  %2207 = load ptr, ptr %10, 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 !17
  %2210 = zext i8 %2209 to i32
  %2211 = and i32 %2210, 15
  %2212 = icmp eq i32 3, %2211
  br i1 %2212, label %2213, label %2214

2213:                                             ; preds = %2206
  br label %2336

2214:                                             ; preds = %2206
  %2215 = load ptr, ptr %10, 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 !17
  %2218 = zext i8 %2217 to i32
  %2219 = and i32 %2218, 15
  %2220 = icmp eq i32 4, %2219
  br i1 %2220, label %2221, label %2222

2221:                                             ; preds = %2214
  br label %2334

2222:                                             ; preds = %2214
  %2223 = load ptr, ptr %10, 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 !17
  %2226 = zext i8 %2225 to i32
  %2227 = and i32 %2226, 15
  %2228 = icmp eq i32 5, %2227
  br i1 %2228, label %2229, label %2230

2229:                                             ; preds = %2222
  br label %2332

2230:                                             ; preds = %2222
  %2231 = load ptr, ptr %10, 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 !17
  %2234 = zext i8 %2233 to i32
  %2235 = and i32 %2234, 15
  %2236 = icmp eq i32 6, %2235
  br i1 %2236, label %2237, label %2238

2237:                                             ; preds = %2230
  br label %2330

2238:                                             ; preds = %2230
  %2239 = load ptr, ptr %10, 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 !17
  %2242 = zext i8 %2241 to i32
  %2243 = and i32 %2242, 15
  %2244 = icmp eq i32 7, %2243
  br i1 %2244, label %2245, label %2246

2245:                                             ; preds = %2238
  br label %2328

2246:                                             ; preds = %2238
  %2247 = load ptr, ptr %10, 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 !17
  %2250 = zext i8 %2249 to i32
  %2251 = and i32 %2250, 15
  %2252 = icmp eq i32 8, %2251
  br i1 %2252, label %2253, label %2254

2253:                                             ; preds = %2246
  br label %2326

2254:                                             ; preds = %2246
  %2255 = load ptr, ptr %10, 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 !17
  %2258 = zext i8 %2257 to i32
  %2259 = and i32 %2258, 15
  %2260 = icmp eq i32 9, %2259
  br i1 %2260, label %2261, label %2262

2261:                                             ; preds = %2254
  br label %2324

2262:                                             ; preds = %2254
  %2263 = load ptr, ptr %10, 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 !17
  %2266 = zext i8 %2265 to i32
  %2267 = and i32 %2266, 15
  %2268 = icmp eq i32 10, %2267
  br i1 %2268, label %2269, label %2270

2269:                                             ; preds = %2262
  br label %2322

2270:                                             ; preds = %2262
  %2271 = load ptr, ptr %10, 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 !17
  %2274 = zext i8 %2273 to i32
  %2275 = and i32 %2274, 15
  %2276 = icmp eq i32 11, %2275
  br i1 %2276, label %2277, label %2278

2277:                                             ; preds = %2270
  br label %2320

2278:                                             ; preds = %2270
  %2279 = load ptr, ptr %10, 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 !17
  %2282 = zext i8 %2281 to i32
  %2283 = and i32 %2282, 15
  %2284 = icmp eq i32 12, %2283
  br i1 %2284, label %2285, label %2286

2285:                                             ; preds = %2278
  br label %2318

2286:                                             ; preds = %2278
  %2287 = load ptr, ptr %10, 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 !17
  %2290 = zext i8 %2289 to i32
  %2291 = and i32 %2290, 15
  %2292 = icmp eq i32 13, %2291
  br i1 %2292, label %2293, label %2294

2293:                                             ; preds = %2286
  br label %2316

2294:                                             ; preds = %2286
  %2295 = load ptr, ptr %10, 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 !17
  %2298 = zext i8 %2297 to i32
  %2299 = and i32 %2298, 15
  %2300 = icmp eq i32 14, %2299
  br i1 %2300, label %2301, label %2302

2301:                                             ; preds = %2294
  br label %2314

2302:                                             ; preds = %2294
  %2303 = load ptr, ptr %10, 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 !17
  %2306 = zext i8 %2305 to i32
  %2307 = and i32 %2306, 15
  %2308 = icmp eq i32 15, %2307
  br i1 %2308, label %2309, label %2310

2309:                                             ; preds = %2302
  br label %2312

2310:                                             ; preds = %2302
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

2311:                                             ; No predecessors!
  br label %2312

2312:                                             ; preds = %2311, %2309
  %2313 = phi i32 [ 15, %2309 ], [ 0, %2311 ]
  br label %2314

2314:                                             ; preds = %2312, %2301
  %2315 = phi i32 [ 14, %2301 ], [ %2313, %2312 ]
  br label %2316

2316:                                             ; preds = %2314, %2293
  %2317 = phi i32 [ 12, %2293 ], [ %2315, %2314 ]
  br label %2318

2318:                                             ; preds = %2316, %2285
  %2319 = phi i32 [ 12, %2285 ], [ %2317, %2316 ]
  br label %2320

2320:                                             ; preds = %2318, %2277
  %2321 = phi i32 [ 10, %2277 ], [ %2319, %2318 ]
  br label %2322

2322:                                             ; preds = %2320, %2269
  %2323 = phi i32 [ 10, %2269 ], [ %2321, %2320 ]
  br label %2324

2324:                                             ; preds = %2322, %2261
  %2325 = phi i32 [ 8, %2261 ], [ %2323, %2322 ]
  br label %2326

2326:                                             ; preds = %2324, %2253
  %2327 = phi i32 [ 8, %2253 ], [ %2325, %2324 ]
  br label %2328

2328:                                             ; preds = %2326, %2245
  %2329 = phi i32 [ 6, %2245 ], [ %2327, %2326 ]
  br label %2330

2330:                                             ; preds = %2328, %2237
  %2331 = phi i32 [ 6, %2237 ], [ %2329, %2328 ]
  br label %2332

2332:                                             ; preds = %2330, %2229
  %2333 = phi i32 [ 5, %2229 ], [ %2331, %2330 ]
  br label %2334

2334:                                             ; preds = %2332, %2221
  %2335 = phi i32 [ 4, %2221 ], [ %2333, %2332 ]
  br label %2336

2336:                                             ; preds = %2334, %2213
  %2337 = phi i32 [ 3, %2213 ], [ %2335, %2334 ]
  br label %2338

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

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

2342:                                             ; preds = %2340, %2189
  %2343 = phi i32 [ 0, %2189 ], [ %2341, %2340 ]
  br label %2350

2344:                                             ; preds = %2175
  %2345 = load ptr, ptr %10, align 8, !tbaa !5
  %2346 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2345, i32 0, i32 3
  %2347 = load i8, ptr %2346, align 1, !tbaa !17
  %2348 = zext i8 %2347 to i32
  %2349 = ashr i32 %2348, 4
  br label %2350

2350:                                             ; preds = %2344, %2342
  %2351 = phi i32 [ %2343, %2342 ], [ %2349, %2344 ]
  %2352 = icmp eq i32 12, %2351
  br i1 %2352, label %2353, label %2354

2353:                                             ; preds = %2350
  br label %2537

2354:                                             ; preds = %2350
  %2355 = load ptr, ptr %10, align 8, !tbaa !5
  %2356 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2355, i32 0, i32 3
  %2357 = load i8, ptr %2356, align 1, !tbaa !17
  %2358 = zext i8 %2357 to i32
  %2359 = ashr i32 %2358, 4
  %2360 = icmp eq i32 0, %2359
  br i1 %2360, label %2361, label %2523

2361:                                             ; preds = %2354
  %2362 = load ptr, ptr %10, align 8, !tbaa !5
  %2363 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2362, i32 0, i32 3
  %2364 = load i8, ptr %2363, align 1, !tbaa !17
  %2365 = zext i8 %2364 to i32
  %2366 = and i32 %2365, 15
  %2367 = icmp eq i32 0, %2366
  br i1 %2367, label %2368, label %2369

2368:                                             ; preds = %2361
  br label %2521

2369:                                             ; preds = %2361
  %2370 = load ptr, ptr %10, align 8, !tbaa !5
  %2371 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2370, i32 0, i32 3
  %2372 = load i8, ptr %2371, align 1, !tbaa !17
  %2373 = zext i8 %2372 to i32
  %2374 = and i32 %2373, 15
  %2375 = icmp eq i32 1, %2374
  br i1 %2375, label %2376, label %2377

2376:                                             ; preds = %2369
  br label %2519

2377:                                             ; preds = %2369
  %2378 = load ptr, ptr %10, align 8, !tbaa !5
  %2379 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2378, i32 0, i32 3
  %2380 = load i8, ptr %2379, align 1, !tbaa !17
  %2381 = zext i8 %2380 to i32
  %2382 = and i32 %2381, 15
  %2383 = icmp eq i32 2, %2382
  br i1 %2383, label %2384, label %2385

2384:                                             ; preds = %2377
  br label %2517

2385:                                             ; preds = %2377
  %2386 = load ptr, ptr %10, 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 !17
  %2389 = zext i8 %2388 to i32
  %2390 = and i32 %2389, 15
  %2391 = icmp eq i32 3, %2390
  br i1 %2391, label %2392, label %2393

2392:                                             ; preds = %2385
  br label %2515

2393:                                             ; preds = %2385
  %2394 = load ptr, ptr %10, 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 !17
  %2397 = zext i8 %2396 to i32
  %2398 = and i32 %2397, 15
  %2399 = icmp eq i32 4, %2398
  br i1 %2399, label %2400, label %2401

2400:                                             ; preds = %2393
  br label %2513

2401:                                             ; preds = %2393
  %2402 = load ptr, ptr %10, 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 !17
  %2405 = zext i8 %2404 to i32
  %2406 = and i32 %2405, 15
  %2407 = icmp eq i32 5, %2406
  br i1 %2407, label %2408, label %2409

2408:                                             ; preds = %2401
  br label %2511

2409:                                             ; preds = %2401
  %2410 = load ptr, ptr %10, 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 !17
  %2413 = zext i8 %2412 to i32
  %2414 = and i32 %2413, 15
  %2415 = icmp eq i32 6, %2414
  br i1 %2415, label %2416, label %2417

2416:                                             ; preds = %2409
  br label %2509

2417:                                             ; preds = %2409
  %2418 = load ptr, ptr %10, 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 !17
  %2421 = zext i8 %2420 to i32
  %2422 = and i32 %2421, 15
  %2423 = icmp eq i32 7, %2422
  br i1 %2423, label %2424, label %2425

2424:                                             ; preds = %2417
  br label %2507

2425:                                             ; preds = %2417
  %2426 = load ptr, ptr %10, 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 !17
  %2429 = zext i8 %2428 to i32
  %2430 = and i32 %2429, 15
  %2431 = icmp eq i32 8, %2430
  br i1 %2431, label %2432, label %2433

2432:                                             ; preds = %2425
  br label %2505

2433:                                             ; preds = %2425
  %2434 = load ptr, ptr %10, 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 !17
  %2437 = zext i8 %2436 to i32
  %2438 = and i32 %2437, 15
  %2439 = icmp eq i32 9, %2438
  br i1 %2439, label %2440, label %2441

2440:                                             ; preds = %2433
  br label %2503

2441:                                             ; preds = %2433
  %2442 = load ptr, ptr %10, 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 !17
  %2445 = zext i8 %2444 to i32
  %2446 = and i32 %2445, 15
  %2447 = icmp eq i32 10, %2446
  br i1 %2447, label %2448, label %2449

2448:                                             ; preds = %2441
  br label %2501

2449:                                             ; preds = %2441
  %2450 = load ptr, ptr %10, 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 !17
  %2453 = zext i8 %2452 to i32
  %2454 = and i32 %2453, 15
  %2455 = icmp eq i32 11, %2454
  br i1 %2455, label %2456, label %2457

2456:                                             ; preds = %2449
  br label %2499

2457:                                             ; preds = %2449
  %2458 = load ptr, ptr %10, 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 !17
  %2461 = zext i8 %2460 to i32
  %2462 = and i32 %2461, 15
  %2463 = icmp eq i32 12, %2462
  br i1 %2463, label %2464, label %2465

2464:                                             ; preds = %2457
  br label %2497

2465:                                             ; preds = %2457
  %2466 = load ptr, ptr %10, 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 !17
  %2469 = zext i8 %2468 to i32
  %2470 = and i32 %2469, 15
  %2471 = icmp eq i32 13, %2470
  br i1 %2471, label %2472, label %2473

2472:                                             ; preds = %2465
  br label %2495

2473:                                             ; preds = %2465
  %2474 = load ptr, ptr %10, 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 !17
  %2477 = zext i8 %2476 to i32
  %2478 = and i32 %2477, 15
  %2479 = icmp eq i32 14, %2478
  br i1 %2479, label %2480, label %2481

2480:                                             ; preds = %2473
  br label %2493

2481:                                             ; preds = %2473
  %2482 = load ptr, ptr %10, 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 !17
  %2485 = zext i8 %2484 to i32
  %2486 = and i32 %2485, 15
  %2487 = icmp eq i32 15, %2486
  br i1 %2487, label %2488, label %2489

2488:                                             ; preds = %2481
  br label %2491

2489:                                             ; preds = %2481
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

2490:                                             ; No predecessors!
  br label %2491

2491:                                             ; preds = %2490, %2488
  %2492 = phi i32 [ 15, %2488 ], [ 0, %2490 ]
  br label %2493

2493:                                             ; preds = %2491, %2480
  %2494 = phi i32 [ 14, %2480 ], [ %2492, %2491 ]
  br label %2495

2495:                                             ; preds = %2493, %2472
  %2496 = phi i32 [ 12, %2472 ], [ %2494, %2493 ]
  br label %2497

2497:                                             ; preds = %2495, %2464
  %2498 = phi i32 [ 12, %2464 ], [ %2496, %2495 ]
  br label %2499

2499:                                             ; preds = %2497, %2456
  %2500 = phi i32 [ 10, %2456 ], [ %2498, %2497 ]
  br label %2501

2501:                                             ; preds = %2499, %2448
  %2502 = phi i32 [ 10, %2448 ], [ %2500, %2499 ]
  br label %2503

2503:                                             ; preds = %2501, %2440
  %2504 = phi i32 [ 8, %2440 ], [ %2502, %2501 ]
  br label %2505

2505:                                             ; preds = %2503, %2432
  %2506 = phi i32 [ 8, %2432 ], [ %2504, %2503 ]
  br label %2507

2507:                                             ; preds = %2505, %2424
  %2508 = phi i32 [ 6, %2424 ], [ %2506, %2505 ]
  br label %2509

2509:                                             ; preds = %2507, %2416
  %2510 = phi i32 [ 6, %2416 ], [ %2508, %2507 ]
  br label %2511

2511:                                             ; preds = %2509, %2408
  %2512 = phi i32 [ 5, %2408 ], [ %2510, %2509 ]
  br label %2513

2513:                                             ; preds = %2511, %2400
  %2514 = phi i32 [ 4, %2400 ], [ %2512, %2511 ]
  br label %2515

2515:                                             ; preds = %2513, %2392
  %2516 = phi i32 [ 3, %2392 ], [ %2514, %2513 ]
  br label %2517

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

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

2521:                                             ; preds = %2519, %2368
  %2522 = phi i32 [ 0, %2368 ], [ %2520, %2519 ]
  br label %2529

2523:                                             ; preds = %2354
  %2524 = load ptr, ptr %10, align 8, !tbaa !5
  %2525 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2524, i32 0, i32 3
  %2526 = load i8, ptr %2525, align 1, !tbaa !17
  %2527 = zext i8 %2526 to i32
  %2528 = ashr i32 %2527, 4
  br label %2529

2529:                                             ; preds = %2523, %2521
  %2530 = phi i32 [ %2522, %2521 ], [ %2528, %2523 ]
  %2531 = icmp eq i32 13, %2530
  br i1 %2531, label %2532, label %2533

2532:                                             ; preds = %2529
  br label %2535

2533:                                             ; preds = %2529
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 190, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

2534:                                             ; No predecessors!
  br label %2535

2535:                                             ; preds = %2534, %2532
  %2536 = phi i32 [ 1, %2532 ], [ 0, %2534 ]
  br label %2537

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

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

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

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

2545:                                             ; preds = %2543, %1637
  %2546 = phi i32 [ 4, %1637 ], [ %2544, %2543 ]
  br label %2547

2547:                                             ; preds = %2545, %1458
  %2548 = phi i32 [ 8, %1458 ], [ %2546, %2545 ]
  br label %2549

2549:                                             ; preds = %2547, %1279
  %2550 = phi i32 [ 8, %1279 ], [ %2548, %2547 ]
  br label %2551

2551:                                             ; preds = %2549, %1100
  %2552 = phi i32 [ 1, %1100 ], [ %2550, %2549 ]
  br label %2553

2553:                                             ; preds = %2551, %921
  %2554 = phi i32 [ 1, %921 ], [ %2552, %2551 ]
  br label %2555

2555:                                             ; preds = %2553, %742
  %2556 = phi i32 [ 2, %742 ], [ %2554, %2553 ]
  br label %2557

2557:                                             ; preds = %2555, %563
  %2558 = phi i32 [ 2, %563 ], [ %2556, %2555 ]
  br label %2559

2559:                                             ; preds = %2557, %384
  %2560 = phi i32 [ 4, %384 ], [ %2558, %2557 ]
  br label %2561

2561:                                             ; preds = %2559, %205
  %2562 = phi i32 [ 8, %205 ], [ %2560, %2559 ]
  store i32 %2562, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  %2563 = load ptr, ptr %11, align 8, !tbaa !5
  %2564 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2563, i32 0, i32 12
  %2565 = load i32, ptr %2564, align 4, !tbaa !19
  store i32 %2565, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  %2566 = load ptr, ptr %11, align 8, !tbaa !5
  %2567 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2566, i32 0, i32 13
  %2568 = load i32, ptr %2567, align 4, !tbaa !23
  store i32 %2568, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  %2569 = load ptr, ptr %11, align 8, !tbaa !5
  %2570 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2569, i32 0, i32 14
  %2571 = load i32, ptr %2570, align 4, !tbaa !24
  store i32 %2571, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %2572

2572:                                             ; preds = %2849, %2561
  %2573 = load i32, ptr %18, align 4, !tbaa !9
  %2574 = load i32, ptr %17, align 4, !tbaa !9
  %2575 = icmp ult i32 %2573, %2574
  br i1 %2575, label %2576, label %2852

2576:                                             ; preds = %2572
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  %2577 = load ptr, ptr %16, align 8, !tbaa !5
  %2578 = load i32, ptr %18, align 4, !tbaa !9
  %2579 = zext i32 %2578 to i64
  %2580 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2577, i64 %2579
  %2581 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2580, i32 0, i32 5
  %2582 = load i32, ptr %2581, align 4, !tbaa !25
  %2583 = icmp eq i32 0, %2582
  br i1 %2583, label %2584, label %2585

2584:                                             ; preds = %2576
  br label %2730

2585:                                             ; preds = %2576
  %2586 = load ptr, ptr %16, align 8, !tbaa !5
  %2587 = load i32, ptr %18, align 4, !tbaa !9
  %2588 = zext i32 %2587 to i64
  %2589 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2586, i64 %2588
  %2590 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2589, i32 0, i32 5
  %2591 = load i32, ptr %2590, align 4, !tbaa !25
  %2592 = icmp eq i32 1, %2591
  br i1 %2592, label %2593, label %2594

2593:                                             ; preds = %2585
  br label %2728

2594:                                             ; preds = %2585
  %2595 = load ptr, ptr %16, align 8, !tbaa !5
  %2596 = load i32, ptr %18, align 4, !tbaa !9
  %2597 = zext i32 %2596 to i64
  %2598 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2595, i64 %2597
  %2599 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2598, i32 0, i32 5
  %2600 = load i32, ptr %2599, align 4, !tbaa !25
  %2601 = icmp eq i32 2, %2600
  br i1 %2601, label %2602, label %2603

2602:                                             ; preds = %2594
  br label %2726

2603:                                             ; preds = %2594
  %2604 = load ptr, ptr %16, align 8, !tbaa !5
  %2605 = load i32, ptr %18, align 4, !tbaa !9
  %2606 = zext i32 %2605 to i64
  %2607 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2604, i64 %2606
  %2608 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2607, i32 0, i32 5
  %2609 = load i32, ptr %2608, align 4, !tbaa !25
  %2610 = icmp eq i32 3, %2609
  br i1 %2610, label %2611, label %2612

2611:                                             ; preds = %2603
  br label %2724

2612:                                             ; preds = %2603
  %2613 = load ptr, ptr %16, align 8, !tbaa !5
  %2614 = load i32, ptr %18, align 4, !tbaa !9
  %2615 = zext i32 %2614 to i64
  %2616 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2613, i64 %2615
  %2617 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2616, i32 0, i32 5
  %2618 = load i32, ptr %2617, align 4, !tbaa !25
  %2619 = icmp eq i32 4, %2618
  br i1 %2619, label %2620, label %2621

2620:                                             ; preds = %2612
  br label %2722

2621:                                             ; preds = %2612
  %2622 = load ptr, ptr %16, align 8, !tbaa !5
  %2623 = load i32, ptr %18, align 4, !tbaa !9
  %2624 = zext i32 %2623 to i64
  %2625 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2622, i64 %2624
  %2626 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2625, i32 0, i32 5
  %2627 = load i32, ptr %2626, align 4, !tbaa !25
  %2628 = icmp eq i32 5, %2627
  br i1 %2628, label %2629, label %2630

2629:                                             ; preds = %2621
  br label %2720

2630:                                             ; preds = %2621
  %2631 = load ptr, ptr %16, align 8, !tbaa !5
  %2632 = load i32, ptr %18, align 4, !tbaa !9
  %2633 = zext i32 %2632 to i64
  %2634 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2631, i64 %2633
  %2635 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2634, i32 0, i32 5
  %2636 = load i32, ptr %2635, align 4, !tbaa !25
  %2637 = icmp eq i32 6, %2636
  br i1 %2637, label %2638, label %2639

2638:                                             ; preds = %2630
  br label %2718

2639:                                             ; preds = %2630
  %2640 = load ptr, ptr %16, align 8, !tbaa !5
  %2641 = load i32, ptr %18, align 4, !tbaa !9
  %2642 = zext i32 %2641 to i64
  %2643 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2640, i64 %2642
  %2644 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2643, i32 0, i32 5
  %2645 = load i32, ptr %2644, align 4, !tbaa !25
  %2646 = icmp eq i32 7, %2645
  br i1 %2646, label %2647, label %2648

2647:                                             ; preds = %2639
  br label %2716

2648:                                             ; preds = %2639
  %2649 = load ptr, ptr %16, align 8, !tbaa !5
  %2650 = load i32, ptr %18, align 4, !tbaa !9
  %2651 = zext i32 %2650 to i64
  %2652 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2649, i64 %2651
  %2653 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2652, i32 0, i32 5
  %2654 = load i32, ptr %2653, align 4, !tbaa !25
  %2655 = icmp eq i32 8, %2654
  br i1 %2655, label %2656, label %2657

2656:                                             ; preds = %2648
  br label %2714

2657:                                             ; preds = %2648
  %2658 = load ptr, ptr %16, align 8, !tbaa !5
  %2659 = load i32, ptr %18, align 4, !tbaa !9
  %2660 = zext i32 %2659 to i64
  %2661 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2658, i64 %2660
  %2662 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2661, i32 0, i32 5
  %2663 = load i32, ptr %2662, align 4, !tbaa !25
  %2664 = icmp eq i32 9, %2663
  br i1 %2664, label %2665, label %2666

2665:                                             ; preds = %2657
  br label %2712

2666:                                             ; preds = %2657
  %2667 = load ptr, ptr %16, align 8, !tbaa !5
  %2668 = load i32, ptr %18, align 4, !tbaa !9
  %2669 = zext i32 %2668 to i64
  %2670 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2667, i64 %2669
  %2671 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2670, i32 0, i32 5
  %2672 = load i32, ptr %2671, align 4, !tbaa !25
  %2673 = icmp eq i32 10, %2672
  br i1 %2673, label %2674, label %2675

2674:                                             ; preds = %2666
  br label %2710

2675:                                             ; preds = %2666
  %2676 = load ptr, ptr %16, align 8, !tbaa !5
  %2677 = load i32, ptr %18, align 4, !tbaa !9
  %2678 = zext i32 %2677 to i64
  %2679 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2676, i64 %2678
  %2680 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2679, i32 0, i32 5
  %2681 = load i32, ptr %2680, align 4, !tbaa !25
  %2682 = icmp eq i32 11, %2681
  br i1 %2682, label %2683, label %2684

2683:                                             ; preds = %2675
  br label %2708

2684:                                             ; preds = %2675
  %2685 = load ptr, ptr %16, align 8, !tbaa !5
  %2686 = load i32, ptr %18, align 4, !tbaa !9
  %2687 = zext i32 %2686 to i64
  %2688 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2685, i64 %2687
  %2689 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2688, i32 0, i32 5
  %2690 = load i32, ptr %2689, align 4, !tbaa !25
  %2691 = icmp eq i32 12, %2690
  br i1 %2691, label %2692, label %2693

2692:                                             ; preds = %2684
  br label %2706

2693:                                             ; preds = %2684
  %2694 = load ptr, ptr %16, align 8, !tbaa !5
  %2695 = load i32, ptr %18, align 4, !tbaa !9
  %2696 = zext i32 %2695 to i64
  %2697 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2694, i64 %2696
  %2698 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2697, i32 0, i32 5
  %2699 = load i32, ptr %2698, align 4, !tbaa !25
  %2700 = icmp eq i32 13, %2699
  br i1 %2700, label %2701, label %2702

2701:                                             ; preds = %2693
  br label %2704

2702:                                             ; preds = %2693
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 197, ptr noundef @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #5
  unreachable

2703:                                             ; No predecessors!
  br label %2704

2704:                                             ; preds = %2703, %2701
  %2705 = phi i32 [ 1, %2701 ], [ 0, %2703 ]
  br label %2706

2706:                                             ; preds = %2704, %2692
  %2707 = phi i32 [ 1, %2692 ], [ %2705, %2704 ]
  br label %2708

2708:                                             ; preds = %2706, %2683
  %2709 = phi i32 [ 2, %2683 ], [ %2707, %2706 ]
  br label %2710

2710:                                             ; preds = %2708, %2674
  %2711 = phi i32 [ 2, %2674 ], [ %2709, %2708 ]
  br label %2712

2712:                                             ; preds = %2710, %2665
  %2713 = phi i32 [ 4, %2665 ], [ %2711, %2710 ]
  br label %2714

2714:                                             ; preds = %2712, %2656
  %2715 = phi i32 [ 4, %2656 ], [ %2713, %2712 ]
  br label %2716

2716:                                             ; preds = %2714, %2647
  %2717 = phi i32 [ 8, %2647 ], [ %2715, %2714 ]
  br label %2718

2718:                                             ; preds = %2716, %2638
  %2719 = phi i32 [ 8, %2638 ], [ %2717, %2716 ]
  br label %2720

2720:                                             ; preds = %2718, %2629
  %2721 = phi i32 [ 1, %2629 ], [ %2719, %2718 ]
  br label %2722

2722:                                             ; preds = %2720, %2620
  %2723 = phi i32 [ 1, %2620 ], [ %2721, %2720 ]
  br label %2724

2724:                                             ; preds = %2722, %2611
  %2725 = phi i32 [ 2, %2611 ], [ %2723, %2722 ]
  br label %2726

2726:                                             ; preds = %2724, %2602
  %2727 = phi i32 [ 2, %2602 ], [ %2725, %2724 ]
  br label %2728

2728:                                             ; preds = %2726, %2593
  %2729 = phi i32 [ 4, %2593 ], [ %2727, %2726 ]
  br label %2730

2730:                                             ; preds = %2728, %2584
  %2731 = phi i32 [ 8, %2584 ], [ %2729, %2728 ]
  store i32 %2731, ptr %24, align 4, !tbaa !9
  %2732 = load i32, ptr %15, align 4, !tbaa !9
  %2733 = icmp eq i32 %2732, 0
  br i1 %2733, label %2734, label %2756

2734:                                             ; preds = %2730
  %2735 = load ptr, ptr %16, align 8, !tbaa !5
  %2736 = load i32, ptr %18, align 4, !tbaa !9
  %2737 = zext i32 %2736 to i64
  %2738 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2735, i64 %2737
  %2739 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2738, i32 0, i32 6
  %2740 = load i32, ptr %2739, align 4, !tbaa !25
  %2741 = icmp eq i32 %2740, 0
  br i1 %2741, label %2750, label %2742

2742:                                             ; preds = %2734
  %2743 = load ptr, ptr %16, align 8, !tbaa !5
  %2744 = load i32, ptr %18, align 4, !tbaa !9
  %2745 = zext i32 %2744 to i64
  %2746 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2743, i64 %2745
  %2747 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2746, i32 0, i32 6
  %2748 = load i32, ptr %2747, align 4, !tbaa !25
  %2749 = icmp eq i32 %2748, 2
  br i1 %2749, label %2750, label %2754

2750:                                             ; preds = %2742, %2734
  %2751 = load i32, ptr %14, align 4, !tbaa !9
  %2752 = load i32, ptr %24, align 4, !tbaa !9
  %2753 = mul i32 %2751, %2752
  store i32 %2753, ptr %19, align 4, !tbaa !9
  br label %2755

2754:                                             ; preds = %2742
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2755

2755:                                             ; preds = %2754, %2750
  br label %2801

2756:                                             ; preds = %2730
  %2757 = load i32, ptr %15, align 4, !tbaa !9
  %2758 = icmp eq i32 %2757, 1
  br i1 %2758, label %2759, label %2800

2759:                                             ; preds = %2756
  %2760 = load ptr, ptr %16, align 8, !tbaa !5
  %2761 = load i32, ptr %18, align 4, !tbaa !9
  %2762 = zext i32 %2761 to i64
  %2763 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2760, i64 %2762
  %2764 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2763, i32 0, i32 6
  %2765 = load i32, ptr %2764, align 4, !tbaa !25
  %2766 = icmp eq i32 %2765, 0
  br i1 %2766, label %2767, label %2778

2767:                                             ; preds = %2759
  %2768 = load i32, ptr %14, align 4, !tbaa !9
  %2769 = load ptr, ptr %16, align 8, !tbaa !5
  %2770 = load i32, ptr %18, align 4, !tbaa !9
  %2771 = zext i32 %2770 to i64
  %2772 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2769, i64 %2771
  %2773 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2772, i32 0, i32 2
  %2774 = load i32, ptr %2773, align 4, !tbaa !25
  %2775 = mul i32 %2768, %2774
  %2776 = load i32, ptr %24, align 4, !tbaa !9
  %2777 = mul i32 %2775, %2776
  store i32 %2777, ptr %19, align 4, !tbaa !9
  br label %2799

2778:                                             ; preds = %2759
  %2779 = load ptr, ptr %16, align 8, !tbaa !5
  %2780 = load i32, ptr %18, align 4, !tbaa !9
  %2781 = zext i32 %2780 to i64
  %2782 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2779, i64 %2781
  %2783 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2782, i32 0, i32 6
  %2784 = load i32, ptr %2783, align 4, !tbaa !25
  %2785 = icmp eq i32 %2784, 1
  br i1 %2785, label %2786, label %2797

2786:                                             ; preds = %2778
  %2787 = load i32, ptr %14, align 4, !tbaa !9
  %2788 = load ptr, ptr %16, align 8, !tbaa !5
  %2789 = load i32, ptr %18, align 4, !tbaa !9
  %2790 = zext i32 %2789 to i64
  %2791 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2788, i64 %2790
  %2792 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %2791, i32 0, i32 2
  %2793 = load i32, ptr %2792, align 4, !tbaa !25
  %2794 = mul i32 %2787, %2793
  %2795 = load i32, ptr %24, align 4, !tbaa !9
  %2796 = mul i32 %2794, %2795
  store i32 %2796, ptr %19, align 4, !tbaa !9
  br label %2798

2797:                                             ; preds = %2778
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2798

2798:                                             ; preds = %2797, %2786
  br label %2799

2799:                                             ; preds = %2798, %2767
  br label %2800

2800:                                             ; preds = %2799, %2756
  br label %2801

2801:                                             ; preds = %2800, %2755
  %2802 = load i32, ptr %19, align 4, !tbaa !9
  %2803 = icmp ne i32 %2802, 0
  br i1 %2803, label %2804, label %2848

2804:                                             ; preds = %2801
  %2805 = load i32, ptr %18, align 4, !tbaa !9
  %2806 = load ptr, ptr %12, align 8, !tbaa !5
  %2807 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2806, i32 0, i32 46
  %2808 = load i32, ptr %2807, align 8, !tbaa !26
  %2809 = icmp ult i32 %2805, %2808
  br i1 %2809, label %2810, label %2828

2810:                                             ; preds = %2804
  %2811 = load ptr, ptr %9, align 8, !tbaa !5
  %2812 = load i32, ptr %13, align 4, !tbaa !9
  %2813 = load ptr, ptr %12, align 8, !tbaa !5
  %2814 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2813, i32 0, i32 47
  %2815 = load i32, ptr %18, align 4, !tbaa !9
  %2816 = zext i32 %2815 to i64
  %2817 = getelementptr inbounds [32 x i32], ptr %2814, i64 0, i64 %2816
  %2818 = load i32, ptr %2817, align 4, !tbaa !9
  %2819 = load i32, ptr %21, align 4, !tbaa !9
  %2820 = load ptr, ptr %12, align 8, !tbaa !5
  %2821 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2820, i32 0, i32 47
  %2822 = load i32, ptr %18, align 4, !tbaa !9
  %2823 = zext i32 %2822 to i64
  %2824 = getelementptr inbounds [32 x i32], ptr %2821, i64 0, i64 %2823
  %2825 = load i32, ptr %2824, align 4, !tbaa !9
  %2826 = load i32, ptr %19, align 4, !tbaa !9
  %2827 = zext i32 %2826 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2811, i32 noundef %2812, i32 noundef %2818, i32 noundef %2819, i32 noundef %2825, i64 noundef %2827)
  br label %2847

2828:                                             ; preds = %2804
  %2829 = load ptr, ptr %9, align 8, !tbaa !5
  %2830 = load i32, ptr %18, align 4, !tbaa !9
  %2831 = mul i32 %2830, 8
  %2832 = load i32, ptr %23, align 4, !tbaa !9
  %2833 = load i32, ptr %21, align 4, !tbaa !9
  call void @libxsmm_generator_meqn_getaddr_stack_tmpaddr_i_aarch64(ptr noundef %2829, i32 noundef %2831, i32 noundef %2832, i32 noundef %2833)
  %2834 = load ptr, ptr %9, align 8, !tbaa !5
  %2835 = load i32, ptr %21, align 4, !tbaa !9
  %2836 = load i32, ptr %22, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %2834, i32 noundef -1186988026, i32 noundef %2835, i32 noundef 127, i32 noundef 0, i32 noundef %2836)
  %2837 = load ptr, ptr %9, align 8, !tbaa !5
  %2838 = load i32, ptr %13, align 4, !tbaa !9
  %2839 = load i32, ptr %22, align 4, !tbaa !9
  %2840 = load i32, ptr %23, align 4, !tbaa !9
  %2841 = load i32, ptr %22, align 4, !tbaa !9
  %2842 = load i32, ptr %19, align 4, !tbaa !9
  %2843 = zext i32 %2842 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2837, i32 noundef %2838, i32 noundef %2839, i32 noundef %2840, i32 noundef %2841, i64 noundef %2843)
  %2844 = load ptr, ptr %9, align 8, !tbaa !5
  %2845 = load i32, ptr %21, align 4, !tbaa !9
  %2846 = load i32, ptr %22, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %2844, i32 noundef -1191182330, i32 noundef %2845, i32 noundef 63, i32 noundef 0, i32 noundef %2846)
  br label %2847

2847:                                             ; preds = %2828, %2810
  br label %2848

2848:                                             ; preds = %2847, %2801
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  br label %2849

2849:                                             ; preds = %2848
  %2850 = load i32, ptr %18, align 4, !tbaa !9
  %2851 = add i32 %2850, 1
  store i32 %2851, ptr %18, align 4, !tbaa !9
  br label %2572, !llvm.loop !27

2852:                                             ; preds = %2572
  %2853 = load ptr, ptr %12, align 8, !tbaa !5
  %2854 = getelementptr inbounds %struct.libxsmm_matequation_kernel_config_struct, ptr %2853, i32 0, i32 24
  %2855 = load i32, ptr %2854, align 8, !tbaa !29
  %2856 = icmp eq i32 %2855, 0
  br i1 %2856, label %2857, label %2888

2857:                                             ; preds = %2852
  %2858 = load i32, ptr %15, align 4, !tbaa !9
  %2859 = icmp eq i32 %2858, 0
  br i1 %2859, label %2860, label %2864

2860:                                             ; preds = %2857
  %2861 = load i32, ptr %14, align 4, !tbaa !9
  %2862 = load i32, ptr %20, align 4, !tbaa !9
  %2863 = mul i32 %2861, %2862
  store i32 %2863, ptr %19, align 4, !tbaa !9
  br label %2876

2864:                                             ; preds = %2857
  %2865 = load i32, ptr %15, align 4, !tbaa !9
  %2866 = icmp eq i32 %2865, 1
  br i1 %2866, label %2867, label %2875

2867:                                             ; preds = %2864
  %2868 = load i32, ptr %14, align 4, !tbaa !9
  %2869 = load ptr, ptr %10, align 8, !tbaa !5
  %2870 = getelementptr inbounds %struct.libxsmm_meqn_descriptor, ptr %2869, i32 0, i32 2
  %2871 = load i32, ptr %2870, align 1, !tbaa !30
  %2872 = mul i32 %2868, %2871
  %2873 = load i32, ptr %20, align 4, !tbaa !9
  %2874 = mul i32 %2872, %2873
  store i32 %2874, ptr %19, align 4, !tbaa !9
  br label %2875

2875:                                             ; preds = %2867, %2864
  br label %2876

2876:                                             ; preds = %2875, %2860
  %2877 = load ptr, ptr %9, align 8, !tbaa !5
  %2878 = load i32, ptr %13, align 4, !tbaa !9
  %2879 = load ptr, ptr %11, align 8, !tbaa !5
  %2880 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2879, i32 0, i32 5
  %2881 = load i32, ptr %2880, align 4, !tbaa !31
  %2882 = load i32, ptr %23, align 4, !tbaa !9
  %2883 = load ptr, ptr %11, align 8, !tbaa !5
  %2884 = getelementptr inbounds %struct.libxsmm_matequation_gp_reg_mapping_struct, ptr %2883, i32 0, i32 5
  %2885 = load i32, ptr %2884, align 4, !tbaa !31
  %2886 = load i32, ptr %19, align 4, !tbaa !9
  %2887 = zext i32 %2886 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2877, i32 noundef %2878, i32 noundef %2881, i32 noundef %2882, i32 noundef %2885, i64 noundef %2887)
  br label %2888

2888:                                             ; preds = %2876, %2852
  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
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  ret void
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 52}
!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 = !{!18, !7, i64 12}
!18 = !{!"libxsmm_meqn_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 13}
!19 = !{!20, !10, i64 48}
!20 = !{!"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, !21, i64 72, !22, i64 220}
!21 = !{!"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}
!22 = !{!"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}
!23 = !{!20, !10, i64 52}
!24 = !{!20, !10, i64 56}
!25 = !{!7, !7, i64 0}
!26 = !{!12, !10, i64 184}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!12, !10, i64 96}
!30 = !{!18, !10, i64 8}
!31 = !{!20, !10, i64 20}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.libxsmm_meqn_arg = type { i32, i32, i32, i32, i32, i32, i32, %struct.libxsmm_matrix_arg_attributes }
%struct.libxsmm_matrix_arg_attributes = type { 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_generator_mateqn_adjust_args_addr_aarch64 = external hidden unnamed_addr constant [251 x i8], align 1
@switch.table.libxsmm_generator_mateqn_adjust_args_addr_aarch64.1 = private unnamed_addr constant [14 x i32] [i32 8, i32 4, i32 2, i32 2, i32 1, i32 1, i32 8, i32 8, i32 4, i32 4, i32 2, i32 2, i32 1, i32 1], align 4

declare void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i64 noundef) local_unnamed_addr #0

declare void @libxsmm_aarch64_instruction_alu_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @libxsmm_generator_meqn_getaddr_stack_tmpaddr_i_aarch64(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_mateqn_adjust_args_addr_aarch64(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, ptr nocapture noundef readonly %7) local_unnamed_addr #2 {
  %9 = getelementptr inbounds i8, ptr %3, i64 52
  %10 = load i32, ptr %9, align 4, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %1, i64 12
  %12 = load i8, ptr %11, align 1, !tbaa !15
  %13 = icmp ult i8 %12, 16
  br i1 %13, label %14, label %16

14:                                               ; preds = %8
  %15 = icmp ult i8 %12, 14
  br i1 %15, label %switch.lookup, label %.thread739

16:                                               ; preds = %8
  %.mask = and i8 %12, -16
  %17 = icmp eq i8 %.mask, 16
  br i1 %17, label %.thread681, label %18

18:                                               ; preds = %16
  %19 = and i8 %12, -32
  %or.cond = icmp eq i8 %19, 32
  br i1 %or.cond, label %.thread681, label %20

20:                                               ; preds = %18
  %21 = and i8 %12, -32
  %or.cond757 = icmp eq i8 %21, 64
  br i1 %or.cond757, label %.thread681, label %22

22:                                               ; preds = %20
  %23 = and i8 %12, -32
  %or.cond758 = icmp eq i8 %23, 96
  br i1 %or.cond758, label %.thread681, label %24

24:                                               ; preds = %22
  %25 = and i8 %12, -32
  %or.cond759 = icmp eq i8 %25, -128
  br i1 %or.cond759, label %.thread681, label %26

26:                                               ; preds = %24
  %27 = and i8 %12, -32
  %or.cond760 = icmp eq i8 %27, -96
  br i1 %or.cond760, label %.thread681, label %28

28:                                               ; preds = %26
  %29 = and i8 %12, -32
  %or.cond761 = icmp eq i8 %29, -64
  br i1 %or.cond761, label %.thread681, label %.thread739

.thread739:                                       ; preds = %14, %28
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 190, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #3
  unreachable

switch.lookup:                                    ; preds = %14
  %30 = zext nneg i8 %12 to i64
  %switch.gep = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_generator_mateqn_adjust_args_addr_aarch64.1, i64 0, i64 %30
  %switch.load = load i32, ptr %switch.gep, align 4
  br label %.thread681

.thread681:                                       ; preds = %switch.lookup, %16, %28, %26, %24, %22, %20, %18
  %31 = phi i32 [ 4, %16 ], [ 2, %18 ], [ 1, %20 ], [ 8, %22 ], [ 4, %24 ], [ 2, %26 ], [ 1, %28 ], [ %switch.load, %switch.lookup ]
  %32 = getelementptr inbounds i8, ptr %2, i64 48
  %33 = load i32, ptr %32, align 4, !tbaa !17
  %34 = getelementptr inbounds i8, ptr %2, i64 52
  %35 = load i32, ptr %34, align 4, !tbaa !21
  %36 = getelementptr inbounds i8, ptr %2, i64 56
  %37 = load i32, ptr %36, align 4, !tbaa !22
  %.not765 = icmp eq i32 %10, 0
  br i1 %.not765, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.thread681
  %38 = getelementptr inbounds i8, ptr %3, i64 184
  %39 = getelementptr inbounds i8, ptr %3, i64 188
  %wide.trip.count = zext i32 %10 to i64
  br label %40

40:                                               ; preds = %.lr.ph, %.thread741
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %.thread741 ]
  %.0347763 = phi i32 [ 0, %.lr.ph ], [ %.1744, %.thread741 ]
  %41 = getelementptr inbounds %struct.libxsmm_meqn_arg, ptr %7, i64 %indvars.iv
  %42 = getelementptr inbounds i8, ptr %41, i64 20
  %43 = load i32, ptr %42, align 4, !tbaa !23
  %44 = icmp ult i32 %43, 14
  br i1 %44, label %switch.lookup767, label %45

45:                                               ; preds = %40
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 197, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_generator_mateqn_adjust_args_addr_aarch64) #3
  unreachable

switch.lookup767:                                 ; preds = %40
  %46 = zext nneg i32 %43 to i64
  %switch.gep768 = getelementptr inbounds [14 x i32], ptr @switch.table.libxsmm_generator_mateqn_adjust_args_addr_aarch64.1, i64 0, i64 %46
  %switch.load769 = load i32, ptr %switch.gep768, align 4
  switch i32 %6, label %65 [
    i32 0, label %47
    i32 1, label %52
  ]

47:                                               ; preds = %switch.lookup767
  %48 = getelementptr inbounds i8, ptr %41, i64 24
  %49 = load i32, ptr %48, align 4, !tbaa !23
  switch i32 %49, label %.thread741 [
    i32 0, label %50
    i32 2, label %50
  ]

50:                                               ; preds = %47, %47
  %51 = mul i32 %switch.load769, %5
  br label %65

52:                                               ; preds = %switch.lookup767
  %53 = getelementptr inbounds i8, ptr %41, i64 24
  %54 = load i32, ptr %53, align 4, !tbaa !23
  switch i32 %54, label %.thread741 [
    i32 0, label %55
    i32 1, label %60
  ]

55:                                               ; preds = %52
  %56 = getelementptr inbounds i8, ptr %41, i64 8
  %57 = load i32, ptr %56, align 4, !tbaa !23
  %58 = mul i32 %switch.load769, %5
  %59 = mul i32 %58, %57
  br label %65

60:                                               ; preds = %52
  %61 = getelementptr inbounds i8, ptr %41, i64 8
  %62 = load i32, ptr %61, align 4, !tbaa !23
  %63 = mul i32 %switch.load769, %5
  %64 = mul i32 %63, %62
  br label %65

65:                                               ; preds = %switch.lookup767, %60, %55, %50
  %.1 = phi i32 [ %51, %50 ], [ %59, %55 ], [ %64, %60 ], [ %.0347763, %switch.lookup767 ]
  %.not = icmp eq i32 %.1, 0
  br i1 %.not, label %.thread741, label %66

66:                                               ; preds = %65
  %67 = load i32, ptr %38, align 8, !tbaa !24
  %68 = zext i32 %67 to i64
  %69 = icmp ult i64 %indvars.iv, %68
  br i1 %69, label %70, label %74

70:                                               ; preds = %66
  %71 = getelementptr inbounds [32 x i32], ptr %39, i64 0, i64 %indvars.iv
  %72 = load i32, ptr %71, align 4, !tbaa !25
  %73 = zext i32 %.1 to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %4, i32 noundef %72, i32 noundef %33, i32 noundef %72, i64 noundef %73) #4
  br label %.thread741

74:                                               ; preds = %66
  %75 = trunc nuw i64 %indvars.iv to i32
  %76 = shl i32 %75, 3
  tail call void @libxsmm_generator_meqn_getaddr_stack_tmpaddr_i_aarch64(ptr noundef %0, i32 noundef %76, i32 noundef %37, i32 noundef %33) #4
  tail call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1186988026, i32 noundef %33, i32 noundef 127, i32 noundef 0, i32 noundef %35) #4
  %77 = zext i32 %.1 to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %4, i32 noundef %35, i32 noundef %37, i32 noundef %35, i64 noundef %77) #4
  tail call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1191182330, i32 noundef %33, i32 noundef 63, i32 noundef 0, i32 noundef %35) #4
  br label %.thread741

.thread741:                                       ; preds = %52, %47, %70, %74, %65
  %.1744 = phi i32 [ %.1, %70 ], [ %.1, %74 ], [ 0, %65 ], [ 0, %47 ], [ 0, %52 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %40, !llvm.loop !26

._crit_edge:                                      ; preds = %.thread741, %.thread681
  %.0347.lcssa = phi i32 [ 0, %.thread681 ], [ %.1744, %.thread741 ]
  %78 = getelementptr inbounds i8, ptr %3, i64 96
  %79 = load i32, ptr %78, align 8, !tbaa !28
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %81, label %93

81:                                               ; preds = %._crit_edge
  switch i32 %6, label %89 [
    i32 0, label %82
    i32 1, label %84
  ]

82:                                               ; preds = %81
  %83 = mul i32 %31, %5
  br label %89

84:                                               ; preds = %81
  %85 = getelementptr inbounds i8, ptr %1, i64 8
  %86 = load i32, ptr %85, align 1, !tbaa !29
  %87 = mul i32 %31, %5
  %88 = mul i32 %87, %86
  br label %89

89:                                               ; preds = %81, %84, %82
  %.2 = phi i32 [ %83, %82 ], [ %88, %84 ], [ %.0347.lcssa, %81 ]
  %90 = getelementptr inbounds i8, ptr %2, i64 20
  %91 = load i32, ptr %90, align 4, !tbaa !30
  %92 = zext i32 %.2 to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef %4, i32 noundef %91, i32 noundef %37, i32 noundef %91, i64 noundef %92) #4
  br label %93

93:                                               ; preds = %89, %._crit_edge
  ret void
}

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 = { 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 52}
!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 = !{!16, !8, i64 12}
!16 = !{!"libxsmm_meqn_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !8, i64 12, !7, i64 13}
!17 = !{!18, !7, i64 48}
!18 = !{!"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, !19, i64 72, !20, i64 220}
!19 = !{!"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}
!20 = !{!"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}
!21 = !{!18, !7, i64 52}
!22 = !{!18, !7, i64 56}
!23 = !{!8, !8, i64 0}
!24 = !{!6, !7, i64 184}
!25 = !{!7, !7, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!6, !7, i64 96}
!29 = !{!16, !7, i64 8}
!30 = !{!18, !7, i64 20}


; Effective O3 passes: ConstantMergePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass