; LLVM IR from jingweizhanghuai/Morn :: src/image (morn_image_transform)

; 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.MImage = type { i32, i32, i32, [4 x ptr], ptr }
%struct.MTable = type { i32, i32, i32, %union.anon }
%union.anon = type { 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

; Function Attrs: nounwind uwtable
define dso_local void @GridInterpolation(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5) #1 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %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 ptr, align 8
  %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 i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store i32 %5, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #2
  %58 = load ptr, ptr %8, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.MImage, ptr %58, i32 0, i32 1
  %60 = load i32, ptr %59, align 4, !tbaa !11
  store i32 %60, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #2
  %61 = load ptr, ptr %8, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.MImage, ptr %61, i32 0, i32 2
  %63 = load i32, ptr %62, align 8, !tbaa !13
  store i32 %63, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #2
  %64 = load ptr, ptr %7, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.MImage, ptr %64, i32 0, i32 3
  %66 = getelementptr inbounds [4 x ptr], ptr %65, i64 0, i64 0
  %67 = load ptr, ptr %66, align 8, !tbaa !5
  store ptr %67, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #2
  %68 = load ptr, ptr %7, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.MImage, ptr %68, i32 0, i32 3
  %70 = getelementptr inbounds [4 x ptr], ptr %69, i64 0, i64 1
  %71 = load ptr, ptr %70, align 8, !tbaa !5
  store ptr %71, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #2
  %72 = load ptr, ptr %7, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.MImage, ptr %72, i32 0, i32 3
  %74 = getelementptr inbounds [4 x ptr], ptr %73, i64 0, i64 2
  %75 = load ptr, ptr %74, align 8, !tbaa !5
  store ptr %75, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #2
  %76 = load ptr, ptr %7, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.MImage, ptr %76, i32 0, i32 3
  %78 = getelementptr inbounds [4 x ptr], ptr %77, i64 0, i64 3
  %79 = load ptr, ptr %78, align 8, !tbaa !5
  store ptr %79, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #2
  %80 = load ptr, ptr %8, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.MImage, ptr %80, i32 0, i32 3
  %82 = getelementptr inbounds [4 x ptr], ptr %81, i64 0, i64 0
  %83 = load ptr, ptr %82, align 8, !tbaa !5
  store ptr %83, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #2
  %84 = load ptr, ptr %8, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.MImage, ptr %84, i32 0, i32 3
  %86 = getelementptr inbounds [4 x ptr], ptr %85, i64 0, i64 1
  %87 = load ptr, ptr %86, align 8, !tbaa !5
  store ptr %87, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #2
  %88 = load ptr, ptr %8, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.MImage, ptr %88, i32 0, i32 3
  %90 = getelementptr inbounds [4 x ptr], ptr %89, i64 0, i64 2
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  store ptr %91, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #2
  %92 = load ptr, ptr %8, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.MImage, ptr %92, i32 0, i32 3
  %94 = getelementptr inbounds [4 x ptr], ptr %93, i64 0, i64 3
  %95 = load ptr, ptr %94, align 8, !tbaa !5
  store ptr %95, ptr %24, align 8, !tbaa !5
  %96 = load i32, ptr %12, align 4, !tbaa !9
  %97 = or i32 %96, -17
  %98 = icmp eq i32 %97, -17
  %99 = zext i1 %98 to i32
  store i32 %99, ptr %12, align 4, !tbaa !9
  %100 = load ptr, ptr %7, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.MImage, ptr %100, i32 0, i32 0
  %102 = load i32, ptr %101, align 8, !tbaa !14
  %103 = icmp eq i32 %102, 1
  br i1 %103, label %104, label %267

104:                                              ; preds = %6
  %105 = load i32, ptr %12, align 4, !tbaa !9
  %106 = icmp ne i32 %105, 0
  br i1 %106, label %267, label %107

107:                                              ; preds = %104
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %108

108:                                              ; preds = %263, %107
  %109 = load i32, ptr %14, align 4, !tbaa !9
  %110 = load i32, ptr %15, align 4, !tbaa !9
  %111 = icmp slt i32 %109, %110
  br i1 %111, label %112, label %266

112:                                              ; preds = %108
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %113

113:                                              ; preds = %259, %112
  %114 = load i32, ptr %13, align 4, !tbaa !9
  %115 = load i32, ptr %16, align 4, !tbaa !9
  %116 = icmp slt i32 %114, %115
  br i1 %116, label %117, label %262

117:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #2
  %118 = load ptr, ptr %9, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.MTable, ptr %118, i32 0, i32 3
  %120 = load ptr, ptr %119, align 8, !tbaa !15
  %121 = load i32, ptr %14, align 4, !tbaa !9
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds ptr, ptr %120, i64 %122
  %124 = load ptr, ptr %123, align 8, !tbaa !5
  %125 = load i32, ptr %13, align 4, !tbaa !9
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds i16, ptr %124, i64 %126
  %128 = load i16, ptr %127, align 2, !tbaa !16
  %129 = sext i16 %128 to i32
  store i32 %129, ptr %25, align 4, !tbaa !9
  %130 = load i32, ptr %25, align 4, !tbaa !9
  %131 = icmp slt i32 %130, 0
  br i1 %131, label %132, label %141

132:                                              ; preds = %117
  %133 = load ptr, ptr %21, align 8, !tbaa !5
  %134 = load i32, ptr %14, align 4, !tbaa !9
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds ptr, ptr %133, i64 %135
  %137 = load ptr, ptr %136, align 8, !tbaa !5
  %138 = load i32, ptr %13, align 4, !tbaa !9
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds i8, ptr %137, i64 %139
  store i8 0, ptr %140, align 1, !tbaa !15
  store i32 7, ptr %26, align 4
  br label %256

141:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #2
  %142 = load ptr, ptr %10, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.MTable, ptr %142, i32 0, i32 3
  %144 = load ptr, ptr %143, align 8, !tbaa !15
  %145 = load i32, ptr %14, align 4, !tbaa !9
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds ptr, ptr %144, i64 %146
  %148 = load ptr, ptr %147, align 8, !tbaa !5
  %149 = load i32, ptr %13, align 4, !tbaa !9
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds i16, ptr %148, i64 %150
  %152 = load i16, ptr %151, align 2, !tbaa !16
  %153 = sext i16 %152 to i32
  store i32 %153, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #2
  %154 = load ptr, ptr %11, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.MTable, ptr %154, i32 0, i32 3
  %156 = load ptr, ptr %155, align 8, !tbaa !15
  %157 = load i32, ptr %14, align 4, !tbaa !9
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds ptr, ptr %156, i64 %158
  %160 = load ptr, ptr %159, align 8, !tbaa !5
  %161 = load i32, ptr %13, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds i8, ptr %160, i64 %162
  %164 = load i8, ptr %163, align 1, !tbaa !15
  %165 = zext i8 %164 to i32
  %166 = ashr i32 %165, 4
  store i32 %166, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #2
  %167 = load ptr, ptr %11, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.MTable, ptr %167, i32 0, i32 3
  %169 = load ptr, ptr %168, align 8, !tbaa !15
  %170 = load i32, ptr %14, align 4, !tbaa !9
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds ptr, ptr %169, i64 %171
  %173 = load ptr, ptr %172, align 8, !tbaa !5
  %174 = load i32, ptr %13, align 4, !tbaa !9
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds i8, ptr %173, i64 %175
  %177 = load i8, ptr %176, align 1, !tbaa !15
  %178 = zext i8 %177 to i32
  %179 = and i32 %178, 15
  store i32 %179, ptr %29, align 4, !tbaa !9
  br label %180

180:                                              ; preds = %141
  %181 = load ptr, ptr %17, align 8, !tbaa !5
  %182 = load i32, ptr %27, align 4, !tbaa !9
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds ptr, ptr %181, i64 %183
  %185 = load ptr, ptr %184, align 8, !tbaa !5
  %186 = load i32, ptr %25, align 4, !tbaa !9
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds i8, ptr %185, i64 %187
  %189 = load i8, ptr %188, align 1, !tbaa !15
  %190 = zext i8 %189 to i32
  %191 = load i32, ptr %28, align 4, !tbaa !9
  %192 = mul nsw i32 %190, %191
  %193 = load ptr, ptr %17, align 8, !tbaa !5
  %194 = load i32, ptr %27, align 4, !tbaa !9
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds ptr, ptr %193, i64 %195
  %197 = load ptr, ptr %196, align 8, !tbaa !5
  %198 = load i32, ptr %25, align 4, !tbaa !9
  %199 = add nsw i32 %198, 1
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds i8, ptr %197, i64 %200
  %202 = load i8, ptr %201, align 1, !tbaa !15
  %203 = zext i8 %202 to i32
  %204 = load i32, ptr %28, align 4, !tbaa !9
  %205 = sub nsw i32 15, %204
  %206 = mul nsw i32 %203, %205
  %207 = add nsw i32 %192, %206
  %208 = load i32, ptr %29, align 4, !tbaa !9
  %209 = mul nsw i32 %207, %208
  %210 = load ptr, ptr %17, align 8, !tbaa !5
  %211 = load i32, ptr %27, align 4, !tbaa !9
  %212 = add nsw i32 %211, 1
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds ptr, ptr %210, i64 %213
  %215 = load ptr, ptr %214, align 8, !tbaa !5
  %216 = load i32, ptr %25, align 4, !tbaa !9
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds i8, ptr %215, i64 %217
  %219 = load i8, ptr %218, align 1, !tbaa !15
  %220 = zext i8 %219 to i32
  %221 = load i32, ptr %28, align 4, !tbaa !9
  %222 = mul nsw i32 %220, %221
  %223 = load ptr, ptr %17, align 8, !tbaa !5
  %224 = load i32, ptr %27, align 4, !tbaa !9
  %225 = add nsw i32 %224, 1
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds ptr, ptr %223, i64 %226
  %228 = load ptr, ptr %227, align 8, !tbaa !5
  %229 = load i32, ptr %25, align 4, !tbaa !9
  %230 = add nsw i32 %229, 1
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds i8, ptr %228, i64 %231
  %233 = load i8, ptr %232, align 1, !tbaa !15
  %234 = zext i8 %233 to i32
  %235 = load i32, ptr %28, align 4, !tbaa !9
  %236 = sub nsw i32 15, %235
  %237 = mul nsw i32 %234, %236
  %238 = add nsw i32 %222, %237
  %239 = load i32, ptr %29, align 4, !tbaa !9
  %240 = sub nsw i32 15, %239
  %241 = mul nsw i32 %238, %240
  %242 = add nsw i32 %209, %241
  %243 = add nsw i32 %242, 112
  %244 = sdiv i32 %243, 225
  %245 = trunc i32 %244 to i8
  %246 = load ptr, ptr %21, align 8, !tbaa !5
  %247 = load i32, ptr %14, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds ptr, ptr %246, i64 %248
  %250 = load ptr, ptr %249, align 8, !tbaa !5
  %251 = load i32, ptr %13, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds i8, ptr %250, i64 %252
  store i8 %245, ptr %253, align 1, !tbaa !15
  br label %254

254:                                              ; preds = %180
  br label %255

255:                                              ; preds = %254
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #2
  store i32 0, ptr %26, align 4
  br label %256

256:                                              ; preds = %255, %132
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #2
  %257 = load i32, ptr %26, align 4
  switch i32 %257, label %2055 [
    i32 0, label %258
    i32 7, label %259
  ]

258:                                              ; preds = %256
  br label %259

259:                                              ; preds = %258, %256
  %260 = load i32, ptr %13, align 4, !tbaa !9
  %261 = add nsw i32 %260, 1
  store i32 %261, ptr %13, align 4, !tbaa !9
  br label %113, !llvm.loop !18

262:                                              ; preds = %113
  br label %263

263:                                              ; preds = %262
  %264 = load i32, ptr %14, align 4, !tbaa !9
  %265 = add nsw i32 %264, 1
  store i32 %265, ptr %14, align 4, !tbaa !9
  br label %108, !llvm.loop !20

266:                                              ; preds = %108
  store i32 1, ptr %26, align 4
  br label %2052

267:                                              ; preds = %104, %6
  %268 = load ptr, ptr %7, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.MImage, ptr %268, i32 0, i32 0
  %270 = load i32, ptr %269, align 8, !tbaa !14
  %271 = icmp eq i32 %270, 1
  br i1 %271, label %272, label %395

272:                                              ; preds = %267
  %273 = load i32, ptr %12, align 4, !tbaa !9
  %274 = icmp ne i32 %273, 0
  br i1 %274, label %275, label %395

275:                                              ; preds = %272
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %391, %275
  %277 = load i32, ptr %14, align 4, !tbaa !9
  %278 = load i32, ptr %15, align 4, !tbaa !9
  %279 = icmp slt i32 %277, %278
  br i1 %279, label %280, label %394

280:                                              ; preds = %276
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %281

281:                                              ; preds = %387, %280
  %282 = load i32, ptr %13, align 4, !tbaa !9
  %283 = load i32, ptr %16, align 4, !tbaa !9
  %284 = icmp slt i32 %282, %283
  br i1 %284, label %285, label %390

285:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #2
  %286 = load ptr, ptr %9, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.MTable, ptr %286, i32 0, i32 3
  %288 = load ptr, ptr %287, align 8, !tbaa !15
  %289 = load i32, ptr %14, align 4, !tbaa !9
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds ptr, ptr %288, i64 %290
  %292 = load ptr, ptr %291, align 8, !tbaa !5
  %293 = load i32, ptr %13, align 4, !tbaa !9
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds i16, ptr %292, i64 %294
  %296 = load i16, ptr %295, align 2, !tbaa !16
  %297 = sext i16 %296 to i32
  store i32 %297, ptr %30, align 4, !tbaa !9
  %298 = load i32, ptr %30, align 4, !tbaa !9
  %299 = icmp slt i32 %298, 0
  br i1 %299, label %300, label %309

300:                                              ; preds = %285
  %301 = load ptr, ptr %21, align 8, !tbaa !5
  %302 = load i32, ptr %14, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds ptr, ptr %301, i64 %303
  %305 = load ptr, ptr %304, align 8, !tbaa !5
  %306 = load i32, ptr %13, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds i8, ptr %305, i64 %307
  store i8 0, ptr %308, align 1, !tbaa !15
  store i32 15, ptr %26, align 4
  br label %384

309:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #2
  %310 = load ptr, ptr %10, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.MTable, ptr %310, i32 0, i32 3
  %312 = load ptr, ptr %311, align 8, !tbaa !15
  %313 = load i32, ptr %14, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds ptr, ptr %312, i64 %314
  %316 = load ptr, ptr %315, align 8, !tbaa !5
  %317 = load i32, ptr %13, align 4, !tbaa !9
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds i16, ptr %316, i64 %318
  %320 = load i16, ptr %319, align 2, !tbaa !16
  %321 = sext i16 %320 to i32
  store i32 %321, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #2
  %322 = load ptr, ptr %11, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.MTable, ptr %322, i32 0, i32 3
  %324 = load ptr, ptr %323, align 8, !tbaa !15
  %325 = load i32, ptr %14, align 4, !tbaa !9
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds ptr, ptr %324, i64 %326
  %328 = load ptr, ptr %327, align 8, !tbaa !5
  %329 = load i32, ptr %13, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds i8, ptr %328, i64 %330
  %332 = load i8, ptr %331, align 1, !tbaa !15
  %333 = zext i8 %332 to i32
  %334 = ashr i32 %333, 4
  store i32 %334, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #2
  %335 = load ptr, ptr %11, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.MTable, ptr %335, i32 0, i32 3
  %337 = load ptr, ptr %336, align 8, !tbaa !15
  %338 = load i32, ptr %14, align 4, !tbaa !9
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds ptr, ptr %337, i64 %339
  %341 = load ptr, ptr %340, align 8, !tbaa !5
  %342 = load i32, ptr %13, align 4, !tbaa !9
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds i8, ptr %341, i64 %343
  %345 = load i8, ptr %344, align 1, !tbaa !15
  %346 = zext i8 %345 to i32
  %347 = and i32 %346, 15
  store i32 %347, ptr %33, align 4, !tbaa !9
  br label %348

348:                                              ; preds = %309
  %349 = load ptr, ptr %17, align 8, !tbaa !5
  %350 = load i32, ptr %33, align 4, !tbaa !9
  %351 = icmp slt i32 %350, 8
  br i1 %351, label %352, label %355

352:                                              ; preds = %348
  %353 = load i32, ptr %31, align 4, !tbaa !9
  %354 = add nsw i32 %353, 1
  br label %357

355:                                              ; preds = %348
  %356 = load i32, ptr %31, align 4, !tbaa !9
  br label %357

357:                                              ; preds = %355, %352
  %358 = phi i32 [ %354, %352 ], [ %356, %355 ]
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds ptr, ptr %349, i64 %359
  %361 = load ptr, ptr %360, align 8, !tbaa !5
  %362 = load i32, ptr %32, align 4, !tbaa !9
  %363 = icmp slt i32 %362, 8
  br i1 %363, label %364, label %367

364:                                              ; preds = %357
  %365 = load i32, ptr %30, align 4, !tbaa !9
  %366 = add nsw i32 %365, 1
  br label %369

367:                                              ; preds = %357
  %368 = load i32, ptr %30, align 4, !tbaa !9
  br label %369

369:                                              ; preds = %367, %364
  %370 = phi i32 [ %366, %364 ], [ %368, %367 ]
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds i8, ptr %361, i64 %371
  %373 = load i8, ptr %372, align 1, !tbaa !15
  %374 = load ptr, ptr %21, align 8, !tbaa !5
  %375 = load i32, ptr %14, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds ptr, ptr %374, i64 %376
  %378 = load ptr, ptr %377, align 8, !tbaa !5
  %379 = load i32, ptr %13, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds i8, ptr %378, i64 %380
  store i8 %373, ptr %381, align 1, !tbaa !15
  br label %382

382:                                              ; preds = %369
  br label %383

383:                                              ; preds = %382
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #2
  store i32 0, ptr %26, align 4
  br label %384

384:                                              ; preds = %383, %300
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #2
  %385 = load i32, ptr %26, align 4
  switch i32 %385, label %2055 [
    i32 0, label %386
    i32 15, label %387
  ]

386:                                              ; preds = %384
  br label %387

387:                                              ; preds = %386, %384
  %388 = load i32, ptr %13, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %13, align 4, !tbaa !9
  br label %281, !llvm.loop !21

390:                                              ; preds = %281
  br label %391

391:                                              ; preds = %390
  %392 = load i32, ptr %14, align 4, !tbaa !9
  %393 = add nsw i32 %392, 1
  store i32 %393, ptr %14, align 4, !tbaa !9
  br label %276, !llvm.loop !22

394:                                              ; preds = %276
  store i32 1, ptr %26, align 4
  br label %2052

395:                                              ; preds = %272, %267
  %396 = load ptr, ptr %7, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.MImage, ptr %396, i32 0, i32 0
  %398 = load i32, ptr %397, align 8, !tbaa !14
  %399 = icmp eq i32 %398, 2
  br i1 %399, label %400, label %647

400:                                              ; preds = %395
  %401 = load i32, ptr %12, align 4, !tbaa !9
  %402 = icmp ne i32 %401, 0
  br i1 %402, label %647, label %403

403:                                              ; preds = %400
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %404

404:                                              ; preds = %643, %403
  %405 = load i32, ptr %14, align 4, !tbaa !9
  %406 = load i32, ptr %15, align 4, !tbaa !9
  %407 = icmp slt i32 %405, %406
  br i1 %407, label %408, label %646

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

409:                                              ; preds = %639, %408
  %410 = load i32, ptr %13, align 4, !tbaa !9
  %411 = load i32, ptr %16, align 4, !tbaa !9
  %412 = icmp slt i32 %410, %411
  br i1 %412, label %413, label %642

413:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #2
  %414 = load ptr, ptr %9, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.MTable, ptr %414, i32 0, i32 3
  %416 = load ptr, ptr %415, align 8, !tbaa !15
  %417 = load i32, ptr %14, align 4, !tbaa !9
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds ptr, ptr %416, i64 %418
  %420 = load ptr, ptr %419, align 8, !tbaa !5
  %421 = load i32, ptr %13, align 4, !tbaa !9
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i16, ptr %420, i64 %422
  %424 = load i16, ptr %423, align 2, !tbaa !16
  %425 = sext i16 %424 to i32
  store i32 %425, ptr %34, align 4, !tbaa !9
  %426 = load i32, ptr %34, align 4, !tbaa !9
  %427 = icmp slt i32 %426, 0
  br i1 %427, label %428, label %445

428:                                              ; preds = %413
  %429 = load ptr, ptr %21, align 8, !tbaa !5
  %430 = load i32, ptr %14, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds ptr, ptr %429, i64 %431
  %433 = load ptr, ptr %432, align 8, !tbaa !5
  %434 = load i32, ptr %13, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds i8, ptr %433, i64 %435
  store i8 0, ptr %436, align 1, !tbaa !15
  %437 = load ptr, ptr %22, align 8, !tbaa !5
  %438 = load i32, ptr %14, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds ptr, ptr %437, i64 %439
  %441 = load ptr, ptr %440, align 8, !tbaa !5
  %442 = load i32, ptr %13, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds i8, ptr %441, i64 %443
  store i8 0, ptr %444, align 1, !tbaa !15
  store i32 23, ptr %26, align 4
  br label %636

445:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #2
  %446 = load ptr, ptr %10, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.MTable, ptr %446, i32 0, i32 3
  %448 = load ptr, ptr %447, align 8, !tbaa !15
  %449 = load i32, ptr %14, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds ptr, ptr %448, i64 %450
  %452 = load ptr, ptr %451, align 8, !tbaa !5
  %453 = load i32, ptr %13, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds i16, ptr %452, i64 %454
  %456 = load i16, ptr %455, align 2, !tbaa !16
  %457 = sext i16 %456 to i32
  store i32 %457, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #2
  %458 = load ptr, ptr %11, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.MTable, ptr %458, i32 0, i32 3
  %460 = load ptr, ptr %459, align 8, !tbaa !15
  %461 = load i32, ptr %14, align 4, !tbaa !9
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds ptr, ptr %460, i64 %462
  %464 = load ptr, ptr %463, align 8, !tbaa !5
  %465 = load i32, ptr %13, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds i8, ptr %464, i64 %466
  %468 = load i8, ptr %467, align 1, !tbaa !15
  %469 = zext i8 %468 to i32
  %470 = ashr i32 %469, 4
  store i32 %470, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #2
  %471 = load ptr, ptr %11, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.MTable, ptr %471, i32 0, i32 3
  %473 = load ptr, ptr %472, align 8, !tbaa !15
  %474 = load i32, ptr %14, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds ptr, ptr %473, i64 %475
  %477 = load ptr, ptr %476, align 8, !tbaa !5
  %478 = load i32, ptr %13, align 4, !tbaa !9
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds i8, ptr %477, i64 %479
  %481 = load i8, ptr %480, align 1, !tbaa !15
  %482 = zext i8 %481 to i32
  %483 = and i32 %482, 15
  store i32 %483, ptr %37, align 4, !tbaa !9
  br label %484

484:                                              ; preds = %445
  %485 = load ptr, ptr %17, align 8, !tbaa !5
  %486 = load i32, ptr %35, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds ptr, ptr %485, i64 %487
  %489 = load ptr, ptr %488, align 8, !tbaa !5
  %490 = load i32, ptr %34, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds i8, ptr %489, i64 %491
  %493 = load i8, ptr %492, align 1, !tbaa !15
  %494 = zext i8 %493 to i32
  %495 = load i32, ptr %36, align 4, !tbaa !9
  %496 = mul nsw i32 %494, %495
  %497 = load ptr, ptr %17, align 8, !tbaa !5
  %498 = load i32, ptr %35, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds ptr, ptr %497, i64 %499
  %501 = load ptr, ptr %500, align 8, !tbaa !5
  %502 = load i32, ptr %34, align 4, !tbaa !9
  %503 = add nsw i32 %502, 1
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds i8, ptr %501, i64 %504
  %506 = load i8, ptr %505, align 1, !tbaa !15
  %507 = zext i8 %506 to i32
  %508 = load i32, ptr %36, align 4, !tbaa !9
  %509 = sub nsw i32 15, %508
  %510 = mul nsw i32 %507, %509
  %511 = add nsw i32 %496, %510
  %512 = load i32, ptr %37, align 4, !tbaa !9
  %513 = mul nsw i32 %511, %512
  %514 = load ptr, ptr %17, align 8, !tbaa !5
  %515 = load i32, ptr %35, align 4, !tbaa !9
  %516 = add nsw i32 %515, 1
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds ptr, ptr %514, i64 %517
  %519 = load ptr, ptr %518, align 8, !tbaa !5
  %520 = load i32, ptr %34, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds i8, ptr %519, i64 %521
  %523 = load i8, ptr %522, align 1, !tbaa !15
  %524 = zext i8 %523 to i32
  %525 = load i32, ptr %36, align 4, !tbaa !9
  %526 = mul nsw i32 %524, %525
  %527 = load ptr, ptr %17, align 8, !tbaa !5
  %528 = load i32, ptr %35, align 4, !tbaa !9
  %529 = add nsw i32 %528, 1
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds ptr, ptr %527, i64 %530
  %532 = load ptr, ptr %531, align 8, !tbaa !5
  %533 = load i32, ptr %34, align 4, !tbaa !9
  %534 = add nsw i32 %533, 1
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds i8, ptr %532, i64 %535
  %537 = load i8, ptr %536, align 1, !tbaa !15
  %538 = zext i8 %537 to i32
  %539 = load i32, ptr %36, align 4, !tbaa !9
  %540 = sub nsw i32 15, %539
  %541 = mul nsw i32 %538, %540
  %542 = add nsw i32 %526, %541
  %543 = load i32, ptr %37, align 4, !tbaa !9
  %544 = sub nsw i32 15, %543
  %545 = mul nsw i32 %542, %544
  %546 = add nsw i32 %513, %545
  %547 = add nsw i32 %546, 112
  %548 = sdiv i32 %547, 225
  %549 = trunc i32 %548 to i8
  %550 = load ptr, ptr %21, align 8, !tbaa !5
  %551 = load i32, ptr %14, align 4, !tbaa !9
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds ptr, ptr %550, i64 %552
  %554 = load ptr, ptr %553, align 8, !tbaa !5
  %555 = load i32, ptr %13, align 4, !tbaa !9
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds i8, ptr %554, i64 %556
  store i8 %549, ptr %557, align 1, !tbaa !15
  br label %558

558:                                              ; preds = %484
  br label %559

559:                                              ; preds = %558
  br label %560

560:                                              ; preds = %559
  %561 = load ptr, ptr %18, align 8, !tbaa !5
  %562 = load i32, ptr %35, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds ptr, ptr %561, i64 %563
  %565 = load ptr, ptr %564, align 8, !tbaa !5
  %566 = load i32, ptr %34, align 4, !tbaa !9
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds i8, ptr %565, i64 %567
  %569 = load i8, ptr %568, align 1, !tbaa !15
  %570 = zext i8 %569 to i32
  %571 = load i32, ptr %36, align 4, !tbaa !9
  %572 = mul nsw i32 %570, %571
  %573 = load ptr, ptr %18, align 8, !tbaa !5
  %574 = load i32, ptr %35, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds ptr, ptr %573, i64 %575
  %577 = load ptr, ptr %576, align 8, !tbaa !5
  %578 = load i32, ptr %34, align 4, !tbaa !9
  %579 = add nsw i32 %578, 1
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds i8, ptr %577, i64 %580
  %582 = load i8, ptr %581, align 1, !tbaa !15
  %583 = zext i8 %582 to i32
  %584 = load i32, ptr %36, align 4, !tbaa !9
  %585 = sub nsw i32 15, %584
  %586 = mul nsw i32 %583, %585
  %587 = add nsw i32 %572, %586
  %588 = load i32, ptr %37, align 4, !tbaa !9
  %589 = mul nsw i32 %587, %588
  %590 = load ptr, ptr %18, align 8, !tbaa !5
  %591 = load i32, ptr %35, align 4, !tbaa !9
  %592 = add nsw i32 %591, 1
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds ptr, ptr %590, i64 %593
  %595 = load ptr, ptr %594, align 8, !tbaa !5
  %596 = load i32, ptr %34, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds i8, ptr %595, i64 %597
  %599 = load i8, ptr %598, align 1, !tbaa !15
  %600 = zext i8 %599 to i32
  %601 = load i32, ptr %36, align 4, !tbaa !9
  %602 = mul nsw i32 %600, %601
  %603 = load ptr, ptr %18, align 8, !tbaa !5
  %604 = load i32, ptr %35, align 4, !tbaa !9
  %605 = add nsw i32 %604, 1
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds ptr, ptr %603, i64 %606
  %608 = load ptr, ptr %607, align 8, !tbaa !5
  %609 = load i32, ptr %34, align 4, !tbaa !9
  %610 = add nsw i32 %609, 1
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds i8, ptr %608, i64 %611
  %613 = load i8, ptr %612, align 1, !tbaa !15
  %614 = zext i8 %613 to i32
  %615 = load i32, ptr %36, align 4, !tbaa !9
  %616 = sub nsw i32 15, %615
  %617 = mul nsw i32 %614, %616
  %618 = add nsw i32 %602, %617
  %619 = load i32, ptr %37, align 4, !tbaa !9
  %620 = sub nsw i32 15, %619
  %621 = mul nsw i32 %618, %620
  %622 = add nsw i32 %589, %621
  %623 = add nsw i32 %622, 112
  %624 = sdiv i32 %623, 225
  %625 = trunc i32 %624 to i8
  %626 = load ptr, ptr %22, align 8, !tbaa !5
  %627 = load i32, ptr %14, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds ptr, ptr %626, i64 %628
  %630 = load ptr, ptr %629, align 8, !tbaa !5
  %631 = load i32, ptr %13, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds i8, ptr %630, i64 %632
  store i8 %625, ptr %633, align 1, !tbaa !15
  br label %634

634:                                              ; preds = %560
  br label %635

635:                                              ; preds = %634
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #2
  store i32 0, ptr %26, align 4
  br label %636

636:                                              ; preds = %635, %428
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #2
  %637 = load i32, ptr %26, align 4
  switch i32 %637, label %2055 [
    i32 0, label %638
    i32 23, label %639
  ]

638:                                              ; preds = %636
  br label %639

639:                                              ; preds = %638, %636
  %640 = load i32, ptr %13, align 4, !tbaa !9
  %641 = add nsw i32 %640, 1
  store i32 %641, ptr %13, align 4, !tbaa !9
  br label %409, !llvm.loop !23

642:                                              ; preds = %409
  br label %643

643:                                              ; preds = %642
  %644 = load i32, ptr %14, align 4, !tbaa !9
  %645 = add nsw i32 %644, 1
  store i32 %645, ptr %14, align 4, !tbaa !9
  br label %404, !llvm.loop !24

646:                                              ; preds = %404
  store i32 1, ptr %26, align 4
  br label %2052

647:                                              ; preds = %400, %395
  %648 = load ptr, ptr %7, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.MImage, ptr %648, i32 0, i32 0
  %650 = load i32, ptr %649, align 8, !tbaa !14
  %651 = icmp eq i32 %650, 2
  br i1 %651, label %652, label %819

652:                                              ; preds = %647
  %653 = load i32, ptr %12, align 4, !tbaa !9
  %654 = icmp ne i32 %653, 0
  br i1 %654, label %655, label %819

655:                                              ; preds = %652
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %656

656:                                              ; preds = %815, %655
  %657 = load i32, ptr %14, align 4, !tbaa !9
  %658 = load i32, ptr %15, align 4, !tbaa !9
  %659 = icmp slt i32 %657, %658
  br i1 %659, label %660, label %818

660:                                              ; preds = %656
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %661

661:                                              ; preds = %811, %660
  %662 = load i32, ptr %13, align 4, !tbaa !9
  %663 = load i32, ptr %16, align 4, !tbaa !9
  %664 = icmp slt i32 %662, %663
  br i1 %664, label %665, label %814

665:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #2
  %666 = load ptr, ptr %9, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.MTable, ptr %666, i32 0, i32 3
  %668 = load ptr, ptr %667, align 8, !tbaa !15
  %669 = load i32, ptr %14, align 4, !tbaa !9
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds ptr, ptr %668, i64 %670
  %672 = load ptr, ptr %671, align 8, !tbaa !5
  %673 = load i32, ptr %13, align 4, !tbaa !9
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds i16, ptr %672, i64 %674
  %676 = load i16, ptr %675, align 2, !tbaa !16
  %677 = sext i16 %676 to i32
  store i32 %677, ptr %38, align 4, !tbaa !9
  %678 = load i32, ptr %38, align 4, !tbaa !9
  %679 = icmp slt i32 %678, 0
  br i1 %679, label %680, label %697

680:                                              ; preds = %665
  %681 = load ptr, ptr %21, align 8, !tbaa !5
  %682 = load i32, ptr %14, align 4, !tbaa !9
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds ptr, ptr %681, i64 %683
  %685 = load ptr, ptr %684, align 8, !tbaa !5
  %686 = load i32, ptr %13, align 4, !tbaa !9
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds i8, ptr %685, i64 %687
  store i8 0, ptr %688, align 1, !tbaa !15
  %689 = load ptr, ptr %22, align 8, !tbaa !5
  %690 = load i32, ptr %14, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds ptr, ptr %689, i64 %691
  %693 = load ptr, ptr %692, align 8, !tbaa !5
  %694 = load i32, ptr %13, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds i8, ptr %693, i64 %695
  store i8 0, ptr %696, align 1, !tbaa !15
  store i32 33, ptr %26, align 4
  br label %808

697:                                              ; preds = %665
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #2
  %698 = load ptr, ptr %10, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.MTable, ptr %698, i32 0, i32 3
  %700 = load ptr, ptr %699, align 8, !tbaa !15
  %701 = load i32, ptr %14, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds ptr, ptr %700, i64 %702
  %704 = load ptr, ptr %703, align 8, !tbaa !5
  %705 = load i32, ptr %13, align 4, !tbaa !9
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds i16, ptr %704, i64 %706
  %708 = load i16, ptr %707, align 2, !tbaa !16
  %709 = sext i16 %708 to i32
  store i32 %709, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #2
  %710 = load ptr, ptr %11, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.MTable, ptr %710, i32 0, i32 3
  %712 = load ptr, ptr %711, align 8, !tbaa !15
  %713 = load i32, ptr %14, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds ptr, ptr %712, i64 %714
  %716 = load ptr, ptr %715, align 8, !tbaa !5
  %717 = load i32, ptr %13, align 4, !tbaa !9
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds i8, ptr %716, i64 %718
  %720 = load i8, ptr %719, align 1, !tbaa !15
  %721 = zext i8 %720 to i32
  %722 = ashr i32 %721, 4
  store i32 %722, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #2
  %723 = load ptr, ptr %11, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.MTable, ptr %723, i32 0, i32 3
  %725 = load ptr, ptr %724, align 8, !tbaa !15
  %726 = load i32, ptr %14, align 4, !tbaa !9
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds ptr, ptr %725, i64 %727
  %729 = load ptr, ptr %728, align 8, !tbaa !5
  %730 = load i32, ptr %13, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds i8, ptr %729, i64 %731
  %733 = load i8, ptr %732, align 1, !tbaa !15
  %734 = zext i8 %733 to i32
  %735 = and i32 %734, 15
  store i32 %735, ptr %41, align 4, !tbaa !9
  br label %736

736:                                              ; preds = %697
  %737 = load ptr, ptr %17, align 8, !tbaa !5
  %738 = load i32, ptr %41, align 4, !tbaa !9
  %739 = icmp slt i32 %738, 8
  br i1 %739, label %740, label %743

740:                                              ; preds = %736
  %741 = load i32, ptr %39, align 4, !tbaa !9
  %742 = add nsw i32 %741, 1
  br label %745

743:                                              ; preds = %736
  %744 = load i32, ptr %39, align 4, !tbaa !9
  br label %745

745:                                              ; preds = %743, %740
  %746 = phi i32 [ %742, %740 ], [ %744, %743 ]
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds ptr, ptr %737, i64 %747
  %749 = load ptr, ptr %748, align 8, !tbaa !5
  %750 = load i32, ptr %40, align 4, !tbaa !9
  %751 = icmp slt i32 %750, 8
  br i1 %751, label %752, label %755

752:                                              ; preds = %745
  %753 = load i32, ptr %38, align 4, !tbaa !9
  %754 = add nsw i32 %753, 1
  br label %757

755:                                              ; preds = %745
  %756 = load i32, ptr %38, align 4, !tbaa !9
  br label %757

757:                                              ; preds = %755, %752
  %758 = phi i32 [ %754, %752 ], [ %756, %755 ]
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds i8, ptr %749, i64 %759
  %761 = load i8, ptr %760, align 1, !tbaa !15
  %762 = load ptr, ptr %21, align 8, !tbaa !5
  %763 = load i32, ptr %14, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds ptr, ptr %762, i64 %764
  %766 = load ptr, ptr %765, align 8, !tbaa !5
  %767 = load i32, ptr %13, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds i8, ptr %766, i64 %768
  store i8 %761, ptr %769, align 1, !tbaa !15
  br label %770

770:                                              ; preds = %757
  br label %771

771:                                              ; preds = %770
  br label %772

772:                                              ; preds = %771
  %773 = load ptr, ptr %18, align 8, !tbaa !5
  %774 = load i32, ptr %41, align 4, !tbaa !9
  %775 = icmp slt i32 %774, 8
  br i1 %775, label %776, label %779

776:                                              ; preds = %772
  %777 = load i32, ptr %39, align 4, !tbaa !9
  %778 = add nsw i32 %777, 1
  br label %781

779:                                              ; preds = %772
  %780 = load i32, ptr %39, align 4, !tbaa !9
  br label %781

781:                                              ; preds = %779, %776
  %782 = phi i32 [ %778, %776 ], [ %780, %779 ]
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds ptr, ptr %773, i64 %783
  %785 = load ptr, ptr %784, align 8, !tbaa !5
  %786 = load i32, ptr %40, align 4, !tbaa !9
  %787 = icmp slt i32 %786, 8
  br i1 %787, label %788, label %791

788:                                              ; preds = %781
  %789 = load i32, ptr %38, align 4, !tbaa !9
  %790 = add nsw i32 %789, 1
  br label %793

791:                                              ; preds = %781
  %792 = load i32, ptr %38, align 4, !tbaa !9
  br label %793

793:                                              ; preds = %791, %788
  %794 = phi i32 [ %790, %788 ], [ %792, %791 ]
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds i8, ptr %785, i64 %795
  %797 = load i8, ptr %796, align 1, !tbaa !15
  %798 = load ptr, ptr %22, align 8, !tbaa !5
  %799 = load i32, ptr %14, align 4, !tbaa !9
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds ptr, ptr %798, i64 %800
  %802 = load ptr, ptr %801, align 8, !tbaa !5
  %803 = load i32, ptr %13, align 4, !tbaa !9
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds i8, ptr %802, i64 %804
  store i8 %797, ptr %805, align 1, !tbaa !15
  br label %806

806:                                              ; preds = %793
  br label %807

807:                                              ; preds = %806
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #2
  store i32 0, ptr %26, align 4
  br label %808

808:                                              ; preds = %807, %680
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #2
  %809 = load i32, ptr %26, align 4
  switch i32 %809, label %2055 [
    i32 0, label %810
    i32 33, label %811
  ]

810:                                              ; preds = %808
  br label %811

811:                                              ; preds = %810, %808
  %812 = load i32, ptr %13, align 4, !tbaa !9
  %813 = add nsw i32 %812, 1
  store i32 %813, ptr %13, align 4, !tbaa !9
  br label %661, !llvm.loop !25

814:                                              ; preds = %661
  br label %815

815:                                              ; preds = %814
  %816 = load i32, ptr %14, align 4, !tbaa !9
  %817 = add nsw i32 %816, 1
  store i32 %817, ptr %14, align 4, !tbaa !9
  br label %656, !llvm.loop !26

818:                                              ; preds = %656
  store i32 1, ptr %26, align 4
  br label %2052

819:                                              ; preds = %652, %647
  %820 = load ptr, ptr %7, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.MImage, ptr %820, i32 0, i32 0
  %822 = load i32, ptr %821, align 8, !tbaa !14
  %823 = icmp eq i32 %822, 3
  br i1 %823, label %824, label %1155

824:                                              ; preds = %819
  %825 = load i32, ptr %12, align 4, !tbaa !9
  %826 = icmp ne i32 %825, 0
  br i1 %826, label %1155, label %827

827:                                              ; preds = %824
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %828

828:                                              ; preds = %1151, %827
  %829 = load i32, ptr %14, align 4, !tbaa !9
  %830 = load i32, ptr %15, align 4, !tbaa !9
  %831 = icmp slt i32 %829, %830
  br i1 %831, label %832, label %1154

832:                                              ; preds = %828
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %833

833:                                              ; preds = %1147, %832
  %834 = load i32, ptr %13, align 4, !tbaa !9
  %835 = load i32, ptr %16, align 4, !tbaa !9
  %836 = icmp slt i32 %834, %835
  br i1 %836, label %837, label %1150

837:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #2
  %838 = load ptr, ptr %9, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.MTable, ptr %838, i32 0, i32 3
  %840 = load ptr, ptr %839, align 8, !tbaa !15
  %841 = load i32, ptr %14, align 4, !tbaa !9
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds ptr, ptr %840, i64 %842
  %844 = load ptr, ptr %843, align 8, !tbaa !5
  %845 = load i32, ptr %13, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds i16, ptr %844, i64 %846
  %848 = load i16, ptr %847, align 2, !tbaa !16
  %849 = sext i16 %848 to i32
  store i32 %849, ptr %42, align 4, !tbaa !9
  %850 = load i32, ptr %42, align 4, !tbaa !9
  %851 = icmp slt i32 %850, 0
  br i1 %851, label %852, label %877

852:                                              ; preds = %837
  %853 = load ptr, ptr %21, align 8, !tbaa !5
  %854 = load i32, ptr %14, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds ptr, ptr %853, i64 %855
  %857 = load ptr, ptr %856, align 8, !tbaa !5
  %858 = load i32, ptr %13, align 4, !tbaa !9
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds i8, ptr %857, i64 %859
  store i8 0, ptr %860, align 1, !tbaa !15
  %861 = load ptr, ptr %22, align 8, !tbaa !5
  %862 = load i32, ptr %14, align 4, !tbaa !9
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds ptr, ptr %861, i64 %863
  %865 = load ptr, ptr %864, align 8, !tbaa !5
  %866 = load i32, ptr %13, align 4, !tbaa !9
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds i8, ptr %865, i64 %867
  store i8 0, ptr %868, align 1, !tbaa !15
  %869 = load ptr, ptr %23, align 8, !tbaa !5
  %870 = load i32, ptr %14, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds ptr, ptr %869, i64 %871
  %873 = load ptr, ptr %872, align 8, !tbaa !5
  %874 = load i32, ptr %13, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds i8, ptr %873, i64 %875
  store i8 0, ptr %876, align 1, !tbaa !15
  store i32 43, ptr %26, align 4
  br label %1144

877:                                              ; preds = %837
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #2
  %878 = load ptr, ptr %10, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.MTable, ptr %878, i32 0, i32 3
  %880 = load ptr, ptr %879, align 8, !tbaa !15
  %881 = load i32, ptr %14, align 4, !tbaa !9
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds ptr, ptr %880, i64 %882
  %884 = load ptr, ptr %883, align 8, !tbaa !5
  %885 = load i32, ptr %13, align 4, !tbaa !9
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds i16, ptr %884, i64 %886
  %888 = load i16, ptr %887, align 2, !tbaa !16
  %889 = sext i16 %888 to i32
  store i32 %889, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #2
  %890 = load ptr, ptr %11, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.MTable, ptr %890, i32 0, i32 3
  %892 = load ptr, ptr %891, align 8, !tbaa !15
  %893 = load i32, ptr %14, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds ptr, ptr %892, i64 %894
  %896 = load ptr, ptr %895, align 8, !tbaa !5
  %897 = load i32, ptr %13, align 4, !tbaa !9
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds i8, ptr %896, i64 %898
  %900 = load i8, ptr %899, align 1, !tbaa !15
  %901 = zext i8 %900 to i32
  %902 = ashr i32 %901, 4
  store i32 %902, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #2
  %903 = load ptr, ptr %11, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.MTable, ptr %903, i32 0, i32 3
  %905 = load ptr, ptr %904, align 8, !tbaa !15
  %906 = load i32, ptr %14, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds ptr, ptr %905, i64 %907
  %909 = load ptr, ptr %908, align 8, !tbaa !5
  %910 = load i32, ptr %13, align 4, !tbaa !9
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds i8, ptr %909, i64 %911
  %913 = load i8, ptr %912, align 1, !tbaa !15
  %914 = zext i8 %913 to i32
  %915 = and i32 %914, 15
  store i32 %915, ptr %45, align 4, !tbaa !9
  br label %916

916:                                              ; preds = %877
  %917 = load ptr, ptr %17, align 8, !tbaa !5
  %918 = load i32, ptr %43, align 4, !tbaa !9
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds ptr, ptr %917, i64 %919
  %921 = load ptr, ptr %920, align 8, !tbaa !5
  %922 = load i32, ptr %42, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds i8, ptr %921, i64 %923
  %925 = load i8, ptr %924, align 1, !tbaa !15
  %926 = zext i8 %925 to i32
  %927 = load i32, ptr %44, align 4, !tbaa !9
  %928 = mul nsw i32 %926, %927
  %929 = load ptr, ptr %17, align 8, !tbaa !5
  %930 = load i32, ptr %43, align 4, !tbaa !9
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds ptr, ptr %929, i64 %931
  %933 = load ptr, ptr %932, align 8, !tbaa !5
  %934 = load i32, ptr %42, align 4, !tbaa !9
  %935 = add nsw i32 %934, 1
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds i8, ptr %933, i64 %936
  %938 = load i8, ptr %937, align 1, !tbaa !15
  %939 = zext i8 %938 to i32
  %940 = load i32, ptr %44, align 4, !tbaa !9
  %941 = sub nsw i32 15, %940
  %942 = mul nsw i32 %939, %941
  %943 = add nsw i32 %928, %942
  %944 = load i32, ptr %45, align 4, !tbaa !9
  %945 = mul nsw i32 %943, %944
  %946 = load ptr, ptr %17, align 8, !tbaa !5
  %947 = load i32, ptr %43, align 4, !tbaa !9
  %948 = add nsw i32 %947, 1
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds ptr, ptr %946, i64 %949
  %951 = load ptr, ptr %950, align 8, !tbaa !5
  %952 = load i32, ptr %42, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds i8, ptr %951, i64 %953
  %955 = load i8, ptr %954, align 1, !tbaa !15
  %956 = zext i8 %955 to i32
  %957 = load i32, ptr %44, align 4, !tbaa !9
  %958 = mul nsw i32 %956, %957
  %959 = load ptr, ptr %17, align 8, !tbaa !5
  %960 = load i32, ptr %43, align 4, !tbaa !9
  %961 = add nsw i32 %960, 1
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds ptr, ptr %959, i64 %962
  %964 = load ptr, ptr %963, align 8, !tbaa !5
  %965 = load i32, ptr %42, align 4, !tbaa !9
  %966 = add nsw i32 %965, 1
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds i8, ptr %964, i64 %967
  %969 = load i8, ptr %968, align 1, !tbaa !15
  %970 = zext i8 %969 to i32
  %971 = load i32, ptr %44, align 4, !tbaa !9
  %972 = sub nsw i32 15, %971
  %973 = mul nsw i32 %970, %972
  %974 = add nsw i32 %958, %973
  %975 = load i32, ptr %45, align 4, !tbaa !9
  %976 = sub nsw i32 15, %975
  %977 = mul nsw i32 %974, %976
  %978 = add nsw i32 %945, %977
  %979 = add nsw i32 %978, 112
  %980 = sdiv i32 %979, 225
  %981 = trunc i32 %980 to i8
  %982 = load ptr, ptr %21, align 8, !tbaa !5
  %983 = load i32, ptr %14, align 4, !tbaa !9
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds ptr, ptr %982, i64 %984
  %986 = load ptr, ptr %985, align 8, !tbaa !5
  %987 = load i32, ptr %13, align 4, !tbaa !9
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds i8, ptr %986, i64 %988
  store i8 %981, ptr %989, align 1, !tbaa !15
  br label %990

990:                                              ; preds = %916
  br label %991

991:                                              ; preds = %990
  br label %992

992:                                              ; preds = %991
  %993 = load ptr, ptr %18, align 8, !tbaa !5
  %994 = load i32, ptr %43, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds ptr, ptr %993, i64 %995
  %997 = load ptr, ptr %996, align 8, !tbaa !5
  %998 = load i32, ptr %42, align 4, !tbaa !9
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds i8, ptr %997, i64 %999
  %1001 = load i8, ptr %1000, align 1, !tbaa !15
  %1002 = zext i8 %1001 to i32
  %1003 = load i32, ptr %44, align 4, !tbaa !9
  %1004 = mul nsw i32 %1002, %1003
  %1005 = load ptr, ptr %18, align 8, !tbaa !5
  %1006 = load i32, ptr %43, align 4, !tbaa !9
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds ptr, ptr %1005, i64 %1007
  %1009 = load ptr, ptr %1008, align 8, !tbaa !5
  %1010 = load i32, ptr %42, align 4, !tbaa !9
  %1011 = add nsw i32 %1010, 1
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds i8, ptr %1009, i64 %1012
  %1014 = load i8, ptr %1013, align 1, !tbaa !15
  %1015 = zext i8 %1014 to i32
  %1016 = load i32, ptr %44, align 4, !tbaa !9
  %1017 = sub nsw i32 15, %1016
  %1018 = mul nsw i32 %1015, %1017
  %1019 = add nsw i32 %1004, %1018
  %1020 = load i32, ptr %45, align 4, !tbaa !9
  %1021 = mul nsw i32 %1019, %1020
  %1022 = load ptr, ptr %18, align 8, !tbaa !5
  %1023 = load i32, ptr %43, align 4, !tbaa !9
  %1024 = add nsw i32 %1023, 1
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds ptr, ptr %1022, i64 %1025
  %1027 = load ptr, ptr %1026, align 8, !tbaa !5
  %1028 = load i32, ptr %42, align 4, !tbaa !9
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds i8, ptr %1027, i64 %1029
  %1031 = load i8, ptr %1030, align 1, !tbaa !15
  %1032 = zext i8 %1031 to i32
  %1033 = load i32, ptr %44, align 4, !tbaa !9
  %1034 = mul nsw i32 %1032, %1033
  %1035 = load ptr, ptr %18, align 8, !tbaa !5
  %1036 = load i32, ptr %43, align 4, !tbaa !9
  %1037 = add nsw i32 %1036, 1
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds ptr, ptr %1035, i64 %1038
  %1040 = load ptr, ptr %1039, align 8, !tbaa !5
  %1041 = load i32, ptr %42, align 4, !tbaa !9
  %1042 = add nsw i32 %1041, 1
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds i8, ptr %1040, i64 %1043
  %1045 = load i8, ptr %1044, align 1, !tbaa !15
  %1046 = zext i8 %1045 to i32
  %1047 = load i32, ptr %44, align 4, !tbaa !9
  %1048 = sub nsw i32 15, %1047
  %1049 = mul nsw i32 %1046, %1048
  %1050 = add nsw i32 %1034, %1049
  %1051 = load i32, ptr %45, align 4, !tbaa !9
  %1052 = sub nsw i32 15, %1051
  %1053 = mul nsw i32 %1050, %1052
  %1054 = add nsw i32 %1021, %1053
  %1055 = add nsw i32 %1054, 112
  %1056 = sdiv i32 %1055, 225
  %1057 = trunc i32 %1056 to i8
  %1058 = load ptr, ptr %22, align 8, !tbaa !5
  %1059 = load i32, ptr %14, align 4, !tbaa !9
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds ptr, ptr %1058, i64 %1060
  %1062 = load ptr, ptr %1061, align 8, !tbaa !5
  %1063 = load i32, ptr %13, align 4, !tbaa !9
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds i8, ptr %1062, i64 %1064
  store i8 %1057, ptr %1065, align 1, !tbaa !15
  br label %1066

1066:                                             ; preds = %992
  br label %1067

1067:                                             ; preds = %1066
  br label %1068

1068:                                             ; preds = %1067
  %1069 = load ptr, ptr %19, align 8, !tbaa !5
  %1070 = load i32, ptr %43, align 4, !tbaa !9
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds ptr, ptr %1069, i64 %1071
  %1073 = load ptr, ptr %1072, align 8, !tbaa !5
  %1074 = load i32, ptr %42, align 4, !tbaa !9
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds i8, ptr %1073, i64 %1075
  %1077 = load i8, ptr %1076, align 1, !tbaa !15
  %1078 = zext i8 %1077 to i32
  %1079 = load i32, ptr %44, align 4, !tbaa !9
  %1080 = mul nsw i32 %1078, %1079
  %1081 = load ptr, ptr %19, align 8, !tbaa !5
  %1082 = load i32, ptr %43, align 4, !tbaa !9
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds ptr, ptr %1081, i64 %1083
  %1085 = load ptr, ptr %1084, align 8, !tbaa !5
  %1086 = load i32, ptr %42, align 4, !tbaa !9
  %1087 = add nsw i32 %1086, 1
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds i8, ptr %1085, i64 %1088
  %1090 = load i8, ptr %1089, align 1, !tbaa !15
  %1091 = zext i8 %1090 to i32
  %1092 = load i32, ptr %44, align 4, !tbaa !9
  %1093 = sub nsw i32 15, %1092
  %1094 = mul nsw i32 %1091, %1093
  %1095 = add nsw i32 %1080, %1094
  %1096 = load i32, ptr %45, align 4, !tbaa !9
  %1097 = mul nsw i32 %1095, %1096
  %1098 = load ptr, ptr %19, align 8, !tbaa !5
  %1099 = load i32, ptr %43, align 4, !tbaa !9
  %1100 = add nsw i32 %1099, 1
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds ptr, ptr %1098, i64 %1101
  %1103 = load ptr, ptr %1102, align 8, !tbaa !5
  %1104 = load i32, ptr %42, align 4, !tbaa !9
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds i8, ptr %1103, i64 %1105
  %1107 = load i8, ptr %1106, align 1, !tbaa !15
  %1108 = zext i8 %1107 to i32
  %1109 = load i32, ptr %44, align 4, !tbaa !9
  %1110 = mul nsw i32 %1108, %1109
  %1111 = load ptr, ptr %19, align 8, !tbaa !5
  %1112 = load i32, ptr %43, align 4, !tbaa !9
  %1113 = add nsw i32 %1112, 1
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds ptr, ptr %1111, i64 %1114
  %1116 = load ptr, ptr %1115, align 8, !tbaa !5
  %1117 = load i32, ptr %42, align 4, !tbaa !9
  %1118 = add nsw i32 %1117, 1
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds i8, ptr %1116, i64 %1119
  %1121 = load i8, ptr %1120, align 1, !tbaa !15
  %1122 = zext i8 %1121 to i32
  %1123 = load i32, ptr %44, align 4, !tbaa !9
  %1124 = sub nsw i32 15, %1123
  %1125 = mul nsw i32 %1122, %1124
  %1126 = add nsw i32 %1110, %1125
  %1127 = load i32, ptr %45, align 4, !tbaa !9
  %1128 = sub nsw i32 15, %1127
  %1129 = mul nsw i32 %1126, %1128
  %1130 = add nsw i32 %1097, %1129
  %1131 = add nsw i32 %1130, 112
  %1132 = sdiv i32 %1131, 225
  %1133 = trunc i32 %1132 to i8
  %1134 = load ptr, ptr %23, align 8, !tbaa !5
  %1135 = load i32, ptr %14, align 4, !tbaa !9
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds ptr, ptr %1134, i64 %1136
  %1138 = load ptr, ptr %1137, align 8, !tbaa !5
  %1139 = load i32, ptr %13, align 4, !tbaa !9
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds i8, ptr %1138, i64 %1140
  store i8 %1133, ptr %1141, align 1, !tbaa !15
  br label %1142

1142:                                             ; preds = %1068
  br label %1143

1143:                                             ; preds = %1142
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #2
  store i32 0, ptr %26, align 4
  br label %1144

1144:                                             ; preds = %1143, %852
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #2
  %1145 = load i32, ptr %26, align 4
  switch i32 %1145, label %2055 [
    i32 0, label %1146
    i32 43, label %1147
  ]

1146:                                             ; preds = %1144
  br label %1147

1147:                                             ; preds = %1146, %1144
  %1148 = load i32, ptr %13, align 4, !tbaa !9
  %1149 = add nsw i32 %1148, 1
  store i32 %1149, ptr %13, align 4, !tbaa !9
  br label %833, !llvm.loop !27

1150:                                             ; preds = %833
  br label %1151

1151:                                             ; preds = %1150
  %1152 = load i32, ptr %14, align 4, !tbaa !9
  %1153 = add nsw i32 %1152, 1
  store i32 %1153, ptr %14, align 4, !tbaa !9
  br label %828, !llvm.loop !28

1154:                                             ; preds = %828
  store i32 1, ptr %26, align 4
  br label %2052

1155:                                             ; preds = %824, %819
  %1156 = load ptr, ptr %7, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.MImage, ptr %1156, i32 0, i32 0
  %1158 = load i32, ptr %1157, align 8, !tbaa !14
  %1159 = icmp eq i32 %1158, 3
  br i1 %1159, label %1160, label %1371

1160:                                             ; preds = %1155
  %1161 = load i32, ptr %12, align 4, !tbaa !9
  %1162 = icmp ne i32 %1161, 0
  br i1 %1162, label %1163, label %1371

1163:                                             ; preds = %1160
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1164

1164:                                             ; preds = %1367, %1163
  %1165 = load i32, ptr %14, align 4, !tbaa !9
  %1166 = load i32, ptr %15, align 4, !tbaa !9
  %1167 = icmp slt i32 %1165, %1166
  br i1 %1167, label %1168, label %1370

1168:                                             ; preds = %1164
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %1169

1169:                                             ; preds = %1363, %1168
  %1170 = load i32, ptr %13, align 4, !tbaa !9
  %1171 = load i32, ptr %16, align 4, !tbaa !9
  %1172 = icmp slt i32 %1170, %1171
  br i1 %1172, label %1173, label %1366

1173:                                             ; preds = %1169
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #2
  %1174 = load ptr, ptr %9, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.MTable, ptr %1174, i32 0, i32 3
  %1176 = load ptr, ptr %1175, align 8, !tbaa !15
  %1177 = load i32, ptr %14, align 4, !tbaa !9
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds ptr, ptr %1176, i64 %1178
  %1180 = load ptr, ptr %1179, align 8, !tbaa !5
  %1181 = load i32, ptr %13, align 4, !tbaa !9
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds i16, ptr %1180, i64 %1182
  %1184 = load i16, ptr %1183, align 2, !tbaa !16
  %1185 = sext i16 %1184 to i32
  store i32 %1185, ptr %46, align 4, !tbaa !9
  %1186 = load i32, ptr %46, align 4, !tbaa !9
  %1187 = icmp slt i32 %1186, 0
  br i1 %1187, label %1188, label %1213

1188:                                             ; preds = %1173
  %1189 = load ptr, ptr %21, align 8, !tbaa !5
  %1190 = load i32, ptr %14, align 4, !tbaa !9
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds ptr, ptr %1189, i64 %1191
  %1193 = load ptr, ptr %1192, align 8, !tbaa !5
  %1194 = load i32, ptr %13, align 4, !tbaa !9
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds i8, ptr %1193, i64 %1195
  store i8 0, ptr %1196, align 1, !tbaa !15
  %1197 = load ptr, ptr %22, align 8, !tbaa !5
  %1198 = load i32, ptr %14, align 4, !tbaa !9
  %1199 = sext i32 %1198 to i64
  %1200 = getelementptr inbounds ptr, ptr %1197, i64 %1199
  %1201 = load ptr, ptr %1200, align 8, !tbaa !5
  %1202 = load i32, ptr %13, align 4, !tbaa !9
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds i8, ptr %1201, i64 %1203
  store i8 0, ptr %1204, align 1, !tbaa !15
  %1205 = load ptr, ptr %23, align 8, !tbaa !5
  %1206 = load i32, ptr %14, align 4, !tbaa !9
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds ptr, ptr %1205, i64 %1207
  %1209 = load ptr, ptr %1208, align 8, !tbaa !5
  %1210 = load i32, ptr %13, align 4, !tbaa !9
  %1211 = sext i32 %1210 to i64
  %1212 = getelementptr inbounds i8, ptr %1209, i64 %1211
  store i8 0, ptr %1212, align 1, !tbaa !15
  store i32 55, ptr %26, align 4
  br label %1360

1213:                                             ; preds = %1173
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #2
  %1214 = load ptr, ptr %10, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.MTable, ptr %1214, i32 0, i32 3
  %1216 = load ptr, ptr %1215, align 8, !tbaa !15
  %1217 = load i32, ptr %14, align 4, !tbaa !9
  %1218 = sext i32 %1217 to i64
  %1219 = getelementptr inbounds ptr, ptr %1216, i64 %1218
  %1220 = load ptr, ptr %1219, align 8, !tbaa !5
  %1221 = load i32, ptr %13, align 4, !tbaa !9
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds i16, ptr %1220, i64 %1222
  %1224 = load i16, ptr %1223, align 2, !tbaa !16
  %1225 = sext i16 %1224 to i32
  store i32 %1225, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #2
  %1226 = load ptr, ptr %11, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.MTable, ptr %1226, i32 0, i32 3
  %1228 = load ptr, ptr %1227, align 8, !tbaa !15
  %1229 = load i32, ptr %14, align 4, !tbaa !9
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds ptr, ptr %1228, i64 %1230
  %1232 = load ptr, ptr %1231, align 8, !tbaa !5
  %1233 = load i32, ptr %13, align 4, !tbaa !9
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds i8, ptr %1232, i64 %1234
  %1236 = load i8, ptr %1235, align 1, !tbaa !15
  %1237 = zext i8 %1236 to i32
  %1238 = ashr i32 %1237, 4
  store i32 %1238, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #2
  %1239 = load ptr, ptr %11, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.MTable, ptr %1239, i32 0, i32 3
  %1241 = load ptr, ptr %1240, align 8, !tbaa !15
  %1242 = load i32, ptr %14, align 4, !tbaa !9
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds ptr, ptr %1241, i64 %1243
  %1245 = load ptr, ptr %1244, align 8, !tbaa !5
  %1246 = load i32, ptr %13, align 4, !tbaa !9
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds i8, ptr %1245, i64 %1247
  %1249 = load i8, ptr %1248, align 1, !tbaa !15
  %1250 = zext i8 %1249 to i32
  %1251 = and i32 %1250, 15
  store i32 %1251, ptr %49, align 4, !tbaa !9
  br label %1252

1252:                                             ; preds = %1213
  %1253 = load ptr, ptr %17, align 8, !tbaa !5
  %1254 = load i32, ptr %49, align 4, !tbaa !9
  %1255 = icmp slt i32 %1254, 8
  br i1 %1255, label %1256, label %1259

1256:                                             ; preds = %1252
  %1257 = load i32, ptr %47, align 4, !tbaa !9
  %1258 = add nsw i32 %1257, 1
  br label %1261

1259:                                             ; preds = %1252
  %1260 = load i32, ptr %47, align 4, !tbaa !9
  br label %1261

1261:                                             ; preds = %1259, %1256
  %1262 = phi i32 [ %1258, %1256 ], [ %1260, %1259 ]
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds ptr, ptr %1253, i64 %1263
  %1265 = load ptr, ptr %1264, align 8, !tbaa !5
  %1266 = load i32, ptr %48, align 4, !tbaa !9
  %1267 = icmp slt i32 %1266, 8
  br i1 %1267, label %1268, label %1271

1268:                                             ; preds = %1261
  %1269 = load i32, ptr %46, align 4, !tbaa !9
  %1270 = add nsw i32 %1269, 1
  br label %1273

1271:                                             ; preds = %1261
  %1272 = load i32, ptr %46, align 4, !tbaa !9
  br label %1273

1273:                                             ; preds = %1271, %1268
  %1274 = phi i32 [ %1270, %1268 ], [ %1272, %1271 ]
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds i8, ptr %1265, i64 %1275
  %1277 = load i8, ptr %1276, align 1, !tbaa !15
  %1278 = load ptr, ptr %21, align 8, !tbaa !5
  %1279 = load i32, ptr %14, align 4, !tbaa !9
  %1280 = sext i32 %1279 to i64
  %1281 = getelementptr inbounds ptr, ptr %1278, i64 %1280
  %1282 = load ptr, ptr %1281, align 8, !tbaa !5
  %1283 = load i32, ptr %13, align 4, !tbaa !9
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds i8, ptr %1282, i64 %1284
  store i8 %1277, ptr %1285, align 1, !tbaa !15
  br label %1286

1286:                                             ; preds = %1273
  br label %1287

1287:                                             ; preds = %1286
  br label %1288

1288:                                             ; preds = %1287
  %1289 = load ptr, ptr %18, align 8, !tbaa !5
  %1290 = load i32, ptr %49, align 4, !tbaa !9
  %1291 = icmp slt i32 %1290, 8
  br i1 %1291, label %1292, label %1295

1292:                                             ; preds = %1288
  %1293 = load i32, ptr %47, align 4, !tbaa !9
  %1294 = add nsw i32 %1293, 1
  br label %1297

1295:                                             ; preds = %1288
  %1296 = load i32, ptr %47, align 4, !tbaa !9
  br label %1297

1297:                                             ; preds = %1295, %1292
  %1298 = phi i32 [ %1294, %1292 ], [ %1296, %1295 ]
  %1299 = sext i32 %1298 to i64
  %1300 = getelementptr inbounds ptr, ptr %1289, i64 %1299
  %1301 = load ptr, ptr %1300, align 8, !tbaa !5
  %1302 = load i32, ptr %48, align 4, !tbaa !9
  %1303 = icmp slt i32 %1302, 8
  br i1 %1303, label %1304, label %1307

1304:                                             ; preds = %1297
  %1305 = load i32, ptr %46, align 4, !tbaa !9
  %1306 = add nsw i32 %1305, 1
  br label %1309

1307:                                             ; preds = %1297
  %1308 = load i32, ptr %46, align 4, !tbaa !9
  br label %1309

1309:                                             ; preds = %1307, %1304
  %1310 = phi i32 [ %1306, %1304 ], [ %1308, %1307 ]
  %1311 = sext i32 %1310 to i64
  %1312 = getelementptr inbounds i8, ptr %1301, i64 %1311
  %1313 = load i8, ptr %1312, align 1, !tbaa !15
  %1314 = load ptr, ptr %22, align 8, !tbaa !5
  %1315 = load i32, ptr %14, align 4, !tbaa !9
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds ptr, ptr %1314, i64 %1316
  %1318 = load ptr, ptr %1317, align 8, !tbaa !5
  %1319 = load i32, ptr %13, align 4, !tbaa !9
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds i8, ptr %1318, i64 %1320
  store i8 %1313, ptr %1321, align 1, !tbaa !15
  br label %1322

1322:                                             ; preds = %1309
  br label %1323

1323:                                             ; preds = %1322
  br label %1324

1324:                                             ; preds = %1323
  %1325 = load ptr, ptr %19, align 8, !tbaa !5
  %1326 = load i32, ptr %49, align 4, !tbaa !9
  %1327 = icmp slt i32 %1326, 8
  br i1 %1327, label %1328, label %1331

1328:                                             ; preds = %1324
  %1329 = load i32, ptr %47, align 4, !tbaa !9
  %1330 = add nsw i32 %1329, 1
  br label %1333

1331:                                             ; preds = %1324
  %1332 = load i32, ptr %47, align 4, !tbaa !9
  br label %1333

1333:                                             ; preds = %1331, %1328
  %1334 = phi i32 [ %1330, %1328 ], [ %1332, %1331 ]
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds ptr, ptr %1325, i64 %1335
  %1337 = load ptr, ptr %1336, align 8, !tbaa !5
  %1338 = load i32, ptr %48, align 4, !tbaa !9
  %1339 = icmp slt i32 %1338, 8
  br i1 %1339, label %1340, label %1343

1340:                                             ; preds = %1333
  %1341 = load i32, ptr %46, align 4, !tbaa !9
  %1342 = add nsw i32 %1341, 1
  br label %1345

1343:                                             ; preds = %1333
  %1344 = load i32, ptr %46, align 4, !tbaa !9
  br label %1345

1345:                                             ; preds = %1343, %1340
  %1346 = phi i32 [ %1342, %1340 ], [ %1344, %1343 ]
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds i8, ptr %1337, i64 %1347
  %1349 = load i8, ptr %1348, align 1, !tbaa !15
  %1350 = load ptr, ptr %23, align 8, !tbaa !5
  %1351 = load i32, ptr %14, align 4, !tbaa !9
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds ptr, ptr %1350, i64 %1352
  %1354 = load ptr, ptr %1353, align 8, !tbaa !5
  %1355 = load i32, ptr %13, align 4, !tbaa !9
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds i8, ptr %1354, i64 %1356
  store i8 %1349, ptr %1357, align 1, !tbaa !15
  br label %1358

1358:                                             ; preds = %1345
  br label %1359

1359:                                             ; preds = %1358
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #2
  store i32 0, ptr %26, align 4
  br label %1360

1360:                                             ; preds = %1359, %1188
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #2
  %1361 = load i32, ptr %26, align 4
  switch i32 %1361, label %2055 [
    i32 0, label %1362
    i32 55, label %1363
  ]

1362:                                             ; preds = %1360
  br label %1363

1363:                                             ; preds = %1362, %1360
  %1364 = load i32, ptr %13, align 4, !tbaa !9
  %1365 = add nsw i32 %1364, 1
  store i32 %1365, ptr %13, align 4, !tbaa !9
  br label %1169, !llvm.loop !29

1366:                                             ; preds = %1169
  br label %1367

1367:                                             ; preds = %1366
  %1368 = load i32, ptr %14, align 4, !tbaa !9
  %1369 = add nsw i32 %1368, 1
  store i32 %1369, ptr %14, align 4, !tbaa !9
  br label %1164, !llvm.loop !30

1370:                                             ; preds = %1164
  store i32 1, ptr %26, align 4
  br label %2052

1371:                                             ; preds = %1160, %1155
  %1372 = load ptr, ptr %7, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.MImage, ptr %1372, i32 0, i32 0
  %1374 = load i32, ptr %1373, align 8, !tbaa !14
  %1375 = icmp eq i32 %1374, 4
  br i1 %1375, label %1376, label %1791

1376:                                             ; preds = %1371
  %1377 = load i32, ptr %12, align 4, !tbaa !9
  %1378 = icmp ne i32 %1377, 0
  br i1 %1378, label %1791, label %1379

1379:                                             ; preds = %1376
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1380

1380:                                             ; preds = %1787, %1379
  %1381 = load i32, ptr %14, align 4, !tbaa !9
  %1382 = load i32, ptr %15, align 4, !tbaa !9
  %1383 = icmp slt i32 %1381, %1382
  br i1 %1383, label %1384, label %1790

1384:                                             ; preds = %1380
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %1385

1385:                                             ; preds = %1783, %1384
  %1386 = load i32, ptr %13, align 4, !tbaa !9
  %1387 = load i32, ptr %16, align 4, !tbaa !9
  %1388 = icmp slt i32 %1386, %1387
  br i1 %1388, label %1389, label %1786

1389:                                             ; preds = %1385
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #2
  %1390 = load ptr, ptr %9, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.MTable, ptr %1390, i32 0, i32 3
  %1392 = load ptr, ptr %1391, align 8, !tbaa !15
  %1393 = load i32, ptr %14, align 4, !tbaa !9
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds ptr, ptr %1392, i64 %1394
  %1396 = load ptr, ptr %1395, align 8, !tbaa !5
  %1397 = load i32, ptr %13, align 4, !tbaa !9
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds i16, ptr %1396, i64 %1398
  %1400 = load i16, ptr %1399, align 2, !tbaa !16
  %1401 = sext i16 %1400 to i32
  store i32 %1401, ptr %50, align 4, !tbaa !9
  %1402 = load i32, ptr %50, align 4, !tbaa !9
  %1403 = icmp slt i32 %1402, 0
  br i1 %1403, label %1404, label %1437

1404:                                             ; preds = %1389
  %1405 = load ptr, ptr %21, align 8, !tbaa !5
  %1406 = load i32, ptr %14, align 4, !tbaa !9
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds ptr, ptr %1405, i64 %1407
  %1409 = load ptr, ptr %1408, align 8, !tbaa !5
  %1410 = load i32, ptr %13, align 4, !tbaa !9
  %1411 = sext i32 %1410 to i64
  %1412 = getelementptr inbounds i8, ptr %1409, i64 %1411
  store i8 0, ptr %1412, align 1, !tbaa !15
  %1413 = load ptr, ptr %22, align 8, !tbaa !5
  %1414 = load i32, ptr %14, align 4, !tbaa !9
  %1415 = sext i32 %1414 to i64
  %1416 = getelementptr inbounds ptr, ptr %1413, i64 %1415
  %1417 = load ptr, ptr %1416, align 8, !tbaa !5
  %1418 = load i32, ptr %13, align 4, !tbaa !9
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds i8, ptr %1417, i64 %1419
  store i8 0, ptr %1420, align 1, !tbaa !15
  %1421 = load ptr, ptr %23, align 8, !tbaa !5
  %1422 = load i32, ptr %14, align 4, !tbaa !9
  %1423 = sext i32 %1422 to i64
  %1424 = getelementptr inbounds ptr, ptr %1421, i64 %1423
  %1425 = load ptr, ptr %1424, align 8, !tbaa !5
  %1426 = load i32, ptr %13, align 4, !tbaa !9
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds i8, ptr %1425, i64 %1427
  store i8 0, ptr %1428, align 1, !tbaa !15
  %1429 = load ptr, ptr %24, align 8, !tbaa !5
  %1430 = load i32, ptr %14, align 4, !tbaa !9
  %1431 = sext i32 %1430 to i64
  %1432 = getelementptr inbounds ptr, ptr %1429, i64 %1431
  %1433 = load ptr, ptr %1432, align 8, !tbaa !5
  %1434 = load i32, ptr %13, align 4, !tbaa !9
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds i8, ptr %1433, i64 %1435
  store i8 0, ptr %1436, align 1, !tbaa !15
  store i32 67, ptr %26, align 4
  br label %1780

1437:                                             ; preds = %1389
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #2
  %1438 = load ptr, ptr %10, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.MTable, ptr %1438, i32 0, i32 3
  %1440 = load ptr, ptr %1439, align 8, !tbaa !15
  %1441 = load i32, ptr %14, align 4, !tbaa !9
  %1442 = sext i32 %1441 to i64
  %1443 = getelementptr inbounds ptr, ptr %1440, i64 %1442
  %1444 = load ptr, ptr %1443, align 8, !tbaa !5
  %1445 = load i32, ptr %13, align 4, !tbaa !9
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds i16, ptr %1444, i64 %1446
  %1448 = load i16, ptr %1447, align 2, !tbaa !16
  %1449 = sext i16 %1448 to i32
  store i32 %1449, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #2
  %1450 = load ptr, ptr %11, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct.MTable, ptr %1450, i32 0, i32 3
  %1452 = load ptr, ptr %1451, align 8, !tbaa !15
  %1453 = load i32, ptr %14, align 4, !tbaa !9
  %1454 = sext i32 %1453 to i64
  %1455 = getelementptr inbounds ptr, ptr %1452, i64 %1454
  %1456 = load ptr, ptr %1455, align 8, !tbaa !5
  %1457 = load i32, ptr %13, align 4, !tbaa !9
  %1458 = sext i32 %1457 to i64
  %1459 = getelementptr inbounds i8, ptr %1456, i64 %1458
  %1460 = load i8, ptr %1459, align 1, !tbaa !15
  %1461 = zext i8 %1460 to i32
  %1462 = ashr i32 %1461, 4
  store i32 %1462, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #2
  %1463 = load ptr, ptr %11, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.MTable, ptr %1463, i32 0, i32 3
  %1465 = load ptr, ptr %1464, align 8, !tbaa !15
  %1466 = load i32, ptr %14, align 4, !tbaa !9
  %1467 = sext i32 %1466 to i64
  %1468 = getelementptr inbounds ptr, ptr %1465, i64 %1467
  %1469 = load ptr, ptr %1468, align 8, !tbaa !5
  %1470 = load i32, ptr %13, align 4, !tbaa !9
  %1471 = sext i32 %1470 to i64
  %1472 = getelementptr inbounds i8, ptr %1469, i64 %1471
  %1473 = load i8, ptr %1472, align 1, !tbaa !15
  %1474 = zext i8 %1473 to i32
  %1475 = and i32 %1474, 15
  store i32 %1475, ptr %53, align 4, !tbaa !9
  br label %1476

1476:                                             ; preds = %1437
  %1477 = load ptr, ptr %17, align 8, !tbaa !5
  %1478 = load i32, ptr %51, align 4, !tbaa !9
  %1479 = sext i32 %1478 to i64
  %1480 = getelementptr inbounds ptr, ptr %1477, i64 %1479
  %1481 = load ptr, ptr %1480, align 8, !tbaa !5
  %1482 = load i32, ptr %50, align 4, !tbaa !9
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds i8, ptr %1481, i64 %1483
  %1485 = load i8, ptr %1484, align 1, !tbaa !15
  %1486 = zext i8 %1485 to i32
  %1487 = load i32, ptr %52, align 4, !tbaa !9
  %1488 = mul nsw i32 %1486, %1487
  %1489 = load ptr, ptr %17, align 8, !tbaa !5
  %1490 = load i32, ptr %51, align 4, !tbaa !9
  %1491 = sext i32 %1490 to i64
  %1492 = getelementptr inbounds ptr, ptr %1489, i64 %1491
  %1493 = load ptr, ptr %1492, align 8, !tbaa !5
  %1494 = load i32, ptr %50, align 4, !tbaa !9
  %1495 = add nsw i32 %1494, 1
  %1496 = sext i32 %1495 to i64
  %1497 = getelementptr inbounds i8, ptr %1493, i64 %1496
  %1498 = load i8, ptr %1497, align 1, !tbaa !15
  %1499 = zext i8 %1498 to i32
  %1500 = load i32, ptr %52, align 4, !tbaa !9
  %1501 = sub nsw i32 15, %1500
  %1502 = mul nsw i32 %1499, %1501
  %1503 = add nsw i32 %1488, %1502
  %1504 = load i32, ptr %53, align 4, !tbaa !9
  %1505 = mul nsw i32 %1503, %1504
  %1506 = load ptr, ptr %17, align 8, !tbaa !5
  %1507 = load i32, ptr %51, align 4, !tbaa !9
  %1508 = add nsw i32 %1507, 1
  %1509 = sext i32 %1508 to i64
  %1510 = getelementptr inbounds ptr, ptr %1506, i64 %1509
  %1511 = load ptr, ptr %1510, align 8, !tbaa !5
  %1512 = load i32, ptr %50, align 4, !tbaa !9
  %1513 = sext i32 %1512 to i64
  %1514 = getelementptr inbounds i8, ptr %1511, i64 %1513
  %1515 = load i8, ptr %1514, align 1, !tbaa !15
  %1516 = zext i8 %1515 to i32
  %1517 = load i32, ptr %52, align 4, !tbaa !9
  %1518 = mul nsw i32 %1516, %1517
  %1519 = load ptr, ptr %17, align 8, !tbaa !5
  %1520 = load i32, ptr %51, align 4, !tbaa !9
  %1521 = add nsw i32 %1520, 1
  %1522 = sext i32 %1521 to i64
  %1523 = getelementptr inbounds ptr, ptr %1519, i64 %1522
  %1524 = load ptr, ptr %1523, align 8, !tbaa !5
  %1525 = load i32, ptr %50, align 4, !tbaa !9
  %1526 = add nsw i32 %1525, 1
  %1527 = sext i32 %1526 to i64
  %1528 = getelementptr inbounds i8, ptr %1524, i64 %1527
  %1529 = load i8, ptr %1528, align 1, !tbaa !15
  %1530 = zext i8 %1529 to i32
  %1531 = load i32, ptr %52, align 4, !tbaa !9
  %1532 = sub nsw i32 15, %1531
  %1533 = mul nsw i32 %1530, %1532
  %1534 = add nsw i32 %1518, %1533
  %1535 = load i32, ptr %53, align 4, !tbaa !9
  %1536 = sub nsw i32 15, %1535
  %1537 = mul nsw i32 %1534, %1536
  %1538 = add nsw i32 %1505, %1537
  %1539 = add nsw i32 %1538, 112
  %1540 = sdiv i32 %1539, 225
  %1541 = trunc i32 %1540 to i8
  %1542 = load ptr, ptr %21, align 8, !tbaa !5
  %1543 = load i32, ptr %14, align 4, !tbaa !9
  %1544 = sext i32 %1543 to i64
  %1545 = getelementptr inbounds ptr, ptr %1542, i64 %1544
  %1546 = load ptr, ptr %1545, align 8, !tbaa !5
  %1547 = load i32, ptr %13, align 4, !tbaa !9
  %1548 = sext i32 %1547 to i64
  %1549 = getelementptr inbounds i8, ptr %1546, i64 %1548
  store i8 %1541, ptr %1549, align 1, !tbaa !15
  br label %1550

1550:                                             ; preds = %1476
  br label %1551

1551:                                             ; preds = %1550
  br label %1552

1552:                                             ; preds = %1551
  %1553 = load ptr, ptr %18, align 8, !tbaa !5
  %1554 = load i32, ptr %51, align 4, !tbaa !9
  %1555 = sext i32 %1554 to i64
  %1556 = getelementptr inbounds ptr, ptr %1553, i64 %1555
  %1557 = load ptr, ptr %1556, align 8, !tbaa !5
  %1558 = load i32, ptr %50, align 4, !tbaa !9
  %1559 = sext i32 %1558 to i64
  %1560 = getelementptr inbounds i8, ptr %1557, i64 %1559
  %1561 = load i8, ptr %1560, align 1, !tbaa !15
  %1562 = zext i8 %1561 to i32
  %1563 = load i32, ptr %52, align 4, !tbaa !9
  %1564 = mul nsw i32 %1562, %1563
  %1565 = load ptr, ptr %18, align 8, !tbaa !5
  %1566 = load i32, ptr %51, align 4, !tbaa !9
  %1567 = sext i32 %1566 to i64
  %1568 = getelementptr inbounds ptr, ptr %1565, i64 %1567
  %1569 = load ptr, ptr %1568, align 8, !tbaa !5
  %1570 = load i32, ptr %50, align 4, !tbaa !9
  %1571 = add nsw i32 %1570, 1
  %1572 = sext i32 %1571 to i64
  %1573 = getelementptr inbounds i8, ptr %1569, i64 %1572
  %1574 = load i8, ptr %1573, align 1, !tbaa !15
  %1575 = zext i8 %1574 to i32
  %1576 = load i32, ptr %52, align 4, !tbaa !9
  %1577 = sub nsw i32 15, %1576
  %1578 = mul nsw i32 %1575, %1577
  %1579 = add nsw i32 %1564, %1578
  %1580 = load i32, ptr %53, align 4, !tbaa !9
  %1581 = mul nsw i32 %1579, %1580
  %1582 = load ptr, ptr %18, align 8, !tbaa !5
  %1583 = load i32, ptr %51, align 4, !tbaa !9
  %1584 = add nsw i32 %1583, 1
  %1585 = sext i32 %1584 to i64
  %1586 = getelementptr inbounds ptr, ptr %1582, i64 %1585
  %1587 = load ptr, ptr %1586, align 8, !tbaa !5
  %1588 = load i32, ptr %50, align 4, !tbaa !9
  %1589 = sext i32 %1588 to i64
  %1590 = getelementptr inbounds i8, ptr %1587, i64 %1589
  %1591 = load i8, ptr %1590, align 1, !tbaa !15
  %1592 = zext i8 %1591 to i32
  %1593 = load i32, ptr %52, align 4, !tbaa !9
  %1594 = mul nsw i32 %1592, %1593
  %1595 = load ptr, ptr %18, align 8, !tbaa !5
  %1596 = load i32, ptr %51, align 4, !tbaa !9
  %1597 = add nsw i32 %1596, 1
  %1598 = sext i32 %1597 to i64
  %1599 = getelementptr inbounds ptr, ptr %1595, i64 %1598
  %1600 = load ptr, ptr %1599, align 8, !tbaa !5
  %1601 = load i32, ptr %50, align 4, !tbaa !9
  %1602 = add nsw i32 %1601, 1
  %1603 = sext i32 %1602 to i64
  %1604 = getelementptr inbounds i8, ptr %1600, i64 %1603
  %1605 = load i8, ptr %1604, align 1, !tbaa !15
  %1606 = zext i8 %1605 to i32
  %1607 = load i32, ptr %52, align 4, !tbaa !9
  %1608 = sub nsw i32 15, %1607
  %1609 = mul nsw i32 %1606, %1608
  %1610 = add nsw i32 %1594, %1609
  %1611 = load i32, ptr %53, align 4, !tbaa !9
  %1612 = sub nsw i32 15, %1611
  %1613 = mul nsw i32 %1610, %1612
  %1614 = add nsw i32 %1581, %1613
  %1615 = add nsw i32 %1614, 112
  %1616 = sdiv i32 %1615, 225
  %1617 = trunc i32 %1616 to i8
  %1618 = load ptr, ptr %22, align 8, !tbaa !5
  %1619 = load i32, ptr %14, align 4, !tbaa !9
  %1620 = sext i32 %1619 to i64
  %1621 = getelementptr inbounds ptr, ptr %1618, i64 %1620
  %1622 = load ptr, ptr %1621, align 8, !tbaa !5
  %1623 = load i32, ptr %13, align 4, !tbaa !9
  %1624 = sext i32 %1623 to i64
  %1625 = getelementptr inbounds i8, ptr %1622, i64 %1624
  store i8 %1617, ptr %1625, align 1, !tbaa !15
  br label %1626

1626:                                             ; preds = %1552
  br label %1627

1627:                                             ; preds = %1626
  br label %1628

1628:                                             ; preds = %1627
  %1629 = load ptr, ptr %19, align 8, !tbaa !5
  %1630 = load i32, ptr %51, align 4, !tbaa !9
  %1631 = sext i32 %1630 to i64
  %1632 = getelementptr inbounds ptr, ptr %1629, i64 %1631
  %1633 = load ptr, ptr %1632, align 8, !tbaa !5
  %1634 = load i32, ptr %50, align 4, !tbaa !9
  %1635 = sext i32 %1634 to i64
  %1636 = getelementptr inbounds i8, ptr %1633, i64 %1635
  %1637 = load i8, ptr %1636, align 1, !tbaa !15
  %1638 = zext i8 %1637 to i32
  %1639 = load i32, ptr %52, align 4, !tbaa !9
  %1640 = mul nsw i32 %1638, %1639
  %1641 = load ptr, ptr %19, align 8, !tbaa !5
  %1642 = load i32, ptr %51, align 4, !tbaa !9
  %1643 = sext i32 %1642 to i64
  %1644 = getelementptr inbounds ptr, ptr %1641, i64 %1643
  %1645 = load ptr, ptr %1644, align 8, !tbaa !5
  %1646 = load i32, ptr %50, align 4, !tbaa !9
  %1647 = add nsw i32 %1646, 1
  %1648 = sext i32 %1647 to i64
  %1649 = getelementptr inbounds i8, ptr %1645, i64 %1648
  %1650 = load i8, ptr %1649, align 1, !tbaa !15
  %1651 = zext i8 %1650 to i32
  %1652 = load i32, ptr %52, align 4, !tbaa !9
  %1653 = sub nsw i32 15, %1652
  %1654 = mul nsw i32 %1651, %1653
  %1655 = add nsw i32 %1640, %1654
  %1656 = load i32, ptr %53, align 4, !tbaa !9
  %1657 = mul nsw i32 %1655, %1656
  %1658 = load ptr, ptr %19, align 8, !tbaa !5
  %1659 = load i32, ptr %51, align 4, !tbaa !9
  %1660 = add nsw i32 %1659, 1
  %1661 = sext i32 %1660 to i64
  %1662 = getelementptr inbounds ptr, ptr %1658, i64 %1661
  %1663 = load ptr, ptr %1662, align 8, !tbaa !5
  %1664 = load i32, ptr %50, align 4, !tbaa !9
  %1665 = sext i32 %1664 to i64
  %1666 = getelementptr inbounds i8, ptr %1663, i64 %1665
  %1667 = load i8, ptr %1666, align 1, !tbaa !15
  %1668 = zext i8 %1667 to i32
  %1669 = load i32, ptr %52, align 4, !tbaa !9
  %1670 = mul nsw i32 %1668, %1669
  %1671 = load ptr, ptr %19, align 8, !tbaa !5
  %1672 = load i32, ptr %51, align 4, !tbaa !9
  %1673 = add nsw i32 %1672, 1
  %1674 = sext i32 %1673 to i64
  %1675 = getelementptr inbounds ptr, ptr %1671, i64 %1674
  %1676 = load ptr, ptr %1675, align 8, !tbaa !5
  %1677 = load i32, ptr %50, align 4, !tbaa !9
  %1678 = add nsw i32 %1677, 1
  %1679 = sext i32 %1678 to i64
  %1680 = getelementptr inbounds i8, ptr %1676, i64 %1679
  %1681 = load i8, ptr %1680, align 1, !tbaa !15
  %1682 = zext i8 %1681 to i32
  %1683 = load i32, ptr %52, align 4, !tbaa !9
  %1684 = sub nsw i32 15, %1683
  %1685 = mul nsw i32 %1682, %1684
  %1686 = add nsw i32 %1670, %1685
  %1687 = load i32, ptr %53, align 4, !tbaa !9
  %1688 = sub nsw i32 15, %1687
  %1689 = mul nsw i32 %1686, %1688
  %1690 = add nsw i32 %1657, %1689
  %1691 = add nsw i32 %1690, 112
  %1692 = sdiv i32 %1691, 225
  %1693 = trunc i32 %1692 to i8
  %1694 = load ptr, ptr %23, align 8, !tbaa !5
  %1695 = load i32, ptr %14, align 4, !tbaa !9
  %1696 = sext i32 %1695 to i64
  %1697 = getelementptr inbounds ptr, ptr %1694, i64 %1696
  %1698 = load ptr, ptr %1697, align 8, !tbaa !5
  %1699 = load i32, ptr %13, align 4, !tbaa !9
  %1700 = sext i32 %1699 to i64
  %1701 = getelementptr inbounds i8, ptr %1698, i64 %1700
  store i8 %1693, ptr %1701, align 1, !tbaa !15
  br label %1702

1702:                                             ; preds = %1628
  br label %1703

1703:                                             ; preds = %1702
  br label %1704

1704:                                             ; preds = %1703
  %1705 = load ptr, ptr %20, align 8, !tbaa !5
  %1706 = load i32, ptr %51, align 4, !tbaa !9
  %1707 = sext i32 %1706 to i64
  %1708 = getelementptr inbounds ptr, ptr %1705, i64 %1707
  %1709 = load ptr, ptr %1708, align 8, !tbaa !5
  %1710 = load i32, ptr %50, align 4, !tbaa !9
  %1711 = sext i32 %1710 to i64
  %1712 = getelementptr inbounds i8, ptr %1709, i64 %1711
  %1713 = load i8, ptr %1712, align 1, !tbaa !15
  %1714 = zext i8 %1713 to i32
  %1715 = load i32, ptr %52, align 4, !tbaa !9
  %1716 = mul nsw i32 %1714, %1715
  %1717 = load ptr, ptr %20, align 8, !tbaa !5
  %1718 = load i32, ptr %51, align 4, !tbaa !9
  %1719 = sext i32 %1718 to i64
  %1720 = getelementptr inbounds ptr, ptr %1717, i64 %1719
  %1721 = load ptr, ptr %1720, align 8, !tbaa !5
  %1722 = load i32, ptr %50, align 4, !tbaa !9
  %1723 = add nsw i32 %1722, 1
  %1724 = sext i32 %1723 to i64
  %1725 = getelementptr inbounds i8, ptr %1721, i64 %1724
  %1726 = load i8, ptr %1725, align 1, !tbaa !15
  %1727 = zext i8 %1726 to i32
  %1728 = load i32, ptr %52, align 4, !tbaa !9
  %1729 = sub nsw i32 15, %1728
  %1730 = mul nsw i32 %1727, %1729
  %1731 = add nsw i32 %1716, %1730
  %1732 = load i32, ptr %53, align 4, !tbaa !9
  %1733 = mul nsw i32 %1731, %1732
  %1734 = load ptr, ptr %20, align 8, !tbaa !5
  %1735 = load i32, ptr %51, align 4, !tbaa !9
  %1736 = add nsw i32 %1735, 1
  %1737 = sext i32 %1736 to i64
  %1738 = getelementptr inbounds ptr, ptr %1734, i64 %1737
  %1739 = load ptr, ptr %1738, align 8, !tbaa !5
  %1740 = load i32, ptr %50, align 4, !tbaa !9
  %1741 = sext i32 %1740 to i64
  %1742 = getelementptr inbounds i8, ptr %1739, i64 %1741
  %1743 = load i8, ptr %1742, align 1, !tbaa !15
  %1744 = zext i8 %1743 to i32
  %1745 = load i32, ptr %52, align 4, !tbaa !9
  %1746 = mul nsw i32 %1744, %1745
  %1747 = load ptr, ptr %20, align 8, !tbaa !5
  %1748 = load i32, ptr %51, align 4, !tbaa !9
  %1749 = add nsw i32 %1748, 1
  %1750 = sext i32 %1749 to i64
  %1751 = getelementptr inbounds ptr, ptr %1747, i64 %1750
  %1752 = load ptr, ptr %1751, align 8, !tbaa !5
  %1753 = load i32, ptr %50, align 4, !tbaa !9
  %1754 = add nsw i32 %1753, 1
  %1755 = sext i32 %1754 to i64
  %1756 = getelementptr inbounds i8, ptr %1752, i64 %1755
  %1757 = load i8, ptr %1756, align 1, !tbaa !15
  %1758 = zext i8 %1757 to i32
  %1759 = load i32, ptr %52, align 4, !tbaa !9
  %1760 = sub nsw i32 15, %1759
  %1761 = mul nsw i32 %1758, %1760
  %1762 = add nsw i32 %1746, %1761
  %1763 = load i32, ptr %53, align 4, !tbaa !9
  %1764 = sub nsw i32 15, %1763
  %1765 = mul nsw i32 %1762, %1764
  %1766 = add nsw i32 %1733, %1765
  %1767 = add nsw i32 %1766, 112
  %1768 = sdiv i32 %1767, 225
  %1769 = trunc i32 %1768 to i8
  %1770 = load ptr, ptr %24, align 8, !tbaa !5
  %1771 = load i32, ptr %14, align 4, !tbaa !9
  %1772 = sext i32 %1771 to i64
  %1773 = getelementptr inbounds ptr, ptr %1770, i64 %1772
  %1774 = load ptr, ptr %1773, align 8, !tbaa !5
  %1775 = load i32, ptr %13, align 4, !tbaa !9
  %1776 = sext i32 %1775 to i64
  %1777 = getelementptr inbounds i8, ptr %1774, i64 %1776
  store i8 %1769, ptr %1777, align 1, !tbaa !15
  br label %1778

1778:                                             ; preds = %1704
  br label %1779

1779:                                             ; preds = %1778
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #2
  store i32 0, ptr %26, align 4
  br label %1780

1780:                                             ; preds = %1779, %1404
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #2
  %1781 = load i32, ptr %26, align 4
  switch i32 %1781, label %2055 [
    i32 0, label %1782
    i32 67, label %1783
  ]

1782:                                             ; preds = %1780
  br label %1783

1783:                                             ; preds = %1782, %1780
  %1784 = load i32, ptr %13, align 4, !tbaa !9
  %1785 = add nsw i32 %1784, 1
  store i32 %1785, ptr %13, align 4, !tbaa !9
  br label %1385, !llvm.loop !31

1786:                                             ; preds = %1385
  br label %1787

1787:                                             ; preds = %1786
  %1788 = load i32, ptr %14, align 4, !tbaa !9
  %1789 = add nsw i32 %1788, 1
  store i32 %1789, ptr %14, align 4, !tbaa !9
  br label %1380, !llvm.loop !32

1790:                                             ; preds = %1380
  store i32 1, ptr %26, align 4
  br label %2052

1791:                                             ; preds = %1376, %1371
  %1792 = load ptr, ptr %7, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.MImage, ptr %1792, i32 0, i32 0
  %1794 = load i32, ptr %1793, align 8, !tbaa !14
  %1795 = icmp eq i32 %1794, 4
  br i1 %1795, label %1796, label %2051

1796:                                             ; preds = %1791
  %1797 = load i32, ptr %12, align 4, !tbaa !9
  %1798 = icmp ne i32 %1797, 0
  br i1 %1798, label %1799, label %2051

1799:                                             ; preds = %1796
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %1800

1800:                                             ; preds = %2047, %1799
  %1801 = load i32, ptr %14, align 4, !tbaa !9
  %1802 = load i32, ptr %15, align 4, !tbaa !9
  %1803 = icmp slt i32 %1801, %1802
  br i1 %1803, label %1804, label %2050

1804:                                             ; preds = %1800
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %1805

1805:                                             ; preds = %2043, %1804
  %1806 = load i32, ptr %13, align 4, !tbaa !9
  %1807 = load i32, ptr %16, align 4, !tbaa !9
  %1808 = icmp slt i32 %1806, %1807
  br i1 %1808, label %1809, label %2046

1809:                                             ; preds = %1805
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #2
  %1810 = load ptr, ptr %9, align 8, !tbaa !5
  %1811 = getelementptr inbounds %struct.MTable, ptr %1810, i32 0, i32 3
  %1812 = load ptr, ptr %1811, align 8, !tbaa !15
  %1813 = load i32, ptr %14, align 4, !tbaa !9
  %1814 = sext i32 %1813 to i64
  %1815 = getelementptr inbounds ptr, ptr %1812, i64 %1814
  %1816 = load ptr, ptr %1815, align 8, !tbaa !5
  %1817 = load i32, ptr %13, align 4, !tbaa !9
  %1818 = sext i32 %1817 to i64
  %1819 = getelementptr inbounds i16, ptr %1816, i64 %1818
  %1820 = load i16, ptr %1819, align 2, !tbaa !16
  %1821 = sext i16 %1820 to i32
  store i32 %1821, ptr %54, align 4, !tbaa !9
  %1822 = load i32, ptr %54, align 4, !tbaa !9
  %1823 = icmp slt i32 %1822, 0
  br i1 %1823, label %1824, label %1857

1824:                                             ; preds = %1809
  %1825 = load ptr, ptr %21, align 8, !tbaa !5
  %1826 = load i32, ptr %14, align 4, !tbaa !9
  %1827 = sext i32 %1826 to i64
  %1828 = getelementptr inbounds ptr, ptr %1825, i64 %1827
  %1829 = load ptr, ptr %1828, align 8, !tbaa !5
  %1830 = load i32, ptr %13, align 4, !tbaa !9
  %1831 = sext i32 %1830 to i64
  %1832 = getelementptr inbounds i8, ptr %1829, i64 %1831
  store i8 0, ptr %1832, align 1, !tbaa !15
  %1833 = load ptr, ptr %22, align 8, !tbaa !5
  %1834 = load i32, ptr %14, align 4, !tbaa !9
  %1835 = sext i32 %1834 to i64
  %1836 = getelementptr inbounds ptr, ptr %1833, i64 %1835
  %1837 = load ptr, ptr %1836, align 8, !tbaa !5
  %1838 = load i32, ptr %13, align 4, !tbaa !9
  %1839 = sext i32 %1838 to i64
  %1840 = getelementptr inbounds i8, ptr %1837, i64 %1839
  store i8 0, ptr %1840, align 1, !tbaa !15
  %1841 = load ptr, ptr %23, align 8, !tbaa !5
  %1842 = load i32, ptr %14, align 4, !tbaa !9
  %1843 = sext i32 %1842 to i64
  %1844 = getelementptr inbounds ptr, ptr %1841, i64 %1843
  %1845 = load ptr, ptr %1844, align 8, !tbaa !5
  %1846 = load i32, ptr %13, align 4, !tbaa !9
  %1847 = sext i32 %1846 to i64
  %1848 = getelementptr inbounds i8, ptr %1845, i64 %1847
  store i8 0, ptr %1848, align 1, !tbaa !15
  %1849 = load ptr, ptr %24, align 8, !tbaa !5
  %1850 = load i32, ptr %14, align 4, !tbaa !9
  %1851 = sext i32 %1850 to i64
  %1852 = getelementptr inbounds ptr, ptr %1849, i64 %1851
  %1853 = load ptr, ptr %1852, align 8, !tbaa !5
  %1854 = load i32, ptr %13, align 4, !tbaa !9
  %1855 = sext i32 %1854 to i64
  %1856 = getelementptr inbounds i8, ptr %1853, i64 %1855
  store i8 0, ptr %1856, align 1, !tbaa !15
  store i32 81, ptr %26, align 4
  br label %2040

1857:                                             ; preds = %1809
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #2
  %1858 = load ptr, ptr %10, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.MTable, ptr %1858, i32 0, i32 3
  %1860 = load ptr, ptr %1859, align 8, !tbaa !15
  %1861 = load i32, ptr %14, align 4, !tbaa !9
  %1862 = sext i32 %1861 to i64
  %1863 = getelementptr inbounds ptr, ptr %1860, i64 %1862
  %1864 = load ptr, ptr %1863, align 8, !tbaa !5
  %1865 = load i32, ptr %13, align 4, !tbaa !9
  %1866 = sext i32 %1865 to i64
  %1867 = getelementptr inbounds i16, ptr %1864, i64 %1866
  %1868 = load i16, ptr %1867, align 2, !tbaa !16
  %1869 = sext i16 %1868 to i32
  store i32 %1869, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #2
  %1870 = load ptr, ptr %11, align 8, !tbaa !5
  %1871 = getelementptr inbounds %struct.MTable, ptr %1870, i32 0, i32 3
  %1872 = load ptr, ptr %1871, align 8, !tbaa !15
  %1873 = load i32, ptr %14, align 4, !tbaa !9
  %1874 = sext i32 %1873 to i64
  %1875 = getelementptr inbounds ptr, ptr %1872, i64 %1874
  %1876 = load ptr, ptr %1875, align 8, !tbaa !5
  %1877 = load i32, ptr %13, align 4, !tbaa !9
  %1878 = sext i32 %1877 to i64
  %1879 = getelementptr inbounds i8, ptr %1876, i64 %1878
  %1880 = load i8, ptr %1879, align 1, !tbaa !15
  %1881 = zext i8 %1880 to i32
  %1882 = ashr i32 %1881, 4
  store i32 %1882, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #2
  %1883 = load ptr, ptr %11, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.MTable, ptr %1883, i32 0, i32 3
  %1885 = load ptr, ptr %1884, align 8, !tbaa !15
  %1886 = load i32, ptr %14, align 4, !tbaa !9
  %1887 = sext i32 %1886 to i64
  %1888 = getelementptr inbounds ptr, ptr %1885, i64 %1887
  %1889 = load ptr, ptr %1888, align 8, !tbaa !5
  %1890 = load i32, ptr %13, align 4, !tbaa !9
  %1891 = sext i32 %1890 to i64
  %1892 = getelementptr inbounds i8, ptr %1889, i64 %1891
  %1893 = load i8, ptr %1892, align 1, !tbaa !15
  %1894 = zext i8 %1893 to i32
  %1895 = and i32 %1894, 15
  store i32 %1895, ptr %57, align 4, !tbaa !9
  br label %1896

1896:                                             ; preds = %1857
  %1897 = load ptr, ptr %17, align 8, !tbaa !5
  %1898 = load i32, ptr %57, align 4, !tbaa !9
  %1899 = icmp slt i32 %1898, 8
  br i1 %1899, label %1900, label %1903

1900:                                             ; preds = %1896
  %1901 = load i32, ptr %55, align 4, !tbaa !9
  %1902 = add nsw i32 %1901, 1
  br label %1905

1903:                                             ; preds = %1896
  %1904 = load i32, ptr %55, align 4, !tbaa !9
  br label %1905

1905:                                             ; preds = %1903, %1900
  %1906 = phi i32 [ %1902, %1900 ], [ %1904, %1903 ]
  %1907 = sext i32 %1906 to i64
  %1908 = getelementptr inbounds ptr, ptr %1897, i64 %1907
  %1909 = load ptr, ptr %1908, align 8, !tbaa !5
  %1910 = load i32, ptr %56, align 4, !tbaa !9
  %1911 = icmp slt i32 %1910, 8
  br i1 %1911, label %1912, label %1915

1912:                                             ; preds = %1905
  %1913 = load i32, ptr %54, align 4, !tbaa !9
  %1914 = add nsw i32 %1913, 1
  br label %1917

1915:                                             ; preds = %1905
  %1916 = load i32, ptr %54, align 4, !tbaa !9
  br label %1917

1917:                                             ; preds = %1915, %1912
  %1918 = phi i32 [ %1914, %1912 ], [ %1916, %1915 ]
  %1919 = sext i32 %1918 to i64
  %1920 = getelementptr inbounds i8, ptr %1909, i64 %1919
  %1921 = load i8, ptr %1920, align 1, !tbaa !15
  %1922 = load ptr, ptr %21, align 8, !tbaa !5
  %1923 = load i32, ptr %14, align 4, !tbaa !9
  %1924 = sext i32 %1923 to i64
  %1925 = getelementptr inbounds ptr, ptr %1922, i64 %1924
  %1926 = load ptr, ptr %1925, align 8, !tbaa !5
  %1927 = load i32, ptr %13, align 4, !tbaa !9
  %1928 = sext i32 %1927 to i64
  %1929 = getelementptr inbounds i8, ptr %1926, i64 %1928
  store i8 %1921, ptr %1929, align 1, !tbaa !15
  br label %1930

1930:                                             ; preds = %1917
  br label %1931

1931:                                             ; preds = %1930
  br label %1932

1932:                                             ; preds = %1931
  %1933 = load ptr, ptr %18, align 8, !tbaa !5
  %1934 = load i32, ptr %57, align 4, !tbaa !9
  %1935 = icmp slt i32 %1934, 8
  br i1 %1935, label %1936, label %1939

1936:                                             ; preds = %1932
  %1937 = load i32, ptr %55, align 4, !tbaa !9
  %1938 = add nsw i32 %1937, 1
  br label %1941

1939:                                             ; preds = %1932
  %1940 = load i32, ptr %55, align 4, !tbaa !9
  br label %1941

1941:                                             ; preds = %1939, %1936
  %1942 = phi i32 [ %1938, %1936 ], [ %1940, %1939 ]
  %1943 = sext i32 %1942 to i64
  %1944 = getelementptr inbounds ptr, ptr %1933, i64 %1943
  %1945 = load ptr, ptr %1944, align 8, !tbaa !5
  %1946 = load i32, ptr %56, align 4, !tbaa !9
  %1947 = icmp slt i32 %1946, 8
  br i1 %1947, label %1948, label %1951

1948:                                             ; preds = %1941
  %1949 = load i32, ptr %54, align 4, !tbaa !9
  %1950 = add nsw i32 %1949, 1
  br label %1953

1951:                                             ; preds = %1941
  %1952 = load i32, ptr %54, align 4, !tbaa !9
  br label %1953

1953:                                             ; preds = %1951, %1948
  %1954 = phi i32 [ %1950, %1948 ], [ %1952, %1951 ]
  %1955 = sext i32 %1954 to i64
  %1956 = getelementptr inbounds i8, ptr %1945, i64 %1955
  %1957 = load i8, ptr %1956, align 1, !tbaa !15
  %1958 = load ptr, ptr %22, align 8, !tbaa !5
  %1959 = load i32, ptr %14, align 4, !tbaa !9
  %1960 = sext i32 %1959 to i64
  %1961 = getelementptr inbounds ptr, ptr %1958, i64 %1960
  %1962 = load ptr, ptr %1961, align 8, !tbaa !5
  %1963 = load i32, ptr %13, align 4, !tbaa !9
  %1964 = sext i32 %1963 to i64
  %1965 = getelementptr inbounds i8, ptr %1962, i64 %1964
  store i8 %1957, ptr %1965, align 1, !tbaa !15
  br label %1966

1966:                                             ; preds = %1953
  br label %1967

1967:                                             ; preds = %1966
  br label %1968

1968:                                             ; preds = %1967
  %1969 = load ptr, ptr %19, align 8, !tbaa !5
  %1970 = load i32, ptr %57, align 4, !tbaa !9
  %1971 = icmp slt i32 %1970, 8
  br i1 %1971, label %1972, label %1975

1972:                                             ; preds = %1968
  %1973 = load i32, ptr %55, align 4, !tbaa !9
  %1974 = add nsw i32 %1973, 1
  br label %1977

1975:                                             ; preds = %1968
  %1976 = load i32, ptr %55, align 4, !tbaa !9
  br label %1977

1977:                                             ; preds = %1975, %1972
  %1978 = phi i32 [ %1974, %1972 ], [ %1976, %1975 ]
  %1979 = sext i32 %1978 to i64
  %1980 = getelementptr inbounds ptr, ptr %1969, i64 %1979
  %1981 = load ptr, ptr %1980, align 8, !tbaa !5
  %1982 = load i32, ptr %56, align 4, !tbaa !9
  %1983 = icmp slt i32 %1982, 8
  br i1 %1983, label %1984, label %1987

1984:                                             ; preds = %1977
  %1985 = load i32, ptr %54, align 4, !tbaa !9
  %1986 = add nsw i32 %1985, 1
  br label %1989

1987:                                             ; preds = %1977
  %1988 = load i32, ptr %54, align 4, !tbaa !9
  br label %1989

1989:                                             ; preds = %1987, %1984
  %1990 = phi i32 [ %1986, %1984 ], [ %1988, %1987 ]
  %1991 = sext i32 %1990 to i64
  %1992 = getelementptr inbounds i8, ptr %1981, i64 %1991
  %1993 = load i8, ptr %1992, align 1, !tbaa !15
  %1994 = load ptr, ptr %23, align 8, !tbaa !5
  %1995 = load i32, ptr %14, align 4, !tbaa !9
  %1996 = sext i32 %1995 to i64
  %1997 = getelementptr inbounds ptr, ptr %1994, i64 %1996
  %1998 = load ptr, ptr %1997, align 8, !tbaa !5
  %1999 = load i32, ptr %13, align 4, !tbaa !9
  %2000 = sext i32 %1999 to i64
  %2001 = getelementptr inbounds i8, ptr %1998, i64 %2000
  store i8 %1993, ptr %2001, align 1, !tbaa !15
  br label %2002

2002:                                             ; preds = %1989
  br label %2003

2003:                                             ; preds = %2002
  br label %2004

2004:                                             ; preds = %2003
  %2005 = load ptr, ptr %20, align 8, !tbaa !5
  %2006 = load i32, ptr %57, align 4, !tbaa !9
  %2007 = icmp slt i32 %2006, 8
  br i1 %2007, label %2008, label %2011

2008:                                             ; preds = %2004
  %2009 = load i32, ptr %55, align 4, !tbaa !9
  %2010 = add nsw i32 %2009, 1
  br label %2013

2011:                                             ; preds = %2004
  %2012 = load i32, ptr %55, align 4, !tbaa !9
  br label %2013

2013:                                             ; preds = %2011, %2008
  %2014 = phi i32 [ %2010, %2008 ], [ %2012, %2011 ]
  %2015 = sext i32 %2014 to i64
  %2016 = getelementptr inbounds ptr, ptr %2005, i64 %2015
  %2017 = load ptr, ptr %2016, align 8, !tbaa !5
  %2018 = load i32, ptr %56, align 4, !tbaa !9
  %2019 = icmp slt i32 %2018, 8
  br i1 %2019, label %2020, label %2023

2020:                                             ; preds = %2013
  %2021 = load i32, ptr %54, align 4, !tbaa !9
  %2022 = add nsw i32 %2021, 1
  br label %2025

2023:                                             ; preds = %2013
  %2024 = load i32, ptr %54, align 4, !tbaa !9
  br label %2025

2025:                                             ; preds = %2023, %2020
  %2026 = phi i32 [ %2022, %2020 ], [ %2024, %2023 ]
  %2027 = sext i32 %2026 to i64
  %2028 = getelementptr inbounds i8, ptr %2017, i64 %2027
  %2029 = load i8, ptr %2028, align 1, !tbaa !15
  %2030 = load ptr, ptr %24, align 8, !tbaa !5
  %2031 = load i32, ptr %14, align 4, !tbaa !9
  %2032 = sext i32 %2031 to i64
  %2033 = getelementptr inbounds ptr, ptr %2030, i64 %2032
  %2034 = load ptr, ptr %2033, align 8, !tbaa !5
  %2035 = load i32, ptr %13, align 4, !tbaa !9
  %2036 = sext i32 %2035 to i64
  %2037 = getelementptr inbounds i8, ptr %2034, i64 %2036
  store i8 %2029, ptr %2037, align 1, !tbaa !15
  br label %2038

2038:                                             ; preds = %2025
  br label %2039

2039:                                             ; preds = %2038
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #2
  store i32 0, ptr %26, align 4
  br label %2040

2040:                                             ; preds = %2039, %1824
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #2
  %2041 = load i32, ptr %26, align 4
  switch i32 %2041, label %2055 [
    i32 0, label %2042
    i32 81, label %2043
  ]

2042:                                             ; preds = %2040
  br label %2043

2043:                                             ; preds = %2042, %2040
  %2044 = load i32, ptr %13, align 4, !tbaa !9
  %2045 = add nsw i32 %2044, 1
  store i32 %2045, ptr %13, align 4, !tbaa !9
  br label %1805, !llvm.loop !33

2046:                                             ; preds = %1805
  br label %2047

2047:                                             ; preds = %2046
  %2048 = load i32, ptr %14, align 4, !tbaa !9
  %2049 = add nsw i32 %2048, 1
  store i32 %2049, ptr %14, align 4, !tbaa !9
  br label %1800, !llvm.loop !34

2050:                                             ; preds = %1800
  store i32 1, ptr %26, align 4
  br label %2052

2051:                                             ; preds = %1796, %1791
  store i32 0, ptr %26, align 4
  br label %2052

2052:                                             ; preds = %2051, %2050, %1790, %1370, %1154, %818, %646, %394, %266
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #2
  %2053 = load i32, ptr %26, align 4
  switch i32 %2053, label %2055 [
    i32 0, label %2054
    i32 1, label %2054
  ]

2054:                                             ; preds = %2052, %2052
  ret void

2055:                                             ; preds = %2052, %2040, %1780, %1360, %1144, %808, %636, %384, %256
  unreachable
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 4}
!12 = !{!"MImage", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 16, !6, i64 48}
!13 = !{!12, !10, i64 8}
!14 = !{!12, !10, i64 0}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = distinct !{!21, !19}
!22 = distinct !{!22, !19}
!23 = distinct !{!23, !19}
!24 = distinct !{!24, !19}
!25 = distinct !{!25, !19}
!26 = distinct !{!26, !19}
!27 = distinct !{!27, !19}
!28 = distinct !{!28, !19}
!29 = distinct !{!29, !19}
!30 = distinct !{!30, !19}
!31 = distinct !{!31, !19}
!32 = distinct !{!32, !19}
!33 = distinct !{!33, !19}
!34 = distinct !{!34, !19}


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

; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable
define dso_local void @GridInterpolation(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, i32 noundef %5) local_unnamed_addr #0 {
  %7 = getelementptr inbounds i8, ptr %1, i64 4
  %8 = load i32, ptr %7, align 4, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %1, i64 8
  %10 = load i32, ptr %9, align 8, !tbaa !11
  %11 = getelementptr inbounds i8, ptr %0, i64 16
  %12 = load ptr, ptr %11, align 8, !tbaa !12
  %13 = getelementptr inbounds i8, ptr %0, i64 24
  %14 = load ptr, ptr %13, align 8, !tbaa !12
  %15 = getelementptr inbounds i8, ptr %0, i64 32
  %16 = load ptr, ptr %15, align 8, !tbaa !12
  %17 = getelementptr inbounds i8, ptr %0, i64 40
  %18 = load ptr, ptr %17, align 8, !tbaa !12
  %19 = getelementptr inbounds i8, ptr %1, i64 16
  %20 = load ptr, ptr %19, align 8, !tbaa !12
  %21 = getelementptr inbounds i8, ptr %1, i64 24
  %22 = load ptr, ptr %21, align 8, !tbaa !12
  %23 = getelementptr inbounds i8, ptr %1, i64 32
  %24 = load ptr, ptr %23, align 8, !tbaa !12
  %25 = getelementptr inbounds i8, ptr %1, i64 40
  %26 = load ptr, ptr %25, align 8, !tbaa !12
  %27 = and i32 %5, 16
  %28 = icmp eq i32 %27, 0
  %29 = load i32, ptr %0, align 8, !tbaa !13
  %30 = icmp ne i32 %29, 1
  %or.cond = or i1 %28, %30
  br i1 %or.cond, label %94, label %.preheader602

.preheader602:                                    ; preds = %6
  %31 = icmp sgt i32 %8, 0
  br i1 %31, label %.preheader601.lr.ph, label %.loopexit

.preheader601.lr.ph:                              ; preds = %.preheader602
  %32 = icmp sgt i32 %10, 0
  %33 = getelementptr inbounds i8, ptr %2, i64 16
  %34 = getelementptr inbounds i8, ptr %3, i64 16
  %35 = getelementptr inbounds i8, ptr %4, i64 16
  br i1 %32, label %.preheader601.us.preheader, label %.loopexit

.preheader601.us.preheader:                       ; preds = %.preheader601.lr.ph
  %wide.trip.count647 = zext nneg i32 %8 to i64
  %wide.trip.count = zext nneg i32 %10 to i64
  br label %.preheader601.us

.preheader601.us:                                 ; preds = %.preheader601.us.preheader, %._crit_edge.us
  %indvars.iv644 = phi i64 [ 0, %.preheader601.us.preheader ], [ %indvars.iv.next645, %._crit_edge.us ]
  %36 = getelementptr inbounds ptr, ptr %20, i64 %indvars.iv644
  br label %37

37:                                               ; preds = %.preheader601.us, %91
  %indvars.iv = phi i64 [ 0, %.preheader601.us ], [ %indvars.iv.next, %91 ]
  %38 = load ptr, ptr %33, align 8, !tbaa !14
  %39 = getelementptr inbounds ptr, ptr %38, i64 %indvars.iv644
  %40 = load ptr, ptr %39, align 8, !tbaa !12
  %41 = getelementptr inbounds i16, ptr %40, i64 %indvars.iv
  %42 = load i16, ptr %41, align 2, !tbaa !15
  %43 = icmp slt i16 %42, 0
  br i1 %43, label %91, label %44

44:                                               ; preds = %37
  %45 = load ptr, ptr %34, align 8, !tbaa !14
  %46 = getelementptr inbounds ptr, ptr %45, i64 %indvars.iv644
  %47 = load ptr, ptr %46, align 8, !tbaa !12
  %48 = getelementptr inbounds i16, ptr %47, i64 %indvars.iv
  %49 = load i16, ptr %48, align 2, !tbaa !15
  %50 = sext i16 %49 to i64
  %51 = load ptr, ptr %35, align 8, !tbaa !14
  %52 = getelementptr inbounds ptr, ptr %51, i64 %indvars.iv644
  %53 = load ptr, ptr %52, align 8, !tbaa !12
  %54 = getelementptr inbounds i8, ptr %53, i64 %indvars.iv
  %55 = load i8, ptr %54, align 1, !tbaa !14
  %56 = zext i8 %55 to i32
  %57 = lshr i32 %56, 4
  %58 = and i32 %56, 15
  %59 = getelementptr inbounds ptr, ptr %12, i64 %50
  %60 = load ptr, ptr %59, align 8, !tbaa !12
  %61 = zext nneg i16 %42 to i64
  %62 = getelementptr inbounds i8, ptr %60, i64 %61
  %63 = load i8, ptr %62, align 1, !tbaa !14
  %64 = zext i8 %63 to i32
  %65 = mul nuw nsw i32 %57, %64
  %narrow.us = add nuw i16 %42, 1
  %66 = zext i16 %narrow.us to i64
  %67 = getelementptr inbounds i8, ptr %60, i64 %66
  %68 = load i8, ptr %67, align 1, !tbaa !14
  %69 = zext i8 %68 to i32
  %70 = xor i32 %57, 15
  %71 = mul nuw nsw i32 %70, %69
  %72 = add nuw nsw i32 %71, %65
  %73 = mul nuw nsw i32 %72, %58
  %74 = getelementptr i8, ptr %59, i64 8
  %75 = load ptr, ptr %74, align 8, !tbaa !12
  %76 = getelementptr inbounds i8, ptr %75, i64 %61
  %77 = load i8, ptr %76, align 1, !tbaa !14
  %78 = zext i8 %77 to i32
  %79 = mul nuw nsw i32 %57, %78
  %80 = getelementptr inbounds i8, ptr %75, i64 %66
  %81 = load i8, ptr %80, align 1, !tbaa !14
  %82 = zext i8 %81 to i32
  %83 = mul nuw nsw i32 %70, %82
  %84 = add nuw nsw i32 %83, %79
  %85 = xor i32 %58, 15
  %86 = mul nuw nsw i32 %84, %85
  %87 = add nuw nsw i32 %73, 112
  %88 = add nuw nsw i32 %87, %86
  %89 = udiv i32 %88, 225
  %90 = trunc i32 %89 to i8
  br label %91

91:                                               ; preds = %37, %44
  %.sink = phi i8 [ %90, %44 ], [ 0, %37 ]
  %92 = load ptr, ptr %36, align 8, !tbaa !12
  %93 = getelementptr inbounds i8, ptr %92, i64 %indvars.iv
  store i8 %.sink, ptr %93, align 1, !tbaa !14
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.us, label %37, !llvm.loop !17

._crit_edge.us:                                   ; preds = %91
  %indvars.iv.next645 = add nuw nsw i64 %indvars.iv644, 1
  %exitcond648.not = icmp eq i64 %indvars.iv.next645, %wide.trip.count647
  br i1 %exitcond648.not, label %.loopexit, label %.preheader601.us, !llvm.loop !19

94:                                               ; preds = %6
  %95 = icmp eq i32 %29, 1
  %or.cond3 = and i1 %28, %95
  br i1 %or.cond3, label %.preheader582, label %137

.preheader582:                                    ; preds = %94
  %96 = icmp sgt i32 %8, 0
  br i1 %96, label %.preheader.lr.ph, label %.loopexit

.preheader.lr.ph:                                 ; preds = %.preheader582
  %97 = icmp sgt i32 %10, 0
  %98 = getelementptr inbounds i8, ptr %2, i64 16
  %99 = getelementptr inbounds i8, ptr %3, i64 16
  %100 = getelementptr inbounds i8, ptr %4, i64 16
  br i1 %97, label %.preheader.us.preheader, label %.loopexit

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph
  %wide.trip.count717 = zext nneg i32 %8 to i64
  %wide.trip.count712 = zext nneg i32 %10 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge.us626
  %indvars.iv714 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next715, %._crit_edge.us626 ]
  %101 = getelementptr inbounds ptr, ptr %20, i64 %indvars.iv714
  br label %102

102:                                              ; preds = %.preheader.us, %134
  %indvars.iv709 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next710, %134 ]
  %103 = load ptr, ptr %98, align 8, !tbaa !14
  %104 = getelementptr inbounds ptr, ptr %103, i64 %indvars.iv714
  %105 = load ptr, ptr %104, align 8, !tbaa !12
  %106 = getelementptr inbounds i16, ptr %105, i64 %indvars.iv709
  %107 = load i16, ptr %106, align 2, !tbaa !15
  %108 = icmp slt i16 %107, 0
  br i1 %108, label %134, label %109

109:                                              ; preds = %102
  %110 = zext nneg i16 %107 to i64
  %111 = load ptr, ptr %99, align 8, !tbaa !14
  %112 = getelementptr inbounds ptr, ptr %111, i64 %indvars.iv714
  %113 = load ptr, ptr %112, align 8, !tbaa !12
  %114 = getelementptr inbounds i16, ptr %113, i64 %indvars.iv709
  %115 = load i16, ptr %114, align 2, !tbaa !15
  %116 = sext i16 %115 to i64
  %117 = load ptr, ptr %100, align 8, !tbaa !14
  %118 = getelementptr inbounds ptr, ptr %117, i64 %indvars.iv714
  %119 = load ptr, ptr %118, align 8, !tbaa !12
  %120 = getelementptr inbounds i8, ptr %119, i64 %indvars.iv709
  %121 = load i8, ptr %120, align 1, !tbaa !14
  %122 = lshr i8 %121, 3
  %123 = and i8 %122, 1
  %124 = xor i8 %123, 1
  %125 = zext nneg i8 %124 to i64
  %126 = getelementptr ptr, ptr %12, i64 %125
  %127 = getelementptr ptr, ptr %126, i64 %116
  %128 = load ptr, ptr %127, align 8, !tbaa !12
  %129 = icmp sgt i8 %121, -1
  %130 = zext i1 %129 to i64
  %131 = getelementptr inbounds i8, ptr %128, i64 %110
  %132 = getelementptr inbounds i8, ptr %131, i64 %130
  %133 = load i8, ptr %132, align 1, !tbaa !14
  br label %134

134:                                              ; preds = %102, %109
  %.sink728 = phi i8 [ %133, %109 ], [ 0, %102 ]
  %135 = load ptr, ptr %101, align 8, !tbaa !12
  %136 = getelementptr inbounds i8, ptr %135, i64 %indvars.iv709
  store i8 %.sink728, ptr %136, align 1, !tbaa !14
  %indvars.iv.next710 = add nuw nsw i64 %indvars.iv709, 1
  %exitcond713.not = icmp eq i64 %indvars.iv.next710, %wide.trip.count712
  br i1 %exitcond713.not, label %._crit_edge.us626, label %102, !llvm.loop !20

._crit_edge.us626:                                ; preds = %134
  %indvars.iv.next715 = add nuw nsw i64 %indvars.iv714, 1
  %exitcond718.not = icmp eq i64 %indvars.iv.next715, %wide.trip.count717
  br i1 %exitcond718.not, label %.loopexit, label %.preheader.us, !llvm.loop !21

137:                                              ; preds = %94
  %138 = icmp ne i32 %29, 2
  %or.cond5 = or i1 %28, %138
  br i1 %or.cond5, label %237, label %.preheader599

.preheader599:                                    ; preds = %137
  %139 = icmp sgt i32 %8, 0
  br i1 %139, label %.preheader598.lr.ph, label %.loopexit

.preheader598.lr.ph:                              ; preds = %.preheader599
  %140 = icmp sgt i32 %10, 0
  %141 = getelementptr inbounds i8, ptr %2, i64 16
  %142 = getelementptr inbounds i8, ptr %3, i64 16
  %143 = getelementptr inbounds i8, ptr %4, i64 16
  br i1 %140, label %.preheader598.us.preheader, label %.loopexit

.preheader598.us.preheader:                       ; preds = %.preheader598.lr.ph
  %wide.trip.count657 = zext nneg i32 %8 to i64
  %wide.trip.count652 = zext nneg i32 %10 to i64
  br label %.preheader598.us

.preheader598.us:                                 ; preds = %.preheader598.us.preheader, %._crit_edge.us608
  %indvars.iv654 = phi i64 [ 0, %.preheader598.us.preheader ], [ %indvars.iv.next655, %._crit_edge.us608 ]
  %144 = getelementptr inbounds ptr, ptr %20, i64 %indvars.iv654
  %145 = getelementptr inbounds ptr, ptr %22, i64 %indvars.iv654
  br label %146

146:                                              ; preds = %.preheader598.us, %234
  %indvars.iv649 = phi i64 [ 0, %.preheader598.us ], [ %indvars.iv.next650, %234 ]
  %147 = load ptr, ptr %141, align 8, !tbaa !14
  %148 = getelementptr inbounds ptr, ptr %147, i64 %indvars.iv654
  %149 = load ptr, ptr %148, align 8, !tbaa !12
  %150 = getelementptr inbounds i16, ptr %149, i64 %indvars.iv649
  %151 = load i16, ptr %150, align 2, !tbaa !15
  %152 = icmp slt i16 %151, 0
  br i1 %152, label %231, label %153

153:                                              ; preds = %146
  %154 = load ptr, ptr %142, align 8, !tbaa !14
  %155 = getelementptr inbounds ptr, ptr %154, i64 %indvars.iv654
  %156 = load ptr, ptr %155, align 8, !tbaa !12
  %157 = getelementptr inbounds i16, ptr %156, i64 %indvars.iv649
  %158 = load i16, ptr %157, align 2, !tbaa !15
  %159 = sext i16 %158 to i64
  %160 = load ptr, ptr %143, align 8, !tbaa !14
  %161 = getelementptr inbounds ptr, ptr %160, i64 %indvars.iv654
  %162 = load ptr, ptr %161, align 8, !tbaa !12
  %163 = getelementptr inbounds i8, ptr %162, i64 %indvars.iv649
  %164 = load i8, ptr %163, align 1, !tbaa !14
  %165 = zext i8 %164 to i32
  %166 = lshr i32 %165, 4
  %167 = and i32 %165, 15
  %168 = getelementptr inbounds ptr, ptr %12, i64 %159
  %169 = load ptr, ptr %168, align 8, !tbaa !12
  %170 = zext nneg i16 %151 to i64
  %171 = getelementptr inbounds i8, ptr %169, i64 %170
  %172 = load i8, ptr %171, align 1, !tbaa !14
  %173 = zext i8 %172 to i32
  %174 = mul nuw nsw i32 %166, %173
  %narrow579.us = add nuw i16 %151, 1
  %175 = zext i16 %narrow579.us to i64
  %176 = getelementptr inbounds i8, ptr %169, i64 %175
  %177 = load i8, ptr %176, align 1, !tbaa !14
  %178 = zext i8 %177 to i32
  %179 = xor i32 %166, 15
  %180 = mul nuw nsw i32 %179, %178
  %181 = add nuw nsw i32 %180, %174
  %182 = mul nuw nsw i32 %181, %167
  %183 = add nsw i64 %159, 1
  %184 = getelementptr inbounds ptr, ptr %12, i64 %183
  %185 = load ptr, ptr %184, align 8, !tbaa !12
  %186 = getelementptr inbounds i8, ptr %185, i64 %170
  %187 = load i8, ptr %186, align 1, !tbaa !14
  %188 = zext i8 %187 to i32
  %189 = mul nuw nsw i32 %166, %188
  %190 = getelementptr inbounds i8, ptr %185, i64 %175
  %191 = load i8, ptr %190, align 1, !tbaa !14
  %192 = zext i8 %191 to i32
  %193 = mul nuw nsw i32 %179, %192
  %194 = add nuw nsw i32 %193, %189
  %195 = xor i32 %167, 15
  %196 = mul nuw nsw i32 %194, %195
  %197 = add nuw nsw i32 %182, 112
  %198 = add nuw nsw i32 %197, %196
  %199 = udiv i32 %198, 225
  %200 = trunc i32 %199 to i8
  %201 = load ptr, ptr %144, align 8, !tbaa !12
  %202 = getelementptr inbounds i8, ptr %201, i64 %indvars.iv649
  store i8 %200, ptr %202, align 1, !tbaa !14
  %203 = getelementptr inbounds ptr, ptr %14, i64 %159
  %204 = load ptr, ptr %203, align 8, !tbaa !12
  %205 = getelementptr inbounds i8, ptr %204, i64 %170
  %206 = load i8, ptr %205, align 1, !tbaa !14
  %207 = zext i8 %206 to i32
  %208 = mul nuw nsw i32 %166, %207
  %209 = getelementptr inbounds i8, ptr %204, i64 %175
  %210 = load i8, ptr %209, align 1, !tbaa !14
  %211 = zext i8 %210 to i32
  %212 = mul nuw nsw i32 %179, %211
  %213 = add nuw nsw i32 %212, %208
  %214 = mul nuw nsw i32 %213, %167
  %215 = getelementptr inbounds ptr, ptr %14, i64 %183
  %216 = load ptr, ptr %215, align 8, !tbaa !12
  %217 = getelementptr inbounds i8, ptr %216, i64 %170
  %218 = load i8, ptr %217, align 1, !tbaa !14
  %219 = zext i8 %218 to i32
  %220 = mul nuw nsw i32 %166, %219
  %221 = getelementptr inbounds i8, ptr %216, i64 %175
  %222 = load i8, ptr %221, align 1, !tbaa !14
  %223 = zext i8 %222 to i32
  %224 = mul nuw nsw i32 %179, %223
  %225 = add nuw nsw i32 %224, %220
  %226 = mul nuw nsw i32 %225, %195
  %227 = add nuw nsw i32 %214, 112
  %228 = add nuw nsw i32 %227, %226
  %229 = udiv i32 %228, 225
  %230 = trunc i32 %229 to i8
  br label %234

231:                                              ; preds = %146
  %232 = load ptr, ptr %144, align 8, !tbaa !12
  %233 = getelementptr inbounds i8, ptr %232, i64 %indvars.iv649
  store i8 0, ptr %233, align 1, !tbaa !14
  br label %234

234:                                              ; preds = %231, %153
  %.sink731 = phi i8 [ 0, %231 ], [ %230, %153 ]
  %235 = load ptr, ptr %145, align 8, !tbaa !12
  %236 = getelementptr inbounds i8, ptr %235, i64 %indvars.iv649
  store i8 %.sink731, ptr %236, align 1, !tbaa !14
  %indvars.iv.next650 = add nuw nsw i64 %indvars.iv649, 1
  %exitcond653.not = icmp eq i64 %indvars.iv.next650, %wide.trip.count652
  br i1 %exitcond653.not, label %._crit_edge.us608, label %146, !llvm.loop !22

._crit_edge.us608:                                ; preds = %234
  %indvars.iv.next655 = add nuw nsw i64 %indvars.iv654, 1
  %exitcond658.not = icmp eq i64 %indvars.iv.next655, %wide.trip.count657
  br i1 %exitcond658.not, label %.loopexit, label %.preheader598.us, !llvm.loop !23

237:                                              ; preds = %137
  %238 = icmp eq i32 %29, 2
  %or.cond7 = and i1 %28, %238
  br i1 %or.cond7, label %.preheader584, label %290

.preheader584:                                    ; preds = %237
  %239 = icmp sgt i32 %8, 0
  br i1 %239, label %.preheader583.lr.ph, label %.loopexit

.preheader583.lr.ph:                              ; preds = %.preheader584
  %240 = icmp sgt i32 %10, 0
  %241 = getelementptr inbounds i8, ptr %2, i64 16
  %242 = getelementptr inbounds i8, ptr %3, i64 16
  %243 = getelementptr inbounds i8, ptr %4, i64 16
  br i1 %240, label %.preheader583.us.preheader, label %.loopexit

.preheader583.us.preheader:                       ; preds = %.preheader583.lr.ph
  %wide.trip.count707 = zext nneg i32 %8 to i64
  %wide.trip.count702 = zext nneg i32 %10 to i64
  br label %.preheader583.us

.preheader583.us:                                 ; preds = %.preheader583.us.preheader, %._crit_edge.us623
  %indvars.iv704 = phi i64 [ 0, %.preheader583.us.preheader ], [ %indvars.iv.next705, %._crit_edge.us623 ]
  %244 = getelementptr inbounds ptr, ptr %20, i64 %indvars.iv704
  %245 = getelementptr inbounds ptr, ptr %22, i64 %indvars.iv704
  br label %246

246:                                              ; preds = %.preheader583.us, %287
  %indvars.iv699 = phi i64 [ 0, %.preheader583.us ], [ %indvars.iv.next700, %287 ]
  %247 = load ptr, ptr %241, align 8, !tbaa !14
  %248 = getelementptr inbounds ptr, ptr %247, i64 %indvars.iv704
  %249 = load ptr, ptr %248, align 8, !tbaa !12
  %250 = getelementptr inbounds i16, ptr %249, i64 %indvars.iv699
  %251 = load i16, ptr %250, align 2, !tbaa !15
  %252 = icmp slt i16 %251, 0
  br i1 %252, label %284, label %253

253:                                              ; preds = %246
  %254 = zext nneg i16 %251 to i64
  %255 = load ptr, ptr %242, align 8, !tbaa !14
  %256 = getelementptr inbounds ptr, ptr %255, i64 %indvars.iv704
  %257 = load ptr, ptr %256, align 8, !tbaa !12
  %258 = getelementptr inbounds i16, ptr %257, i64 %indvars.iv699
  %259 = load i16, ptr %258, align 2, !tbaa !15
  %260 = sext i16 %259 to i64
  %261 = load ptr, ptr %243, align 8, !tbaa !14
  %262 = getelementptr inbounds ptr, ptr %261, i64 %indvars.iv704
  %263 = load ptr, ptr %262, align 8, !tbaa !12
  %264 = getelementptr inbounds i8, ptr %263, i64 %indvars.iv699
  %265 = load i8, ptr %264, align 1, !tbaa !14
  %266 = lshr i8 %265, 3
  %267 = and i8 %266, 1
  %268 = xor i8 %267, 1
  %269 = zext nneg i8 %268 to i64
  %270 = add nsw i64 %269, %260
  %271 = getelementptr inbounds ptr, ptr %12, i64 %270
  %272 = load ptr, ptr %271, align 8, !tbaa !12
  %273 = icmp sgt i8 %265, -1
  %274 = zext i1 %273 to i64
  %275 = add nuw nsw i64 %274, %254
  %276 = getelementptr inbounds i8, ptr %272, i64 %275
  %277 = load i8, ptr %276, align 1, !tbaa !14
  %278 = load ptr, ptr %244, align 8, !tbaa !12
  %279 = getelementptr inbounds i8, ptr %278, i64 %indvars.iv699
  store i8 %277, ptr %279, align 1, !tbaa !14
  %280 = getelementptr inbounds ptr, ptr %14, i64 %270
  %281 = load ptr, ptr %280, align 8, !tbaa !12
  %282 = getelementptr inbounds i8, ptr %281, i64 %275
  %283 = load i8, ptr %282, align 1, !tbaa !14
  br label %287

284:                                              ; preds = %246
  %285 = load ptr, ptr %244, align 8, !tbaa !12
  %286 = getelementptr inbounds i8, ptr %285, i64 %indvars.iv699
  store i8 0, ptr %286, align 1, !tbaa !14
  br label %287

287:                                              ; preds = %284, %253
  %.sink734 = phi i8 [ 0, %284 ], [ %283, %253 ]
  %288 = load ptr, ptr %245, align 8, !tbaa !12
  %289 = getelementptr inbounds i8, ptr %288, i64 %indvars.iv699
  store i8 %.sink734, ptr %289, align 1, !tbaa !14
  %indvars.iv.next700 = add nuw nsw i64 %indvars.iv699, 1
  %exitcond703.not = icmp eq i64 %indvars.iv.next700, %wide.trip.count702
  br i1 %exitcond703.not, label %._crit_edge.us623, label %246, !llvm.loop !24

._crit_edge.us623:                                ; preds = %287
  %indvars.iv.next705 = add nuw nsw i64 %indvars.iv704, 1
  %exitcond708.not = icmp eq i64 %indvars.iv.next705, %wide.trip.count707
  br i1 %exitcond708.not, label %.loopexit, label %.preheader583.us, !llvm.loop !25

290:                                              ; preds = %237
  %291 = icmp ne i32 %29, 3
  %or.cond9 = or i1 %28, %291
  br i1 %or.cond9, label %423, label %.preheader596

.preheader596:                                    ; preds = %290
  %292 = icmp sgt i32 %8, 0
  br i1 %292, label %.preheader595.lr.ph, label %.loopexit

.preheader595.lr.ph:                              ; preds = %.preheader596
  %293 = icmp sgt i32 %10, 0
  %294 = getelementptr inbounds i8, ptr %2, i64 16
  %295 = getelementptr inbounds i8, ptr %3, i64 16
  %296 = getelementptr inbounds i8, ptr %4, i64 16
  br i1 %293, label %.preheader595.us.preheader, label %.loopexit

.preheader595.us.preheader:                       ; preds = %.preheader595.lr.ph
  %wide.trip.count667 = zext nneg i32 %8 to i64
  %wide.trip.count662 = zext nneg i32 %10 to i64
  br label %.preheader595.us

.preheader595.us:                                 ; preds = %.preheader595.us.preheader, %._crit_edge.us611
  %indvars.iv664 = phi i64 [ 0, %.preheader595.us.preheader ], [ %indvars.iv.next665, %._crit_edge.us611 ]
  %297 = getelementptr inbounds ptr, ptr %20, i64 %indvars.iv664
  %298 = getelementptr inbounds ptr, ptr %22, i64 %indvars.iv664
  %299 = getelementptr inbounds ptr, ptr %24, i64 %indvars.iv664
  br label %300

300:                                              ; preds = %.preheader595.us, %420
  %indvars.iv659 = phi i64 [ 0, %.preheader595.us ], [ %indvars.iv.next660, %420 ]
  %301 = load ptr, ptr %294, align 8, !tbaa !14
  %302 = getelementptr inbounds ptr, ptr %301, i64 %indvars.iv664
  %303 = load ptr, ptr %302, align 8, !tbaa !12
  %304 = getelementptr inbounds i16, ptr %303, i64 %indvars.iv659
  %305 = load i16, ptr %304, align 2, !tbaa !15
  %306 = icmp slt i16 %305, 0
  br i1 %306, label %415, label %307

307:                                              ; preds = %300
  %308 = load ptr, ptr %295, align 8, !tbaa !14
  %309 = getelementptr inbounds ptr, ptr %308, i64 %indvars.iv664
  %310 = load ptr, ptr %309, align 8, !tbaa !12
  %311 = getelementptr inbounds i16, ptr %310, i64 %indvars.iv659
  %312 = load i16, ptr %311, align 2, !tbaa !15
  %313 = sext i16 %312 to i64
  %314 = load ptr, ptr %296, align 8, !tbaa !14
  %315 = getelementptr inbounds ptr, ptr %314, i64 %indvars.iv664
  %316 = load ptr, ptr %315, align 8, !tbaa !12
  %317 = getelementptr inbounds i8, ptr %316, i64 %indvars.iv659
  %318 = load i8, ptr %317, align 1, !tbaa !14
  %319 = zext i8 %318 to i32
  %320 = lshr i32 %319, 4
  %321 = and i32 %319, 15
  %322 = getelementptr inbounds ptr, ptr %12, i64 %313
  %323 = load ptr, ptr %322, align 8, !tbaa !12
  %324 = zext nneg i16 %305 to i64
  %325 = getelementptr inbounds i8, ptr %323, i64 %324
  %326 = load i8, ptr %325, align 1, !tbaa !14
  %327 = zext i8 %326 to i32
  %328 = mul nuw nsw i32 %320, %327
  %narrow580.us = add nuw i16 %305, 1
  %329 = zext i16 %narrow580.us to i64
  %330 = getelementptr inbounds i8, ptr %323, i64 %329
  %331 = load i8, ptr %330, align 1, !tbaa !14
  %332 = zext i8 %331 to i32
  %333 = xor i32 %320, 15
  %334 = mul nuw nsw i32 %333, %332
  %335 = add nuw nsw i32 %334, %328
  %336 = mul nuw nsw i32 %335, %321
  %337 = add nsw i64 %313, 1
  %338 = getelementptr inbounds ptr, ptr %12, i64 %337
  %339 = load ptr, ptr %338, align 8, !tbaa !12
  %340 = getelementptr inbounds i8, ptr %339, i64 %324
  %341 = load i8, ptr %340, align 1, !tbaa !14
  %342 = zext i8 %341 to i32
  %343 = mul nuw nsw i32 %320, %342
  %344 = getelementptr inbounds i8, ptr %339, i64 %329
  %345 = load i8, ptr %344, align 1, !tbaa !14
  %346 = zext i8 %345 to i32
  %347 = mul nuw nsw i32 %333, %346
  %348 = add nuw nsw i32 %347, %343
  %349 = xor i32 %321, 15
  %350 = mul nuw nsw i32 %348, %349
  %351 = add nuw nsw i32 %336, 112
  %352 = add nuw nsw i32 %351, %350
  %353 = udiv i32 %352, 225
  %354 = trunc i32 %353 to i8
  %355 = load ptr, ptr %297, align 8, !tbaa !12
  %356 = getelementptr inbounds i8, ptr %355, i64 %indvars.iv659
  store i8 %354, ptr %356, align 1, !tbaa !14
  %357 = getelementptr inbounds ptr, ptr %14, i64 %313
  %358 = load ptr, ptr %357, align 8, !tbaa !12
  %359 = getelementptr inbounds i8, ptr %358, i64 %324
  %360 = load i8, ptr %359, align 1, !tbaa !14
  %361 = zext i8 %360 to i32
  %362 = mul nuw nsw i32 %320, %361
  %363 = getelementptr inbounds i8, ptr %358, i64 %329
  %364 = load i8, ptr %363, align 1, !tbaa !14
  %365 = zext i8 %364 to i32
  %366 = mul nuw nsw i32 %333, %365
  %367 = add nuw nsw i32 %366, %362
  %368 = mul nuw nsw i32 %367, %321
  %369 = getelementptr inbounds ptr, ptr %14, i64 %337
  %370 = load ptr, ptr %369, align 8, !tbaa !12
  %371 = getelementptr inbounds i8, ptr %370, i64 %324
  %372 = load i8, ptr %371, align 1, !tbaa !14
  %373 = zext i8 %372 to i32
  %374 = mul nuw nsw i32 %320, %373
  %375 = getelementptr inbounds i8, ptr %370, i64 %329
  %376 = load i8, ptr %375, align 1, !tbaa !14
  %377 = zext i8 %376 to i32
  %378 = mul nuw nsw i32 %333, %377
  %379 = add nuw nsw i32 %378, %374
  %380 = mul nuw nsw i32 %379, %349
  %381 = add nuw nsw i32 %368, 112
  %382 = add nuw nsw i32 %381, %380
  %383 = udiv i32 %382, 225
  %384 = trunc i32 %383 to i8
  %385 = load ptr, ptr %298, align 8, !tbaa !12
  %386 = getelementptr inbounds i8, ptr %385, i64 %indvars.iv659
  store i8 %384, ptr %386, align 1, !tbaa !14
  %387 = getelementptr inbounds ptr, ptr %16, i64 %313
  %388 = load ptr, ptr %387, align 8, !tbaa !12
  %389 = getelementptr inbounds i8, ptr %388, i64 %324
  %390 = load i8, ptr %389, align 1, !tbaa !14
  %391 = zext i8 %390 to i32
  %392 = mul nuw nsw i32 %320, %391
  %393 = getelementptr inbounds i8, ptr %388, i64 %329
  %394 = load i8, ptr %393, align 1, !tbaa !14
  %395 = zext i8 %394 to i32
  %396 = mul nuw nsw i32 %333, %395
  %397 = add nuw nsw i32 %396, %392
  %398 = mul nuw nsw i32 %397, %321
  %399 = getelementptr inbounds ptr, ptr %16, i64 %337
  %400 = load ptr, ptr %399, align 8, !tbaa !12
  %401 = getelementptr inbounds i8, ptr %400, i64 %324
  %402 = load i8, ptr %401, align 1, !tbaa !14
  %403 = zext i8 %402 to i32
  %404 = mul nuw nsw i32 %320, %403
  %405 = getelementptr inbounds i8, ptr %400, i64 %329
  %406 = load i8, ptr %405, align 1, !tbaa !14
  %407 = zext i8 %406 to i32
  %408 = mul nuw nsw i32 %333, %407
  %409 = add nuw nsw i32 %408, %404
  %410 = mul nuw nsw i32 %409, %349
  %411 = add nuw nsw i32 %398, 112
  %412 = add nuw nsw i32 %411, %410
  %413 = udiv i32 %412, 225
  %414 = trunc i32 %413 to i8
  br label %420

415:                                              ; preds = %300
  %416 = load ptr, ptr %297, align 8, !tbaa !12
  %417 = getelementptr inbounds i8, ptr %416, i64 %indvars.iv659
  store i8 0, ptr %417, align 1, !tbaa !14
  %418 = load ptr, ptr %298, align 8, !tbaa !12
  %419 = getelementptr inbounds i8, ptr %418, i64 %indvars.iv659
  store i8 0, ptr %419, align 1, !tbaa !14
  br label %420

420:                                              ; preds = %415, %307
  %.sink737 = phi i8 [ 0, %415 ], [ %414, %307 ]
  %421 = load ptr, ptr %299, align 8, !tbaa !12
  %422 = getelementptr inbounds i8, ptr %421, i64 %indvars.iv659
  store i8 %.sink737, ptr %422, align 1, !tbaa !14
  %indvars.iv.next660 = add nuw nsw i64 %indvars.iv659, 1
  %exitcond663.not = icmp eq i64 %indvars.iv.next660, %wide.trip.count662
  br i1 %exitcond663.not, label %._crit_edge.us611, label %300, !llvm.loop !26

._crit_edge.us611:                                ; preds = %420
  %indvars.iv.next665 = add nuw nsw i64 %indvars.iv664, 1
  %exitcond668.not = icmp eq i64 %indvars.iv.next665, %wide.trip.count667
  br i1 %exitcond668.not, label %.loopexit, label %.preheader595.us, !llvm.loop !27

423:                                              ; preds = %290
  %424 = icmp eq i32 %29, 3
  %or.cond11 = and i1 %28, %424
  br i1 %or.cond11, label %.preheader587, label %485

.preheader587:                                    ; preds = %423
  %425 = icmp sgt i32 %8, 0
  br i1 %425, label %.preheader586.lr.ph, label %.loopexit

.preheader586.lr.ph:                              ; preds = %.preheader587
  %426 = icmp sgt i32 %10, 0
  %427 = getelementptr inbounds i8, ptr %2, i64 16
  %428 = getelementptr inbounds i8, ptr %3, i64 16
  %429 = getelementptr inbounds i8, ptr %4, i64 16
  br i1 %426, label %.preheader586.us.preheader, label %.loopexit

.preheader586.us.preheader:                       ; preds = %.preheader586.lr.ph
  %wide.trip.count697 = zext nneg i32 %8 to i64
  %wide.trip.count692 = zext nneg i32 %10 to i64
  br label %.preheader586.us

.preheader586.us:                                 ; preds = %.preheader586.us.preheader, %._crit_edge.us620
  %indvars.iv694 = phi i64 [ 0, %.preheader586.us.preheader ], [ %indvars.iv.next695, %._crit_edge.us620 ]
  %430 = getelementptr inbounds ptr, ptr %20, i64 %indvars.iv694
  %431 = getelementptr inbounds ptr, ptr %22, i64 %indvars.iv694
  %432 = getelementptr inbounds ptr, ptr %24, i64 %indvars.iv694
  br label %433

433:                                              ; preds = %.preheader586.us, %482
  %indvars.iv689 = phi i64 [ 0, %.preheader586.us ], [ %indvars.iv.next690, %482 ]
  %434 = load ptr, ptr %427, align 8, !tbaa !14
  %435 = getelementptr inbounds ptr, ptr %434, i64 %indvars.iv694
  %436 = load ptr, ptr %435, align 8, !tbaa !12
  %437 = getelementptr inbounds i16, ptr %436, i64 %indvars.iv689
  %438 = load i16, ptr %437, align 2, !tbaa !15
  %439 = icmp slt i16 %438, 0
  br i1 %439, label %477, label %440

440:                                              ; preds = %433
  %441 = zext nneg i16 %438 to i64
  %442 = load ptr, ptr %428, align 8, !tbaa !14
  %443 = getelementptr inbounds ptr, ptr %442, i64 %indvars.iv694
  %444 = load ptr, ptr %443, align 8, !tbaa !12
  %445 = getelementptr inbounds i16, ptr %444, i64 %indvars.iv689
  %446 = load i16, ptr %445, align 2, !tbaa !15
  %447 = sext i16 %446 to i64
  %448 = load ptr, ptr %429, align 8, !tbaa !14
  %449 = getelementptr inbounds ptr, ptr %448, i64 %indvars.iv694
  %450 = load ptr, ptr %449, align 8, !tbaa !12
  %451 = getelementptr inbounds i8, ptr %450, i64 %indvars.iv689
  %452 = load i8, ptr %451, align 1, !tbaa !14
  %453 = lshr i8 %452, 3
  %454 = and i8 %453, 1
  %455 = xor i8 %454, 1
  %456 = zext nneg i8 %455 to i64
  %457 = add nsw i64 %456, %447
  %458 = getelementptr inbounds ptr, ptr %12, i64 %457
  %459 = load ptr, ptr %458, align 8, !tbaa !12
  %460 = icmp sgt i8 %452, -1
  %461 = zext i1 %460 to i64
  %462 = add nuw nsw i64 %461, %441
  %463 = getelementptr inbounds i8, ptr %459, i64 %462
  %464 = load i8, ptr %463, align 1, !tbaa !14
  %465 = load ptr, ptr %430, align 8, !tbaa !12
  %466 = getelementptr inbounds i8, ptr %465, i64 %indvars.iv689
  store i8 %464, ptr %466, align 1, !tbaa !14
  %467 = getelementptr inbounds ptr, ptr %14, i64 %457
  %468 = load ptr, ptr %467, align 8, !tbaa !12
  %469 = getelementptr inbounds i8, ptr %468, i64 %462
  %470 = load i8, ptr %469, align 1, !tbaa !14
  %471 = load ptr, ptr %431, align 8, !tbaa !12
  %472 = getelementptr inbounds i8, ptr %471, i64 %indvars.iv689
  store i8 %470, ptr %472, align 1, !tbaa !14
  %473 = getelementptr inbounds ptr, ptr %16, i64 %457
  %474 = load ptr, ptr %473, align 8, !tbaa !12
  %475 = getelementptr inbounds i8, ptr %474, i64 %462
  %476 = load i8, ptr %475, align 1, !tbaa !14
  br label %482

477:                                              ; preds = %433
  %478 = load ptr, ptr %430, align 8, !tbaa !12
  %479 = getelementptr inbounds i8, ptr %478, i64 %indvars.iv689
  store i8 0, ptr %479, align 1, !tbaa !14
  %480 = load ptr, ptr %431, align 8, !tbaa !12
  %481 = getelementptr inbounds i8, ptr %480, i64 %indvars.iv689
  store i8 0, ptr %481, align 1, !tbaa !14
  br label %482

482:                                              ; preds = %477, %440
  %.sink740 = phi i8 [ 0, %477 ], [ %476, %440 ]
  %483 = load ptr, ptr %432, align 8, !tbaa !12
  %484 = getelementptr inbounds i8, ptr %483, i64 %indvars.iv689
  store i8 %.sink740, ptr %484, align 1, !tbaa !14
  %indvars.iv.next690 = add nuw nsw i64 %indvars.iv689, 1
  %exitcond693.not = icmp eq i64 %indvars.iv.next690, %wide.trip.count692
  br i1 %exitcond693.not, label %._crit_edge.us620, label %433, !llvm.loop !28

._crit_edge.us620:                                ; preds = %482
  %indvars.iv.next695 = add nuw nsw i64 %indvars.iv694, 1
  %exitcond698.not = icmp eq i64 %indvars.iv.next695, %wide.trip.count697
  br i1 %exitcond698.not, label %.loopexit, label %.preheader586.us, !llvm.loop !29

485:                                              ; preds = %423
  %486 = icmp ne i32 %29, 4
  %or.cond13 = or i1 %28, %486
  br i1 %or.cond13, label %651, label %.preheader593

.preheader593:                                    ; preds = %485
  %487 = icmp sgt i32 %8, 0
  br i1 %487, label %.preheader592.lr.ph, label %.loopexit

.preheader592.lr.ph:                              ; preds = %.preheader593
  %488 = icmp sgt i32 %10, 0
  %489 = getelementptr inbounds i8, ptr %2, i64 16
  %490 = getelementptr inbounds i8, ptr %3, i64 16
  %491 = getelementptr inbounds i8, ptr %4, i64 16
  br i1 %488, label %.preheader592.us.preheader, label %.loopexit

.preheader592.us.preheader:                       ; preds = %.preheader592.lr.ph
  %wide.trip.count677 = zext nneg i32 %8 to i64
  %wide.trip.count672 = zext nneg i32 %10 to i64
  br label %.preheader592.us

.preheader592.us:                                 ; preds = %.preheader592.us.preheader, %._crit_edge.us614
  %indvars.iv674 = phi i64 [ 0, %.preheader592.us.preheader ], [ %indvars.iv.next675, %._crit_edge.us614 ]
  %492 = getelementptr inbounds ptr, ptr %20, i64 %indvars.iv674
  %493 = getelementptr inbounds ptr, ptr %22, i64 %indvars.iv674
  %494 = getelementptr inbounds ptr, ptr %24, i64 %indvars.iv674
  %495 = getelementptr inbounds ptr, ptr %26, i64 %indvars.iv674
  br label %496

496:                                              ; preds = %.preheader592.us, %648
  %indvars.iv669 = phi i64 [ 0, %.preheader592.us ], [ %indvars.iv.next670, %648 ]
  %497 = load ptr, ptr %489, align 8, !tbaa !14
  %498 = getelementptr inbounds ptr, ptr %497, i64 %indvars.iv674
  %499 = load ptr, ptr %498, align 8, !tbaa !12
  %500 = getelementptr inbounds i16, ptr %499, i64 %indvars.iv669
  %501 = load i16, ptr %500, align 2, !tbaa !15
  %502 = icmp slt i16 %501, 0
  br i1 %502, label %641, label %503

503:                                              ; preds = %496
  %504 = load ptr, ptr %490, align 8, !tbaa !14
  %505 = getelementptr inbounds ptr, ptr %504, i64 %indvars.iv674
  %506 = load ptr, ptr %505, align 8, !tbaa !12
  %507 = getelementptr inbounds i16, ptr %506, i64 %indvars.iv669
  %508 = load i16, ptr %507, align 2, !tbaa !15
  %509 = sext i16 %508 to i64
  %510 = load ptr, ptr %491, align 8, !tbaa !14
  %511 = getelementptr inbounds ptr, ptr %510, i64 %indvars.iv674
  %512 = load ptr, ptr %511, align 8, !tbaa !12
  %513 = getelementptr inbounds i8, ptr %512, i64 %indvars.iv669
  %514 = load i8, ptr %513, align 1, !tbaa !14
  %515 = zext i8 %514 to i32
  %516 = lshr i32 %515, 4
  %517 = and i32 %515, 15
  %518 = getelementptr inbounds ptr, ptr %12, i64 %509
  %519 = load ptr, ptr %518, align 8, !tbaa !12
  %520 = zext nneg i16 %501 to i64
  %521 = getelementptr inbounds i8, ptr %519, i64 %520
  %522 = load i8, ptr %521, align 1, !tbaa !14
  %523 = zext i8 %522 to i32
  %524 = mul nuw nsw i32 %516, %523
  %narrow581.us = add nuw i16 %501, 1
  %525 = zext i16 %narrow581.us to i64
  %526 = getelementptr inbounds i8, ptr %519, i64 %525
  %527 = load i8, ptr %526, align 1, !tbaa !14
  %528 = zext i8 %527 to i32
  %529 = xor i32 %516, 15
  %530 = mul nuw nsw i32 %529, %528
  %531 = add nuw nsw i32 %530, %524
  %532 = mul nuw nsw i32 %531, %517
  %533 = add nsw i64 %509, 1
  %534 = getelementptr inbounds ptr, ptr %12, i64 %533
  %535 = load ptr, ptr %534, align 8, !tbaa !12
  %536 = getelementptr inbounds i8, ptr %535, i64 %520
  %537 = load i8, ptr %536, align 1, !tbaa !14
  %538 = zext i8 %537 to i32
  %539 = mul nuw nsw i32 %516, %538
  %540 = getelementptr inbounds i8, ptr %535, i64 %525
  %541 = load i8, ptr %540, align 1, !tbaa !14
  %542 = zext i8 %541 to i32
  %543 = mul nuw nsw i32 %529, %542
  %544 = add nuw nsw i32 %543, %539
  %545 = xor i32 %517, 15
  %546 = mul nuw nsw i32 %544, %545
  %547 = add nuw nsw i32 %532, 112
  %548 = add nuw nsw i32 %547, %546
  %549 = udiv i32 %548, 225
  %550 = trunc i32 %549 to i8
  %551 = load ptr, ptr %492, align 8, !tbaa !12
  %552 = getelementptr inbounds i8, ptr %551, i64 %indvars.iv669
  store i8 %550, ptr %552, align 1, !tbaa !14
  %553 = getelementptr inbounds ptr, ptr %14, i64 %509
  %554 = load ptr, ptr %553, align 8, !tbaa !12
  %555 = getelementptr inbounds i8, ptr %554, i64 %520
  %556 = load i8, ptr %555, align 1, !tbaa !14
  %557 = zext i8 %556 to i32
  %558 = mul nuw nsw i32 %516, %557
  %559 = getelementptr inbounds i8, ptr %554, i64 %525
  %560 = load i8, ptr %559, align 1, !tbaa !14
  %561 = zext i8 %560 to i32
  %562 = mul nuw nsw i32 %529, %561
  %563 = add nuw nsw i32 %562, %558
  %564 = mul nuw nsw i32 %563, %517
  %565 = getelementptr inbounds ptr, ptr %14, i64 %533
  %566 = load ptr, ptr %565, align 8, !tbaa !12
  %567 = getelementptr inbounds i8, ptr %566, i64 %520
  %568 = load i8, ptr %567, align 1, !tbaa !14
  %569 = zext i8 %568 to i32
  %570 = mul nuw nsw i32 %516, %569
  %571 = getelementptr inbounds i8, ptr %566, i64 %525
  %572 = load i8, ptr %571, align 1, !tbaa !14
  %573 = zext i8 %572 to i32
  %574 = mul nuw nsw i32 %529, %573
  %575 = add nuw nsw i32 %574, %570
  %576 = mul nuw nsw i32 %575, %545
  %577 = add nuw nsw i32 %564, 112
  %578 = add nuw nsw i32 %577, %576
  %579 = udiv i32 %578, 225
  %580 = trunc i32 %579 to i8
  %581 = load ptr, ptr %493, align 8, !tbaa !12
  %582 = getelementptr inbounds i8, ptr %581, i64 %indvars.iv669
  store i8 %580, ptr %582, align 1, !tbaa !14
  %583 = getelementptr inbounds ptr, ptr %16, i64 %509
  %584 = load ptr, ptr %583, align 8, !tbaa !12
  %585 = getelementptr inbounds i8, ptr %584, i64 %520
  %586 = load i8, ptr %585, align 1, !tbaa !14
  %587 = zext i8 %586 to i32
  %588 = mul nuw nsw i32 %516, %587
  %589 = getelementptr inbounds i8, ptr %584, i64 %525
  %590 = load i8, ptr %589, align 1, !tbaa !14
  %591 = zext i8 %590 to i32
  %592 = mul nuw nsw i32 %529, %591
  %593 = add nuw nsw i32 %592, %588
  %594 = mul nuw nsw i32 %593, %517
  %595 = getelementptr inbounds ptr, ptr %16, i64 %533
  %596 = load ptr, ptr %595, align 8, !tbaa !12
  %597 = getelementptr inbounds i8, ptr %596, i64 %520
  %598 = load i8, ptr %597, align 1, !tbaa !14
  %599 = zext i8 %598 to i32
  %600 = mul nuw nsw i32 %516, %599
  %601 = getelementptr inbounds i8, ptr %596, i64 %525
  %602 = load i8, ptr %601, align 1, !tbaa !14
  %603 = zext i8 %602 to i32
  %604 = mul nuw nsw i32 %529, %603
  %605 = add nuw nsw i32 %604, %600
  %606 = mul nuw nsw i32 %605, %545
  %607 = add nuw nsw i32 %594, 112
  %608 = add nuw nsw i32 %607, %606
  %609 = udiv i32 %608, 225
  %610 = trunc i32 %609 to i8
  %611 = load ptr, ptr %494, align 8, !tbaa !12
  %612 = getelementptr inbounds i8, ptr %611, i64 %indvars.iv669
  store i8 %610, ptr %612, align 1, !tbaa !14
  %613 = getelementptr inbounds ptr, ptr %18, i64 %509
  %614 = load ptr, ptr %613, align 8, !tbaa !12
  %615 = getelementptr inbounds i8, ptr %614, i64 %520
  %616 = load i8, ptr %615, align 1, !tbaa !14
  %617 = zext i8 %616 to i32
  %618 = mul nuw nsw i32 %516, %617
  %619 = getelementptr inbounds i8, ptr %614, i64 %525
  %620 = load i8, ptr %619, align 1, !tbaa !14
  %621 = zext i8 %620 to i32
  %622 = mul nuw nsw i32 %529, %621
  %623 = add nuw nsw i32 %622, %618
  %624 = mul nuw nsw i32 %623, %517
  %625 = getelementptr inbounds ptr, ptr %18, i64 %533
  %626 = load ptr, ptr %625, align 8, !tbaa !12
  %627 = getelementptr inbounds i8, ptr %626, i64 %520
  %628 = load i8, ptr %627, align 1, !tbaa !14
  %629 = zext i8 %628 to i32
  %630 = mul nuw nsw i32 %516, %629
  %631 = getelementptr inbounds i8, ptr %626, i64 %525
  %632 = load i8, ptr %631, align 1, !tbaa !14
  %633 = zext i8 %632 to i32
  %634 = mul nuw nsw i32 %529, %633
  %635 = add nuw nsw i32 %634, %630
  %636 = mul nuw nsw i32 %635, %545
  %637 = add nuw nsw i32 %624, 112
  %638 = add nuw nsw i32 %637, %636
  %639 = udiv i32 %638, 225
  %640 = trunc i32 %639 to i8
  br label %648

641:                                              ; preds = %496
  %642 = load ptr, ptr %492, align 8, !tbaa !12
  %643 = getelementptr inbounds i8, ptr %642, i64 %indvars.iv669
  store i8 0, ptr %643, align 1, !tbaa !14
  %644 = load ptr, ptr %493, align 8, !tbaa !12
  %645 = getelementptr inbounds i8, ptr %644, i64 %indvars.iv669
  store i8 0, ptr %645, align 1, !tbaa !14
  %646 = load ptr, ptr %494, align 8, !tbaa !12
  %647 = getelementptr inbounds i8, ptr %646, i64 %indvars.iv669
  store i8 0, ptr %647, align 1, !tbaa !14
  br label %648

648:                                              ; preds = %641, %503
  %.sink743 = phi i8 [ 0, %641 ], [ %640, %503 ]
  %649 = load ptr, ptr %495, align 8, !tbaa !12
  %650 = getelementptr inbounds i8, ptr %649, i64 %indvars.iv669
  store i8 %.sink743, ptr %650, align 1, !tbaa !14
  %indvars.iv.next670 = add nuw nsw i64 %indvars.iv669, 1
  %exitcond673.not = icmp eq i64 %indvars.iv.next670, %wide.trip.count672
  br i1 %exitcond673.not, label %._crit_edge.us614, label %496, !llvm.loop !30

._crit_edge.us614:                                ; preds = %648
  %indvars.iv.next675 = add nuw nsw i64 %indvars.iv674, 1
  %exitcond678.not = icmp eq i64 %indvars.iv.next675, %wide.trip.count677
  br i1 %exitcond678.not, label %.loopexit, label %.preheader592.us, !llvm.loop !31

651:                                              ; preds = %485
  %652 = icmp eq i32 %29, 4
  %or.cond15 = and i1 %28, %652
  %653 = icmp sgt i32 %8, 0
  %or.cond627 = select i1 %or.cond15, i1 %653, i1 false
  br i1 %or.cond627, label %.preheader589.lr.ph, label %.loopexit

.preheader589.lr.ph:                              ; preds = %651
  %654 = icmp sgt i32 %10, 0
  %655 = getelementptr inbounds i8, ptr %2, i64 16
  %656 = getelementptr inbounds i8, ptr %3, i64 16
  %657 = getelementptr inbounds i8, ptr %4, i64 16
  br i1 %654, label %.preheader589.us.preheader, label %.loopexit

.preheader589.us.preheader:                       ; preds = %.preheader589.lr.ph
  %wide.trip.count687 = zext nneg i32 %8 to i64
  %wide.trip.count682 = zext nneg i32 %10 to i64
  br label %.preheader589.us

.preheader589.us:                                 ; preds = %.preheader589.us.preheader, %._crit_edge.us617
  %indvars.iv684 = phi i64 [ 0, %.preheader589.us.preheader ], [ %indvars.iv.next685, %._crit_edge.us617 ]
  %658 = getelementptr inbounds ptr, ptr %20, i64 %indvars.iv684
  %659 = getelementptr inbounds ptr, ptr %22, i64 %indvars.iv684
  %660 = getelementptr inbounds ptr, ptr %24, i64 %indvars.iv684
  %661 = getelementptr inbounds ptr, ptr %26, i64 %indvars.iv684
  br label %662

662:                                              ; preds = %.preheader589.us, %719
  %indvars.iv679 = phi i64 [ 0, %.preheader589.us ], [ %indvars.iv.next680, %719 ]
  %663 = load ptr, ptr %655, align 8, !tbaa !14
  %664 = getelementptr inbounds ptr, ptr %663, i64 %indvars.iv684
  %665 = load ptr, ptr %664, align 8, !tbaa !12
  %666 = getelementptr inbounds i16, ptr %665, i64 %indvars.iv679
  %667 = load i16, ptr %666, align 2, !tbaa !15
  %668 = icmp slt i16 %667, 0
  br i1 %668, label %712, label %669

669:                                              ; preds = %662
  %670 = zext nneg i16 %667 to i64
  %671 = load ptr, ptr %656, align 8, !tbaa !14
  %672 = getelementptr inbounds ptr, ptr %671, i64 %indvars.iv684
  %673 = load ptr, ptr %672, align 8, !tbaa !12
  %674 = getelementptr inbounds i16, ptr %673, i64 %indvars.iv679
  %675 = load i16, ptr %674, align 2, !tbaa !15
  %676 = sext i16 %675 to i64
  %677 = load ptr, ptr %657, align 8, !tbaa !14
  %678 = getelementptr inbounds ptr, ptr %677, i64 %indvars.iv684
  %679 = load ptr, ptr %678, align 8, !tbaa !12
  %680 = getelementptr inbounds i8, ptr %679, i64 %indvars.iv679
  %681 = load i8, ptr %680, align 1, !tbaa !14
  %682 = lshr i8 %681, 3
  %683 = and i8 %682, 1
  %684 = xor i8 %683, 1
  %685 = zext nneg i8 %684 to i64
  %686 = add nsw i64 %685, %676
  %687 = getelementptr inbounds ptr, ptr %12, i64 %686
  %688 = load ptr, ptr %687, align 8, !tbaa !12
  %689 = icmp sgt i8 %681, -1
  %690 = zext i1 %689 to i64
  %691 = add nuw nsw i64 %690, %670
  %692 = getelementptr inbounds i8, ptr %688, i64 %691
  %693 = load i8, ptr %692, align 1, !tbaa !14
  %694 = load ptr, ptr %658, align 8, !tbaa !12
  %695 = getelementptr inbounds i8, ptr %694, i64 %indvars.iv679
  store i8 %693, ptr %695, align 1, !tbaa !14
  %696 = getelementptr inbounds ptr, ptr %14, i64 %686
  %697 = load ptr, ptr %696, align 8, !tbaa !12
  %698 = getelementptr inbounds i8, ptr %697, i64 %691
  %699 = load i8, ptr %698, align 1, !tbaa !14
  %700 = load ptr, ptr %659, align 8, !tbaa !12
  %701 = getelementptr inbounds i8, ptr %700, i64 %indvars.iv679
  store i8 %699, ptr %701, align 1, !tbaa !14
  %702 = getelementptr inbounds ptr, ptr %16, i64 %686
  %703 = load ptr, ptr %702, align 8, !tbaa !12
  %704 = getelementptr inbounds i8, ptr %703, i64 %691
  %705 = load i8, ptr %704, align 1, !tbaa !14
  %706 = load ptr, ptr %660, align 8, !tbaa !12
  %707 = getelementptr inbounds i8, ptr %706, i64 %indvars.iv679
  store i8 %705, ptr %707, align 1, !tbaa !14
  %708 = getelementptr inbounds ptr, ptr %18, i64 %686
  %709 = load ptr, ptr %708, align 8, !tbaa !12
  %710 = getelementptr inbounds i8, ptr %709, i64 %691
  %711 = load i8, ptr %710, align 1, !tbaa !14
  br label %719

712:                                              ; preds = %662
  %713 = load ptr, ptr %658, align 8, !tbaa !12
  %714 = getelementptr inbounds i8, ptr %713, i64 %indvars.iv679
  store i8 0, ptr %714, align 1, !tbaa !14
  %715 = load ptr, ptr %659, align 8, !tbaa !12
  %716 = getelementptr inbounds i8, ptr %715, i64 %indvars.iv679
  store i8 0, ptr %716, align 1, !tbaa !14
  %717 = load ptr, ptr %660, align 8, !tbaa !12
  %718 = getelementptr inbounds i8, ptr %717, i64 %indvars.iv679
  store i8 0, ptr %718, align 1, !tbaa !14
  br label %719

719:                                              ; preds = %712, %669
  %.sink746 = phi i8 [ 0, %712 ], [ %711, %669 ]
  %720 = load ptr, ptr %661, align 8, !tbaa !12
  %721 = getelementptr inbounds i8, ptr %720, i64 %indvars.iv679
  store i8 %.sink746, ptr %721, align 1, !tbaa !14
  %indvars.iv.next680 = add nuw nsw i64 %indvars.iv679, 1
  %exitcond683.not = icmp eq i64 %indvars.iv.next680, %wide.trip.count682
  br i1 %exitcond683.not, label %._crit_edge.us617, label %662, !llvm.loop !32

._crit_edge.us617:                                ; preds = %719
  %indvars.iv.next685 = add nuw nsw i64 %indvars.iv684, 1
  %exitcond688.not = icmp eq i64 %indvars.iv.next685, %wide.trip.count687
  br i1 %exitcond688.not, label %.loopexit, label %.preheader589.us, !llvm.loop !33

.loopexit:                                        ; preds = %._crit_edge.us, %._crit_edge.us608, %._crit_edge.us611, %._crit_edge.us614, %._crit_edge.us617, %._crit_edge.us620, %._crit_edge.us623, %._crit_edge.us626, %.preheader589.lr.ph, %.preheader592.lr.ph, %.preheader586.lr.ph, %.preheader595.lr.ph, %.preheader583.lr.ph, %.preheader598.lr.ph, %.preheader.lr.ph, %.preheader601.lr.ph, %.preheader602, %.preheader599, %.preheader596, %.preheader593, %.preheader587, %.preheader584, %.preheader582, %651
  ret void
}

attributes #0 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) 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" }

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


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