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

; 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_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, i8 }>
%struct.libxsmm_meltw_unary_param = type { %struct.libxsmm_matrix_op_arg, %struct.libxsmm_matrix_arg, %struct.libxsmm_matrix_arg }
%struct.libxsmm_matrix_op_arg = type { ptr, ptr, ptr, ptr }
%struct.libxsmm_matrix_arg = type { ptr, ptr, ptr, ptr, ptr, ptr }

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

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

declare i32 @libxsmm_meltw_getenum_precision(ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_elementwise_gather_scatter_kernel(ptr noundef %0, ptr noundef %1) #2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #3
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %30, i32 0, i32 0
  %32 = load i32, ptr %31, align 1, !tbaa !9
  store i32 %32, ptr %5, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  %33 = load ptr, ptr %4, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %33, i32 0, i32 1
  %35 = load i32, ptr %34, align 1, !tbaa !14
  store i32 %35, ptr %6, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  %36 = load ptr, ptr %4, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %36, i32 0, i32 2
  %38 = load i32, ptr %37, align 1, !tbaa !15
  store i32 %38, ptr %7, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  %39 = load ptr, ptr %4, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %39, i32 0, i32 3
  %41 = load i32, ptr %40, align 1, !tbaa !16
  store i32 %41, ptr %8, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  %42 = load ptr, ptr %4, align 8, !tbaa !5
  %43 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %42, i32 noundef 0)
  store i32 %43, ptr %9, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  %44 = load i32, ptr %9, align 4, !tbaa !13
  %45 = icmp eq i32 %44, 8
  br i1 %45, label %49, label %46

46:                                               ; preds = %2
  %47 = load i32, ptr %9, align 4, !tbaa !13
  %48 = icmp eq i32 %47, 1
  br label %49

49:                                               ; preds = %46, %2
  %50 = phi i1 [ true, %2 ], [ %48, %46 ]
  %51 = zext i1 %50 to i64
  %52 = select i1 %50, i32 1, i32 0
  store i32 %52, ptr %14, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  %53 = load i32, ptr %9, align 4, !tbaa !13
  %54 = icmp eq i32 %53, 10
  br i1 %54, label %61, label %55

55:                                               ; preds = %49
  %56 = load i32, ptr %9, align 4, !tbaa !13
  %57 = icmp eq i32 %56, 3
  br i1 %57, label %61, label %58

58:                                               ; preds = %55
  %59 = load i32, ptr %9, align 4, !tbaa !13
  %60 = icmp eq i32 %59, 2
  br label %61

61:                                               ; preds = %58, %55, %49
  %62 = phi i1 [ true, %55 ], [ true, %49 ], [ %60, %58 ]
  %63 = zext i1 %62 to i64
  %64 = select i1 %62, i32 1, i32 0
  store i32 %64, ptr %15, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  %65 = load i32, ptr %9, align 4, !tbaa !13
  %66 = icmp eq i32 %65, 12
  br i1 %66, label %73, label %67

67:                                               ; preds = %61
  %68 = load i32, ptr %9, align 4, !tbaa !13
  %69 = icmp eq i32 %68, 4
  br i1 %69, label %73, label %70

70:                                               ; preds = %67
  %71 = load i32, ptr %9, align 4, !tbaa !13
  %72 = icmp eq i32 %71, 5
  br label %73

73:                                               ; preds = %70, %67, %61
  %74 = phi i1 [ true, %67 ], [ true, %61 ], [ %72, %70 ]
  %75 = zext i1 %74 to i64
  %76 = select i1 %74, i32 1, i32 0
  store i32 %76, ptr %16, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  %77 = load ptr, ptr %4, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %77, i32 0, i32 9
  %79 = load i16, ptr %78, align 1, !tbaa !17
  %80 = zext i16 %79 to i32
  %81 = and i32 %80, 256
  %82 = icmp sgt i32 %81, 0
  %83 = zext i1 %82 to i64
  %84 = select i1 %82, i32 1, i32 0
  store i32 %84, ptr %17, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  %85 = load ptr, ptr %4, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %85, i32 0, i32 10
  %87 = load i16, ptr %86, align 1, !tbaa !18
  %88 = zext i16 %87 to i32
  %89 = icmp eq i32 %88, 51
  br i1 %89, label %90, label %95

90:                                               ; preds = %73
  %91 = load ptr, ptr %3, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.libxsmm_meltw_unary_param, ptr %91, i32 0, i32 1
  %93 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %92, i32 0, i32 1
  %94 = load ptr, ptr %93, align 8, !tbaa !19
  br label %100

95:                                               ; preds = %73
  %96 = load ptr, ptr %3, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.libxsmm_meltw_unary_param, ptr %96, i32 0, i32 2
  %98 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %97, i32 0, i32 1
  %99 = load ptr, ptr %98, align 8, !tbaa !23
  br label %100

100:                                              ; preds = %95, %90
  %101 = phi ptr [ %94, %90 ], [ %99, %95 ]
  store ptr %101, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  %102 = load ptr, ptr %4, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %102, i32 0, i32 10
  %104 = load i16, ptr %103, align 1, !tbaa !18
  %105 = zext i16 %104 to i32
  %106 = icmp eq i32 %105, 51
  br i1 %106, label %107, label %112

107:                                              ; preds = %100
  %108 = load ptr, ptr %3, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.libxsmm_meltw_unary_param, ptr %108, i32 0, i32 1
  %110 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %109, i32 0, i32 1
  %111 = load ptr, ptr %110, align 8, !tbaa !19
  br label %117

112:                                              ; preds = %100
  %113 = load ptr, ptr %3, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.libxsmm_meltw_unary_param, ptr %113, i32 0, i32 2
  %115 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %114, i32 0, i32 1
  %116 = load ptr, ptr %115, align 8, !tbaa !23
  br label %117

117:                                              ; preds = %112, %107
  %118 = phi ptr [ %111, %107 ], [ %116, %112 ]
  store ptr %118, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  %119 = load ptr, ptr %3, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.libxsmm_meltw_unary_param, ptr %119, i32 0, i32 1
  %121 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %120, i32 0, i32 0
  %122 = load ptr, ptr %121, align 8, !tbaa !24
  store ptr %122, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  %123 = load ptr, ptr %3, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.libxsmm_meltw_unary_param, ptr %123, i32 0, i32 2
  %125 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %124, i32 0, i32 0
  %126 = load ptr, ptr %125, align 8, !tbaa !25
  store ptr %126, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  %127 = load ptr, ptr %3, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.libxsmm_meltw_unary_param, ptr %127, i32 0, i32 1
  %129 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %128, i32 0, i32 0
  %130 = load ptr, ptr %129, align 8, !tbaa !24
  store ptr %130, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  %131 = load ptr, ptr %3, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.libxsmm_meltw_unary_param, ptr %131, i32 0, i32 2
  %133 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %132, i32 0, i32 0
  %134 = load ptr, ptr %133, align 8, !tbaa !25
  store ptr %134, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  %135 = load ptr, ptr %3, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.libxsmm_meltw_unary_param, ptr %135, i32 0, i32 1
  %137 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %136, i32 0, i32 0
  %138 = load ptr, ptr %137, align 8, !tbaa !24
  store ptr %138, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  %139 = load ptr, ptr %3, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.libxsmm_meltw_unary_param, ptr %139, i32 0, i32 2
  %141 = getelementptr inbounds %struct.libxsmm_matrix_arg, ptr %140, i32 0, i32 0
  %142 = load ptr, ptr %141, align 8, !tbaa !25
  store ptr %142, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  store i32 0, ptr %26, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  store i32 0, ptr %27, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  store i32 0, ptr %28, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  store i32 0, ptr %29, align 4, !tbaa !13
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %143, i32 0, i32 10
  %145 = load i16, ptr %144, align 1, !tbaa !18
  %146 = zext i16 %145 to i32
  %147 = icmp eq i32 %146, 51
  br i1 %147, label %148, label %173

148:                                              ; preds = %117
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %149, i32 0, i32 9
  %151 = load i16, ptr %150, align 1, !tbaa !17
  %152 = zext i16 %151 to i32
  %153 = and i32 %152, 32
  %154 = icmp sgt i32 %153, 0
  br i1 %154, label %155, label %158

155:                                              ; preds = %148
  %156 = load i32, ptr %5, align 4, !tbaa !13
  store i32 %156, ptr %28, align 4, !tbaa !13
  %157 = load i32, ptr %6, align 4, !tbaa !13
  store i32 %157, ptr %29, align 4, !tbaa !13
  br label %172

158:                                              ; preds = %148
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %159, i32 0, i32 9
  %161 = load i16, ptr %160, align 1, !tbaa !17
  %162 = zext i16 %161 to i32
  %163 = and i32 %162, 16
  %164 = icmp sgt i32 %163, 0
  br i1 %164, label %165, label %168

165:                                              ; preds = %158
  %166 = load i32, ptr %5, align 4, !tbaa !13
  store i32 %166, ptr %28, align 4, !tbaa !13
  %167 = load i32, ptr %6, align 4, !tbaa !13
  store i32 %167, ptr %29, align 4, !tbaa !13
  br label %171

168:                                              ; preds = %158
  %169 = load i32, ptr %5, align 4, !tbaa !13
  store i32 %169, ptr %28, align 4, !tbaa !13
  %170 = load i32, ptr %6, align 4, !tbaa !13
  store i32 %170, ptr %29, align 4, !tbaa !13
  br label %171

171:                                              ; preds = %168, %165
  br label %172

172:                                              ; preds = %171, %155
  br label %198

173:                                              ; preds = %117
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %174, i32 0, i32 9
  %176 = load i16, ptr %175, align 1, !tbaa !17
  %177 = zext i16 %176 to i32
  %178 = and i32 %177, 32
  %179 = icmp sgt i32 %178, 0
  br i1 %179, label %180, label %183

180:                                              ; preds = %173
  %181 = load i32, ptr %6, align 4, !tbaa !13
  store i32 %181, ptr %27, align 4, !tbaa !13
  %182 = load i32, ptr %5, align 4, !tbaa !13
  store i32 %182, ptr %28, align 4, !tbaa !13
  br label %197

183:                                              ; preds = %173
  %184 = load ptr, ptr %4, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %184, i32 0, i32 9
  %186 = load i16, ptr %185, align 1, !tbaa !17
  %187 = zext i16 %186 to i32
  %188 = and i32 %187, 16
  %189 = icmp sgt i32 %188, 0
  br i1 %189, label %190, label %193

190:                                              ; preds = %183
  %191 = load i32, ptr %5, align 4, !tbaa !13
  store i32 %191, ptr %26, align 4, !tbaa !13
  %192 = load i32, ptr %6, align 4, !tbaa !13
  store i32 %192, ptr %27, align 4, !tbaa !13
  br label %196

193:                                              ; preds = %183
  %194 = load i32, ptr %5, align 4, !tbaa !13
  store i32 %194, ptr %26, align 4, !tbaa !13
  %195 = load i32, ptr %6, align 4, !tbaa !13
  store i32 %195, ptr %27, align 4, !tbaa !13
  br label %196

196:                                              ; preds = %193, %190
  br label %197

197:                                              ; preds = %196, %180
  br label %198

198:                                              ; preds = %197, %172
  %199 = load i32, ptr %14, align 4, !tbaa !13
  %200 = icmp eq i32 %199, 1
  br i1 %200, label %201, label %781

201:                                              ; preds = %198
  %202 = load i32, ptr %17, align 4, !tbaa !13
  %203 = icmp eq i32 %202, 1
  br i1 %203, label %204, label %495

204:                                              ; preds = %201
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %205, i32 0, i32 10
  %207 = load i16, ptr %206, align 1, !tbaa !18
  %208 = zext i16 %207 to i32
  %209 = icmp eq i32 %208, 51
  br i1 %209, label %210, label %352

210:                                              ; preds = %204
  %211 = load ptr, ptr %4, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %211, i32 0, i32 9
  %213 = load i16, ptr %212, align 1, !tbaa !17
  %214 = zext i16 %213 to i32
  %215 = and i32 %214, 32
  %216 = icmp sgt i32 %215, 0
  br i1 %216, label %217, label %259

217:                                              ; preds = %210
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %218

218:                                              ; preds = %255, %217
  %219 = load i32, ptr %12, align 4, !tbaa !13
  %220 = load i32, ptr %29, align 4, !tbaa !13
  %221 = icmp slt i32 %219, %220
  br i1 %221, label %222, label %258

222:                                              ; preds = %218
  %223 = load ptr, ptr %18, align 8, !tbaa !5
  %224 = load i32, ptr %12, align 4, !tbaa !13
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds i64, ptr %223, i64 %225
  %227 = load i64, ptr %226, align 8, !tbaa !26
  %228 = trunc i64 %227 to i32
  store i32 %228, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %229

229:                                              ; preds = %251, %222
  %230 = load i32, ptr %10, align 4, !tbaa !13
  %231 = load i32, ptr %28, align 4, !tbaa !13
  %232 = icmp slt i32 %230, %231
  br i1 %232, label %233, label %254

233:                                              ; preds = %229
  %234 = load ptr, ptr %20, align 8, !tbaa !5
  %235 = load i32, ptr %10, align 4, !tbaa !13
  %236 = load i32, ptr %11, align 4, !tbaa !13
  %237 = load i32, ptr %7, align 4, !tbaa !13
  %238 = mul nsw i32 %236, %237
  %239 = add nsw i32 %235, %238
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds float, ptr %234, i64 %240
  %242 = load float, ptr %241, align 4, !tbaa !28
  %243 = load ptr, ptr %21, align 8, !tbaa !5
  %244 = load i32, ptr %10, align 4, !tbaa !13
  %245 = load i32, ptr %12, align 4, !tbaa !13
  %246 = load i32, ptr %8, align 4, !tbaa !13
  %247 = mul nsw i32 %245, %246
  %248 = add nsw i32 %244, %247
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds float, ptr %243, i64 %249
  store float %242, ptr %250, align 4, !tbaa !28
  br label %251

251:                                              ; preds = %233
  %252 = load i32, ptr %10, align 4, !tbaa !13
  %253 = add nsw i32 %252, 1
  store i32 %253, ptr %10, align 4, !tbaa !13
  br label %229, !llvm.loop !30

254:                                              ; preds = %229
  br label %255

255:                                              ; preds = %254
  %256 = load i32, ptr %12, align 4, !tbaa !13
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr %12, align 4, !tbaa !13
  br label %218, !llvm.loop !32

258:                                              ; preds = %218
  br label %351

259:                                              ; preds = %210
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %260, i32 0, i32 9
  %262 = load i16, ptr %261, align 1, !tbaa !17
  %263 = zext i16 %262 to i32
  %264 = and i32 %263, 16
  %265 = icmp sgt i32 %264, 0
  br i1 %265, label %266, label %308

266:                                              ; preds = %259
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %267

267:                                              ; preds = %304, %266
  %268 = load i32, ptr %12, align 4, !tbaa !13
  %269 = load i32, ptr %28, align 4, !tbaa !13
  %270 = icmp slt i32 %268, %269
  br i1 %270, label %271, label %307

271:                                              ; preds = %267
  %272 = load ptr, ptr %18, align 8, !tbaa !5
  %273 = load i32, ptr %12, align 4, !tbaa !13
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds i64, ptr %272, i64 %274
  %276 = load i64, ptr %275, align 8, !tbaa !26
  %277 = trunc i64 %276 to i32
  store i32 %277, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %278

278:                                              ; preds = %300, %271
  %279 = load i32, ptr %11, align 4, !tbaa !13
  %280 = load i32, ptr %29, align 4, !tbaa !13
  %281 = icmp slt i32 %279, %280
  br i1 %281, label %282, label %303

282:                                              ; preds = %278
  %283 = load ptr, ptr %20, align 8, !tbaa !5
  %284 = load i32, ptr %10, align 4, !tbaa !13
  %285 = load i32, ptr %11, align 4, !tbaa !13
  %286 = load i32, ptr %7, align 4, !tbaa !13
  %287 = mul nsw i32 %285, %286
  %288 = add nsw i32 %284, %287
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds float, ptr %283, i64 %289
  %291 = load float, ptr %290, align 4, !tbaa !28
  %292 = load ptr, ptr %21, align 8, !tbaa !5
  %293 = load i32, ptr %12, align 4, !tbaa !13
  %294 = load i32, ptr %11, align 4, !tbaa !13
  %295 = load i32, ptr %8, align 4, !tbaa !13
  %296 = mul nsw i32 %294, %295
  %297 = add nsw i32 %293, %296
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds float, ptr %292, i64 %298
  store float %291, ptr %299, align 4, !tbaa !28
  br label %300

300:                                              ; preds = %282
  %301 = load i32, ptr %11, align 4, !tbaa !13
  %302 = add nsw i32 %301, 1
  store i32 %302, ptr %11, align 4, !tbaa !13
  br label %278, !llvm.loop !33

303:                                              ; preds = %278
  br label %304

304:                                              ; preds = %303
  %305 = load i32, ptr %12, align 4, !tbaa !13
  %306 = add nsw i32 %305, 1
  store i32 %306, ptr %12, align 4, !tbaa !13
  br label %267, !llvm.loop !34

307:                                              ; preds = %267
  br label %350

308:                                              ; preds = %259
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %309

309:                                              ; preds = %346, %308
  %310 = load i32, ptr %13, align 4, !tbaa !13
  %311 = load i32, ptr %29, align 4, !tbaa !13
  %312 = icmp slt i32 %310, %311
  br i1 %312, label %313, label %349

313:                                              ; preds = %309
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %314

314:                                              ; preds = %342, %313
  %315 = load i32, ptr %12, align 4, !tbaa !13
  %316 = load i32, ptr %28, align 4, !tbaa !13
  %317 = icmp slt i32 %315, %316
  br i1 %317, label %318, label %345

318:                                              ; preds = %314
  %319 = load ptr, ptr %18, align 8, !tbaa !5
  %320 = load i32, ptr %12, align 4, !tbaa !13
  %321 = load i32, ptr %13, align 4, !tbaa !13
  %322 = load i32, ptr %28, align 4, !tbaa !13
  %323 = mul nsw i32 %321, %322
  %324 = add nsw i32 %320, %323
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds i64, ptr %319, i64 %325
  %327 = load i64, ptr %326, align 8, !tbaa !26
  %328 = trunc i64 %327 to i32
  store i32 %328, ptr %10, align 4, !tbaa !13
  %329 = load ptr, ptr %20, align 8, !tbaa !5
  %330 = load i32, ptr %10, align 4, !tbaa !13
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds float, ptr %329, i64 %331
  %333 = load float, ptr %332, align 4, !tbaa !28
  %334 = load ptr, ptr %21, align 8, !tbaa !5
  %335 = load i32, ptr %12, align 4, !tbaa !13
  %336 = load i32, ptr %13, align 4, !tbaa !13
  %337 = load i32, ptr %8, align 4, !tbaa !13
  %338 = mul nsw i32 %336, %337
  %339 = add nsw i32 %335, %338
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds float, ptr %334, i64 %340
  store float %333, ptr %341, align 4, !tbaa !28
  br label %342

342:                                              ; preds = %318
  %343 = load i32, ptr %12, align 4, !tbaa !13
  %344 = add nsw i32 %343, 1
  store i32 %344, ptr %12, align 4, !tbaa !13
  br label %314, !llvm.loop !35

345:                                              ; preds = %314
  br label %346

346:                                              ; preds = %345
  %347 = load i32, ptr %13, align 4, !tbaa !13
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %13, align 4, !tbaa !13
  br label %309, !llvm.loop !36

349:                                              ; preds = %309
  br label %350

350:                                              ; preds = %349, %307
  br label %351

351:                                              ; preds = %350, %258
  br label %494

352:                                              ; preds = %204
  %353 = load ptr, ptr %4, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %353, i32 0, i32 9
  %355 = load i16, ptr %354, align 1, !tbaa !17
  %356 = zext i16 %355 to i32
  %357 = and i32 %356, 32
  %358 = icmp sgt i32 %357, 0
  br i1 %358, label %359, label %401

359:                                              ; preds = %352
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %360

360:                                              ; preds = %397, %359
  %361 = load i32, ptr %12, align 4, !tbaa !13
  %362 = load i32, ptr %27, align 4, !tbaa !13
  %363 = icmp slt i32 %361, %362
  br i1 %363, label %364, label %400

364:                                              ; preds = %360
  %365 = load ptr, ptr %18, align 8, !tbaa !5
  %366 = load i32, ptr %12, align 4, !tbaa !13
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds i64, ptr %365, i64 %367
  %369 = load i64, ptr %368, align 8, !tbaa !26
  %370 = trunc i64 %369 to i32
  store i32 %370, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %371

371:                                              ; preds = %393, %364
  %372 = load i32, ptr %10, align 4, !tbaa !13
  %373 = load i32, ptr %28, align 4, !tbaa !13
  %374 = icmp slt i32 %372, %373
  br i1 %374, label %375, label %396

375:                                              ; preds = %371
  %376 = load ptr, ptr %20, align 8, !tbaa !5
  %377 = load i32, ptr %10, align 4, !tbaa !13
  %378 = load i32, ptr %12, align 4, !tbaa !13
  %379 = load i32, ptr %7, align 4, !tbaa !13
  %380 = mul nsw i32 %378, %379
  %381 = add nsw i32 %377, %380
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds float, ptr %376, i64 %382
  %384 = load float, ptr %383, align 4, !tbaa !28
  %385 = load ptr, ptr %21, align 8, !tbaa !5
  %386 = load i32, ptr %10, align 4, !tbaa !13
  %387 = load i32, ptr %11, align 4, !tbaa !13
  %388 = load i32, ptr %8, align 4, !tbaa !13
  %389 = mul nsw i32 %387, %388
  %390 = add nsw i32 %386, %389
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds float, ptr %385, i64 %391
  store float %384, ptr %392, align 4, !tbaa !28
  br label %393

393:                                              ; preds = %375
  %394 = load i32, ptr %10, align 4, !tbaa !13
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %10, align 4, !tbaa !13
  br label %371, !llvm.loop !37

396:                                              ; preds = %371
  br label %397

397:                                              ; preds = %396
  %398 = load i32, ptr %12, align 4, !tbaa !13
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr %12, align 4, !tbaa !13
  br label %360, !llvm.loop !38

400:                                              ; preds = %360
  br label %493

401:                                              ; preds = %352
  %402 = load ptr, ptr %4, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %402, i32 0, i32 9
  %404 = load i16, ptr %403, align 1, !tbaa !17
  %405 = zext i16 %404 to i32
  %406 = and i32 %405, 16
  %407 = icmp sgt i32 %406, 0
  br i1 %407, label %408, label %450

408:                                              ; preds = %401
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %409

409:                                              ; preds = %446, %408
  %410 = load i32, ptr %12, align 4, !tbaa !13
  %411 = load i32, ptr %26, align 4, !tbaa !13
  %412 = icmp slt i32 %410, %411
  br i1 %412, label %413, label %449

413:                                              ; preds = %409
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = load i32, ptr %12, align 4, !tbaa !13
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds i64, ptr %414, i64 %416
  %418 = load i64, ptr %417, align 8, !tbaa !26
  %419 = trunc i64 %418 to i32
  store i32 %419, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %420

420:                                              ; preds = %442, %413
  %421 = load i32, ptr %11, align 4, !tbaa !13
  %422 = load i32, ptr %27, align 4, !tbaa !13
  %423 = icmp slt i32 %421, %422
  br i1 %423, label %424, label %445

424:                                              ; preds = %420
  %425 = load ptr, ptr %20, align 8, !tbaa !5
  %426 = load i32, ptr %12, align 4, !tbaa !13
  %427 = load i32, ptr %11, align 4, !tbaa !13
  %428 = load i32, ptr %7, align 4, !tbaa !13
  %429 = mul nsw i32 %427, %428
  %430 = add nsw i32 %426, %429
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds float, ptr %425, i64 %431
  %433 = load float, ptr %432, align 4, !tbaa !28
  %434 = load ptr, ptr %21, align 8, !tbaa !5
  %435 = load i32, ptr %10, align 4, !tbaa !13
  %436 = load i32, ptr %11, align 4, !tbaa !13
  %437 = load i32, ptr %8, align 4, !tbaa !13
  %438 = mul nsw i32 %436, %437
  %439 = add nsw i32 %435, %438
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds float, ptr %434, i64 %440
  store float %433, ptr %441, align 4, !tbaa !28
  br label %442

442:                                              ; preds = %424
  %443 = load i32, ptr %11, align 4, !tbaa !13
  %444 = add nsw i32 %443, 1
  store i32 %444, ptr %11, align 4, !tbaa !13
  br label %420, !llvm.loop !39

445:                                              ; preds = %420
  br label %446

446:                                              ; preds = %445
  %447 = load i32, ptr %12, align 4, !tbaa !13
  %448 = add nsw i32 %447, 1
  store i32 %448, ptr %12, align 4, !tbaa !13
  br label %409, !llvm.loop !40

449:                                              ; preds = %409
  br label %492

450:                                              ; preds = %401
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %451

451:                                              ; preds = %488, %450
  %452 = load i32, ptr %13, align 4, !tbaa !13
  %453 = load i32, ptr %27, align 4, !tbaa !13
  %454 = icmp slt i32 %452, %453
  br i1 %454, label %455, label %491

455:                                              ; preds = %451
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %456

456:                                              ; preds = %484, %455
  %457 = load i32, ptr %12, align 4, !tbaa !13
  %458 = load i32, ptr %26, align 4, !tbaa !13
  %459 = icmp slt i32 %457, %458
  br i1 %459, label %460, label %487

460:                                              ; preds = %456
  %461 = load ptr, ptr %18, align 8, !tbaa !5
  %462 = load i32, ptr %12, align 4, !tbaa !13
  %463 = load i32, ptr %13, align 4, !tbaa !13
  %464 = load i32, ptr %26, align 4, !tbaa !13
  %465 = mul nsw i32 %463, %464
  %466 = add nsw i32 %462, %465
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds i64, ptr %461, i64 %467
  %469 = load i64, ptr %468, align 8, !tbaa !26
  %470 = trunc i64 %469 to i32
  store i32 %470, ptr %10, align 4, !tbaa !13
  %471 = load ptr, ptr %20, align 8, !tbaa !5
  %472 = load i32, ptr %12, align 4, !tbaa !13
  %473 = load i32, ptr %13, align 4, !tbaa !13
  %474 = load i32, ptr %7, align 4, !tbaa !13
  %475 = mul nsw i32 %473, %474
  %476 = add nsw i32 %472, %475
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds float, ptr %471, i64 %477
  %479 = load float, ptr %478, align 4, !tbaa !28
  %480 = load ptr, ptr %21, align 8, !tbaa !5
  %481 = load i32, ptr %10, align 4, !tbaa !13
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds float, ptr %480, i64 %482
  store float %479, ptr %483, align 4, !tbaa !28
  br label %484

484:                                              ; preds = %460
  %485 = load i32, ptr %12, align 4, !tbaa !13
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr %12, align 4, !tbaa !13
  br label %456, !llvm.loop !41

487:                                              ; preds = %456
  br label %488

488:                                              ; preds = %487
  %489 = load i32, ptr %13, align 4, !tbaa !13
  %490 = add nsw i32 %489, 1
  store i32 %490, ptr %13, align 4, !tbaa !13
  br label %451, !llvm.loop !42

491:                                              ; preds = %451
  br label %492

492:                                              ; preds = %491, %449
  br label %493

493:                                              ; preds = %492, %400
  br label %494

494:                                              ; preds = %493, %351
  br label %780

495:                                              ; preds = %201
  %496 = load ptr, ptr %4, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %496, i32 0, i32 10
  %498 = load i16, ptr %497, align 1, !tbaa !18
  %499 = zext i16 %498 to i32
  %500 = icmp eq i32 %499, 51
  br i1 %500, label %501, label %640

501:                                              ; preds = %495
  %502 = load ptr, ptr %4, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %502, i32 0, i32 9
  %504 = load i16, ptr %503, align 1, !tbaa !17
  %505 = zext i16 %504 to i32
  %506 = and i32 %505, 32
  %507 = icmp sgt i32 %506, 0
  br i1 %507, label %508, label %549

508:                                              ; preds = %501
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %509

509:                                              ; preds = %545, %508
  %510 = load i32, ptr %12, align 4, !tbaa !13
  %511 = load i32, ptr %29, align 4, !tbaa !13
  %512 = icmp slt i32 %510, %511
  br i1 %512, label %513, label %548

513:                                              ; preds = %509
  %514 = load ptr, ptr %19, align 8, !tbaa !5
  %515 = load i32, ptr %12, align 4, !tbaa !13
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds i32, ptr %514, i64 %516
  %518 = load i32, ptr %517, align 4, !tbaa !13
  store i32 %518, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %519

519:                                              ; preds = %541, %513
  %520 = load i32, ptr %10, align 4, !tbaa !13
  %521 = load i32, ptr %28, align 4, !tbaa !13
  %522 = icmp slt i32 %520, %521
  br i1 %522, label %523, label %544

523:                                              ; preds = %519
  %524 = load ptr, ptr %20, align 8, !tbaa !5
  %525 = load i32, ptr %10, align 4, !tbaa !13
  %526 = load i32, ptr %11, align 4, !tbaa !13
  %527 = load i32, ptr %7, align 4, !tbaa !13
  %528 = mul nsw i32 %526, %527
  %529 = add nsw i32 %525, %528
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds float, ptr %524, i64 %530
  %532 = load float, ptr %531, align 4, !tbaa !28
  %533 = load ptr, ptr %21, align 8, !tbaa !5
  %534 = load i32, ptr %10, align 4, !tbaa !13
  %535 = load i32, ptr %12, align 4, !tbaa !13
  %536 = load i32, ptr %8, align 4, !tbaa !13
  %537 = mul nsw i32 %535, %536
  %538 = add nsw i32 %534, %537
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds float, ptr %533, i64 %539
  store float %532, ptr %540, align 4, !tbaa !28
  br label %541

541:                                              ; preds = %523
  %542 = load i32, ptr %10, align 4, !tbaa !13
  %543 = add nsw i32 %542, 1
  store i32 %543, ptr %10, align 4, !tbaa !13
  br label %519, !llvm.loop !43

544:                                              ; preds = %519
  br label %545

545:                                              ; preds = %544
  %546 = load i32, ptr %12, align 4, !tbaa !13
  %547 = add nsw i32 %546, 1
  store i32 %547, ptr %12, align 4, !tbaa !13
  br label %509, !llvm.loop !44

548:                                              ; preds = %509
  br label %639

549:                                              ; preds = %501
  %550 = load ptr, ptr %4, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %550, i32 0, i32 9
  %552 = load i16, ptr %551, align 1, !tbaa !17
  %553 = zext i16 %552 to i32
  %554 = and i32 %553, 16
  %555 = icmp sgt i32 %554, 0
  br i1 %555, label %556, label %597

556:                                              ; preds = %549
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %557

557:                                              ; preds = %593, %556
  %558 = load i32, ptr %12, align 4, !tbaa !13
  %559 = load i32, ptr %28, align 4, !tbaa !13
  %560 = icmp slt i32 %558, %559
  br i1 %560, label %561, label %596

561:                                              ; preds = %557
  %562 = load ptr, ptr %19, align 8, !tbaa !5
  %563 = load i32, ptr %12, align 4, !tbaa !13
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds i32, ptr %562, i64 %564
  %566 = load i32, ptr %565, align 4, !tbaa !13
  store i32 %566, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %567

567:                                              ; preds = %589, %561
  %568 = load i32, ptr %11, align 4, !tbaa !13
  %569 = load i32, ptr %29, align 4, !tbaa !13
  %570 = icmp slt i32 %568, %569
  br i1 %570, label %571, label %592

571:                                              ; preds = %567
  %572 = load ptr, ptr %20, align 8, !tbaa !5
  %573 = load i32, ptr %10, align 4, !tbaa !13
  %574 = load i32, ptr %11, align 4, !tbaa !13
  %575 = load i32, ptr %7, align 4, !tbaa !13
  %576 = mul nsw i32 %574, %575
  %577 = add nsw i32 %573, %576
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds float, ptr %572, i64 %578
  %580 = load float, ptr %579, align 4, !tbaa !28
  %581 = load ptr, ptr %21, align 8, !tbaa !5
  %582 = load i32, ptr %12, align 4, !tbaa !13
  %583 = load i32, ptr %11, align 4, !tbaa !13
  %584 = load i32, ptr %8, align 4, !tbaa !13
  %585 = mul nsw i32 %583, %584
  %586 = add nsw i32 %582, %585
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds float, ptr %581, i64 %587
  store float %580, ptr %588, align 4, !tbaa !28
  br label %589

589:                                              ; preds = %571
  %590 = load i32, ptr %11, align 4, !tbaa !13
  %591 = add nsw i32 %590, 1
  store i32 %591, ptr %11, align 4, !tbaa !13
  br label %567, !llvm.loop !45

592:                                              ; preds = %567
  br label %593

593:                                              ; preds = %592
  %594 = load i32, ptr %12, align 4, !tbaa !13
  %595 = add nsw i32 %594, 1
  store i32 %595, ptr %12, align 4, !tbaa !13
  br label %557, !llvm.loop !46

596:                                              ; preds = %557
  br label %638

597:                                              ; preds = %549
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %598

598:                                              ; preds = %634, %597
  %599 = load i32, ptr %13, align 4, !tbaa !13
  %600 = load i32, ptr %29, align 4, !tbaa !13
  %601 = icmp slt i32 %599, %600
  br i1 %601, label %602, label %637

602:                                              ; preds = %598
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %603

603:                                              ; preds = %630, %602
  %604 = load i32, ptr %12, align 4, !tbaa !13
  %605 = load i32, ptr %28, align 4, !tbaa !13
  %606 = icmp slt i32 %604, %605
  br i1 %606, label %607, label %633

607:                                              ; preds = %603
  %608 = load ptr, ptr %19, align 8, !tbaa !5
  %609 = load i32, ptr %12, align 4, !tbaa !13
  %610 = load i32, ptr %13, align 4, !tbaa !13
  %611 = load i32, ptr %28, align 4, !tbaa !13
  %612 = mul nsw i32 %610, %611
  %613 = add nsw i32 %609, %612
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds i32, ptr %608, i64 %614
  %616 = load i32, ptr %615, align 4, !tbaa !13
  store i32 %616, ptr %10, align 4, !tbaa !13
  %617 = load ptr, ptr %20, align 8, !tbaa !5
  %618 = load i32, ptr %10, align 4, !tbaa !13
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds float, ptr %617, i64 %619
  %621 = load float, ptr %620, align 4, !tbaa !28
  %622 = load ptr, ptr %21, align 8, !tbaa !5
  %623 = load i32, ptr %12, align 4, !tbaa !13
  %624 = load i32, ptr %13, align 4, !tbaa !13
  %625 = load i32, ptr %8, align 4, !tbaa !13
  %626 = mul nsw i32 %624, %625
  %627 = add nsw i32 %623, %626
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds float, ptr %622, i64 %628
  store float %621, ptr %629, align 4, !tbaa !28
  br label %630

630:                                              ; preds = %607
  %631 = load i32, ptr %12, align 4, !tbaa !13
  %632 = add nsw i32 %631, 1
  store i32 %632, ptr %12, align 4, !tbaa !13
  br label %603, !llvm.loop !47

633:                                              ; preds = %603
  br label %634

634:                                              ; preds = %633
  %635 = load i32, ptr %13, align 4, !tbaa !13
  %636 = add nsw i32 %635, 1
  store i32 %636, ptr %13, align 4, !tbaa !13
  br label %598, !llvm.loop !48

637:                                              ; preds = %598
  br label %638

638:                                              ; preds = %637, %596
  br label %639

639:                                              ; preds = %638, %548
  br label %779

640:                                              ; preds = %495
  %641 = load ptr, ptr %4, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %641, i32 0, i32 9
  %643 = load i16, ptr %642, align 1, !tbaa !17
  %644 = zext i16 %643 to i32
  %645 = and i32 %644, 32
  %646 = icmp sgt i32 %645, 0
  br i1 %646, label %647, label %688

647:                                              ; preds = %640
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %648

648:                                              ; preds = %684, %647
  %649 = load i32, ptr %12, align 4, !tbaa !13
  %650 = load i32, ptr %27, align 4, !tbaa !13
  %651 = icmp slt i32 %649, %650
  br i1 %651, label %652, label %687

652:                                              ; preds = %648
  %653 = load ptr, ptr %19, align 8, !tbaa !5
  %654 = load i32, ptr %12, align 4, !tbaa !13
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds i32, ptr %653, i64 %655
  %657 = load i32, ptr %656, align 4, !tbaa !13
  store i32 %657, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %658

658:                                              ; preds = %680, %652
  %659 = load i32, ptr %10, align 4, !tbaa !13
  %660 = load i32, ptr %28, align 4, !tbaa !13
  %661 = icmp slt i32 %659, %660
  br i1 %661, label %662, label %683

662:                                              ; preds = %658
  %663 = load ptr, ptr %20, align 8, !tbaa !5
  %664 = load i32, ptr %10, align 4, !tbaa !13
  %665 = load i32, ptr %12, align 4, !tbaa !13
  %666 = load i32, ptr %7, align 4, !tbaa !13
  %667 = mul nsw i32 %665, %666
  %668 = add nsw i32 %664, %667
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds float, ptr %663, i64 %669
  %671 = load float, ptr %670, align 4, !tbaa !28
  %672 = load ptr, ptr %21, align 8, !tbaa !5
  %673 = load i32, ptr %10, align 4, !tbaa !13
  %674 = load i32, ptr %11, align 4, !tbaa !13
  %675 = load i32, ptr %8, align 4, !tbaa !13
  %676 = mul nsw i32 %674, %675
  %677 = add nsw i32 %673, %676
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds float, ptr %672, i64 %678
  store float %671, ptr %679, align 4, !tbaa !28
  br label %680

680:                                              ; preds = %662
  %681 = load i32, ptr %10, align 4, !tbaa !13
  %682 = add nsw i32 %681, 1
  store i32 %682, ptr %10, align 4, !tbaa !13
  br label %658, !llvm.loop !49

683:                                              ; preds = %658
  br label %684

684:                                              ; preds = %683
  %685 = load i32, ptr %12, align 4, !tbaa !13
  %686 = add nsw i32 %685, 1
  store i32 %686, ptr %12, align 4, !tbaa !13
  br label %648, !llvm.loop !50

687:                                              ; preds = %648
  br label %778

688:                                              ; preds = %640
  %689 = load ptr, ptr %4, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %689, i32 0, i32 9
  %691 = load i16, ptr %690, align 1, !tbaa !17
  %692 = zext i16 %691 to i32
  %693 = and i32 %692, 16
  %694 = icmp sgt i32 %693, 0
  br i1 %694, label %695, label %736

695:                                              ; preds = %688
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %696

696:                                              ; preds = %732, %695
  %697 = load i32, ptr %12, align 4, !tbaa !13
  %698 = load i32, ptr %26, align 4, !tbaa !13
  %699 = icmp slt i32 %697, %698
  br i1 %699, label %700, label %735

700:                                              ; preds = %696
  %701 = load ptr, ptr %19, align 8, !tbaa !5
  %702 = load i32, ptr %12, align 4, !tbaa !13
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds i32, ptr %701, i64 %703
  %705 = load i32, ptr %704, align 4, !tbaa !13
  store i32 %705, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %706

706:                                              ; preds = %728, %700
  %707 = load i32, ptr %11, align 4, !tbaa !13
  %708 = load i32, ptr %27, align 4, !tbaa !13
  %709 = icmp slt i32 %707, %708
  br i1 %709, label %710, label %731

710:                                              ; preds = %706
  %711 = load ptr, ptr %20, align 8, !tbaa !5
  %712 = load i32, ptr %12, align 4, !tbaa !13
  %713 = load i32, ptr %11, align 4, !tbaa !13
  %714 = load i32, ptr %7, align 4, !tbaa !13
  %715 = mul nsw i32 %713, %714
  %716 = add nsw i32 %712, %715
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds float, ptr %711, i64 %717
  %719 = load float, ptr %718, align 4, !tbaa !28
  %720 = load ptr, ptr %21, align 8, !tbaa !5
  %721 = load i32, ptr %10, align 4, !tbaa !13
  %722 = load i32, ptr %11, align 4, !tbaa !13
  %723 = load i32, ptr %8, align 4, !tbaa !13
  %724 = mul nsw i32 %722, %723
  %725 = add nsw i32 %721, %724
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds float, ptr %720, i64 %726
  store float %719, ptr %727, align 4, !tbaa !28
  br label %728

728:                                              ; preds = %710
  %729 = load i32, ptr %11, align 4, !tbaa !13
  %730 = add nsw i32 %729, 1
  store i32 %730, ptr %11, align 4, !tbaa !13
  br label %706, !llvm.loop !51

731:                                              ; preds = %706
  br label %732

732:                                              ; preds = %731
  %733 = load i32, ptr %12, align 4, !tbaa !13
  %734 = add nsw i32 %733, 1
  store i32 %734, ptr %12, align 4, !tbaa !13
  br label %696, !llvm.loop !52

735:                                              ; preds = %696
  br label %777

736:                                              ; preds = %688
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %737

737:                                              ; preds = %773, %736
  %738 = load i32, ptr %13, align 4, !tbaa !13
  %739 = load i32, ptr %27, align 4, !tbaa !13
  %740 = icmp slt i32 %738, %739
  br i1 %740, label %741, label %776

741:                                              ; preds = %737
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %742

742:                                              ; preds = %769, %741
  %743 = load i32, ptr %12, align 4, !tbaa !13
  %744 = load i32, ptr %26, align 4, !tbaa !13
  %745 = icmp slt i32 %743, %744
  br i1 %745, label %746, label %772

746:                                              ; preds = %742
  %747 = load ptr, ptr %19, align 8, !tbaa !5
  %748 = load i32, ptr %12, align 4, !tbaa !13
  %749 = load i32, ptr %13, align 4, !tbaa !13
  %750 = load i32, ptr %26, align 4, !tbaa !13
  %751 = mul nsw i32 %749, %750
  %752 = add nsw i32 %748, %751
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds i32, ptr %747, i64 %753
  %755 = load i32, ptr %754, align 4, !tbaa !13
  store i32 %755, ptr %10, align 4, !tbaa !13
  %756 = load ptr, ptr %20, align 8, !tbaa !5
  %757 = load i32, ptr %12, align 4, !tbaa !13
  %758 = load i32, ptr %13, align 4, !tbaa !13
  %759 = load i32, ptr %7, align 4, !tbaa !13
  %760 = mul nsw i32 %758, %759
  %761 = add nsw i32 %757, %760
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds float, ptr %756, i64 %762
  %764 = load float, ptr %763, align 4, !tbaa !28
  %765 = load ptr, ptr %21, align 8, !tbaa !5
  %766 = load i32, ptr %10, align 4, !tbaa !13
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds float, ptr %765, i64 %767
  store float %764, ptr %768, align 4, !tbaa !28
  br label %769

769:                                              ; preds = %746
  %770 = load i32, ptr %12, align 4, !tbaa !13
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr %12, align 4, !tbaa !13
  br label %742, !llvm.loop !53

772:                                              ; preds = %742
  br label %773

773:                                              ; preds = %772
  %774 = load i32, ptr %13, align 4, !tbaa !13
  %775 = add nsw i32 %774, 1
  store i32 %775, ptr %13, align 4, !tbaa !13
  br label %737, !llvm.loop !54

776:                                              ; preds = %737
  br label %777

777:                                              ; preds = %776, %735
  br label %778

778:                                              ; preds = %777, %687
  br label %779

779:                                              ; preds = %778, %639
  br label %780

780:                                              ; preds = %779, %494
  br label %1949

781:                                              ; preds = %198
  %782 = load i32, ptr %15, align 4, !tbaa !13
  %783 = icmp eq i32 %782, 1
  br i1 %783, label %784, label %1364

784:                                              ; preds = %781
  %785 = load i32, ptr %17, align 4, !tbaa !13
  %786 = icmp eq i32 %785, 1
  br i1 %786, label %787, label %1078

787:                                              ; preds = %784
  %788 = load ptr, ptr %4, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %788, i32 0, i32 10
  %790 = load i16, ptr %789, align 1, !tbaa !18
  %791 = zext i16 %790 to i32
  %792 = icmp eq i32 %791, 51
  br i1 %792, label %793, label %935

793:                                              ; preds = %787
  %794 = load ptr, ptr %4, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %794, i32 0, i32 9
  %796 = load i16, ptr %795, align 1, !tbaa !17
  %797 = zext i16 %796 to i32
  %798 = and i32 %797, 32
  %799 = icmp sgt i32 %798, 0
  br i1 %799, label %800, label %842

800:                                              ; preds = %793
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %801

801:                                              ; preds = %838, %800
  %802 = load i32, ptr %12, align 4, !tbaa !13
  %803 = load i32, ptr %29, align 4, !tbaa !13
  %804 = icmp slt i32 %802, %803
  br i1 %804, label %805, label %841

805:                                              ; preds = %801
  %806 = load ptr, ptr %18, align 8, !tbaa !5
  %807 = load i32, ptr %12, align 4, !tbaa !13
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds i64, ptr %806, i64 %808
  %810 = load i64, ptr %809, align 8, !tbaa !26
  %811 = trunc i64 %810 to i32
  store i32 %811, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %812

812:                                              ; preds = %834, %805
  %813 = load i32, ptr %10, align 4, !tbaa !13
  %814 = load i32, ptr %28, align 4, !tbaa !13
  %815 = icmp slt i32 %813, %814
  br i1 %815, label %816, label %837

816:                                              ; preds = %812
  %817 = load ptr, ptr %22, align 8, !tbaa !5
  %818 = load i32, ptr %10, align 4, !tbaa !13
  %819 = load i32, ptr %11, align 4, !tbaa !13
  %820 = load i32, ptr %7, align 4, !tbaa !13
  %821 = mul nsw i32 %819, %820
  %822 = add nsw i32 %818, %821
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds i16, ptr %817, i64 %823
  %825 = load i16, ptr %824, align 2, !tbaa !55
  %826 = load ptr, ptr %23, align 8, !tbaa !5
  %827 = load i32, ptr %10, align 4, !tbaa !13
  %828 = load i32, ptr %12, align 4, !tbaa !13
  %829 = load i32, ptr %8, align 4, !tbaa !13
  %830 = mul nsw i32 %828, %829
  %831 = add nsw i32 %827, %830
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds i16, ptr %826, i64 %832
  store i16 %825, ptr %833, align 2, !tbaa !55
  br label %834

834:                                              ; preds = %816
  %835 = load i32, ptr %10, align 4, !tbaa !13
  %836 = add nsw i32 %835, 1
  store i32 %836, ptr %10, align 4, !tbaa !13
  br label %812, !llvm.loop !56

837:                                              ; preds = %812
  br label %838

838:                                              ; preds = %837
  %839 = load i32, ptr %12, align 4, !tbaa !13
  %840 = add nsw i32 %839, 1
  store i32 %840, ptr %12, align 4, !tbaa !13
  br label %801, !llvm.loop !57

841:                                              ; preds = %801
  br label %934

842:                                              ; preds = %793
  %843 = load ptr, ptr %4, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %843, i32 0, i32 9
  %845 = load i16, ptr %844, align 1, !tbaa !17
  %846 = zext i16 %845 to i32
  %847 = and i32 %846, 16
  %848 = icmp sgt i32 %847, 0
  br i1 %848, label %849, label %891

849:                                              ; preds = %842
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %850

850:                                              ; preds = %887, %849
  %851 = load i32, ptr %12, align 4, !tbaa !13
  %852 = load i32, ptr %28, align 4, !tbaa !13
  %853 = icmp slt i32 %851, %852
  br i1 %853, label %854, label %890

854:                                              ; preds = %850
  %855 = load ptr, ptr %18, align 8, !tbaa !5
  %856 = load i32, ptr %12, align 4, !tbaa !13
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds i64, ptr %855, i64 %857
  %859 = load i64, ptr %858, align 8, !tbaa !26
  %860 = trunc i64 %859 to i32
  store i32 %860, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %861

861:                                              ; preds = %883, %854
  %862 = load i32, ptr %11, align 4, !tbaa !13
  %863 = load i32, ptr %29, align 4, !tbaa !13
  %864 = icmp slt i32 %862, %863
  br i1 %864, label %865, label %886

865:                                              ; preds = %861
  %866 = load ptr, ptr %22, align 8, !tbaa !5
  %867 = load i32, ptr %10, align 4, !tbaa !13
  %868 = load i32, ptr %11, align 4, !tbaa !13
  %869 = load i32, ptr %7, align 4, !tbaa !13
  %870 = mul nsw i32 %868, %869
  %871 = add nsw i32 %867, %870
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds i16, ptr %866, i64 %872
  %874 = load i16, ptr %873, align 2, !tbaa !55
  %875 = load ptr, ptr %23, align 8, !tbaa !5
  %876 = load i32, ptr %12, align 4, !tbaa !13
  %877 = load i32, ptr %11, align 4, !tbaa !13
  %878 = load i32, ptr %8, align 4, !tbaa !13
  %879 = mul nsw i32 %877, %878
  %880 = add nsw i32 %876, %879
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds i16, ptr %875, i64 %881
  store i16 %874, ptr %882, align 2, !tbaa !55
  br label %883

883:                                              ; preds = %865
  %884 = load i32, ptr %11, align 4, !tbaa !13
  %885 = add nsw i32 %884, 1
  store i32 %885, ptr %11, align 4, !tbaa !13
  br label %861, !llvm.loop !58

886:                                              ; preds = %861
  br label %887

887:                                              ; preds = %886
  %888 = load i32, ptr %12, align 4, !tbaa !13
  %889 = add nsw i32 %888, 1
  store i32 %889, ptr %12, align 4, !tbaa !13
  br label %850, !llvm.loop !59

890:                                              ; preds = %850
  br label %933

891:                                              ; preds = %842
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %892

892:                                              ; preds = %929, %891
  %893 = load i32, ptr %13, align 4, !tbaa !13
  %894 = load i32, ptr %29, align 4, !tbaa !13
  %895 = icmp slt i32 %893, %894
  br i1 %895, label %896, label %932

896:                                              ; preds = %892
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %897

897:                                              ; preds = %925, %896
  %898 = load i32, ptr %12, align 4, !tbaa !13
  %899 = load i32, ptr %28, align 4, !tbaa !13
  %900 = icmp slt i32 %898, %899
  br i1 %900, label %901, label %928

901:                                              ; preds = %897
  %902 = load ptr, ptr %18, align 8, !tbaa !5
  %903 = load i32, ptr %12, align 4, !tbaa !13
  %904 = load i32, ptr %13, align 4, !tbaa !13
  %905 = load i32, ptr %28, align 4, !tbaa !13
  %906 = mul nsw i32 %904, %905
  %907 = add nsw i32 %903, %906
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds i64, ptr %902, i64 %908
  %910 = load i64, ptr %909, align 8, !tbaa !26
  %911 = trunc i64 %910 to i32
  store i32 %911, ptr %10, align 4, !tbaa !13
  %912 = load ptr, ptr %22, align 8, !tbaa !5
  %913 = load i32, ptr %10, align 4, !tbaa !13
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds i16, ptr %912, i64 %914
  %916 = load i16, ptr %915, align 2, !tbaa !55
  %917 = load ptr, ptr %23, align 8, !tbaa !5
  %918 = load i32, ptr %12, align 4, !tbaa !13
  %919 = load i32, ptr %13, align 4, !tbaa !13
  %920 = load i32, ptr %8, align 4, !tbaa !13
  %921 = mul nsw i32 %919, %920
  %922 = add nsw i32 %918, %921
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds i16, ptr %917, i64 %923
  store i16 %916, ptr %924, align 2, !tbaa !55
  br label %925

925:                                              ; preds = %901
  %926 = load i32, ptr %12, align 4, !tbaa !13
  %927 = add nsw i32 %926, 1
  store i32 %927, ptr %12, align 4, !tbaa !13
  br label %897, !llvm.loop !60

928:                                              ; preds = %897
  br label %929

929:                                              ; preds = %928
  %930 = load i32, ptr %13, align 4, !tbaa !13
  %931 = add nsw i32 %930, 1
  store i32 %931, ptr %13, align 4, !tbaa !13
  br label %892, !llvm.loop !61

932:                                              ; preds = %892
  br label %933

933:                                              ; preds = %932, %890
  br label %934

934:                                              ; preds = %933, %841
  br label %1077

935:                                              ; preds = %787
  %936 = load ptr, ptr %4, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %936, i32 0, i32 9
  %938 = load i16, ptr %937, align 1, !tbaa !17
  %939 = zext i16 %938 to i32
  %940 = and i32 %939, 32
  %941 = icmp sgt i32 %940, 0
  br i1 %941, label %942, label %984

942:                                              ; preds = %935
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %943

943:                                              ; preds = %980, %942
  %944 = load i32, ptr %12, align 4, !tbaa !13
  %945 = load i32, ptr %27, align 4, !tbaa !13
  %946 = icmp slt i32 %944, %945
  br i1 %946, label %947, label %983

947:                                              ; preds = %943
  %948 = load ptr, ptr %18, align 8, !tbaa !5
  %949 = load i32, ptr %12, align 4, !tbaa !13
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds i64, ptr %948, i64 %950
  %952 = load i64, ptr %951, align 8, !tbaa !26
  %953 = trunc i64 %952 to i32
  store i32 %953, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %954

954:                                              ; preds = %976, %947
  %955 = load i32, ptr %10, align 4, !tbaa !13
  %956 = load i32, ptr %28, align 4, !tbaa !13
  %957 = icmp slt i32 %955, %956
  br i1 %957, label %958, label %979

958:                                              ; preds = %954
  %959 = load ptr, ptr %22, align 8, !tbaa !5
  %960 = load i32, ptr %10, align 4, !tbaa !13
  %961 = load i32, ptr %12, align 4, !tbaa !13
  %962 = load i32, ptr %7, align 4, !tbaa !13
  %963 = mul nsw i32 %961, %962
  %964 = add nsw i32 %960, %963
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds i16, ptr %959, i64 %965
  %967 = load i16, ptr %966, align 2, !tbaa !55
  %968 = load ptr, ptr %23, align 8, !tbaa !5
  %969 = load i32, ptr %10, align 4, !tbaa !13
  %970 = load i32, ptr %11, align 4, !tbaa !13
  %971 = load i32, ptr %8, align 4, !tbaa !13
  %972 = mul nsw i32 %970, %971
  %973 = add nsw i32 %969, %972
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds i16, ptr %968, i64 %974
  store i16 %967, ptr %975, align 2, !tbaa !55
  br label %976

976:                                              ; preds = %958
  %977 = load i32, ptr %10, align 4, !tbaa !13
  %978 = add nsw i32 %977, 1
  store i32 %978, ptr %10, align 4, !tbaa !13
  br label %954, !llvm.loop !62

979:                                              ; preds = %954
  br label %980

980:                                              ; preds = %979
  %981 = load i32, ptr %12, align 4, !tbaa !13
  %982 = add nsw i32 %981, 1
  store i32 %982, ptr %12, align 4, !tbaa !13
  br label %943, !llvm.loop !63

983:                                              ; preds = %943
  br label %1076

984:                                              ; preds = %935
  %985 = load ptr, ptr %4, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %985, i32 0, i32 9
  %987 = load i16, ptr %986, align 1, !tbaa !17
  %988 = zext i16 %987 to i32
  %989 = and i32 %988, 16
  %990 = icmp sgt i32 %989, 0
  br i1 %990, label %991, label %1033

991:                                              ; preds = %984
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %992

992:                                              ; preds = %1029, %991
  %993 = load i32, ptr %12, align 4, !tbaa !13
  %994 = load i32, ptr %26, align 4, !tbaa !13
  %995 = icmp slt i32 %993, %994
  br i1 %995, label %996, label %1032

996:                                              ; preds = %992
  %997 = load ptr, ptr %18, align 8, !tbaa !5
  %998 = load i32, ptr %12, align 4, !tbaa !13
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds i64, ptr %997, i64 %999
  %1001 = load i64, ptr %1000, align 8, !tbaa !26
  %1002 = trunc i64 %1001 to i32
  store i32 %1002, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %1003

1003:                                             ; preds = %1025, %996
  %1004 = load i32, ptr %11, align 4, !tbaa !13
  %1005 = load i32, ptr %27, align 4, !tbaa !13
  %1006 = icmp slt i32 %1004, %1005
  br i1 %1006, label %1007, label %1028

1007:                                             ; preds = %1003
  %1008 = load ptr, ptr %22, align 8, !tbaa !5
  %1009 = load i32, ptr %12, align 4, !tbaa !13
  %1010 = load i32, ptr %11, align 4, !tbaa !13
  %1011 = load i32, ptr %7, align 4, !tbaa !13
  %1012 = mul nsw i32 %1010, %1011
  %1013 = add nsw i32 %1009, %1012
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds i16, ptr %1008, i64 %1014
  %1016 = load i16, ptr %1015, align 2, !tbaa !55
  %1017 = load ptr, ptr %23, align 8, !tbaa !5
  %1018 = load i32, ptr %10, align 4, !tbaa !13
  %1019 = load i32, ptr %11, align 4, !tbaa !13
  %1020 = load i32, ptr %8, align 4, !tbaa !13
  %1021 = mul nsw i32 %1019, %1020
  %1022 = add nsw i32 %1018, %1021
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds i16, ptr %1017, i64 %1023
  store i16 %1016, ptr %1024, align 2, !tbaa !55
  br label %1025

1025:                                             ; preds = %1007
  %1026 = load i32, ptr %11, align 4, !tbaa !13
  %1027 = add nsw i32 %1026, 1
  store i32 %1027, ptr %11, align 4, !tbaa !13
  br label %1003, !llvm.loop !64

1028:                                             ; preds = %1003
  br label %1029

1029:                                             ; preds = %1028
  %1030 = load i32, ptr %12, align 4, !tbaa !13
  %1031 = add nsw i32 %1030, 1
  store i32 %1031, ptr %12, align 4, !tbaa !13
  br label %992, !llvm.loop !65

1032:                                             ; preds = %992
  br label %1075

1033:                                             ; preds = %984
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %1034

1034:                                             ; preds = %1071, %1033
  %1035 = load i32, ptr %13, align 4, !tbaa !13
  %1036 = load i32, ptr %27, align 4, !tbaa !13
  %1037 = icmp slt i32 %1035, %1036
  br i1 %1037, label %1038, label %1074

1038:                                             ; preds = %1034
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1039

1039:                                             ; preds = %1067, %1038
  %1040 = load i32, ptr %12, align 4, !tbaa !13
  %1041 = load i32, ptr %26, align 4, !tbaa !13
  %1042 = icmp slt i32 %1040, %1041
  br i1 %1042, label %1043, label %1070

1043:                                             ; preds = %1039
  %1044 = load ptr, ptr %18, align 8, !tbaa !5
  %1045 = load i32, ptr %12, align 4, !tbaa !13
  %1046 = load i32, ptr %13, align 4, !tbaa !13
  %1047 = load i32, ptr %26, align 4, !tbaa !13
  %1048 = mul nsw i32 %1046, %1047
  %1049 = add nsw i32 %1045, %1048
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds i64, ptr %1044, i64 %1050
  %1052 = load i64, ptr %1051, align 8, !tbaa !26
  %1053 = trunc i64 %1052 to i32
  store i32 %1053, ptr %10, align 4, !tbaa !13
  %1054 = load ptr, ptr %22, align 8, !tbaa !5
  %1055 = load i32, ptr %12, align 4, !tbaa !13
  %1056 = load i32, ptr %13, align 4, !tbaa !13
  %1057 = load i32, ptr %7, align 4, !tbaa !13
  %1058 = mul nsw i32 %1056, %1057
  %1059 = add nsw i32 %1055, %1058
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds i16, ptr %1054, i64 %1060
  %1062 = load i16, ptr %1061, align 2, !tbaa !55
  %1063 = load ptr, ptr %23, align 8, !tbaa !5
  %1064 = load i32, ptr %10, align 4, !tbaa !13
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds i16, ptr %1063, i64 %1065
  store i16 %1062, ptr %1066, align 2, !tbaa !55
  br label %1067

1067:                                             ; preds = %1043
  %1068 = load i32, ptr %12, align 4, !tbaa !13
  %1069 = add nsw i32 %1068, 1
  store i32 %1069, ptr %12, align 4, !tbaa !13
  br label %1039, !llvm.loop !66

1070:                                             ; preds = %1039
  br label %1071

1071:                                             ; preds = %1070
  %1072 = load i32, ptr %13, align 4, !tbaa !13
  %1073 = add nsw i32 %1072, 1
  store i32 %1073, ptr %13, align 4, !tbaa !13
  br label %1034, !llvm.loop !67

1074:                                             ; preds = %1034
  br label %1075

1075:                                             ; preds = %1074, %1032
  br label %1076

1076:                                             ; preds = %1075, %983
  br label %1077

1077:                                             ; preds = %1076, %934
  br label %1363

1078:                                             ; preds = %784
  %1079 = load ptr, ptr %4, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1079, i32 0, i32 10
  %1081 = load i16, ptr %1080, align 1, !tbaa !18
  %1082 = zext i16 %1081 to i32
  %1083 = icmp eq i32 %1082, 51
  br i1 %1083, label %1084, label %1223

1084:                                             ; preds = %1078
  %1085 = load ptr, ptr %4, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1085, i32 0, i32 9
  %1087 = load i16, ptr %1086, align 1, !tbaa !17
  %1088 = zext i16 %1087 to i32
  %1089 = and i32 %1088, 32
  %1090 = icmp sgt i32 %1089, 0
  br i1 %1090, label %1091, label %1132

1091:                                             ; preds = %1084
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1092

1092:                                             ; preds = %1128, %1091
  %1093 = load i32, ptr %12, align 4, !tbaa !13
  %1094 = load i32, ptr %29, align 4, !tbaa !13
  %1095 = icmp slt i32 %1093, %1094
  br i1 %1095, label %1096, label %1131

1096:                                             ; preds = %1092
  %1097 = load ptr, ptr %19, align 8, !tbaa !5
  %1098 = load i32, ptr %12, align 4, !tbaa !13
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds i32, ptr %1097, i64 %1099
  %1101 = load i32, ptr %1100, align 4, !tbaa !13
  store i32 %1101, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %1102

1102:                                             ; preds = %1124, %1096
  %1103 = load i32, ptr %10, align 4, !tbaa !13
  %1104 = load i32, ptr %28, align 4, !tbaa !13
  %1105 = icmp slt i32 %1103, %1104
  br i1 %1105, label %1106, label %1127

1106:                                             ; preds = %1102
  %1107 = load ptr, ptr %22, align 8, !tbaa !5
  %1108 = load i32, ptr %10, align 4, !tbaa !13
  %1109 = load i32, ptr %11, align 4, !tbaa !13
  %1110 = load i32, ptr %7, align 4, !tbaa !13
  %1111 = mul nsw i32 %1109, %1110
  %1112 = add nsw i32 %1108, %1111
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds i16, ptr %1107, i64 %1113
  %1115 = load i16, ptr %1114, align 2, !tbaa !55
  %1116 = load ptr, ptr %23, align 8, !tbaa !5
  %1117 = load i32, ptr %10, align 4, !tbaa !13
  %1118 = load i32, ptr %12, align 4, !tbaa !13
  %1119 = load i32, ptr %8, align 4, !tbaa !13
  %1120 = mul nsw i32 %1118, %1119
  %1121 = add nsw i32 %1117, %1120
  %1122 = sext i32 %1121 to i64
  %1123 = getelementptr inbounds i16, ptr %1116, i64 %1122
  store i16 %1115, ptr %1123, align 2, !tbaa !55
  br label %1124

1124:                                             ; preds = %1106
  %1125 = load i32, ptr %10, align 4, !tbaa !13
  %1126 = add nsw i32 %1125, 1
  store i32 %1126, ptr %10, align 4, !tbaa !13
  br label %1102, !llvm.loop !68

1127:                                             ; preds = %1102
  br label %1128

1128:                                             ; preds = %1127
  %1129 = load i32, ptr %12, align 4, !tbaa !13
  %1130 = add nsw i32 %1129, 1
  store i32 %1130, ptr %12, align 4, !tbaa !13
  br label %1092, !llvm.loop !69

1131:                                             ; preds = %1092
  br label %1222

1132:                                             ; preds = %1084
  %1133 = load ptr, ptr %4, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1133, i32 0, i32 9
  %1135 = load i16, ptr %1134, align 1, !tbaa !17
  %1136 = zext i16 %1135 to i32
  %1137 = and i32 %1136, 16
  %1138 = icmp sgt i32 %1137, 0
  br i1 %1138, label %1139, label %1180

1139:                                             ; preds = %1132
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1140

1140:                                             ; preds = %1176, %1139
  %1141 = load i32, ptr %12, align 4, !tbaa !13
  %1142 = load i32, ptr %28, align 4, !tbaa !13
  %1143 = icmp slt i32 %1141, %1142
  br i1 %1143, label %1144, label %1179

1144:                                             ; preds = %1140
  %1145 = load ptr, ptr %19, align 8, !tbaa !5
  %1146 = load i32, ptr %12, align 4, !tbaa !13
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds i32, ptr %1145, i64 %1147
  %1149 = load i32, ptr %1148, align 4, !tbaa !13
  store i32 %1149, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %1150

1150:                                             ; preds = %1172, %1144
  %1151 = load i32, ptr %11, align 4, !tbaa !13
  %1152 = load i32, ptr %29, align 4, !tbaa !13
  %1153 = icmp slt i32 %1151, %1152
  br i1 %1153, label %1154, label %1175

1154:                                             ; preds = %1150
  %1155 = load ptr, ptr %22, align 8, !tbaa !5
  %1156 = load i32, ptr %10, align 4, !tbaa !13
  %1157 = load i32, ptr %11, align 4, !tbaa !13
  %1158 = load i32, ptr %7, align 4, !tbaa !13
  %1159 = mul nsw i32 %1157, %1158
  %1160 = add nsw i32 %1156, %1159
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds i16, ptr %1155, i64 %1161
  %1163 = load i16, ptr %1162, align 2, !tbaa !55
  %1164 = load ptr, ptr %23, align 8, !tbaa !5
  %1165 = load i32, ptr %12, align 4, !tbaa !13
  %1166 = load i32, ptr %11, align 4, !tbaa !13
  %1167 = load i32, ptr %8, align 4, !tbaa !13
  %1168 = mul nsw i32 %1166, %1167
  %1169 = add nsw i32 %1165, %1168
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds i16, ptr %1164, i64 %1170
  store i16 %1163, ptr %1171, align 2, !tbaa !55
  br label %1172

1172:                                             ; preds = %1154
  %1173 = load i32, ptr %11, align 4, !tbaa !13
  %1174 = add nsw i32 %1173, 1
  store i32 %1174, ptr %11, align 4, !tbaa !13
  br label %1150, !llvm.loop !70

1175:                                             ; preds = %1150
  br label %1176

1176:                                             ; preds = %1175
  %1177 = load i32, ptr %12, align 4, !tbaa !13
  %1178 = add nsw i32 %1177, 1
  store i32 %1178, ptr %12, align 4, !tbaa !13
  br label %1140, !llvm.loop !71

1179:                                             ; preds = %1140
  br label %1221

1180:                                             ; preds = %1132
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %1181

1181:                                             ; preds = %1217, %1180
  %1182 = load i32, ptr %13, align 4, !tbaa !13
  %1183 = load i32, ptr %29, align 4, !tbaa !13
  %1184 = icmp slt i32 %1182, %1183
  br i1 %1184, label %1185, label %1220

1185:                                             ; preds = %1181
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1186

1186:                                             ; preds = %1213, %1185
  %1187 = load i32, ptr %12, align 4, !tbaa !13
  %1188 = load i32, ptr %28, align 4, !tbaa !13
  %1189 = icmp slt i32 %1187, %1188
  br i1 %1189, label %1190, label %1216

1190:                                             ; preds = %1186
  %1191 = load ptr, ptr %19, align 8, !tbaa !5
  %1192 = load i32, ptr %12, align 4, !tbaa !13
  %1193 = load i32, ptr %13, align 4, !tbaa !13
  %1194 = load i32, ptr %28, align 4, !tbaa !13
  %1195 = mul nsw i32 %1193, %1194
  %1196 = add nsw i32 %1192, %1195
  %1197 = sext i32 %1196 to i64
  %1198 = getelementptr inbounds i32, ptr %1191, i64 %1197
  %1199 = load i32, ptr %1198, align 4, !tbaa !13
  store i32 %1199, ptr %10, align 4, !tbaa !13
  %1200 = load ptr, ptr %22, align 8, !tbaa !5
  %1201 = load i32, ptr %10, align 4, !tbaa !13
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds i16, ptr %1200, i64 %1202
  %1204 = load i16, ptr %1203, align 2, !tbaa !55
  %1205 = load ptr, ptr %23, align 8, !tbaa !5
  %1206 = load i32, ptr %12, align 4, !tbaa !13
  %1207 = load i32, ptr %13, align 4, !tbaa !13
  %1208 = load i32, ptr %8, align 4, !tbaa !13
  %1209 = mul nsw i32 %1207, %1208
  %1210 = add nsw i32 %1206, %1209
  %1211 = sext i32 %1210 to i64
  %1212 = getelementptr inbounds i16, ptr %1205, i64 %1211
  store i16 %1204, ptr %1212, align 2, !tbaa !55
  br label %1213

1213:                                             ; preds = %1190
  %1214 = load i32, ptr %12, align 4, !tbaa !13
  %1215 = add nsw i32 %1214, 1
  store i32 %1215, ptr %12, align 4, !tbaa !13
  br label %1186, !llvm.loop !72

1216:                                             ; preds = %1186
  br label %1217

1217:                                             ; preds = %1216
  %1218 = load i32, ptr %13, align 4, !tbaa !13
  %1219 = add nsw i32 %1218, 1
  store i32 %1219, ptr %13, align 4, !tbaa !13
  br label %1181, !llvm.loop !73

1220:                                             ; preds = %1181
  br label %1221

1221:                                             ; preds = %1220, %1179
  br label %1222

1222:                                             ; preds = %1221, %1131
  br label %1362

1223:                                             ; preds = %1078
  %1224 = load ptr, ptr %4, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1224, i32 0, i32 9
  %1226 = load i16, ptr %1225, align 1, !tbaa !17
  %1227 = zext i16 %1226 to i32
  %1228 = and i32 %1227, 32
  %1229 = icmp sgt i32 %1228, 0
  br i1 %1229, label %1230, label %1271

1230:                                             ; preds = %1223
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1231

1231:                                             ; preds = %1267, %1230
  %1232 = load i32, ptr %12, align 4, !tbaa !13
  %1233 = load i32, ptr %27, align 4, !tbaa !13
  %1234 = icmp slt i32 %1232, %1233
  br i1 %1234, label %1235, label %1270

1235:                                             ; preds = %1231
  %1236 = load ptr, ptr %19, align 8, !tbaa !5
  %1237 = load i32, ptr %12, align 4, !tbaa !13
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr inbounds i32, ptr %1236, i64 %1238
  %1240 = load i32, ptr %1239, align 4, !tbaa !13
  store i32 %1240, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %1241

1241:                                             ; preds = %1263, %1235
  %1242 = load i32, ptr %10, align 4, !tbaa !13
  %1243 = load i32, ptr %28, align 4, !tbaa !13
  %1244 = icmp slt i32 %1242, %1243
  br i1 %1244, label %1245, label %1266

1245:                                             ; preds = %1241
  %1246 = load ptr, ptr %22, align 8, !tbaa !5
  %1247 = load i32, ptr %10, align 4, !tbaa !13
  %1248 = load i32, ptr %12, align 4, !tbaa !13
  %1249 = load i32, ptr %7, align 4, !tbaa !13
  %1250 = mul nsw i32 %1248, %1249
  %1251 = add nsw i32 %1247, %1250
  %1252 = sext i32 %1251 to i64
  %1253 = getelementptr inbounds i16, ptr %1246, i64 %1252
  %1254 = load i16, ptr %1253, align 2, !tbaa !55
  %1255 = load ptr, ptr %23, align 8, !tbaa !5
  %1256 = load i32, ptr %10, align 4, !tbaa !13
  %1257 = load i32, ptr %11, align 4, !tbaa !13
  %1258 = load i32, ptr %8, align 4, !tbaa !13
  %1259 = mul nsw i32 %1257, %1258
  %1260 = add nsw i32 %1256, %1259
  %1261 = sext i32 %1260 to i64
  %1262 = getelementptr inbounds i16, ptr %1255, i64 %1261
  store i16 %1254, ptr %1262, align 2, !tbaa !55
  br label %1263

1263:                                             ; preds = %1245
  %1264 = load i32, ptr %10, align 4, !tbaa !13
  %1265 = add nsw i32 %1264, 1
  store i32 %1265, ptr %10, align 4, !tbaa !13
  br label %1241, !llvm.loop !74

1266:                                             ; preds = %1241
  br label %1267

1267:                                             ; preds = %1266
  %1268 = load i32, ptr %12, align 4, !tbaa !13
  %1269 = add nsw i32 %1268, 1
  store i32 %1269, ptr %12, align 4, !tbaa !13
  br label %1231, !llvm.loop !75

1270:                                             ; preds = %1231
  br label %1361

1271:                                             ; preds = %1223
  %1272 = load ptr, ptr %4, align 8, !tbaa !5
  %1273 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1272, i32 0, i32 9
  %1274 = load i16, ptr %1273, align 1, !tbaa !17
  %1275 = zext i16 %1274 to i32
  %1276 = and i32 %1275, 16
  %1277 = icmp sgt i32 %1276, 0
  br i1 %1277, label %1278, label %1319

1278:                                             ; preds = %1271
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1279

1279:                                             ; preds = %1315, %1278
  %1280 = load i32, ptr %12, align 4, !tbaa !13
  %1281 = load i32, ptr %26, align 4, !tbaa !13
  %1282 = icmp slt i32 %1280, %1281
  br i1 %1282, label %1283, label %1318

1283:                                             ; preds = %1279
  %1284 = load ptr, ptr %19, align 8, !tbaa !5
  %1285 = load i32, ptr %12, align 4, !tbaa !13
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds i32, ptr %1284, i64 %1286
  %1288 = load i32, ptr %1287, align 4, !tbaa !13
  store i32 %1288, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %1289

1289:                                             ; preds = %1311, %1283
  %1290 = load i32, ptr %11, align 4, !tbaa !13
  %1291 = load i32, ptr %27, align 4, !tbaa !13
  %1292 = icmp slt i32 %1290, %1291
  br i1 %1292, label %1293, label %1314

1293:                                             ; preds = %1289
  %1294 = load ptr, ptr %22, align 8, !tbaa !5
  %1295 = load i32, ptr %12, align 4, !tbaa !13
  %1296 = load i32, ptr %11, align 4, !tbaa !13
  %1297 = load i32, ptr %7, align 4, !tbaa !13
  %1298 = mul nsw i32 %1296, %1297
  %1299 = add nsw i32 %1295, %1298
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds i16, ptr %1294, i64 %1300
  %1302 = load i16, ptr %1301, align 2, !tbaa !55
  %1303 = load ptr, ptr %23, align 8, !tbaa !5
  %1304 = load i32, ptr %10, align 4, !tbaa !13
  %1305 = load i32, ptr %11, align 4, !tbaa !13
  %1306 = load i32, ptr %8, align 4, !tbaa !13
  %1307 = mul nsw i32 %1305, %1306
  %1308 = add nsw i32 %1304, %1307
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds i16, ptr %1303, i64 %1309
  store i16 %1302, ptr %1310, align 2, !tbaa !55
  br label %1311

1311:                                             ; preds = %1293
  %1312 = load i32, ptr %11, align 4, !tbaa !13
  %1313 = add nsw i32 %1312, 1
  store i32 %1313, ptr %11, align 4, !tbaa !13
  br label %1289, !llvm.loop !76

1314:                                             ; preds = %1289
  br label %1315

1315:                                             ; preds = %1314
  %1316 = load i32, ptr %12, align 4, !tbaa !13
  %1317 = add nsw i32 %1316, 1
  store i32 %1317, ptr %12, align 4, !tbaa !13
  br label %1279, !llvm.loop !77

1318:                                             ; preds = %1279
  br label %1360

1319:                                             ; preds = %1271
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %1320

1320:                                             ; preds = %1356, %1319
  %1321 = load i32, ptr %13, align 4, !tbaa !13
  %1322 = load i32, ptr %27, align 4, !tbaa !13
  %1323 = icmp slt i32 %1321, %1322
  br i1 %1323, label %1324, label %1359

1324:                                             ; preds = %1320
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1325

1325:                                             ; preds = %1352, %1324
  %1326 = load i32, ptr %12, align 4, !tbaa !13
  %1327 = load i32, ptr %26, align 4, !tbaa !13
  %1328 = icmp slt i32 %1326, %1327
  br i1 %1328, label %1329, label %1355

1329:                                             ; preds = %1325
  %1330 = load ptr, ptr %19, align 8, !tbaa !5
  %1331 = load i32, ptr %12, align 4, !tbaa !13
  %1332 = load i32, ptr %13, align 4, !tbaa !13
  %1333 = load i32, ptr %26, align 4, !tbaa !13
  %1334 = mul nsw i32 %1332, %1333
  %1335 = add nsw i32 %1331, %1334
  %1336 = sext i32 %1335 to i64
  %1337 = getelementptr inbounds i32, ptr %1330, i64 %1336
  %1338 = load i32, ptr %1337, align 4, !tbaa !13
  store i32 %1338, ptr %10, align 4, !tbaa !13
  %1339 = load ptr, ptr %22, align 8, !tbaa !5
  %1340 = load i32, ptr %12, align 4, !tbaa !13
  %1341 = load i32, ptr %13, align 4, !tbaa !13
  %1342 = load i32, ptr %7, align 4, !tbaa !13
  %1343 = mul nsw i32 %1341, %1342
  %1344 = add nsw i32 %1340, %1343
  %1345 = sext i32 %1344 to i64
  %1346 = getelementptr inbounds i16, ptr %1339, i64 %1345
  %1347 = load i16, ptr %1346, align 2, !tbaa !55
  %1348 = load ptr, ptr %23, align 8, !tbaa !5
  %1349 = load i32, ptr %10, align 4, !tbaa !13
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds i16, ptr %1348, i64 %1350
  store i16 %1347, ptr %1351, align 2, !tbaa !55
  br label %1352

1352:                                             ; preds = %1329
  %1353 = load i32, ptr %12, align 4, !tbaa !13
  %1354 = add nsw i32 %1353, 1
  store i32 %1354, ptr %12, align 4, !tbaa !13
  br label %1325, !llvm.loop !78

1355:                                             ; preds = %1325
  br label %1356

1356:                                             ; preds = %1355
  %1357 = load i32, ptr %13, align 4, !tbaa !13
  %1358 = add nsw i32 %1357, 1
  store i32 %1358, ptr %13, align 4, !tbaa !13
  br label %1320, !llvm.loop !79

1359:                                             ; preds = %1320
  br label %1360

1360:                                             ; preds = %1359, %1318
  br label %1361

1361:                                             ; preds = %1360, %1270
  br label %1362

1362:                                             ; preds = %1361, %1222
  br label %1363

1363:                                             ; preds = %1362, %1077
  br label %1948

1364:                                             ; preds = %781
  %1365 = load i32, ptr %16, align 4, !tbaa !13
  %1366 = icmp eq i32 %1365, 1
  br i1 %1366, label %1367, label %1947

1367:                                             ; preds = %1364
  %1368 = load i32, ptr %17, align 4, !tbaa !13
  %1369 = icmp eq i32 %1368, 1
  br i1 %1369, label %1370, label %1661

1370:                                             ; preds = %1367
  %1371 = load ptr, ptr %4, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1371, i32 0, i32 10
  %1373 = load i16, ptr %1372, align 1, !tbaa !18
  %1374 = zext i16 %1373 to i32
  %1375 = icmp eq i32 %1374, 51
  br i1 %1375, label %1376, label %1518

1376:                                             ; preds = %1370
  %1377 = load ptr, ptr %4, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1377, i32 0, i32 9
  %1379 = load i16, ptr %1378, align 1, !tbaa !17
  %1380 = zext i16 %1379 to i32
  %1381 = and i32 %1380, 32
  %1382 = icmp sgt i32 %1381, 0
  br i1 %1382, label %1383, label %1425

1383:                                             ; preds = %1376
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1384

1384:                                             ; preds = %1421, %1383
  %1385 = load i32, ptr %12, align 4, !tbaa !13
  %1386 = load i32, ptr %29, align 4, !tbaa !13
  %1387 = icmp slt i32 %1385, %1386
  br i1 %1387, label %1388, label %1424

1388:                                             ; preds = %1384
  %1389 = load ptr, ptr %18, align 8, !tbaa !5
  %1390 = load i32, ptr %12, align 4, !tbaa !13
  %1391 = sext i32 %1390 to i64
  %1392 = getelementptr inbounds i64, ptr %1389, i64 %1391
  %1393 = load i64, ptr %1392, align 8, !tbaa !26
  %1394 = trunc i64 %1393 to i32
  store i32 %1394, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %1395

1395:                                             ; preds = %1417, %1388
  %1396 = load i32, ptr %10, align 4, !tbaa !13
  %1397 = load i32, ptr %28, align 4, !tbaa !13
  %1398 = icmp slt i32 %1396, %1397
  br i1 %1398, label %1399, label %1420

1399:                                             ; preds = %1395
  %1400 = load ptr, ptr %24, align 8, !tbaa !5
  %1401 = load i32, ptr %10, align 4, !tbaa !13
  %1402 = load i32, ptr %11, align 4, !tbaa !13
  %1403 = load i32, ptr %7, align 4, !tbaa !13
  %1404 = mul nsw i32 %1402, %1403
  %1405 = add nsw i32 %1401, %1404
  %1406 = sext i32 %1405 to i64
  %1407 = getelementptr inbounds i8, ptr %1400, i64 %1406
  %1408 = load i8, ptr %1407, align 1, !tbaa !80
  %1409 = load ptr, ptr %25, align 8, !tbaa !5
  %1410 = load i32, ptr %10, align 4, !tbaa !13
  %1411 = load i32, ptr %12, align 4, !tbaa !13
  %1412 = load i32, ptr %8, align 4, !tbaa !13
  %1413 = mul nsw i32 %1411, %1412
  %1414 = add nsw i32 %1410, %1413
  %1415 = sext i32 %1414 to i64
  %1416 = getelementptr inbounds i8, ptr %1409, i64 %1415
  store i8 %1408, ptr %1416, align 1, !tbaa !80
  br label %1417

1417:                                             ; preds = %1399
  %1418 = load i32, ptr %10, align 4, !tbaa !13
  %1419 = add nsw i32 %1418, 1
  store i32 %1419, ptr %10, align 4, !tbaa !13
  br label %1395, !llvm.loop !81

1420:                                             ; preds = %1395
  br label %1421

1421:                                             ; preds = %1420
  %1422 = load i32, ptr %12, align 4, !tbaa !13
  %1423 = add nsw i32 %1422, 1
  store i32 %1423, ptr %12, align 4, !tbaa !13
  br label %1384, !llvm.loop !82

1424:                                             ; preds = %1384
  br label %1517

1425:                                             ; preds = %1376
  %1426 = load ptr, ptr %4, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1426, i32 0, i32 9
  %1428 = load i16, ptr %1427, align 1, !tbaa !17
  %1429 = zext i16 %1428 to i32
  %1430 = and i32 %1429, 16
  %1431 = icmp sgt i32 %1430, 0
  br i1 %1431, label %1432, label %1474

1432:                                             ; preds = %1425
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1433

1433:                                             ; preds = %1470, %1432
  %1434 = load i32, ptr %12, align 4, !tbaa !13
  %1435 = load i32, ptr %28, align 4, !tbaa !13
  %1436 = icmp slt i32 %1434, %1435
  br i1 %1436, label %1437, label %1473

1437:                                             ; preds = %1433
  %1438 = load ptr, ptr %18, align 8, !tbaa !5
  %1439 = load i32, ptr %12, align 4, !tbaa !13
  %1440 = sext i32 %1439 to i64
  %1441 = getelementptr inbounds i64, ptr %1438, i64 %1440
  %1442 = load i64, ptr %1441, align 8, !tbaa !26
  %1443 = trunc i64 %1442 to i32
  store i32 %1443, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %1444

1444:                                             ; preds = %1466, %1437
  %1445 = load i32, ptr %11, align 4, !tbaa !13
  %1446 = load i32, ptr %29, align 4, !tbaa !13
  %1447 = icmp slt i32 %1445, %1446
  br i1 %1447, label %1448, label %1469

1448:                                             ; preds = %1444
  %1449 = load ptr, ptr %24, align 8, !tbaa !5
  %1450 = load i32, ptr %10, align 4, !tbaa !13
  %1451 = load i32, ptr %11, align 4, !tbaa !13
  %1452 = load i32, ptr %7, align 4, !tbaa !13
  %1453 = mul nsw i32 %1451, %1452
  %1454 = add nsw i32 %1450, %1453
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds i8, ptr %1449, i64 %1455
  %1457 = load i8, ptr %1456, align 1, !tbaa !80
  %1458 = load ptr, ptr %25, align 8, !tbaa !5
  %1459 = load i32, ptr %12, align 4, !tbaa !13
  %1460 = load i32, ptr %11, align 4, !tbaa !13
  %1461 = load i32, ptr %8, align 4, !tbaa !13
  %1462 = mul nsw i32 %1460, %1461
  %1463 = add nsw i32 %1459, %1462
  %1464 = sext i32 %1463 to i64
  %1465 = getelementptr inbounds i8, ptr %1458, i64 %1464
  store i8 %1457, ptr %1465, align 1, !tbaa !80
  br label %1466

1466:                                             ; preds = %1448
  %1467 = load i32, ptr %11, align 4, !tbaa !13
  %1468 = add nsw i32 %1467, 1
  store i32 %1468, ptr %11, align 4, !tbaa !13
  br label %1444, !llvm.loop !83

1469:                                             ; preds = %1444
  br label %1470

1470:                                             ; preds = %1469
  %1471 = load i32, ptr %12, align 4, !tbaa !13
  %1472 = add nsw i32 %1471, 1
  store i32 %1472, ptr %12, align 4, !tbaa !13
  br label %1433, !llvm.loop !84

1473:                                             ; preds = %1433
  br label %1516

1474:                                             ; preds = %1425
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %1475

1475:                                             ; preds = %1512, %1474
  %1476 = load i32, ptr %13, align 4, !tbaa !13
  %1477 = load i32, ptr %29, align 4, !tbaa !13
  %1478 = icmp slt i32 %1476, %1477
  br i1 %1478, label %1479, label %1515

1479:                                             ; preds = %1475
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1480

1480:                                             ; preds = %1508, %1479
  %1481 = load i32, ptr %12, align 4, !tbaa !13
  %1482 = load i32, ptr %28, align 4, !tbaa !13
  %1483 = icmp slt i32 %1481, %1482
  br i1 %1483, label %1484, label %1511

1484:                                             ; preds = %1480
  %1485 = load ptr, ptr %18, align 8, !tbaa !5
  %1486 = load i32, ptr %12, align 4, !tbaa !13
  %1487 = load i32, ptr %13, align 4, !tbaa !13
  %1488 = load i32, ptr %28, align 4, !tbaa !13
  %1489 = mul nsw i32 %1487, %1488
  %1490 = add nsw i32 %1486, %1489
  %1491 = sext i32 %1490 to i64
  %1492 = getelementptr inbounds i64, ptr %1485, i64 %1491
  %1493 = load i64, ptr %1492, align 8, !tbaa !26
  %1494 = trunc i64 %1493 to i32
  store i32 %1494, ptr %10, align 4, !tbaa !13
  %1495 = load ptr, ptr %24, align 8, !tbaa !5
  %1496 = load i32, ptr %10, align 4, !tbaa !13
  %1497 = sext i32 %1496 to i64
  %1498 = getelementptr inbounds i8, ptr %1495, i64 %1497
  %1499 = load i8, ptr %1498, align 1, !tbaa !80
  %1500 = load ptr, ptr %25, align 8, !tbaa !5
  %1501 = load i32, ptr %12, align 4, !tbaa !13
  %1502 = load i32, ptr %13, align 4, !tbaa !13
  %1503 = load i32, ptr %8, align 4, !tbaa !13
  %1504 = mul nsw i32 %1502, %1503
  %1505 = add nsw i32 %1501, %1504
  %1506 = sext i32 %1505 to i64
  %1507 = getelementptr inbounds i8, ptr %1500, i64 %1506
  store i8 %1499, ptr %1507, align 1, !tbaa !80
  br label %1508

1508:                                             ; preds = %1484
  %1509 = load i32, ptr %12, align 4, !tbaa !13
  %1510 = add nsw i32 %1509, 1
  store i32 %1510, ptr %12, align 4, !tbaa !13
  br label %1480, !llvm.loop !85

1511:                                             ; preds = %1480
  br label %1512

1512:                                             ; preds = %1511
  %1513 = load i32, ptr %13, align 4, !tbaa !13
  %1514 = add nsw i32 %1513, 1
  store i32 %1514, ptr %13, align 4, !tbaa !13
  br label %1475, !llvm.loop !86

1515:                                             ; preds = %1475
  br label %1516

1516:                                             ; preds = %1515, %1473
  br label %1517

1517:                                             ; preds = %1516, %1424
  br label %1660

1518:                                             ; preds = %1370
  %1519 = load ptr, ptr %4, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1519, i32 0, i32 9
  %1521 = load i16, ptr %1520, align 1, !tbaa !17
  %1522 = zext i16 %1521 to i32
  %1523 = and i32 %1522, 32
  %1524 = icmp sgt i32 %1523, 0
  br i1 %1524, label %1525, label %1567

1525:                                             ; preds = %1518
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1526

1526:                                             ; preds = %1563, %1525
  %1527 = load i32, ptr %12, align 4, !tbaa !13
  %1528 = load i32, ptr %27, align 4, !tbaa !13
  %1529 = icmp slt i32 %1527, %1528
  br i1 %1529, label %1530, label %1566

1530:                                             ; preds = %1526
  %1531 = load ptr, ptr %18, align 8, !tbaa !5
  %1532 = load i32, ptr %12, align 4, !tbaa !13
  %1533 = sext i32 %1532 to i64
  %1534 = getelementptr inbounds i64, ptr %1531, i64 %1533
  %1535 = load i64, ptr %1534, align 8, !tbaa !26
  %1536 = trunc i64 %1535 to i32
  store i32 %1536, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %1537

1537:                                             ; preds = %1559, %1530
  %1538 = load i32, ptr %10, align 4, !tbaa !13
  %1539 = load i32, ptr %28, align 4, !tbaa !13
  %1540 = icmp slt i32 %1538, %1539
  br i1 %1540, label %1541, label %1562

1541:                                             ; preds = %1537
  %1542 = load ptr, ptr %24, align 8, !tbaa !5
  %1543 = load i32, ptr %10, align 4, !tbaa !13
  %1544 = load i32, ptr %12, align 4, !tbaa !13
  %1545 = load i32, ptr %7, align 4, !tbaa !13
  %1546 = mul nsw i32 %1544, %1545
  %1547 = add nsw i32 %1543, %1546
  %1548 = sext i32 %1547 to i64
  %1549 = getelementptr inbounds i8, ptr %1542, i64 %1548
  %1550 = load i8, ptr %1549, align 1, !tbaa !80
  %1551 = load ptr, ptr %25, align 8, !tbaa !5
  %1552 = load i32, ptr %10, align 4, !tbaa !13
  %1553 = load i32, ptr %11, align 4, !tbaa !13
  %1554 = load i32, ptr %8, align 4, !tbaa !13
  %1555 = mul nsw i32 %1553, %1554
  %1556 = add nsw i32 %1552, %1555
  %1557 = sext i32 %1556 to i64
  %1558 = getelementptr inbounds i8, ptr %1551, i64 %1557
  store i8 %1550, ptr %1558, align 1, !tbaa !80
  br label %1559

1559:                                             ; preds = %1541
  %1560 = load i32, ptr %10, align 4, !tbaa !13
  %1561 = add nsw i32 %1560, 1
  store i32 %1561, ptr %10, align 4, !tbaa !13
  br label %1537, !llvm.loop !87

1562:                                             ; preds = %1537
  br label %1563

1563:                                             ; preds = %1562
  %1564 = load i32, ptr %12, align 4, !tbaa !13
  %1565 = add nsw i32 %1564, 1
  store i32 %1565, ptr %12, align 4, !tbaa !13
  br label %1526, !llvm.loop !88

1566:                                             ; preds = %1526
  br label %1659

1567:                                             ; preds = %1518
  %1568 = load ptr, ptr %4, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1568, i32 0, i32 9
  %1570 = load i16, ptr %1569, align 1, !tbaa !17
  %1571 = zext i16 %1570 to i32
  %1572 = and i32 %1571, 16
  %1573 = icmp sgt i32 %1572, 0
  br i1 %1573, label %1574, label %1616

1574:                                             ; preds = %1567
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1575

1575:                                             ; preds = %1612, %1574
  %1576 = load i32, ptr %12, align 4, !tbaa !13
  %1577 = load i32, ptr %26, align 4, !tbaa !13
  %1578 = icmp slt i32 %1576, %1577
  br i1 %1578, label %1579, label %1615

1579:                                             ; preds = %1575
  %1580 = load ptr, ptr %18, align 8, !tbaa !5
  %1581 = load i32, ptr %12, align 4, !tbaa !13
  %1582 = sext i32 %1581 to i64
  %1583 = getelementptr inbounds i64, ptr %1580, i64 %1582
  %1584 = load i64, ptr %1583, align 8, !tbaa !26
  %1585 = trunc i64 %1584 to i32
  store i32 %1585, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %1586

1586:                                             ; preds = %1608, %1579
  %1587 = load i32, ptr %11, align 4, !tbaa !13
  %1588 = load i32, ptr %27, align 4, !tbaa !13
  %1589 = icmp slt i32 %1587, %1588
  br i1 %1589, label %1590, label %1611

1590:                                             ; preds = %1586
  %1591 = load ptr, ptr %24, align 8, !tbaa !5
  %1592 = load i32, ptr %12, align 4, !tbaa !13
  %1593 = load i32, ptr %11, align 4, !tbaa !13
  %1594 = load i32, ptr %7, align 4, !tbaa !13
  %1595 = mul nsw i32 %1593, %1594
  %1596 = add nsw i32 %1592, %1595
  %1597 = sext i32 %1596 to i64
  %1598 = getelementptr inbounds i8, ptr %1591, i64 %1597
  %1599 = load i8, ptr %1598, align 1, !tbaa !80
  %1600 = load ptr, ptr %25, align 8, !tbaa !5
  %1601 = load i32, ptr %10, align 4, !tbaa !13
  %1602 = load i32, ptr %11, align 4, !tbaa !13
  %1603 = load i32, ptr %8, align 4, !tbaa !13
  %1604 = mul nsw i32 %1602, %1603
  %1605 = add nsw i32 %1601, %1604
  %1606 = sext i32 %1605 to i64
  %1607 = getelementptr inbounds i8, ptr %1600, i64 %1606
  store i8 %1599, ptr %1607, align 1, !tbaa !80
  br label %1608

1608:                                             ; preds = %1590
  %1609 = load i32, ptr %11, align 4, !tbaa !13
  %1610 = add nsw i32 %1609, 1
  store i32 %1610, ptr %11, align 4, !tbaa !13
  br label %1586, !llvm.loop !89

1611:                                             ; preds = %1586
  br label %1612

1612:                                             ; preds = %1611
  %1613 = load i32, ptr %12, align 4, !tbaa !13
  %1614 = add nsw i32 %1613, 1
  store i32 %1614, ptr %12, align 4, !tbaa !13
  br label %1575, !llvm.loop !90

1615:                                             ; preds = %1575
  br label %1658

1616:                                             ; preds = %1567
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %1617

1617:                                             ; preds = %1654, %1616
  %1618 = load i32, ptr %13, align 4, !tbaa !13
  %1619 = load i32, ptr %27, align 4, !tbaa !13
  %1620 = icmp slt i32 %1618, %1619
  br i1 %1620, label %1621, label %1657

1621:                                             ; preds = %1617
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1622

1622:                                             ; preds = %1650, %1621
  %1623 = load i32, ptr %12, align 4, !tbaa !13
  %1624 = load i32, ptr %26, align 4, !tbaa !13
  %1625 = icmp slt i32 %1623, %1624
  br i1 %1625, label %1626, label %1653

1626:                                             ; preds = %1622
  %1627 = load ptr, ptr %18, align 8, !tbaa !5
  %1628 = load i32, ptr %12, align 4, !tbaa !13
  %1629 = load i32, ptr %13, align 4, !tbaa !13
  %1630 = load i32, ptr %26, align 4, !tbaa !13
  %1631 = mul nsw i32 %1629, %1630
  %1632 = add nsw i32 %1628, %1631
  %1633 = sext i32 %1632 to i64
  %1634 = getelementptr inbounds i64, ptr %1627, i64 %1633
  %1635 = load i64, ptr %1634, align 8, !tbaa !26
  %1636 = trunc i64 %1635 to i32
  store i32 %1636, ptr %10, align 4, !tbaa !13
  %1637 = load ptr, ptr %24, align 8, !tbaa !5
  %1638 = load i32, ptr %12, align 4, !tbaa !13
  %1639 = load i32, ptr %13, align 4, !tbaa !13
  %1640 = load i32, ptr %7, align 4, !tbaa !13
  %1641 = mul nsw i32 %1639, %1640
  %1642 = add nsw i32 %1638, %1641
  %1643 = sext i32 %1642 to i64
  %1644 = getelementptr inbounds i8, ptr %1637, i64 %1643
  %1645 = load i8, ptr %1644, align 1, !tbaa !80
  %1646 = load ptr, ptr %25, align 8, !tbaa !5
  %1647 = load i32, ptr %10, align 4, !tbaa !13
  %1648 = sext i32 %1647 to i64
  %1649 = getelementptr inbounds i8, ptr %1646, i64 %1648
  store i8 %1645, ptr %1649, align 1, !tbaa !80
  br label %1650

1650:                                             ; preds = %1626
  %1651 = load i32, ptr %12, align 4, !tbaa !13
  %1652 = add nsw i32 %1651, 1
  store i32 %1652, ptr %12, align 4, !tbaa !13
  br label %1622, !llvm.loop !91

1653:                                             ; preds = %1622
  br label %1654

1654:                                             ; preds = %1653
  %1655 = load i32, ptr %13, align 4, !tbaa !13
  %1656 = add nsw i32 %1655, 1
  store i32 %1656, ptr %13, align 4, !tbaa !13
  br label %1617, !llvm.loop !92

1657:                                             ; preds = %1617
  br label %1658

1658:                                             ; preds = %1657, %1615
  br label %1659

1659:                                             ; preds = %1658, %1566
  br label %1660

1660:                                             ; preds = %1659, %1517
  br label %1946

1661:                                             ; preds = %1367
  %1662 = load ptr, ptr %4, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1662, i32 0, i32 10
  %1664 = load i16, ptr %1663, align 1, !tbaa !18
  %1665 = zext i16 %1664 to i32
  %1666 = icmp eq i32 %1665, 51
  br i1 %1666, label %1667, label %1806

1667:                                             ; preds = %1661
  %1668 = load ptr, ptr %4, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1668, i32 0, i32 9
  %1670 = load i16, ptr %1669, align 1, !tbaa !17
  %1671 = zext i16 %1670 to i32
  %1672 = and i32 %1671, 32
  %1673 = icmp sgt i32 %1672, 0
  br i1 %1673, label %1674, label %1715

1674:                                             ; preds = %1667
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1675

1675:                                             ; preds = %1711, %1674
  %1676 = load i32, ptr %12, align 4, !tbaa !13
  %1677 = load i32, ptr %29, align 4, !tbaa !13
  %1678 = icmp slt i32 %1676, %1677
  br i1 %1678, label %1679, label %1714

1679:                                             ; preds = %1675
  %1680 = load ptr, ptr %19, align 8, !tbaa !5
  %1681 = load i32, ptr %12, align 4, !tbaa !13
  %1682 = sext i32 %1681 to i64
  %1683 = getelementptr inbounds i32, ptr %1680, i64 %1682
  %1684 = load i32, ptr %1683, align 4, !tbaa !13
  store i32 %1684, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %1685

1685:                                             ; preds = %1707, %1679
  %1686 = load i32, ptr %10, align 4, !tbaa !13
  %1687 = load i32, ptr %28, align 4, !tbaa !13
  %1688 = icmp slt i32 %1686, %1687
  br i1 %1688, label %1689, label %1710

1689:                                             ; preds = %1685
  %1690 = load ptr, ptr %24, align 8, !tbaa !5
  %1691 = load i32, ptr %10, align 4, !tbaa !13
  %1692 = load i32, ptr %11, align 4, !tbaa !13
  %1693 = load i32, ptr %7, align 4, !tbaa !13
  %1694 = mul nsw i32 %1692, %1693
  %1695 = add nsw i32 %1691, %1694
  %1696 = sext i32 %1695 to i64
  %1697 = getelementptr inbounds i8, ptr %1690, i64 %1696
  %1698 = load i8, ptr %1697, align 1, !tbaa !80
  %1699 = load ptr, ptr %25, align 8, !tbaa !5
  %1700 = load i32, ptr %10, align 4, !tbaa !13
  %1701 = load i32, ptr %12, align 4, !tbaa !13
  %1702 = load i32, ptr %8, align 4, !tbaa !13
  %1703 = mul nsw i32 %1701, %1702
  %1704 = add nsw i32 %1700, %1703
  %1705 = sext i32 %1704 to i64
  %1706 = getelementptr inbounds i8, ptr %1699, i64 %1705
  store i8 %1698, ptr %1706, align 1, !tbaa !80
  br label %1707

1707:                                             ; preds = %1689
  %1708 = load i32, ptr %10, align 4, !tbaa !13
  %1709 = add nsw i32 %1708, 1
  store i32 %1709, ptr %10, align 4, !tbaa !13
  br label %1685, !llvm.loop !93

1710:                                             ; preds = %1685
  br label %1711

1711:                                             ; preds = %1710
  %1712 = load i32, ptr %12, align 4, !tbaa !13
  %1713 = add nsw i32 %1712, 1
  store i32 %1713, ptr %12, align 4, !tbaa !13
  br label %1675, !llvm.loop !94

1714:                                             ; preds = %1675
  br label %1805

1715:                                             ; preds = %1667
  %1716 = load ptr, ptr %4, align 8, !tbaa !5
  %1717 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1716, i32 0, i32 9
  %1718 = load i16, ptr %1717, align 1, !tbaa !17
  %1719 = zext i16 %1718 to i32
  %1720 = and i32 %1719, 16
  %1721 = icmp sgt i32 %1720, 0
  br i1 %1721, label %1722, label %1763

1722:                                             ; preds = %1715
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1723

1723:                                             ; preds = %1759, %1722
  %1724 = load i32, ptr %12, align 4, !tbaa !13
  %1725 = load i32, ptr %28, align 4, !tbaa !13
  %1726 = icmp slt i32 %1724, %1725
  br i1 %1726, label %1727, label %1762

1727:                                             ; preds = %1723
  %1728 = load ptr, ptr %19, align 8, !tbaa !5
  %1729 = load i32, ptr %12, align 4, !tbaa !13
  %1730 = sext i32 %1729 to i64
  %1731 = getelementptr inbounds i32, ptr %1728, i64 %1730
  %1732 = load i32, ptr %1731, align 4, !tbaa !13
  store i32 %1732, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %1733

1733:                                             ; preds = %1755, %1727
  %1734 = load i32, ptr %11, align 4, !tbaa !13
  %1735 = load i32, ptr %29, align 4, !tbaa !13
  %1736 = icmp slt i32 %1734, %1735
  br i1 %1736, label %1737, label %1758

1737:                                             ; preds = %1733
  %1738 = load ptr, ptr %24, align 8, !tbaa !5
  %1739 = load i32, ptr %10, align 4, !tbaa !13
  %1740 = load i32, ptr %11, align 4, !tbaa !13
  %1741 = load i32, ptr %7, align 4, !tbaa !13
  %1742 = mul nsw i32 %1740, %1741
  %1743 = add nsw i32 %1739, %1742
  %1744 = sext i32 %1743 to i64
  %1745 = getelementptr inbounds i8, ptr %1738, i64 %1744
  %1746 = load i8, ptr %1745, align 1, !tbaa !80
  %1747 = load ptr, ptr %25, align 8, !tbaa !5
  %1748 = load i32, ptr %12, align 4, !tbaa !13
  %1749 = load i32, ptr %11, align 4, !tbaa !13
  %1750 = load i32, ptr %8, align 4, !tbaa !13
  %1751 = mul nsw i32 %1749, %1750
  %1752 = add nsw i32 %1748, %1751
  %1753 = sext i32 %1752 to i64
  %1754 = getelementptr inbounds i8, ptr %1747, i64 %1753
  store i8 %1746, ptr %1754, align 1, !tbaa !80
  br label %1755

1755:                                             ; preds = %1737
  %1756 = load i32, ptr %11, align 4, !tbaa !13
  %1757 = add nsw i32 %1756, 1
  store i32 %1757, ptr %11, align 4, !tbaa !13
  br label %1733, !llvm.loop !95

1758:                                             ; preds = %1733
  br label %1759

1759:                                             ; preds = %1758
  %1760 = load i32, ptr %12, align 4, !tbaa !13
  %1761 = add nsw i32 %1760, 1
  store i32 %1761, ptr %12, align 4, !tbaa !13
  br label %1723, !llvm.loop !96

1762:                                             ; preds = %1723
  br label %1804

1763:                                             ; preds = %1715
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %1764

1764:                                             ; preds = %1800, %1763
  %1765 = load i32, ptr %13, align 4, !tbaa !13
  %1766 = load i32, ptr %29, align 4, !tbaa !13
  %1767 = icmp slt i32 %1765, %1766
  br i1 %1767, label %1768, label %1803

1768:                                             ; preds = %1764
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1769

1769:                                             ; preds = %1796, %1768
  %1770 = load i32, ptr %12, align 4, !tbaa !13
  %1771 = load i32, ptr %28, align 4, !tbaa !13
  %1772 = icmp slt i32 %1770, %1771
  br i1 %1772, label %1773, label %1799

1773:                                             ; preds = %1769
  %1774 = load ptr, ptr %19, align 8, !tbaa !5
  %1775 = load i32, ptr %12, align 4, !tbaa !13
  %1776 = load i32, ptr %13, align 4, !tbaa !13
  %1777 = load i32, ptr %28, align 4, !tbaa !13
  %1778 = mul nsw i32 %1776, %1777
  %1779 = add nsw i32 %1775, %1778
  %1780 = sext i32 %1779 to i64
  %1781 = getelementptr inbounds i32, ptr %1774, i64 %1780
  %1782 = load i32, ptr %1781, align 4, !tbaa !13
  store i32 %1782, ptr %10, align 4, !tbaa !13
  %1783 = load ptr, ptr %24, align 8, !tbaa !5
  %1784 = load i32, ptr %10, align 4, !tbaa !13
  %1785 = sext i32 %1784 to i64
  %1786 = getelementptr inbounds i8, ptr %1783, i64 %1785
  %1787 = load i8, ptr %1786, align 1, !tbaa !80
  %1788 = load ptr, ptr %25, align 8, !tbaa !5
  %1789 = load i32, ptr %12, align 4, !tbaa !13
  %1790 = load i32, ptr %13, align 4, !tbaa !13
  %1791 = load i32, ptr %8, align 4, !tbaa !13
  %1792 = mul nsw i32 %1790, %1791
  %1793 = add nsw i32 %1789, %1792
  %1794 = sext i32 %1793 to i64
  %1795 = getelementptr inbounds i8, ptr %1788, i64 %1794
  store i8 %1787, ptr %1795, align 1, !tbaa !80
  br label %1796

1796:                                             ; preds = %1773
  %1797 = load i32, ptr %12, align 4, !tbaa !13
  %1798 = add nsw i32 %1797, 1
  store i32 %1798, ptr %12, align 4, !tbaa !13
  br label %1769, !llvm.loop !97

1799:                                             ; preds = %1769
  br label %1800

1800:                                             ; preds = %1799
  %1801 = load i32, ptr %13, align 4, !tbaa !13
  %1802 = add nsw i32 %1801, 1
  store i32 %1802, ptr %13, align 4, !tbaa !13
  br label %1764, !llvm.loop !98

1803:                                             ; preds = %1764
  br label %1804

1804:                                             ; preds = %1803, %1762
  br label %1805

1805:                                             ; preds = %1804, %1714
  br label %1945

1806:                                             ; preds = %1661
  %1807 = load ptr, ptr %4, align 8, !tbaa !5
  %1808 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1807, i32 0, i32 9
  %1809 = load i16, ptr %1808, align 1, !tbaa !17
  %1810 = zext i16 %1809 to i32
  %1811 = and i32 %1810, 32
  %1812 = icmp sgt i32 %1811, 0
  br i1 %1812, label %1813, label %1854

1813:                                             ; preds = %1806
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1814

1814:                                             ; preds = %1850, %1813
  %1815 = load i32, ptr %12, align 4, !tbaa !13
  %1816 = load i32, ptr %27, align 4, !tbaa !13
  %1817 = icmp slt i32 %1815, %1816
  br i1 %1817, label %1818, label %1853

1818:                                             ; preds = %1814
  %1819 = load ptr, ptr %19, align 8, !tbaa !5
  %1820 = load i32, ptr %12, align 4, !tbaa !13
  %1821 = sext i32 %1820 to i64
  %1822 = getelementptr inbounds i32, ptr %1819, i64 %1821
  %1823 = load i32, ptr %1822, align 4, !tbaa !13
  store i32 %1823, ptr %11, align 4, !tbaa !13
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %1824

1824:                                             ; preds = %1846, %1818
  %1825 = load i32, ptr %10, align 4, !tbaa !13
  %1826 = load i32, ptr %28, align 4, !tbaa !13
  %1827 = icmp slt i32 %1825, %1826
  br i1 %1827, label %1828, label %1849

1828:                                             ; preds = %1824
  %1829 = load ptr, ptr %24, align 8, !tbaa !5
  %1830 = load i32, ptr %10, align 4, !tbaa !13
  %1831 = load i32, ptr %12, align 4, !tbaa !13
  %1832 = load i32, ptr %7, align 4, !tbaa !13
  %1833 = mul nsw i32 %1831, %1832
  %1834 = add nsw i32 %1830, %1833
  %1835 = sext i32 %1834 to i64
  %1836 = getelementptr inbounds i8, ptr %1829, i64 %1835
  %1837 = load i8, ptr %1836, align 1, !tbaa !80
  %1838 = load ptr, ptr %25, align 8, !tbaa !5
  %1839 = load i32, ptr %10, align 4, !tbaa !13
  %1840 = load i32, ptr %11, align 4, !tbaa !13
  %1841 = load i32, ptr %8, align 4, !tbaa !13
  %1842 = mul nsw i32 %1840, %1841
  %1843 = add nsw i32 %1839, %1842
  %1844 = sext i32 %1843 to i64
  %1845 = getelementptr inbounds i8, ptr %1838, i64 %1844
  store i8 %1837, ptr %1845, align 1, !tbaa !80
  br label %1846

1846:                                             ; preds = %1828
  %1847 = load i32, ptr %10, align 4, !tbaa !13
  %1848 = add nsw i32 %1847, 1
  store i32 %1848, ptr %10, align 4, !tbaa !13
  br label %1824, !llvm.loop !99

1849:                                             ; preds = %1824
  br label %1850

1850:                                             ; preds = %1849
  %1851 = load i32, ptr %12, align 4, !tbaa !13
  %1852 = add nsw i32 %1851, 1
  store i32 %1852, ptr %12, align 4, !tbaa !13
  br label %1814, !llvm.loop !100

1853:                                             ; preds = %1814
  br label %1944

1854:                                             ; preds = %1806
  %1855 = load ptr, ptr %4, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1855, i32 0, i32 9
  %1857 = load i16, ptr %1856, align 1, !tbaa !17
  %1858 = zext i16 %1857 to i32
  %1859 = and i32 %1858, 16
  %1860 = icmp sgt i32 %1859, 0
  br i1 %1860, label %1861, label %1902

1861:                                             ; preds = %1854
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1862

1862:                                             ; preds = %1898, %1861
  %1863 = load i32, ptr %12, align 4, !tbaa !13
  %1864 = load i32, ptr %26, align 4, !tbaa !13
  %1865 = icmp slt i32 %1863, %1864
  br i1 %1865, label %1866, label %1901

1866:                                             ; preds = %1862
  %1867 = load ptr, ptr %19, align 8, !tbaa !5
  %1868 = load i32, ptr %12, align 4, !tbaa !13
  %1869 = sext i32 %1868 to i64
  %1870 = getelementptr inbounds i32, ptr %1867, i64 %1869
  %1871 = load i32, ptr %1870, align 4, !tbaa !13
  store i32 %1871, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %1872

1872:                                             ; preds = %1894, %1866
  %1873 = load i32, ptr %11, align 4, !tbaa !13
  %1874 = load i32, ptr %27, align 4, !tbaa !13
  %1875 = icmp slt i32 %1873, %1874
  br i1 %1875, label %1876, label %1897

1876:                                             ; preds = %1872
  %1877 = load ptr, ptr %24, align 8, !tbaa !5
  %1878 = load i32, ptr %12, align 4, !tbaa !13
  %1879 = load i32, ptr %11, align 4, !tbaa !13
  %1880 = load i32, ptr %7, align 4, !tbaa !13
  %1881 = mul nsw i32 %1879, %1880
  %1882 = add nsw i32 %1878, %1881
  %1883 = sext i32 %1882 to i64
  %1884 = getelementptr inbounds i8, ptr %1877, i64 %1883
  %1885 = load i8, ptr %1884, align 1, !tbaa !80
  %1886 = load ptr, ptr %25, align 8, !tbaa !5
  %1887 = load i32, ptr %10, align 4, !tbaa !13
  %1888 = load i32, ptr %11, align 4, !tbaa !13
  %1889 = load i32, ptr %8, align 4, !tbaa !13
  %1890 = mul nsw i32 %1888, %1889
  %1891 = add nsw i32 %1887, %1890
  %1892 = sext i32 %1891 to i64
  %1893 = getelementptr inbounds i8, ptr %1886, i64 %1892
  store i8 %1885, ptr %1893, align 1, !tbaa !80
  br label %1894

1894:                                             ; preds = %1876
  %1895 = load i32, ptr %11, align 4, !tbaa !13
  %1896 = add nsw i32 %1895, 1
  store i32 %1896, ptr %11, align 4, !tbaa !13
  br label %1872, !llvm.loop !101

1897:                                             ; preds = %1872
  br label %1898

1898:                                             ; preds = %1897
  %1899 = load i32, ptr %12, align 4, !tbaa !13
  %1900 = add nsw i32 %1899, 1
  store i32 %1900, ptr %12, align 4, !tbaa !13
  br label %1862, !llvm.loop !102

1901:                                             ; preds = %1862
  br label %1943

1902:                                             ; preds = %1854
  store i32 0, ptr %13, align 4, !tbaa !13
  br label %1903

1903:                                             ; preds = %1939, %1902
  %1904 = load i32, ptr %13, align 4, !tbaa !13
  %1905 = load i32, ptr %27, align 4, !tbaa !13
  %1906 = icmp slt i32 %1904, %1905
  br i1 %1906, label %1907, label %1942

1907:                                             ; preds = %1903
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %1908

1908:                                             ; preds = %1935, %1907
  %1909 = load i32, ptr %12, align 4, !tbaa !13
  %1910 = load i32, ptr %26, align 4, !tbaa !13
  %1911 = icmp slt i32 %1909, %1910
  br i1 %1911, label %1912, label %1938

1912:                                             ; preds = %1908
  %1913 = load ptr, ptr %19, align 8, !tbaa !5
  %1914 = load i32, ptr %12, align 4, !tbaa !13
  %1915 = load i32, ptr %13, align 4, !tbaa !13
  %1916 = load i32, ptr %26, align 4, !tbaa !13
  %1917 = mul nsw i32 %1915, %1916
  %1918 = add nsw i32 %1914, %1917
  %1919 = sext i32 %1918 to i64
  %1920 = getelementptr inbounds i32, ptr %1913, i64 %1919
  %1921 = load i32, ptr %1920, align 4, !tbaa !13
  store i32 %1921, ptr %10, align 4, !tbaa !13
  %1922 = load ptr, ptr %24, align 8, !tbaa !5
  %1923 = load i32, ptr %12, align 4, !tbaa !13
  %1924 = load i32, ptr %13, align 4, !tbaa !13
  %1925 = load i32, ptr %7, align 4, !tbaa !13
  %1926 = mul nsw i32 %1924, %1925
  %1927 = add nsw i32 %1923, %1926
  %1928 = sext i32 %1927 to i64
  %1929 = getelementptr inbounds i8, ptr %1922, i64 %1928
  %1930 = load i8, ptr %1929, align 1, !tbaa !80
  %1931 = load ptr, ptr %25, align 8, !tbaa !5
  %1932 = load i32, ptr %10, align 4, !tbaa !13
  %1933 = sext i32 %1932 to i64
  %1934 = getelementptr inbounds i8, ptr %1931, i64 %1933
  store i8 %1930, ptr %1934, align 1, !tbaa !80
  br label %1935

1935:                                             ; preds = %1912
  %1936 = load i32, ptr %12, align 4, !tbaa !13
  %1937 = add nsw i32 %1936, 1
  store i32 %1937, ptr %12, align 4, !tbaa !13
  br label %1908, !llvm.loop !103

1938:                                             ; preds = %1908
  br label %1939

1939:                                             ; preds = %1938
  %1940 = load i32, ptr %13, align 4, !tbaa !13
  %1941 = add nsw i32 %1940, 1
  store i32 %1941, ptr %13, align 4, !tbaa !13
  br label %1903, !llvm.loop !104

1942:                                             ; preds = %1903
  br label %1943

1943:                                             ; preds = %1942, %1901
  br label %1944

1944:                                             ; preds = %1943, %1853
  br label %1945

1945:                                             ; preds = %1944, %1805
  br label %1946

1946:                                             ; preds = %1945, %1660
  br label %1947

1947:                                             ; preds = %1946, %1364
  br label %1948

1948:                                             ; preds = %1947, %1363
  br label %1949

1949:                                             ; preds = %1948, %780
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  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 = { 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 = { 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, !11, i64 0}
!10 = !{!"libxsmm_meltw_descriptor", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !7, i64 24, !7, i64 25, !7, i64 26, !12, i64 27, !12, i64 29, !7, i64 31}
!11 = !{!"int", !7, i64 0}
!12 = !{!"short", !7, i64 0}
!13 = !{!11, !11, i64 0}
!14 = !{!10, !11, i64 4}
!15 = !{!10, !11, i64 8}
!16 = !{!10, !11, i64 12}
!17 = !{!10, !12, i64 27}
!18 = !{!10, !12, i64 29}
!19 = !{!20, !6, i64 40}
!20 = !{!"libxsmm_meltw_unary_param", !21, i64 0, !22, i64 32, !22, i64 80}
!21 = !{!"libxsmm_matrix_op_arg", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!22 = !{!"libxsmm_matrix_arg", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!23 = !{!20, !6, i64 88}
!24 = !{!20, !6, i64 32}
!25 = !{!20, !6, i64 80}
!26 = !{!27, !27, i64 0}
!27 = !{!"long long", !7, i64 0}
!28 = !{!29, !29, i64 0}
!29 = !{!"float", !7, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !31}
!33 = distinct !{!33, !31}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !31}
!36 = distinct !{!36, !31}
!37 = distinct !{!37, !31}
!38 = distinct !{!38, !31}
!39 = distinct !{!39, !31}
!40 = distinct !{!40, !31}
!41 = distinct !{!41, !31}
!42 = distinct !{!42, !31}
!43 = distinct !{!43, !31}
!44 = distinct !{!44, !31}
!45 = distinct !{!45, !31}
!46 = distinct !{!46, !31}
!47 = distinct !{!47, !31}
!48 = distinct !{!48, !31}
!49 = distinct !{!49, !31}
!50 = distinct !{!50, !31}
!51 = distinct !{!51, !31}
!52 = distinct !{!52, !31}
!53 = distinct !{!53, !31}
!54 = distinct !{!54, !31}
!55 = !{!12, !12, i64 0}
!56 = distinct !{!56, !31}
!57 = distinct !{!57, !31}
!58 = distinct !{!58, !31}
!59 = distinct !{!59, !31}
!60 = distinct !{!60, !31}
!61 = distinct !{!61, !31}
!62 = distinct !{!62, !31}
!63 = distinct !{!63, !31}
!64 = distinct !{!64, !31}
!65 = distinct !{!65, !31}
!66 = distinct !{!66, !31}
!67 = distinct !{!67, !31}
!68 = distinct !{!68, !31}
!69 = distinct !{!69, !31}
!70 = distinct !{!70, !31}
!71 = distinct !{!71, !31}
!72 = distinct !{!72, !31}
!73 = distinct !{!73, !31}
!74 = distinct !{!74, !31}
!75 = distinct !{!75, !31}
!76 = distinct !{!76, !31}
!77 = distinct !{!77, !31}
!78 = distinct !{!78, !31}
!79 = distinct !{!79, !31}
!80 = !{!7, !7, i64 0}
!81 = distinct !{!81, !31}
!82 = distinct !{!82, !31}
!83 = distinct !{!83, !31}
!84 = distinct !{!84, !31}
!85 = distinct !{!85, !31}
!86 = distinct !{!86, !31}
!87 = distinct !{!87, !31}
!88 = distinct !{!88, !31}
!89 = distinct !{!89, !31}
!90 = distinct !{!90, !31}
!91 = distinct !{!91, !31}
!92 = distinct !{!92, !31}
!93 = distinct !{!93, !31}
!94 = distinct !{!94, !31}
!95 = distinct !{!95, !31}
!96 = distinct !{!96, !31}
!97 = distinct !{!97, !31}
!98 = distinct !{!98, !31}
!99 = distinct !{!99, !31}
!100 = distinct !{!100, !31}
!101 = distinct !{!101, !31}
!102 = distinct !{!102, !31}
!103 = distinct !{!103, !31}
!104 = distinct !{!104, !31}


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

declare i32 @libxsmm_meltw_getenum_precision(ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_elementwise_gather_scatter_kernel(ptr nocapture noundef readonly %0, ptr noundef %1) local_unnamed_addr #1 {
switch.edge:
  %2 = load i32, ptr %1, align 1, !tbaa !5
  %3 = getelementptr inbounds i8, ptr %1, i64 4
  %4 = load i32, ptr %3, align 1, !tbaa !11
  %5 = getelementptr inbounds i8, ptr %1, i64 8
  %6 = load i32, ptr %5, align 1, !tbaa !12
  %7 = getelementptr inbounds i8, ptr %1, i64 12
  %8 = load i32, ptr %7, align 1, !tbaa !13
  %9 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %1, i32 noundef 0) #2
  %10 = icmp ult i32 %9, 11
  %switch.cast = trunc i32 %9 to i11
  %switch.downshift = lshr i11 -1012, %switch.cast
  %switch.masked = trunc i11 %switch.downshift to i1
  %11 = select i1 %10, i1 %switch.masked, i1 false
  %12 = getelementptr inbounds i8, ptr %1, i64 27
  %13 = load i16, ptr %12, align 1, !tbaa !14
  %14 = and i16 %13, 256
  %.not = icmp eq i16 %14, 0
  %15 = getelementptr inbounds i8, ptr %1, i64 29
  %16 = load i16, ptr %15, align 1, !tbaa !15
  %17 = icmp eq i16 %16, 51
  %.in.v = select i1 %17, i64 40, i64 88
  %.in = getelementptr inbounds i8, ptr %0, i64 %.in.v
  %18 = load ptr, ptr %.in, align 8, !tbaa !16
  %19 = getelementptr inbounds i8, ptr %0, i64 32
  %20 = load ptr, ptr %19, align 8, !tbaa !18
  %21 = ptrtoint ptr %20 to i64
  %22 = getelementptr inbounds i8, ptr %0, i64 80
  %23 = load ptr, ptr %22, align 8, !tbaa !22
  %24 = ptrtoint ptr %23 to i64
  br i1 %17, label %27, label %25

25:                                               ; preds = %switch.edge
  %26 = and i16 %13, 32
  %.not700 = icmp eq i16 %26, 0
  %spec.select = select i1 %.not700, i32 %2, i32 0
  %spec.select733 = select i1 %.not700, i32 0, i32 %2
  br label %27

27:                                               ; preds = %25, %switch.edge
  %.0659 = phi i32 [ 0, %switch.edge ], [ %spec.select, %25 ]
  %.0658 = phi i32 [ 0, %switch.edge ], [ %4, %25 ]
  %.0657 = phi i32 [ %2, %switch.edge ], [ %spec.select733, %25 ]
  %.0 = phi i32 [ %4, %switch.edge ], [ 0, %25 ]
  switch i32 %9, label %391 [
    i32 8, label %28
    i32 1, label %28
  ]

28:                                               ; preds = %27, %27
  %29 = zext i16 %13 to i32
  %30 = and i32 %29, 32
  %.not725 = icmp eq i32 %30, 0
  br i1 %.not, label %202, label %31

31:                                               ; preds = %28
  br i1 %17, label %32, label %117

32:                                               ; preds = %31
  br i1 %.not725, label %61, label %.preheader807

.preheader807:                                    ; preds = %32
  %33 = icmp sgt i32 %.0, 0
  br i1 %33, label %.lr.ph834, label %.loopexit

.lr.ph834:                                        ; preds = %.preheader807
  %34 = icmp sgt i32 %.0657, 0
  %35 = sext i32 %8 to i64
  %wide.trip.count1076 = zext nneg i32 %.0 to i64
  %wide.trip.count1071 = zext i32 %.0657 to i64
  %36 = shl nsw i64 %35, 2
  %min.iters.check1647 = icmp ult i32 %.0657, 8
  %n.vec1650 = and i64 %wide.trip.count1071, 2147483640
  %cmp.n1657 = icmp eq i64 %n.vec1650, %wide.trip.count1071
  %xtraiter2193 = and i64 %wide.trip.count1071, 3
  %lcmp.mod2194.not = icmp eq i64 %xtraiter2193, 0
  br label %37

37:                                               ; preds = %.lr.ph834, %._crit_edge832
  %indvars.iv1073 = phi i64 [ 0, %.lr.ph834 ], [ %indvars.iv.next1074, %._crit_edge832 ]
  %38 = mul i64 %36, %indvars.iv1073
  br i1 %34, label %.lr.ph831, label %._crit_edge832

.lr.ph831:                                        ; preds = %37
  %39 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1073
  %40 = load i64, ptr %39, align 8, !tbaa !23
  %41 = trunc i64 %40 to i32
  %42 = mul nsw i32 %6, %41
  %43 = mul nsw i64 %indvars.iv1073, %35
  %44 = sext i32 %42 to i64
  %invariant.gep1459 = getelementptr float, ptr %20, i64 %44
  %invariant.gep1461 = getelementptr float, ptr %23, i64 %43
  br i1 %min.iters.check1647, label %scalar.ph1646.preheader, label %vector.memcheck1643

vector.memcheck1643:                              ; preds = %.lr.ph831
  %45 = shl nsw i64 %44, 2
  %46 = add i64 %38, %24
  %47 = add i64 %45, %21
  %48 = sub i64 %46, %47
  %diff.check1644 = icmp ult i64 %48, 32
  br i1 %diff.check1644, label %scalar.ph1646.preheader, label %vector.body1652

vector.body1652:                                  ; preds = %vector.memcheck1643, %vector.body1652
  %index1653 = phi i64 [ %index.next1656, %vector.body1652 ], [ 0, %vector.memcheck1643 ]
  %49 = getelementptr float, ptr %invariant.gep1459, i64 %index1653
  %50 = getelementptr i8, ptr %49, i64 16
  %wide.load1654 = load <4 x float>, ptr %49, align 4, !tbaa !25
  %wide.load1655 = load <4 x float>, ptr %50, align 4, !tbaa !25
  %51 = getelementptr float, ptr %invariant.gep1461, i64 %index1653
  %52 = getelementptr i8, ptr %51, i64 16
  store <4 x float> %wide.load1654, ptr %51, align 4, !tbaa !25
  store <4 x float> %wide.load1655, ptr %52, align 4, !tbaa !25
  %index.next1656 = add nuw i64 %index1653, 8
  %53 = icmp eq i64 %index.next1656, %n.vec1650
  br i1 %53, label %middle.block1645, label %vector.body1652, !llvm.loop !27

middle.block1645:                                 ; preds = %vector.body1652
  br i1 %cmp.n1657, label %._crit_edge832, label %scalar.ph1646.preheader

scalar.ph1646.preheader:                          ; preds = %middle.block1645, %vector.memcheck1643, %.lr.ph831
  %indvars.iv1068.ph = phi i64 [ 0, %vector.memcheck1643 ], [ 0, %.lr.ph831 ], [ %n.vec1650, %middle.block1645 ]
  br i1 %lcmp.mod2194.not, label %scalar.ph1646.prol.loopexit, label %scalar.ph1646.prol

scalar.ph1646.prol:                               ; preds = %scalar.ph1646.preheader, %scalar.ph1646.prol
  %indvars.iv1068.prol = phi i64 [ %indvars.iv.next1069.prol, %scalar.ph1646.prol ], [ %indvars.iv1068.ph, %scalar.ph1646.preheader ]
  %prol.iter2195 = phi i64 [ %prol.iter2195.next, %scalar.ph1646.prol ], [ 0, %scalar.ph1646.preheader ]
  %gep1460.prol = getelementptr float, ptr %invariant.gep1459, i64 %indvars.iv1068.prol
  %54 = load float, ptr %gep1460.prol, align 4, !tbaa !25
  %gep1462.prol = getelementptr float, ptr %invariant.gep1461, i64 %indvars.iv1068.prol
  store float %54, ptr %gep1462.prol, align 4, !tbaa !25
  %indvars.iv.next1069.prol = add nuw nsw i64 %indvars.iv1068.prol, 1
  %prol.iter2195.next = add i64 %prol.iter2195, 1
  %prol.iter2195.cmp.not = icmp eq i64 %prol.iter2195.next, %xtraiter2193
  br i1 %prol.iter2195.cmp.not, label %scalar.ph1646.prol.loopexit, label %scalar.ph1646.prol, !llvm.loop !31

scalar.ph1646.prol.loopexit:                      ; preds = %scalar.ph1646.prol, %scalar.ph1646.preheader
  %indvars.iv1068.unr = phi i64 [ %indvars.iv1068.ph, %scalar.ph1646.preheader ], [ %indvars.iv.next1069.prol, %scalar.ph1646.prol ]
  %55 = sub nsw i64 %indvars.iv1068.ph, %wide.trip.count1071
  %56 = icmp ugt i64 %55, -4
  br i1 %56, label %._crit_edge832, label %scalar.ph1646

scalar.ph1646:                                    ; preds = %scalar.ph1646.prol.loopexit, %scalar.ph1646
  %indvars.iv1068 = phi i64 [ %indvars.iv.next1069.3, %scalar.ph1646 ], [ %indvars.iv1068.unr, %scalar.ph1646.prol.loopexit ]
  %gep1460 = getelementptr float, ptr %invariant.gep1459, i64 %indvars.iv1068
  %57 = load float, ptr %gep1460, align 4, !tbaa !25
  %gep1462 = getelementptr float, ptr %invariant.gep1461, i64 %indvars.iv1068
  store float %57, ptr %gep1462, align 4, !tbaa !25
  %indvars.iv.next1069 = add nuw nsw i64 %indvars.iv1068, 1
  %gep1460.1 = getelementptr float, ptr %invariant.gep1459, i64 %indvars.iv.next1069
  %58 = load float, ptr %gep1460.1, align 4, !tbaa !25
  %gep1462.1 = getelementptr float, ptr %invariant.gep1461, i64 %indvars.iv.next1069
  store float %58, ptr %gep1462.1, align 4, !tbaa !25
  %indvars.iv.next1069.1 = add nuw nsw i64 %indvars.iv1068, 2
  %gep1460.2 = getelementptr float, ptr %invariant.gep1459, i64 %indvars.iv.next1069.1
  %59 = load float, ptr %gep1460.2, align 4, !tbaa !25
  %gep1462.2 = getelementptr float, ptr %invariant.gep1461, i64 %indvars.iv.next1069.1
  store float %59, ptr %gep1462.2, align 4, !tbaa !25
  %indvars.iv.next1069.2 = add nuw nsw i64 %indvars.iv1068, 3
  %gep1460.3 = getelementptr float, ptr %invariant.gep1459, i64 %indvars.iv.next1069.2
  %60 = load float, ptr %gep1460.3, align 4, !tbaa !25
  %gep1462.3 = getelementptr float, ptr %invariant.gep1461, i64 %indvars.iv.next1069.2
  store float %60, ptr %gep1462.3, align 4, !tbaa !25
  %indvars.iv.next1069.3 = add nuw nsw i64 %indvars.iv1068, 4
  %exitcond1072.not.3 = icmp eq i64 %indvars.iv.next1069.3, %wide.trip.count1071
  br i1 %exitcond1072.not.3, label %._crit_edge832, label %scalar.ph1646, !llvm.loop !33

._crit_edge832:                                   ; preds = %scalar.ph1646.prol.loopexit, %scalar.ph1646, %middle.block1645, %37
  %indvars.iv.next1074 = add nuw nsw i64 %indvars.iv1073, 1
  %exitcond1077.not = icmp eq i64 %indvars.iv.next1074, %wide.trip.count1076
  br i1 %exitcond1077.not, label %.loopexit, label %37, !llvm.loop !34

61:                                               ; preds = %32
  %62 = and i32 %29, 16
  %.not731 = icmp eq i32 %62, 0
  br i1 %.not731, label %.preheader803, label %.preheader805

.preheader805:                                    ; preds = %61
  %63 = icmp sgt i32 %.0657, 0
  br i1 %63, label %.lr.ph840, label %.loopexit

.lr.ph840:                                        ; preds = %.preheader805
  %64 = icmp sgt i32 %.0, 0
  %65 = sext i32 %6 to i64
  %66 = sext i32 %8 to i64
  %wide.trip.count1086 = zext nneg i32 %.0657 to i64
  %wide.trip.count1081 = zext i32 %.0 to i64
  %min.iters.check1665 = icmp ult i32 %.0, 12
  %ident.check1659 = icmp ne i32 %8, 1
  %ident.check1660 = icmp ne i32 %6, 1
  %67 = or i1 %ident.check1659, %ident.check1660
  %n.vec1668 = and i64 %wide.trip.count1081, 2147483640
  %cmp.n1675 = icmp eq i64 %n.vec1668, %wide.trip.count1081
  %xtraiter2196 = and i64 %wide.trip.count1081, 3
  %lcmp.mod2197.not = icmp eq i64 %xtraiter2196, 0
  br label %73

.preheader803:                                    ; preds = %61
  %68 = icmp sgt i32 %.0, 0
  br i1 %68, label %.preheader802.lr.ph, label %.loopexit

.preheader802.lr.ph:                              ; preds = %.preheader803
  %69 = icmp sgt i32 %.0657, 0
  %70 = sext i32 %.0657 to i64
  %71 = sext i32 %8 to i64
  %wide.trip.count1096 = zext nneg i32 %.0 to i64
  %wide.trip.count1091 = zext i32 %.0657 to i64
  %xtraiter2200 = and i64 %wide.trip.count1091, 1
  %72 = icmp eq i32 %.0657, 1
  %unroll_iter2202 = and i64 %wide.trip.count1091, 2147483646
  %lcmp.mod2201.not = icmp eq i64 %xtraiter2200, 0
  br label %.preheader802

73:                                               ; preds = %.lr.ph840, %._crit_edge838
  %indvars.iv1083 = phi i64 [ 0, %.lr.ph840 ], [ %indvars.iv.next1084, %._crit_edge838 ]
  %74 = shl nuw nsw i64 %indvars.iv1083, 2
  %75 = add i64 %74, %24
  br i1 %64, label %.lr.ph837.preheader, label %._crit_edge838

.lr.ph837.preheader:                              ; preds = %73
  %76 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1083
  %77 = load i64, ptr %76, align 8, !tbaa !23
  %sext1409 = shl i64 %77, 32
  %78 = ashr exact i64 %sext1409, 30
  %invariant.gep1463 = getelementptr i8, ptr %20, i64 %78
  %invariant.gep1465 = getelementptr float, ptr %23, i64 %indvars.iv1083
  %brmerge = select i1 %min.iters.check1665, i1 true, i1 %67
  br i1 %brmerge, label %.lr.ph837.preheader2181, label %vector.memcheck1661

vector.memcheck1661:                              ; preds = %.lr.ph837.preheader
  %79 = add i64 %78, %21
  %80 = sub i64 %75, %79
  %diff.check1662 = icmp ult i64 %80, 32
  br i1 %diff.check1662, label %.lr.ph837.preheader2181, label %vector.body1670

vector.body1670:                                  ; preds = %vector.memcheck1661, %vector.body1670
  %index1671 = phi i64 [ %index.next1674, %vector.body1670 ], [ 0, %vector.memcheck1661 ]
  %81 = getelementptr float, ptr %invariant.gep1463, i64 %index1671
  %82 = getelementptr i8, ptr %81, i64 16
  %wide.load1672 = load <4 x float>, ptr %81, align 4, !tbaa !25
  %wide.load1673 = load <4 x float>, ptr %82, align 4, !tbaa !25
  %83 = getelementptr float, ptr %invariant.gep1465, i64 %index1671
  %84 = getelementptr i8, ptr %83, i64 16
  store <4 x float> %wide.load1672, ptr %83, align 4, !tbaa !25
  store <4 x float> %wide.load1673, ptr %84, align 4, !tbaa !25
  %index.next1674 = add nuw i64 %index1671, 8
  %85 = icmp eq i64 %index.next1674, %n.vec1668
  br i1 %85, label %middle.block1663, label %vector.body1670, !llvm.loop !35

middle.block1663:                                 ; preds = %vector.body1670
  br i1 %cmp.n1675, label %._crit_edge838, label %.lr.ph837.preheader2181

.lr.ph837.preheader2181:                          ; preds = %.lr.ph837.preheader, %middle.block1663, %vector.memcheck1661
  %indvars.iv1078.ph = phi i64 [ 0, %vector.memcheck1661 ], [ 0, %.lr.ph837.preheader ], [ %n.vec1668, %middle.block1663 ]
  br i1 %lcmp.mod2197.not, label %.lr.ph837.prol.loopexit, label %.lr.ph837.prol

.lr.ph837.prol:                                   ; preds = %.lr.ph837.preheader2181, %.lr.ph837.prol
  %indvars.iv1078.prol = phi i64 [ %indvars.iv.next1079.prol, %.lr.ph837.prol ], [ %indvars.iv1078.ph, %.lr.ph837.preheader2181 ]
  %prol.iter2198 = phi i64 [ %prol.iter2198.next, %.lr.ph837.prol ], [ 0, %.lr.ph837.preheader2181 ]
  %86 = mul nsw i64 %indvars.iv1078.prol, %65
  %gep1464.prol = getelementptr float, ptr %invariant.gep1463, i64 %86
  %87 = load float, ptr %gep1464.prol, align 4, !tbaa !25
  %88 = mul nsw i64 %indvars.iv1078.prol, %66
  %gep1466.prol = getelementptr float, ptr %invariant.gep1465, i64 %88
  store float %87, ptr %gep1466.prol, align 4, !tbaa !25
  %indvars.iv.next1079.prol = add nuw nsw i64 %indvars.iv1078.prol, 1
  %prol.iter2198.next = add i64 %prol.iter2198, 1
  %prol.iter2198.cmp.not = icmp eq i64 %prol.iter2198.next, %xtraiter2196
  br i1 %prol.iter2198.cmp.not, label %.lr.ph837.prol.loopexit, label %.lr.ph837.prol, !llvm.loop !36

.lr.ph837.prol.loopexit:                          ; preds = %.lr.ph837.prol, %.lr.ph837.preheader2181
  %indvars.iv1078.unr = phi i64 [ %indvars.iv1078.ph, %.lr.ph837.preheader2181 ], [ %indvars.iv.next1079.prol, %.lr.ph837.prol ]
  %89 = sub nsw i64 %indvars.iv1078.ph, %wide.trip.count1081
  %90 = icmp ugt i64 %89, -4
  br i1 %90, label %._crit_edge838, label %.lr.ph837

.lr.ph837:                                        ; preds = %.lr.ph837.prol.loopexit, %.lr.ph837
  %indvars.iv1078 = phi i64 [ %indvars.iv.next1079.3, %.lr.ph837 ], [ %indvars.iv1078.unr, %.lr.ph837.prol.loopexit ]
  %91 = mul nsw i64 %indvars.iv1078, %65
  %gep1464 = getelementptr float, ptr %invariant.gep1463, i64 %91
  %92 = load float, ptr %gep1464, align 4, !tbaa !25
  %93 = mul nsw i64 %indvars.iv1078, %66
  %gep1466 = getelementptr float, ptr %invariant.gep1465, i64 %93
  store float %92, ptr %gep1466, align 4, !tbaa !25
  %indvars.iv.next1079 = add nuw nsw i64 %indvars.iv1078, 1
  %94 = mul nsw i64 %indvars.iv.next1079, %65
  %gep1464.1 = getelementptr float, ptr %invariant.gep1463, i64 %94
  %95 = load float, ptr %gep1464.1, align 4, !tbaa !25
  %96 = mul nsw i64 %indvars.iv.next1079, %66
  %gep1466.1 = getelementptr float, ptr %invariant.gep1465, i64 %96
  store float %95, ptr %gep1466.1, align 4, !tbaa !25
  %indvars.iv.next1079.1 = add nuw nsw i64 %indvars.iv1078, 2
  %97 = mul nsw i64 %indvars.iv.next1079.1, %65
  %gep1464.2 = getelementptr float, ptr %invariant.gep1463, i64 %97
  %98 = load float, ptr %gep1464.2, align 4, !tbaa !25
  %99 = mul nsw i64 %indvars.iv.next1079.1, %66
  %gep1466.2 = getelementptr float, ptr %invariant.gep1465, i64 %99
  store float %98, ptr %gep1466.2, align 4, !tbaa !25
  %indvars.iv.next1079.2 = add nuw nsw i64 %indvars.iv1078, 3
  %100 = mul nsw i64 %indvars.iv.next1079.2, %65
  %gep1464.3 = getelementptr float, ptr %invariant.gep1463, i64 %100
  %101 = load float, ptr %gep1464.3, align 4, !tbaa !25
  %102 = mul nsw i64 %indvars.iv.next1079.2, %66
  %gep1466.3 = getelementptr float, ptr %invariant.gep1465, i64 %102
  store float %101, ptr %gep1466.3, align 4, !tbaa !25
  %indvars.iv.next1079.3 = add nuw nsw i64 %indvars.iv1078, 4
  %exitcond1082.not.3 = icmp eq i64 %indvars.iv.next1079.3, %wide.trip.count1081
  br i1 %exitcond1082.not.3, label %._crit_edge838, label %.lr.ph837, !llvm.loop !37

._crit_edge838:                                   ; preds = %.lr.ph837.prol.loopexit, %.lr.ph837, %middle.block1663, %73
  %indvars.iv.next1084 = add nuw nsw i64 %indvars.iv1083, 1
  %exitcond1087.not = icmp eq i64 %indvars.iv.next1084, %wide.trip.count1086
  br i1 %exitcond1087.not, label %.loopexit, label %73, !llvm.loop !38

.preheader802:                                    ; preds = %.preheader802.lr.ph, %._crit_edge843
  %indvars.iv1093 = phi i64 [ 0, %.preheader802.lr.ph ], [ %indvars.iv.next1094, %._crit_edge843 ]
  br i1 %69, label %.lr.ph842, label %._crit_edge843

.lr.ph842:                                        ; preds = %.preheader802
  %103 = mul nuw nsw i64 %indvars.iv1093, %70
  %104 = mul nsw i64 %indvars.iv1093, %71
  %invariant.gep1467 = getelementptr i64, ptr %18, i64 %103
  %invariant.gep1469 = getelementptr float, ptr %23, i64 %104
  br i1 %72, label %._crit_edge843.loopexit.unr-lcssa, label %.lr.ph842.new

.lr.ph842.new:                                    ; preds = %.lr.ph842, %.lr.ph842.new
  %indvars.iv1088 = phi i64 [ %indvars.iv.next1089.1, %.lr.ph842.new ], [ 0, %.lr.ph842 ]
  %niter2203 = phi i64 [ %niter2203.next.1, %.lr.ph842.new ], [ 0, %.lr.ph842 ]
  %gep1468 = getelementptr i64, ptr %invariant.gep1467, i64 %indvars.iv1088
  %105 = load i64, ptr %gep1468, align 8, !tbaa !23
  %sext732 = shl i64 %105, 32
  %106 = ashr exact i64 %sext732, 30
  %107 = getelementptr inbounds i8, ptr %20, i64 %106
  %108 = load float, ptr %107, align 4, !tbaa !25
  %gep1470 = getelementptr float, ptr %invariant.gep1469, i64 %indvars.iv1088
  store float %108, ptr %gep1470, align 4, !tbaa !25
  %indvars.iv.next1089 = or disjoint i64 %indvars.iv1088, 1
  %gep1468.1 = getelementptr i64, ptr %invariant.gep1467, i64 %indvars.iv.next1089
  %109 = load i64, ptr %gep1468.1, align 8, !tbaa !23
  %sext732.1 = shl i64 %109, 32
  %110 = ashr exact i64 %sext732.1, 30
  %111 = getelementptr inbounds i8, ptr %20, i64 %110
  %112 = load float, ptr %111, align 4, !tbaa !25
  %gep1470.1 = getelementptr float, ptr %invariant.gep1469, i64 %indvars.iv.next1089
  store float %112, ptr %gep1470.1, align 4, !tbaa !25
  %indvars.iv.next1089.1 = add nuw nsw i64 %indvars.iv1088, 2
  %niter2203.next.1 = add i64 %niter2203, 2
  %niter2203.ncmp.1 = icmp eq i64 %niter2203.next.1, %unroll_iter2202
  br i1 %niter2203.ncmp.1, label %._crit_edge843.loopexit.unr-lcssa, label %.lr.ph842.new, !llvm.loop !39

._crit_edge843.loopexit.unr-lcssa:                ; preds = %.lr.ph842.new, %.lr.ph842
  %indvars.iv1088.unr = phi i64 [ 0, %.lr.ph842 ], [ %indvars.iv.next1089.1, %.lr.ph842.new ]
  br i1 %lcmp.mod2201.not, label %._crit_edge843, label %._crit_edge843.loopexit.epilog-lcssa

._crit_edge843.loopexit.epilog-lcssa:             ; preds = %._crit_edge843.loopexit.unr-lcssa
  %gep1468.epil = getelementptr i64, ptr %invariant.gep1467, i64 %indvars.iv1088.unr
  %113 = load i64, ptr %gep1468.epil, align 8, !tbaa !23
  %sext732.epil = shl i64 %113, 32
  %114 = ashr exact i64 %sext732.epil, 30
  %115 = getelementptr inbounds i8, ptr %20, i64 %114
  %116 = load float, ptr %115, align 4, !tbaa !25
  %gep1470.epil = getelementptr float, ptr %invariant.gep1469, i64 %indvars.iv1088.unr
  store float %116, ptr %gep1470.epil, align 4, !tbaa !25
  br label %._crit_edge843

._crit_edge843:                                   ; preds = %._crit_edge843.loopexit.epilog-lcssa, %._crit_edge843.loopexit.unr-lcssa, %.preheader802
  %indvars.iv.next1094 = add nuw nsw i64 %indvars.iv1093, 1
  %exitcond1097.not = icmp eq i64 %indvars.iv.next1094, %wide.trip.count1096
  br i1 %exitcond1097.not, label %.loopexit, label %.preheader802, !llvm.loop !40

117:                                              ; preds = %31
  br i1 %.not725, label %146, label %.preheader814

.preheader814:                                    ; preds = %117
  %118 = icmp sgt i32 %.0658, 0
  br i1 %118, label %.lr.ph818, label %.loopexit

.lr.ph818:                                        ; preds = %.preheader814
  %119 = icmp sgt i32 %.0657, 0
  %120 = sext i32 %6 to i64
  %wide.trip.count1045 = zext nneg i32 %.0658 to i64
  %wide.trip.count = zext i32 %.0657 to i64
  %121 = sub i64 %24, %21
  %122 = mul nsw i64 %120, -4
  %min.iters.check = icmp ult i32 %.0657, 8
  %n.vec = and i64 %wide.trip.count, 2147483640
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  %xtraiter = and i64 %wide.trip.count, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %123

123:                                              ; preds = %.lr.ph818, %._crit_edge
  %indvars.iv1042 = phi i64 [ 0, %.lr.ph818 ], [ %indvars.iv.next1043, %._crit_edge ]
  %124 = mul i64 %122, %indvars.iv1042
  %125 = add i64 %121, %124
  br i1 %119, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %123
  %126 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1042
  %127 = load i64, ptr %126, align 8, !tbaa !23
  %128 = trunc i64 %127 to i32
  %129 = mul nsw i64 %indvars.iv1042, %120
  %130 = mul nsw i32 %8, %128
  %131 = sext i32 %130 to i64
  %invariant.gep = getelementptr float, ptr %20, i64 %129
  %invariant.gep1449 = getelementptr float, ptr %23, i64 %131
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %132 = shl nsw i64 %131, 2
  %133 = add i64 %125, %132
  %diff.check = icmp ult i64 %133, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.memcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.memcheck ]
  %134 = getelementptr float, ptr %invariant.gep, i64 %index
  %135 = getelementptr i8, ptr %134, i64 16
  %wide.load = load <4 x float>, ptr %134, align 4, !tbaa !25
  %wide.load1626 = load <4 x float>, ptr %135, align 4, !tbaa !25
  %136 = getelementptr float, ptr %invariant.gep1449, i64 %index
  %137 = getelementptr i8, ptr %136, i64 16
  store <4 x float> %wide.load, ptr %136, align 4, !tbaa !25
  store <4 x float> %wide.load1626, ptr %137, align 4, !tbaa !25
  %index.next = add nuw i64 %index, 8
  %138 = icmp eq i64 %index.next, %n.vec
  br i1 %138, label %middle.block, label %vector.body, !llvm.loop !41

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph ], [ %n.vec, %middle.block ]
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %scalar.ph.prol ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep.prol = getelementptr float, ptr %invariant.gep, i64 %indvars.iv.prol
  %139 = load float, ptr %gep.prol, align 4, !tbaa !25
  %gep1450.prol = getelementptr float, ptr %invariant.gep1449, i64 %indvars.iv.prol
  store float %139, ptr %gep1450.prol, align 4, !tbaa !25
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !42

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph.preheader ], [ %indvars.iv.next.prol, %scalar.ph.prol ]
  %140 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %141 = icmp ugt i64 %140, -4
  br i1 %141, label %._crit_edge, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %gep = getelementptr float, ptr %invariant.gep, i64 %indvars.iv
  %142 = load float, ptr %gep, align 4, !tbaa !25
  %gep1450 = getelementptr float, ptr %invariant.gep1449, i64 %indvars.iv
  store float %142, ptr %gep1450, align 4, !tbaa !25
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %gep.1 = getelementptr float, ptr %invariant.gep, i64 %indvars.iv.next
  %143 = load float, ptr %gep.1, align 4, !tbaa !25
  %gep1450.1 = getelementptr float, ptr %invariant.gep1449, i64 %indvars.iv.next
  store float %143, ptr %gep1450.1, align 4, !tbaa !25
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %gep.2 = getelementptr float, ptr %invariant.gep, i64 %indvars.iv.next.1
  %144 = load float, ptr %gep.2, align 4, !tbaa !25
  %gep1450.2 = getelementptr float, ptr %invariant.gep1449, i64 %indvars.iv.next.1
  store float %144, ptr %gep1450.2, align 4, !tbaa !25
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %gep.3 = getelementptr float, ptr %invariant.gep, i64 %indvars.iv.next.2
  %145 = load float, ptr %gep.3, align 4, !tbaa !25
  %gep1450.3 = getelementptr float, ptr %invariant.gep1449, i64 %indvars.iv.next.2
  store float %145, ptr %gep1450.3, align 4, !tbaa !25
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %._crit_edge, label %scalar.ph, !llvm.loop !43

._crit_edge:                                      ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %123
  %indvars.iv.next1043 = add nuw nsw i64 %indvars.iv1042, 1
  %exitcond1046.not = icmp eq i64 %indvars.iv.next1043, %wide.trip.count1045
  br i1 %exitcond1046.not, label %.loopexit, label %123, !llvm.loop !44

146:                                              ; preds = %117
  %147 = and i32 %29, 16
  %.not728 = icmp eq i32 %147, 0
  br i1 %.not728, label %.preheader810, label %.preheader812

.preheader812:                                    ; preds = %146
  %148 = icmp sgt i32 %.0659, 0
  br i1 %148, label %.lr.ph824, label %.loopexit

.lr.ph824:                                        ; preds = %.preheader812
  %149 = icmp sgt i32 %.0658, 0
  %150 = sext i32 %6 to i64
  %151 = sext i32 %8 to i64
  %wide.trip.count1055 = zext nneg i32 %.0659 to i64
  %wide.trip.count1050 = zext i32 %.0658 to i64
  %min.iters.check1632 = icmp ult i32 %.0658, 12
  %ident.check = icmp ne i32 %8, 1
  %ident.check1627 = icmp ne i32 %6, 1
  %152 = or i1 %ident.check, %ident.check1627
  %n.vec1635 = and i64 %wide.trip.count1050, 2147483640
  %cmp.n1642 = icmp eq i64 %n.vec1635, %wide.trip.count1050
  %xtraiter2188 = and i64 %wide.trip.count1050, 3
  %lcmp.mod2189.not = icmp eq i64 %xtraiter2188, 0
  br label %158

.preheader810:                                    ; preds = %146
  %153 = icmp sgt i32 %.0658, 0
  br i1 %153, label %.preheader809.lr.ph, label %.loopexit

.preheader809.lr.ph:                              ; preds = %.preheader810
  %154 = icmp sgt i32 %.0659, 0
  %155 = sext i32 %.0659 to i64
  %156 = sext i32 %6 to i64
  %wide.trip.count1065 = zext nneg i32 %.0658 to i64
  %wide.trip.count1060 = zext i32 %.0659 to i64
  %xtraiter2191 = and i64 %wide.trip.count1060, 1
  %157 = icmp eq i32 %.0659, 1
  %unroll_iter = and i64 %wide.trip.count1060, 2147483646
  %lcmp.mod2192.not = icmp eq i64 %xtraiter2191, 0
  br label %.preheader809

158:                                              ; preds = %.lr.ph824, %._crit_edge822
  %indvars.iv1052 = phi i64 [ 0, %.lr.ph824 ], [ %indvars.iv.next1053, %._crit_edge822 ]
  %159 = shl i64 %indvars.iv1052, 2
  %160 = add i64 %159, %21
  %161 = sub i64 %24, %160
  br i1 %149, label %.lr.ph821.preheader, label %._crit_edge822

.lr.ph821.preheader:                              ; preds = %158
  %162 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1052
  %163 = load i64, ptr %162, align 8, !tbaa !23
  %sext1408 = shl i64 %163, 32
  %invariant.gep1451 = getelementptr float, ptr %20, i64 %indvars.iv1052
  %164 = ashr exact i64 %sext1408, 30
  %invariant.gep1453 = getelementptr i8, ptr %23, i64 %164
  br i1 %min.iters.check1632, label %.lr.ph821.preheader2185, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph821.preheader
  %165 = add i64 %161, %164
  %diff.check1629 = icmp ult i64 %165, 32
  %or.cond = select i1 %152, i1 true, i1 %diff.check1629
  br i1 %or.cond, label %.lr.ph821.preheader2185, label %vector.body1637

vector.body1637:                                  ; preds = %vector.scevcheck, %vector.body1637
  %index1638 = phi i64 [ %index.next1641, %vector.body1637 ], [ 0, %vector.scevcheck ]
  %166 = getelementptr float, ptr %invariant.gep1451, i64 %index1638
  %167 = getelementptr i8, ptr %166, i64 16
  %wide.load1639 = load <4 x float>, ptr %166, align 4, !tbaa !25
  %wide.load1640 = load <4 x float>, ptr %167, align 4, !tbaa !25
  %168 = getelementptr float, ptr %invariant.gep1453, i64 %index1638
  %169 = getelementptr i8, ptr %168, i64 16
  store <4 x float> %wide.load1639, ptr %168, align 4, !tbaa !25
  store <4 x float> %wide.load1640, ptr %169, align 4, !tbaa !25
  %index.next1641 = add nuw i64 %index1638, 8
  %170 = icmp eq i64 %index.next1641, %n.vec1635
  br i1 %170, label %middle.block1630, label %vector.body1637, !llvm.loop !45

middle.block1630:                                 ; preds = %vector.body1637
  br i1 %cmp.n1642, label %._crit_edge822, label %.lr.ph821.preheader2185

.lr.ph821.preheader2185:                          ; preds = %middle.block1630, %vector.scevcheck, %.lr.ph821.preheader
  %indvars.iv1047.ph = phi i64 [ 0, %vector.scevcheck ], [ 0, %.lr.ph821.preheader ], [ %n.vec1635, %middle.block1630 ]
  br i1 %lcmp.mod2189.not, label %.lr.ph821.prol.loopexit, label %.lr.ph821.prol

.lr.ph821.prol:                                   ; preds = %.lr.ph821.preheader2185, %.lr.ph821.prol
  %indvars.iv1047.prol = phi i64 [ %indvars.iv.next1048.prol, %.lr.ph821.prol ], [ %indvars.iv1047.ph, %.lr.ph821.preheader2185 ]
  %prol.iter2190 = phi i64 [ %prol.iter2190.next, %.lr.ph821.prol ], [ 0, %.lr.ph821.preheader2185 ]
  %171 = mul nsw i64 %indvars.iv1047.prol, %150
  %gep1452.prol = getelementptr float, ptr %invariant.gep1451, i64 %171
  %172 = load float, ptr %gep1452.prol, align 4, !tbaa !25
  %173 = mul nsw i64 %indvars.iv1047.prol, %151
  %gep1454.prol = getelementptr float, ptr %invariant.gep1453, i64 %173
  store float %172, ptr %gep1454.prol, align 4, !tbaa !25
  %indvars.iv.next1048.prol = add nuw nsw i64 %indvars.iv1047.prol, 1
  %prol.iter2190.next = add i64 %prol.iter2190, 1
  %prol.iter2190.cmp.not = icmp eq i64 %prol.iter2190.next, %xtraiter2188
  br i1 %prol.iter2190.cmp.not, label %.lr.ph821.prol.loopexit, label %.lr.ph821.prol, !llvm.loop !46

.lr.ph821.prol.loopexit:                          ; preds = %.lr.ph821.prol, %.lr.ph821.preheader2185
  %indvars.iv1047.unr = phi i64 [ %indvars.iv1047.ph, %.lr.ph821.preheader2185 ], [ %indvars.iv.next1048.prol, %.lr.ph821.prol ]
  %174 = sub nsw i64 %indvars.iv1047.ph, %wide.trip.count1050
  %175 = icmp ugt i64 %174, -4
  br i1 %175, label %._crit_edge822, label %.lr.ph821

.lr.ph821:                                        ; preds = %.lr.ph821.prol.loopexit, %.lr.ph821
  %indvars.iv1047 = phi i64 [ %indvars.iv.next1048.3, %.lr.ph821 ], [ %indvars.iv1047.unr, %.lr.ph821.prol.loopexit ]
  %176 = mul nsw i64 %indvars.iv1047, %150
  %gep1452 = getelementptr float, ptr %invariant.gep1451, i64 %176
  %177 = load float, ptr %gep1452, align 4, !tbaa !25
  %178 = mul nsw i64 %indvars.iv1047, %151
  %gep1454 = getelementptr float, ptr %invariant.gep1453, i64 %178
  store float %177, ptr %gep1454, align 4, !tbaa !25
  %indvars.iv.next1048 = add nuw nsw i64 %indvars.iv1047, 1
  %179 = mul nsw i64 %indvars.iv.next1048, %150
  %gep1452.1 = getelementptr float, ptr %invariant.gep1451, i64 %179
  %180 = load float, ptr %gep1452.1, align 4, !tbaa !25
  %181 = mul nsw i64 %indvars.iv.next1048, %151
  %gep1454.1 = getelementptr float, ptr %invariant.gep1453, i64 %181
  store float %180, ptr %gep1454.1, align 4, !tbaa !25
  %indvars.iv.next1048.1 = add nuw nsw i64 %indvars.iv1047, 2
  %182 = mul nsw i64 %indvars.iv.next1048.1, %150
  %gep1452.2 = getelementptr float, ptr %invariant.gep1451, i64 %182
  %183 = load float, ptr %gep1452.2, align 4, !tbaa !25
  %184 = mul nsw i64 %indvars.iv.next1048.1, %151
  %gep1454.2 = getelementptr float, ptr %invariant.gep1453, i64 %184
  store float %183, ptr %gep1454.2, align 4, !tbaa !25
  %indvars.iv.next1048.2 = add nuw nsw i64 %indvars.iv1047, 3
  %185 = mul nsw i64 %indvars.iv.next1048.2, %150
  %gep1452.3 = getelementptr float, ptr %invariant.gep1451, i64 %185
  %186 = load float, ptr %gep1452.3, align 4, !tbaa !25
  %187 = mul nsw i64 %indvars.iv.next1048.2, %151
  %gep1454.3 = getelementptr float, ptr %invariant.gep1453, i64 %187
  store float %186, ptr %gep1454.3, align 4, !tbaa !25
  %indvars.iv.next1048.3 = add nuw nsw i64 %indvars.iv1047, 4
  %exitcond1051.not.3 = icmp eq i64 %indvars.iv.next1048.3, %wide.trip.count1050
  br i1 %exitcond1051.not.3, label %._crit_edge822, label %.lr.ph821, !llvm.loop !47

._crit_edge822:                                   ; preds = %.lr.ph821.prol.loopexit, %.lr.ph821, %middle.block1630, %158
  %indvars.iv.next1053 = add nuw nsw i64 %indvars.iv1052, 1
  %exitcond1056.not = icmp eq i64 %indvars.iv.next1053, %wide.trip.count1055
  br i1 %exitcond1056.not, label %.loopexit, label %158, !llvm.loop !48

.preheader809:                                    ; preds = %.preheader809.lr.ph, %._crit_edge827
  %indvars.iv1062 = phi i64 [ 0, %.preheader809.lr.ph ], [ %indvars.iv.next1063, %._crit_edge827 ]
  br i1 %154, label %.lr.ph826, label %._crit_edge827

.lr.ph826:                                        ; preds = %.preheader809
  %188 = mul nuw nsw i64 %indvars.iv1062, %155
  %189 = mul nsw i64 %indvars.iv1062, %156
  %invariant.gep1455 = getelementptr i64, ptr %18, i64 %188
  %invariant.gep1457 = getelementptr float, ptr %20, i64 %189
  br i1 %157, label %._crit_edge827.loopexit.unr-lcssa, label %.lr.ph826.new

.lr.ph826.new:                                    ; preds = %.lr.ph826, %.lr.ph826.new
  %indvars.iv1057 = phi i64 [ %indvars.iv.next1058.1, %.lr.ph826.new ], [ 0, %.lr.ph826 ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph826.new ], [ 0, %.lr.ph826 ]
  %gep1456 = getelementptr i64, ptr %invariant.gep1455, i64 %indvars.iv1057
  %190 = load i64, ptr %gep1456, align 8, !tbaa !23
  %gep1458 = getelementptr float, ptr %invariant.gep1457, i64 %indvars.iv1057
  %191 = load float, ptr %gep1458, align 4, !tbaa !25
  %sext729 = shl i64 %190, 32
  %192 = ashr exact i64 %sext729, 30
  %193 = getelementptr inbounds i8, ptr %23, i64 %192
  store float %191, ptr %193, align 4, !tbaa !25
  %indvars.iv.next1058 = or disjoint i64 %indvars.iv1057, 1
  %gep1456.1 = getelementptr i64, ptr %invariant.gep1455, i64 %indvars.iv.next1058
  %194 = load i64, ptr %gep1456.1, align 8, !tbaa !23
  %gep1458.1 = getelementptr float, ptr %invariant.gep1457, i64 %indvars.iv.next1058
  %195 = load float, ptr %gep1458.1, align 4, !tbaa !25
  %sext729.1 = shl i64 %194, 32
  %196 = ashr exact i64 %sext729.1, 30
  %197 = getelementptr inbounds i8, ptr %23, i64 %196
  store float %195, ptr %197, align 4, !tbaa !25
  %indvars.iv.next1058.1 = add nuw nsw i64 %indvars.iv1057, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge827.loopexit.unr-lcssa, label %.lr.ph826.new, !llvm.loop !49

._crit_edge827.loopexit.unr-lcssa:                ; preds = %.lr.ph826.new, %.lr.ph826
  %indvars.iv1057.unr = phi i64 [ 0, %.lr.ph826 ], [ %indvars.iv.next1058.1, %.lr.ph826.new ]
  br i1 %lcmp.mod2192.not, label %._crit_edge827, label %._crit_edge827.loopexit.epilog-lcssa

._crit_edge827.loopexit.epilog-lcssa:             ; preds = %._crit_edge827.loopexit.unr-lcssa
  %gep1456.epil = getelementptr i64, ptr %invariant.gep1455, i64 %indvars.iv1057.unr
  %198 = load i64, ptr %gep1456.epil, align 8, !tbaa !23
  %gep1458.epil = getelementptr float, ptr %invariant.gep1457, i64 %indvars.iv1057.unr
  %199 = load float, ptr %gep1458.epil, align 4, !tbaa !25
  %sext729.epil = shl i64 %198, 32
  %200 = ashr exact i64 %sext729.epil, 30
  %201 = getelementptr inbounds i8, ptr %23, i64 %200
  store float %199, ptr %201, align 4, !tbaa !25
  br label %._crit_edge827

._crit_edge827:                                   ; preds = %._crit_edge827.loopexit.epilog-lcssa, %._crit_edge827.loopexit.unr-lcssa, %.preheader809
  %indvars.iv.next1063 = add nuw nsw i64 %indvars.iv1062, 1
  %exitcond1066.not = icmp eq i64 %indvars.iv.next1063, %wide.trip.count1065
  br i1 %exitcond1066.not, label %.loopexit, label %.preheader809, !llvm.loop !50

202:                                              ; preds = %28
  br i1 %17, label %203, label %297

203:                                              ; preds = %202
  br i1 %.not725, label %231, label %.preheader793

.preheader793:                                    ; preds = %203
  %204 = icmp sgt i32 %.0, 0
  br i1 %204, label %.lr.ph866, label %.loopexit

.lr.ph866:                                        ; preds = %.preheader793
  %205 = icmp sgt i32 %.0657, 0
  %206 = sext i32 %8 to i64
  %wide.trip.count1138 = zext nneg i32 %.0 to i64
  %wide.trip.count1133 = zext i32 %.0657 to i64
  %207 = shl nsw i64 %206, 2
  %min.iters.check1713 = icmp ult i32 %.0657, 8
  %n.vec1716 = and i64 %wide.trip.count1133, 2147483640
  %cmp.n1723 = icmp eq i64 %n.vec1716, %wide.trip.count1133
  %xtraiter2215 = and i64 %wide.trip.count1133, 3
  %lcmp.mod2216.not = icmp eq i64 %xtraiter2215, 0
  br label %208

208:                                              ; preds = %.lr.ph866, %._crit_edge864
  %indvars.iv1135 = phi i64 [ 0, %.lr.ph866 ], [ %indvars.iv.next1136, %._crit_edge864 ]
  %209 = mul i64 %207, %indvars.iv1135
  br i1 %205, label %.lr.ph863, label %._crit_edge864

.lr.ph863:                                        ; preds = %208
  %210 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1135
  %211 = load i32, ptr %210, align 4, !tbaa !51
  %212 = mul nsw i32 %211, %6
  %213 = mul nsw i64 %indvars.iv1135, %206
  %214 = sext i32 %212 to i64
  %invariant.gep1483 = getelementptr float, ptr %20, i64 %214
  %invariant.gep1485 = getelementptr float, ptr %23, i64 %213
  br i1 %min.iters.check1713, label %scalar.ph1712.preheader, label %vector.memcheck1709

vector.memcheck1709:                              ; preds = %.lr.ph863
  %215 = shl nsw i64 %214, 2
  %216 = add i64 %209, %24
  %217 = add i64 %215, %21
  %218 = sub i64 %216, %217
  %diff.check1710 = icmp ult i64 %218, 32
  br i1 %diff.check1710, label %scalar.ph1712.preheader, label %vector.body1718

vector.body1718:                                  ; preds = %vector.memcheck1709, %vector.body1718
  %index1719 = phi i64 [ %index.next1722, %vector.body1718 ], [ 0, %vector.memcheck1709 ]
  %219 = getelementptr float, ptr %invariant.gep1483, i64 %index1719
  %220 = getelementptr i8, ptr %219, i64 16
  %wide.load1720 = load <4 x float>, ptr %219, align 4, !tbaa !25
  %wide.load1721 = load <4 x float>, ptr %220, align 4, !tbaa !25
  %221 = getelementptr float, ptr %invariant.gep1485, i64 %index1719
  %222 = getelementptr i8, ptr %221, i64 16
  store <4 x float> %wide.load1720, ptr %221, align 4, !tbaa !25
  store <4 x float> %wide.load1721, ptr %222, align 4, !tbaa !25
  %index.next1722 = add nuw i64 %index1719, 8
  %223 = icmp eq i64 %index.next1722, %n.vec1716
  br i1 %223, label %middle.block1711, label %vector.body1718, !llvm.loop !52

middle.block1711:                                 ; preds = %vector.body1718
  br i1 %cmp.n1723, label %._crit_edge864, label %scalar.ph1712.preheader

scalar.ph1712.preheader:                          ; preds = %middle.block1711, %vector.memcheck1709, %.lr.ph863
  %indvars.iv1130.ph = phi i64 [ 0, %vector.memcheck1709 ], [ 0, %.lr.ph863 ], [ %n.vec1716, %middle.block1711 ]
  br i1 %lcmp.mod2216.not, label %scalar.ph1712.prol.loopexit, label %scalar.ph1712.prol

scalar.ph1712.prol:                               ; preds = %scalar.ph1712.preheader, %scalar.ph1712.prol
  %indvars.iv1130.prol = phi i64 [ %indvars.iv.next1131.prol, %scalar.ph1712.prol ], [ %indvars.iv1130.ph, %scalar.ph1712.preheader ]
  %prol.iter2217 = phi i64 [ %prol.iter2217.next, %scalar.ph1712.prol ], [ 0, %scalar.ph1712.preheader ]
  %gep1484.prol = getelementptr float, ptr %invariant.gep1483, i64 %indvars.iv1130.prol
  %224 = load float, ptr %gep1484.prol, align 4, !tbaa !25
  %gep1486.prol = getelementptr float, ptr %invariant.gep1485, i64 %indvars.iv1130.prol
  store float %224, ptr %gep1486.prol, align 4, !tbaa !25
  %indvars.iv.next1131.prol = add nuw nsw i64 %indvars.iv1130.prol, 1
  %prol.iter2217.next = add i64 %prol.iter2217, 1
  %prol.iter2217.cmp.not = icmp eq i64 %prol.iter2217.next, %xtraiter2215
  br i1 %prol.iter2217.cmp.not, label %scalar.ph1712.prol.loopexit, label %scalar.ph1712.prol, !llvm.loop !53

scalar.ph1712.prol.loopexit:                      ; preds = %scalar.ph1712.prol, %scalar.ph1712.preheader
  %indvars.iv1130.unr = phi i64 [ %indvars.iv1130.ph, %scalar.ph1712.preheader ], [ %indvars.iv.next1131.prol, %scalar.ph1712.prol ]
  %225 = sub nsw i64 %indvars.iv1130.ph, %wide.trip.count1133
  %226 = icmp ugt i64 %225, -4
  br i1 %226, label %._crit_edge864, label %scalar.ph1712

scalar.ph1712:                                    ; preds = %scalar.ph1712.prol.loopexit, %scalar.ph1712
  %indvars.iv1130 = phi i64 [ %indvars.iv.next1131.3, %scalar.ph1712 ], [ %indvars.iv1130.unr, %scalar.ph1712.prol.loopexit ]
  %gep1484 = getelementptr float, ptr %invariant.gep1483, i64 %indvars.iv1130
  %227 = load float, ptr %gep1484, align 4, !tbaa !25
  %gep1486 = getelementptr float, ptr %invariant.gep1485, i64 %indvars.iv1130
  store float %227, ptr %gep1486, align 4, !tbaa !25
  %indvars.iv.next1131 = add nuw nsw i64 %indvars.iv1130, 1
  %gep1484.1 = getelementptr float, ptr %invariant.gep1483, i64 %indvars.iv.next1131
  %228 = load float, ptr %gep1484.1, align 4, !tbaa !25
  %gep1486.1 = getelementptr float, ptr %invariant.gep1485, i64 %indvars.iv.next1131
  store float %228, ptr %gep1486.1, align 4, !tbaa !25
  %indvars.iv.next1131.1 = add nuw nsw i64 %indvars.iv1130, 2
  %gep1484.2 = getelementptr float, ptr %invariant.gep1483, i64 %indvars.iv.next1131.1
  %229 = load float, ptr %gep1484.2, align 4, !tbaa !25
  %gep1486.2 = getelementptr float, ptr %invariant.gep1485, i64 %indvars.iv.next1131.1
  store float %229, ptr %gep1486.2, align 4, !tbaa !25
  %indvars.iv.next1131.2 = add nuw nsw i64 %indvars.iv1130, 3
  %gep1484.3 = getelementptr float, ptr %invariant.gep1483, i64 %indvars.iv.next1131.2
  %230 = load float, ptr %gep1484.3, align 4, !tbaa !25
  %gep1486.3 = getelementptr float, ptr %invariant.gep1485, i64 %indvars.iv.next1131.2
  store float %230, ptr %gep1486.3, align 4, !tbaa !25
  %indvars.iv.next1131.3 = add nuw nsw i64 %indvars.iv1130, 4
  %exitcond1134.not.3 = icmp eq i64 %indvars.iv.next1131.3, %wide.trip.count1133
  br i1 %exitcond1134.not.3, label %._crit_edge864, label %scalar.ph1712, !llvm.loop !54

._crit_edge864:                                   ; preds = %scalar.ph1712.prol.loopexit, %scalar.ph1712, %middle.block1711, %208
  %indvars.iv.next1136 = add nuw nsw i64 %indvars.iv1135, 1
  %exitcond1139.not = icmp eq i64 %indvars.iv.next1136, %wide.trip.count1138
  br i1 %exitcond1139.not, label %.loopexit, label %208, !llvm.loop !55

231:                                              ; preds = %203
  %232 = and i32 %29, 16
  %.not726 = icmp eq i32 %232, 0
  br i1 %.not726, label %.preheader789, label %.preheader791

.preheader791:                                    ; preds = %231
  %233 = icmp sgt i32 %.0657, 0
  br i1 %233, label %.lr.ph872, label %.loopexit

.lr.ph872:                                        ; preds = %.preheader791
  %234 = icmp sgt i32 %.0, 0
  %235 = sext i32 %6 to i64
  %236 = sext i32 %8 to i64
  %wide.trip.count1148 = zext nneg i32 %.0657 to i64
  %wide.trip.count1143 = zext i32 %.0 to i64
  %min.iters.check1731 = icmp ult i32 %.0, 12
  %ident.check1725 = icmp ne i32 %8, 1
  %ident.check1726 = icmp ne i32 %6, 1
  %237 = or i1 %ident.check1725, %ident.check1726
  %n.vec1734 = and i64 %wide.trip.count1143, 2147483640
  %cmp.n1741 = icmp eq i64 %n.vec1734, %wide.trip.count1143
  %xtraiter2218 = and i64 %wide.trip.count1143, 3
  %lcmp.mod2219.not = icmp eq i64 %xtraiter2218, 0
  br label %244

.preheader789:                                    ; preds = %231
  %238 = icmp sgt i32 %.0, 0
  br i1 %238, label %.preheader788.lr.ph, label %.loopexit

.preheader788.lr.ph:                              ; preds = %.preheader789
  %239 = icmp sgt i32 %.0657, 0
  %240 = sext i32 %.0657 to i64
  %241 = sext i32 %8 to i64
  %wide.trip.count1158 = zext nneg i32 %.0 to i64
  %wide.trip.count1153 = zext i32 %.0657 to i64
  %242 = add nsw i64 %wide.trip.count1153, -1
  %xtraiter2222 = and i64 %wide.trip.count1153, 3
  %243 = icmp ult i64 %242, 3
  %unroll_iter2225 = and i64 %wide.trip.count1153, 2147483644
  %lcmp.mod2224.not = icmp eq i64 %xtraiter2222, 0
  br label %.preheader788

244:                                              ; preds = %.lr.ph872, %._crit_edge870
  %indvars.iv1145 = phi i64 [ 0, %.lr.ph872 ], [ %indvars.iv.next1146, %._crit_edge870 ]
  %245 = shl nuw nsw i64 %indvars.iv1145, 2
  br i1 %234, label %.lr.ph869.preheader, label %._crit_edge870

.lr.ph869.preheader:                              ; preds = %244
  %246 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1145
  %247 = load i32, ptr %246, align 4, !tbaa !51
  %248 = sext i32 %247 to i64
  %invariant.gep1487 = getelementptr float, ptr %20, i64 %248
  %invariant.gep1489 = getelementptr float, ptr %23, i64 %indvars.iv1145
  %brmerge2323 = select i1 %min.iters.check1731, i1 true, i1 %237
  br i1 %brmerge2323, label %.lr.ph869.preheader2173, label %vector.memcheck1727

vector.memcheck1727:                              ; preds = %.lr.ph869.preheader
  %249 = shl nsw i64 %248, 2
  %250 = add i64 %245, %24
  %251 = add i64 %249, %21
  %252 = sub i64 %250, %251
  %diff.check1728 = icmp ult i64 %252, 32
  br i1 %diff.check1728, label %.lr.ph869.preheader2173, label %vector.body1736

vector.body1736:                                  ; preds = %vector.memcheck1727, %vector.body1736
  %index1737 = phi i64 [ %index.next1740, %vector.body1736 ], [ 0, %vector.memcheck1727 ]
  %253 = getelementptr float, ptr %invariant.gep1487, i64 %index1737
  %254 = getelementptr i8, ptr %253, i64 16
  %wide.load1738 = load <4 x float>, ptr %253, align 4, !tbaa !25
  %wide.load1739 = load <4 x float>, ptr %254, align 4, !tbaa !25
  %255 = getelementptr float, ptr %invariant.gep1489, i64 %index1737
  %256 = getelementptr i8, ptr %255, i64 16
  store <4 x float> %wide.load1738, ptr %255, align 4, !tbaa !25
  store <4 x float> %wide.load1739, ptr %256, align 4, !tbaa !25
  %index.next1740 = add nuw i64 %index1737, 8
  %257 = icmp eq i64 %index.next1740, %n.vec1734
  br i1 %257, label %middle.block1729, label %vector.body1736, !llvm.loop !56

middle.block1729:                                 ; preds = %vector.body1736
  br i1 %cmp.n1741, label %._crit_edge870, label %.lr.ph869.preheader2173

.lr.ph869.preheader2173:                          ; preds = %.lr.ph869.preheader, %middle.block1729, %vector.memcheck1727
  %indvars.iv1140.ph = phi i64 [ 0, %vector.memcheck1727 ], [ 0, %.lr.ph869.preheader ], [ %n.vec1734, %middle.block1729 ]
  br i1 %lcmp.mod2219.not, label %.lr.ph869.prol.loopexit, label %.lr.ph869.prol

.lr.ph869.prol:                                   ; preds = %.lr.ph869.preheader2173, %.lr.ph869.prol
  %indvars.iv1140.prol = phi i64 [ %indvars.iv.next1141.prol, %.lr.ph869.prol ], [ %indvars.iv1140.ph, %.lr.ph869.preheader2173 ]
  %prol.iter2220 = phi i64 [ %prol.iter2220.next, %.lr.ph869.prol ], [ 0, %.lr.ph869.preheader2173 ]
  %258 = mul nsw i64 %indvars.iv1140.prol, %235
  %gep1488.prol = getelementptr float, ptr %invariant.gep1487, i64 %258
  %259 = load float, ptr %gep1488.prol, align 4, !tbaa !25
  %260 = mul nsw i64 %indvars.iv1140.prol, %236
  %gep1490.prol = getelementptr float, ptr %invariant.gep1489, i64 %260
  store float %259, ptr %gep1490.prol, align 4, !tbaa !25
  %indvars.iv.next1141.prol = add nuw nsw i64 %indvars.iv1140.prol, 1
  %prol.iter2220.next = add i64 %prol.iter2220, 1
  %prol.iter2220.cmp.not = icmp eq i64 %prol.iter2220.next, %xtraiter2218
  br i1 %prol.iter2220.cmp.not, label %.lr.ph869.prol.loopexit, label %.lr.ph869.prol, !llvm.loop !57

.lr.ph869.prol.loopexit:                          ; preds = %.lr.ph869.prol, %.lr.ph869.preheader2173
  %indvars.iv1140.unr = phi i64 [ %indvars.iv1140.ph, %.lr.ph869.preheader2173 ], [ %indvars.iv.next1141.prol, %.lr.ph869.prol ]
  %261 = sub nsw i64 %indvars.iv1140.ph, %wide.trip.count1143
  %262 = icmp ugt i64 %261, -4
  br i1 %262, label %._crit_edge870, label %.lr.ph869

.lr.ph869:                                        ; preds = %.lr.ph869.prol.loopexit, %.lr.ph869
  %indvars.iv1140 = phi i64 [ %indvars.iv.next1141.3, %.lr.ph869 ], [ %indvars.iv1140.unr, %.lr.ph869.prol.loopexit ]
  %263 = mul nsw i64 %indvars.iv1140, %235
  %gep1488 = getelementptr float, ptr %invariant.gep1487, i64 %263
  %264 = load float, ptr %gep1488, align 4, !tbaa !25
  %265 = mul nsw i64 %indvars.iv1140, %236
  %gep1490 = getelementptr float, ptr %invariant.gep1489, i64 %265
  store float %264, ptr %gep1490, align 4, !tbaa !25
  %indvars.iv.next1141 = add nuw nsw i64 %indvars.iv1140, 1
  %266 = mul nsw i64 %indvars.iv.next1141, %235
  %gep1488.1 = getelementptr float, ptr %invariant.gep1487, i64 %266
  %267 = load float, ptr %gep1488.1, align 4, !tbaa !25
  %268 = mul nsw i64 %indvars.iv.next1141, %236
  %gep1490.1 = getelementptr float, ptr %invariant.gep1489, i64 %268
  store float %267, ptr %gep1490.1, align 4, !tbaa !25
  %indvars.iv.next1141.1 = add nuw nsw i64 %indvars.iv1140, 2
  %269 = mul nsw i64 %indvars.iv.next1141.1, %235
  %gep1488.2 = getelementptr float, ptr %invariant.gep1487, i64 %269
  %270 = load float, ptr %gep1488.2, align 4, !tbaa !25
  %271 = mul nsw i64 %indvars.iv.next1141.1, %236
  %gep1490.2 = getelementptr float, ptr %invariant.gep1489, i64 %271
  store float %270, ptr %gep1490.2, align 4, !tbaa !25
  %indvars.iv.next1141.2 = add nuw nsw i64 %indvars.iv1140, 3
  %272 = mul nsw i64 %indvars.iv.next1141.2, %235
  %gep1488.3 = getelementptr float, ptr %invariant.gep1487, i64 %272
  %273 = load float, ptr %gep1488.3, align 4, !tbaa !25
  %274 = mul nsw i64 %indvars.iv.next1141.2, %236
  %gep1490.3 = getelementptr float, ptr %invariant.gep1489, i64 %274
  store float %273, ptr %gep1490.3, align 4, !tbaa !25
  %indvars.iv.next1141.3 = add nuw nsw i64 %indvars.iv1140, 4
  %exitcond1144.not.3 = icmp eq i64 %indvars.iv.next1141.3, %wide.trip.count1143
  br i1 %exitcond1144.not.3, label %._crit_edge870, label %.lr.ph869, !llvm.loop !58

._crit_edge870:                                   ; preds = %.lr.ph869.prol.loopexit, %.lr.ph869, %middle.block1729, %244
  %indvars.iv.next1146 = add nuw nsw i64 %indvars.iv1145, 1
  %exitcond1149.not = icmp eq i64 %indvars.iv.next1146, %wide.trip.count1148
  br i1 %exitcond1149.not, label %.loopexit, label %244, !llvm.loop !59

.preheader788:                                    ; preds = %.preheader788.lr.ph, %._crit_edge875
  %indvars.iv1155 = phi i64 [ 0, %.preheader788.lr.ph ], [ %indvars.iv.next1156, %._crit_edge875 ]
  br i1 %239, label %.lr.ph874, label %._crit_edge875

.lr.ph874:                                        ; preds = %.preheader788
  %275 = mul nuw nsw i64 %indvars.iv1155, %240
  %276 = mul nsw i64 %indvars.iv1155, %241
  %invariant.gep1491 = getelementptr i32, ptr %18, i64 %275
  %invariant.gep1493 = getelementptr float, ptr %23, i64 %276
  br i1 %243, label %._crit_edge875.loopexit.unr-lcssa, label %.lr.ph874.new

.lr.ph874.new:                                    ; preds = %.lr.ph874, %.lr.ph874.new
  %indvars.iv1150 = phi i64 [ %indvars.iv.next1151.3, %.lr.ph874.new ], [ 0, %.lr.ph874 ]
  %niter2226 = phi i64 [ %niter2226.next.3, %.lr.ph874.new ], [ 0, %.lr.ph874 ]
  %gep1492 = getelementptr i32, ptr %invariant.gep1491, i64 %indvars.iv1150
  %277 = load i32, ptr %gep1492, align 4, !tbaa !51
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds float, ptr %20, i64 %278
  %280 = load float, ptr %279, align 4, !tbaa !25
  %gep1494 = getelementptr float, ptr %invariant.gep1493, i64 %indvars.iv1150
  store float %280, ptr %gep1494, align 4, !tbaa !25
  %indvars.iv.next1151 = or disjoint i64 %indvars.iv1150, 1
  %gep1492.1 = getelementptr i32, ptr %invariant.gep1491, i64 %indvars.iv.next1151
  %281 = load i32, ptr %gep1492.1, align 4, !tbaa !51
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds float, ptr %20, i64 %282
  %284 = load float, ptr %283, align 4, !tbaa !25
  %gep1494.1 = getelementptr float, ptr %invariant.gep1493, i64 %indvars.iv.next1151
  store float %284, ptr %gep1494.1, align 4, !tbaa !25
  %indvars.iv.next1151.1 = or disjoint i64 %indvars.iv1150, 2
  %gep1492.2 = getelementptr i32, ptr %invariant.gep1491, i64 %indvars.iv.next1151.1
  %285 = load i32, ptr %gep1492.2, align 4, !tbaa !51
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds float, ptr %20, i64 %286
  %288 = load float, ptr %287, align 4, !tbaa !25
  %gep1494.2 = getelementptr float, ptr %invariant.gep1493, i64 %indvars.iv.next1151.1
  store float %288, ptr %gep1494.2, align 4, !tbaa !25
  %indvars.iv.next1151.2 = or disjoint i64 %indvars.iv1150, 3
  %gep1492.3 = getelementptr i32, ptr %invariant.gep1491, i64 %indvars.iv.next1151.2
  %289 = load i32, ptr %gep1492.3, align 4, !tbaa !51
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds float, ptr %20, i64 %290
  %292 = load float, ptr %291, align 4, !tbaa !25
  %gep1494.3 = getelementptr float, ptr %invariant.gep1493, i64 %indvars.iv.next1151.2
  store float %292, ptr %gep1494.3, align 4, !tbaa !25
  %indvars.iv.next1151.3 = add nuw nsw i64 %indvars.iv1150, 4
  %niter2226.next.3 = add i64 %niter2226, 4
  %niter2226.ncmp.3 = icmp eq i64 %niter2226.next.3, %unroll_iter2225
  br i1 %niter2226.ncmp.3, label %._crit_edge875.loopexit.unr-lcssa, label %.lr.ph874.new, !llvm.loop !60

._crit_edge875.loopexit.unr-lcssa:                ; preds = %.lr.ph874.new, %.lr.ph874
  %indvars.iv1150.unr = phi i64 [ 0, %.lr.ph874 ], [ %indvars.iv.next1151.3, %.lr.ph874.new ]
  br i1 %lcmp.mod2224.not, label %._crit_edge875, label %.epil.preheader2221

.epil.preheader2221:                              ; preds = %._crit_edge875.loopexit.unr-lcssa, %.epil.preheader2221
  %indvars.iv1150.epil = phi i64 [ %indvars.iv.next1151.epil, %.epil.preheader2221 ], [ %indvars.iv1150.unr, %._crit_edge875.loopexit.unr-lcssa ]
  %epil.iter2223 = phi i64 [ %epil.iter2223.next, %.epil.preheader2221 ], [ 0, %._crit_edge875.loopexit.unr-lcssa ]
  %gep1492.epil = getelementptr i32, ptr %invariant.gep1491, i64 %indvars.iv1150.epil
  %293 = load i32, ptr %gep1492.epil, align 4, !tbaa !51
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds float, ptr %20, i64 %294
  %296 = load float, ptr %295, align 4, !tbaa !25
  %gep1494.epil = getelementptr float, ptr %invariant.gep1493, i64 %indvars.iv1150.epil
  store float %296, ptr %gep1494.epil, align 4, !tbaa !25
  %indvars.iv.next1151.epil = add nuw nsw i64 %indvars.iv1150.epil, 1
  %epil.iter2223.next = add i64 %epil.iter2223, 1
  %epil.iter2223.cmp.not = icmp eq i64 %epil.iter2223.next, %xtraiter2222
  br i1 %epil.iter2223.cmp.not, label %._crit_edge875, label %.epil.preheader2221, !llvm.loop !61

._crit_edge875:                                   ; preds = %._crit_edge875.loopexit.unr-lcssa, %.epil.preheader2221, %.preheader788
  %indvars.iv.next1156 = add nuw nsw i64 %indvars.iv1155, 1
  %exitcond1159.not = icmp eq i64 %indvars.iv.next1156, %wide.trip.count1158
  br i1 %exitcond1159.not, label %.loopexit, label %.preheader788, !llvm.loop !62

297:                                              ; preds = %202
  br i1 %.not725, label %325, label %.preheader800

.preheader800:                                    ; preds = %297
  %298 = icmp sgt i32 %.0658, 0
  br i1 %298, label %.lr.ph850, label %.loopexit

.lr.ph850:                                        ; preds = %.preheader800
  %299 = icmp sgt i32 %.0657, 0
  %300 = sext i32 %6 to i64
  %wide.trip.count1107 = zext nneg i32 %.0658 to i64
  %wide.trip.count1102 = zext i32 %.0657 to i64
  %301 = sub i64 %24, %21
  %302 = mul nsw i64 %300, -4
  %min.iters.check1680 = icmp ult i32 %.0657, 8
  %n.vec1683 = and i64 %wide.trip.count1102, 2147483640
  %cmp.n1690 = icmp eq i64 %n.vec1683, %wide.trip.count1102
  %xtraiter2204 = and i64 %wide.trip.count1102, 3
  %lcmp.mod2205.not = icmp eq i64 %xtraiter2204, 0
  br label %303

303:                                              ; preds = %.lr.ph850, %._crit_edge848
  %indvars.iv1104 = phi i64 [ 0, %.lr.ph850 ], [ %indvars.iv.next1105, %._crit_edge848 ]
  %304 = mul i64 %302, %indvars.iv1104
  %305 = add i64 %301, %304
  br i1 %299, label %.lr.ph847, label %._crit_edge848

.lr.ph847:                                        ; preds = %303
  %306 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1104
  %307 = load i32, ptr %306, align 4, !tbaa !51
  %308 = mul nsw i64 %indvars.iv1104, %300
  %309 = mul nsw i32 %307, %8
  %310 = sext i32 %309 to i64
  %invariant.gep1471 = getelementptr float, ptr %20, i64 %308
  %invariant.gep1473 = getelementptr float, ptr %23, i64 %310
  br i1 %min.iters.check1680, label %scalar.ph1679.preheader, label %vector.memcheck1676

vector.memcheck1676:                              ; preds = %.lr.ph847
  %311 = shl nsw i64 %310, 2
  %312 = add i64 %305, %311
  %diff.check1677 = icmp ult i64 %312, 32
  br i1 %diff.check1677, label %scalar.ph1679.preheader, label %vector.body1685

vector.body1685:                                  ; preds = %vector.memcheck1676, %vector.body1685
  %index1686 = phi i64 [ %index.next1689, %vector.body1685 ], [ 0, %vector.memcheck1676 ]
  %313 = getelementptr float, ptr %invariant.gep1471, i64 %index1686
  %314 = getelementptr i8, ptr %313, i64 16
  %wide.load1687 = load <4 x float>, ptr %313, align 4, !tbaa !25
  %wide.load1688 = load <4 x float>, ptr %314, align 4, !tbaa !25
  %315 = getelementptr float, ptr %invariant.gep1473, i64 %index1686
  %316 = getelementptr i8, ptr %315, i64 16
  store <4 x float> %wide.load1687, ptr %315, align 4, !tbaa !25
  store <4 x float> %wide.load1688, ptr %316, align 4, !tbaa !25
  %index.next1689 = add nuw i64 %index1686, 8
  %317 = icmp eq i64 %index.next1689, %n.vec1683
  br i1 %317, label %middle.block1678, label %vector.body1685, !llvm.loop !63

middle.block1678:                                 ; preds = %vector.body1685
  br i1 %cmp.n1690, label %._crit_edge848, label %scalar.ph1679.preheader

scalar.ph1679.preheader:                          ; preds = %middle.block1678, %vector.memcheck1676, %.lr.ph847
  %indvars.iv1099.ph = phi i64 [ 0, %vector.memcheck1676 ], [ 0, %.lr.ph847 ], [ %n.vec1683, %middle.block1678 ]
  br i1 %lcmp.mod2205.not, label %scalar.ph1679.prol.loopexit, label %scalar.ph1679.prol

scalar.ph1679.prol:                               ; preds = %scalar.ph1679.preheader, %scalar.ph1679.prol
  %indvars.iv1099.prol = phi i64 [ %indvars.iv.next1100.prol, %scalar.ph1679.prol ], [ %indvars.iv1099.ph, %scalar.ph1679.preheader ]
  %prol.iter2206 = phi i64 [ %prol.iter2206.next, %scalar.ph1679.prol ], [ 0, %scalar.ph1679.preheader ]
  %gep1472.prol = getelementptr float, ptr %invariant.gep1471, i64 %indvars.iv1099.prol
  %318 = load float, ptr %gep1472.prol, align 4, !tbaa !25
  %gep1474.prol = getelementptr float, ptr %invariant.gep1473, i64 %indvars.iv1099.prol
  store float %318, ptr %gep1474.prol, align 4, !tbaa !25
  %indvars.iv.next1100.prol = add nuw nsw i64 %indvars.iv1099.prol, 1
  %prol.iter2206.next = add i64 %prol.iter2206, 1
  %prol.iter2206.cmp.not = icmp eq i64 %prol.iter2206.next, %xtraiter2204
  br i1 %prol.iter2206.cmp.not, label %scalar.ph1679.prol.loopexit, label %scalar.ph1679.prol, !llvm.loop !64

scalar.ph1679.prol.loopexit:                      ; preds = %scalar.ph1679.prol, %scalar.ph1679.preheader
  %indvars.iv1099.unr = phi i64 [ %indvars.iv1099.ph, %scalar.ph1679.preheader ], [ %indvars.iv.next1100.prol, %scalar.ph1679.prol ]
  %319 = sub nsw i64 %indvars.iv1099.ph, %wide.trip.count1102
  %320 = icmp ugt i64 %319, -4
  br i1 %320, label %._crit_edge848, label %scalar.ph1679

scalar.ph1679:                                    ; preds = %scalar.ph1679.prol.loopexit, %scalar.ph1679
  %indvars.iv1099 = phi i64 [ %indvars.iv.next1100.3, %scalar.ph1679 ], [ %indvars.iv1099.unr, %scalar.ph1679.prol.loopexit ]
  %gep1472 = getelementptr float, ptr %invariant.gep1471, i64 %indvars.iv1099
  %321 = load float, ptr %gep1472, align 4, !tbaa !25
  %gep1474 = getelementptr float, ptr %invariant.gep1473, i64 %indvars.iv1099
  store float %321, ptr %gep1474, align 4, !tbaa !25
  %indvars.iv.next1100 = add nuw nsw i64 %indvars.iv1099, 1
  %gep1472.1 = getelementptr float, ptr %invariant.gep1471, i64 %indvars.iv.next1100
  %322 = load float, ptr %gep1472.1, align 4, !tbaa !25
  %gep1474.1 = getelementptr float, ptr %invariant.gep1473, i64 %indvars.iv.next1100
  store float %322, ptr %gep1474.1, align 4, !tbaa !25
  %indvars.iv.next1100.1 = add nuw nsw i64 %indvars.iv1099, 2
  %gep1472.2 = getelementptr float, ptr %invariant.gep1471, i64 %indvars.iv.next1100.1
  %323 = load float, ptr %gep1472.2, align 4, !tbaa !25
  %gep1474.2 = getelementptr float, ptr %invariant.gep1473, i64 %indvars.iv.next1100.1
  store float %323, ptr %gep1474.2, align 4, !tbaa !25
  %indvars.iv.next1100.2 = add nuw nsw i64 %indvars.iv1099, 3
  %gep1472.3 = getelementptr float, ptr %invariant.gep1471, i64 %indvars.iv.next1100.2
  %324 = load float, ptr %gep1472.3, align 4, !tbaa !25
  %gep1474.3 = getelementptr float, ptr %invariant.gep1473, i64 %indvars.iv.next1100.2
  store float %324, ptr %gep1474.3, align 4, !tbaa !25
  %indvars.iv.next1100.3 = add nuw nsw i64 %indvars.iv1099, 4
  %exitcond1103.not.3 = icmp eq i64 %indvars.iv.next1100.3, %wide.trip.count1102
  br i1 %exitcond1103.not.3, label %._crit_edge848, label %scalar.ph1679, !llvm.loop !65

._crit_edge848:                                   ; preds = %scalar.ph1679.prol.loopexit, %scalar.ph1679, %middle.block1678, %303
  %indvars.iv.next1105 = add nuw nsw i64 %indvars.iv1104, 1
  %exitcond1108.not = icmp eq i64 %indvars.iv.next1105, %wide.trip.count1107
  br i1 %exitcond1108.not, label %.loopexit, label %303, !llvm.loop !66

325:                                              ; preds = %297
  %326 = and i32 %29, 16
  %.not724 = icmp eq i32 %326, 0
  br i1 %.not724, label %.preheader796, label %.preheader798

.preheader798:                                    ; preds = %325
  %327 = icmp sgt i32 %.0659, 0
  br i1 %327, label %.lr.ph856, label %.loopexit

.lr.ph856:                                        ; preds = %.preheader798
  %328 = icmp sgt i32 %.0658, 0
  %329 = sext i32 %6 to i64
  %330 = sext i32 %8 to i64
  %wide.trip.count1117 = zext nneg i32 %.0659 to i64
  %wide.trip.count1112 = zext i32 %.0658 to i64
  %min.iters.check1698 = icmp ult i32 %.0658, 12
  %ident.check1692 = icmp ne i32 %8, 1
  %ident.check1693 = icmp ne i32 %6, 1
  %331 = or i1 %ident.check1692, %ident.check1693
  %n.vec1701 = and i64 %wide.trip.count1112, 2147483640
  %cmp.n1708 = icmp eq i64 %n.vec1701, %wide.trip.count1112
  %xtraiter2207 = and i64 %wide.trip.count1112, 3
  %lcmp.mod2208.not = icmp eq i64 %xtraiter2207, 0
  br label %338

.preheader796:                                    ; preds = %325
  %332 = icmp sgt i32 %.0658, 0
  br i1 %332, label %.preheader795.lr.ph, label %.loopexit

.preheader795.lr.ph:                              ; preds = %.preheader796
  %333 = icmp sgt i32 %.0659, 0
  %334 = sext i32 %.0659 to i64
  %335 = sext i32 %6 to i64
  %wide.trip.count1127 = zext nneg i32 %.0658 to i64
  %wide.trip.count1122 = zext i32 %.0659 to i64
  %336 = add nsw i64 %wide.trip.count1122, -1
  %xtraiter2211 = and i64 %wide.trip.count1122, 3
  %337 = icmp ult i64 %336, 3
  %unroll_iter2213 = and i64 %wide.trip.count1122, 2147483644
  %lcmp.mod2212.not = icmp eq i64 %xtraiter2211, 0
  br label %.preheader795

338:                                              ; preds = %.lr.ph856, %._crit_edge854
  %indvars.iv1114 = phi i64 [ 0, %.lr.ph856 ], [ %indvars.iv.next1115, %._crit_edge854 ]
  %339 = shl i64 %indvars.iv1114, 2
  %340 = add i64 %339, %21
  %341 = sub i64 %24, %340
  br i1 %328, label %.lr.ph853.preheader, label %._crit_edge854

.lr.ph853.preheader:                              ; preds = %338
  %342 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1114
  %343 = load i32, ptr %342, align 4, !tbaa !51
  %344 = sext i32 %343 to i64
  %invariant.gep1475 = getelementptr float, ptr %20, i64 %indvars.iv1114
  %invariant.gep1477 = getelementptr float, ptr %23, i64 %344
  %brmerge2324 = select i1 %min.iters.check1698, i1 true, i1 %331
  br i1 %brmerge2324, label %.lr.ph853.preheader2177, label %vector.memcheck1694

vector.memcheck1694:                              ; preds = %.lr.ph853.preheader
  %345 = shl nsw i64 %344, 2
  %346 = add i64 %341, %345
  %diff.check1695 = icmp ult i64 %346, 32
  br i1 %diff.check1695, label %.lr.ph853.preheader2177, label %vector.body1703

vector.body1703:                                  ; preds = %vector.memcheck1694, %vector.body1703
  %index1704 = phi i64 [ %index.next1707, %vector.body1703 ], [ 0, %vector.memcheck1694 ]
  %347 = getelementptr float, ptr %invariant.gep1475, i64 %index1704
  %348 = getelementptr i8, ptr %347, i64 16
  %wide.load1705 = load <4 x float>, ptr %347, align 4, !tbaa !25
  %wide.load1706 = load <4 x float>, ptr %348, align 4, !tbaa !25
  %349 = getelementptr float, ptr %invariant.gep1477, i64 %index1704
  %350 = getelementptr i8, ptr %349, i64 16
  store <4 x float> %wide.load1705, ptr %349, align 4, !tbaa !25
  store <4 x float> %wide.load1706, ptr %350, align 4, !tbaa !25
  %index.next1707 = add nuw i64 %index1704, 8
  %351 = icmp eq i64 %index.next1707, %n.vec1701
  br i1 %351, label %middle.block1696, label %vector.body1703, !llvm.loop !67

middle.block1696:                                 ; preds = %vector.body1703
  br i1 %cmp.n1708, label %._crit_edge854, label %.lr.ph853.preheader2177

.lr.ph853.preheader2177:                          ; preds = %.lr.ph853.preheader, %middle.block1696, %vector.memcheck1694
  %indvars.iv1109.ph = phi i64 [ 0, %vector.memcheck1694 ], [ 0, %.lr.ph853.preheader ], [ %n.vec1701, %middle.block1696 ]
  br i1 %lcmp.mod2208.not, label %.lr.ph853.prol.loopexit, label %.lr.ph853.prol

.lr.ph853.prol:                                   ; preds = %.lr.ph853.preheader2177, %.lr.ph853.prol
  %indvars.iv1109.prol = phi i64 [ %indvars.iv.next1110.prol, %.lr.ph853.prol ], [ %indvars.iv1109.ph, %.lr.ph853.preheader2177 ]
  %prol.iter2209 = phi i64 [ %prol.iter2209.next, %.lr.ph853.prol ], [ 0, %.lr.ph853.preheader2177 ]
  %352 = mul nsw i64 %indvars.iv1109.prol, %329
  %gep1476.prol = getelementptr float, ptr %invariant.gep1475, i64 %352
  %353 = load float, ptr %gep1476.prol, align 4, !tbaa !25
  %354 = mul nsw i64 %indvars.iv1109.prol, %330
  %gep1478.prol = getelementptr float, ptr %invariant.gep1477, i64 %354
  store float %353, ptr %gep1478.prol, align 4, !tbaa !25
  %indvars.iv.next1110.prol = add nuw nsw i64 %indvars.iv1109.prol, 1
  %prol.iter2209.next = add i64 %prol.iter2209, 1
  %prol.iter2209.cmp.not = icmp eq i64 %prol.iter2209.next, %xtraiter2207
  br i1 %prol.iter2209.cmp.not, label %.lr.ph853.prol.loopexit, label %.lr.ph853.prol, !llvm.loop !68

.lr.ph853.prol.loopexit:                          ; preds = %.lr.ph853.prol, %.lr.ph853.preheader2177
  %indvars.iv1109.unr = phi i64 [ %indvars.iv1109.ph, %.lr.ph853.preheader2177 ], [ %indvars.iv.next1110.prol, %.lr.ph853.prol ]
  %355 = sub nsw i64 %indvars.iv1109.ph, %wide.trip.count1112
  %356 = icmp ugt i64 %355, -4
  br i1 %356, label %._crit_edge854, label %.lr.ph853

.lr.ph853:                                        ; preds = %.lr.ph853.prol.loopexit, %.lr.ph853
  %indvars.iv1109 = phi i64 [ %indvars.iv.next1110.3, %.lr.ph853 ], [ %indvars.iv1109.unr, %.lr.ph853.prol.loopexit ]
  %357 = mul nsw i64 %indvars.iv1109, %329
  %gep1476 = getelementptr float, ptr %invariant.gep1475, i64 %357
  %358 = load float, ptr %gep1476, align 4, !tbaa !25
  %359 = mul nsw i64 %indvars.iv1109, %330
  %gep1478 = getelementptr float, ptr %invariant.gep1477, i64 %359
  store float %358, ptr %gep1478, align 4, !tbaa !25
  %indvars.iv.next1110 = add nuw nsw i64 %indvars.iv1109, 1
  %360 = mul nsw i64 %indvars.iv.next1110, %329
  %gep1476.1 = getelementptr float, ptr %invariant.gep1475, i64 %360
  %361 = load float, ptr %gep1476.1, align 4, !tbaa !25
  %362 = mul nsw i64 %indvars.iv.next1110, %330
  %gep1478.1 = getelementptr float, ptr %invariant.gep1477, i64 %362
  store float %361, ptr %gep1478.1, align 4, !tbaa !25
  %indvars.iv.next1110.1 = add nuw nsw i64 %indvars.iv1109, 2
  %363 = mul nsw i64 %indvars.iv.next1110.1, %329
  %gep1476.2 = getelementptr float, ptr %invariant.gep1475, i64 %363
  %364 = load float, ptr %gep1476.2, align 4, !tbaa !25
  %365 = mul nsw i64 %indvars.iv.next1110.1, %330
  %gep1478.2 = getelementptr float, ptr %invariant.gep1477, i64 %365
  store float %364, ptr %gep1478.2, align 4, !tbaa !25
  %indvars.iv.next1110.2 = add nuw nsw i64 %indvars.iv1109, 3
  %366 = mul nsw i64 %indvars.iv.next1110.2, %329
  %gep1476.3 = getelementptr float, ptr %invariant.gep1475, i64 %366
  %367 = load float, ptr %gep1476.3, align 4, !tbaa !25
  %368 = mul nsw i64 %indvars.iv.next1110.2, %330
  %gep1478.3 = getelementptr float, ptr %invariant.gep1477, i64 %368
  store float %367, ptr %gep1478.3, align 4, !tbaa !25
  %indvars.iv.next1110.3 = add nuw nsw i64 %indvars.iv1109, 4
  %exitcond1113.not.3 = icmp eq i64 %indvars.iv.next1110.3, %wide.trip.count1112
  br i1 %exitcond1113.not.3, label %._crit_edge854, label %.lr.ph853, !llvm.loop !69

._crit_edge854:                                   ; preds = %.lr.ph853.prol.loopexit, %.lr.ph853, %middle.block1696, %338
  %indvars.iv.next1115 = add nuw nsw i64 %indvars.iv1114, 1
  %exitcond1118.not = icmp eq i64 %indvars.iv.next1115, %wide.trip.count1117
  br i1 %exitcond1118.not, label %.loopexit, label %338, !llvm.loop !70

.preheader795:                                    ; preds = %.preheader795.lr.ph, %._crit_edge859
  %indvars.iv1124 = phi i64 [ 0, %.preheader795.lr.ph ], [ %indvars.iv.next1125, %._crit_edge859 ]
  br i1 %333, label %.lr.ph858, label %._crit_edge859

.lr.ph858:                                        ; preds = %.preheader795
  %369 = mul nuw nsw i64 %indvars.iv1124, %334
  %370 = mul nsw i64 %indvars.iv1124, %335
  %invariant.gep1479 = getelementptr i32, ptr %18, i64 %369
  %invariant.gep1481 = getelementptr float, ptr %20, i64 %370
  br i1 %337, label %._crit_edge859.loopexit.unr-lcssa, label %.lr.ph858.new

.lr.ph858.new:                                    ; preds = %.lr.ph858, %.lr.ph858.new
  %indvars.iv1119 = phi i64 [ %indvars.iv.next1120.3, %.lr.ph858.new ], [ 0, %.lr.ph858 ]
  %niter2214 = phi i64 [ %niter2214.next.3, %.lr.ph858.new ], [ 0, %.lr.ph858 ]
  %gep1480 = getelementptr i32, ptr %invariant.gep1479, i64 %indvars.iv1119
  %371 = load i32, ptr %gep1480, align 4, !tbaa !51
  %gep1482 = getelementptr float, ptr %invariant.gep1481, i64 %indvars.iv1119
  %372 = load float, ptr %gep1482, align 4, !tbaa !25
  %373 = sext i32 %371 to i64
  %374 = getelementptr inbounds float, ptr %23, i64 %373
  store float %372, ptr %374, align 4, !tbaa !25
  %indvars.iv.next1120 = or disjoint i64 %indvars.iv1119, 1
  %gep1480.1 = getelementptr i32, ptr %invariant.gep1479, i64 %indvars.iv.next1120
  %375 = load i32, ptr %gep1480.1, align 4, !tbaa !51
  %gep1482.1 = getelementptr float, ptr %invariant.gep1481, i64 %indvars.iv.next1120
  %376 = load float, ptr %gep1482.1, align 4, !tbaa !25
  %377 = sext i32 %375 to i64
  %378 = getelementptr inbounds float, ptr %23, i64 %377
  store float %376, ptr %378, align 4, !tbaa !25
  %indvars.iv.next1120.1 = or disjoint i64 %indvars.iv1119, 2
  %gep1480.2 = getelementptr i32, ptr %invariant.gep1479, i64 %indvars.iv.next1120.1
  %379 = load i32, ptr %gep1480.2, align 4, !tbaa !51
  %gep1482.2 = getelementptr float, ptr %invariant.gep1481, i64 %indvars.iv.next1120.1
  %380 = load float, ptr %gep1482.2, align 4, !tbaa !25
  %381 = sext i32 %379 to i64
  %382 = getelementptr inbounds float, ptr %23, i64 %381
  store float %380, ptr %382, align 4, !tbaa !25
  %indvars.iv.next1120.2 = or disjoint i64 %indvars.iv1119, 3
  %gep1480.3 = getelementptr i32, ptr %invariant.gep1479, i64 %indvars.iv.next1120.2
  %383 = load i32, ptr %gep1480.3, align 4, !tbaa !51
  %gep1482.3 = getelementptr float, ptr %invariant.gep1481, i64 %indvars.iv.next1120.2
  %384 = load float, ptr %gep1482.3, align 4, !tbaa !25
  %385 = sext i32 %383 to i64
  %386 = getelementptr inbounds float, ptr %23, i64 %385
  store float %384, ptr %386, align 4, !tbaa !25
  %indvars.iv.next1120.3 = add nuw nsw i64 %indvars.iv1119, 4
  %niter2214.next.3 = add i64 %niter2214, 4
  %niter2214.ncmp.3 = icmp eq i64 %niter2214.next.3, %unroll_iter2213
  br i1 %niter2214.ncmp.3, label %._crit_edge859.loopexit.unr-lcssa, label %.lr.ph858.new, !llvm.loop !71

._crit_edge859.loopexit.unr-lcssa:                ; preds = %.lr.ph858.new, %.lr.ph858
  %indvars.iv1119.unr = phi i64 [ 0, %.lr.ph858 ], [ %indvars.iv.next1120.3, %.lr.ph858.new ]
  br i1 %lcmp.mod2212.not, label %._crit_edge859, label %.epil.preheader2210

.epil.preheader2210:                              ; preds = %._crit_edge859.loopexit.unr-lcssa, %.epil.preheader2210
  %indvars.iv1119.epil = phi i64 [ %indvars.iv.next1120.epil, %.epil.preheader2210 ], [ %indvars.iv1119.unr, %._crit_edge859.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader2210 ], [ 0, %._crit_edge859.loopexit.unr-lcssa ]
  %gep1480.epil = getelementptr i32, ptr %invariant.gep1479, i64 %indvars.iv1119.epil
  %387 = load i32, ptr %gep1480.epil, align 4, !tbaa !51
  %gep1482.epil = getelementptr float, ptr %invariant.gep1481, i64 %indvars.iv1119.epil
  %388 = load float, ptr %gep1482.epil, align 4, !tbaa !25
  %389 = sext i32 %387 to i64
  %390 = getelementptr inbounds float, ptr %23, i64 %389
  store float %388, ptr %390, align 4, !tbaa !25
  %indvars.iv.next1120.epil = add nuw nsw i64 %indvars.iv1119.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter2211
  br i1 %epil.iter.cmp.not, label %._crit_edge859, label %.epil.preheader2210, !llvm.loop !72

._crit_edge859:                                   ; preds = %._crit_edge859.loopexit.unr-lcssa, %.epil.preheader2210, %.preheader795
  %indvars.iv.next1125 = add nuw nsw i64 %indvars.iv1124, 1
  %exitcond1128.not = icmp eq i64 %indvars.iv.next1125, %wide.trip.count1127
  br i1 %exitcond1128.not, label %.loopexit, label %.preheader795, !llvm.loop !73

391:                                              ; preds = %27
  br i1 %11, label %392, label %755

392:                                              ; preds = %391
  %393 = zext i16 %13 to i32
  %394 = and i32 %393, 32
  %.not715 = icmp eq i32 %394, 0
  br i1 %.not, label %566, label %395

395:                                              ; preds = %392
  br i1 %17, label %396, label %481

396:                                              ; preds = %395
  br i1 %.not715, label %425, label %.preheader751

.preheader751:                                    ; preds = %396
  %397 = icmp sgt i32 %.0, 0
  br i1 %397, label %.lr.ph962, label %.loopexit

.lr.ph962:                                        ; preds = %.preheader751
  %398 = icmp sgt i32 %.0657, 0
  %399 = sext i32 %8 to i64
  %wide.trip.count1324 = zext nneg i32 %.0 to i64
  %wide.trip.count1319 = zext i32 %.0657 to i64
  %400 = shl nsw i64 %399, 1
  %min.iters.check2045 = icmp ult i32 %.0657, 16
  %n.vec2048 = and i64 %wide.trip.count1319, 2147483632
  %cmp.n2055 = icmp eq i64 %n.vec2048, %wide.trip.count1319
  %xtraiter2287 = and i64 %wide.trip.count1319, 3
  %lcmp.mod2288.not = icmp eq i64 %xtraiter2287, 0
  br label %401

401:                                              ; preds = %.lr.ph962, %._crit_edge960
  %indvars.iv1321 = phi i64 [ 0, %.lr.ph962 ], [ %indvars.iv.next1322, %._crit_edge960 ]
  %402 = mul i64 %400, %indvars.iv1321
  br i1 %398, label %.lr.ph959, label %._crit_edge960

.lr.ph959:                                        ; preds = %401
  %403 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1321
  %404 = load i64, ptr %403, align 8, !tbaa !23
  %405 = trunc i64 %404 to i32
  %406 = mul nsw i32 %6, %405
  %407 = mul nsw i64 %indvars.iv1321, %399
  %408 = sext i32 %406 to i64
  %invariant.gep1555 = getelementptr i16, ptr %20, i64 %408
  %invariant.gep1557 = getelementptr i16, ptr %23, i64 %407
  br i1 %min.iters.check2045, label %scalar.ph2044.preheader, label %vector.memcheck2041

vector.memcheck2041:                              ; preds = %.lr.ph959
  %409 = shl nsw i64 %408, 1
  %410 = add i64 %402, %24
  %411 = add i64 %409, %21
  %412 = sub i64 %410, %411
  %diff.check2042 = icmp ult i64 %412, 32
  br i1 %diff.check2042, label %scalar.ph2044.preheader, label %vector.body2050

vector.body2050:                                  ; preds = %vector.memcheck2041, %vector.body2050
  %index2051 = phi i64 [ %index.next2054, %vector.body2050 ], [ 0, %vector.memcheck2041 ]
  %413 = getelementptr i16, ptr %invariant.gep1555, i64 %index2051
  %414 = getelementptr i8, ptr %413, i64 16
  %wide.load2052 = load <8 x i16>, ptr %413, align 2, !tbaa !74
  %wide.load2053 = load <8 x i16>, ptr %414, align 2, !tbaa !74
  %415 = getelementptr i16, ptr %invariant.gep1557, i64 %index2051
  %416 = getelementptr i8, ptr %415, i64 16
  store <8 x i16> %wide.load2052, ptr %415, align 2, !tbaa !74
  store <8 x i16> %wide.load2053, ptr %416, align 2, !tbaa !74
  %index.next2054 = add nuw i64 %index2051, 16
  %417 = icmp eq i64 %index.next2054, %n.vec2048
  br i1 %417, label %middle.block2043, label %vector.body2050, !llvm.loop !75

middle.block2043:                                 ; preds = %vector.body2050
  br i1 %cmp.n2055, label %._crit_edge960, label %scalar.ph2044.preheader

scalar.ph2044.preheader:                          ; preds = %middle.block2043, %vector.memcheck2041, %.lr.ph959
  %indvars.iv1316.ph = phi i64 [ 0, %vector.memcheck2041 ], [ 0, %.lr.ph959 ], [ %n.vec2048, %middle.block2043 ]
  br i1 %lcmp.mod2288.not, label %scalar.ph2044.prol.loopexit, label %scalar.ph2044.prol

scalar.ph2044.prol:                               ; preds = %scalar.ph2044.preheader, %scalar.ph2044.prol
  %indvars.iv1316.prol = phi i64 [ %indvars.iv.next1317.prol, %scalar.ph2044.prol ], [ %indvars.iv1316.ph, %scalar.ph2044.preheader ]
  %prol.iter2289 = phi i64 [ %prol.iter2289.next, %scalar.ph2044.prol ], [ 0, %scalar.ph2044.preheader ]
  %gep1556.prol = getelementptr i16, ptr %invariant.gep1555, i64 %indvars.iv1316.prol
  %418 = load i16, ptr %gep1556.prol, align 2, !tbaa !74
  %gep1558.prol = getelementptr i16, ptr %invariant.gep1557, i64 %indvars.iv1316.prol
  store i16 %418, ptr %gep1558.prol, align 2, !tbaa !74
  %indvars.iv.next1317.prol = add nuw nsw i64 %indvars.iv1316.prol, 1
  %prol.iter2289.next = add i64 %prol.iter2289, 1
  %prol.iter2289.cmp.not = icmp eq i64 %prol.iter2289.next, %xtraiter2287
  br i1 %prol.iter2289.cmp.not, label %scalar.ph2044.prol.loopexit, label %scalar.ph2044.prol, !llvm.loop !76

scalar.ph2044.prol.loopexit:                      ; preds = %scalar.ph2044.prol, %scalar.ph2044.preheader
  %indvars.iv1316.unr = phi i64 [ %indvars.iv1316.ph, %scalar.ph2044.preheader ], [ %indvars.iv.next1317.prol, %scalar.ph2044.prol ]
  %419 = sub nsw i64 %indvars.iv1316.ph, %wide.trip.count1319
  %420 = icmp ugt i64 %419, -4
  br i1 %420, label %._crit_edge960, label %scalar.ph2044

scalar.ph2044:                                    ; preds = %scalar.ph2044.prol.loopexit, %scalar.ph2044
  %indvars.iv1316 = phi i64 [ %indvars.iv.next1317.3, %scalar.ph2044 ], [ %indvars.iv1316.unr, %scalar.ph2044.prol.loopexit ]
  %gep1556 = getelementptr i16, ptr %invariant.gep1555, i64 %indvars.iv1316
  %421 = load i16, ptr %gep1556, align 2, !tbaa !74
  %gep1558 = getelementptr i16, ptr %invariant.gep1557, i64 %indvars.iv1316
  store i16 %421, ptr %gep1558, align 2, !tbaa !74
  %indvars.iv.next1317 = add nuw nsw i64 %indvars.iv1316, 1
  %gep1556.1 = getelementptr i16, ptr %invariant.gep1555, i64 %indvars.iv.next1317
  %422 = load i16, ptr %gep1556.1, align 2, !tbaa !74
  %gep1558.1 = getelementptr i16, ptr %invariant.gep1557, i64 %indvars.iv.next1317
  store i16 %422, ptr %gep1558.1, align 2, !tbaa !74
  %indvars.iv.next1317.1 = add nuw nsw i64 %indvars.iv1316, 2
  %gep1556.2 = getelementptr i16, ptr %invariant.gep1555, i64 %indvars.iv.next1317.1
  %423 = load i16, ptr %gep1556.2, align 2, !tbaa !74
  %gep1558.2 = getelementptr i16, ptr %invariant.gep1557, i64 %indvars.iv.next1317.1
  store i16 %423, ptr %gep1558.2, align 2, !tbaa !74
  %indvars.iv.next1317.2 = add nuw nsw i64 %indvars.iv1316, 3
  %gep1556.3 = getelementptr i16, ptr %invariant.gep1555, i64 %indvars.iv.next1317.2
  %424 = load i16, ptr %gep1556.3, align 2, !tbaa !74
  %gep1558.3 = getelementptr i16, ptr %invariant.gep1557, i64 %indvars.iv.next1317.2
  store i16 %424, ptr %gep1558.3, align 2, !tbaa !74
  %indvars.iv.next1317.3 = add nuw nsw i64 %indvars.iv1316, 4
  %exitcond1320.not.3 = icmp eq i64 %indvars.iv.next1317.3, %wide.trip.count1319
  br i1 %exitcond1320.not.3, label %._crit_edge960, label %scalar.ph2044, !llvm.loop !77

._crit_edge960:                                   ; preds = %scalar.ph2044.prol.loopexit, %scalar.ph2044, %middle.block2043, %401
  %indvars.iv.next1322 = add nuw nsw i64 %indvars.iv1321, 1
  %exitcond1325.not = icmp eq i64 %indvars.iv.next1322, %wide.trip.count1324
  br i1 %exitcond1325.not, label %.loopexit, label %401, !llvm.loop !78

425:                                              ; preds = %396
  %426 = and i32 %393, 16
  %.not721 = icmp eq i32 %426, 0
  br i1 %.not721, label %.preheader747, label %.preheader749

.preheader749:                                    ; preds = %425
  %427 = icmp sgt i32 %.0657, 0
  br i1 %427, label %.lr.ph968, label %.loopexit

.lr.ph968:                                        ; preds = %.preheader749
  %428 = icmp sgt i32 %.0, 0
  %429 = sext i32 %6 to i64
  %430 = sext i32 %8 to i64
  %wide.trip.count1334 = zext nneg i32 %.0657 to i64
  %wide.trip.count1329 = zext i32 %.0 to i64
  %min.iters.check2063 = icmp ult i32 %.0, 16
  %ident.check2057 = icmp ne i32 %8, 1
  %ident.check2058 = icmp ne i32 %6, 1
  %431 = or i1 %ident.check2057, %ident.check2058
  %n.vec2066 = and i64 %wide.trip.count1329, 2147483632
  %cmp.n2073 = icmp eq i64 %n.vec2066, %wide.trip.count1329
  %xtraiter2290 = and i64 %wide.trip.count1329, 3
  %lcmp.mod2291.not = icmp eq i64 %xtraiter2290, 0
  br label %437

.preheader747:                                    ; preds = %425
  %432 = icmp sgt i32 %.0, 0
  br i1 %432, label %.preheader746.lr.ph, label %.loopexit

.preheader746.lr.ph:                              ; preds = %.preheader747
  %433 = icmp sgt i32 %.0657, 0
  %434 = sext i32 %.0657 to i64
  %435 = sext i32 %8 to i64
  %wide.trip.count1344 = zext nneg i32 %.0 to i64
  %wide.trip.count1339 = zext i32 %.0657 to i64
  %xtraiter2294 = and i64 %wide.trip.count1339, 1
  %436 = icmp eq i32 %.0657, 1
  %unroll_iter2297 = and i64 %wide.trip.count1339, 2147483646
  %lcmp.mod2296.not = icmp eq i64 %xtraiter2294, 0
  br label %.preheader746

437:                                              ; preds = %.lr.ph968, %._crit_edge966
  %indvars.iv1331 = phi i64 [ 0, %.lr.ph968 ], [ %indvars.iv.next1332, %._crit_edge966 ]
  %438 = shl nuw nsw i64 %indvars.iv1331, 1
  %439 = add i64 %438, %24
  br i1 %428, label %.lr.ph965.preheader, label %._crit_edge966

.lr.ph965.preheader:                              ; preds = %437
  %440 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1331
  %441 = load i64, ptr %440, align 8, !tbaa !23
  %sext1413 = shl i64 %441, 32
  %442 = ashr exact i64 %sext1413, 31
  %invariant.gep1559 = getelementptr i8, ptr %20, i64 %442
  %invariant.gep1561 = getelementptr i16, ptr %23, i64 %indvars.iv1331
  %brmerge2325 = select i1 %min.iters.check2063, i1 true, i1 %431
  br i1 %brmerge2325, label %.lr.ph965.preheader2153, label %vector.memcheck2059

vector.memcheck2059:                              ; preds = %.lr.ph965.preheader
  %443 = add i64 %442, %21
  %444 = sub i64 %439, %443
  %diff.check2060 = icmp ult i64 %444, 32
  br i1 %diff.check2060, label %.lr.ph965.preheader2153, label %vector.body2068

vector.body2068:                                  ; preds = %vector.memcheck2059, %vector.body2068
  %index2069 = phi i64 [ %index.next2072, %vector.body2068 ], [ 0, %vector.memcheck2059 ]
  %445 = getelementptr i16, ptr %invariant.gep1559, i64 %index2069
  %446 = getelementptr i8, ptr %445, i64 16
  %wide.load2070 = load <8 x i16>, ptr %445, align 2, !tbaa !74
  %wide.load2071 = load <8 x i16>, ptr %446, align 2, !tbaa !74
  %447 = getelementptr i16, ptr %invariant.gep1561, i64 %index2069
  %448 = getelementptr i8, ptr %447, i64 16
  store <8 x i16> %wide.load2070, ptr %447, align 2, !tbaa !74
  store <8 x i16> %wide.load2071, ptr %448, align 2, !tbaa !74
  %index.next2072 = add nuw i64 %index2069, 16
  %449 = icmp eq i64 %index.next2072, %n.vec2066
  br i1 %449, label %middle.block2061, label %vector.body2068, !llvm.loop !79

middle.block2061:                                 ; preds = %vector.body2068
  br i1 %cmp.n2073, label %._crit_edge966, label %.lr.ph965.preheader2153

.lr.ph965.preheader2153:                          ; preds = %.lr.ph965.preheader, %middle.block2061, %vector.memcheck2059
  %indvars.iv1326.ph = phi i64 [ 0, %vector.memcheck2059 ], [ 0, %.lr.ph965.preheader ], [ %n.vec2066, %middle.block2061 ]
  br i1 %lcmp.mod2291.not, label %.lr.ph965.prol.loopexit, label %.lr.ph965.prol

.lr.ph965.prol:                                   ; preds = %.lr.ph965.preheader2153, %.lr.ph965.prol
  %indvars.iv1326.prol = phi i64 [ %indvars.iv.next1327.prol, %.lr.ph965.prol ], [ %indvars.iv1326.ph, %.lr.ph965.preheader2153 ]
  %prol.iter2292 = phi i64 [ %prol.iter2292.next, %.lr.ph965.prol ], [ 0, %.lr.ph965.preheader2153 ]
  %450 = mul nsw i64 %indvars.iv1326.prol, %429
  %gep1560.prol = getelementptr i16, ptr %invariant.gep1559, i64 %450
  %451 = load i16, ptr %gep1560.prol, align 2, !tbaa !74
  %452 = mul nsw i64 %indvars.iv1326.prol, %430
  %gep1562.prol = getelementptr i16, ptr %invariant.gep1561, i64 %452
  store i16 %451, ptr %gep1562.prol, align 2, !tbaa !74
  %indvars.iv.next1327.prol = add nuw nsw i64 %indvars.iv1326.prol, 1
  %prol.iter2292.next = add i64 %prol.iter2292, 1
  %prol.iter2292.cmp.not = icmp eq i64 %prol.iter2292.next, %xtraiter2290
  br i1 %prol.iter2292.cmp.not, label %.lr.ph965.prol.loopexit, label %.lr.ph965.prol, !llvm.loop !80

.lr.ph965.prol.loopexit:                          ; preds = %.lr.ph965.prol, %.lr.ph965.preheader2153
  %indvars.iv1326.unr = phi i64 [ %indvars.iv1326.ph, %.lr.ph965.preheader2153 ], [ %indvars.iv.next1327.prol, %.lr.ph965.prol ]
  %453 = sub nsw i64 %indvars.iv1326.ph, %wide.trip.count1329
  %454 = icmp ugt i64 %453, -4
  br i1 %454, label %._crit_edge966, label %.lr.ph965

.lr.ph965:                                        ; preds = %.lr.ph965.prol.loopexit, %.lr.ph965
  %indvars.iv1326 = phi i64 [ %indvars.iv.next1327.3, %.lr.ph965 ], [ %indvars.iv1326.unr, %.lr.ph965.prol.loopexit ]
  %455 = mul nsw i64 %indvars.iv1326, %429
  %gep1560 = getelementptr i16, ptr %invariant.gep1559, i64 %455
  %456 = load i16, ptr %gep1560, align 2, !tbaa !74
  %457 = mul nsw i64 %indvars.iv1326, %430
  %gep1562 = getelementptr i16, ptr %invariant.gep1561, i64 %457
  store i16 %456, ptr %gep1562, align 2, !tbaa !74
  %indvars.iv.next1327 = add nuw nsw i64 %indvars.iv1326, 1
  %458 = mul nsw i64 %indvars.iv.next1327, %429
  %gep1560.1 = getelementptr i16, ptr %invariant.gep1559, i64 %458
  %459 = load i16, ptr %gep1560.1, align 2, !tbaa !74
  %460 = mul nsw i64 %indvars.iv.next1327, %430
  %gep1562.1 = getelementptr i16, ptr %invariant.gep1561, i64 %460
  store i16 %459, ptr %gep1562.1, align 2, !tbaa !74
  %indvars.iv.next1327.1 = add nuw nsw i64 %indvars.iv1326, 2
  %461 = mul nsw i64 %indvars.iv.next1327.1, %429
  %gep1560.2 = getelementptr i16, ptr %invariant.gep1559, i64 %461
  %462 = load i16, ptr %gep1560.2, align 2, !tbaa !74
  %463 = mul nsw i64 %indvars.iv.next1327.1, %430
  %gep1562.2 = getelementptr i16, ptr %invariant.gep1561, i64 %463
  store i16 %462, ptr %gep1562.2, align 2, !tbaa !74
  %indvars.iv.next1327.2 = add nuw nsw i64 %indvars.iv1326, 3
  %464 = mul nsw i64 %indvars.iv.next1327.2, %429
  %gep1560.3 = getelementptr i16, ptr %invariant.gep1559, i64 %464
  %465 = load i16, ptr %gep1560.3, align 2, !tbaa !74
  %466 = mul nsw i64 %indvars.iv.next1327.2, %430
  %gep1562.3 = getelementptr i16, ptr %invariant.gep1561, i64 %466
  store i16 %465, ptr %gep1562.3, align 2, !tbaa !74
  %indvars.iv.next1327.3 = add nuw nsw i64 %indvars.iv1326, 4
  %exitcond1330.not.3 = icmp eq i64 %indvars.iv.next1327.3, %wide.trip.count1329
  br i1 %exitcond1330.not.3, label %._crit_edge966, label %.lr.ph965, !llvm.loop !81

._crit_edge966:                                   ; preds = %.lr.ph965.prol.loopexit, %.lr.ph965, %middle.block2061, %437
  %indvars.iv.next1332 = add nuw nsw i64 %indvars.iv1331, 1
  %exitcond1335.not = icmp eq i64 %indvars.iv.next1332, %wide.trip.count1334
  br i1 %exitcond1335.not, label %.loopexit, label %437, !llvm.loop !82

.preheader746:                                    ; preds = %.preheader746.lr.ph, %._crit_edge971
  %indvars.iv1341 = phi i64 [ 0, %.preheader746.lr.ph ], [ %indvars.iv.next1342, %._crit_edge971 ]
  br i1 %433, label %.lr.ph970, label %._crit_edge971

.lr.ph970:                                        ; preds = %.preheader746
  %467 = mul nuw nsw i64 %indvars.iv1341, %434
  %468 = mul nsw i64 %indvars.iv1341, %435
  %invariant.gep1563 = getelementptr i64, ptr %18, i64 %467
  %invariant.gep1565 = getelementptr i16, ptr %23, i64 %468
  br i1 %436, label %._crit_edge971.loopexit.unr-lcssa, label %.lr.ph970.new

.lr.ph970.new:                                    ; preds = %.lr.ph970, %.lr.ph970.new
  %indvars.iv1336 = phi i64 [ %indvars.iv.next1337.1, %.lr.ph970.new ], [ 0, %.lr.ph970 ]
  %niter2298 = phi i64 [ %niter2298.next.1, %.lr.ph970.new ], [ 0, %.lr.ph970 ]
  %gep1564 = getelementptr i64, ptr %invariant.gep1563, i64 %indvars.iv1336
  %469 = load i64, ptr %gep1564, align 8, !tbaa !23
  %sext722 = shl i64 %469, 32
  %470 = ashr exact i64 %sext722, 31
  %471 = getelementptr inbounds i8, ptr %20, i64 %470
  %472 = load i16, ptr %471, align 2, !tbaa !74
  %gep1566 = getelementptr i16, ptr %invariant.gep1565, i64 %indvars.iv1336
  store i16 %472, ptr %gep1566, align 2, !tbaa !74
  %indvars.iv.next1337 = or disjoint i64 %indvars.iv1336, 1
  %gep1564.1 = getelementptr i64, ptr %invariant.gep1563, i64 %indvars.iv.next1337
  %473 = load i64, ptr %gep1564.1, align 8, !tbaa !23
  %sext722.1 = shl i64 %473, 32
  %474 = ashr exact i64 %sext722.1, 31
  %475 = getelementptr inbounds i8, ptr %20, i64 %474
  %476 = load i16, ptr %475, align 2, !tbaa !74
  %gep1566.1 = getelementptr i16, ptr %invariant.gep1565, i64 %indvars.iv.next1337
  store i16 %476, ptr %gep1566.1, align 2, !tbaa !74
  %indvars.iv.next1337.1 = add nuw nsw i64 %indvars.iv1336, 2
  %niter2298.next.1 = add i64 %niter2298, 2
  %niter2298.ncmp.1 = icmp eq i64 %niter2298.next.1, %unroll_iter2297
  br i1 %niter2298.ncmp.1, label %._crit_edge971.loopexit.unr-lcssa, label %.lr.ph970.new, !llvm.loop !83

._crit_edge971.loopexit.unr-lcssa:                ; preds = %.lr.ph970.new, %.lr.ph970
  %indvars.iv1336.unr = phi i64 [ 0, %.lr.ph970 ], [ %indvars.iv.next1337.1, %.lr.ph970.new ]
  br i1 %lcmp.mod2296.not, label %._crit_edge971, label %._crit_edge971.loopexit.epilog-lcssa

._crit_edge971.loopexit.epilog-lcssa:             ; preds = %._crit_edge971.loopexit.unr-lcssa
  %gep1564.epil = getelementptr i64, ptr %invariant.gep1563, i64 %indvars.iv1336.unr
  %477 = load i64, ptr %gep1564.epil, align 8, !tbaa !23
  %sext722.epil = shl i64 %477, 32
  %478 = ashr exact i64 %sext722.epil, 31
  %479 = getelementptr inbounds i8, ptr %20, i64 %478
  %480 = load i16, ptr %479, align 2, !tbaa !74
  %gep1566.epil = getelementptr i16, ptr %invariant.gep1565, i64 %indvars.iv1336.unr
  store i16 %480, ptr %gep1566.epil, align 2, !tbaa !74
  br label %._crit_edge971

._crit_edge971:                                   ; preds = %._crit_edge971.loopexit.epilog-lcssa, %._crit_edge971.loopexit.unr-lcssa, %.preheader746
  %indvars.iv.next1342 = add nuw nsw i64 %indvars.iv1341, 1
  %exitcond1345.not = icmp eq i64 %indvars.iv.next1342, %wide.trip.count1344
  br i1 %exitcond1345.not, label %.loopexit, label %.preheader746, !llvm.loop !84

481:                                              ; preds = %395
  br i1 %.not715, label %510, label %.preheader758

.preheader758:                                    ; preds = %481
  %482 = icmp sgt i32 %.0658, 0
  br i1 %482, label %.lr.ph946, label %.loopexit

.lr.ph946:                                        ; preds = %.preheader758
  %483 = icmp sgt i32 %.0657, 0
  %484 = sext i32 %6 to i64
  %wide.trip.count1293 = zext nneg i32 %.0658 to i64
  %wide.trip.count1288 = zext i32 %.0657 to i64
  %485 = sub i64 %24, %21
  %486 = mul nsw i64 %484, -2
  %min.iters.check2012 = icmp ult i32 %.0657, 16
  %n.vec2015 = and i64 %wide.trip.count1288, 2147483632
  %cmp.n2022 = icmp eq i64 %n.vec2015, %wide.trip.count1288
  %xtraiter2275 = and i64 %wide.trip.count1288, 3
  %lcmp.mod2276.not = icmp eq i64 %xtraiter2275, 0
  br label %487

487:                                              ; preds = %.lr.ph946, %._crit_edge944
  %indvars.iv1290 = phi i64 [ 0, %.lr.ph946 ], [ %indvars.iv.next1291, %._crit_edge944 ]
  %488 = mul i64 %486, %indvars.iv1290
  %489 = add i64 %485, %488
  br i1 %483, label %.lr.ph943, label %._crit_edge944

.lr.ph943:                                        ; preds = %487
  %490 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1290
  %491 = load i64, ptr %490, align 8, !tbaa !23
  %492 = trunc i64 %491 to i32
  %493 = mul nsw i64 %indvars.iv1290, %484
  %494 = mul nsw i32 %8, %492
  %495 = sext i32 %494 to i64
  %invariant.gep1543 = getelementptr i16, ptr %20, i64 %493
  %invariant.gep1545 = getelementptr i16, ptr %23, i64 %495
  br i1 %min.iters.check2012, label %scalar.ph2011.preheader, label %vector.memcheck2008

vector.memcheck2008:                              ; preds = %.lr.ph943
  %496 = shl nsw i64 %495, 1
  %497 = add i64 %489, %496
  %diff.check2009 = icmp ult i64 %497, 32
  br i1 %diff.check2009, label %scalar.ph2011.preheader, label %vector.body2017

vector.body2017:                                  ; preds = %vector.memcheck2008, %vector.body2017
  %index2018 = phi i64 [ %index.next2021, %vector.body2017 ], [ 0, %vector.memcheck2008 ]
  %498 = getelementptr i16, ptr %invariant.gep1543, i64 %index2018
  %499 = getelementptr i8, ptr %498, i64 16
  %wide.load2019 = load <8 x i16>, ptr %498, align 2, !tbaa !74
  %wide.load2020 = load <8 x i16>, ptr %499, align 2, !tbaa !74
  %500 = getelementptr i16, ptr %invariant.gep1545, i64 %index2018
  %501 = getelementptr i8, ptr %500, i64 16
  store <8 x i16> %wide.load2019, ptr %500, align 2, !tbaa !74
  store <8 x i16> %wide.load2020, ptr %501, align 2, !tbaa !74
  %index.next2021 = add nuw i64 %index2018, 16
  %502 = icmp eq i64 %index.next2021, %n.vec2015
  br i1 %502, label %middle.block2010, label %vector.body2017, !llvm.loop !85

middle.block2010:                                 ; preds = %vector.body2017
  br i1 %cmp.n2022, label %._crit_edge944, label %scalar.ph2011.preheader

scalar.ph2011.preheader:                          ; preds = %middle.block2010, %vector.memcheck2008, %.lr.ph943
  %indvars.iv1285.ph = phi i64 [ 0, %vector.memcheck2008 ], [ 0, %.lr.ph943 ], [ %n.vec2015, %middle.block2010 ]
  br i1 %lcmp.mod2276.not, label %scalar.ph2011.prol.loopexit, label %scalar.ph2011.prol

scalar.ph2011.prol:                               ; preds = %scalar.ph2011.preheader, %scalar.ph2011.prol
  %indvars.iv1285.prol = phi i64 [ %indvars.iv.next1286.prol, %scalar.ph2011.prol ], [ %indvars.iv1285.ph, %scalar.ph2011.preheader ]
  %prol.iter2277 = phi i64 [ %prol.iter2277.next, %scalar.ph2011.prol ], [ 0, %scalar.ph2011.preheader ]
  %gep1544.prol = getelementptr i16, ptr %invariant.gep1543, i64 %indvars.iv1285.prol
  %503 = load i16, ptr %gep1544.prol, align 2, !tbaa !74
  %gep1546.prol = getelementptr i16, ptr %invariant.gep1545, i64 %indvars.iv1285.prol
  store i16 %503, ptr %gep1546.prol, align 2, !tbaa !74
  %indvars.iv.next1286.prol = add nuw nsw i64 %indvars.iv1285.prol, 1
  %prol.iter2277.next = add i64 %prol.iter2277, 1
  %prol.iter2277.cmp.not = icmp eq i64 %prol.iter2277.next, %xtraiter2275
  br i1 %prol.iter2277.cmp.not, label %scalar.ph2011.prol.loopexit, label %scalar.ph2011.prol, !llvm.loop !86

scalar.ph2011.prol.loopexit:                      ; preds = %scalar.ph2011.prol, %scalar.ph2011.preheader
  %indvars.iv1285.unr = phi i64 [ %indvars.iv1285.ph, %scalar.ph2011.preheader ], [ %indvars.iv.next1286.prol, %scalar.ph2011.prol ]
  %504 = sub nsw i64 %indvars.iv1285.ph, %wide.trip.count1288
  %505 = icmp ugt i64 %504, -4
  br i1 %505, label %._crit_edge944, label %scalar.ph2011

scalar.ph2011:                                    ; preds = %scalar.ph2011.prol.loopexit, %scalar.ph2011
  %indvars.iv1285 = phi i64 [ %indvars.iv.next1286.3, %scalar.ph2011 ], [ %indvars.iv1285.unr, %scalar.ph2011.prol.loopexit ]
  %gep1544 = getelementptr i16, ptr %invariant.gep1543, i64 %indvars.iv1285
  %506 = load i16, ptr %gep1544, align 2, !tbaa !74
  %gep1546 = getelementptr i16, ptr %invariant.gep1545, i64 %indvars.iv1285
  store i16 %506, ptr %gep1546, align 2, !tbaa !74
  %indvars.iv.next1286 = add nuw nsw i64 %indvars.iv1285, 1
  %gep1544.1 = getelementptr i16, ptr %invariant.gep1543, i64 %indvars.iv.next1286
  %507 = load i16, ptr %gep1544.1, align 2, !tbaa !74
  %gep1546.1 = getelementptr i16, ptr %invariant.gep1545, i64 %indvars.iv.next1286
  store i16 %507, ptr %gep1546.1, align 2, !tbaa !74
  %indvars.iv.next1286.1 = add nuw nsw i64 %indvars.iv1285, 2
  %gep1544.2 = getelementptr i16, ptr %invariant.gep1543, i64 %indvars.iv.next1286.1
  %508 = load i16, ptr %gep1544.2, align 2, !tbaa !74
  %gep1546.2 = getelementptr i16, ptr %invariant.gep1545, i64 %indvars.iv.next1286.1
  store i16 %508, ptr %gep1546.2, align 2, !tbaa !74
  %indvars.iv.next1286.2 = add nuw nsw i64 %indvars.iv1285, 3
  %gep1544.3 = getelementptr i16, ptr %invariant.gep1543, i64 %indvars.iv.next1286.2
  %509 = load i16, ptr %gep1544.3, align 2, !tbaa !74
  %gep1546.3 = getelementptr i16, ptr %invariant.gep1545, i64 %indvars.iv.next1286.2
  store i16 %509, ptr %gep1546.3, align 2, !tbaa !74
  %indvars.iv.next1286.3 = add nuw nsw i64 %indvars.iv1285, 4
  %exitcond1289.not.3 = icmp eq i64 %indvars.iv.next1286.3, %wide.trip.count1288
  br i1 %exitcond1289.not.3, label %._crit_edge944, label %scalar.ph2011, !llvm.loop !87

._crit_edge944:                                   ; preds = %scalar.ph2011.prol.loopexit, %scalar.ph2011, %middle.block2010, %487
  %indvars.iv.next1291 = add nuw nsw i64 %indvars.iv1290, 1
  %exitcond1294.not = icmp eq i64 %indvars.iv.next1291, %wide.trip.count1293
  br i1 %exitcond1294.not, label %.loopexit, label %487, !llvm.loop !88

510:                                              ; preds = %481
  %511 = and i32 %393, 16
  %.not718 = icmp eq i32 %511, 0
  br i1 %.not718, label %.preheader754, label %.preheader756

.preheader756:                                    ; preds = %510
  %512 = icmp sgt i32 %.0659, 0
  br i1 %512, label %.lr.ph952, label %.loopexit

.lr.ph952:                                        ; preds = %.preheader756
  %513 = icmp sgt i32 %.0658, 0
  %514 = sext i32 %6 to i64
  %515 = sext i32 %8 to i64
  %wide.trip.count1303 = zext nneg i32 %.0659 to i64
  %wide.trip.count1298 = zext i32 %.0658 to i64
  %min.iters.check2030 = icmp ult i32 %.0658, 16
  %ident.check2024 = icmp ne i32 %8, 1
  %ident.check2025 = icmp ne i32 %6, 1
  %516 = or i1 %ident.check2024, %ident.check2025
  %n.vec2033 = and i64 %wide.trip.count1298, 2147483632
  %cmp.n2040 = icmp eq i64 %n.vec2033, %wide.trip.count1298
  %xtraiter2278 = and i64 %wide.trip.count1298, 3
  %lcmp.mod2279.not = icmp eq i64 %xtraiter2278, 0
  br label %522

.preheader754:                                    ; preds = %510
  %517 = icmp sgt i32 %.0658, 0
  br i1 %517, label %.preheader753.lr.ph, label %.loopexit

.preheader753.lr.ph:                              ; preds = %.preheader754
  %518 = icmp sgt i32 %.0659, 0
  %519 = sext i32 %.0659 to i64
  %520 = sext i32 %6 to i64
  %wide.trip.count1313 = zext nneg i32 %.0658 to i64
  %wide.trip.count1308 = zext i32 %.0659 to i64
  %xtraiter2282 = and i64 %wide.trip.count1308, 1
  %521 = icmp eq i32 %.0659, 1
  %unroll_iter2285 = and i64 %wide.trip.count1308, 2147483646
  %lcmp.mod2284.not = icmp eq i64 %xtraiter2282, 0
  br label %.preheader753

522:                                              ; preds = %.lr.ph952, %._crit_edge950
  %indvars.iv1300 = phi i64 [ 0, %.lr.ph952 ], [ %indvars.iv.next1301, %._crit_edge950 ]
  %523 = shl nuw i64 %indvars.iv1300, 1
  %524 = add i64 %523, %21
  %525 = sub i64 %24, %524
  br i1 %513, label %.lr.ph949.preheader, label %._crit_edge950

.lr.ph949.preheader:                              ; preds = %522
  %526 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1300
  %527 = load i64, ptr %526, align 8, !tbaa !23
  %sext1412 = shl i64 %527, 32
  %invariant.gep1547 = getelementptr i16, ptr %20, i64 %indvars.iv1300
  %528 = ashr exact i64 %sext1412, 31
  %invariant.gep1549 = getelementptr i8, ptr %23, i64 %528
  br i1 %min.iters.check2030, label %.lr.ph949.preheader2157, label %vector.scevcheck2023

vector.scevcheck2023:                             ; preds = %.lr.ph949.preheader
  %529 = add i64 %525, %528
  %diff.check2027 = icmp ult i64 %529, 32
  %or.cond2140 = select i1 %516, i1 true, i1 %diff.check2027
  br i1 %or.cond2140, label %.lr.ph949.preheader2157, label %vector.body2035

vector.body2035:                                  ; preds = %vector.scevcheck2023, %vector.body2035
  %index2036 = phi i64 [ %index.next2039, %vector.body2035 ], [ 0, %vector.scevcheck2023 ]
  %530 = getelementptr i16, ptr %invariant.gep1547, i64 %index2036
  %531 = getelementptr i8, ptr %530, i64 16
  %wide.load2037 = load <8 x i16>, ptr %530, align 2, !tbaa !74
  %wide.load2038 = load <8 x i16>, ptr %531, align 2, !tbaa !74
  %532 = getelementptr i16, ptr %invariant.gep1549, i64 %index2036
  %533 = getelementptr i8, ptr %532, i64 16
  store <8 x i16> %wide.load2037, ptr %532, align 2, !tbaa !74
  store <8 x i16> %wide.load2038, ptr %533, align 2, !tbaa !74
  %index.next2039 = add nuw i64 %index2036, 16
  %534 = icmp eq i64 %index.next2039, %n.vec2033
  br i1 %534, label %middle.block2028, label %vector.body2035, !llvm.loop !89

middle.block2028:                                 ; preds = %vector.body2035
  br i1 %cmp.n2040, label %._crit_edge950, label %.lr.ph949.preheader2157

.lr.ph949.preheader2157:                          ; preds = %middle.block2028, %vector.scevcheck2023, %.lr.ph949.preheader
  %indvars.iv1295.ph = phi i64 [ 0, %vector.scevcheck2023 ], [ 0, %.lr.ph949.preheader ], [ %n.vec2033, %middle.block2028 ]
  br i1 %lcmp.mod2279.not, label %.lr.ph949.prol.loopexit, label %.lr.ph949.prol

.lr.ph949.prol:                                   ; preds = %.lr.ph949.preheader2157, %.lr.ph949.prol
  %indvars.iv1295.prol = phi i64 [ %indvars.iv.next1296.prol, %.lr.ph949.prol ], [ %indvars.iv1295.ph, %.lr.ph949.preheader2157 ]
  %prol.iter2280 = phi i64 [ %prol.iter2280.next, %.lr.ph949.prol ], [ 0, %.lr.ph949.preheader2157 ]
  %535 = mul nsw i64 %indvars.iv1295.prol, %514
  %gep1548.prol = getelementptr i16, ptr %invariant.gep1547, i64 %535
  %536 = load i16, ptr %gep1548.prol, align 2, !tbaa !74
  %537 = mul nsw i64 %indvars.iv1295.prol, %515
  %gep1550.prol = getelementptr i16, ptr %invariant.gep1549, i64 %537
  store i16 %536, ptr %gep1550.prol, align 2, !tbaa !74
  %indvars.iv.next1296.prol = add nuw nsw i64 %indvars.iv1295.prol, 1
  %prol.iter2280.next = add i64 %prol.iter2280, 1
  %prol.iter2280.cmp.not = icmp eq i64 %prol.iter2280.next, %xtraiter2278
  br i1 %prol.iter2280.cmp.not, label %.lr.ph949.prol.loopexit, label %.lr.ph949.prol, !llvm.loop !90

.lr.ph949.prol.loopexit:                          ; preds = %.lr.ph949.prol, %.lr.ph949.preheader2157
  %indvars.iv1295.unr = phi i64 [ %indvars.iv1295.ph, %.lr.ph949.preheader2157 ], [ %indvars.iv.next1296.prol, %.lr.ph949.prol ]
  %538 = sub nsw i64 %indvars.iv1295.ph, %wide.trip.count1298
  %539 = icmp ugt i64 %538, -4
  br i1 %539, label %._crit_edge950, label %.lr.ph949

.lr.ph949:                                        ; preds = %.lr.ph949.prol.loopexit, %.lr.ph949
  %indvars.iv1295 = phi i64 [ %indvars.iv.next1296.3, %.lr.ph949 ], [ %indvars.iv1295.unr, %.lr.ph949.prol.loopexit ]
  %540 = mul nsw i64 %indvars.iv1295, %514
  %gep1548 = getelementptr i16, ptr %invariant.gep1547, i64 %540
  %541 = load i16, ptr %gep1548, align 2, !tbaa !74
  %542 = mul nsw i64 %indvars.iv1295, %515
  %gep1550 = getelementptr i16, ptr %invariant.gep1549, i64 %542
  store i16 %541, ptr %gep1550, align 2, !tbaa !74
  %indvars.iv.next1296 = add nuw nsw i64 %indvars.iv1295, 1
  %543 = mul nsw i64 %indvars.iv.next1296, %514
  %gep1548.1 = getelementptr i16, ptr %invariant.gep1547, i64 %543
  %544 = load i16, ptr %gep1548.1, align 2, !tbaa !74
  %545 = mul nsw i64 %indvars.iv.next1296, %515
  %gep1550.1 = getelementptr i16, ptr %invariant.gep1549, i64 %545
  store i16 %544, ptr %gep1550.1, align 2, !tbaa !74
  %indvars.iv.next1296.1 = add nuw nsw i64 %indvars.iv1295, 2
  %546 = mul nsw i64 %indvars.iv.next1296.1, %514
  %gep1548.2 = getelementptr i16, ptr %invariant.gep1547, i64 %546
  %547 = load i16, ptr %gep1548.2, align 2, !tbaa !74
  %548 = mul nsw i64 %indvars.iv.next1296.1, %515
  %gep1550.2 = getelementptr i16, ptr %invariant.gep1549, i64 %548
  store i16 %547, ptr %gep1550.2, align 2, !tbaa !74
  %indvars.iv.next1296.2 = add nuw nsw i64 %indvars.iv1295, 3
  %549 = mul nsw i64 %indvars.iv.next1296.2, %514
  %gep1548.3 = getelementptr i16, ptr %invariant.gep1547, i64 %549
  %550 = load i16, ptr %gep1548.3, align 2, !tbaa !74
  %551 = mul nsw i64 %indvars.iv.next1296.2, %515
  %gep1550.3 = getelementptr i16, ptr %invariant.gep1549, i64 %551
  store i16 %550, ptr %gep1550.3, align 2, !tbaa !74
  %indvars.iv.next1296.3 = add nuw nsw i64 %indvars.iv1295, 4
  %exitcond1299.not.3 = icmp eq i64 %indvars.iv.next1296.3, %wide.trip.count1298
  br i1 %exitcond1299.not.3, label %._crit_edge950, label %.lr.ph949, !llvm.loop !91

._crit_edge950:                                   ; preds = %.lr.ph949.prol.loopexit, %.lr.ph949, %middle.block2028, %522
  %indvars.iv.next1301 = add nuw nsw i64 %indvars.iv1300, 1
  %exitcond1304.not = icmp eq i64 %indvars.iv.next1301, %wide.trip.count1303
  br i1 %exitcond1304.not, label %.loopexit, label %522, !llvm.loop !92

.preheader753:                                    ; preds = %.preheader753.lr.ph, %._crit_edge955
  %indvars.iv1310 = phi i64 [ 0, %.preheader753.lr.ph ], [ %indvars.iv.next1311, %._crit_edge955 ]
  br i1 %518, label %.lr.ph954, label %._crit_edge955

.lr.ph954:                                        ; preds = %.preheader753
  %552 = mul nuw nsw i64 %indvars.iv1310, %519
  %553 = mul nsw i64 %indvars.iv1310, %520
  %invariant.gep1551 = getelementptr i64, ptr %18, i64 %552
  %invariant.gep1553 = getelementptr i16, ptr %20, i64 %553
  br i1 %521, label %._crit_edge955.loopexit.unr-lcssa, label %.lr.ph954.new

.lr.ph954.new:                                    ; preds = %.lr.ph954, %.lr.ph954.new
  %indvars.iv1305 = phi i64 [ %indvars.iv.next1306.1, %.lr.ph954.new ], [ 0, %.lr.ph954 ]
  %niter2286 = phi i64 [ %niter2286.next.1, %.lr.ph954.new ], [ 0, %.lr.ph954 ]
  %gep1552 = getelementptr i64, ptr %invariant.gep1551, i64 %indvars.iv1305
  %554 = load i64, ptr %gep1552, align 8, !tbaa !23
  %gep1554 = getelementptr i16, ptr %invariant.gep1553, i64 %indvars.iv1305
  %555 = load i16, ptr %gep1554, align 2, !tbaa !74
  %sext719 = shl i64 %554, 32
  %556 = ashr exact i64 %sext719, 31
  %557 = getelementptr inbounds i8, ptr %23, i64 %556
  store i16 %555, ptr %557, align 2, !tbaa !74
  %indvars.iv.next1306 = or disjoint i64 %indvars.iv1305, 1
  %gep1552.1 = getelementptr i64, ptr %invariant.gep1551, i64 %indvars.iv.next1306
  %558 = load i64, ptr %gep1552.1, align 8, !tbaa !23
  %gep1554.1 = getelementptr i16, ptr %invariant.gep1553, i64 %indvars.iv.next1306
  %559 = load i16, ptr %gep1554.1, align 2, !tbaa !74
  %sext719.1 = shl i64 %558, 32
  %560 = ashr exact i64 %sext719.1, 31
  %561 = getelementptr inbounds i8, ptr %23, i64 %560
  store i16 %559, ptr %561, align 2, !tbaa !74
  %indvars.iv.next1306.1 = add nuw nsw i64 %indvars.iv1305, 2
  %niter2286.next.1 = add i64 %niter2286, 2
  %niter2286.ncmp.1 = icmp eq i64 %niter2286.next.1, %unroll_iter2285
  br i1 %niter2286.ncmp.1, label %._crit_edge955.loopexit.unr-lcssa, label %.lr.ph954.new, !llvm.loop !93

._crit_edge955.loopexit.unr-lcssa:                ; preds = %.lr.ph954.new, %.lr.ph954
  %indvars.iv1305.unr = phi i64 [ 0, %.lr.ph954 ], [ %indvars.iv.next1306.1, %.lr.ph954.new ]
  br i1 %lcmp.mod2284.not, label %._crit_edge955, label %._crit_edge955.loopexit.epilog-lcssa

._crit_edge955.loopexit.epilog-lcssa:             ; preds = %._crit_edge955.loopexit.unr-lcssa
  %gep1552.epil = getelementptr i64, ptr %invariant.gep1551, i64 %indvars.iv1305.unr
  %562 = load i64, ptr %gep1552.epil, align 8, !tbaa !23
  %gep1554.epil = getelementptr i16, ptr %invariant.gep1553, i64 %indvars.iv1305.unr
  %563 = load i16, ptr %gep1554.epil, align 2, !tbaa !74
  %sext719.epil = shl i64 %562, 32
  %564 = ashr exact i64 %sext719.epil, 31
  %565 = getelementptr inbounds i8, ptr %23, i64 %564
  store i16 %563, ptr %565, align 2, !tbaa !74
  br label %._crit_edge955

._crit_edge955:                                   ; preds = %._crit_edge955.loopexit.epilog-lcssa, %._crit_edge955.loopexit.unr-lcssa, %.preheader753
  %indvars.iv.next1311 = add nuw nsw i64 %indvars.iv1310, 1
  %exitcond1314.not = icmp eq i64 %indvars.iv.next1311, %wide.trip.count1313
  br i1 %exitcond1314.not, label %.loopexit, label %.preheader753, !llvm.loop !94

566:                                              ; preds = %392
  br i1 %17, label %567, label %661

567:                                              ; preds = %566
  br i1 %.not715, label %595, label %.preheader737

.preheader737:                                    ; preds = %567
  %568 = icmp sgt i32 %.0, 0
  br i1 %568, label %.lr.ph994, label %.loopexit

.lr.ph994:                                        ; preds = %.preheader737
  %569 = icmp sgt i32 %.0657, 0
  %570 = sext i32 %8 to i64
  %wide.trip.count1386 = zext nneg i32 %.0 to i64
  %wide.trip.count1381 = zext i32 %.0657 to i64
  %571 = shl nsw i64 %570, 1
  %min.iters.check2111 = icmp ult i32 %.0657, 16
  %n.vec2114 = and i64 %wide.trip.count1381, 2147483632
  %cmp.n2121 = icmp eq i64 %n.vec2114, %wide.trip.count1381
  %xtraiter2311 = and i64 %wide.trip.count1381, 3
  %lcmp.mod2312.not = icmp eq i64 %xtraiter2311, 0
  br label %572

572:                                              ; preds = %.lr.ph994, %._crit_edge992
  %indvars.iv1383 = phi i64 [ 0, %.lr.ph994 ], [ %indvars.iv.next1384, %._crit_edge992 ]
  %573 = mul i64 %571, %indvars.iv1383
  br i1 %569, label %.lr.ph991, label %._crit_edge992

.lr.ph991:                                        ; preds = %572
  %574 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1383
  %575 = load i32, ptr %574, align 4, !tbaa !51
  %576 = mul nsw i32 %575, %6
  %577 = mul nsw i64 %indvars.iv1383, %570
  %578 = sext i32 %576 to i64
  %invariant.gep1579 = getelementptr i16, ptr %20, i64 %578
  %invariant.gep1581 = getelementptr i16, ptr %23, i64 %577
  br i1 %min.iters.check2111, label %scalar.ph2110.preheader, label %vector.memcheck2107

vector.memcheck2107:                              ; preds = %.lr.ph991
  %579 = shl nsw i64 %578, 1
  %580 = add i64 %573, %24
  %581 = add i64 %579, %21
  %582 = sub i64 %580, %581
  %diff.check2108 = icmp ult i64 %582, 32
  br i1 %diff.check2108, label %scalar.ph2110.preheader, label %vector.body2116

vector.body2116:                                  ; preds = %vector.memcheck2107, %vector.body2116
  %index2117 = phi i64 [ %index.next2120, %vector.body2116 ], [ 0, %vector.memcheck2107 ]
  %583 = getelementptr i16, ptr %invariant.gep1579, i64 %index2117
  %584 = getelementptr i8, ptr %583, i64 16
  %wide.load2118 = load <8 x i16>, ptr %583, align 2, !tbaa !74
  %wide.load2119 = load <8 x i16>, ptr %584, align 2, !tbaa !74
  %585 = getelementptr i16, ptr %invariant.gep1581, i64 %index2117
  %586 = getelementptr i8, ptr %585, i64 16
  store <8 x i16> %wide.load2118, ptr %585, align 2, !tbaa !74
  store <8 x i16> %wide.load2119, ptr %586, align 2, !tbaa !74
  %index.next2120 = add nuw i64 %index2117, 16
  %587 = icmp eq i64 %index.next2120, %n.vec2114
  br i1 %587, label %middle.block2109, label %vector.body2116, !llvm.loop !95

middle.block2109:                                 ; preds = %vector.body2116
  br i1 %cmp.n2121, label %._crit_edge992, label %scalar.ph2110.preheader

scalar.ph2110.preheader:                          ; preds = %middle.block2109, %vector.memcheck2107, %.lr.ph991
  %indvars.iv1378.ph = phi i64 [ 0, %vector.memcheck2107 ], [ 0, %.lr.ph991 ], [ %n.vec2114, %middle.block2109 ]
  br i1 %lcmp.mod2312.not, label %scalar.ph2110.prol.loopexit, label %scalar.ph2110.prol

scalar.ph2110.prol:                               ; preds = %scalar.ph2110.preheader, %scalar.ph2110.prol
  %indvars.iv1378.prol = phi i64 [ %indvars.iv.next1379.prol, %scalar.ph2110.prol ], [ %indvars.iv1378.ph, %scalar.ph2110.preheader ]
  %prol.iter2313 = phi i64 [ %prol.iter2313.next, %scalar.ph2110.prol ], [ 0, %scalar.ph2110.preheader ]
  %gep1580.prol = getelementptr i16, ptr %invariant.gep1579, i64 %indvars.iv1378.prol
  %588 = load i16, ptr %gep1580.prol, align 2, !tbaa !74
  %gep1582.prol = getelementptr i16, ptr %invariant.gep1581, i64 %indvars.iv1378.prol
  store i16 %588, ptr %gep1582.prol, align 2, !tbaa !74
  %indvars.iv.next1379.prol = add nuw nsw i64 %indvars.iv1378.prol, 1
  %prol.iter2313.next = add i64 %prol.iter2313, 1
  %prol.iter2313.cmp.not = icmp eq i64 %prol.iter2313.next, %xtraiter2311
  br i1 %prol.iter2313.cmp.not, label %scalar.ph2110.prol.loopexit, label %scalar.ph2110.prol, !llvm.loop !96

scalar.ph2110.prol.loopexit:                      ; preds = %scalar.ph2110.prol, %scalar.ph2110.preheader
  %indvars.iv1378.unr = phi i64 [ %indvars.iv1378.ph, %scalar.ph2110.preheader ], [ %indvars.iv.next1379.prol, %scalar.ph2110.prol ]
  %589 = sub nsw i64 %indvars.iv1378.ph, %wide.trip.count1381
  %590 = icmp ugt i64 %589, -4
  br i1 %590, label %._crit_edge992, label %scalar.ph2110

scalar.ph2110:                                    ; preds = %scalar.ph2110.prol.loopexit, %scalar.ph2110
  %indvars.iv1378 = phi i64 [ %indvars.iv.next1379.3, %scalar.ph2110 ], [ %indvars.iv1378.unr, %scalar.ph2110.prol.loopexit ]
  %gep1580 = getelementptr i16, ptr %invariant.gep1579, i64 %indvars.iv1378
  %591 = load i16, ptr %gep1580, align 2, !tbaa !74
  %gep1582 = getelementptr i16, ptr %invariant.gep1581, i64 %indvars.iv1378
  store i16 %591, ptr %gep1582, align 2, !tbaa !74
  %indvars.iv.next1379 = add nuw nsw i64 %indvars.iv1378, 1
  %gep1580.1 = getelementptr i16, ptr %invariant.gep1579, i64 %indvars.iv.next1379
  %592 = load i16, ptr %gep1580.1, align 2, !tbaa !74
  %gep1582.1 = getelementptr i16, ptr %invariant.gep1581, i64 %indvars.iv.next1379
  store i16 %592, ptr %gep1582.1, align 2, !tbaa !74
  %indvars.iv.next1379.1 = add nuw nsw i64 %indvars.iv1378, 2
  %gep1580.2 = getelementptr i16, ptr %invariant.gep1579, i64 %indvars.iv.next1379.1
  %593 = load i16, ptr %gep1580.2, align 2, !tbaa !74
  %gep1582.2 = getelementptr i16, ptr %invariant.gep1581, i64 %indvars.iv.next1379.1
  store i16 %593, ptr %gep1582.2, align 2, !tbaa !74
  %indvars.iv.next1379.2 = add nuw nsw i64 %indvars.iv1378, 3
  %gep1580.3 = getelementptr i16, ptr %invariant.gep1579, i64 %indvars.iv.next1379.2
  %594 = load i16, ptr %gep1580.3, align 2, !tbaa !74
  %gep1582.3 = getelementptr i16, ptr %invariant.gep1581, i64 %indvars.iv.next1379.2
  store i16 %594, ptr %gep1582.3, align 2, !tbaa !74
  %indvars.iv.next1379.3 = add nuw nsw i64 %indvars.iv1378, 4
  %exitcond1382.not.3 = icmp eq i64 %indvars.iv.next1379.3, %wide.trip.count1381
  br i1 %exitcond1382.not.3, label %._crit_edge992, label %scalar.ph2110, !llvm.loop !97

._crit_edge992:                                   ; preds = %scalar.ph2110.prol.loopexit, %scalar.ph2110, %middle.block2109, %572
  %indvars.iv.next1384 = add nuw nsw i64 %indvars.iv1383, 1
  %exitcond1387.not = icmp eq i64 %indvars.iv.next1384, %wide.trip.count1386
  br i1 %exitcond1387.not, label %.loopexit, label %572, !llvm.loop !98

595:                                              ; preds = %567
  %596 = and i32 %393, 16
  %.not716 = icmp eq i32 %596, 0
  br i1 %.not716, label %.preheader734, label %.preheader735

.preheader735:                                    ; preds = %595
  %597 = icmp sgt i32 %.0657, 0
  br i1 %597, label %.lr.ph1000, label %.loopexit

.lr.ph1000:                                       ; preds = %.preheader735
  %598 = icmp sgt i32 %.0, 0
  %599 = sext i32 %6 to i64
  %600 = sext i32 %8 to i64
  %wide.trip.count1396 = zext nneg i32 %.0657 to i64
  %wide.trip.count1391 = zext i32 %.0 to i64
  %min.iters.check2129 = icmp ult i32 %.0, 16
  %ident.check2123 = icmp ne i32 %8, 1
  %ident.check2124 = icmp ne i32 %6, 1
  %601 = or i1 %ident.check2123, %ident.check2124
  %n.vec2132 = and i64 %wide.trip.count1391, 2147483632
  %cmp.n2139 = icmp eq i64 %n.vec2132, %wide.trip.count1391
  %xtraiter2314 = and i64 %wide.trip.count1391, 3
  %lcmp.mod2315.not = icmp eq i64 %xtraiter2314, 0
  br label %608

.preheader734:                                    ; preds = %595
  %602 = icmp sgt i32 %.0, 0
  br i1 %602, label %.preheader.lr.ph, label %.loopexit

.preheader.lr.ph:                                 ; preds = %.preheader734
  %603 = icmp sgt i32 %.0657, 0
  %604 = sext i32 %.0657 to i64
  %605 = sext i32 %8 to i64
  %wide.trip.count1406 = zext nneg i32 %.0 to i64
  %wide.trip.count1401 = zext i32 %.0657 to i64
  %606 = add nsw i64 %wide.trip.count1401, -1
  %xtraiter2318 = and i64 %wide.trip.count1401, 3
  %607 = icmp ult i64 %606, 3
  %unroll_iter2321 = and i64 %wide.trip.count1401, 2147483644
  %lcmp.mod2320.not = icmp eq i64 %xtraiter2318, 0
  br label %.preheader

608:                                              ; preds = %.lr.ph1000, %._crit_edge998
  %indvars.iv1393 = phi i64 [ 0, %.lr.ph1000 ], [ %indvars.iv.next1394, %._crit_edge998 ]
  %609 = shl nuw nsw i64 %indvars.iv1393, 1
  br i1 %598, label %.lr.ph997.preheader, label %._crit_edge998

.lr.ph997.preheader:                              ; preds = %608
  %610 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1393
  %611 = load i32, ptr %610, align 4, !tbaa !51
  %612 = sext i32 %611 to i64
  %invariant.gep1583 = getelementptr i16, ptr %20, i64 %612
  %invariant.gep1585 = getelementptr i16, ptr %23, i64 %indvars.iv1393
  %brmerge2326 = select i1 %min.iters.check2129, i1 true, i1 %601
  br i1 %brmerge2326, label %.lr.ph997.preheader2145, label %vector.memcheck2125

vector.memcheck2125:                              ; preds = %.lr.ph997.preheader
  %613 = shl nsw i64 %612, 1
  %614 = add i64 %609, %24
  %615 = add i64 %613, %21
  %616 = sub i64 %614, %615
  %diff.check2126 = icmp ult i64 %616, 32
  br i1 %diff.check2126, label %.lr.ph997.preheader2145, label %vector.body2134

vector.body2134:                                  ; preds = %vector.memcheck2125, %vector.body2134
  %index2135 = phi i64 [ %index.next2138, %vector.body2134 ], [ 0, %vector.memcheck2125 ]
  %617 = getelementptr i16, ptr %invariant.gep1583, i64 %index2135
  %618 = getelementptr i8, ptr %617, i64 16
  %wide.load2136 = load <8 x i16>, ptr %617, align 2, !tbaa !74
  %wide.load2137 = load <8 x i16>, ptr %618, align 2, !tbaa !74
  %619 = getelementptr i16, ptr %invariant.gep1585, i64 %index2135
  %620 = getelementptr i8, ptr %619, i64 16
  store <8 x i16> %wide.load2136, ptr %619, align 2, !tbaa !74
  store <8 x i16> %wide.load2137, ptr %620, align 2, !tbaa !74
  %index.next2138 = add nuw i64 %index2135, 16
  %621 = icmp eq i64 %index.next2138, %n.vec2132
  br i1 %621, label %middle.block2127, label %vector.body2134, !llvm.loop !99

middle.block2127:                                 ; preds = %vector.body2134
  br i1 %cmp.n2139, label %._crit_edge998, label %.lr.ph997.preheader2145

.lr.ph997.preheader2145:                          ; preds = %.lr.ph997.preheader, %middle.block2127, %vector.memcheck2125
  %indvars.iv1388.ph = phi i64 [ 0, %vector.memcheck2125 ], [ 0, %.lr.ph997.preheader ], [ %n.vec2132, %middle.block2127 ]
  br i1 %lcmp.mod2315.not, label %.lr.ph997.prol.loopexit, label %.lr.ph997.prol

.lr.ph997.prol:                                   ; preds = %.lr.ph997.preheader2145, %.lr.ph997.prol
  %indvars.iv1388.prol = phi i64 [ %indvars.iv.next1389.prol, %.lr.ph997.prol ], [ %indvars.iv1388.ph, %.lr.ph997.preheader2145 ]
  %prol.iter2316 = phi i64 [ %prol.iter2316.next, %.lr.ph997.prol ], [ 0, %.lr.ph997.preheader2145 ]
  %622 = mul nsw i64 %indvars.iv1388.prol, %599
  %gep1584.prol = getelementptr i16, ptr %invariant.gep1583, i64 %622
  %623 = load i16, ptr %gep1584.prol, align 2, !tbaa !74
  %624 = mul nsw i64 %indvars.iv1388.prol, %600
  %gep1586.prol = getelementptr i16, ptr %invariant.gep1585, i64 %624
  store i16 %623, ptr %gep1586.prol, align 2, !tbaa !74
  %indvars.iv.next1389.prol = add nuw nsw i64 %indvars.iv1388.prol, 1
  %prol.iter2316.next = add i64 %prol.iter2316, 1
  %prol.iter2316.cmp.not = icmp eq i64 %prol.iter2316.next, %xtraiter2314
  br i1 %prol.iter2316.cmp.not, label %.lr.ph997.prol.loopexit, label %.lr.ph997.prol, !llvm.loop !100

.lr.ph997.prol.loopexit:                          ; preds = %.lr.ph997.prol, %.lr.ph997.preheader2145
  %indvars.iv1388.unr = phi i64 [ %indvars.iv1388.ph, %.lr.ph997.preheader2145 ], [ %indvars.iv.next1389.prol, %.lr.ph997.prol ]
  %625 = sub nsw i64 %indvars.iv1388.ph, %wide.trip.count1391
  %626 = icmp ugt i64 %625, -4
  br i1 %626, label %._crit_edge998, label %.lr.ph997

.lr.ph997:                                        ; preds = %.lr.ph997.prol.loopexit, %.lr.ph997
  %indvars.iv1388 = phi i64 [ %indvars.iv.next1389.3, %.lr.ph997 ], [ %indvars.iv1388.unr, %.lr.ph997.prol.loopexit ]
  %627 = mul nsw i64 %indvars.iv1388, %599
  %gep1584 = getelementptr i16, ptr %invariant.gep1583, i64 %627
  %628 = load i16, ptr %gep1584, align 2, !tbaa !74
  %629 = mul nsw i64 %indvars.iv1388, %600
  %gep1586 = getelementptr i16, ptr %invariant.gep1585, i64 %629
  store i16 %628, ptr %gep1586, align 2, !tbaa !74
  %indvars.iv.next1389 = add nuw nsw i64 %indvars.iv1388, 1
  %630 = mul nsw i64 %indvars.iv.next1389, %599
  %gep1584.1 = getelementptr i16, ptr %invariant.gep1583, i64 %630
  %631 = load i16, ptr %gep1584.1, align 2, !tbaa !74
  %632 = mul nsw i64 %indvars.iv.next1389, %600
  %gep1586.1 = getelementptr i16, ptr %invariant.gep1585, i64 %632
  store i16 %631, ptr %gep1586.1, align 2, !tbaa !74
  %indvars.iv.next1389.1 = add nuw nsw i64 %indvars.iv1388, 2
  %633 = mul nsw i64 %indvars.iv.next1389.1, %599
  %gep1584.2 = getelementptr i16, ptr %invariant.gep1583, i64 %633
  %634 = load i16, ptr %gep1584.2, align 2, !tbaa !74
  %635 = mul nsw i64 %indvars.iv.next1389.1, %600
  %gep1586.2 = getelementptr i16, ptr %invariant.gep1585, i64 %635
  store i16 %634, ptr %gep1586.2, align 2, !tbaa !74
  %indvars.iv.next1389.2 = add nuw nsw i64 %indvars.iv1388, 3
  %636 = mul nsw i64 %indvars.iv.next1389.2, %599
  %gep1584.3 = getelementptr i16, ptr %invariant.gep1583, i64 %636
  %637 = load i16, ptr %gep1584.3, align 2, !tbaa !74
  %638 = mul nsw i64 %indvars.iv.next1389.2, %600
  %gep1586.3 = getelementptr i16, ptr %invariant.gep1585, i64 %638
  store i16 %637, ptr %gep1586.3, align 2, !tbaa !74
  %indvars.iv.next1389.3 = add nuw nsw i64 %indvars.iv1388, 4
  %exitcond1392.not.3 = icmp eq i64 %indvars.iv.next1389.3, %wide.trip.count1391
  br i1 %exitcond1392.not.3, label %._crit_edge998, label %.lr.ph997, !llvm.loop !101

._crit_edge998:                                   ; preds = %.lr.ph997.prol.loopexit, %.lr.ph997, %middle.block2127, %608
  %indvars.iv.next1394 = add nuw nsw i64 %indvars.iv1393, 1
  %exitcond1397.not = icmp eq i64 %indvars.iv.next1394, %wide.trip.count1396
  br i1 %exitcond1397.not, label %.loopexit, label %608, !llvm.loop !102

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge1003
  %indvars.iv1403 = phi i64 [ 0, %.preheader.lr.ph ], [ %indvars.iv.next1404, %._crit_edge1003 ]
  br i1 %603, label %.lr.ph1002, label %._crit_edge1003

.lr.ph1002:                                       ; preds = %.preheader
  %639 = mul nuw nsw i64 %indvars.iv1403, %604
  %640 = mul nsw i64 %indvars.iv1403, %605
  %invariant.gep1587 = getelementptr i32, ptr %18, i64 %639
  %invariant.gep1589 = getelementptr i16, ptr %23, i64 %640
  br i1 %607, label %._crit_edge1003.loopexit.unr-lcssa, label %.lr.ph1002.new

.lr.ph1002.new:                                   ; preds = %.lr.ph1002, %.lr.ph1002.new
  %indvars.iv1398 = phi i64 [ %indvars.iv.next1399.3, %.lr.ph1002.new ], [ 0, %.lr.ph1002 ]
  %niter2322 = phi i64 [ %niter2322.next.3, %.lr.ph1002.new ], [ 0, %.lr.ph1002 ]
  %gep1588 = getelementptr i32, ptr %invariant.gep1587, i64 %indvars.iv1398
  %641 = load i32, ptr %gep1588, align 4, !tbaa !51
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds i16, ptr %20, i64 %642
  %644 = load i16, ptr %643, align 2, !tbaa !74
  %gep1590 = getelementptr i16, ptr %invariant.gep1589, i64 %indvars.iv1398
  store i16 %644, ptr %gep1590, align 2, !tbaa !74
  %indvars.iv.next1399 = or disjoint i64 %indvars.iv1398, 1
  %gep1588.1 = getelementptr i32, ptr %invariant.gep1587, i64 %indvars.iv.next1399
  %645 = load i32, ptr %gep1588.1, align 4, !tbaa !51
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds i16, ptr %20, i64 %646
  %648 = load i16, ptr %647, align 2, !tbaa !74
  %gep1590.1 = getelementptr i16, ptr %invariant.gep1589, i64 %indvars.iv.next1399
  store i16 %648, ptr %gep1590.1, align 2, !tbaa !74
  %indvars.iv.next1399.1 = or disjoint i64 %indvars.iv1398, 2
  %gep1588.2 = getelementptr i32, ptr %invariant.gep1587, i64 %indvars.iv.next1399.1
  %649 = load i32, ptr %gep1588.2, align 4, !tbaa !51
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds i16, ptr %20, i64 %650
  %652 = load i16, ptr %651, align 2, !tbaa !74
  %gep1590.2 = getelementptr i16, ptr %invariant.gep1589, i64 %indvars.iv.next1399.1
  store i16 %652, ptr %gep1590.2, align 2, !tbaa !74
  %indvars.iv.next1399.2 = or disjoint i64 %indvars.iv1398, 3
  %gep1588.3 = getelementptr i32, ptr %invariant.gep1587, i64 %indvars.iv.next1399.2
  %653 = load i32, ptr %gep1588.3, align 4, !tbaa !51
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds i16, ptr %20, i64 %654
  %656 = load i16, ptr %655, align 2, !tbaa !74
  %gep1590.3 = getelementptr i16, ptr %invariant.gep1589, i64 %indvars.iv.next1399.2
  store i16 %656, ptr %gep1590.3, align 2, !tbaa !74
  %indvars.iv.next1399.3 = add nuw nsw i64 %indvars.iv1398, 4
  %niter2322.next.3 = add i64 %niter2322, 4
  %niter2322.ncmp.3 = icmp eq i64 %niter2322.next.3, %unroll_iter2321
  br i1 %niter2322.ncmp.3, label %._crit_edge1003.loopexit.unr-lcssa, label %.lr.ph1002.new, !llvm.loop !103

._crit_edge1003.loopexit.unr-lcssa:               ; preds = %.lr.ph1002.new, %.lr.ph1002
  %indvars.iv1398.unr = phi i64 [ 0, %.lr.ph1002 ], [ %indvars.iv.next1399.3, %.lr.ph1002.new ]
  br i1 %lcmp.mod2320.not, label %._crit_edge1003, label %.epil.preheader2317

.epil.preheader2317:                              ; preds = %._crit_edge1003.loopexit.unr-lcssa, %.epil.preheader2317
  %indvars.iv1398.epil = phi i64 [ %indvars.iv.next1399.epil, %.epil.preheader2317 ], [ %indvars.iv1398.unr, %._crit_edge1003.loopexit.unr-lcssa ]
  %epil.iter2319 = phi i64 [ %epil.iter2319.next, %.epil.preheader2317 ], [ 0, %._crit_edge1003.loopexit.unr-lcssa ]
  %gep1588.epil = getelementptr i32, ptr %invariant.gep1587, i64 %indvars.iv1398.epil
  %657 = load i32, ptr %gep1588.epil, align 4, !tbaa !51
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds i16, ptr %20, i64 %658
  %660 = load i16, ptr %659, align 2, !tbaa !74
  %gep1590.epil = getelementptr i16, ptr %invariant.gep1589, i64 %indvars.iv1398.epil
  store i16 %660, ptr %gep1590.epil, align 2, !tbaa !74
  %indvars.iv.next1399.epil = add nuw nsw i64 %indvars.iv1398.epil, 1
  %epil.iter2319.next = add i64 %epil.iter2319, 1
  %epil.iter2319.cmp.not = icmp eq i64 %epil.iter2319.next, %xtraiter2318
  br i1 %epil.iter2319.cmp.not, label %._crit_edge1003, label %.epil.preheader2317, !llvm.loop !104

._crit_edge1003:                                  ; preds = %._crit_edge1003.loopexit.unr-lcssa, %.epil.preheader2317, %.preheader
  %indvars.iv.next1404 = add nuw nsw i64 %indvars.iv1403, 1
  %exitcond1407.not = icmp eq i64 %indvars.iv.next1404, %wide.trip.count1406
  br i1 %exitcond1407.not, label %.loopexit, label %.preheader, !llvm.loop !105

661:                                              ; preds = %566
  br i1 %.not715, label %689, label %.preheader744

.preheader744:                                    ; preds = %661
  %662 = icmp sgt i32 %.0658, 0
  br i1 %662, label %.lr.ph978, label %.loopexit

.lr.ph978:                                        ; preds = %.preheader744
  %663 = icmp sgt i32 %.0657, 0
  %664 = sext i32 %6 to i64
  %wide.trip.count1355 = zext nneg i32 %.0658 to i64
  %wide.trip.count1350 = zext i32 %.0657 to i64
  %665 = sub i64 %24, %21
  %666 = mul nsw i64 %664, -2
  %min.iters.check2078 = icmp ult i32 %.0657, 16
  %n.vec2081 = and i64 %wide.trip.count1350, 2147483632
  %cmp.n2088 = icmp eq i64 %n.vec2081, %wide.trip.count1350
  %xtraiter2299 = and i64 %wide.trip.count1350, 3
  %lcmp.mod2300.not = icmp eq i64 %xtraiter2299, 0
  br label %667

667:                                              ; preds = %.lr.ph978, %._crit_edge976
  %indvars.iv1352 = phi i64 [ 0, %.lr.ph978 ], [ %indvars.iv.next1353, %._crit_edge976 ]
  %668 = mul i64 %666, %indvars.iv1352
  %669 = add i64 %665, %668
  br i1 %663, label %.lr.ph975, label %._crit_edge976

.lr.ph975:                                        ; preds = %667
  %670 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1352
  %671 = load i32, ptr %670, align 4, !tbaa !51
  %672 = mul nsw i64 %indvars.iv1352, %664
  %673 = mul nsw i32 %671, %8
  %674 = sext i32 %673 to i64
  %invariant.gep1567 = getelementptr i16, ptr %20, i64 %672
  %invariant.gep1569 = getelementptr i16, ptr %23, i64 %674
  br i1 %min.iters.check2078, label %scalar.ph2077.preheader, label %vector.memcheck2074

vector.memcheck2074:                              ; preds = %.lr.ph975
  %675 = shl nsw i64 %674, 1
  %676 = add i64 %669, %675
  %diff.check2075 = icmp ult i64 %676, 32
  br i1 %diff.check2075, label %scalar.ph2077.preheader, label %vector.body2083

vector.body2083:                                  ; preds = %vector.memcheck2074, %vector.body2083
  %index2084 = phi i64 [ %index.next2087, %vector.body2083 ], [ 0, %vector.memcheck2074 ]
  %677 = getelementptr i16, ptr %invariant.gep1567, i64 %index2084
  %678 = getelementptr i8, ptr %677, i64 16
  %wide.load2085 = load <8 x i16>, ptr %677, align 2, !tbaa !74
  %wide.load2086 = load <8 x i16>, ptr %678, align 2, !tbaa !74
  %679 = getelementptr i16, ptr %invariant.gep1569, i64 %index2084
  %680 = getelementptr i8, ptr %679, i64 16
  store <8 x i16> %wide.load2085, ptr %679, align 2, !tbaa !74
  store <8 x i16> %wide.load2086, ptr %680, align 2, !tbaa !74
  %index.next2087 = add nuw i64 %index2084, 16
  %681 = icmp eq i64 %index.next2087, %n.vec2081
  br i1 %681, label %middle.block2076, label %vector.body2083, !llvm.loop !106

middle.block2076:                                 ; preds = %vector.body2083
  br i1 %cmp.n2088, label %._crit_edge976, label %scalar.ph2077.preheader

scalar.ph2077.preheader:                          ; preds = %middle.block2076, %vector.memcheck2074, %.lr.ph975
  %indvars.iv1347.ph = phi i64 [ 0, %vector.memcheck2074 ], [ 0, %.lr.ph975 ], [ %n.vec2081, %middle.block2076 ]
  br i1 %lcmp.mod2300.not, label %scalar.ph2077.prol.loopexit, label %scalar.ph2077.prol

scalar.ph2077.prol:                               ; preds = %scalar.ph2077.preheader, %scalar.ph2077.prol
  %indvars.iv1347.prol = phi i64 [ %indvars.iv.next1348.prol, %scalar.ph2077.prol ], [ %indvars.iv1347.ph, %scalar.ph2077.preheader ]
  %prol.iter2301 = phi i64 [ %prol.iter2301.next, %scalar.ph2077.prol ], [ 0, %scalar.ph2077.preheader ]
  %gep1568.prol = getelementptr i16, ptr %invariant.gep1567, i64 %indvars.iv1347.prol
  %682 = load i16, ptr %gep1568.prol, align 2, !tbaa !74
  %gep1570.prol = getelementptr i16, ptr %invariant.gep1569, i64 %indvars.iv1347.prol
  store i16 %682, ptr %gep1570.prol, align 2, !tbaa !74
  %indvars.iv.next1348.prol = add nuw nsw i64 %indvars.iv1347.prol, 1
  %prol.iter2301.next = add i64 %prol.iter2301, 1
  %prol.iter2301.cmp.not = icmp eq i64 %prol.iter2301.next, %xtraiter2299
  br i1 %prol.iter2301.cmp.not, label %scalar.ph2077.prol.loopexit, label %scalar.ph2077.prol, !llvm.loop !107

scalar.ph2077.prol.loopexit:                      ; preds = %scalar.ph2077.prol, %scalar.ph2077.preheader
  %indvars.iv1347.unr = phi i64 [ %indvars.iv1347.ph, %scalar.ph2077.preheader ], [ %indvars.iv.next1348.prol, %scalar.ph2077.prol ]
  %683 = sub nsw i64 %indvars.iv1347.ph, %wide.trip.count1350
  %684 = icmp ugt i64 %683, -4
  br i1 %684, label %._crit_edge976, label %scalar.ph2077

scalar.ph2077:                                    ; preds = %scalar.ph2077.prol.loopexit, %scalar.ph2077
  %indvars.iv1347 = phi i64 [ %indvars.iv.next1348.3, %scalar.ph2077 ], [ %indvars.iv1347.unr, %scalar.ph2077.prol.loopexit ]
  %gep1568 = getelementptr i16, ptr %invariant.gep1567, i64 %indvars.iv1347
  %685 = load i16, ptr %gep1568, align 2, !tbaa !74
  %gep1570 = getelementptr i16, ptr %invariant.gep1569, i64 %indvars.iv1347
  store i16 %685, ptr %gep1570, align 2, !tbaa !74
  %indvars.iv.next1348 = add nuw nsw i64 %indvars.iv1347, 1
  %gep1568.1 = getelementptr i16, ptr %invariant.gep1567, i64 %indvars.iv.next1348
  %686 = load i16, ptr %gep1568.1, align 2, !tbaa !74
  %gep1570.1 = getelementptr i16, ptr %invariant.gep1569, i64 %indvars.iv.next1348
  store i16 %686, ptr %gep1570.1, align 2, !tbaa !74
  %indvars.iv.next1348.1 = add nuw nsw i64 %indvars.iv1347, 2
  %gep1568.2 = getelementptr i16, ptr %invariant.gep1567, i64 %indvars.iv.next1348.1
  %687 = load i16, ptr %gep1568.2, align 2, !tbaa !74
  %gep1570.2 = getelementptr i16, ptr %invariant.gep1569, i64 %indvars.iv.next1348.1
  store i16 %687, ptr %gep1570.2, align 2, !tbaa !74
  %indvars.iv.next1348.2 = add nuw nsw i64 %indvars.iv1347, 3
  %gep1568.3 = getelementptr i16, ptr %invariant.gep1567, i64 %indvars.iv.next1348.2
  %688 = load i16, ptr %gep1568.3, align 2, !tbaa !74
  %gep1570.3 = getelementptr i16, ptr %invariant.gep1569, i64 %indvars.iv.next1348.2
  store i16 %688, ptr %gep1570.3, align 2, !tbaa !74
  %indvars.iv.next1348.3 = add nuw nsw i64 %indvars.iv1347, 4
  %exitcond1351.not.3 = icmp eq i64 %indvars.iv.next1348.3, %wide.trip.count1350
  br i1 %exitcond1351.not.3, label %._crit_edge976, label %scalar.ph2077, !llvm.loop !108

._crit_edge976:                                   ; preds = %scalar.ph2077.prol.loopexit, %scalar.ph2077, %middle.block2076, %667
  %indvars.iv.next1353 = add nuw nsw i64 %indvars.iv1352, 1
  %exitcond1356.not = icmp eq i64 %indvars.iv.next1353, %wide.trip.count1355
  br i1 %exitcond1356.not, label %.loopexit, label %667, !llvm.loop !109

689:                                              ; preds = %661
  %690 = and i32 %393, 16
  %.not714 = icmp eq i32 %690, 0
  br i1 %.not714, label %.preheader740, label %.preheader742

.preheader742:                                    ; preds = %689
  %691 = icmp sgt i32 %.0659, 0
  br i1 %691, label %.lr.ph984, label %.loopexit

.lr.ph984:                                        ; preds = %.preheader742
  %692 = icmp sgt i32 %.0658, 0
  %693 = sext i32 %6 to i64
  %694 = sext i32 %8 to i64
  %wide.trip.count1365 = zext nneg i32 %.0659 to i64
  %wide.trip.count1360 = zext i32 %.0658 to i64
  %min.iters.check2096 = icmp ult i32 %.0658, 16
  %ident.check2090 = icmp ne i32 %8, 1
  %ident.check2091 = icmp ne i32 %6, 1
  %695 = or i1 %ident.check2090, %ident.check2091
  %n.vec2099 = and i64 %wide.trip.count1360, 2147483632
  %cmp.n2106 = icmp eq i64 %n.vec2099, %wide.trip.count1360
  %xtraiter2302 = and i64 %wide.trip.count1360, 3
  %lcmp.mod2303.not = icmp eq i64 %xtraiter2302, 0
  br label %702

.preheader740:                                    ; preds = %689
  %696 = icmp sgt i32 %.0658, 0
  br i1 %696, label %.preheader739.lr.ph, label %.loopexit

.preheader739.lr.ph:                              ; preds = %.preheader740
  %697 = icmp sgt i32 %.0659, 0
  %698 = sext i32 %.0659 to i64
  %699 = sext i32 %6 to i64
  %wide.trip.count1375 = zext nneg i32 %.0658 to i64
  %wide.trip.count1370 = zext i32 %.0659 to i64
  %700 = add nsw i64 %wide.trip.count1370, -1
  %xtraiter2306 = and i64 %wide.trip.count1370, 3
  %701 = icmp ult i64 %700, 3
  %unroll_iter2309 = and i64 %wide.trip.count1370, 2147483644
  %lcmp.mod2308.not = icmp eq i64 %xtraiter2306, 0
  br label %.preheader739

702:                                              ; preds = %.lr.ph984, %._crit_edge982
  %indvars.iv1362 = phi i64 [ 0, %.lr.ph984 ], [ %indvars.iv.next1363, %._crit_edge982 ]
  %703 = shl nuw i64 %indvars.iv1362, 1
  %704 = add i64 %703, %21
  %705 = sub i64 %24, %704
  br i1 %692, label %.lr.ph981.preheader, label %._crit_edge982

.lr.ph981.preheader:                              ; preds = %702
  %706 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1362
  %707 = load i32, ptr %706, align 4, !tbaa !51
  %708 = sext i32 %707 to i64
  %invariant.gep1571 = getelementptr i16, ptr %20, i64 %indvars.iv1362
  %invariant.gep1573 = getelementptr i16, ptr %23, i64 %708
  %brmerge2327 = select i1 %min.iters.check2096, i1 true, i1 %695
  br i1 %brmerge2327, label %.lr.ph981.preheader2149, label %vector.memcheck2092

vector.memcheck2092:                              ; preds = %.lr.ph981.preheader
  %709 = shl nsw i64 %708, 1
  %710 = add i64 %705, %709
  %diff.check2093 = icmp ult i64 %710, 32
  br i1 %diff.check2093, label %.lr.ph981.preheader2149, label %vector.body2101

vector.body2101:                                  ; preds = %vector.memcheck2092, %vector.body2101
  %index2102 = phi i64 [ %index.next2105, %vector.body2101 ], [ 0, %vector.memcheck2092 ]
  %711 = getelementptr i16, ptr %invariant.gep1571, i64 %index2102
  %712 = getelementptr i8, ptr %711, i64 16
  %wide.load2103 = load <8 x i16>, ptr %711, align 2, !tbaa !74
  %wide.load2104 = load <8 x i16>, ptr %712, align 2, !tbaa !74
  %713 = getelementptr i16, ptr %invariant.gep1573, i64 %index2102
  %714 = getelementptr i8, ptr %713, i64 16
  store <8 x i16> %wide.load2103, ptr %713, align 2, !tbaa !74
  store <8 x i16> %wide.load2104, ptr %714, align 2, !tbaa !74
  %index.next2105 = add nuw i64 %index2102, 16
  %715 = icmp eq i64 %index.next2105, %n.vec2099
  br i1 %715, label %middle.block2094, label %vector.body2101, !llvm.loop !110

middle.block2094:                                 ; preds = %vector.body2101
  br i1 %cmp.n2106, label %._crit_edge982, label %.lr.ph981.preheader2149

.lr.ph981.preheader2149:                          ; preds = %.lr.ph981.preheader, %middle.block2094, %vector.memcheck2092
  %indvars.iv1357.ph = phi i64 [ 0, %vector.memcheck2092 ], [ 0, %.lr.ph981.preheader ], [ %n.vec2099, %middle.block2094 ]
  br i1 %lcmp.mod2303.not, label %.lr.ph981.prol.loopexit, label %.lr.ph981.prol

.lr.ph981.prol:                                   ; preds = %.lr.ph981.preheader2149, %.lr.ph981.prol
  %indvars.iv1357.prol = phi i64 [ %indvars.iv.next1358.prol, %.lr.ph981.prol ], [ %indvars.iv1357.ph, %.lr.ph981.preheader2149 ]
  %prol.iter2304 = phi i64 [ %prol.iter2304.next, %.lr.ph981.prol ], [ 0, %.lr.ph981.preheader2149 ]
  %716 = mul nsw i64 %indvars.iv1357.prol, %693
  %gep1572.prol = getelementptr i16, ptr %invariant.gep1571, i64 %716
  %717 = load i16, ptr %gep1572.prol, align 2, !tbaa !74
  %718 = mul nsw i64 %indvars.iv1357.prol, %694
  %gep1574.prol = getelementptr i16, ptr %invariant.gep1573, i64 %718
  store i16 %717, ptr %gep1574.prol, align 2, !tbaa !74
  %indvars.iv.next1358.prol = add nuw nsw i64 %indvars.iv1357.prol, 1
  %prol.iter2304.next = add i64 %prol.iter2304, 1
  %prol.iter2304.cmp.not = icmp eq i64 %prol.iter2304.next, %xtraiter2302
  br i1 %prol.iter2304.cmp.not, label %.lr.ph981.prol.loopexit, label %.lr.ph981.prol, !llvm.loop !111

.lr.ph981.prol.loopexit:                          ; preds = %.lr.ph981.prol, %.lr.ph981.preheader2149
  %indvars.iv1357.unr = phi i64 [ %indvars.iv1357.ph, %.lr.ph981.preheader2149 ], [ %indvars.iv.next1358.prol, %.lr.ph981.prol ]
  %719 = sub nsw i64 %indvars.iv1357.ph, %wide.trip.count1360
  %720 = icmp ugt i64 %719, -4
  br i1 %720, label %._crit_edge982, label %.lr.ph981

.lr.ph981:                                        ; preds = %.lr.ph981.prol.loopexit, %.lr.ph981
  %indvars.iv1357 = phi i64 [ %indvars.iv.next1358.3, %.lr.ph981 ], [ %indvars.iv1357.unr, %.lr.ph981.prol.loopexit ]
  %721 = mul nsw i64 %indvars.iv1357, %693
  %gep1572 = getelementptr i16, ptr %invariant.gep1571, i64 %721
  %722 = load i16, ptr %gep1572, align 2, !tbaa !74
  %723 = mul nsw i64 %indvars.iv1357, %694
  %gep1574 = getelementptr i16, ptr %invariant.gep1573, i64 %723
  store i16 %722, ptr %gep1574, align 2, !tbaa !74
  %indvars.iv.next1358 = add nuw nsw i64 %indvars.iv1357, 1
  %724 = mul nsw i64 %indvars.iv.next1358, %693
  %gep1572.1 = getelementptr i16, ptr %invariant.gep1571, i64 %724
  %725 = load i16, ptr %gep1572.1, align 2, !tbaa !74
  %726 = mul nsw i64 %indvars.iv.next1358, %694
  %gep1574.1 = getelementptr i16, ptr %invariant.gep1573, i64 %726
  store i16 %725, ptr %gep1574.1, align 2, !tbaa !74
  %indvars.iv.next1358.1 = add nuw nsw i64 %indvars.iv1357, 2
  %727 = mul nsw i64 %indvars.iv.next1358.1, %693
  %gep1572.2 = getelementptr i16, ptr %invariant.gep1571, i64 %727
  %728 = load i16, ptr %gep1572.2, align 2, !tbaa !74
  %729 = mul nsw i64 %indvars.iv.next1358.1, %694
  %gep1574.2 = getelementptr i16, ptr %invariant.gep1573, i64 %729
  store i16 %728, ptr %gep1574.2, align 2, !tbaa !74
  %indvars.iv.next1358.2 = add nuw nsw i64 %indvars.iv1357, 3
  %730 = mul nsw i64 %indvars.iv.next1358.2, %693
  %gep1572.3 = getelementptr i16, ptr %invariant.gep1571, i64 %730
  %731 = load i16, ptr %gep1572.3, align 2, !tbaa !74
  %732 = mul nsw i64 %indvars.iv.next1358.2, %694
  %gep1574.3 = getelementptr i16, ptr %invariant.gep1573, i64 %732
  store i16 %731, ptr %gep1574.3, align 2, !tbaa !74
  %indvars.iv.next1358.3 = add nuw nsw i64 %indvars.iv1357, 4
  %exitcond1361.not.3 = icmp eq i64 %indvars.iv.next1358.3, %wide.trip.count1360
  br i1 %exitcond1361.not.3, label %._crit_edge982, label %.lr.ph981, !llvm.loop !112

._crit_edge982:                                   ; preds = %.lr.ph981.prol.loopexit, %.lr.ph981, %middle.block2094, %702
  %indvars.iv.next1363 = add nuw nsw i64 %indvars.iv1362, 1
  %exitcond1366.not = icmp eq i64 %indvars.iv.next1363, %wide.trip.count1365
  br i1 %exitcond1366.not, label %.loopexit, label %702, !llvm.loop !113

.preheader739:                                    ; preds = %.preheader739.lr.ph, %._crit_edge987
  %indvars.iv1372 = phi i64 [ 0, %.preheader739.lr.ph ], [ %indvars.iv.next1373, %._crit_edge987 ]
  br i1 %697, label %.lr.ph986, label %._crit_edge987

.lr.ph986:                                        ; preds = %.preheader739
  %733 = mul nuw nsw i64 %indvars.iv1372, %698
  %734 = mul nsw i64 %indvars.iv1372, %699
  %invariant.gep1575 = getelementptr i32, ptr %18, i64 %733
  %invariant.gep1577 = getelementptr i16, ptr %20, i64 %734
  br i1 %701, label %._crit_edge987.loopexit.unr-lcssa, label %.lr.ph986.new

.lr.ph986.new:                                    ; preds = %.lr.ph986, %.lr.ph986.new
  %indvars.iv1367 = phi i64 [ %indvars.iv.next1368.3, %.lr.ph986.new ], [ 0, %.lr.ph986 ]
  %niter2310 = phi i64 [ %niter2310.next.3, %.lr.ph986.new ], [ 0, %.lr.ph986 ]
  %gep1576 = getelementptr i32, ptr %invariant.gep1575, i64 %indvars.iv1367
  %735 = load i32, ptr %gep1576, align 4, !tbaa !51
  %gep1578 = getelementptr i16, ptr %invariant.gep1577, i64 %indvars.iv1367
  %736 = load i16, ptr %gep1578, align 2, !tbaa !74
  %737 = sext i32 %735 to i64
  %738 = getelementptr inbounds i16, ptr %23, i64 %737
  store i16 %736, ptr %738, align 2, !tbaa !74
  %indvars.iv.next1368 = or disjoint i64 %indvars.iv1367, 1
  %gep1576.1 = getelementptr i32, ptr %invariant.gep1575, i64 %indvars.iv.next1368
  %739 = load i32, ptr %gep1576.1, align 4, !tbaa !51
  %gep1578.1 = getelementptr i16, ptr %invariant.gep1577, i64 %indvars.iv.next1368
  %740 = load i16, ptr %gep1578.1, align 2, !tbaa !74
  %741 = sext i32 %739 to i64
  %742 = getelementptr inbounds i16, ptr %23, i64 %741
  store i16 %740, ptr %742, align 2, !tbaa !74
  %indvars.iv.next1368.1 = or disjoint i64 %indvars.iv1367, 2
  %gep1576.2 = getelementptr i32, ptr %invariant.gep1575, i64 %indvars.iv.next1368.1
  %743 = load i32, ptr %gep1576.2, align 4, !tbaa !51
  %gep1578.2 = getelementptr i16, ptr %invariant.gep1577, i64 %indvars.iv.next1368.1
  %744 = load i16, ptr %gep1578.2, align 2, !tbaa !74
  %745 = sext i32 %743 to i64
  %746 = getelementptr inbounds i16, ptr %23, i64 %745
  store i16 %744, ptr %746, align 2, !tbaa !74
  %indvars.iv.next1368.2 = or disjoint i64 %indvars.iv1367, 3
  %gep1576.3 = getelementptr i32, ptr %invariant.gep1575, i64 %indvars.iv.next1368.2
  %747 = load i32, ptr %gep1576.3, align 4, !tbaa !51
  %gep1578.3 = getelementptr i16, ptr %invariant.gep1577, i64 %indvars.iv.next1368.2
  %748 = load i16, ptr %gep1578.3, align 2, !tbaa !74
  %749 = sext i32 %747 to i64
  %750 = getelementptr inbounds i16, ptr %23, i64 %749
  store i16 %748, ptr %750, align 2, !tbaa !74
  %indvars.iv.next1368.3 = add nuw nsw i64 %indvars.iv1367, 4
  %niter2310.next.3 = add i64 %niter2310, 4
  %niter2310.ncmp.3 = icmp eq i64 %niter2310.next.3, %unroll_iter2309
  br i1 %niter2310.ncmp.3, label %._crit_edge987.loopexit.unr-lcssa, label %.lr.ph986.new, !llvm.loop !114

._crit_edge987.loopexit.unr-lcssa:                ; preds = %.lr.ph986.new, %.lr.ph986
  %indvars.iv1367.unr = phi i64 [ 0, %.lr.ph986 ], [ %indvars.iv.next1368.3, %.lr.ph986.new ]
  br i1 %lcmp.mod2308.not, label %._crit_edge987, label %.epil.preheader2305

.epil.preheader2305:                              ; preds = %._crit_edge987.loopexit.unr-lcssa, %.epil.preheader2305
  %indvars.iv1367.epil = phi i64 [ %indvars.iv.next1368.epil, %.epil.preheader2305 ], [ %indvars.iv1367.unr, %._crit_edge987.loopexit.unr-lcssa ]
  %epil.iter2307 = phi i64 [ %epil.iter2307.next, %.epil.preheader2305 ], [ 0, %._crit_edge987.loopexit.unr-lcssa ]
  %gep1576.epil = getelementptr i32, ptr %invariant.gep1575, i64 %indvars.iv1367.epil
  %751 = load i32, ptr %gep1576.epil, align 4, !tbaa !51
  %gep1578.epil = getelementptr i16, ptr %invariant.gep1577, i64 %indvars.iv1367.epil
  %752 = load i16, ptr %gep1578.epil, align 2, !tbaa !74
  %753 = sext i32 %751 to i64
  %754 = getelementptr inbounds i16, ptr %23, i64 %753
  store i16 %752, ptr %754, align 2, !tbaa !74
  %indvars.iv.next1368.epil = add nuw nsw i64 %indvars.iv1367.epil, 1
  %epil.iter2307.next = add i64 %epil.iter2307, 1
  %epil.iter2307.cmp.not = icmp eq i64 %epil.iter2307.next, %xtraiter2306
  br i1 %epil.iter2307.cmp.not, label %._crit_edge987, label %.epil.preheader2305, !llvm.loop !115

._crit_edge987:                                   ; preds = %._crit_edge987.loopexit.unr-lcssa, %.epil.preheader2305, %.preheader739
  %indvars.iv.next1373 = add nuw nsw i64 %indvars.iv1372, 1
  %exitcond1376.not = icmp eq i64 %indvars.iv.next1373, %wide.trip.count1375
  br i1 %exitcond1376.not, label %.loopexit, label %.preheader739, !llvm.loop !116

755:                                              ; preds = %391
  switch i32 %9, label %.loopexit [
    i32 12, label %756
    i32 5, label %756
    i32 4, label %756
  ]

756:                                              ; preds = %755, %755, %755
  %757 = zext i16 %13 to i32
  %758 = and i32 %757, 32
  %.not706 = icmp eq i32 %758, 0
  br i1 %.not, label %936, label %759

759:                                              ; preds = %756
  br i1 %17, label %760, label %848

760:                                              ; preds = %759
  br i1 %.not706, label %790, label %.preheader779

.preheader779:                                    ; preds = %760
  %761 = icmp sgt i32 %.0, 0
  br i1 %761, label %.lr.ph898, label %.loopexit

.lr.ph898:                                        ; preds = %.preheader779
  %762 = icmp sgt i32 %.0657, 0
  %763 = sext i32 %8 to i64
  %wide.trip.count1200 = zext nneg i32 %.0 to i64
  %wide.trip.count1195 = zext i32 %.0657 to i64
  %min.iters.check1805 = icmp ult i32 %.0657, 8
  %min.iters.check1808 = icmp ult i32 %.0657, 32
  %n.vec1812 = and i64 %wide.trip.count1195, 2147483616
  %cmp.n1818 = icmp eq i64 %n.vec1812, %wide.trip.count1195
  %n.vec.remaining1823 = and i64 %wide.trip.count1195, 24
  %min.epilog.iters.check1824 = icmp eq i64 %n.vec.remaining1823, 0
  %n.vec1827 = and i64 %wide.trip.count1195, 2147483640
  %cmp.n1833 = icmp eq i64 %n.vec1827, %wide.trip.count1195
  %xtraiter2239 = and i64 %wide.trip.count1195, 3
  %lcmp.mod2240.not = icmp eq i64 %xtraiter2239, 0
  br label %764

764:                                              ; preds = %.lr.ph898, %._crit_edge896
  %indvars.iv1197 = phi i64 [ 0, %.lr.ph898 ], [ %indvars.iv.next1198, %._crit_edge896 ]
  %765 = mul i64 %indvars.iv1197, %763
  %766 = add i64 %765, %24
  br i1 %762, label %iter.check1807, label %._crit_edge896

iter.check1807:                                   ; preds = %764
  %767 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1197
  %768 = load i64, ptr %767, align 8, !tbaa !23
  %769 = trunc i64 %768 to i32
  %770 = mul nsw i32 %6, %769
  %771 = mul nsw i64 %indvars.iv1197, %763
  %772 = sext i32 %770 to i64
  %invariant.gep1507 = getelementptr i8, ptr %20, i64 %772
  %invariant.gep1509 = getelementptr i8, ptr %23, i64 %771
  br i1 %min.iters.check1805, label %vec.epilog.scalar.ph1820.preheader, label %vector.memcheck1801

vector.memcheck1801:                              ; preds = %iter.check1807
  %773 = add i64 %21, %772
  %774 = sub i64 %766, %773
  %diff.check1802 = icmp ult i64 %774, 32
  br i1 %diff.check1802, label %vec.epilog.scalar.ph1820.preheader, label %vector.main.loop.iter.check1809

vector.main.loop.iter.check1809:                  ; preds = %vector.memcheck1801
  br i1 %min.iters.check1808, label %vec.epilog.ph1821, label %vector.body1813

vector.body1813:                                  ; preds = %vector.main.loop.iter.check1809, %vector.body1813
  %index1814 = phi i64 [ %index.next1817, %vector.body1813 ], [ 0, %vector.main.loop.iter.check1809 ]
  %775 = getelementptr i8, ptr %invariant.gep1507, i64 %index1814
  %776 = getelementptr i8, ptr %775, i64 16
  %wide.load1815 = load <16 x i8>, ptr %775, align 1, !tbaa !117
  %wide.load1816 = load <16 x i8>, ptr %776, align 1, !tbaa !117
  %777 = getelementptr i8, ptr %invariant.gep1509, i64 %index1814
  %778 = getelementptr i8, ptr %777, i64 16
  store <16 x i8> %wide.load1815, ptr %777, align 1, !tbaa !117
  store <16 x i8> %wide.load1816, ptr %778, align 1, !tbaa !117
  %index.next1817 = add nuw i64 %index1814, 32
  %779 = icmp eq i64 %index.next1817, %n.vec1812
  br i1 %779, label %middle.block1803, label %vector.body1813, !llvm.loop !118

middle.block1803:                                 ; preds = %vector.body1813
  br i1 %cmp.n1818, label %._crit_edge896, label %vec.epilog.iter.check1822

vec.epilog.iter.check1822:                        ; preds = %middle.block1803
  br i1 %min.epilog.iters.check1824, label %vec.epilog.scalar.ph1820.preheader, label %vec.epilog.ph1821

vec.epilog.ph1821:                                ; preds = %vector.main.loop.iter.check1809, %vec.epilog.iter.check1822
  %vec.epilog.resume.val1825 = phi i64 [ %n.vec1812, %vec.epilog.iter.check1822 ], [ 0, %vector.main.loop.iter.check1809 ]
  br label %vec.epilog.vector.body1829

vec.epilog.vector.body1829:                       ; preds = %vec.epilog.vector.body1829, %vec.epilog.ph1821
  %index1830 = phi i64 [ %vec.epilog.resume.val1825, %vec.epilog.ph1821 ], [ %index.next1832, %vec.epilog.vector.body1829 ]
  %780 = getelementptr i8, ptr %invariant.gep1507, i64 %index1830
  %wide.load1831 = load <8 x i8>, ptr %780, align 1, !tbaa !117
  %781 = getelementptr i8, ptr %invariant.gep1509, i64 %index1830
  store <8 x i8> %wide.load1831, ptr %781, align 1, !tbaa !117
  %index.next1832 = add nuw i64 %index1830, 8
  %782 = icmp eq i64 %index.next1832, %n.vec1827
  br i1 %782, label %vec.epilog.middle.block1819, label %vec.epilog.vector.body1829, !llvm.loop !119

vec.epilog.middle.block1819:                      ; preds = %vec.epilog.vector.body1829
  br i1 %cmp.n1833, label %._crit_edge896, label %vec.epilog.scalar.ph1820.preheader

vec.epilog.scalar.ph1820.preheader:               ; preds = %vec.epilog.middle.block1819, %vector.memcheck1801, %iter.check1807, %vec.epilog.iter.check1822
  %indvars.iv1192.ph = phi i64 [ 0, %iter.check1807 ], [ 0, %vector.memcheck1801 ], [ %n.vec1812, %vec.epilog.iter.check1822 ], [ %n.vec1827, %vec.epilog.middle.block1819 ]
  br i1 %lcmp.mod2240.not, label %vec.epilog.scalar.ph1820.prol.loopexit, label %vec.epilog.scalar.ph1820.prol

vec.epilog.scalar.ph1820.prol:                    ; preds = %vec.epilog.scalar.ph1820.preheader, %vec.epilog.scalar.ph1820.prol
  %indvars.iv1192.prol = phi i64 [ %indvars.iv.next1193.prol, %vec.epilog.scalar.ph1820.prol ], [ %indvars.iv1192.ph, %vec.epilog.scalar.ph1820.preheader ]
  %prol.iter2241 = phi i64 [ %prol.iter2241.next, %vec.epilog.scalar.ph1820.prol ], [ 0, %vec.epilog.scalar.ph1820.preheader ]
  %gep1508.prol = getelementptr i8, ptr %invariant.gep1507, i64 %indvars.iv1192.prol
  %783 = load i8, ptr %gep1508.prol, align 1, !tbaa !117
  %gep1510.prol = getelementptr i8, ptr %invariant.gep1509, i64 %indvars.iv1192.prol
  store i8 %783, ptr %gep1510.prol, align 1, !tbaa !117
  %indvars.iv.next1193.prol = add nuw nsw i64 %indvars.iv1192.prol, 1
  %prol.iter2241.next = add i64 %prol.iter2241, 1
  %prol.iter2241.cmp.not = icmp eq i64 %prol.iter2241.next, %xtraiter2239
  br i1 %prol.iter2241.cmp.not, label %vec.epilog.scalar.ph1820.prol.loopexit, label %vec.epilog.scalar.ph1820.prol, !llvm.loop !120

vec.epilog.scalar.ph1820.prol.loopexit:           ; preds = %vec.epilog.scalar.ph1820.prol, %vec.epilog.scalar.ph1820.preheader
  %indvars.iv1192.unr = phi i64 [ %indvars.iv1192.ph, %vec.epilog.scalar.ph1820.preheader ], [ %indvars.iv.next1193.prol, %vec.epilog.scalar.ph1820.prol ]
  %784 = sub nsw i64 %indvars.iv1192.ph, %wide.trip.count1195
  %785 = icmp ugt i64 %784, -4
  br i1 %785, label %._crit_edge896, label %vec.epilog.scalar.ph1820

vec.epilog.scalar.ph1820:                         ; preds = %vec.epilog.scalar.ph1820.prol.loopexit, %vec.epilog.scalar.ph1820
  %indvars.iv1192 = phi i64 [ %indvars.iv.next1193.3, %vec.epilog.scalar.ph1820 ], [ %indvars.iv1192.unr, %vec.epilog.scalar.ph1820.prol.loopexit ]
  %gep1508 = getelementptr i8, ptr %invariant.gep1507, i64 %indvars.iv1192
  %786 = load i8, ptr %gep1508, align 1, !tbaa !117
  %gep1510 = getelementptr i8, ptr %invariant.gep1509, i64 %indvars.iv1192
  store i8 %786, ptr %gep1510, align 1, !tbaa !117
  %indvars.iv.next1193 = add nuw nsw i64 %indvars.iv1192, 1
  %gep1508.1 = getelementptr i8, ptr %invariant.gep1507, i64 %indvars.iv.next1193
  %787 = load i8, ptr %gep1508.1, align 1, !tbaa !117
  %gep1510.1 = getelementptr i8, ptr %invariant.gep1509, i64 %indvars.iv.next1193
  store i8 %787, ptr %gep1510.1, align 1, !tbaa !117
  %indvars.iv.next1193.1 = add nuw nsw i64 %indvars.iv1192, 2
  %gep1508.2 = getelementptr i8, ptr %invariant.gep1507, i64 %indvars.iv.next1193.1
  %788 = load i8, ptr %gep1508.2, align 1, !tbaa !117
  %gep1510.2 = getelementptr i8, ptr %invariant.gep1509, i64 %indvars.iv.next1193.1
  store i8 %788, ptr %gep1510.2, align 1, !tbaa !117
  %indvars.iv.next1193.2 = add nuw nsw i64 %indvars.iv1192, 3
  %gep1508.3 = getelementptr i8, ptr %invariant.gep1507, i64 %indvars.iv.next1193.2
  %789 = load i8, ptr %gep1508.3, align 1, !tbaa !117
  %gep1510.3 = getelementptr i8, ptr %invariant.gep1509, i64 %indvars.iv.next1193.2
  store i8 %789, ptr %gep1510.3, align 1, !tbaa !117
  %indvars.iv.next1193.3 = add nuw nsw i64 %indvars.iv1192, 4
  %exitcond1196.not.3 = icmp eq i64 %indvars.iv.next1193.3, %wide.trip.count1195
  br i1 %exitcond1196.not.3, label %._crit_edge896, label %vec.epilog.scalar.ph1820, !llvm.loop !121

._crit_edge896:                                   ; preds = %vec.epilog.scalar.ph1820.prol.loopexit, %vec.epilog.scalar.ph1820, %middle.block1803, %vec.epilog.middle.block1819, %764
  %indvars.iv.next1198 = add nuw nsw i64 %indvars.iv1197, 1
  %exitcond1201.not = icmp eq i64 %indvars.iv.next1198, %wide.trip.count1200
  br i1 %exitcond1201.not, label %.loopexit, label %764, !llvm.loop !122

790:                                              ; preds = %760
  %791 = and i32 %757, 16
  %.not711 = icmp eq i32 %791, 0
  br i1 %.not711, label %.preheader775, label %.preheader777

.preheader777:                                    ; preds = %790
  %792 = icmp sgt i32 %.0657, 0
  br i1 %792, label %.lr.ph904, label %.loopexit

.lr.ph904:                                        ; preds = %.preheader777
  %793 = icmp sgt i32 %.0, 0
  %794 = sext i32 %6 to i64
  %795 = sext i32 %8 to i64
  %wide.trip.count1210 = zext nneg i32 %.0657 to i64
  %wide.trip.count1205 = zext i32 %.0 to i64
  %min.iters.check1841 = icmp ult i32 %.0, 8
  %ident.check1835 = icmp ne i32 %8, 1
  %ident.check1836 = icmp ne i32 %6, 1
  %796 = or i1 %ident.check1835, %ident.check1836
  %min.iters.check1844 = icmp ult i32 %.0, 32
  %n.vec1848 = and i64 %wide.trip.count1205, 2147483616
  %cmp.n1854 = icmp eq i64 %n.vec1848, %wide.trip.count1205
  %n.vec.remaining1859 = and i64 %wide.trip.count1205, 24
  %min.epilog.iters.check1860 = icmp eq i64 %n.vec.remaining1859, 0
  %n.vec1863 = and i64 %wide.trip.count1205, 2147483640
  %cmp.n1869 = icmp eq i64 %n.vec1863, %wide.trip.count1205
  %xtraiter2242 = and i64 %wide.trip.count1205, 3
  %lcmp.mod2243.not = icmp eq i64 %xtraiter2242, 0
  br label %802

.preheader775:                                    ; preds = %790
  %797 = icmp sgt i32 %.0, 0
  br i1 %797, label %.preheader774.lr.ph, label %.loopexit

.preheader774.lr.ph:                              ; preds = %.preheader775
  %798 = icmp sgt i32 %.0657, 0
  %799 = sext i32 %.0657 to i64
  %800 = sext i32 %8 to i64
  %wide.trip.count1220 = zext nneg i32 %.0 to i64
  %wide.trip.count1215 = zext i32 %.0657 to i64
  %xtraiter2246 = and i64 %wide.trip.count1215, 1
  %801 = icmp eq i32 %.0657, 1
  %unroll_iter2249 = and i64 %wide.trip.count1215, 2147483646
  %lcmp.mod2248.not = icmp eq i64 %xtraiter2246, 0
  br label %.preheader774

802:                                              ; preds = %.lr.ph904, %._crit_edge902
  %indvars.iv1207 = phi i64 [ 0, %.lr.ph904 ], [ %indvars.iv.next1208, %._crit_edge902 ]
  %803 = add i64 %indvars.iv1207, %24
  br i1 %793, label %iter.check1843, label %._crit_edge902

iter.check1843:                                   ; preds = %802
  %804 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1207
  %805 = load i64, ptr %804, align 8, !tbaa !23
  %sext1411 = shl i64 %805, 32
  %806 = ashr exact i64 %sext1411, 32
  %invariant.gep1511 = getelementptr i8, ptr %20, i64 %806
  %invariant.gep1513 = getelementptr i8, ptr %23, i64 %indvars.iv1207
  %brmerge2328 = select i1 %min.iters.check1841, i1 true, i1 %796
  br i1 %brmerge2328, label %.lr.ph901.preheader, label %vector.memcheck1837

vector.memcheck1837:                              ; preds = %iter.check1843
  %807 = add i64 %806, %21
  %808 = sub i64 %803, %807
  %diff.check1838 = icmp ult i64 %808, 32
  br i1 %diff.check1838, label %.lr.ph901.preheader, label %vector.main.loop.iter.check1845

vector.main.loop.iter.check1845:                  ; preds = %vector.memcheck1837
  br i1 %min.iters.check1844, label %vec.epilog.ph1857, label %vector.body1849

vector.body1849:                                  ; preds = %vector.main.loop.iter.check1845, %vector.body1849
  %index1850 = phi i64 [ %index.next1853, %vector.body1849 ], [ 0, %vector.main.loop.iter.check1845 ]
  %809 = getelementptr i8, ptr %invariant.gep1511, i64 %index1850
  %810 = getelementptr i8, ptr %809, i64 16
  %wide.load1851 = load <16 x i8>, ptr %809, align 1, !tbaa !117
  %wide.load1852 = load <16 x i8>, ptr %810, align 1, !tbaa !117
  %811 = getelementptr i8, ptr %invariant.gep1513, i64 %index1850
  %812 = getelementptr i8, ptr %811, i64 16
  store <16 x i8> %wide.load1851, ptr %811, align 1, !tbaa !117
  store <16 x i8> %wide.load1852, ptr %812, align 1, !tbaa !117
  %index.next1853 = add nuw i64 %index1850, 32
  %813 = icmp eq i64 %index.next1853, %n.vec1848
  br i1 %813, label %middle.block1839, label %vector.body1849, !llvm.loop !123

middle.block1839:                                 ; preds = %vector.body1849
  br i1 %cmp.n1854, label %._crit_edge902, label %vec.epilog.iter.check1858

vec.epilog.iter.check1858:                        ; preds = %middle.block1839
  br i1 %min.epilog.iters.check1860, label %.lr.ph901.preheader, label %vec.epilog.ph1857

vec.epilog.ph1857:                                ; preds = %vector.main.loop.iter.check1845, %vec.epilog.iter.check1858
  %vec.epilog.resume.val1861 = phi i64 [ %n.vec1848, %vec.epilog.iter.check1858 ], [ 0, %vector.main.loop.iter.check1845 ]
  br label %vec.epilog.vector.body1865

vec.epilog.vector.body1865:                       ; preds = %vec.epilog.vector.body1865, %vec.epilog.ph1857
  %index1866 = phi i64 [ %vec.epilog.resume.val1861, %vec.epilog.ph1857 ], [ %index.next1868, %vec.epilog.vector.body1865 ]
  %814 = getelementptr i8, ptr %invariant.gep1511, i64 %index1866
  %wide.load1867 = load <8 x i8>, ptr %814, align 1, !tbaa !117
  %815 = getelementptr i8, ptr %invariant.gep1513, i64 %index1866
  store <8 x i8> %wide.load1867, ptr %815, align 1, !tbaa !117
  %index.next1868 = add nuw i64 %index1866, 8
  %816 = icmp eq i64 %index.next1868, %n.vec1863
  br i1 %816, label %vec.epilog.middle.block1855, label %vec.epilog.vector.body1865, !llvm.loop !124

vec.epilog.middle.block1855:                      ; preds = %vec.epilog.vector.body1865
  br i1 %cmp.n1869, label %._crit_edge902, label %.lr.ph901.preheader

.lr.ph901.preheader:                              ; preds = %iter.check1843, %vec.epilog.middle.block1855, %vector.memcheck1837, %vec.epilog.iter.check1858
  %indvars.iv1202.ph = phi i64 [ 0, %iter.check1843 ], [ 0, %vector.memcheck1837 ], [ %n.vec1848, %vec.epilog.iter.check1858 ], [ %n.vec1863, %vec.epilog.middle.block1855 ]
  br i1 %lcmp.mod2243.not, label %.lr.ph901.prol.loopexit, label %.lr.ph901.prol

.lr.ph901.prol:                                   ; preds = %.lr.ph901.preheader, %.lr.ph901.prol
  %indvars.iv1202.prol = phi i64 [ %indvars.iv.next1203.prol, %.lr.ph901.prol ], [ %indvars.iv1202.ph, %.lr.ph901.preheader ]
  %prol.iter2244 = phi i64 [ %prol.iter2244.next, %.lr.ph901.prol ], [ 0, %.lr.ph901.preheader ]
  %817 = mul nsw i64 %indvars.iv1202.prol, %794
  %gep1512.prol = getelementptr i8, ptr %invariant.gep1511, i64 %817
  %818 = load i8, ptr %gep1512.prol, align 1, !tbaa !117
  %819 = mul nsw i64 %indvars.iv1202.prol, %795
  %gep1514.prol = getelementptr i8, ptr %invariant.gep1513, i64 %819
  store i8 %818, ptr %gep1514.prol, align 1, !tbaa !117
  %indvars.iv.next1203.prol = add nuw nsw i64 %indvars.iv1202.prol, 1
  %prol.iter2244.next = add i64 %prol.iter2244, 1
  %prol.iter2244.cmp.not = icmp eq i64 %prol.iter2244.next, %xtraiter2242
  br i1 %prol.iter2244.cmp.not, label %.lr.ph901.prol.loopexit, label %.lr.ph901.prol, !llvm.loop !125

.lr.ph901.prol.loopexit:                          ; preds = %.lr.ph901.prol, %.lr.ph901.preheader
  %indvars.iv1202.unr = phi i64 [ %indvars.iv1202.ph, %.lr.ph901.preheader ], [ %indvars.iv.next1203.prol, %.lr.ph901.prol ]
  %820 = sub nsw i64 %indvars.iv1202.ph, %wide.trip.count1205
  %821 = icmp ugt i64 %820, -4
  br i1 %821, label %._crit_edge902, label %.lr.ph901

.lr.ph901:                                        ; preds = %.lr.ph901.prol.loopexit, %.lr.ph901
  %indvars.iv1202 = phi i64 [ %indvars.iv.next1203.3, %.lr.ph901 ], [ %indvars.iv1202.unr, %.lr.ph901.prol.loopexit ]
  %822 = mul nsw i64 %indvars.iv1202, %794
  %gep1512 = getelementptr i8, ptr %invariant.gep1511, i64 %822
  %823 = load i8, ptr %gep1512, align 1, !tbaa !117
  %824 = mul nsw i64 %indvars.iv1202, %795
  %gep1514 = getelementptr i8, ptr %invariant.gep1513, i64 %824
  store i8 %823, ptr %gep1514, align 1, !tbaa !117
  %indvars.iv.next1203 = add nuw nsw i64 %indvars.iv1202, 1
  %825 = mul nsw i64 %indvars.iv.next1203, %794
  %gep1512.1 = getelementptr i8, ptr %invariant.gep1511, i64 %825
  %826 = load i8, ptr %gep1512.1, align 1, !tbaa !117
  %827 = mul nsw i64 %indvars.iv.next1203, %795
  %gep1514.1 = getelementptr i8, ptr %invariant.gep1513, i64 %827
  store i8 %826, ptr %gep1514.1, align 1, !tbaa !117
  %indvars.iv.next1203.1 = add nuw nsw i64 %indvars.iv1202, 2
  %828 = mul nsw i64 %indvars.iv.next1203.1, %794
  %gep1512.2 = getelementptr i8, ptr %invariant.gep1511, i64 %828
  %829 = load i8, ptr %gep1512.2, align 1, !tbaa !117
  %830 = mul nsw i64 %indvars.iv.next1203.1, %795
  %gep1514.2 = getelementptr i8, ptr %invariant.gep1513, i64 %830
  store i8 %829, ptr %gep1514.2, align 1, !tbaa !117
  %indvars.iv.next1203.2 = add nuw nsw i64 %indvars.iv1202, 3
  %831 = mul nsw i64 %indvars.iv.next1203.2, %794
  %gep1512.3 = getelementptr i8, ptr %invariant.gep1511, i64 %831
  %832 = load i8, ptr %gep1512.3, align 1, !tbaa !117
  %833 = mul nsw i64 %indvars.iv.next1203.2, %795
  %gep1514.3 = getelementptr i8, ptr %invariant.gep1513, i64 %833
  store i8 %832, ptr %gep1514.3, align 1, !tbaa !117
  %indvars.iv.next1203.3 = add nuw nsw i64 %indvars.iv1202, 4
  %exitcond1206.not.3 = icmp eq i64 %indvars.iv.next1203.3, %wide.trip.count1205
  br i1 %exitcond1206.not.3, label %._crit_edge902, label %.lr.ph901, !llvm.loop !126

._crit_edge902:                                   ; preds = %.lr.ph901.prol.loopexit, %.lr.ph901, %middle.block1839, %vec.epilog.middle.block1855, %802
  %indvars.iv.next1208 = add nuw nsw i64 %indvars.iv1207, 1
  %exitcond1211.not = icmp eq i64 %indvars.iv.next1208, %wide.trip.count1210
  br i1 %exitcond1211.not, label %.loopexit, label %802, !llvm.loop !127

.preheader774:                                    ; preds = %.preheader774.lr.ph, %._crit_edge907
  %indvars.iv1217 = phi i64 [ 0, %.preheader774.lr.ph ], [ %indvars.iv.next1218, %._crit_edge907 ]
  br i1 %798, label %.lr.ph906, label %._crit_edge907

.lr.ph906:                                        ; preds = %.preheader774
  %834 = mul nuw nsw i64 %indvars.iv1217, %799
  %835 = mul nsw i64 %indvars.iv1217, %800
  %invariant.gep1515 = getelementptr i64, ptr %18, i64 %834
  %invariant.gep1517 = getelementptr i8, ptr %23, i64 %835
  br i1 %801, label %._crit_edge907.loopexit.unr-lcssa, label %.lr.ph906.new

.lr.ph906.new:                                    ; preds = %.lr.ph906, %.lr.ph906.new
  %indvars.iv1212 = phi i64 [ %indvars.iv.next1213.1, %.lr.ph906.new ], [ 0, %.lr.ph906 ]
  %niter2250 = phi i64 [ %niter2250.next.1, %.lr.ph906.new ], [ 0, %.lr.ph906 ]
  %gep1516 = getelementptr i64, ptr %invariant.gep1515, i64 %indvars.iv1212
  %836 = load i64, ptr %gep1516, align 8, !tbaa !23
  %sext712 = shl i64 %836, 32
  %837 = ashr exact i64 %sext712, 32
  %838 = getelementptr inbounds i8, ptr %20, i64 %837
  %839 = load i8, ptr %838, align 1, !tbaa !117
  %gep1518 = getelementptr i8, ptr %invariant.gep1517, i64 %indvars.iv1212
  store i8 %839, ptr %gep1518, align 1, !tbaa !117
  %indvars.iv.next1213 = or disjoint i64 %indvars.iv1212, 1
  %gep1516.1 = getelementptr i64, ptr %invariant.gep1515, i64 %indvars.iv.next1213
  %840 = load i64, ptr %gep1516.1, align 8, !tbaa !23
  %sext712.1 = shl i64 %840, 32
  %841 = ashr exact i64 %sext712.1, 32
  %842 = getelementptr inbounds i8, ptr %20, i64 %841
  %843 = load i8, ptr %842, align 1, !tbaa !117
  %gep1518.1 = getelementptr i8, ptr %invariant.gep1517, i64 %indvars.iv.next1213
  store i8 %843, ptr %gep1518.1, align 1, !tbaa !117
  %indvars.iv.next1213.1 = add nuw nsw i64 %indvars.iv1212, 2
  %niter2250.next.1 = add i64 %niter2250, 2
  %niter2250.ncmp.1 = icmp eq i64 %niter2250.next.1, %unroll_iter2249
  br i1 %niter2250.ncmp.1, label %._crit_edge907.loopexit.unr-lcssa, label %.lr.ph906.new, !llvm.loop !128

._crit_edge907.loopexit.unr-lcssa:                ; preds = %.lr.ph906.new, %.lr.ph906
  %indvars.iv1212.unr = phi i64 [ 0, %.lr.ph906 ], [ %indvars.iv.next1213.1, %.lr.ph906.new ]
  br i1 %lcmp.mod2248.not, label %._crit_edge907, label %._crit_edge907.loopexit.epilog-lcssa

._crit_edge907.loopexit.epilog-lcssa:             ; preds = %._crit_edge907.loopexit.unr-lcssa
  %gep1516.epil = getelementptr i64, ptr %invariant.gep1515, i64 %indvars.iv1212.unr
  %844 = load i64, ptr %gep1516.epil, align 8, !tbaa !23
  %sext712.epil = shl i64 %844, 32
  %845 = ashr exact i64 %sext712.epil, 32
  %846 = getelementptr inbounds i8, ptr %20, i64 %845
  %847 = load i8, ptr %846, align 1, !tbaa !117
  %gep1518.epil = getelementptr i8, ptr %invariant.gep1517, i64 %indvars.iv1212.unr
  store i8 %847, ptr %gep1518.epil, align 1, !tbaa !117
  br label %._crit_edge907

._crit_edge907:                                   ; preds = %._crit_edge907.loopexit.epilog-lcssa, %._crit_edge907.loopexit.unr-lcssa, %.preheader774
  %indvars.iv.next1218 = add nuw nsw i64 %indvars.iv1217, 1
  %exitcond1221.not = icmp eq i64 %indvars.iv.next1218, %wide.trip.count1220
  br i1 %exitcond1221.not, label %.loopexit, label %.preheader774, !llvm.loop !129

848:                                              ; preds = %759
  br i1 %.not706, label %878, label %.preheader786

.preheader786:                                    ; preds = %848
  %849 = icmp sgt i32 %.0658, 0
  br i1 %849, label %.lr.ph882, label %.loopexit

.lr.ph882:                                        ; preds = %.preheader786
  %850 = icmp sgt i32 %.0657, 0
  %851 = sext i32 %6 to i64
  %wide.trip.count1169 = zext nneg i32 %.0658 to i64
  %wide.trip.count1164 = zext i32 %.0657 to i64
  %min.iters.check1746 = icmp ult i32 %.0657, 8
  %min.iters.check1748 = icmp ult i32 %.0657, 32
  %n.vec1751 = and i64 %wide.trip.count1164, 2147483616
  %cmp.n1757 = icmp eq i64 %n.vec1751, %wide.trip.count1164
  %n.vec.remaining = and i64 %wide.trip.count1164, 24
  %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
  %n.vec1759 = and i64 %wide.trip.count1164, 2147483640
  %cmp.n1764 = icmp eq i64 %n.vec1759, %wide.trip.count1164
  %xtraiter2227 = and i64 %wide.trip.count1164, 3
  %lcmp.mod2228.not = icmp eq i64 %xtraiter2227, 0
  br label %852

852:                                              ; preds = %.lr.ph882, %._crit_edge880
  %indvars.iv1166 = phi i64 [ 0, %.lr.ph882 ], [ %indvars.iv.next1167, %._crit_edge880 ]
  br i1 %850, label %iter.check, label %._crit_edge880

iter.check:                                       ; preds = %852
  %853 = mul i64 %indvars.iv1166, %851
  %854 = add i64 %853, %21
  %855 = sub i64 %24, %854
  %856 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1166
  %857 = load i64, ptr %856, align 8, !tbaa !23
  %858 = trunc i64 %857 to i32
  %859 = mul nsw i64 %indvars.iv1166, %851
  %860 = mul nsw i32 %8, %858
  %861 = sext i32 %860 to i64
  %invariant.gep1495 = getelementptr i8, ptr %20, i64 %859
  %invariant.gep1497 = getelementptr i8, ptr %23, i64 %861
  %862 = add i64 %855, %861
  %diff.check1743 = icmp ult i64 %862, 32
  %or.cond2141 = select i1 %min.iters.check1746, i1 true, i1 %diff.check1743
  br i1 %or.cond2141, label %vec.epilog.scalar.ph.preheader, label %vector.main.loop.iter.check

vector.main.loop.iter.check:                      ; preds = %iter.check
  br i1 %min.iters.check1748, label %vec.epilog.ph, label %vector.body1752

vector.body1752:                                  ; preds = %vector.main.loop.iter.check, %vector.body1752
  %index1753 = phi i64 [ %index.next1756, %vector.body1752 ], [ 0, %vector.main.loop.iter.check ]
  %863 = getelementptr i8, ptr %invariant.gep1495, i64 %index1753
  %864 = getelementptr i8, ptr %863, i64 16
  %wide.load1754 = load <16 x i8>, ptr %863, align 1, !tbaa !117
  %wide.load1755 = load <16 x i8>, ptr %864, align 1, !tbaa !117
  %865 = getelementptr i8, ptr %invariant.gep1497, i64 %index1753
  %866 = getelementptr i8, ptr %865, i64 16
  store <16 x i8> %wide.load1754, ptr %865, align 1, !tbaa !117
  store <16 x i8> %wide.load1755, ptr %866, align 1, !tbaa !117
  %index.next1756 = add nuw i64 %index1753, 32
  %867 = icmp eq i64 %index.next1756, %n.vec1751
  br i1 %867, label %middle.block1744, label %vector.body1752, !llvm.loop !130

middle.block1744:                                 ; preds = %vector.body1752
  br i1 %cmp.n1757, label %._crit_edge880, label %vec.epilog.iter.check

vec.epilog.iter.check:                            ; preds = %middle.block1744
  br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph.preheader, label %vec.epilog.ph

vec.epilog.ph:                                    ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
  %vec.epilog.resume.val = phi i64 [ %n.vec1751, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
  br label %vec.epilog.vector.body

vec.epilog.vector.body:                           ; preds = %vec.epilog.vector.body, %vec.epilog.ph
  %index1761 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next1763, %vec.epilog.vector.body ]
  %868 = getelementptr i8, ptr %invariant.gep1495, i64 %index1761
  %wide.load1762 = load <8 x i8>, ptr %868, align 1, !tbaa !117
  %869 = getelementptr i8, ptr %invariant.gep1497, i64 %index1761
  store <8 x i8> %wide.load1762, ptr %869, align 1, !tbaa !117
  %index.next1763 = add nuw i64 %index1761, 8
  %870 = icmp eq i64 %index.next1763, %n.vec1759
  br i1 %870, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !131

vec.epilog.middle.block:                          ; preds = %vec.epilog.vector.body
  br i1 %cmp.n1764, label %._crit_edge880, label %vec.epilog.scalar.ph.preheader

vec.epilog.scalar.ph.preheader:                   ; preds = %vec.epilog.middle.block, %iter.check, %vec.epilog.iter.check
  %indvars.iv1161.ph = phi i64 [ 0, %iter.check ], [ %n.vec1751, %vec.epilog.iter.check ], [ %n.vec1759, %vec.epilog.middle.block ]
  br i1 %lcmp.mod2228.not, label %vec.epilog.scalar.ph.prol.loopexit, label %vec.epilog.scalar.ph.prol

vec.epilog.scalar.ph.prol:                        ; preds = %vec.epilog.scalar.ph.preheader, %vec.epilog.scalar.ph.prol
  %indvars.iv1161.prol = phi i64 [ %indvars.iv.next1162.prol, %vec.epilog.scalar.ph.prol ], [ %indvars.iv1161.ph, %vec.epilog.scalar.ph.preheader ]
  %prol.iter2229 = phi i64 [ %prol.iter2229.next, %vec.epilog.scalar.ph.prol ], [ 0, %vec.epilog.scalar.ph.preheader ]
  %gep1496.prol = getelementptr i8, ptr %invariant.gep1495, i64 %indvars.iv1161.prol
  %871 = load i8, ptr %gep1496.prol, align 1, !tbaa !117
  %gep1498.prol = getelementptr i8, ptr %invariant.gep1497, i64 %indvars.iv1161.prol
  store i8 %871, ptr %gep1498.prol, align 1, !tbaa !117
  %indvars.iv.next1162.prol = add nuw nsw i64 %indvars.iv1161.prol, 1
  %prol.iter2229.next = add i64 %prol.iter2229, 1
  %prol.iter2229.cmp.not = icmp eq i64 %prol.iter2229.next, %xtraiter2227
  br i1 %prol.iter2229.cmp.not, label %vec.epilog.scalar.ph.prol.loopexit, label %vec.epilog.scalar.ph.prol, !llvm.loop !132

vec.epilog.scalar.ph.prol.loopexit:               ; preds = %vec.epilog.scalar.ph.prol, %vec.epilog.scalar.ph.preheader
  %indvars.iv1161.unr = phi i64 [ %indvars.iv1161.ph, %vec.epilog.scalar.ph.preheader ], [ %indvars.iv.next1162.prol, %vec.epilog.scalar.ph.prol ]
  %872 = sub nsw i64 %indvars.iv1161.ph, %wide.trip.count1164
  %873 = icmp ugt i64 %872, -4
  br i1 %873, label %._crit_edge880, label %vec.epilog.scalar.ph

vec.epilog.scalar.ph:                             ; preds = %vec.epilog.scalar.ph.prol.loopexit, %vec.epilog.scalar.ph
  %indvars.iv1161 = phi i64 [ %indvars.iv.next1162.3, %vec.epilog.scalar.ph ], [ %indvars.iv1161.unr, %vec.epilog.scalar.ph.prol.loopexit ]
  %gep1496 = getelementptr i8, ptr %invariant.gep1495, i64 %indvars.iv1161
  %874 = load i8, ptr %gep1496, align 1, !tbaa !117
  %gep1498 = getelementptr i8, ptr %invariant.gep1497, i64 %indvars.iv1161
  store i8 %874, ptr %gep1498, align 1, !tbaa !117
  %indvars.iv.next1162 = add nuw nsw i64 %indvars.iv1161, 1
  %gep1496.1 = getelementptr i8, ptr %invariant.gep1495, i64 %indvars.iv.next1162
  %875 = load i8, ptr %gep1496.1, align 1, !tbaa !117
  %gep1498.1 = getelementptr i8, ptr %invariant.gep1497, i64 %indvars.iv.next1162
  store i8 %875, ptr %gep1498.1, align 1, !tbaa !117
  %indvars.iv.next1162.1 = add nuw nsw i64 %indvars.iv1161, 2
  %gep1496.2 = getelementptr i8, ptr %invariant.gep1495, i64 %indvars.iv.next1162.1
  %876 = load i8, ptr %gep1496.2, align 1, !tbaa !117
  %gep1498.2 = getelementptr i8, ptr %invariant.gep1497, i64 %indvars.iv.next1162.1
  store i8 %876, ptr %gep1498.2, align 1, !tbaa !117
  %indvars.iv.next1162.2 = add nuw nsw i64 %indvars.iv1161, 3
  %gep1496.3 = getelementptr i8, ptr %invariant.gep1495, i64 %indvars.iv.next1162.2
  %877 = load i8, ptr %gep1496.3, align 1, !tbaa !117
  %gep1498.3 = getelementptr i8, ptr %invariant.gep1497, i64 %indvars.iv.next1162.2
  store i8 %877, ptr %gep1498.3, align 1, !tbaa !117
  %indvars.iv.next1162.3 = add nuw nsw i64 %indvars.iv1161, 4
  %exitcond1165.not.3 = icmp eq i64 %indvars.iv.next1162.3, %wide.trip.count1164
  br i1 %exitcond1165.not.3, label %._crit_edge880, label %vec.epilog.scalar.ph, !llvm.loop !133

._crit_edge880:                                   ; preds = %vec.epilog.scalar.ph.prol.loopexit, %vec.epilog.scalar.ph, %middle.block1744, %vec.epilog.middle.block, %852
  %indvars.iv.next1167 = add nuw nsw i64 %indvars.iv1166, 1
  %exitcond1170.not = icmp eq i64 %indvars.iv.next1167, %wide.trip.count1169
  br i1 %exitcond1170.not, label %.loopexit, label %852, !llvm.loop !134

878:                                              ; preds = %848
  %879 = and i32 %757, 16
  %.not709 = icmp eq i32 %879, 0
  br i1 %.not709, label %.preheader782, label %.preheader784

.preheader784:                                    ; preds = %878
  %880 = icmp sgt i32 %.0659, 0
  br i1 %880, label %.lr.ph888, label %.loopexit

.lr.ph888:                                        ; preds = %.preheader784
  %881 = icmp sgt i32 %.0658, 0
  %882 = sext i32 %6 to i64
  %883 = sext i32 %8 to i64
  %wide.trip.count1179 = zext nneg i32 %.0659 to i64
  %wide.trip.count1174 = zext i32 %.0658 to i64
  %min.iters.check1772 = icmp ult i32 %.0658, 8
  %ident.check1766 = icmp ne i32 %8, 1
  %ident.check1767 = icmp ne i32 %6, 1
  %884 = or i1 %ident.check1766, %ident.check1767
  %min.iters.check1775 = icmp ult i32 %.0658, 32
  %n.vec1779 = and i64 %wide.trip.count1174, 2147483616
  %cmp.n1785 = icmp eq i64 %n.vec1779, %wide.trip.count1174
  %n.vec.remaining1790 = and i64 %wide.trip.count1174, 24
  %min.epilog.iters.check1791 = icmp eq i64 %n.vec.remaining1790, 0
  %n.vec1794 = and i64 %wide.trip.count1174, 2147483640
  %cmp.n1800 = icmp eq i64 %n.vec1794, %wide.trip.count1174
  %xtraiter2230 = and i64 %wide.trip.count1174, 3
  %lcmp.mod2231.not = icmp eq i64 %xtraiter2230, 0
  br label %890

.preheader782:                                    ; preds = %878
  %885 = icmp sgt i32 %.0658, 0
  br i1 %885, label %.preheader781.lr.ph, label %.loopexit

.preheader781.lr.ph:                              ; preds = %.preheader782
  %886 = icmp sgt i32 %.0659, 0
  %887 = sext i32 %.0659 to i64
  %888 = sext i32 %6 to i64
  %wide.trip.count1189 = zext nneg i32 %.0658 to i64
  %wide.trip.count1184 = zext i32 %.0659 to i64
  %xtraiter2234 = and i64 %wide.trip.count1184, 1
  %889 = icmp eq i32 %.0659, 1
  %unroll_iter2237 = and i64 %wide.trip.count1184, 2147483646
  %lcmp.mod2236.not = icmp eq i64 %xtraiter2234, 0
  br label %.preheader781

890:                                              ; preds = %.lr.ph888, %._crit_edge886
  %indvars.iv1176 = phi i64 [ 0, %.lr.ph888 ], [ %indvars.iv.next1177, %._crit_edge886 ]
  %891 = add i64 %indvars.iv1176, %21
  %892 = sub i64 %24, %891
  br i1 %881, label %iter.check1774, label %._crit_edge886

iter.check1774:                                   ; preds = %890
  %893 = getelementptr inbounds i64, ptr %18, i64 %indvars.iv1176
  %894 = load i64, ptr %893, align 8, !tbaa !23
  %sext1410 = shl i64 %894, 32
  %895 = ashr exact i64 %sext1410, 32
  %invariant.gep1499 = getelementptr i8, ptr %20, i64 %indvars.iv1176
  %invariant.gep1501 = getelementptr i8, ptr %23, i64 %895
  br i1 %min.iters.check1772, label %.lr.ph885.preheader, label %vector.scevcheck1765

vector.scevcheck1765:                             ; preds = %iter.check1774
  %896 = add i64 %892, %895
  %diff.check1769 = icmp ult i64 %896, 32
  %or.cond2142 = select i1 %884, i1 true, i1 %diff.check1769
  br i1 %or.cond2142, label %.lr.ph885.preheader, label %vector.main.loop.iter.check1776

vector.main.loop.iter.check1776:                  ; preds = %vector.scevcheck1765
  br i1 %min.iters.check1775, label %vec.epilog.ph1788, label %vector.body1780

vector.body1780:                                  ; preds = %vector.main.loop.iter.check1776, %vector.body1780
  %index1781 = phi i64 [ %index.next1784, %vector.body1780 ], [ 0, %vector.main.loop.iter.check1776 ]
  %897 = getelementptr i8, ptr %invariant.gep1499, i64 %index1781
  %898 = getelementptr i8, ptr %897, i64 16
  %wide.load1782 = load <16 x i8>, ptr %897, align 1, !tbaa !117
  %wide.load1783 = load <16 x i8>, ptr %898, align 1, !tbaa !117
  %899 = getelementptr i8, ptr %invariant.gep1501, i64 %index1781
  %900 = getelementptr i8, ptr %899, i64 16
  store <16 x i8> %wide.load1782, ptr %899, align 1, !tbaa !117
  store <16 x i8> %wide.load1783, ptr %900, align 1, !tbaa !117
  %index.next1784 = add nuw i64 %index1781, 32
  %901 = icmp eq i64 %index.next1784, %n.vec1779
  br i1 %901, label %middle.block1770, label %vector.body1780, !llvm.loop !135

middle.block1770:                                 ; preds = %vector.body1780
  br i1 %cmp.n1785, label %._crit_edge886, label %vec.epilog.iter.check1789

vec.epilog.iter.check1789:                        ; preds = %middle.block1770
  br i1 %min.epilog.iters.check1791, label %.lr.ph885.preheader, label %vec.epilog.ph1788

vec.epilog.ph1788:                                ; preds = %vector.main.loop.iter.check1776, %vec.epilog.iter.check1789
  %vec.epilog.resume.val1792 = phi i64 [ %n.vec1779, %vec.epilog.iter.check1789 ], [ 0, %vector.main.loop.iter.check1776 ]
  br label %vec.epilog.vector.body1796

vec.epilog.vector.body1796:                       ; preds = %vec.epilog.vector.body1796, %vec.epilog.ph1788
  %index1797 = phi i64 [ %vec.epilog.resume.val1792, %vec.epilog.ph1788 ], [ %index.next1799, %vec.epilog.vector.body1796 ]
  %902 = getelementptr i8, ptr %invariant.gep1499, i64 %index1797
  %wide.load1798 = load <8 x i8>, ptr %902, align 1, !tbaa !117
  %903 = getelementptr i8, ptr %invariant.gep1501, i64 %index1797
  store <8 x i8> %wide.load1798, ptr %903, align 1, !tbaa !117
  %index.next1799 = add nuw i64 %index1797, 8
  %904 = icmp eq i64 %index.next1799, %n.vec1794
  br i1 %904, label %vec.epilog.middle.block1786, label %vec.epilog.vector.body1796, !llvm.loop !136

vec.epilog.middle.block1786:                      ; preds = %vec.epilog.vector.body1796
  br i1 %cmp.n1800, label %._crit_edge886, label %.lr.ph885.preheader

.lr.ph885.preheader:                              ; preds = %vec.epilog.middle.block1786, %vector.scevcheck1765, %iter.check1774, %vec.epilog.iter.check1789
  %indvars.iv1171.ph = phi i64 [ 0, %iter.check1774 ], [ 0, %vector.scevcheck1765 ], [ %n.vec1779, %vec.epilog.iter.check1789 ], [ %n.vec1794, %vec.epilog.middle.block1786 ]
  br i1 %lcmp.mod2231.not, label %.lr.ph885.prol.loopexit, label %.lr.ph885.prol

.lr.ph885.prol:                                   ; preds = %.lr.ph885.preheader, %.lr.ph885.prol
  %indvars.iv1171.prol = phi i64 [ %indvars.iv.next1172.prol, %.lr.ph885.prol ], [ %indvars.iv1171.ph, %.lr.ph885.preheader ]
  %prol.iter2232 = phi i64 [ %prol.iter2232.next, %.lr.ph885.prol ], [ 0, %.lr.ph885.preheader ]
  %905 = mul nsw i64 %indvars.iv1171.prol, %882
  %gep1500.prol = getelementptr i8, ptr %invariant.gep1499, i64 %905
  %906 = load i8, ptr %gep1500.prol, align 1, !tbaa !117
  %907 = mul nsw i64 %indvars.iv1171.prol, %883
  %gep1502.prol = getelementptr i8, ptr %invariant.gep1501, i64 %907
  store i8 %906, ptr %gep1502.prol, align 1, !tbaa !117
  %indvars.iv.next1172.prol = add nuw nsw i64 %indvars.iv1171.prol, 1
  %prol.iter2232.next = add i64 %prol.iter2232, 1
  %prol.iter2232.cmp.not = icmp eq i64 %prol.iter2232.next, %xtraiter2230
  br i1 %prol.iter2232.cmp.not, label %.lr.ph885.prol.loopexit, label %.lr.ph885.prol, !llvm.loop !137

.lr.ph885.prol.loopexit:                          ; preds = %.lr.ph885.prol, %.lr.ph885.preheader
  %indvars.iv1171.unr = phi i64 [ %indvars.iv1171.ph, %.lr.ph885.preheader ], [ %indvars.iv.next1172.prol, %.lr.ph885.prol ]
  %908 = sub nsw i64 %indvars.iv1171.ph, %wide.trip.count1174
  %909 = icmp ugt i64 %908, -4
  br i1 %909, label %._crit_edge886, label %.lr.ph885

.lr.ph885:                                        ; preds = %.lr.ph885.prol.loopexit, %.lr.ph885
  %indvars.iv1171 = phi i64 [ %indvars.iv.next1172.3, %.lr.ph885 ], [ %indvars.iv1171.unr, %.lr.ph885.prol.loopexit ]
  %910 = mul nsw i64 %indvars.iv1171, %882
  %gep1500 = getelementptr i8, ptr %invariant.gep1499, i64 %910
  %911 = load i8, ptr %gep1500, align 1, !tbaa !117
  %912 = mul nsw i64 %indvars.iv1171, %883
  %gep1502 = getelementptr i8, ptr %invariant.gep1501, i64 %912
  store i8 %911, ptr %gep1502, align 1, !tbaa !117
  %indvars.iv.next1172 = add nuw nsw i64 %indvars.iv1171, 1
  %913 = mul nsw i64 %indvars.iv.next1172, %882
  %gep1500.1 = getelementptr i8, ptr %invariant.gep1499, i64 %913
  %914 = load i8, ptr %gep1500.1, align 1, !tbaa !117
  %915 = mul nsw i64 %indvars.iv.next1172, %883
  %gep1502.1 = getelementptr i8, ptr %invariant.gep1501, i64 %915
  store i8 %914, ptr %gep1502.1, align 1, !tbaa !117
  %indvars.iv.next1172.1 = add nuw nsw i64 %indvars.iv1171, 2
  %916 = mul nsw i64 %indvars.iv.next1172.1, %882
  %gep1500.2 = getelementptr i8, ptr %invariant.gep1499, i64 %916
  %917 = load i8, ptr %gep1500.2, align 1, !tbaa !117
  %918 = mul nsw i64 %indvars.iv.next1172.1, %883
  %gep1502.2 = getelementptr i8, ptr %invariant.gep1501, i64 %918
  store i8 %917, ptr %gep1502.2, align 1, !tbaa !117
  %indvars.iv.next1172.2 = add nuw nsw i64 %indvars.iv1171, 3
  %919 = mul nsw i64 %indvars.iv.next1172.2, %882
  %gep1500.3 = getelementptr i8, ptr %invariant.gep1499, i64 %919
  %920 = load i8, ptr %gep1500.3, align 1, !tbaa !117
  %921 = mul nsw i64 %indvars.iv.next1172.2, %883
  %gep1502.3 = getelementptr i8, ptr %invariant.gep1501, i64 %921
  store i8 %920, ptr %gep1502.3, align 1, !tbaa !117
  %indvars.iv.next1172.3 = add nuw nsw i64 %indvars.iv1171, 4
  %exitcond1175.not.3 = icmp eq i64 %indvars.iv.next1172.3, %wide.trip.count1174
  br i1 %exitcond1175.not.3, label %._crit_edge886, label %.lr.ph885, !llvm.loop !138

._crit_edge886:                                   ; preds = %.lr.ph885.prol.loopexit, %.lr.ph885, %middle.block1770, %vec.epilog.middle.block1786, %890
  %indvars.iv.next1177 = add nuw nsw i64 %indvars.iv1176, 1
  %exitcond1180.not = icmp eq i64 %indvars.iv.next1177, %wide.trip.count1179
  br i1 %exitcond1180.not, label %.loopexit, label %890, !llvm.loop !139

.preheader781:                                    ; preds = %.preheader781.lr.ph, %._crit_edge891
  %indvars.iv1186 = phi i64 [ 0, %.preheader781.lr.ph ], [ %indvars.iv.next1187, %._crit_edge891 ]
  br i1 %886, label %.lr.ph890, label %._crit_edge891

.lr.ph890:                                        ; preds = %.preheader781
  %922 = mul nuw nsw i64 %indvars.iv1186, %887
  %923 = mul nsw i64 %indvars.iv1186, %888
  %invariant.gep1503 = getelementptr i64, ptr %18, i64 %922
  %invariant.gep1505 = getelementptr i8, ptr %20, i64 %923
  br i1 %889, label %._crit_edge891.loopexit.unr-lcssa, label %.lr.ph890.new

.lr.ph890.new:                                    ; preds = %.lr.ph890, %.lr.ph890.new
  %indvars.iv1181 = phi i64 [ %indvars.iv.next1182.1, %.lr.ph890.new ], [ 0, %.lr.ph890 ]
  %niter2238 = phi i64 [ %niter2238.next.1, %.lr.ph890.new ], [ 0, %.lr.ph890 ]
  %gep1504 = getelementptr i64, ptr %invariant.gep1503, i64 %indvars.iv1181
  %924 = load i64, ptr %gep1504, align 8, !tbaa !23
  %gep1506 = getelementptr i8, ptr %invariant.gep1505, i64 %indvars.iv1181
  %925 = load i8, ptr %gep1506, align 1, !tbaa !117
  %sext = shl i64 %924, 32
  %926 = ashr exact i64 %sext, 32
  %927 = getelementptr inbounds i8, ptr %23, i64 %926
  store i8 %925, ptr %927, align 1, !tbaa !117
  %indvars.iv.next1182 = or disjoint i64 %indvars.iv1181, 1
  %gep1504.1 = getelementptr i64, ptr %invariant.gep1503, i64 %indvars.iv.next1182
  %928 = load i64, ptr %gep1504.1, align 8, !tbaa !23
  %gep1506.1 = getelementptr i8, ptr %invariant.gep1505, i64 %indvars.iv.next1182
  %929 = load i8, ptr %gep1506.1, align 1, !tbaa !117
  %sext.1 = shl i64 %928, 32
  %930 = ashr exact i64 %sext.1, 32
  %931 = getelementptr inbounds i8, ptr %23, i64 %930
  store i8 %929, ptr %931, align 1, !tbaa !117
  %indvars.iv.next1182.1 = add nuw nsw i64 %indvars.iv1181, 2
  %niter2238.next.1 = add i64 %niter2238, 2
  %niter2238.ncmp.1 = icmp eq i64 %niter2238.next.1, %unroll_iter2237
  br i1 %niter2238.ncmp.1, label %._crit_edge891.loopexit.unr-lcssa, label %.lr.ph890.new, !llvm.loop !140

._crit_edge891.loopexit.unr-lcssa:                ; preds = %.lr.ph890.new, %.lr.ph890
  %indvars.iv1181.unr = phi i64 [ 0, %.lr.ph890 ], [ %indvars.iv.next1182.1, %.lr.ph890.new ]
  br i1 %lcmp.mod2236.not, label %._crit_edge891, label %._crit_edge891.loopexit.epilog-lcssa

._crit_edge891.loopexit.epilog-lcssa:             ; preds = %._crit_edge891.loopexit.unr-lcssa
  %gep1504.epil = getelementptr i64, ptr %invariant.gep1503, i64 %indvars.iv1181.unr
  %932 = load i64, ptr %gep1504.epil, align 8, !tbaa !23
  %gep1506.epil = getelementptr i8, ptr %invariant.gep1505, i64 %indvars.iv1181.unr
  %933 = load i8, ptr %gep1506.epil, align 1, !tbaa !117
  %sext.epil = shl i64 %932, 32
  %934 = ashr exact i64 %sext.epil, 32
  %935 = getelementptr inbounds i8, ptr %23, i64 %934
  store i8 %933, ptr %935, align 1, !tbaa !117
  br label %._crit_edge891

._crit_edge891:                                   ; preds = %._crit_edge891.loopexit.epilog-lcssa, %._crit_edge891.loopexit.unr-lcssa, %.preheader781
  %indvars.iv.next1187 = add nuw nsw i64 %indvars.iv1186, 1
  %exitcond1190.not = icmp eq i64 %indvars.iv.next1187, %wide.trip.count1189
  br i1 %exitcond1190.not, label %.loopexit, label %.preheader781, !llvm.loop !141

936:                                              ; preds = %756
  br i1 %17, label %937, label %1033

937:                                              ; preds = %936
  br i1 %.not706, label %966, label %.preheader765

.preheader765:                                    ; preds = %937
  %938 = icmp sgt i32 %.0, 0
  br i1 %938, label %.lr.ph930, label %.loopexit

.lr.ph930:                                        ; preds = %.preheader765
  %939 = icmp sgt i32 %.0657, 0
  %940 = sext i32 %8 to i64
  %wide.trip.count1262 = zext nneg i32 %.0 to i64
  %wide.trip.count1257 = zext i32 %.0657 to i64
  %min.iters.check1943 = icmp ult i32 %.0657, 8
  %min.iters.check1946 = icmp ult i32 %.0657, 32
  %n.vec1950 = and i64 %wide.trip.count1257, 2147483616
  %cmp.n1956 = icmp eq i64 %n.vec1950, %wide.trip.count1257
  %n.vec.remaining1961 = and i64 %wide.trip.count1257, 24
  %min.epilog.iters.check1962 = icmp eq i64 %n.vec.remaining1961, 0
  %n.vec1965 = and i64 %wide.trip.count1257, 2147483640
  %cmp.n1971 = icmp eq i64 %n.vec1965, %wide.trip.count1257
  %xtraiter2263 = and i64 %wide.trip.count1257, 3
  %lcmp.mod2264.not = icmp eq i64 %xtraiter2263, 0
  br label %941

941:                                              ; preds = %.lr.ph930, %._crit_edge928
  %indvars.iv1259 = phi i64 [ 0, %.lr.ph930 ], [ %indvars.iv.next1260, %._crit_edge928 ]
  %942 = mul i64 %indvars.iv1259, %940
  %943 = add i64 %942, %24
  br i1 %939, label %iter.check1945, label %._crit_edge928

iter.check1945:                                   ; preds = %941
  %944 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1259
  %945 = load i32, ptr %944, align 4, !tbaa !51
  %946 = mul nsw i32 %945, %6
  %947 = mul nsw i64 %indvars.iv1259, %940
  %948 = sext i32 %946 to i64
  %invariant.gep1531 = getelementptr i8, ptr %20, i64 %948
  %invariant.gep1533 = getelementptr i8, ptr %23, i64 %947
  br i1 %min.iters.check1943, label %vec.epilog.scalar.ph1958.preheader, label %vector.memcheck1939

vector.memcheck1939:                              ; preds = %iter.check1945
  %949 = add i64 %21, %948
  %950 = sub i64 %943, %949
  %diff.check1940 = icmp ult i64 %950, 32
  br i1 %diff.check1940, label %vec.epilog.scalar.ph1958.preheader, label %vector.main.loop.iter.check1947

vector.main.loop.iter.check1947:                  ; preds = %vector.memcheck1939
  br i1 %min.iters.check1946, label %vec.epilog.ph1959, label %vector.body1951

vector.body1951:                                  ; preds = %vector.main.loop.iter.check1947, %vector.body1951
  %index1952 = phi i64 [ %index.next1955, %vector.body1951 ], [ 0, %vector.main.loop.iter.check1947 ]
  %951 = getelementptr i8, ptr %invariant.gep1531, i64 %index1952
  %952 = getelementptr i8, ptr %951, i64 16
  %wide.load1953 = load <16 x i8>, ptr %951, align 1, !tbaa !117
  %wide.load1954 = load <16 x i8>, ptr %952, align 1, !tbaa !117
  %953 = getelementptr i8, ptr %invariant.gep1533, i64 %index1952
  %954 = getelementptr i8, ptr %953, i64 16
  store <16 x i8> %wide.load1953, ptr %953, align 1, !tbaa !117
  store <16 x i8> %wide.load1954, ptr %954, align 1, !tbaa !117
  %index.next1955 = add nuw i64 %index1952, 32
  %955 = icmp eq i64 %index.next1955, %n.vec1950
  br i1 %955, label %middle.block1941, label %vector.body1951, !llvm.loop !142

middle.block1941:                                 ; preds = %vector.body1951
  br i1 %cmp.n1956, label %._crit_edge928, label %vec.epilog.iter.check1960

vec.epilog.iter.check1960:                        ; preds = %middle.block1941
  br i1 %min.epilog.iters.check1962, label %vec.epilog.scalar.ph1958.preheader, label %vec.epilog.ph1959

vec.epilog.ph1959:                                ; preds = %vector.main.loop.iter.check1947, %vec.epilog.iter.check1960
  %vec.epilog.resume.val1963 = phi i64 [ %n.vec1950, %vec.epilog.iter.check1960 ], [ 0, %vector.main.loop.iter.check1947 ]
  br label %vec.epilog.vector.body1967

vec.epilog.vector.body1967:                       ; preds = %vec.epilog.vector.body1967, %vec.epilog.ph1959
  %index1968 = phi i64 [ %vec.epilog.resume.val1963, %vec.epilog.ph1959 ], [ %index.next1970, %vec.epilog.vector.body1967 ]
  %956 = getelementptr i8, ptr %invariant.gep1531, i64 %index1968
  %wide.load1969 = load <8 x i8>, ptr %956, align 1, !tbaa !117
  %957 = getelementptr i8, ptr %invariant.gep1533, i64 %index1968
  store <8 x i8> %wide.load1969, ptr %957, align 1, !tbaa !117
  %index.next1970 = add nuw i64 %index1968, 8
  %958 = icmp eq i64 %index.next1970, %n.vec1965
  br i1 %958, label %vec.epilog.middle.block1957, label %vec.epilog.vector.body1967, !llvm.loop !143

vec.epilog.middle.block1957:                      ; preds = %vec.epilog.vector.body1967
  br i1 %cmp.n1971, label %._crit_edge928, label %vec.epilog.scalar.ph1958.preheader

vec.epilog.scalar.ph1958.preheader:               ; preds = %vec.epilog.middle.block1957, %vector.memcheck1939, %iter.check1945, %vec.epilog.iter.check1960
  %indvars.iv1254.ph = phi i64 [ 0, %iter.check1945 ], [ 0, %vector.memcheck1939 ], [ %n.vec1950, %vec.epilog.iter.check1960 ], [ %n.vec1965, %vec.epilog.middle.block1957 ]
  br i1 %lcmp.mod2264.not, label %vec.epilog.scalar.ph1958.prol.loopexit, label %vec.epilog.scalar.ph1958.prol

vec.epilog.scalar.ph1958.prol:                    ; preds = %vec.epilog.scalar.ph1958.preheader, %vec.epilog.scalar.ph1958.prol
  %indvars.iv1254.prol = phi i64 [ %indvars.iv.next1255.prol, %vec.epilog.scalar.ph1958.prol ], [ %indvars.iv1254.ph, %vec.epilog.scalar.ph1958.preheader ]
  %prol.iter2265 = phi i64 [ %prol.iter2265.next, %vec.epilog.scalar.ph1958.prol ], [ 0, %vec.epilog.scalar.ph1958.preheader ]
  %gep1532.prol = getelementptr i8, ptr %invariant.gep1531, i64 %indvars.iv1254.prol
  %959 = load i8, ptr %gep1532.prol, align 1, !tbaa !117
  %gep1534.prol = getelementptr i8, ptr %invariant.gep1533, i64 %indvars.iv1254.prol
  store i8 %959, ptr %gep1534.prol, align 1, !tbaa !117
  %indvars.iv.next1255.prol = add nuw nsw i64 %indvars.iv1254.prol, 1
  %prol.iter2265.next = add i64 %prol.iter2265, 1
  %prol.iter2265.cmp.not = icmp eq i64 %prol.iter2265.next, %xtraiter2263
  br i1 %prol.iter2265.cmp.not, label %vec.epilog.scalar.ph1958.prol.loopexit, label %vec.epilog.scalar.ph1958.prol, !llvm.loop !144

vec.epilog.scalar.ph1958.prol.loopexit:           ; preds = %vec.epilog.scalar.ph1958.prol, %vec.epilog.scalar.ph1958.preheader
  %indvars.iv1254.unr = phi i64 [ %indvars.iv1254.ph, %vec.epilog.scalar.ph1958.preheader ], [ %indvars.iv.next1255.prol, %vec.epilog.scalar.ph1958.prol ]
  %960 = sub nsw i64 %indvars.iv1254.ph, %wide.trip.count1257
  %961 = icmp ugt i64 %960, -4
  br i1 %961, label %._crit_edge928, label %vec.epilog.scalar.ph1958

vec.epilog.scalar.ph1958:                         ; preds = %vec.epilog.scalar.ph1958.prol.loopexit, %vec.epilog.scalar.ph1958
  %indvars.iv1254 = phi i64 [ %indvars.iv.next1255.3, %vec.epilog.scalar.ph1958 ], [ %indvars.iv1254.unr, %vec.epilog.scalar.ph1958.prol.loopexit ]
  %gep1532 = getelementptr i8, ptr %invariant.gep1531, i64 %indvars.iv1254
  %962 = load i8, ptr %gep1532, align 1, !tbaa !117
  %gep1534 = getelementptr i8, ptr %invariant.gep1533, i64 %indvars.iv1254
  store i8 %962, ptr %gep1534, align 1, !tbaa !117
  %indvars.iv.next1255 = add nuw nsw i64 %indvars.iv1254, 1
  %gep1532.1 = getelementptr i8, ptr %invariant.gep1531, i64 %indvars.iv.next1255
  %963 = load i8, ptr %gep1532.1, align 1, !tbaa !117
  %gep1534.1 = getelementptr i8, ptr %invariant.gep1533, i64 %indvars.iv.next1255
  store i8 %963, ptr %gep1534.1, align 1, !tbaa !117
  %indvars.iv.next1255.1 = add nuw nsw i64 %indvars.iv1254, 2
  %gep1532.2 = getelementptr i8, ptr %invariant.gep1531, i64 %indvars.iv.next1255.1
  %964 = load i8, ptr %gep1532.2, align 1, !tbaa !117
  %gep1534.2 = getelementptr i8, ptr %invariant.gep1533, i64 %indvars.iv.next1255.1
  store i8 %964, ptr %gep1534.2, align 1, !tbaa !117
  %indvars.iv.next1255.2 = add nuw nsw i64 %indvars.iv1254, 3
  %gep1532.3 = getelementptr i8, ptr %invariant.gep1531, i64 %indvars.iv.next1255.2
  %965 = load i8, ptr %gep1532.3, align 1, !tbaa !117
  %gep1534.3 = getelementptr i8, ptr %invariant.gep1533, i64 %indvars.iv.next1255.2
  store i8 %965, ptr %gep1534.3, align 1, !tbaa !117
  %indvars.iv.next1255.3 = add nuw nsw i64 %indvars.iv1254, 4
  %exitcond1258.not.3 = icmp eq i64 %indvars.iv.next1255.3, %wide.trip.count1257
  br i1 %exitcond1258.not.3, label %._crit_edge928, label %vec.epilog.scalar.ph1958, !llvm.loop !145

._crit_edge928:                                   ; preds = %vec.epilog.scalar.ph1958.prol.loopexit, %vec.epilog.scalar.ph1958, %middle.block1941, %vec.epilog.middle.block1957, %941
  %indvars.iv.next1260 = add nuw nsw i64 %indvars.iv1259, 1
  %exitcond1263.not = icmp eq i64 %indvars.iv.next1260, %wide.trip.count1262
  br i1 %exitcond1263.not, label %.loopexit, label %941, !llvm.loop !146

966:                                              ; preds = %937
  %967 = and i32 %757, 16
  %.not707 = icmp eq i32 %967, 0
  br i1 %.not707, label %.preheader761, label %.preheader763

.preheader763:                                    ; preds = %966
  %968 = icmp sgt i32 %.0657, 0
  br i1 %968, label %.lr.ph936, label %.loopexit

.lr.ph936:                                        ; preds = %.preheader763
  %969 = icmp sgt i32 %.0, 0
  %970 = sext i32 %6 to i64
  %971 = sext i32 %8 to i64
  %wide.trip.count1272 = zext nneg i32 %.0657 to i64
  %wide.trip.count1267 = zext i32 %.0 to i64
  %min.iters.check1979 = icmp ult i32 %.0, 8
  %ident.check1973 = icmp ne i32 %8, 1
  %ident.check1974 = icmp ne i32 %6, 1
  %972 = or i1 %ident.check1973, %ident.check1974
  %min.iters.check1982 = icmp ult i32 %.0, 32
  %n.vec1986 = and i64 %wide.trip.count1267, 2147483616
  %cmp.n1992 = icmp eq i64 %n.vec1986, %wide.trip.count1267
  %n.vec.remaining1997 = and i64 %wide.trip.count1267, 24
  %min.epilog.iters.check1998 = icmp eq i64 %n.vec.remaining1997, 0
  %n.vec2001 = and i64 %wide.trip.count1267, 2147483640
  %cmp.n2007 = icmp eq i64 %n.vec2001, %wide.trip.count1267
  %xtraiter2266 = and i64 %wide.trip.count1267, 3
  %lcmp.mod2267.not = icmp eq i64 %xtraiter2266, 0
  br label %979

.preheader761:                                    ; preds = %966
  %973 = icmp sgt i32 %.0, 0
  br i1 %973, label %.preheader760.lr.ph, label %.loopexit

.preheader760.lr.ph:                              ; preds = %.preheader761
  %974 = icmp sgt i32 %.0657, 0
  %975 = sext i32 %.0657 to i64
  %976 = sext i32 %8 to i64
  %wide.trip.count1282 = zext nneg i32 %.0 to i64
  %wide.trip.count1277 = zext i32 %.0657 to i64
  %977 = add nsw i64 %wide.trip.count1277, -1
  %xtraiter2270 = and i64 %wide.trip.count1277, 3
  %978 = icmp ult i64 %977, 3
  %unroll_iter2273 = and i64 %wide.trip.count1277, 2147483644
  %lcmp.mod2272.not = icmp eq i64 %xtraiter2270, 0
  br label %.preheader760

979:                                              ; preds = %.lr.ph936, %._crit_edge934
  %indvars.iv1269 = phi i64 [ 0, %.lr.ph936 ], [ %indvars.iv.next1270, %._crit_edge934 ]
  %980 = add i64 %indvars.iv1269, %24
  br i1 %969, label %iter.check1981, label %._crit_edge934

iter.check1981:                                   ; preds = %979
  %981 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1269
  %982 = load i32, ptr %981, align 4, !tbaa !51
  %983 = sext i32 %982 to i64
  %invariant.gep1535 = getelementptr i8, ptr %20, i64 %983
  %invariant.gep1537 = getelementptr i8, ptr %23, i64 %indvars.iv1269
  %brmerge2329 = select i1 %min.iters.check1979, i1 true, i1 %972
  br i1 %brmerge2329, label %.lr.ph933.preheader, label %vector.memcheck1975

vector.memcheck1975:                              ; preds = %iter.check1981
  %984 = add i64 %21, %983
  %985 = sub i64 %980, %984
  %diff.check1976 = icmp ult i64 %985, 32
  br i1 %diff.check1976, label %.lr.ph933.preheader, label %vector.main.loop.iter.check1983

vector.main.loop.iter.check1983:                  ; preds = %vector.memcheck1975
  br i1 %min.iters.check1982, label %vec.epilog.ph1995, label %vector.body1987

vector.body1987:                                  ; preds = %vector.main.loop.iter.check1983, %vector.body1987
  %index1988 = phi i64 [ %index.next1991, %vector.body1987 ], [ 0, %vector.main.loop.iter.check1983 ]
  %986 = getelementptr i8, ptr %invariant.gep1535, i64 %index1988
  %987 = getelementptr i8, ptr %986, i64 16
  %wide.load1989 = load <16 x i8>, ptr %986, align 1, !tbaa !117
  %wide.load1990 = load <16 x i8>, ptr %987, align 1, !tbaa !117
  %988 = getelementptr i8, ptr %invariant.gep1537, i64 %index1988
  %989 = getelementptr i8, ptr %988, i64 16
  store <16 x i8> %wide.load1989, ptr %988, align 1, !tbaa !117
  store <16 x i8> %wide.load1990, ptr %989, align 1, !tbaa !117
  %index.next1991 = add nuw i64 %index1988, 32
  %990 = icmp eq i64 %index.next1991, %n.vec1986
  br i1 %990, label %middle.block1977, label %vector.body1987, !llvm.loop !147

middle.block1977:                                 ; preds = %vector.body1987
  br i1 %cmp.n1992, label %._crit_edge934, label %vec.epilog.iter.check1996

vec.epilog.iter.check1996:                        ; preds = %middle.block1977
  br i1 %min.epilog.iters.check1998, label %.lr.ph933.preheader, label %vec.epilog.ph1995

vec.epilog.ph1995:                                ; preds = %vector.main.loop.iter.check1983, %vec.epilog.iter.check1996
  %vec.epilog.resume.val1999 = phi i64 [ %n.vec1986, %vec.epilog.iter.check1996 ], [ 0, %vector.main.loop.iter.check1983 ]
  br label %vec.epilog.vector.body2003

vec.epilog.vector.body2003:                       ; preds = %vec.epilog.vector.body2003, %vec.epilog.ph1995
  %index2004 = phi i64 [ %vec.epilog.resume.val1999, %vec.epilog.ph1995 ], [ %index.next2006, %vec.epilog.vector.body2003 ]
  %991 = getelementptr i8, ptr %invariant.gep1535, i64 %index2004
  %wide.load2005 = load <8 x i8>, ptr %991, align 1, !tbaa !117
  %992 = getelementptr i8, ptr %invariant.gep1537, i64 %index2004
  store <8 x i8> %wide.load2005, ptr %992, align 1, !tbaa !117
  %index.next2006 = add nuw i64 %index2004, 8
  %993 = icmp eq i64 %index.next2006, %n.vec2001
  br i1 %993, label %vec.epilog.middle.block1993, label %vec.epilog.vector.body2003, !llvm.loop !148

vec.epilog.middle.block1993:                      ; preds = %vec.epilog.vector.body2003
  br i1 %cmp.n2007, label %._crit_edge934, label %.lr.ph933.preheader

.lr.ph933.preheader:                              ; preds = %iter.check1981, %vec.epilog.middle.block1993, %vector.memcheck1975, %vec.epilog.iter.check1996
  %indvars.iv1264.ph = phi i64 [ 0, %iter.check1981 ], [ 0, %vector.memcheck1975 ], [ %n.vec1986, %vec.epilog.iter.check1996 ], [ %n.vec2001, %vec.epilog.middle.block1993 ]
  br i1 %lcmp.mod2267.not, label %.lr.ph933.prol.loopexit, label %.lr.ph933.prol

.lr.ph933.prol:                                   ; preds = %.lr.ph933.preheader, %.lr.ph933.prol
  %indvars.iv1264.prol = phi i64 [ %indvars.iv.next1265.prol, %.lr.ph933.prol ], [ %indvars.iv1264.ph, %.lr.ph933.preheader ]
  %prol.iter2268 = phi i64 [ %prol.iter2268.next, %.lr.ph933.prol ], [ 0, %.lr.ph933.preheader ]
  %994 = mul nsw i64 %indvars.iv1264.prol, %970
  %gep1536.prol = getelementptr i8, ptr %invariant.gep1535, i64 %994
  %995 = load i8, ptr %gep1536.prol, align 1, !tbaa !117
  %996 = mul nsw i64 %indvars.iv1264.prol, %971
  %gep1538.prol = getelementptr i8, ptr %invariant.gep1537, i64 %996
  store i8 %995, ptr %gep1538.prol, align 1, !tbaa !117
  %indvars.iv.next1265.prol = add nuw nsw i64 %indvars.iv1264.prol, 1
  %prol.iter2268.next = add i64 %prol.iter2268, 1
  %prol.iter2268.cmp.not = icmp eq i64 %prol.iter2268.next, %xtraiter2266
  br i1 %prol.iter2268.cmp.not, label %.lr.ph933.prol.loopexit, label %.lr.ph933.prol, !llvm.loop !149

.lr.ph933.prol.loopexit:                          ; preds = %.lr.ph933.prol, %.lr.ph933.preheader
  %indvars.iv1264.unr = phi i64 [ %indvars.iv1264.ph, %.lr.ph933.preheader ], [ %indvars.iv.next1265.prol, %.lr.ph933.prol ]
  %997 = sub nsw i64 %indvars.iv1264.ph, %wide.trip.count1267
  %998 = icmp ugt i64 %997, -4
  br i1 %998, label %._crit_edge934, label %.lr.ph933

.lr.ph933:                                        ; preds = %.lr.ph933.prol.loopexit, %.lr.ph933
  %indvars.iv1264 = phi i64 [ %indvars.iv.next1265.3, %.lr.ph933 ], [ %indvars.iv1264.unr, %.lr.ph933.prol.loopexit ]
  %999 = mul nsw i64 %indvars.iv1264, %970
  %gep1536 = getelementptr i8, ptr %invariant.gep1535, i64 %999
  %1000 = load i8, ptr %gep1536, align 1, !tbaa !117
  %1001 = mul nsw i64 %indvars.iv1264, %971
  %gep1538 = getelementptr i8, ptr %invariant.gep1537, i64 %1001
  store i8 %1000, ptr %gep1538, align 1, !tbaa !117
  %indvars.iv.next1265 = add nuw nsw i64 %indvars.iv1264, 1
  %1002 = mul nsw i64 %indvars.iv.next1265, %970
  %gep1536.1 = getelementptr i8, ptr %invariant.gep1535, i64 %1002
  %1003 = load i8, ptr %gep1536.1, align 1, !tbaa !117
  %1004 = mul nsw i64 %indvars.iv.next1265, %971
  %gep1538.1 = getelementptr i8, ptr %invariant.gep1537, i64 %1004
  store i8 %1003, ptr %gep1538.1, align 1, !tbaa !117
  %indvars.iv.next1265.1 = add nuw nsw i64 %indvars.iv1264, 2
  %1005 = mul nsw i64 %indvars.iv.next1265.1, %970
  %gep1536.2 = getelementptr i8, ptr %invariant.gep1535, i64 %1005
  %1006 = load i8, ptr %gep1536.2, align 1, !tbaa !117
  %1007 = mul nsw i64 %indvars.iv.next1265.1, %971
  %gep1538.2 = getelementptr i8, ptr %invariant.gep1537, i64 %1007
  store i8 %1006, ptr %gep1538.2, align 1, !tbaa !117
  %indvars.iv.next1265.2 = add nuw nsw i64 %indvars.iv1264, 3
  %1008 = mul nsw i64 %indvars.iv.next1265.2, %970
  %gep1536.3 = getelementptr i8, ptr %invariant.gep1535, i64 %1008
  %1009 = load i8, ptr %gep1536.3, align 1, !tbaa !117
  %1010 = mul nsw i64 %indvars.iv.next1265.2, %971
  %gep1538.3 = getelementptr i8, ptr %invariant.gep1537, i64 %1010
  store i8 %1009, ptr %gep1538.3, align 1, !tbaa !117
  %indvars.iv.next1265.3 = add nuw nsw i64 %indvars.iv1264, 4
  %exitcond1268.not.3 = icmp eq i64 %indvars.iv.next1265.3, %wide.trip.count1267
  br i1 %exitcond1268.not.3, label %._crit_edge934, label %.lr.ph933, !llvm.loop !150

._crit_edge934:                                   ; preds = %.lr.ph933.prol.loopexit, %.lr.ph933, %middle.block1977, %vec.epilog.middle.block1993, %979
  %indvars.iv.next1270 = add nuw nsw i64 %indvars.iv1269, 1
  %exitcond1273.not = icmp eq i64 %indvars.iv.next1270, %wide.trip.count1272
  br i1 %exitcond1273.not, label %.loopexit, label %979, !llvm.loop !151

.preheader760:                                    ; preds = %.preheader760.lr.ph, %._crit_edge939
  %indvars.iv1279 = phi i64 [ 0, %.preheader760.lr.ph ], [ %indvars.iv.next1280, %._crit_edge939 ]
  br i1 %974, label %.lr.ph938, label %._crit_edge939

.lr.ph938:                                        ; preds = %.preheader760
  %1011 = mul nuw nsw i64 %indvars.iv1279, %975
  %1012 = mul nsw i64 %indvars.iv1279, %976
  %invariant.gep1539 = getelementptr i32, ptr %18, i64 %1011
  %invariant.gep1541 = getelementptr i8, ptr %23, i64 %1012
  br i1 %978, label %._crit_edge939.loopexit.unr-lcssa, label %.lr.ph938.new

.lr.ph938.new:                                    ; preds = %.lr.ph938, %.lr.ph938.new
  %indvars.iv1274 = phi i64 [ %indvars.iv.next1275.3, %.lr.ph938.new ], [ 0, %.lr.ph938 ]
  %niter2274 = phi i64 [ %niter2274.next.3, %.lr.ph938.new ], [ 0, %.lr.ph938 ]
  %gep1540 = getelementptr i32, ptr %invariant.gep1539, i64 %indvars.iv1274
  %1013 = load i32, ptr %gep1540, align 4, !tbaa !51
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds i8, ptr %20, i64 %1014
  %1016 = load i8, ptr %1015, align 1, !tbaa !117
  %gep1542 = getelementptr i8, ptr %invariant.gep1541, i64 %indvars.iv1274
  store i8 %1016, ptr %gep1542, align 1, !tbaa !117
  %indvars.iv.next1275 = or disjoint i64 %indvars.iv1274, 1
  %gep1540.1 = getelementptr i32, ptr %invariant.gep1539, i64 %indvars.iv.next1275
  %1017 = load i32, ptr %gep1540.1, align 4, !tbaa !51
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds i8, ptr %20, i64 %1018
  %1020 = load i8, ptr %1019, align 1, !tbaa !117
  %gep1542.1 = getelementptr i8, ptr %invariant.gep1541, i64 %indvars.iv.next1275
  store i8 %1020, ptr %gep1542.1, align 1, !tbaa !117
  %indvars.iv.next1275.1 = or disjoint i64 %indvars.iv1274, 2
  %gep1540.2 = getelementptr i32, ptr %invariant.gep1539, i64 %indvars.iv.next1275.1
  %1021 = load i32, ptr %gep1540.2, align 4, !tbaa !51
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds i8, ptr %20, i64 %1022
  %1024 = load i8, ptr %1023, align 1, !tbaa !117
  %gep1542.2 = getelementptr i8, ptr %invariant.gep1541, i64 %indvars.iv.next1275.1
  store i8 %1024, ptr %gep1542.2, align 1, !tbaa !117
  %indvars.iv.next1275.2 = or disjoint i64 %indvars.iv1274, 3
  %gep1540.3 = getelementptr i32, ptr %invariant.gep1539, i64 %indvars.iv.next1275.2
  %1025 = load i32, ptr %gep1540.3, align 4, !tbaa !51
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds i8, ptr %20, i64 %1026
  %1028 = load i8, ptr %1027, align 1, !tbaa !117
  %gep1542.3 = getelementptr i8, ptr %invariant.gep1541, i64 %indvars.iv.next1275.2
  store i8 %1028, ptr %gep1542.3, align 1, !tbaa !117
  %indvars.iv.next1275.3 = add nuw nsw i64 %indvars.iv1274, 4
  %niter2274.next.3 = add i64 %niter2274, 4
  %niter2274.ncmp.3 = icmp eq i64 %niter2274.next.3, %unroll_iter2273
  br i1 %niter2274.ncmp.3, label %._crit_edge939.loopexit.unr-lcssa, label %.lr.ph938.new, !llvm.loop !152

._crit_edge939.loopexit.unr-lcssa:                ; preds = %.lr.ph938.new, %.lr.ph938
  %indvars.iv1274.unr = phi i64 [ 0, %.lr.ph938 ], [ %indvars.iv.next1275.3, %.lr.ph938.new ]
  br i1 %lcmp.mod2272.not, label %._crit_edge939, label %.epil.preheader2269

.epil.preheader2269:                              ; preds = %._crit_edge939.loopexit.unr-lcssa, %.epil.preheader2269
  %indvars.iv1274.epil = phi i64 [ %indvars.iv.next1275.epil, %.epil.preheader2269 ], [ %indvars.iv1274.unr, %._crit_edge939.loopexit.unr-lcssa ]
  %epil.iter2271 = phi i64 [ %epil.iter2271.next, %.epil.preheader2269 ], [ 0, %._crit_edge939.loopexit.unr-lcssa ]
  %gep1540.epil = getelementptr i32, ptr %invariant.gep1539, i64 %indvars.iv1274.epil
  %1029 = load i32, ptr %gep1540.epil, align 4, !tbaa !51
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds i8, ptr %20, i64 %1030
  %1032 = load i8, ptr %1031, align 1, !tbaa !117
  %gep1542.epil = getelementptr i8, ptr %invariant.gep1541, i64 %indvars.iv1274.epil
  store i8 %1032, ptr %gep1542.epil, align 1, !tbaa !117
  %indvars.iv.next1275.epil = add nuw nsw i64 %indvars.iv1274.epil, 1
  %epil.iter2271.next = add i64 %epil.iter2271, 1
  %epil.iter2271.cmp.not = icmp eq i64 %epil.iter2271.next, %xtraiter2270
  br i1 %epil.iter2271.cmp.not, label %._crit_edge939, label %.epil.preheader2269, !llvm.loop !153

._crit_edge939:                                   ; preds = %._crit_edge939.loopexit.unr-lcssa, %.epil.preheader2269, %.preheader760
  %indvars.iv.next1280 = add nuw nsw i64 %indvars.iv1279, 1
  %exitcond1283.not = icmp eq i64 %indvars.iv.next1280, %wide.trip.count1282
  br i1 %exitcond1283.not, label %.loopexit, label %.preheader760, !llvm.loop !154

1033:                                             ; preds = %936
  br i1 %.not706, label %1062, label %.preheader772

.preheader772:                                    ; preds = %1033
  %1034 = icmp sgt i32 %.0658, 0
  br i1 %1034, label %.lr.ph914, label %.loopexit

.lr.ph914:                                        ; preds = %.preheader772
  %1035 = icmp sgt i32 %.0657, 0
  %1036 = sext i32 %6 to i64
  %wide.trip.count1231 = zext nneg i32 %.0658 to i64
  %wide.trip.count1226 = zext i32 %.0657 to i64
  %min.iters.check1874 = icmp ult i32 %.0657, 8
  %min.iters.check1877 = icmp ult i32 %.0657, 32
  %n.vec1881 = and i64 %wide.trip.count1226, 2147483616
  %cmp.n1887 = icmp eq i64 %n.vec1881, %wide.trip.count1226
  %n.vec.remaining1892 = and i64 %wide.trip.count1226, 24
  %min.epilog.iters.check1893 = icmp eq i64 %n.vec.remaining1892, 0
  %n.vec1896 = and i64 %wide.trip.count1226, 2147483640
  %cmp.n1902 = icmp eq i64 %n.vec1896, %wide.trip.count1226
  %xtraiter2251 = and i64 %wide.trip.count1226, 3
  %lcmp.mod2252.not = icmp eq i64 %xtraiter2251, 0
  br label %1037

1037:                                             ; preds = %.lr.ph914, %._crit_edge912
  %indvars.iv1228 = phi i64 [ 0, %.lr.ph914 ], [ %indvars.iv.next1229, %._crit_edge912 ]
  br i1 %1035, label %iter.check1876, label %._crit_edge912

iter.check1876:                                   ; preds = %1037
  %1038 = mul i64 %indvars.iv1228, %1036
  %1039 = add i64 %1038, %21
  %1040 = sub i64 %24, %1039
  %1041 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1228
  %1042 = load i32, ptr %1041, align 4, !tbaa !51
  %1043 = mul nsw i64 %indvars.iv1228, %1036
  %1044 = mul nsw i32 %1042, %8
  %1045 = sext i32 %1044 to i64
  %invariant.gep1519 = getelementptr i8, ptr %20, i64 %1043
  %invariant.gep1521 = getelementptr i8, ptr %23, i64 %1045
  %1046 = add i64 %1040, %1045
  %diff.check1871 = icmp ult i64 %1046, 32
  %or.cond2143 = select i1 %min.iters.check1874, i1 true, i1 %diff.check1871
  br i1 %or.cond2143, label %vec.epilog.scalar.ph1889.preheader, label %vector.main.loop.iter.check1878

vector.main.loop.iter.check1878:                  ; preds = %iter.check1876
  br i1 %min.iters.check1877, label %vec.epilog.ph1890, label %vector.body1882

vector.body1882:                                  ; preds = %vector.main.loop.iter.check1878, %vector.body1882
  %index1883 = phi i64 [ %index.next1886, %vector.body1882 ], [ 0, %vector.main.loop.iter.check1878 ]
  %1047 = getelementptr i8, ptr %invariant.gep1519, i64 %index1883
  %1048 = getelementptr i8, ptr %1047, i64 16
  %wide.load1884 = load <16 x i8>, ptr %1047, align 1, !tbaa !117
  %wide.load1885 = load <16 x i8>, ptr %1048, align 1, !tbaa !117
  %1049 = getelementptr i8, ptr %invariant.gep1521, i64 %index1883
  %1050 = getelementptr i8, ptr %1049, i64 16
  store <16 x i8> %wide.load1884, ptr %1049, align 1, !tbaa !117
  store <16 x i8> %wide.load1885, ptr %1050, align 1, !tbaa !117
  %index.next1886 = add nuw i64 %index1883, 32
  %1051 = icmp eq i64 %index.next1886, %n.vec1881
  br i1 %1051, label %middle.block1872, label %vector.body1882, !llvm.loop !155

middle.block1872:                                 ; preds = %vector.body1882
  br i1 %cmp.n1887, label %._crit_edge912, label %vec.epilog.iter.check1891

vec.epilog.iter.check1891:                        ; preds = %middle.block1872
  br i1 %min.epilog.iters.check1893, label %vec.epilog.scalar.ph1889.preheader, label %vec.epilog.ph1890

vec.epilog.ph1890:                                ; preds = %vector.main.loop.iter.check1878, %vec.epilog.iter.check1891
  %vec.epilog.resume.val1894 = phi i64 [ %n.vec1881, %vec.epilog.iter.check1891 ], [ 0, %vector.main.loop.iter.check1878 ]
  br label %vec.epilog.vector.body1898

vec.epilog.vector.body1898:                       ; preds = %vec.epilog.vector.body1898, %vec.epilog.ph1890
  %index1899 = phi i64 [ %vec.epilog.resume.val1894, %vec.epilog.ph1890 ], [ %index.next1901, %vec.epilog.vector.body1898 ]
  %1052 = getelementptr i8, ptr %invariant.gep1519, i64 %index1899
  %wide.load1900 = load <8 x i8>, ptr %1052, align 1, !tbaa !117
  %1053 = getelementptr i8, ptr %invariant.gep1521, i64 %index1899
  store <8 x i8> %wide.load1900, ptr %1053, align 1, !tbaa !117
  %index.next1901 = add nuw i64 %index1899, 8
  %1054 = icmp eq i64 %index.next1901, %n.vec1896
  br i1 %1054, label %vec.epilog.middle.block1888, label %vec.epilog.vector.body1898, !llvm.loop !156

vec.epilog.middle.block1888:                      ; preds = %vec.epilog.vector.body1898
  br i1 %cmp.n1902, label %._crit_edge912, label %vec.epilog.scalar.ph1889.preheader

vec.epilog.scalar.ph1889.preheader:               ; preds = %vec.epilog.middle.block1888, %iter.check1876, %vec.epilog.iter.check1891
  %indvars.iv1223.ph = phi i64 [ 0, %iter.check1876 ], [ %n.vec1881, %vec.epilog.iter.check1891 ], [ %n.vec1896, %vec.epilog.middle.block1888 ]
  br i1 %lcmp.mod2252.not, label %vec.epilog.scalar.ph1889.prol.loopexit, label %vec.epilog.scalar.ph1889.prol

vec.epilog.scalar.ph1889.prol:                    ; preds = %vec.epilog.scalar.ph1889.preheader, %vec.epilog.scalar.ph1889.prol
  %indvars.iv1223.prol = phi i64 [ %indvars.iv.next1224.prol, %vec.epilog.scalar.ph1889.prol ], [ %indvars.iv1223.ph, %vec.epilog.scalar.ph1889.preheader ]
  %prol.iter2253 = phi i64 [ %prol.iter2253.next, %vec.epilog.scalar.ph1889.prol ], [ 0, %vec.epilog.scalar.ph1889.preheader ]
  %gep1520.prol = getelementptr i8, ptr %invariant.gep1519, i64 %indvars.iv1223.prol
  %1055 = load i8, ptr %gep1520.prol, align 1, !tbaa !117
  %gep1522.prol = getelementptr i8, ptr %invariant.gep1521, i64 %indvars.iv1223.prol
  store i8 %1055, ptr %gep1522.prol, align 1, !tbaa !117
  %indvars.iv.next1224.prol = add nuw nsw i64 %indvars.iv1223.prol, 1
  %prol.iter2253.next = add i64 %prol.iter2253, 1
  %prol.iter2253.cmp.not = icmp eq i64 %prol.iter2253.next, %xtraiter2251
  br i1 %prol.iter2253.cmp.not, label %vec.epilog.scalar.ph1889.prol.loopexit, label %vec.epilog.scalar.ph1889.prol, !llvm.loop !157

vec.epilog.scalar.ph1889.prol.loopexit:           ; preds = %vec.epilog.scalar.ph1889.prol, %vec.epilog.scalar.ph1889.preheader
  %indvars.iv1223.unr = phi i64 [ %indvars.iv1223.ph, %vec.epilog.scalar.ph1889.preheader ], [ %indvars.iv.next1224.prol, %vec.epilog.scalar.ph1889.prol ]
  %1056 = sub nsw i64 %indvars.iv1223.ph, %wide.trip.count1226
  %1057 = icmp ugt i64 %1056, -4
  br i1 %1057, label %._crit_edge912, label %vec.epilog.scalar.ph1889

vec.epilog.scalar.ph1889:                         ; preds = %vec.epilog.scalar.ph1889.prol.loopexit, %vec.epilog.scalar.ph1889
  %indvars.iv1223 = phi i64 [ %indvars.iv.next1224.3, %vec.epilog.scalar.ph1889 ], [ %indvars.iv1223.unr, %vec.epilog.scalar.ph1889.prol.loopexit ]
  %gep1520 = getelementptr i8, ptr %invariant.gep1519, i64 %indvars.iv1223
  %1058 = load i8, ptr %gep1520, align 1, !tbaa !117
  %gep1522 = getelementptr i8, ptr %invariant.gep1521, i64 %indvars.iv1223
  store i8 %1058, ptr %gep1522, align 1, !tbaa !117
  %indvars.iv.next1224 = add nuw nsw i64 %indvars.iv1223, 1
  %gep1520.1 = getelementptr i8, ptr %invariant.gep1519, i64 %indvars.iv.next1224
  %1059 = load i8, ptr %gep1520.1, align 1, !tbaa !117
  %gep1522.1 = getelementptr i8, ptr %invariant.gep1521, i64 %indvars.iv.next1224
  store i8 %1059, ptr %gep1522.1, align 1, !tbaa !117
  %indvars.iv.next1224.1 = add nuw nsw i64 %indvars.iv1223, 2
  %gep1520.2 = getelementptr i8, ptr %invariant.gep1519, i64 %indvars.iv.next1224.1
  %1060 = load i8, ptr %gep1520.2, align 1, !tbaa !117
  %gep1522.2 = getelementptr i8, ptr %invariant.gep1521, i64 %indvars.iv.next1224.1
  store i8 %1060, ptr %gep1522.2, align 1, !tbaa !117
  %indvars.iv.next1224.2 = add nuw nsw i64 %indvars.iv1223, 3
  %gep1520.3 = getelementptr i8, ptr %invariant.gep1519, i64 %indvars.iv.next1224.2
  %1061 = load i8, ptr %gep1520.3, align 1, !tbaa !117
  %gep1522.3 = getelementptr i8, ptr %invariant.gep1521, i64 %indvars.iv.next1224.2
  store i8 %1061, ptr %gep1522.3, align 1, !tbaa !117
  %indvars.iv.next1224.3 = add nuw nsw i64 %indvars.iv1223, 4
  %exitcond1227.not.3 = icmp eq i64 %indvars.iv.next1224.3, %wide.trip.count1226
  br i1 %exitcond1227.not.3, label %._crit_edge912, label %vec.epilog.scalar.ph1889, !llvm.loop !158

._crit_edge912:                                   ; preds = %vec.epilog.scalar.ph1889.prol.loopexit, %vec.epilog.scalar.ph1889, %middle.block1872, %vec.epilog.middle.block1888, %1037
  %indvars.iv.next1229 = add nuw nsw i64 %indvars.iv1228, 1
  %exitcond1232.not = icmp eq i64 %indvars.iv.next1229, %wide.trip.count1231
  br i1 %exitcond1232.not, label %.loopexit, label %1037, !llvm.loop !159

1062:                                             ; preds = %1033
  %1063 = and i32 %757, 16
  %.not705 = icmp eq i32 %1063, 0
  br i1 %.not705, label %.preheader768, label %.preheader770

.preheader770:                                    ; preds = %1062
  %1064 = icmp sgt i32 %.0659, 0
  br i1 %1064, label %.lr.ph920, label %.loopexit

.lr.ph920:                                        ; preds = %.preheader770
  %1065 = icmp sgt i32 %.0658, 0
  %1066 = sext i32 %6 to i64
  %1067 = sext i32 %8 to i64
  %wide.trip.count1241 = zext nneg i32 %.0659 to i64
  %wide.trip.count1236 = zext i32 %.0658 to i64
  %min.iters.check1910 = icmp ult i32 %.0658, 8
  %ident.check1904 = icmp ne i32 %8, 1
  %ident.check1905 = icmp ne i32 %6, 1
  %1068 = or i1 %ident.check1904, %ident.check1905
  %min.iters.check1913 = icmp ult i32 %.0658, 32
  %n.vec1917 = and i64 %wide.trip.count1236, 2147483616
  %cmp.n1923 = icmp eq i64 %n.vec1917, %wide.trip.count1236
  %n.vec.remaining1928 = and i64 %wide.trip.count1236, 24
  %min.epilog.iters.check1929 = icmp eq i64 %n.vec.remaining1928, 0
  %n.vec1932 = and i64 %wide.trip.count1236, 2147483640
  %cmp.n1938 = icmp eq i64 %n.vec1932, %wide.trip.count1236
  %xtraiter2254 = and i64 %wide.trip.count1236, 3
  %lcmp.mod2255.not = icmp eq i64 %xtraiter2254, 0
  br label %1075

.preheader768:                                    ; preds = %1062
  %1069 = icmp sgt i32 %.0658, 0
  br i1 %1069, label %.preheader767.lr.ph, label %.loopexit

.preheader767.lr.ph:                              ; preds = %.preheader768
  %1070 = icmp sgt i32 %.0659, 0
  %1071 = sext i32 %.0659 to i64
  %1072 = sext i32 %6 to i64
  %wide.trip.count1251 = zext nneg i32 %.0658 to i64
  %wide.trip.count1246 = zext i32 %.0659 to i64
  %1073 = add nsw i64 %wide.trip.count1246, -1
  %xtraiter2258 = and i64 %wide.trip.count1246, 3
  %1074 = icmp ult i64 %1073, 3
  %unroll_iter2261 = and i64 %wide.trip.count1246, 2147483644
  %lcmp.mod2260.not = icmp eq i64 %xtraiter2258, 0
  br label %.preheader767

1075:                                             ; preds = %.lr.ph920, %._crit_edge918
  %indvars.iv1238 = phi i64 [ 0, %.lr.ph920 ], [ %indvars.iv.next1239, %._crit_edge918 ]
  %1076 = add i64 %indvars.iv1238, %21
  %1077 = sub i64 %24, %1076
  br i1 %1065, label %iter.check1912, label %._crit_edge918

iter.check1912:                                   ; preds = %1075
  %1078 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1238
  %1079 = load i32, ptr %1078, align 4, !tbaa !51
  %1080 = sext i32 %1079 to i64
  %invariant.gep1523 = getelementptr i8, ptr %20, i64 %indvars.iv1238
  %invariant.gep1525 = getelementptr i8, ptr %23, i64 %1080
  br i1 %min.iters.check1910, label %.lr.ph917.preheader, label %vector.scevcheck1903

vector.scevcheck1903:                             ; preds = %iter.check1912
  %1081 = add i64 %1077, %1080
  %diff.check1907 = icmp ult i64 %1081, 32
  %or.cond2144 = select i1 %1068, i1 true, i1 %diff.check1907
  br i1 %or.cond2144, label %.lr.ph917.preheader, label %vector.main.loop.iter.check1914

vector.main.loop.iter.check1914:                  ; preds = %vector.scevcheck1903
  br i1 %min.iters.check1913, label %vec.epilog.ph1926, label %vector.body1918

vector.body1918:                                  ; preds = %vector.main.loop.iter.check1914, %vector.body1918
  %index1919 = phi i64 [ %index.next1922, %vector.body1918 ], [ 0, %vector.main.loop.iter.check1914 ]
  %1082 = getelementptr i8, ptr %invariant.gep1523, i64 %index1919
  %1083 = getelementptr i8, ptr %1082, i64 16
  %wide.load1920 = load <16 x i8>, ptr %1082, align 1, !tbaa !117
  %wide.load1921 = load <16 x i8>, ptr %1083, align 1, !tbaa !117
  %1084 = getelementptr i8, ptr %invariant.gep1525, i64 %index1919
  %1085 = getelementptr i8, ptr %1084, i64 16
  store <16 x i8> %wide.load1920, ptr %1084, align 1, !tbaa !117
  store <16 x i8> %wide.load1921, ptr %1085, align 1, !tbaa !117
  %index.next1922 = add nuw i64 %index1919, 32
  %1086 = icmp eq i64 %index.next1922, %n.vec1917
  br i1 %1086, label %middle.block1908, label %vector.body1918, !llvm.loop !160

middle.block1908:                                 ; preds = %vector.body1918
  br i1 %cmp.n1923, label %._crit_edge918, label %vec.epilog.iter.check1927

vec.epilog.iter.check1927:                        ; preds = %middle.block1908
  br i1 %min.epilog.iters.check1929, label %.lr.ph917.preheader, label %vec.epilog.ph1926

vec.epilog.ph1926:                                ; preds = %vector.main.loop.iter.check1914, %vec.epilog.iter.check1927
  %vec.epilog.resume.val1930 = phi i64 [ %n.vec1917, %vec.epilog.iter.check1927 ], [ 0, %vector.main.loop.iter.check1914 ]
  br label %vec.epilog.vector.body1934

vec.epilog.vector.body1934:                       ; preds = %vec.epilog.vector.body1934, %vec.epilog.ph1926
  %index1935 = phi i64 [ %vec.epilog.resume.val1930, %vec.epilog.ph1926 ], [ %index.next1937, %vec.epilog.vector.body1934 ]
  %1087 = getelementptr i8, ptr %invariant.gep1523, i64 %index1935
  %wide.load1936 = load <8 x i8>, ptr %1087, align 1, !tbaa !117
  %1088 = getelementptr i8, ptr %invariant.gep1525, i64 %index1935
  store <8 x i8> %wide.load1936, ptr %1088, align 1, !tbaa !117
  %index.next1937 = add nuw i64 %index1935, 8
  %1089 = icmp eq i64 %index.next1937, %n.vec1932
  br i1 %1089, label %vec.epilog.middle.block1924, label %vec.epilog.vector.body1934, !llvm.loop !161

vec.epilog.middle.block1924:                      ; preds = %vec.epilog.vector.body1934
  br i1 %cmp.n1938, label %._crit_edge918, label %.lr.ph917.preheader

.lr.ph917.preheader:                              ; preds = %vec.epilog.middle.block1924, %vector.scevcheck1903, %iter.check1912, %vec.epilog.iter.check1927
  %indvars.iv1233.ph = phi i64 [ 0, %iter.check1912 ], [ 0, %vector.scevcheck1903 ], [ %n.vec1917, %vec.epilog.iter.check1927 ], [ %n.vec1932, %vec.epilog.middle.block1924 ]
  br i1 %lcmp.mod2255.not, label %.lr.ph917.prol.loopexit, label %.lr.ph917.prol

.lr.ph917.prol:                                   ; preds = %.lr.ph917.preheader, %.lr.ph917.prol
  %indvars.iv1233.prol = phi i64 [ %indvars.iv.next1234.prol, %.lr.ph917.prol ], [ %indvars.iv1233.ph, %.lr.ph917.preheader ]
  %prol.iter2256 = phi i64 [ %prol.iter2256.next, %.lr.ph917.prol ], [ 0, %.lr.ph917.preheader ]
  %1090 = mul nsw i64 %indvars.iv1233.prol, %1066
  %gep1524.prol = getelementptr i8, ptr %invariant.gep1523, i64 %1090
  %1091 = load i8, ptr %gep1524.prol, align 1, !tbaa !117
  %1092 = mul nsw i64 %indvars.iv1233.prol, %1067
  %gep1526.prol = getelementptr i8, ptr %invariant.gep1525, i64 %1092
  store i8 %1091, ptr %gep1526.prol, align 1, !tbaa !117
  %indvars.iv.next1234.prol = add nuw nsw i64 %indvars.iv1233.prol, 1
  %prol.iter2256.next = add i64 %prol.iter2256, 1
  %prol.iter2256.cmp.not = icmp eq i64 %prol.iter2256.next, %xtraiter2254
  br i1 %prol.iter2256.cmp.not, label %.lr.ph917.prol.loopexit, label %.lr.ph917.prol, !llvm.loop !162

.lr.ph917.prol.loopexit:                          ; preds = %.lr.ph917.prol, %.lr.ph917.preheader
  %indvars.iv1233.unr = phi i64 [ %indvars.iv1233.ph, %.lr.ph917.preheader ], [ %indvars.iv.next1234.prol, %.lr.ph917.prol ]
  %1093 = sub nsw i64 %indvars.iv1233.ph, %wide.trip.count1236
  %1094 = icmp ugt i64 %1093, -4
  br i1 %1094, label %._crit_edge918, label %.lr.ph917

.lr.ph917:                                        ; preds = %.lr.ph917.prol.loopexit, %.lr.ph917
  %indvars.iv1233 = phi i64 [ %indvars.iv.next1234.3, %.lr.ph917 ], [ %indvars.iv1233.unr, %.lr.ph917.prol.loopexit ]
  %1095 = mul nsw i64 %indvars.iv1233, %1066
  %gep1524 = getelementptr i8, ptr %invariant.gep1523, i64 %1095
  %1096 = load i8, ptr %gep1524, align 1, !tbaa !117
  %1097 = mul nsw i64 %indvars.iv1233, %1067
  %gep1526 = getelementptr i8, ptr %invariant.gep1525, i64 %1097
  store i8 %1096, ptr %gep1526, align 1, !tbaa !117
  %indvars.iv.next1234 = add nuw nsw i64 %indvars.iv1233, 1
  %1098 = mul nsw i64 %indvars.iv.next1234, %1066
  %gep1524.1 = getelementptr i8, ptr %invariant.gep1523, i64 %1098
  %1099 = load i8, ptr %gep1524.1, align 1, !tbaa !117
  %1100 = mul nsw i64 %indvars.iv.next1234, %1067
  %gep1526.1 = getelementptr i8, ptr %invariant.gep1525, i64 %1100
  store i8 %1099, ptr %gep1526.1, align 1, !tbaa !117
  %indvars.iv.next1234.1 = add nuw nsw i64 %indvars.iv1233, 2
  %1101 = mul nsw i64 %indvars.iv.next1234.1, %1066
  %gep1524.2 = getelementptr i8, ptr %invariant.gep1523, i64 %1101
  %1102 = load i8, ptr %gep1524.2, align 1, !tbaa !117
  %1103 = mul nsw i64 %indvars.iv.next1234.1, %1067
  %gep1526.2 = getelementptr i8, ptr %invariant.gep1525, i64 %1103
  store i8 %1102, ptr %gep1526.2, align 1, !tbaa !117
  %indvars.iv.next1234.2 = add nuw nsw i64 %indvars.iv1233, 3
  %1104 = mul nsw i64 %indvars.iv.next1234.2, %1066
  %gep1524.3 = getelementptr i8, ptr %invariant.gep1523, i64 %1104
  %1105 = load i8, ptr %gep1524.3, align 1, !tbaa !117
  %1106 = mul nsw i64 %indvars.iv.next1234.2, %1067
  %gep1526.3 = getelementptr i8, ptr %invariant.gep1525, i64 %1106
  store i8 %1105, ptr %gep1526.3, align 1, !tbaa !117
  %indvars.iv.next1234.3 = add nuw nsw i64 %indvars.iv1233, 4
  %exitcond1237.not.3 = icmp eq i64 %indvars.iv.next1234.3, %wide.trip.count1236
  br i1 %exitcond1237.not.3, label %._crit_edge918, label %.lr.ph917, !llvm.loop !163

._crit_edge918:                                   ; preds = %.lr.ph917.prol.loopexit, %.lr.ph917, %middle.block1908, %vec.epilog.middle.block1924, %1075
  %indvars.iv.next1239 = add nuw nsw i64 %indvars.iv1238, 1
  %exitcond1242.not = icmp eq i64 %indvars.iv.next1239, %wide.trip.count1241
  br i1 %exitcond1242.not, label %.loopexit, label %1075, !llvm.loop !164

.preheader767:                                    ; preds = %.preheader767.lr.ph, %._crit_edge923
  %indvars.iv1248 = phi i64 [ 0, %.preheader767.lr.ph ], [ %indvars.iv.next1249, %._crit_edge923 ]
  br i1 %1070, label %.lr.ph922, label %._crit_edge923

.lr.ph922:                                        ; preds = %.preheader767
  %1107 = mul nuw nsw i64 %indvars.iv1248, %1071
  %1108 = mul nsw i64 %indvars.iv1248, %1072
  %invariant.gep1527 = getelementptr i32, ptr %18, i64 %1107
  %invariant.gep1529 = getelementptr i8, ptr %20, i64 %1108
  br i1 %1074, label %._crit_edge923.loopexit.unr-lcssa, label %.lr.ph922.new

.lr.ph922.new:                                    ; preds = %.lr.ph922, %.lr.ph922.new
  %indvars.iv1243 = phi i64 [ %indvars.iv.next1244.3, %.lr.ph922.new ], [ 0, %.lr.ph922 ]
  %niter2262 = phi i64 [ %niter2262.next.3, %.lr.ph922.new ], [ 0, %.lr.ph922 ]
  %gep1528 = getelementptr i32, ptr %invariant.gep1527, i64 %indvars.iv1243
  %1109 = load i32, ptr %gep1528, align 4, !tbaa !51
  %gep1530 = getelementptr i8, ptr %invariant.gep1529, i64 %indvars.iv1243
  %1110 = load i8, ptr %gep1530, align 1, !tbaa !117
  %1111 = sext i32 %1109 to i64
  %1112 = getelementptr inbounds i8, ptr %23, i64 %1111
  store i8 %1110, ptr %1112, align 1, !tbaa !117
  %indvars.iv.next1244 = or disjoint i64 %indvars.iv1243, 1
  %gep1528.1 = getelementptr i32, ptr %invariant.gep1527, i64 %indvars.iv.next1244
  %1113 = load i32, ptr %gep1528.1, align 4, !tbaa !51
  %gep1530.1 = getelementptr i8, ptr %invariant.gep1529, i64 %indvars.iv.next1244
  %1114 = load i8, ptr %gep1530.1, align 1, !tbaa !117
  %1115 = sext i32 %1113 to i64
  %1116 = getelementptr inbounds i8, ptr %23, i64 %1115
  store i8 %1114, ptr %1116, align 1, !tbaa !117
  %indvars.iv.next1244.1 = or disjoint i64 %indvars.iv1243, 2
  %gep1528.2 = getelementptr i32, ptr %invariant.gep1527, i64 %indvars.iv.next1244.1
  %1117 = load i32, ptr %gep1528.2, align 4, !tbaa !51
  %gep1530.2 = getelementptr i8, ptr %invariant.gep1529, i64 %indvars.iv.next1244.1
  %1118 = load i8, ptr %gep1530.2, align 1, !tbaa !117
  %1119 = sext i32 %1117 to i64
  %1120 = getelementptr inbounds i8, ptr %23, i64 %1119
  store i8 %1118, ptr %1120, align 1, !tbaa !117
  %indvars.iv.next1244.2 = or disjoint i64 %indvars.iv1243, 3
  %gep1528.3 = getelementptr i32, ptr %invariant.gep1527, i64 %indvars.iv.next1244.2
  %1121 = load i32, ptr %gep1528.3, align 4, !tbaa !51
  %gep1530.3 = getelementptr i8, ptr %invariant.gep1529, i64 %indvars.iv.next1244.2
  %1122 = load i8, ptr %gep1530.3, align 1, !tbaa !117
  %1123 = sext i32 %1121 to i64
  %1124 = getelementptr inbounds i8, ptr %23, i64 %1123
  store i8 %1122, ptr %1124, align 1, !tbaa !117
  %indvars.iv.next1244.3 = add nuw nsw i64 %indvars.iv1243, 4
  %niter2262.next.3 = add i64 %niter2262, 4
  %niter2262.ncmp.3 = icmp eq i64 %niter2262.next.3, %unroll_iter2261
  br i1 %niter2262.ncmp.3, label %._crit_edge923.loopexit.unr-lcssa, label %.lr.ph922.new, !llvm.loop !165

._crit_edge923.loopexit.unr-lcssa:                ; preds = %.lr.ph922.new, %.lr.ph922
  %indvars.iv1243.unr = phi i64 [ 0, %.lr.ph922 ], [ %indvars.iv.next1244.3, %.lr.ph922.new ]
  br i1 %lcmp.mod2260.not, label %._crit_edge923, label %.epil.preheader2257

.epil.preheader2257:                              ; preds = %._crit_edge923.loopexit.unr-lcssa, %.epil.preheader2257
  %indvars.iv1243.epil = phi i64 [ %indvars.iv.next1244.epil, %.epil.preheader2257 ], [ %indvars.iv1243.unr, %._crit_edge923.loopexit.unr-lcssa ]
  %epil.iter2259 = phi i64 [ %epil.iter2259.next, %.epil.preheader2257 ], [ 0, %._crit_edge923.loopexit.unr-lcssa ]
  %gep1528.epil = getelementptr i32, ptr %invariant.gep1527, i64 %indvars.iv1243.epil
  %1125 = load i32, ptr %gep1528.epil, align 4, !tbaa !51
  %gep1530.epil = getelementptr i8, ptr %invariant.gep1529, i64 %indvars.iv1243.epil
  %1126 = load i8, ptr %gep1530.epil, align 1, !tbaa !117
  %1127 = sext i32 %1125 to i64
  %1128 = getelementptr inbounds i8, ptr %23, i64 %1127
  store i8 %1126, ptr %1128, align 1, !tbaa !117
  %indvars.iv.next1244.epil = add nuw nsw i64 %indvars.iv1243.epil, 1
  %epil.iter2259.next = add i64 %epil.iter2259, 1
  %epil.iter2259.cmp.not = icmp eq i64 %epil.iter2259.next, %xtraiter2258
  br i1 %epil.iter2259.cmp.not, label %._crit_edge923, label %.epil.preheader2257, !llvm.loop !166

._crit_edge923:                                   ; preds = %._crit_edge923.loopexit.unr-lcssa, %.epil.preheader2257, %.preheader767
  %indvars.iv.next1249 = add nuw nsw i64 %indvars.iv1248, 1
  %exitcond1252.not = icmp eq i64 %indvars.iv.next1249, %wide.trip.count1251
  br i1 %exitcond1252.not, label %.loopexit, label %.preheader767, !llvm.loop !167

.loopexit:                                        ; preds = %._crit_edge, %._crit_edge822, %._crit_edge827, %._crit_edge832, %._crit_edge838, %._crit_edge843, %._crit_edge848, %._crit_edge854, %._crit_edge859, %._crit_edge864, %._crit_edge870, %._crit_edge875, %._crit_edge880, %._crit_edge886, %._crit_edge891, %._crit_edge896, %._crit_edge902, %._crit_edge907, %._crit_edge912, %._crit_edge918, %._crit_edge923, %._crit_edge928, %._crit_edge934, %._crit_edge939, %._crit_edge944, %._crit_edge950, %._crit_edge955, %._crit_edge960, %._crit_edge966, %._crit_edge971, %._crit_edge976, %._crit_edge982, %._crit_edge987, %._crit_edge992, %._crit_edge998, %._crit_edge1003, %.preheader814, %.preheader812, %.preheader810, %.preheader807, %.preheader805, %.preheader803, %.preheader800, %.preheader798, %.preheader796, %.preheader793, %.preheader791, %.preheader789, %.preheader786, %.preheader784, %.preheader782, %.preheader779, %.preheader777, %.preheader775, %.preheader772, %.preheader770, %.preheader768, %.preheader765, %.preheader763, %.preheader761, %.preheader758, %.preheader756, %.preheader754, %.preheader751, %.preheader749, %.preheader747, %.preheader744, %.preheader742, %.preheader740, %.preheader737, %.preheader735, %.preheader734, %755
  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 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 0}
!6 = !{!"libxsmm_meltw_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !8, i64 24, !8, i64 25, !8, i64 26, !10, i64 27, !10, i64 29, !8, i64 31}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}
!11 = !{!6, !7, i64 4}
!12 = !{!6, !7, i64 8}
!13 = !{!6, !7, i64 12}
!14 = !{!6, !10, i64 27}
!15 = !{!6, !10, i64 29}
!16 = !{!17, !17, i64 0}
!17 = !{!"any pointer", !8, i64 0}
!18 = !{!19, !17, i64 32}
!19 = !{!"libxsmm_meltw_unary_param", !20, i64 0, !21, i64 32, !21, i64 80}
!20 = !{!"libxsmm_matrix_op_arg", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24}
!21 = !{!"libxsmm_matrix_arg", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40}
!22 = !{!19, !17, i64 80}
!23 = !{!24, !24, i64 0}
!24 = !{!"long long", !8, i64 0}
!25 = !{!26, !26, i64 0}
!26 = !{!"float", !8, i64 0}
!27 = distinct !{!27, !28, !29, !30}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!"llvm.loop.isvectorized", i32 1}
!30 = !{!"llvm.loop.unroll.runtime.disable"}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.unroll.disable"}
!33 = distinct !{!33, !28, !29}
!34 = distinct !{!34, !28}
!35 = distinct !{!35, !28, !29, !30}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !28, !29}
!38 = distinct !{!38, !28}
!39 = distinct !{!39, !28}
!40 = distinct !{!40, !28}
!41 = distinct !{!41, !28, !29, !30}
!42 = distinct !{!42, !32}
!43 = distinct !{!43, !28, !29}
!44 = distinct !{!44, !28}
!45 = distinct !{!45, !28, !29, !30}
!46 = distinct !{!46, !32}
!47 = distinct !{!47, !28, !29}
!48 = distinct !{!48, !28}
!49 = distinct !{!49, !28}
!50 = distinct !{!50, !28}
!51 = !{!7, !7, i64 0}
!52 = distinct !{!52, !28, !29, !30}
!53 = distinct !{!53, !32}
!54 = distinct !{!54, !28, !29}
!55 = distinct !{!55, !28}
!56 = distinct !{!56, !28, !29, !30}
!57 = distinct !{!57, !32}
!58 = distinct !{!58, !28, !29}
!59 = distinct !{!59, !28}
!60 = distinct !{!60, !28}
!61 = distinct !{!61, !32}
!62 = distinct !{!62, !28}
!63 = distinct !{!63, !28, !29, !30}
!64 = distinct !{!64, !32}
!65 = distinct !{!65, !28, !29}
!66 = distinct !{!66, !28}
!67 = distinct !{!67, !28, !29, !30}
!68 = distinct !{!68, !32}
!69 = distinct !{!69, !28, !29}
!70 = distinct !{!70, !28}
!71 = distinct !{!71, !28}
!72 = distinct !{!72, !32}
!73 = distinct !{!73, !28}
!74 = !{!10, !10, i64 0}
!75 = distinct !{!75, !28, !29, !30}
!76 = distinct !{!76, !32}
!77 = distinct !{!77, !28, !29}
!78 = distinct !{!78, !28}
!79 = distinct !{!79, !28, !29, !30}
!80 = distinct !{!80, !32}
!81 = distinct !{!81, !28, !29}
!82 = distinct !{!82, !28}
!83 = distinct !{!83, !28}
!84 = distinct !{!84, !28}
!85 = distinct !{!85, !28, !29, !30}
!86 = distinct !{!86, !32}
!87 = distinct !{!87, !28, !29}
!88 = distinct !{!88, !28}
!89 = distinct !{!89, !28, !29, !30}
!90 = distinct !{!90, !32}
!91 = distinct !{!91, !28, !29}
!92 = distinct !{!92, !28}
!93 = distinct !{!93, !28}
!94 = distinct !{!94, !28}
!95 = distinct !{!95, !28, !29, !30}
!96 = distinct !{!96, !32}
!97 = distinct !{!97, !28, !29}
!98 = distinct !{!98, !28}
!99 = distinct !{!99, !28, !29, !30}
!100 = distinct !{!100, !32}
!101 = distinct !{!101, !28, !29}
!102 = distinct !{!102, !28}
!103 = distinct !{!103, !28}
!104 = distinct !{!104, !32}
!105 = distinct !{!105, !28}
!106 = distinct !{!106, !28, !29, !30}
!107 = distinct !{!107, !32}
!108 = distinct !{!108, !28, !29}
!109 = distinct !{!109, !28}
!110 = distinct !{!110, !28, !29, !30}
!111 = distinct !{!111, !32}
!112 = distinct !{!112, !28, !29}
!113 = distinct !{!113, !28}
!114 = distinct !{!114, !28}
!115 = distinct !{!115, !32}
!116 = distinct !{!116, !28}
!117 = !{!8, !8, i64 0}
!118 = distinct !{!118, !28, !29, !30}
!119 = distinct !{!119, !28, !29, !30}
!120 = distinct !{!120, !32}
!121 = distinct !{!121, !28, !29}
!122 = distinct !{!122, !28}
!123 = distinct !{!123, !28, !29, !30}
!124 = distinct !{!124, !28, !29, !30}
!125 = distinct !{!125, !32}
!126 = distinct !{!126, !28, !29}
!127 = distinct !{!127, !28}
!128 = distinct !{!128, !28}
!129 = distinct !{!129, !28}
!130 = distinct !{!130, !28, !29, !30}
!131 = distinct !{!131, !28, !29, !30}
!132 = distinct !{!132, !32}
!133 = distinct !{!133, !28, !29}
!134 = distinct !{!134, !28}
!135 = distinct !{!135, !28, !29, !30}
!136 = distinct !{!136, !28, !29, !30}
!137 = distinct !{!137, !32}
!138 = distinct !{!138, !28, !29}
!139 = distinct !{!139, !28}
!140 = distinct !{!140, !28}
!141 = distinct !{!141, !28}
!142 = distinct !{!142, !28, !29, !30}
!143 = distinct !{!143, !28, !29, !30}
!144 = distinct !{!144, !32}
!145 = distinct !{!145, !28, !29}
!146 = distinct !{!146, !28}
!147 = distinct !{!147, !28, !29, !30}
!148 = distinct !{!148, !28, !29, !30}
!149 = distinct !{!149, !32}
!150 = distinct !{!150, !28, !29}
!151 = distinct !{!151, !28}
!152 = distinct !{!152, !28}
!153 = distinct !{!153, !32}
!154 = distinct !{!154, !28}
!155 = distinct !{!155, !28, !29, !30}
!156 = distinct !{!156, !28, !29, !30}
!157 = distinct !{!157, !32}
!158 = distinct !{!158, !28, !29}
!159 = distinct !{!159, !28}
!160 = distinct !{!160, !28, !29, !30}
!161 = distinct !{!161, !28, !29, !30}
!162 = distinct !{!162, !32}
!163 = distinct !{!163, !28, !29}
!164 = distinct !{!164, !28}
!165 = distinct !{!165, !28}
!166 = distinct !{!166, !32}
!167 = distinct !{!167, !28}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass