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

; 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.MArray = type { i32, i16, %union.anon }
%union.anon = type { ptr }

@.str = external hidden unnamed_addr constant [78 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@__FUNCTION__.mImageExpand = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [24 x i8], align 1

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

declare void @m_Exception(i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ...) #1

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

; Function Attrs: nounwind uwtable
define dso_local void @mImageExpand(ptr noundef %0, i32 noundef %1, i32 noundef %2) #4 {
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %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
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  store i32 %2, ptr %6, align 4, !tbaa !9
  br label %39

39:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  %40 = load i32, ptr %5, align 4, !tbaa !9
  %41 = icmp sgt i32 %40, 8
  br i1 %41, label %48, label %42

42:                                               ; preds = %39
  %43 = load i32, ptr %6, align 4, !tbaa !9
  %44 = icmp slt i32 %43, 0
  br i1 %44, label %48, label %45

45:                                               ; preds = %42
  %46 = load i32, ptr %6, align 4, !tbaa !9
  %47 = icmp sgt i32 %46, 3
  br label %48

48:                                               ; preds = %45, %42, %39
  %49 = phi i1 [ true, %42 ], [ true, %39 ], [ %47, %45 ]
  %50 = zext i1 %49 to i32
  store i32 %50, ptr %7, align 4, !tbaa !9
  %51 = load i32, ptr %7, align 4, !tbaa !9
  %52 = icmp ne i32 %51, 0
  br i1 %52, label %53, label %55

53:                                               ; preds = %48
  %54 = load i32, ptr %7, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %54, i32 noundef -1, ptr noundef @.str, i32 noundef 244, ptr noundef @__FUNCTION__.mImageExpand, ptr noundef @.str.10)
  br label %55

55:                                               ; preds = %53, %48
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  br label %56

56:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  %57 = load ptr, ptr %4, align 8, !tbaa !5
  %58 = call ptr @m_PropertyRead(ptr noundef %57, ptr noundef @.str.4, ptr noundef null, ptr noundef null)
  store ptr %58, ptr %8, align 8, !tbaa !5
  br label %59

59:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %60 = load ptr, ptr %8, align 8, !tbaa !5
  %61 = load i32, ptr %60, align 4, !tbaa !9
  %62 = icmp eq i32 %61, 5
  %63 = zext i1 %62 to i32
  store i32 %63, ptr %9, align 4, !tbaa !9
  %64 = load i32, ptr %9, align 4, !tbaa !9
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %66, label %68

66:                                               ; preds = %59
  %67 = load i32, ptr %9, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %67, i32 noundef -1, ptr noundef @.str, i32 noundef 246, ptr noundef @__FUNCTION__.mImageExpand, ptr noundef @.str.11)
  br label %68

68:                                               ; preds = %66, %59
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  br label %69

69:                                               ; preds = %68
  br label %70

70:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.MImage, ptr %71, i32 0, i32 1
  %73 = load i32, ptr %72, align 4, !tbaa !11
  store i32 %73, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.MImage, ptr %74, i32 0, i32 2
  %76 = load i32, ptr %75, align 8, !tbaa !13
  store i32 %76, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  %77 = load ptr, ptr %4, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.MImage, ptr %77, i32 0, i32 4
  %79 = load ptr, ptr %78, align 8, !tbaa !14
  %80 = icmp eq ptr %79, null
  br i1 %80, label %81, label %82

81:                                               ; preds = %70
  br label %91

82:                                               ; preds = %70
  %83 = load ptr, ptr %4, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.MImage, ptr %83, i32 0, i32 4
  %85 = load ptr, ptr %84, align 8, !tbaa !14
  %86 = getelementptr inbounds %struct.MArray, ptr %85, i32 0, i32 2
  %87 = load ptr, ptr %86, align 8, !tbaa !15
  %88 = getelementptr inbounds i16, ptr %87, i64 2
  %89 = load i16, ptr %88, align 2, !tbaa !16
  %90 = sext i16 %89 to i32
  br label %91

91:                                               ; preds = %82, %81
  %92 = phi i32 [ 0, %81 ], [ %90, %82 ]
  store i32 %92, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.MImage, ptr %93, i32 0, i32 4
  %95 = load ptr, ptr %94, align 8, !tbaa !14
  %96 = icmp eq ptr %95, null
  br i1 %96, label %97, label %101

97:                                               ; preds = %91
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.MImage, ptr %98, i32 0, i32 1
  %100 = load i32, ptr %99, align 4, !tbaa !11
  br label %110

101:                                              ; preds = %91
  %102 = load ptr, ptr %4, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.MImage, ptr %102, i32 0, i32 4
  %104 = load ptr, ptr %103, align 8, !tbaa !14
  %105 = getelementptr inbounds %struct.MArray, ptr %104, i32 0, i32 2
  %106 = load ptr, ptr %105, align 8, !tbaa !15
  %107 = getelementptr inbounds i16, ptr %106, i64 3
  %108 = load i16, ptr %107, align 2, !tbaa !16
  %109 = sext i16 %108 to i32
  br label %110

110:                                              ; preds = %101, %97
  %111 = phi i32 [ %100, %97 ], [ %109, %101 ]
  %112 = sub nsw i32 %111, 1
  store i32 %112, ptr %13, align 4, !tbaa !9
  %113 = load ptr, ptr %8, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = icmp eq i32 %114, 4
  br i1 %115, label %116, label %1545

116:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %117

117:                                              ; preds = %1541, %116
  %118 = load i32, ptr %14, align 4, !tbaa !9
  %119 = load ptr, ptr %4, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.MImage, ptr %119, i32 0, i32 0
  %121 = load i32, ptr %120, align 8, !tbaa !18
  %122 = icmp slt i32 %118, %121
  br i1 %122, label %124, label %123

123:                                              ; preds = %117
  store i32 6, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %1544

124:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %125 = load i32, ptr %12, align 4, !tbaa !9
  %126 = load i32, ptr %5, align 4, !tbaa !9
  %127 = sub nsw i32 %125, %126
  %128 = icmp sgt i32 %127, 0
  br i1 %128, label %129, label %133

129:                                              ; preds = %124
  %130 = load i32, ptr %12, align 4, !tbaa !9
  %131 = load i32, ptr %5, align 4, !tbaa !9
  %132 = sub nsw i32 %130, %131
  br label %134

133:                                              ; preds = %124
  br label %134

134:                                              ; preds = %133, %129
  %135 = phi i32 [ %132, %129 ], [ 0, %133 ]
  store i32 %135, ptr %16, align 4, !tbaa !9
  br label %136

136:                                              ; preds = %451, %134
  %137 = load i32, ptr %16, align 4, !tbaa !9
  %138 = load i32, ptr %12, align 4, !tbaa !9
  %139 = icmp slt i32 %137, %138
  br i1 %139, label %140, label %454

140:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %141 = load ptr, ptr %4, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.MImage, ptr %141, i32 0, i32 4
  %143 = load ptr, ptr %142, align 8, !tbaa !14
  %144 = icmp eq ptr %143, null
  br i1 %144, label %145, label %146

145:                                              ; preds = %140
  br label %160

146:                                              ; preds = %140
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.MImage, ptr %147, i32 0, i32 4
  %149 = load ptr, ptr %148, align 8, !tbaa !14
  %150 = getelementptr inbounds %struct.MArray, ptr %149, i32 0, i32 2
  %151 = load ptr, ptr %150, align 8, !tbaa !15
  %152 = load i32, ptr %12, align 4, !tbaa !9
  %153 = load i32, ptr %12, align 4, !tbaa !9
  %154 = add nsw i32 %152, %153
  %155 = add nsw i32 %154, 4
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds i16, ptr %151, i64 %156
  %158 = load i16, ptr %157, align 2, !tbaa !16
  %159 = sext i16 %158 to i32
  br label %160

160:                                              ; preds = %146, %145
  %161 = phi i32 [ 0, %145 ], [ %159, %146 ]
  store i32 %161, ptr %17, align 4, !tbaa !9
  %162 = load i32, ptr %17, align 4, !tbaa !9
  %163 = load i32, ptr %5, align 4, !tbaa !9
  %164 = icmp slt i32 %162, %163
  br i1 %164, label %165, label %292

165:                                              ; preds = %160
  %166 = load i32, ptr %6, align 4, !tbaa !9
  %167 = icmp eq i32 %166, 0
  br i1 %167, label %168, label %187

168:                                              ; preds = %165
  %169 = load ptr, ptr %4, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.MImage, ptr %169, i32 0, i32 3
  %171 = load i32, ptr %14, align 4, !tbaa !9
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds [4 x ptr], ptr %170, i64 0, i64 %172
  %174 = load ptr, ptr %173, align 8, !tbaa !5
  %175 = load i32, ptr %16, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds ptr, ptr %174, i64 %176
  %178 = load ptr, ptr %177, align 8, !tbaa !5
  %179 = getelementptr inbounds i8, ptr %178, i64 0
  %180 = load i32, ptr %5, align 4, !tbaa !9
  %181 = sext i32 %180 to i64
  %182 = sub i64 0, %181
  %183 = getelementptr inbounds i8, ptr %179, i64 %182
  %184 = load i32, ptr %5, align 4, !tbaa !9
  %185 = sext i32 %184 to i64
  %186 = mul i64 %185, 1
  call void @llvm.memset.p0.i64(ptr align 1 %183, i8 0, i64 %186, i1 false)
  br label %291

187:                                              ; preds = %165
  %188 = load i32, ptr %6, align 4, !tbaa !9
  %189 = icmp eq i32 %188, 1
  br i1 %189, label %190, label %209

190:                                              ; preds = %187
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.MImage, ptr %191, i32 0, i32 3
  %193 = load i32, ptr %14, align 4, !tbaa !9
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds [4 x ptr], ptr %192, i64 0, i64 %194
  %196 = load ptr, ptr %195, align 8, !tbaa !5
  %197 = load i32, ptr %16, align 4, !tbaa !9
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds ptr, ptr %196, i64 %198
  %200 = load ptr, ptr %199, align 8, !tbaa !5
  %201 = getelementptr inbounds i8, ptr %200, i64 0
  %202 = load i32, ptr %5, align 4, !tbaa !9
  %203 = sext i32 %202 to i64
  %204 = sub i64 0, %203
  %205 = getelementptr inbounds i8, ptr %201, i64 %204
  %206 = load i32, ptr %5, align 4, !tbaa !9
  %207 = sext i32 %206 to i64
  %208 = mul i64 %207, 1
  call void @llvm.memset.p0.i64(ptr align 1 %205, i8 -1, i64 %208, i1 false)
  br label %290

209:                                              ; preds = %187
  %210 = load i32, ptr %6, align 4, !tbaa !9
  %211 = icmp eq i32 %210, 2
  br i1 %211, label %212, label %245

212:                                              ; preds = %209
  %213 = load ptr, ptr %4, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.MImage, ptr %213, i32 0, i32 3
  %215 = load i32, ptr %14, align 4, !tbaa !9
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds [4 x ptr], ptr %214, i64 0, i64 %216
  %218 = load ptr, ptr %217, align 8, !tbaa !5
  %219 = load i32, ptr %16, align 4, !tbaa !9
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds ptr, ptr %218, i64 %220
  %222 = load ptr, ptr %221, align 8, !tbaa !5
  %223 = getelementptr inbounds i8, ptr %222, i64 0
  %224 = load i32, ptr %5, align 4, !tbaa !9
  %225 = sext i32 %224 to i64
  %226 = sub i64 0, %225
  %227 = getelementptr inbounds i8, ptr %223, i64 %226
  %228 = load ptr, ptr %4, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.MImage, ptr %228, i32 0, i32 3
  %230 = load i32, ptr %14, align 4, !tbaa !9
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds [4 x ptr], ptr %229, i64 0, i64 %231
  %233 = load ptr, ptr %232, align 8, !tbaa !5
  %234 = load i32, ptr %16, align 4, !tbaa !9
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds ptr, ptr %233, i64 %235
  %237 = load ptr, ptr %236, align 8, !tbaa !5
  %238 = getelementptr inbounds i8, ptr %237, i64 0
  %239 = load i8, ptr %238, align 1, !tbaa !15
  %240 = zext i8 %239 to i32
  %241 = trunc i32 %240 to i8
  %242 = load i32, ptr %5, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = mul i64 %243, 1
  call void @llvm.memset.p0.i64(ptr align 1 %227, i8 %241, i64 %244, i1 false)
  br label %289

245:                                              ; preds = %209
  %246 = load i32, ptr %6, align 4, !tbaa !9
  %247 = icmp eq i32 %246, 3
  br i1 %247, label %248, label %288

248:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %249

249:                                              ; preds = %284, %248
  %250 = load i32, ptr %18, align 4, !tbaa !9
  %251 = load i32, ptr %5, align 4, !tbaa !9
  %252 = icmp sle i32 %250, %251
  br i1 %252, label %254, label %253

253:                                              ; preds = %249
  store i32 12, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br label %287

254:                                              ; preds = %249
  %255 = load ptr, ptr %4, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.MImage, ptr %255, i32 0, i32 3
  %257 = load i32, ptr %14, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [4 x ptr], ptr %256, i64 0, i64 %258
  %260 = load ptr, ptr %259, align 8, !tbaa !5
  %261 = load i32, ptr %16, align 4, !tbaa !9
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds ptr, ptr %260, i64 %262
  %264 = load ptr, ptr %263, align 8, !tbaa !5
  %265 = load i32, ptr %18, align 4, !tbaa !9
  %266 = add nsw i32 0, %265
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds i8, ptr %264, i64 %267
  %269 = load i8, ptr %268, align 1, !tbaa !15
  %270 = load ptr, ptr %4, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.MImage, ptr %270, i32 0, i32 3
  %272 = load i32, ptr %14, align 4, !tbaa !9
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds [4 x ptr], ptr %271, i64 0, i64 %273
  %275 = load ptr, ptr %274, align 8, !tbaa !5
  %276 = load i32, ptr %16, align 4, !tbaa !9
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds ptr, ptr %275, i64 %277
  %279 = load ptr, ptr %278, align 8, !tbaa !5
  %280 = load i32, ptr %18, align 4, !tbaa !9
  %281 = sub nsw i32 0, %280
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds i8, ptr %279, i64 %282
  store i8 %269, ptr %283, align 1, !tbaa !15
  br label %284

284:                                              ; preds = %254
  %285 = load i32, ptr %18, align 4, !tbaa !9
  %286 = add nsw i32 %285, 1
  store i32 %286, ptr %18, align 4, !tbaa !9
  br label %249, !llvm.loop !19

287:                                              ; preds = %253
  br label %288

288:                                              ; preds = %287, %245
  br label %289

289:                                              ; preds = %288, %212
  br label %290

290:                                              ; preds = %289, %190
  br label %291

291:                                              ; preds = %290, %168
  br label %292

292:                                              ; preds = %291, %160
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %293 = load ptr, ptr %4, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.MImage, ptr %293, i32 0, i32 4
  %295 = load ptr, ptr %294, align 8, !tbaa !14
  %296 = icmp eq ptr %295, null
  br i1 %296, label %297, label %301

297:                                              ; preds = %292
  %298 = load ptr, ptr %4, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.MImage, ptr %298, i32 0, i32 2
  %300 = load i32, ptr %299, align 8, !tbaa !13
  br label %315

301:                                              ; preds = %292
  %302 = load ptr, ptr %4, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.MImage, ptr %302, i32 0, i32 4
  %304 = load ptr, ptr %303, align 8, !tbaa !14
  %305 = getelementptr inbounds %struct.MArray, ptr %304, i32 0, i32 2
  %306 = load ptr, ptr %305, align 8, !tbaa !15
  %307 = load i32, ptr %12, align 4, !tbaa !9
  %308 = load i32, ptr %12, align 4, !tbaa !9
  %309 = add nsw i32 %307, %308
  %310 = add nsw i32 %309, 5
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds i16, ptr %306, i64 %311
  %313 = load i16, ptr %312, align 2, !tbaa !16
  %314 = sext i16 %313 to i32
  br label %315

315:                                              ; preds = %301, %297
  %316 = phi i32 [ %300, %297 ], [ %314, %301 ]
  store i32 %316, ptr %19, align 4, !tbaa !9
  %317 = load i32, ptr %19, align 4, !tbaa !9
  %318 = load i32, ptr %11, align 4, !tbaa !9
  %319 = load i32, ptr %5, align 4, !tbaa !9
  %320 = sub nsw i32 %318, %319
  %321 = icmp sgt i32 %317, %320
  br i1 %321, label %322, label %450

322:                                              ; preds = %315
  %323 = load i32, ptr %6, align 4, !tbaa !9
  %324 = icmp eq i32 %323, 0
  br i1 %324, label %325, label %343

325:                                              ; preds = %322
  %326 = load ptr, ptr %4, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.MImage, ptr %326, i32 0, i32 3
  %328 = load i32, ptr %14, align 4, !tbaa !9
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds [4 x ptr], ptr %327, i64 0, i64 %329
  %331 = load ptr, ptr %330, align 8, !tbaa !5
  %332 = load i32, ptr %16, align 4, !tbaa !9
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds ptr, ptr %331, i64 %333
  %335 = load ptr, ptr %334, align 8, !tbaa !5
  %336 = load i32, ptr %11, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds i8, ptr %335, i64 %337
  %339 = getelementptr inbounds i8, ptr %338, i64 1
  %340 = load i32, ptr %5, align 4, !tbaa !9
  %341 = sext i32 %340 to i64
  %342 = mul i64 %341, 1
  call void @llvm.memset.p0.i64(ptr align 1 %339, i8 0, i64 %342, i1 false)
  br label %449

343:                                              ; preds = %322
  %344 = load i32, ptr %6, align 4, !tbaa !9
  %345 = icmp eq i32 %344, 1
  br i1 %345, label %346, label %364

346:                                              ; preds = %343
  %347 = load ptr, ptr %4, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.MImage, ptr %347, i32 0, i32 3
  %349 = load i32, ptr %14, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds [4 x ptr], ptr %348, i64 0, i64 %350
  %352 = load ptr, ptr %351, align 8, !tbaa !5
  %353 = load i32, ptr %16, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds ptr, ptr %352, i64 %354
  %356 = load ptr, ptr %355, align 8, !tbaa !5
  %357 = load i32, ptr %11, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds i8, ptr %356, i64 %358
  %360 = getelementptr inbounds i8, ptr %359, i64 1
  %361 = load i32, ptr %5, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = mul i64 %362, 1
  call void @llvm.memset.p0.i64(ptr align 1 %360, i8 -1, i64 %363, i1 false)
  br label %448

364:                                              ; preds = %343
  %365 = load i32, ptr %6, align 4, !tbaa !9
  %366 = icmp eq i32 %365, 2
  br i1 %366, label %367, label %401

367:                                              ; preds = %364
  %368 = load ptr, ptr %4, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.MImage, ptr %368, i32 0, i32 3
  %370 = load i32, ptr %14, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds [4 x ptr], ptr %369, i64 0, i64 %371
  %373 = load ptr, ptr %372, align 8, !tbaa !5
  %374 = load i32, ptr %16, align 4, !tbaa !9
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds ptr, ptr %373, i64 %375
  %377 = load ptr, ptr %376, align 8, !tbaa !5
  %378 = load i32, ptr %11, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds i8, ptr %377, i64 %379
  %381 = getelementptr inbounds i8, ptr %380, i64 1
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.MImage, ptr %382, i32 0, i32 3
  %384 = load i32, ptr %14, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [4 x ptr], ptr %383, i64 0, i64 %385
  %387 = load ptr, ptr %386, align 8, !tbaa !5
  %388 = load i32, ptr %16, align 4, !tbaa !9
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds ptr, ptr %387, i64 %389
  %391 = load ptr, ptr %390, align 8, !tbaa !5
  %392 = load i32, ptr %11, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds i8, ptr %391, i64 %393
  %395 = load i8, ptr %394, align 1, !tbaa !15
  %396 = zext i8 %395 to i32
  %397 = trunc i32 %396 to i8
  %398 = load i32, ptr %5, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = mul i64 %399, 1
  call void @llvm.memset.p0.i64(ptr align 1 %381, i8 %397, i64 %400, i1 false)
  br label %447

401:                                              ; preds = %364
  %402 = load i32, ptr %6, align 4, !tbaa !9
  %403 = icmp eq i32 %402, 3
  br i1 %403, label %404, label %446

404:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %405

405:                                              ; preds = %442, %404
  %406 = load i32, ptr %20, align 4, !tbaa !9
  %407 = load i32, ptr %5, align 4, !tbaa !9
  %408 = icmp sle i32 %406, %407
  br i1 %408, label %410, label %409

409:                                              ; preds = %405
  store i32 15, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  br label %445

410:                                              ; preds = %405
  %411 = load ptr, ptr %4, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.MImage, ptr %411, i32 0, i32 3
  %413 = load i32, ptr %14, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds [4 x ptr], ptr %412, i64 0, i64 %414
  %416 = load ptr, ptr %415, align 8, !tbaa !5
  %417 = load i32, ptr %16, 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 %11, align 4, !tbaa !9
  %422 = load i32, ptr %20, align 4, !tbaa !9
  %423 = sub nsw i32 %421, %422
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds i8, ptr %420, i64 %424
  %426 = load i8, ptr %425, align 1, !tbaa !15
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.MImage, ptr %427, i32 0, i32 3
  %429 = load i32, ptr %14, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds [4 x ptr], ptr %428, i64 0, i64 %430
  %432 = load ptr, ptr %431, align 8, !tbaa !5
  %433 = load i32, ptr %16, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds ptr, ptr %432, i64 %434
  %436 = load ptr, ptr %435, align 8, !tbaa !5
  %437 = load i32, ptr %11, align 4, !tbaa !9
  %438 = load i32, ptr %20, align 4, !tbaa !9
  %439 = add nsw i32 %437, %438
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds i8, ptr %436, i64 %440
  store i8 %426, ptr %441, align 1, !tbaa !15
  br label %442

442:                                              ; preds = %410
  %443 = load i32, ptr %20, align 4, !tbaa !9
  %444 = add nsw i32 %443, 1
  store i32 %444, ptr %20, align 4, !tbaa !9
  br label %405, !llvm.loop !21

445:                                              ; preds = %409
  br label %446

446:                                              ; preds = %445, %401
  br label %447

447:                                              ; preds = %446, %367
  br label %448

448:                                              ; preds = %447, %346
  br label %449

449:                                              ; preds = %448, %325
  br label %450

450:                                              ; preds = %449, %315
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %451

451:                                              ; preds = %450
  %452 = load i32, ptr %16, align 4, !tbaa !9
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr %16, align 4, !tbaa !9
  br label %136, !llvm.loop !22

454:                                              ; preds = %136
  %455 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %455, ptr %16, align 4, !tbaa !9
  br label %456

456:                                              ; preds = %771, %454
  %457 = load i32, ptr %16, align 4, !tbaa !9
  %458 = load i32, ptr %13, align 4, !tbaa !9
  %459 = icmp sle i32 %457, %458
  br i1 %459, label %460, label %774

460:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %461 = load ptr, ptr %4, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.MImage, ptr %461, i32 0, i32 4
  %463 = load ptr, ptr %462, align 8, !tbaa !14
  %464 = icmp eq ptr %463, null
  br i1 %464, label %465, label %466

465:                                              ; preds = %460
  br label %480

466:                                              ; preds = %460
  %467 = load ptr, ptr %4, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.MImage, ptr %467, i32 0, i32 4
  %469 = load ptr, ptr %468, align 8, !tbaa !14
  %470 = getelementptr inbounds %struct.MArray, ptr %469, i32 0, i32 2
  %471 = load ptr, ptr %470, align 8, !tbaa !15
  %472 = load i32, ptr %16, align 4, !tbaa !9
  %473 = load i32, ptr %16, align 4, !tbaa !9
  %474 = add nsw i32 %472, %473
  %475 = add nsw i32 %474, 4
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds i16, ptr %471, i64 %476
  %478 = load i16, ptr %477, align 2, !tbaa !16
  %479 = sext i16 %478 to i32
  br label %480

480:                                              ; preds = %466, %465
  %481 = phi i32 [ 0, %465 ], [ %479, %466 ]
  store i32 %481, ptr %21, align 4, !tbaa !9
  %482 = load i32, ptr %21, align 4, !tbaa !9
  %483 = load i32, ptr %5, align 4, !tbaa !9
  %484 = icmp slt i32 %482, %483
  br i1 %484, label %485, label %612

485:                                              ; preds = %480
  %486 = load i32, ptr %6, align 4, !tbaa !9
  %487 = icmp eq i32 %486, 0
  br i1 %487, label %488, label %507

488:                                              ; preds = %485
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.MImage, ptr %489, i32 0, i32 3
  %491 = load i32, ptr %14, align 4, !tbaa !9
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds [4 x ptr], ptr %490, i64 0, i64 %492
  %494 = load ptr, ptr %493, align 8, !tbaa !5
  %495 = load i32, ptr %16, align 4, !tbaa !9
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds ptr, ptr %494, i64 %496
  %498 = load ptr, ptr %497, align 8, !tbaa !5
  %499 = getelementptr inbounds i8, ptr %498, i64 0
  %500 = load i32, ptr %5, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = sub i64 0, %501
  %503 = getelementptr inbounds i8, ptr %499, i64 %502
  %504 = load i32, ptr %5, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = mul i64 %505, 1
  call void @llvm.memset.p0.i64(ptr align 1 %503, i8 0, i64 %506, i1 false)
  br label %611

507:                                              ; preds = %485
  %508 = load i32, ptr %6, align 4, !tbaa !9
  %509 = icmp eq i32 %508, 1
  br i1 %509, label %510, label %529

510:                                              ; preds = %507
  %511 = load ptr, ptr %4, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.MImage, ptr %511, i32 0, i32 3
  %513 = load i32, ptr %14, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds [4 x ptr], ptr %512, i64 0, i64 %514
  %516 = load ptr, ptr %515, align 8, !tbaa !5
  %517 = load i32, ptr %16, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds ptr, ptr %516, i64 %518
  %520 = load ptr, ptr %519, align 8, !tbaa !5
  %521 = getelementptr inbounds i8, ptr %520, i64 0
  %522 = load i32, ptr %5, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = sub i64 0, %523
  %525 = getelementptr inbounds i8, ptr %521, i64 %524
  %526 = load i32, ptr %5, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = mul i64 %527, 1
  call void @llvm.memset.p0.i64(ptr align 1 %525, i8 -1, i64 %528, i1 false)
  br label %610

529:                                              ; preds = %507
  %530 = load i32, ptr %6, align 4, !tbaa !9
  %531 = icmp eq i32 %530, 2
  br i1 %531, label %532, label %565

532:                                              ; preds = %529
  %533 = load ptr, ptr %4, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.MImage, ptr %533, i32 0, i32 3
  %535 = load i32, ptr %14, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds [4 x ptr], ptr %534, i64 0, i64 %536
  %538 = load ptr, ptr %537, align 8, !tbaa !5
  %539 = load i32, ptr %16, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds ptr, ptr %538, i64 %540
  %542 = load ptr, ptr %541, align 8, !tbaa !5
  %543 = getelementptr inbounds i8, ptr %542, i64 0
  %544 = load i32, ptr %5, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = sub i64 0, %545
  %547 = getelementptr inbounds i8, ptr %543, i64 %546
  %548 = load ptr, ptr %4, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.MImage, ptr %548, i32 0, i32 3
  %550 = load i32, ptr %14, align 4, !tbaa !9
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds [4 x ptr], ptr %549, i64 0, i64 %551
  %553 = load ptr, ptr %552, align 8, !tbaa !5
  %554 = load i32, ptr %16, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds ptr, ptr %553, i64 %555
  %557 = load ptr, ptr %556, align 8, !tbaa !5
  %558 = getelementptr inbounds i8, ptr %557, i64 0
  %559 = load i8, ptr %558, align 1, !tbaa !15
  %560 = zext i8 %559 to i32
  %561 = trunc i32 %560 to i8
  %562 = load i32, ptr %5, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = mul i64 %563, 1
  call void @llvm.memset.p0.i64(ptr align 1 %547, i8 %561, i64 %564, i1 false)
  br label %609

565:                                              ; preds = %529
  %566 = load i32, ptr %6, align 4, !tbaa !9
  %567 = icmp eq i32 %566, 3
  br i1 %567, label %568, label %608

568:                                              ; preds = %565
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  store i32 1, ptr %22, align 4, !tbaa !9
  br label %569

569:                                              ; preds = %604, %568
  %570 = load i32, ptr %22, align 4, !tbaa !9
  %571 = load i32, ptr %5, align 4, !tbaa !9
  %572 = icmp sle i32 %570, %571
  br i1 %572, label %574, label %573

573:                                              ; preds = %569
  store i32 21, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  br label %607

574:                                              ; preds = %569
  %575 = load ptr, ptr %4, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.MImage, ptr %575, i32 0, i32 3
  %577 = load i32, ptr %14, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds [4 x ptr], ptr %576, i64 0, i64 %578
  %580 = load ptr, ptr %579, align 8, !tbaa !5
  %581 = load i32, ptr %16, align 4, !tbaa !9
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds ptr, ptr %580, i64 %582
  %584 = load ptr, ptr %583, align 8, !tbaa !5
  %585 = load i32, ptr %22, align 4, !tbaa !9
  %586 = add nsw i32 0, %585
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds i8, ptr %584, i64 %587
  %589 = load i8, ptr %588, align 1, !tbaa !15
  %590 = load ptr, ptr %4, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.MImage, ptr %590, i32 0, i32 3
  %592 = load i32, ptr %14, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds [4 x ptr], ptr %591, i64 0, i64 %593
  %595 = load ptr, ptr %594, align 8, !tbaa !5
  %596 = load i32, ptr %16, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds ptr, ptr %595, i64 %597
  %599 = load ptr, ptr %598, align 8, !tbaa !5
  %600 = load i32, ptr %22, align 4, !tbaa !9
  %601 = sub nsw i32 0, %600
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds i8, ptr %599, i64 %602
  store i8 %589, ptr %603, align 1, !tbaa !15
  br label %604

604:                                              ; preds = %574
  %605 = load i32, ptr %22, align 4, !tbaa !9
  %606 = add nsw i32 %605, 1
  store i32 %606, ptr %22, align 4, !tbaa !9
  br label %569, !llvm.loop !23

607:                                              ; preds = %573
  br label %608

608:                                              ; preds = %607, %565
  br label %609

609:                                              ; preds = %608, %532
  br label %610

610:                                              ; preds = %609, %510
  br label %611

611:                                              ; preds = %610, %488
  br label %612

612:                                              ; preds = %611, %480
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  %613 = load ptr, ptr %4, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.MImage, ptr %613, i32 0, i32 4
  %615 = load ptr, ptr %614, align 8, !tbaa !14
  %616 = icmp eq ptr %615, null
  br i1 %616, label %617, label %621

617:                                              ; preds = %612
  %618 = load ptr, ptr %4, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.MImage, ptr %618, i32 0, i32 2
  %620 = load i32, ptr %619, align 8, !tbaa !13
  br label %635

621:                                              ; preds = %612
  %622 = load ptr, ptr %4, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.MImage, ptr %622, i32 0, i32 4
  %624 = load ptr, ptr %623, align 8, !tbaa !14
  %625 = getelementptr inbounds %struct.MArray, ptr %624, i32 0, i32 2
  %626 = load ptr, ptr %625, align 8, !tbaa !15
  %627 = load i32, ptr %16, align 4, !tbaa !9
  %628 = load i32, ptr %16, align 4, !tbaa !9
  %629 = add nsw i32 %627, %628
  %630 = add nsw i32 %629, 5
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds i16, ptr %626, i64 %631
  %633 = load i16, ptr %632, align 2, !tbaa !16
  %634 = sext i16 %633 to i32
  br label %635

635:                                              ; preds = %621, %617
  %636 = phi i32 [ %620, %617 ], [ %634, %621 ]
  store i32 %636, ptr %23, align 4, !tbaa !9
  %637 = load i32, ptr %23, align 4, !tbaa !9
  %638 = load i32, ptr %11, align 4, !tbaa !9
  %639 = load i32, ptr %5, align 4, !tbaa !9
  %640 = sub nsw i32 %638, %639
  %641 = icmp sgt i32 %637, %640
  br i1 %641, label %642, label %770

642:                                              ; preds = %635
  %643 = load i32, ptr %6, align 4, !tbaa !9
  %644 = icmp eq i32 %643, 0
  br i1 %644, label %645, label %663

645:                                              ; preds = %642
  %646 = load ptr, ptr %4, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.MImage, ptr %646, i32 0, i32 3
  %648 = load i32, ptr %14, align 4, !tbaa !9
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds [4 x ptr], ptr %647, i64 0, i64 %649
  %651 = load ptr, ptr %650, align 8, !tbaa !5
  %652 = load i32, ptr %16, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds ptr, ptr %651, i64 %653
  %655 = load ptr, ptr %654, align 8, !tbaa !5
  %656 = load i32, ptr %11, align 4, !tbaa !9
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds i8, ptr %655, i64 %657
  %659 = getelementptr inbounds i8, ptr %658, i64 1
  %660 = load i32, ptr %5, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = mul i64 %661, 1
  call void @llvm.memset.p0.i64(ptr align 1 %659, i8 0, i64 %662, i1 false)
  br label %769

663:                                              ; preds = %642
  %664 = load i32, ptr %6, align 4, !tbaa !9
  %665 = icmp eq i32 %664, 1
  br i1 %665, label %666, label %684

666:                                              ; preds = %663
  %667 = load ptr, ptr %4, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.MImage, ptr %667, i32 0, i32 3
  %669 = load i32, ptr %14, align 4, !tbaa !9
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds [4 x ptr], ptr %668, i64 0, i64 %670
  %672 = load ptr, ptr %671, align 8, !tbaa !5
  %673 = load i32, ptr %16, align 4, !tbaa !9
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds ptr, ptr %672, i64 %674
  %676 = load ptr, ptr %675, align 8, !tbaa !5
  %677 = load i32, ptr %11, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds i8, ptr %676, i64 %678
  %680 = getelementptr inbounds i8, ptr %679, i64 1
  %681 = load i32, ptr %5, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = mul i64 %682, 1
  call void @llvm.memset.p0.i64(ptr align 1 %680, i8 -1, i64 %683, i1 false)
  br label %768

684:                                              ; preds = %663
  %685 = load i32, ptr %6, align 4, !tbaa !9
  %686 = icmp eq i32 %685, 2
  br i1 %686, label %687, label %721

687:                                              ; preds = %684
  %688 = load ptr, ptr %4, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.MImage, ptr %688, i32 0, i32 3
  %690 = load i32, ptr %14, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds [4 x ptr], ptr %689, i64 0, i64 %691
  %693 = load ptr, ptr %692, align 8, !tbaa !5
  %694 = load i32, ptr %16, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds ptr, ptr %693, i64 %695
  %697 = load ptr, ptr %696, align 8, !tbaa !5
  %698 = load i32, ptr %11, align 4, !tbaa !9
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds i8, ptr %697, i64 %699
  %701 = getelementptr inbounds i8, ptr %700, i64 1
  %702 = load ptr, ptr %4, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.MImage, ptr %702, i32 0, i32 3
  %704 = load i32, ptr %14, align 4, !tbaa !9
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds [4 x ptr], ptr %703, i64 0, i64 %705
  %707 = load ptr, ptr %706, align 8, !tbaa !5
  %708 = load i32, ptr %16, align 4, !tbaa !9
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds ptr, ptr %707, i64 %709
  %711 = load ptr, ptr %710, align 8, !tbaa !5
  %712 = load i32, ptr %11, align 4, !tbaa !9
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds i8, ptr %711, i64 %713
  %715 = load i8, ptr %714, align 1, !tbaa !15
  %716 = zext i8 %715 to i32
  %717 = trunc i32 %716 to i8
  %718 = load i32, ptr %5, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = mul i64 %719, 1
  call void @llvm.memset.p0.i64(ptr align 1 %701, i8 %717, i64 %720, i1 false)
  br label %767

721:                                              ; preds = %684
  %722 = load i32, ptr %6, align 4, !tbaa !9
  %723 = icmp eq i32 %722, 3
  br i1 %723, label %724, label %766

724:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %725

725:                                              ; preds = %762, %724
  %726 = load i32, ptr %24, align 4, !tbaa !9
  %727 = load i32, ptr %5, align 4, !tbaa !9
  %728 = icmp sle i32 %726, %727
  br i1 %728, label %730, label %729

729:                                              ; preds = %725
  store i32 24, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  br label %765

730:                                              ; preds = %725
  %731 = load ptr, ptr %4, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.MImage, ptr %731, i32 0, i32 3
  %733 = load i32, ptr %14, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds [4 x ptr], ptr %732, i64 0, i64 %734
  %736 = load ptr, ptr %735, align 8, !tbaa !5
  %737 = load i32, ptr %16, align 4, !tbaa !9
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds ptr, ptr %736, i64 %738
  %740 = load ptr, ptr %739, align 8, !tbaa !5
  %741 = load i32, ptr %11, align 4, !tbaa !9
  %742 = load i32, ptr %24, align 4, !tbaa !9
  %743 = sub nsw i32 %741, %742
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds i8, ptr %740, i64 %744
  %746 = load i8, ptr %745, align 1, !tbaa !15
  %747 = load ptr, ptr %4, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.MImage, ptr %747, i32 0, i32 3
  %749 = load i32, ptr %14, align 4, !tbaa !9
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds [4 x ptr], ptr %748, i64 0, i64 %750
  %752 = load ptr, ptr %751, align 8, !tbaa !5
  %753 = load i32, ptr %16, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds ptr, ptr %752, i64 %754
  %756 = load ptr, ptr %755, align 8, !tbaa !5
  %757 = load i32, ptr %11, align 4, !tbaa !9
  %758 = load i32, ptr %24, align 4, !tbaa !9
  %759 = add nsw i32 %757, %758
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds i8, ptr %756, i64 %760
  store i8 %746, ptr %761, align 1, !tbaa !15
  br label %762

762:                                              ; preds = %730
  %763 = load i32, ptr %24, align 4, !tbaa !9
  %764 = add nsw i32 %763, 1
  store i32 %764, ptr %24, align 4, !tbaa !9
  br label %725, !llvm.loop !24

765:                                              ; preds = %729
  br label %766

766:                                              ; preds = %765, %721
  br label %767

767:                                              ; preds = %766, %687
  br label %768

768:                                              ; preds = %767, %666
  br label %769

769:                                              ; preds = %768, %645
  br label %770

770:                                              ; preds = %769, %635
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %771

771:                                              ; preds = %770
  %772 = load i32, ptr %16, align 4, !tbaa !9
  %773 = add nsw i32 %772, 1
  store i32 %773, ptr %16, align 4, !tbaa !9
  br label %456, !llvm.loop !25

774:                                              ; preds = %456
  %775 = load i32, ptr %13, align 4, !tbaa !9
  %776 = add nsw i32 %775, 1
  store i32 %776, ptr %16, align 4, !tbaa !9
  br label %777

777:                                              ; preds = %1104, %774
  %778 = load i32, ptr %16, align 4, !tbaa !9
  %779 = load i32, ptr %13, align 4, !tbaa !9
  %780 = load i32, ptr %5, align 4, !tbaa !9
  %781 = add nsw i32 %779, %780
  %782 = load i32, ptr %10, align 4, !tbaa !9
  %783 = icmp slt i32 %781, %782
  br i1 %783, label %784, label %788

784:                                              ; preds = %777
  %785 = load i32, ptr %13, align 4, !tbaa !9
  %786 = load i32, ptr %5, align 4, !tbaa !9
  %787 = add nsw i32 %785, %786
  br label %790

788:                                              ; preds = %777
  %789 = load i32, ptr %10, align 4, !tbaa !9
  br label %790

790:                                              ; preds = %788, %784
  %791 = phi i32 [ %787, %784 ], [ %789, %788 ]
  %792 = icmp slt i32 %778, %791
  br i1 %792, label %793, label %1107

793:                                              ; preds = %790
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  %794 = load ptr, ptr %4, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.MImage, ptr %794, i32 0, i32 4
  %796 = load ptr, ptr %795, align 8, !tbaa !14
  %797 = icmp eq ptr %796, null
  br i1 %797, label %798, label %799

798:                                              ; preds = %793
  br label %813

799:                                              ; preds = %793
  %800 = load ptr, ptr %4, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.MImage, ptr %800, i32 0, i32 4
  %802 = load ptr, ptr %801, align 8, !tbaa !14
  %803 = getelementptr inbounds %struct.MArray, ptr %802, i32 0, i32 2
  %804 = load ptr, ptr %803, align 8, !tbaa !15
  %805 = load i32, ptr %13, align 4, !tbaa !9
  %806 = load i32, ptr %13, align 4, !tbaa !9
  %807 = add nsw i32 %805, %806
  %808 = add nsw i32 %807, 4
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds i16, ptr %804, i64 %809
  %811 = load i16, ptr %810, align 2, !tbaa !16
  %812 = sext i16 %811 to i32
  br label %813

813:                                              ; preds = %799, %798
  %814 = phi i32 [ 0, %798 ], [ %812, %799 ]
  store i32 %814, ptr %25, align 4, !tbaa !9
  %815 = load i32, ptr %25, align 4, !tbaa !9
  %816 = load i32, ptr %5, align 4, !tbaa !9
  %817 = icmp slt i32 %815, %816
  br i1 %817, label %818, label %945

818:                                              ; preds = %813
  %819 = load i32, ptr %6, align 4, !tbaa !9
  %820 = icmp eq i32 %819, 0
  br i1 %820, label %821, label %840

821:                                              ; preds = %818
  %822 = load ptr, ptr %4, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.MImage, ptr %822, i32 0, i32 3
  %824 = load i32, ptr %14, align 4, !tbaa !9
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds [4 x ptr], ptr %823, i64 0, i64 %825
  %827 = load ptr, ptr %826, align 8, !tbaa !5
  %828 = load i32, ptr %16, align 4, !tbaa !9
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds ptr, ptr %827, i64 %829
  %831 = load ptr, ptr %830, align 8, !tbaa !5
  %832 = getelementptr inbounds i8, ptr %831, i64 0
  %833 = load i32, ptr %5, align 4, !tbaa !9
  %834 = sext i32 %833 to i64
  %835 = sub i64 0, %834
  %836 = getelementptr inbounds i8, ptr %832, i64 %835
  %837 = load i32, ptr %5, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = mul i64 %838, 1
  call void @llvm.memset.p0.i64(ptr align 1 %836, i8 0, i64 %839, i1 false)
  br label %944

840:                                              ; preds = %818
  %841 = load i32, ptr %6, align 4, !tbaa !9
  %842 = icmp eq i32 %841, 1
  br i1 %842, label %843, label %862

843:                                              ; preds = %840
  %844 = load ptr, ptr %4, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.MImage, ptr %844, i32 0, i32 3
  %846 = load i32, ptr %14, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds [4 x ptr], ptr %845, i64 0, i64 %847
  %849 = load ptr, ptr %848, align 8, !tbaa !5
  %850 = load i32, ptr %16, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds ptr, ptr %849, i64 %851
  %853 = load ptr, ptr %852, align 8, !tbaa !5
  %854 = getelementptr inbounds i8, ptr %853, i64 0
  %855 = load i32, ptr %5, align 4, !tbaa !9
  %856 = sext i32 %855 to i64
  %857 = sub i64 0, %856
  %858 = getelementptr inbounds i8, ptr %854, i64 %857
  %859 = load i32, ptr %5, align 4, !tbaa !9
  %860 = sext i32 %859 to i64
  %861 = mul i64 %860, 1
  call void @llvm.memset.p0.i64(ptr align 1 %858, i8 -1, i64 %861, i1 false)
  br label %943

862:                                              ; preds = %840
  %863 = load i32, ptr %6, align 4, !tbaa !9
  %864 = icmp eq i32 %863, 2
  br i1 %864, label %865, label %898

865:                                              ; preds = %862
  %866 = load ptr, ptr %4, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.MImage, ptr %866, i32 0, i32 3
  %868 = load i32, ptr %14, align 4, !tbaa !9
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds [4 x ptr], ptr %867, i64 0, i64 %869
  %871 = load ptr, ptr %870, align 8, !tbaa !5
  %872 = load i32, ptr %16, align 4, !tbaa !9
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds ptr, ptr %871, i64 %873
  %875 = load ptr, ptr %874, align 8, !tbaa !5
  %876 = getelementptr inbounds i8, ptr %875, i64 0
  %877 = load i32, ptr %5, align 4, !tbaa !9
  %878 = sext i32 %877 to i64
  %879 = sub i64 0, %878
  %880 = getelementptr inbounds i8, ptr %876, i64 %879
  %881 = load ptr, ptr %4, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.MImage, ptr %881, i32 0, i32 3
  %883 = load i32, ptr %14, align 4, !tbaa !9
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds [4 x ptr], ptr %882, i64 0, i64 %884
  %886 = load ptr, ptr %885, align 8, !tbaa !5
  %887 = load i32, ptr %16, align 4, !tbaa !9
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds ptr, ptr %886, i64 %888
  %890 = load ptr, ptr %889, align 8, !tbaa !5
  %891 = getelementptr inbounds i8, ptr %890, i64 0
  %892 = load i8, ptr %891, align 1, !tbaa !15
  %893 = zext i8 %892 to i32
  %894 = trunc i32 %893 to i8
  %895 = load i32, ptr %5, align 4, !tbaa !9
  %896 = sext i32 %895 to i64
  %897 = mul i64 %896, 1
  call void @llvm.memset.p0.i64(ptr align 1 %880, i8 %894, i64 %897, i1 false)
  br label %942

898:                                              ; preds = %862
  %899 = load i32, ptr %6, align 4, !tbaa !9
  %900 = icmp eq i32 %899, 3
  br i1 %900, label %901, label %941

901:                                              ; preds = %898
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %902

902:                                              ; preds = %937, %901
  %903 = load i32, ptr %26, align 4, !tbaa !9
  %904 = load i32, ptr %5, align 4, !tbaa !9
  %905 = icmp sle i32 %903, %904
  br i1 %905, label %907, label %906

906:                                              ; preds = %902
  store i32 30, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  br label %940

907:                                              ; preds = %902
  %908 = load ptr, ptr %4, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.MImage, ptr %908, i32 0, i32 3
  %910 = load i32, ptr %14, align 4, !tbaa !9
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds [4 x ptr], ptr %909, i64 0, i64 %911
  %913 = load ptr, ptr %912, align 8, !tbaa !5
  %914 = load i32, ptr %16, align 4, !tbaa !9
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds ptr, ptr %913, i64 %915
  %917 = load ptr, ptr %916, align 8, !tbaa !5
  %918 = load i32, ptr %26, align 4, !tbaa !9
  %919 = add nsw i32 0, %918
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds i8, ptr %917, i64 %920
  %922 = load i8, ptr %921, align 1, !tbaa !15
  %923 = load ptr, ptr %4, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.MImage, ptr %923, i32 0, i32 3
  %925 = load i32, ptr %14, align 4, !tbaa !9
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds [4 x ptr], ptr %924, i64 0, i64 %926
  %928 = load ptr, ptr %927, align 8, !tbaa !5
  %929 = load i32, ptr %16, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds ptr, ptr %928, i64 %930
  %932 = load ptr, ptr %931, align 8, !tbaa !5
  %933 = load i32, ptr %26, align 4, !tbaa !9
  %934 = sub nsw i32 0, %933
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds i8, ptr %932, i64 %935
  store i8 %922, ptr %936, align 1, !tbaa !15
  br label %937

937:                                              ; preds = %907
  %938 = load i32, ptr %26, align 4, !tbaa !9
  %939 = add nsw i32 %938, 1
  store i32 %939, ptr %26, align 4, !tbaa !9
  br label %902, !llvm.loop !26

940:                                              ; preds = %906
  br label %941

941:                                              ; preds = %940, %898
  br label %942

942:                                              ; preds = %941, %865
  br label %943

943:                                              ; preds = %942, %843
  br label %944

944:                                              ; preds = %943, %821
  br label %945

945:                                              ; preds = %944, %813
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  %946 = load ptr, ptr %4, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.MImage, ptr %946, i32 0, i32 4
  %948 = load ptr, ptr %947, align 8, !tbaa !14
  %949 = icmp eq ptr %948, null
  br i1 %949, label %950, label %954

950:                                              ; preds = %945
  %951 = load ptr, ptr %4, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.MImage, ptr %951, i32 0, i32 2
  %953 = load i32, ptr %952, align 8, !tbaa !13
  br label %968

954:                                              ; preds = %945
  %955 = load ptr, ptr %4, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.MImage, ptr %955, i32 0, i32 4
  %957 = load ptr, ptr %956, align 8, !tbaa !14
  %958 = getelementptr inbounds %struct.MArray, ptr %957, i32 0, i32 2
  %959 = load ptr, ptr %958, align 8, !tbaa !15
  %960 = load i32, ptr %13, align 4, !tbaa !9
  %961 = load i32, ptr %13, align 4, !tbaa !9
  %962 = add nsw i32 %960, %961
  %963 = add nsw i32 %962, 5
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds i16, ptr %959, i64 %964
  %966 = load i16, ptr %965, align 2, !tbaa !16
  %967 = sext i16 %966 to i32
  br label %968

968:                                              ; preds = %954, %950
  %969 = phi i32 [ %953, %950 ], [ %967, %954 ]
  store i32 %969, ptr %27, align 4, !tbaa !9
  %970 = load i32, ptr %27, align 4, !tbaa !9
  %971 = load i32, ptr %11, align 4, !tbaa !9
  %972 = load i32, ptr %5, align 4, !tbaa !9
  %973 = sub nsw i32 %971, %972
  %974 = icmp sgt i32 %970, %973
  br i1 %974, label %975, label %1103

975:                                              ; preds = %968
  %976 = load i32, ptr %6, align 4, !tbaa !9
  %977 = icmp eq i32 %976, 0
  br i1 %977, label %978, label %996

978:                                              ; preds = %975
  %979 = load ptr, ptr %4, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.MImage, ptr %979, i32 0, i32 3
  %981 = load i32, ptr %14, align 4, !tbaa !9
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds [4 x ptr], ptr %980, i64 0, i64 %982
  %984 = load ptr, ptr %983, align 8, !tbaa !5
  %985 = load i32, ptr %16, align 4, !tbaa !9
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds ptr, ptr %984, i64 %986
  %988 = load ptr, ptr %987, align 8, !tbaa !5
  %989 = load i32, ptr %11, align 4, !tbaa !9
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds i8, ptr %988, i64 %990
  %992 = getelementptr inbounds i8, ptr %991, i64 1
  %993 = load i32, ptr %5, align 4, !tbaa !9
  %994 = sext i32 %993 to i64
  %995 = mul i64 %994, 1
  call void @llvm.memset.p0.i64(ptr align 1 %992, i8 0, i64 %995, i1 false)
  br label %1102

996:                                              ; preds = %975
  %997 = load i32, ptr %6, align 4, !tbaa !9
  %998 = icmp eq i32 %997, 1
  br i1 %998, label %999, label %1017

999:                                              ; preds = %996
  %1000 = load ptr, ptr %4, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.MImage, ptr %1000, i32 0, i32 3
  %1002 = load i32, ptr %14, align 4, !tbaa !9
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds [4 x ptr], ptr %1001, i64 0, i64 %1003
  %1005 = load ptr, ptr %1004, align 8, !tbaa !5
  %1006 = load i32, ptr %16, 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 %11, align 4, !tbaa !9
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds i8, ptr %1009, i64 %1011
  %1013 = getelementptr inbounds i8, ptr %1012, i64 1
  %1014 = load i32, ptr %5, align 4, !tbaa !9
  %1015 = sext i32 %1014 to i64
  %1016 = mul i64 %1015, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1013, i8 -1, i64 %1016, i1 false)
  br label %1101

1017:                                             ; preds = %996
  %1018 = load i32, ptr %6, align 4, !tbaa !9
  %1019 = icmp eq i32 %1018, 2
  br i1 %1019, label %1020, label %1054

1020:                                             ; preds = %1017
  %1021 = load ptr, ptr %4, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.MImage, ptr %1021, i32 0, i32 3
  %1023 = load i32, ptr %14, align 4, !tbaa !9
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds [4 x ptr], ptr %1022, i64 0, i64 %1024
  %1026 = load ptr, ptr %1025, align 8, !tbaa !5
  %1027 = load i32, ptr %16, align 4, !tbaa !9
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds ptr, ptr %1026, i64 %1028
  %1030 = load ptr, ptr %1029, align 8, !tbaa !5
  %1031 = load i32, ptr %11, align 4, !tbaa !9
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds i8, ptr %1030, i64 %1032
  %1034 = getelementptr inbounds i8, ptr %1033, i64 1
  %1035 = load ptr, ptr %4, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.MImage, ptr %1035, i32 0, i32 3
  %1037 = load i32, ptr %14, align 4, !tbaa !9
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds [4 x ptr], ptr %1036, i64 0, i64 %1038
  %1040 = load ptr, ptr %1039, align 8, !tbaa !5
  %1041 = load i32, ptr %16, align 4, !tbaa !9
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds ptr, ptr %1040, i64 %1042
  %1044 = load ptr, ptr %1043, align 8, !tbaa !5
  %1045 = load i32, ptr %11, align 4, !tbaa !9
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds i8, ptr %1044, i64 %1046
  %1048 = load i8, ptr %1047, align 1, !tbaa !15
  %1049 = zext i8 %1048 to i32
  %1050 = trunc i32 %1049 to i8
  %1051 = load i32, ptr %5, align 4, !tbaa !9
  %1052 = sext i32 %1051 to i64
  %1053 = mul i64 %1052, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1034, i8 %1050, i64 %1053, i1 false)
  br label %1100

1054:                                             ; preds = %1017
  %1055 = load i32, ptr %6, align 4, !tbaa !9
  %1056 = icmp eq i32 %1055, 3
  br i1 %1056, label %1057, label %1099

1057:                                             ; preds = %1054
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1058

1058:                                             ; preds = %1095, %1057
  %1059 = load i32, ptr %28, align 4, !tbaa !9
  %1060 = load i32, ptr %5, align 4, !tbaa !9
  %1061 = icmp sle i32 %1059, %1060
  br i1 %1061, label %1063, label %1062

1062:                                             ; preds = %1058
  store i32 33, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  br label %1098

1063:                                             ; preds = %1058
  %1064 = load ptr, ptr %4, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.MImage, ptr %1064, i32 0, i32 3
  %1066 = load i32, ptr %14, align 4, !tbaa !9
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds [4 x ptr], ptr %1065, i64 0, i64 %1067
  %1069 = load ptr, ptr %1068, align 8, !tbaa !5
  %1070 = load i32, ptr %16, 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 %11, align 4, !tbaa !9
  %1075 = load i32, ptr %28, align 4, !tbaa !9
  %1076 = sub nsw i32 %1074, %1075
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds i8, ptr %1073, i64 %1077
  %1079 = load i8, ptr %1078, align 1, !tbaa !15
  %1080 = load ptr, ptr %4, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.MImage, ptr %1080, i32 0, i32 3
  %1082 = load i32, ptr %14, align 4, !tbaa !9
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds [4 x ptr], ptr %1081, i64 0, i64 %1083
  %1085 = load ptr, ptr %1084, align 8, !tbaa !5
  %1086 = load i32, ptr %16, align 4, !tbaa !9
  %1087 = sext i32 %1086 to i64
  %1088 = getelementptr inbounds ptr, ptr %1085, i64 %1087
  %1089 = load ptr, ptr %1088, align 8, !tbaa !5
  %1090 = load i32, ptr %11, align 4, !tbaa !9
  %1091 = load i32, ptr %28, align 4, !tbaa !9
  %1092 = add nsw i32 %1090, %1091
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds i8, ptr %1089, i64 %1093
  store i8 %1079, ptr %1094, align 1, !tbaa !15
  br label %1095

1095:                                             ; preds = %1063
  %1096 = load i32, ptr %28, align 4, !tbaa !9
  %1097 = add nsw i32 %1096, 1
  store i32 %1097, ptr %28, align 4, !tbaa !9
  br label %1058, !llvm.loop !27

1098:                                             ; preds = %1062
  br label %1099

1099:                                             ; preds = %1098, %1054
  br label %1100

1100:                                             ; preds = %1099, %1020
  br label %1101

1101:                                             ; preds = %1100, %999
  br label %1102

1102:                                             ; preds = %1101, %978
  br label %1103

1103:                                             ; preds = %1102, %968
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  br label %1104

1104:                                             ; preds = %1103
  %1105 = load i32, ptr %16, align 4, !tbaa !9
  %1106 = add nsw i32 %1105, 1
  store i32 %1106, ptr %16, align 4, !tbaa !9
  br label %777, !llvm.loop !28

1107:                                             ; preds = %790
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  %1108 = load ptr, ptr %4, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.MImage, ptr %1108, i32 0, i32 4
  %1110 = load ptr, ptr %1109, align 8, !tbaa !14
  %1111 = icmp eq ptr %1110, null
  br i1 %1111, label %1112, label %1113

1112:                                             ; preds = %1107
  br label %1127

1113:                                             ; preds = %1107
  %1114 = load ptr, ptr %4, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.MImage, ptr %1114, i32 0, i32 4
  %1116 = load ptr, ptr %1115, align 8, !tbaa !14
  %1117 = getelementptr inbounds %struct.MArray, ptr %1116, i32 0, i32 2
  %1118 = load ptr, ptr %1117, align 8, !tbaa !15
  %1119 = load i32, ptr %12, align 4, !tbaa !9
  %1120 = load i32, ptr %12, align 4, !tbaa !9
  %1121 = add nsw i32 %1119, %1120
  %1122 = add nsw i32 %1121, 4
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds i16, ptr %1118, i64 %1123
  %1125 = load i16, ptr %1124, align 2, !tbaa !16
  %1126 = sext i16 %1125 to i32
  br label %1127

1127:                                             ; preds = %1113, %1112
  %1128 = phi i32 [ 0, %1112 ], [ %1126, %1113 ]
  store i32 %1128, ptr %29, align 4, !tbaa !9
  %1129 = load ptr, ptr %4, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.MImage, ptr %1129, i32 0, i32 4
  %1131 = load ptr, ptr %1130, align 8, !tbaa !14
  %1132 = icmp eq ptr %1131, null
  br i1 %1132, label %1133, label %1137

1133:                                             ; preds = %1127
  %1134 = load ptr, ptr %4, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.MImage, ptr %1134, i32 0, i32 2
  %1136 = load i32, ptr %1135, align 8, !tbaa !13
  br label %1151

1137:                                             ; preds = %1127
  %1138 = load ptr, ptr %4, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.MImage, ptr %1138, i32 0, i32 4
  %1140 = load ptr, ptr %1139, align 8, !tbaa !14
  %1141 = getelementptr inbounds %struct.MArray, ptr %1140, i32 0, i32 2
  %1142 = load ptr, ptr %1141, align 8, !tbaa !15
  %1143 = load i32, ptr %12, align 4, !tbaa !9
  %1144 = load i32, ptr %12, align 4, !tbaa !9
  %1145 = add nsw i32 %1143, %1144
  %1146 = add nsw i32 %1145, 5
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds i16, ptr %1142, i64 %1147
  %1149 = load i16, ptr %1148, align 2, !tbaa !16
  %1150 = sext i16 %1149 to i32
  br label %1151

1151:                                             ; preds = %1137, %1133
  %1152 = phi i32 [ %1136, %1133 ], [ %1150, %1137 ]
  store i32 %1152, ptr %30, align 4, !tbaa !9
  %1153 = load i32, ptr %12, align 4, !tbaa !9
  %1154 = load i32, ptr %5, align 4, !tbaa !9
  %1155 = sub nsw i32 %1153, %1154
  store i32 %1155, ptr %16, align 4, !tbaa !9
  br label %1156

1156:                                             ; preds = %1316, %1151
  %1157 = load i32, ptr %16, align 4, !tbaa !9
  %1158 = icmp slt i32 %1157, 0
  br i1 %1158, label %1159, label %1319

1159:                                             ; preds = %1156
  %1160 = load i32, ptr %6, align 4, !tbaa !9
  %1161 = icmp eq i32 %1160, 0
  br i1 %1161, label %1162, label %1189

1162:                                             ; preds = %1159
  %1163 = load ptr, ptr %4, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.MImage, ptr %1163, i32 0, i32 3
  %1165 = load i32, ptr %14, align 4, !tbaa !9
  %1166 = sext i32 %1165 to i64
  %1167 = getelementptr inbounds [4 x ptr], ptr %1164, i64 0, i64 %1166
  %1168 = load ptr, ptr %1167, align 8, !tbaa !5
  %1169 = load i32, ptr %16, align 4, !tbaa !9
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds ptr, ptr %1168, i64 %1170
  %1172 = load ptr, ptr %1171, align 8, !tbaa !5
  %1173 = load i32, ptr %29, align 4, !tbaa !9
  %1174 = sext i32 %1173 to i64
  %1175 = getelementptr inbounds i8, ptr %1172, i64 %1174
  %1176 = load i32, ptr %5, align 4, !tbaa !9
  %1177 = sext i32 %1176 to i64
  %1178 = sub i64 0, %1177
  %1179 = getelementptr inbounds i8, ptr %1175, i64 %1178
  %1180 = load i32, ptr %30, align 4, !tbaa !9
  %1181 = load i32, ptr %29, align 4, !tbaa !9
  %1182 = sub nsw i32 %1180, %1181
  %1183 = load i32, ptr %5, align 4, !tbaa !9
  %1184 = add nsw i32 %1182, %1183
  %1185 = load i32, ptr %5, align 4, !tbaa !9
  %1186 = add nsw i32 %1184, %1185
  %1187 = sext i32 %1186 to i64
  %1188 = mul i64 %1187, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1179, i8 0, i64 %1188, i1 false)
  br label %1315

1189:                                             ; preds = %1159
  %1190 = load i32, ptr %6, align 4, !tbaa !9
  %1191 = icmp eq i32 %1190, 1
  br i1 %1191, label %1192, label %1219

1192:                                             ; preds = %1189
  %1193 = load ptr, ptr %4, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.MImage, ptr %1193, i32 0, i32 3
  %1195 = load i32, ptr %14, align 4, !tbaa !9
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds [4 x ptr], ptr %1194, i64 0, i64 %1196
  %1198 = load ptr, ptr %1197, align 8, !tbaa !5
  %1199 = load i32, ptr %16, align 4, !tbaa !9
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds ptr, ptr %1198, i64 %1200
  %1202 = load ptr, ptr %1201, align 8, !tbaa !5
  %1203 = load i32, ptr %29, align 4, !tbaa !9
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds i8, ptr %1202, i64 %1204
  %1206 = load i32, ptr %5, align 4, !tbaa !9
  %1207 = sext i32 %1206 to i64
  %1208 = sub i64 0, %1207
  %1209 = getelementptr inbounds i8, ptr %1205, i64 %1208
  %1210 = load i32, ptr %30, align 4, !tbaa !9
  %1211 = load i32, ptr %29, align 4, !tbaa !9
  %1212 = sub nsw i32 %1210, %1211
  %1213 = load i32, ptr %5, align 4, !tbaa !9
  %1214 = add nsw i32 %1212, %1213
  %1215 = load i32, ptr %5, align 4, !tbaa !9
  %1216 = add nsw i32 %1214, %1215
  %1217 = sext i32 %1216 to i64
  %1218 = mul i64 %1217, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1209, i8 -1, i64 %1218, i1 false)
  br label %1314

1219:                                             ; preds = %1189
  %1220 = load i32, ptr %6, align 4, !tbaa !9
  %1221 = icmp eq i32 %1220, 2
  br i1 %1221, label %1222, label %1264

1222:                                             ; preds = %1219
  %1223 = load ptr, ptr %4, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.MImage, ptr %1223, i32 0, i32 3
  %1225 = load i32, ptr %14, align 4, !tbaa !9
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds [4 x ptr], ptr %1224, i64 0, i64 %1226
  %1228 = load ptr, ptr %1227, align 8, !tbaa !5
  %1229 = load i32, ptr %16, 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 %29, align 4, !tbaa !9
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds i8, ptr %1232, i64 %1234
  %1236 = load i32, ptr %5, align 4, !tbaa !9
  %1237 = sext i32 %1236 to i64
  %1238 = sub i64 0, %1237
  %1239 = getelementptr inbounds i8, ptr %1235, i64 %1238
  %1240 = load ptr, ptr %4, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.MImage, ptr %1240, i32 0, i32 3
  %1242 = load i32, ptr %14, align 4, !tbaa !9
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds [4 x ptr], ptr %1241, i64 0, i64 %1243
  %1245 = load ptr, ptr %1244, align 8, !tbaa !5
  %1246 = getelementptr inbounds ptr, ptr %1245, i64 0
  %1247 = load ptr, ptr %1246, align 8, !tbaa !5
  %1248 = load i32, ptr %29, align 4, !tbaa !9
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds i8, ptr %1247, i64 %1249
  %1251 = load i32, ptr %5, align 4, !tbaa !9
  %1252 = sext i32 %1251 to i64
  %1253 = sub i64 0, %1252
  %1254 = getelementptr inbounds i8, ptr %1250, i64 %1253
  %1255 = load i32, ptr %30, align 4, !tbaa !9
  %1256 = load i32, ptr %29, align 4, !tbaa !9
  %1257 = sub nsw i32 %1255, %1256
  %1258 = load i32, ptr %5, align 4, !tbaa !9
  %1259 = add nsw i32 %1257, %1258
  %1260 = load i32, ptr %5, align 4, !tbaa !9
  %1261 = add nsw i32 %1259, %1260
  %1262 = sext i32 %1261 to i64
  %1263 = mul i64 %1262, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1239, ptr align 1 %1254, i64 %1263, i1 false)
  br label %1313

1264:                                             ; preds = %1219
  %1265 = load i32, ptr %6, align 4, !tbaa !9
  %1266 = icmp eq i32 %1265, 3
  br i1 %1266, label %1267, label %1312

1267:                                             ; preds = %1264
  %1268 = load ptr, ptr %4, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.MImage, ptr %1268, i32 0, i32 3
  %1270 = load i32, ptr %14, align 4, !tbaa !9
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds [4 x ptr], ptr %1269, i64 0, i64 %1271
  %1273 = load ptr, ptr %1272, align 8, !tbaa !5
  %1274 = load i32, ptr %16, align 4, !tbaa !9
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds ptr, ptr %1273, i64 %1275
  %1277 = load ptr, ptr %1276, align 8, !tbaa !5
  %1278 = load i32, ptr %29, align 4, !tbaa !9
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds i8, ptr %1277, i64 %1279
  %1281 = load i32, ptr %5, align 4, !tbaa !9
  %1282 = sext i32 %1281 to i64
  %1283 = sub i64 0, %1282
  %1284 = getelementptr inbounds i8, ptr %1280, i64 %1283
  %1285 = load ptr, ptr %4, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.MImage, ptr %1285, i32 0, i32 3
  %1287 = load i32, ptr %14, align 4, !tbaa !9
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds [4 x ptr], ptr %1286, i64 0, i64 %1288
  %1290 = load ptr, ptr %1289, align 8, !tbaa !5
  %1291 = load i32, ptr %16, align 4, !tbaa !9
  %1292 = sub nsw i32 0, %1291
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds ptr, ptr %1290, i64 %1293
  %1295 = load ptr, ptr %1294, align 8, !tbaa !5
  %1296 = load i32, ptr %29, align 4, !tbaa !9
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds i8, ptr %1295, i64 %1297
  %1299 = load i32, ptr %5, align 4, !tbaa !9
  %1300 = sext i32 %1299 to i64
  %1301 = sub i64 0, %1300
  %1302 = getelementptr inbounds i8, ptr %1298, i64 %1301
  %1303 = load i32, ptr %30, align 4, !tbaa !9
  %1304 = load i32, ptr %29, align 4, !tbaa !9
  %1305 = sub nsw i32 %1303, %1304
  %1306 = load i32, ptr %5, align 4, !tbaa !9
  %1307 = add nsw i32 %1305, %1306
  %1308 = load i32, ptr %5, align 4, !tbaa !9
  %1309 = add nsw i32 %1307, %1308
  %1310 = sext i32 %1309 to i64
  %1311 = mul i64 %1310, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1284, ptr align 1 %1302, i64 %1311, i1 false)
  br label %1312

1312:                                             ; preds = %1267, %1264
  br label %1313

1313:                                             ; preds = %1312, %1222
  br label %1314

1314:                                             ; preds = %1313, %1192
  br label %1315

1315:                                             ; preds = %1314, %1162
  br label %1316

1316:                                             ; preds = %1315
  %1317 = load i32, ptr %16, align 4, !tbaa !9
  %1318 = add nsw i32 %1317, 1
  store i32 %1318, ptr %16, align 4, !tbaa !9
  br label %1156, !llvm.loop !29

1319:                                             ; preds = %1156
  %1320 = load ptr, ptr %4, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.MImage, ptr %1320, i32 0, i32 4
  %1322 = load ptr, ptr %1321, align 8, !tbaa !14
  %1323 = icmp eq ptr %1322, null
  br i1 %1323, label %1324, label %1325

1324:                                             ; preds = %1319
  br label %1339

1325:                                             ; preds = %1319
  %1326 = load ptr, ptr %4, align 8, !tbaa !5
  %1327 = getelementptr inbounds %struct.MImage, ptr %1326, i32 0, i32 4
  %1328 = load ptr, ptr %1327, align 8, !tbaa !14
  %1329 = getelementptr inbounds %struct.MArray, ptr %1328, i32 0, i32 2
  %1330 = load ptr, ptr %1329, align 8, !tbaa !15
  %1331 = load i32, ptr %13, align 4, !tbaa !9
  %1332 = load i32, ptr %13, align 4, !tbaa !9
  %1333 = add nsw i32 %1331, %1332
  %1334 = add nsw i32 %1333, 4
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds i16, ptr %1330, i64 %1335
  %1337 = load i16, ptr %1336, align 2, !tbaa !16
  %1338 = sext i16 %1337 to i32
  br label %1339

1339:                                             ; preds = %1325, %1324
  %1340 = phi i32 [ 0, %1324 ], [ %1338, %1325 ]
  store i32 %1340, ptr %29, align 4, !tbaa !9
  %1341 = load ptr, ptr %4, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.MImage, ptr %1341, i32 0, i32 4
  %1343 = load ptr, ptr %1342, align 8, !tbaa !14
  %1344 = icmp eq ptr %1343, null
  br i1 %1344, label %1345, label %1349

1345:                                             ; preds = %1339
  %1346 = load ptr, ptr %4, align 8, !tbaa !5
  %1347 = getelementptr inbounds %struct.MImage, ptr %1346, i32 0, i32 2
  %1348 = load i32, ptr %1347, align 8, !tbaa !13
  br label %1363

1349:                                             ; preds = %1339
  %1350 = load ptr, ptr %4, align 8, !tbaa !5
  %1351 = getelementptr inbounds %struct.MImage, ptr %1350, i32 0, i32 4
  %1352 = load ptr, ptr %1351, align 8, !tbaa !14
  %1353 = getelementptr inbounds %struct.MArray, ptr %1352, i32 0, i32 2
  %1354 = load ptr, ptr %1353, align 8, !tbaa !15
  %1355 = load i32, ptr %13, align 4, !tbaa !9
  %1356 = load i32, ptr %13, align 4, !tbaa !9
  %1357 = add nsw i32 %1355, %1356
  %1358 = add nsw i32 %1357, 5
  %1359 = sext i32 %1358 to i64
  %1360 = getelementptr inbounds i16, ptr %1354, i64 %1359
  %1361 = load i16, ptr %1360, align 2, !tbaa !16
  %1362 = sext i16 %1361 to i32
  br label %1363

1363:                                             ; preds = %1349, %1345
  %1364 = phi i32 [ %1348, %1345 ], [ %1362, %1349 ]
  store i32 %1364, ptr %30, align 4, !tbaa !9
  %1365 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1365, ptr %16, align 4, !tbaa !9
  br label %1366

1366:                                             ; preds = %1537, %1363
  %1367 = load i32, ptr %16, align 4, !tbaa !9
  %1368 = load i32, ptr %13, align 4, !tbaa !9
  %1369 = load i32, ptr %5, align 4, !tbaa !9
  %1370 = add nsw i32 %1368, %1369
  %1371 = icmp sle i32 %1367, %1370
  br i1 %1371, label %1372, label %1540

1372:                                             ; preds = %1366
  %1373 = load i32, ptr %6, align 4, !tbaa !9
  %1374 = icmp eq i32 %1373, 0
  br i1 %1374, label %1375, label %1402

1375:                                             ; preds = %1372
  %1376 = load ptr, ptr %4, align 8, !tbaa !5
  %1377 = getelementptr inbounds %struct.MImage, ptr %1376, i32 0, i32 3
  %1378 = load i32, ptr %14, align 4, !tbaa !9
  %1379 = sext i32 %1378 to i64
  %1380 = getelementptr inbounds [4 x ptr], ptr %1377, i64 0, i64 %1379
  %1381 = load ptr, ptr %1380, align 8, !tbaa !5
  %1382 = load i32, ptr %16, align 4, !tbaa !9
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds ptr, ptr %1381, i64 %1383
  %1385 = load ptr, ptr %1384, align 8, !tbaa !5
  %1386 = load i32, ptr %29, align 4, !tbaa !9
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds i8, ptr %1385, i64 %1387
  %1389 = load i32, ptr %5, align 4, !tbaa !9
  %1390 = sext i32 %1389 to i64
  %1391 = sub i64 0, %1390
  %1392 = getelementptr inbounds i8, ptr %1388, i64 %1391
  %1393 = load i32, ptr %30, align 4, !tbaa !9
  %1394 = load i32, ptr %29, align 4, !tbaa !9
  %1395 = sub nsw i32 %1393, %1394
  %1396 = load i32, ptr %5, align 4, !tbaa !9
  %1397 = add nsw i32 %1395, %1396
  %1398 = load i32, ptr %5, align 4, !tbaa !9
  %1399 = add nsw i32 %1397, %1398
  %1400 = sext i32 %1399 to i64
  %1401 = mul i64 %1400, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1392, i8 0, i64 %1401, i1 false)
  br label %1536

1402:                                             ; preds = %1372
  %1403 = load i32, ptr %6, align 4, !tbaa !9
  %1404 = icmp eq i32 %1403, 1
  br i1 %1404, label %1405, label %1432

1405:                                             ; preds = %1402
  %1406 = load ptr, ptr %4, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.MImage, ptr %1406, i32 0, i32 3
  %1408 = load i32, ptr %14, align 4, !tbaa !9
  %1409 = sext i32 %1408 to i64
  %1410 = getelementptr inbounds [4 x ptr], ptr %1407, i64 0, i64 %1409
  %1411 = load ptr, ptr %1410, align 8, !tbaa !5
  %1412 = load i32, ptr %16, align 4, !tbaa !9
  %1413 = sext i32 %1412 to i64
  %1414 = getelementptr inbounds ptr, ptr %1411, i64 %1413
  %1415 = load ptr, ptr %1414, align 8, !tbaa !5
  %1416 = load i32, ptr %29, align 4, !tbaa !9
  %1417 = sext i32 %1416 to i64
  %1418 = getelementptr inbounds i8, ptr %1415, i64 %1417
  %1419 = load i32, ptr %5, align 4, !tbaa !9
  %1420 = sext i32 %1419 to i64
  %1421 = sub i64 0, %1420
  %1422 = getelementptr inbounds i8, ptr %1418, i64 %1421
  %1423 = load i32, ptr %30, align 4, !tbaa !9
  %1424 = load i32, ptr %29, align 4, !tbaa !9
  %1425 = sub nsw i32 %1423, %1424
  %1426 = load i32, ptr %5, align 4, !tbaa !9
  %1427 = add nsw i32 %1425, %1426
  %1428 = load i32, ptr %5, align 4, !tbaa !9
  %1429 = add nsw i32 %1427, %1428
  %1430 = sext i32 %1429 to i64
  %1431 = mul i64 %1430, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1422, i8 -1, i64 %1431, i1 false)
  br label %1535

1432:                                             ; preds = %1402
  %1433 = load i32, ptr %6, align 4, !tbaa !9
  %1434 = icmp eq i32 %1433, 2
  br i1 %1434, label %1435, label %1480

1435:                                             ; preds = %1432
  %1436 = load ptr, ptr %4, align 8, !tbaa !5
  %1437 = getelementptr inbounds %struct.MImage, ptr %1436, i32 0, i32 3
  %1438 = load i32, ptr %14, align 4, !tbaa !9
  %1439 = sext i32 %1438 to i64
  %1440 = getelementptr inbounds [4 x ptr], ptr %1437, i64 0, i64 %1439
  %1441 = load ptr, ptr %1440, align 8, !tbaa !5
  %1442 = load i32, ptr %16, align 4, !tbaa !9
  %1443 = sext i32 %1442 to i64
  %1444 = getelementptr inbounds ptr, ptr %1441, i64 %1443
  %1445 = load ptr, ptr %1444, align 8, !tbaa !5
  %1446 = load i32, ptr %29, align 4, !tbaa !9
  %1447 = sext i32 %1446 to i64
  %1448 = getelementptr inbounds i8, ptr %1445, i64 %1447
  %1449 = load i32, ptr %5, align 4, !tbaa !9
  %1450 = sext i32 %1449 to i64
  %1451 = sub i64 0, %1450
  %1452 = getelementptr inbounds i8, ptr %1448, i64 %1451
  %1453 = load ptr, ptr %4, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.MImage, ptr %1453, i32 0, i32 3
  %1455 = load i32, ptr %14, align 4, !tbaa !9
  %1456 = sext i32 %1455 to i64
  %1457 = getelementptr inbounds [4 x ptr], ptr %1454, i64 0, i64 %1456
  %1458 = load ptr, ptr %1457, align 8, !tbaa !5
  %1459 = load i32, ptr %10, align 4, !tbaa !9
  %1460 = sub nsw i32 %1459, 1
  %1461 = sext i32 %1460 to i64
  %1462 = getelementptr inbounds ptr, ptr %1458, i64 %1461
  %1463 = load ptr, ptr %1462, align 8, !tbaa !5
  %1464 = load i32, ptr %29, align 4, !tbaa !9
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds i8, ptr %1463, i64 %1465
  %1467 = load i32, ptr %5, align 4, !tbaa !9
  %1468 = sext i32 %1467 to i64
  %1469 = sub i64 0, %1468
  %1470 = getelementptr inbounds i8, ptr %1466, i64 %1469
  %1471 = load i32, ptr %30, align 4, !tbaa !9
  %1472 = load i32, ptr %29, align 4, !tbaa !9
  %1473 = sub nsw i32 %1471, %1472
  %1474 = load i32, ptr %5, align 4, !tbaa !9
  %1475 = add nsw i32 %1473, %1474
  %1476 = load i32, ptr %5, align 4, !tbaa !9
  %1477 = add nsw i32 %1475, %1476
  %1478 = sext i32 %1477 to i64
  %1479 = mul i64 %1478, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1452, ptr align 1 %1470, i64 %1479, i1 false)
  br label %1534

1480:                                             ; preds = %1432
  %1481 = load i32, ptr %6, align 4, !tbaa !9
  %1482 = icmp eq i32 %1481, 3
  br i1 %1482, label %1483, label %1533

1483:                                             ; preds = %1480
  %1484 = load ptr, ptr %4, align 8, !tbaa !5
  %1485 = getelementptr inbounds %struct.MImage, ptr %1484, i32 0, i32 3
  %1486 = load i32, ptr %14, align 4, !tbaa !9
  %1487 = sext i32 %1486 to i64
  %1488 = getelementptr inbounds [4 x ptr], ptr %1485, i64 0, i64 %1487
  %1489 = load ptr, ptr %1488, align 8, !tbaa !5
  %1490 = load i32, ptr %16, 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 %29, align 4, !tbaa !9
  %1495 = sext i32 %1494 to i64
  %1496 = getelementptr inbounds i8, ptr %1493, i64 %1495
  %1497 = load i32, ptr %5, align 4, !tbaa !9
  %1498 = sext i32 %1497 to i64
  %1499 = sub i64 0, %1498
  %1500 = getelementptr inbounds i8, ptr %1496, i64 %1499
  %1501 = load ptr, ptr %4, align 8, !tbaa !5
  %1502 = getelementptr inbounds %struct.MImage, ptr %1501, i32 0, i32 3
  %1503 = load i32, ptr %14, align 4, !tbaa !9
  %1504 = sext i32 %1503 to i64
  %1505 = getelementptr inbounds [4 x ptr], ptr %1502, i64 0, i64 %1504
  %1506 = load ptr, ptr %1505, align 8, !tbaa !5
  %1507 = load i32, ptr %10, align 4, !tbaa !9
  %1508 = sub nsw i32 %1507, 1
  %1509 = load i32, ptr %10, align 4, !tbaa !9
  %1510 = sub nsw i32 %1509, 1
  %1511 = add nsw i32 %1508, %1510
  %1512 = load i32, ptr %16, align 4, !tbaa !9
  %1513 = sub nsw i32 %1511, %1512
  %1514 = sext i32 %1513 to i64
  %1515 = getelementptr inbounds ptr, ptr %1506, i64 %1514
  %1516 = load ptr, ptr %1515, align 8, !tbaa !5
  %1517 = load i32, ptr %29, align 4, !tbaa !9
  %1518 = sext i32 %1517 to i64
  %1519 = getelementptr inbounds i8, ptr %1516, i64 %1518
  %1520 = load i32, ptr %5, align 4, !tbaa !9
  %1521 = sext i32 %1520 to i64
  %1522 = sub i64 0, %1521
  %1523 = getelementptr inbounds i8, ptr %1519, i64 %1522
  %1524 = load i32, ptr %30, align 4, !tbaa !9
  %1525 = load i32, ptr %29, align 4, !tbaa !9
  %1526 = sub nsw i32 %1524, %1525
  %1527 = load i32, ptr %5, align 4, !tbaa !9
  %1528 = add nsw i32 %1526, %1527
  %1529 = load i32, ptr %5, align 4, !tbaa !9
  %1530 = add nsw i32 %1528, %1529
  %1531 = sext i32 %1530 to i64
  %1532 = mul i64 %1531, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1500, ptr align 1 %1523, i64 %1532, i1 false)
  br label %1533

1533:                                             ; preds = %1483, %1480
  br label %1534

1534:                                             ; preds = %1533, %1435
  br label %1535

1535:                                             ; preds = %1534, %1405
  br label %1536

1536:                                             ; preds = %1535, %1375
  br label %1537

1537:                                             ; preds = %1536
  %1538 = load i32, ptr %16, align 4, !tbaa !9
  %1539 = add nsw i32 %1538, 1
  store i32 %1539, ptr %16, align 4, !tbaa !9
  br label %1366, !llvm.loop !30

1540:                                             ; preds = %1366
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %1541

1541:                                             ; preds = %1540
  %1542 = load i32, ptr %14, align 4, !tbaa !9
  %1543 = add nsw i32 %1542, 1
  store i32 %1543, ptr %14, align 4, !tbaa !9
  br label %117, !llvm.loop !31

1544:                                             ; preds = %123
  store i32 1, ptr %15, align 4
  br label %2318

1545:                                             ; preds = %110
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %1546

1546:                                             ; preds = %2312, %1545
  %1547 = load i32, ptr %31, align 4, !tbaa !9
  %1548 = load ptr, ptr %4, align 8, !tbaa !5
  %1549 = getelementptr inbounds %struct.MImage, ptr %1548, i32 0, i32 0
  %1550 = load i32, ptr %1549, align 8, !tbaa !18
  %1551 = icmp slt i32 %1547, %1550
  br i1 %1551, label %1553, label %1552

1552:                                             ; preds = %1546
  store i32 42, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  br label %2315

1553:                                             ; preds = %1546
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  %1554 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %1554, ptr %32, align 4, !tbaa !9
  br label %1555

1555:                                             ; preds = %1869, %1553
  %1556 = load i32, ptr %32, align 4, !tbaa !9
  %1557 = load i32, ptr %13, align 4, !tbaa !9
  %1558 = icmp sle i32 %1556, %1557
  br i1 %1558, label %1559, label %1872

1559:                                             ; preds = %1555
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  %1560 = load ptr, ptr %4, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.MImage, ptr %1560, i32 0, i32 4
  %1562 = load ptr, ptr %1561, align 8, !tbaa !14
  %1563 = icmp eq ptr %1562, null
  br i1 %1563, label %1564, label %1565

1564:                                             ; preds = %1559
  br label %1579

1565:                                             ; preds = %1559
  %1566 = load ptr, ptr %4, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.MImage, ptr %1566, i32 0, i32 4
  %1568 = load ptr, ptr %1567, align 8, !tbaa !14
  %1569 = getelementptr inbounds %struct.MArray, ptr %1568, i32 0, i32 2
  %1570 = load ptr, ptr %1569, align 8, !tbaa !15
  %1571 = load i32, ptr %32, align 4, !tbaa !9
  %1572 = load i32, ptr %32, align 4, !tbaa !9
  %1573 = add nsw i32 %1571, %1572
  %1574 = add nsw i32 %1573, 4
  %1575 = sext i32 %1574 to i64
  %1576 = getelementptr inbounds i16, ptr %1570, i64 %1575
  %1577 = load i16, ptr %1576, align 2, !tbaa !16
  %1578 = sext i16 %1577 to i32
  br label %1579

1579:                                             ; preds = %1565, %1564
  %1580 = phi i32 [ 0, %1564 ], [ %1578, %1565 ]
  store i32 %1580, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  %1581 = load ptr, ptr %4, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.MImage, ptr %1581, i32 0, i32 4
  %1583 = load ptr, ptr %1582, align 8, !tbaa !14
  %1584 = icmp eq ptr %1583, null
  br i1 %1584, label %1585, label %1589

1585:                                             ; preds = %1579
  %1586 = load ptr, ptr %4, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.MImage, ptr %1586, i32 0, i32 2
  %1588 = load i32, ptr %1587, align 8, !tbaa !13
  br label %1603

1589:                                             ; preds = %1579
  %1590 = load ptr, ptr %4, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.MImage, ptr %1590, i32 0, i32 4
  %1592 = load ptr, ptr %1591, align 8, !tbaa !14
  %1593 = getelementptr inbounds %struct.MArray, ptr %1592, i32 0, i32 2
  %1594 = load ptr, ptr %1593, align 8, !tbaa !15
  %1595 = load i32, ptr %32, align 4, !tbaa !9
  %1596 = load i32, ptr %32, align 4, !tbaa !9
  %1597 = add nsw i32 %1595, %1596
  %1598 = add nsw i32 %1597, 5
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds i16, ptr %1594, i64 %1599
  %1601 = load i16, ptr %1600, align 2, !tbaa !16
  %1602 = sext i16 %1601 to i32
  br label %1603

1603:                                             ; preds = %1589, %1585
  %1604 = phi i32 [ %1588, %1585 ], [ %1602, %1589 ]
  %1605 = sub nsw i32 %1604, 1
  store i32 %1605, ptr %34, align 4, !tbaa !9
  %1606 = load i32, ptr %6, align 4, !tbaa !9
  %1607 = icmp eq i32 %1606, 0
  br i1 %1607, label %1608, label %1629

1608:                                             ; preds = %1603
  %1609 = load ptr, ptr %4, align 8, !tbaa !5
  %1610 = getelementptr inbounds %struct.MImage, ptr %1609, i32 0, i32 3
  %1611 = load i32, ptr %31, align 4, !tbaa !9
  %1612 = sext i32 %1611 to i64
  %1613 = getelementptr inbounds [4 x ptr], ptr %1610, i64 0, i64 %1612
  %1614 = load ptr, ptr %1613, align 8, !tbaa !5
  %1615 = load i32, ptr %32, align 4, !tbaa !9
  %1616 = sext i32 %1615 to i64
  %1617 = getelementptr inbounds ptr, ptr %1614, i64 %1616
  %1618 = load ptr, ptr %1617, align 8, !tbaa !5
  %1619 = load i32, ptr %33, align 4, !tbaa !9
  %1620 = sext i32 %1619 to i64
  %1621 = getelementptr inbounds i8, ptr %1618, i64 %1620
  %1622 = load i32, ptr %5, align 4, !tbaa !9
  %1623 = sext i32 %1622 to i64
  %1624 = sub i64 0, %1623
  %1625 = getelementptr inbounds i8, ptr %1621, i64 %1624
  %1626 = load i32, ptr %5, align 4, !tbaa !9
  %1627 = sext i32 %1626 to i64
  %1628 = mul i64 %1627, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1625, i8 0, i64 %1628, i1 false)
  br label %1741

1629:                                             ; preds = %1603
  %1630 = load i32, ptr %6, align 4, !tbaa !9
  %1631 = icmp eq i32 %1630, 1
  br i1 %1631, label %1632, label %1653

1632:                                             ; preds = %1629
  %1633 = load ptr, ptr %4, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.MImage, ptr %1633, i32 0, i32 3
  %1635 = load i32, ptr %31, align 4, !tbaa !9
  %1636 = sext i32 %1635 to i64
  %1637 = getelementptr inbounds [4 x ptr], ptr %1634, i64 0, i64 %1636
  %1638 = load ptr, ptr %1637, align 8, !tbaa !5
  %1639 = load i32, ptr %32, align 4, !tbaa !9
  %1640 = sext i32 %1639 to i64
  %1641 = getelementptr inbounds ptr, ptr %1638, i64 %1640
  %1642 = load ptr, ptr %1641, align 8, !tbaa !5
  %1643 = load i32, ptr %33, align 4, !tbaa !9
  %1644 = sext i32 %1643 to i64
  %1645 = getelementptr inbounds i8, ptr %1642, i64 %1644
  %1646 = load i32, ptr %5, align 4, !tbaa !9
  %1647 = sext i32 %1646 to i64
  %1648 = sub i64 0, %1647
  %1649 = getelementptr inbounds i8, ptr %1645, i64 %1648
  %1650 = load i32, ptr %5, align 4, !tbaa !9
  %1651 = sext i32 %1650 to i64
  %1652 = mul i64 %1651, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1649, i8 -1, i64 %1652, i1 false)
  br label %1740

1653:                                             ; preds = %1629
  %1654 = load i32, ptr %6, align 4, !tbaa !9
  %1655 = icmp eq i32 %1654, 2
  br i1 %1655, label %1656, label %1693

1656:                                             ; preds = %1653
  %1657 = load ptr, ptr %4, align 8, !tbaa !5
  %1658 = getelementptr inbounds %struct.MImage, ptr %1657, i32 0, i32 3
  %1659 = load i32, ptr %31, align 4, !tbaa !9
  %1660 = sext i32 %1659 to i64
  %1661 = getelementptr inbounds [4 x ptr], ptr %1658, i64 0, i64 %1660
  %1662 = load ptr, ptr %1661, align 8, !tbaa !5
  %1663 = load i32, ptr %32, align 4, !tbaa !9
  %1664 = sext i32 %1663 to i64
  %1665 = getelementptr inbounds ptr, ptr %1662, i64 %1664
  %1666 = load ptr, ptr %1665, align 8, !tbaa !5
  %1667 = load i32, ptr %33, align 4, !tbaa !9
  %1668 = sext i32 %1667 to i64
  %1669 = getelementptr inbounds i8, ptr %1666, i64 %1668
  %1670 = load i32, ptr %5, align 4, !tbaa !9
  %1671 = sext i32 %1670 to i64
  %1672 = sub i64 0, %1671
  %1673 = getelementptr inbounds i8, ptr %1669, i64 %1672
  %1674 = load ptr, ptr %4, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.MImage, ptr %1674, i32 0, i32 3
  %1676 = load i32, ptr %31, align 4, !tbaa !9
  %1677 = sext i32 %1676 to i64
  %1678 = getelementptr inbounds [4 x ptr], ptr %1675, i64 0, i64 %1677
  %1679 = load ptr, ptr %1678, align 8, !tbaa !5
  %1680 = load i32, ptr %32, align 4, !tbaa !9
  %1681 = sext i32 %1680 to i64
  %1682 = getelementptr inbounds ptr, ptr %1679, i64 %1681
  %1683 = load ptr, ptr %1682, align 8, !tbaa !5
  %1684 = load i32, ptr %33, align 4, !tbaa !9
  %1685 = sext i32 %1684 to i64
  %1686 = getelementptr inbounds i8, ptr %1683, i64 %1685
  %1687 = load i8, ptr %1686, align 1, !tbaa !15
  %1688 = zext i8 %1687 to i32
  %1689 = trunc i32 %1688 to i8
  %1690 = load i32, ptr %5, align 4, !tbaa !9
  %1691 = sext i32 %1690 to i64
  %1692 = mul i64 %1691, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1673, i8 %1689, i64 %1692, i1 false)
  br label %1739

1693:                                             ; preds = %1653
  %1694 = load i32, ptr %6, align 4, !tbaa !9
  %1695 = icmp eq i32 %1694, 3
  br i1 %1695, label %1696, label %1738

1696:                                             ; preds = %1693
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %1697

1697:                                             ; preds = %1734, %1696
  %1698 = load i32, ptr %35, align 4, !tbaa !9
  %1699 = load i32, ptr %5, align 4, !tbaa !9
  %1700 = icmp sle i32 %1698, %1699
  br i1 %1700, label %1702, label %1701

1701:                                             ; preds = %1697
  store i32 48, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  br label %1737

1702:                                             ; preds = %1697
  %1703 = load ptr, ptr %4, align 8, !tbaa !5
  %1704 = getelementptr inbounds %struct.MImage, ptr %1703, i32 0, i32 3
  %1705 = load i32, ptr %31, align 4, !tbaa !9
  %1706 = sext i32 %1705 to i64
  %1707 = getelementptr inbounds [4 x ptr], ptr %1704, i64 0, i64 %1706
  %1708 = load ptr, ptr %1707, align 8, !tbaa !5
  %1709 = load i32, ptr %32, align 4, !tbaa !9
  %1710 = sext i32 %1709 to i64
  %1711 = getelementptr inbounds ptr, ptr %1708, i64 %1710
  %1712 = load ptr, ptr %1711, align 8, !tbaa !5
  %1713 = load i32, ptr %33, align 4, !tbaa !9
  %1714 = load i32, ptr %35, align 4, !tbaa !9
  %1715 = add nsw i32 %1713, %1714
  %1716 = sext i32 %1715 to i64
  %1717 = getelementptr inbounds i8, ptr %1712, i64 %1716
  %1718 = load i8, ptr %1717, align 1, !tbaa !15
  %1719 = load ptr, ptr %4, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.MImage, ptr %1719, i32 0, i32 3
  %1721 = load i32, ptr %31, align 4, !tbaa !9
  %1722 = sext i32 %1721 to i64
  %1723 = getelementptr inbounds [4 x ptr], ptr %1720, i64 0, i64 %1722
  %1724 = load ptr, ptr %1723, align 8, !tbaa !5
  %1725 = load i32, ptr %32, align 4, !tbaa !9
  %1726 = sext i32 %1725 to i64
  %1727 = getelementptr inbounds ptr, ptr %1724, i64 %1726
  %1728 = load ptr, ptr %1727, align 8, !tbaa !5
  %1729 = load i32, ptr %33, align 4, !tbaa !9
  %1730 = load i32, ptr %35, align 4, !tbaa !9
  %1731 = sub nsw i32 %1729, %1730
  %1732 = sext i32 %1731 to i64
  %1733 = getelementptr inbounds i8, ptr %1728, i64 %1732
  store i8 %1718, ptr %1733, align 1, !tbaa !15
  br label %1734

1734:                                             ; preds = %1702
  %1735 = load i32, ptr %35, align 4, !tbaa !9
  %1736 = add nsw i32 %1735, 1
  store i32 %1736, ptr %35, align 4, !tbaa !9
  br label %1697, !llvm.loop !32

1737:                                             ; preds = %1701
  br label %1738

1738:                                             ; preds = %1737, %1693
  br label %1739

1739:                                             ; preds = %1738, %1656
  br label %1740

1740:                                             ; preds = %1739, %1632
  br label %1741

1741:                                             ; preds = %1740, %1608
  %1742 = load i32, ptr %6, align 4, !tbaa !9
  %1743 = icmp eq i32 %1742, 0
  br i1 %1743, label %1744, label %1762

1744:                                             ; preds = %1741
  %1745 = load ptr, ptr %4, align 8, !tbaa !5
  %1746 = getelementptr inbounds %struct.MImage, ptr %1745, i32 0, i32 3
  %1747 = load i32, ptr %31, align 4, !tbaa !9
  %1748 = sext i32 %1747 to i64
  %1749 = getelementptr inbounds [4 x ptr], ptr %1746, i64 0, i64 %1748
  %1750 = load ptr, ptr %1749, align 8, !tbaa !5
  %1751 = load i32, ptr %32, align 4, !tbaa !9
  %1752 = sext i32 %1751 to i64
  %1753 = getelementptr inbounds ptr, ptr %1750, i64 %1752
  %1754 = load ptr, ptr %1753, align 8, !tbaa !5
  %1755 = load i32, ptr %34, align 4, !tbaa !9
  %1756 = sext i32 %1755 to i64
  %1757 = getelementptr inbounds i8, ptr %1754, i64 %1756
  %1758 = getelementptr inbounds i8, ptr %1757, i64 1
  %1759 = load i32, ptr %5, align 4, !tbaa !9
  %1760 = sext i32 %1759 to i64
  %1761 = mul i64 %1760, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1758, i8 0, i64 %1761, i1 false)
  br label %1868

1762:                                             ; preds = %1741
  %1763 = load i32, ptr %6, align 4, !tbaa !9
  %1764 = icmp eq i32 %1763, 1
  br i1 %1764, label %1765, label %1783

1765:                                             ; preds = %1762
  %1766 = load ptr, ptr %4, align 8, !tbaa !5
  %1767 = getelementptr inbounds %struct.MImage, ptr %1766, i32 0, i32 3
  %1768 = load i32, ptr %31, align 4, !tbaa !9
  %1769 = sext i32 %1768 to i64
  %1770 = getelementptr inbounds [4 x ptr], ptr %1767, i64 0, i64 %1769
  %1771 = load ptr, ptr %1770, align 8, !tbaa !5
  %1772 = load i32, ptr %32, align 4, !tbaa !9
  %1773 = sext i32 %1772 to i64
  %1774 = getelementptr inbounds ptr, ptr %1771, i64 %1773
  %1775 = load ptr, ptr %1774, align 8, !tbaa !5
  %1776 = load i32, ptr %34, align 4, !tbaa !9
  %1777 = sext i32 %1776 to i64
  %1778 = getelementptr inbounds i8, ptr %1775, i64 %1777
  %1779 = getelementptr inbounds i8, ptr %1778, i64 1
  %1780 = load i32, ptr %5, align 4, !tbaa !9
  %1781 = sext i32 %1780 to i64
  %1782 = mul i64 %1781, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1779, i8 -1, i64 %1782, i1 false)
  br label %1867

1783:                                             ; preds = %1762
  %1784 = load i32, ptr %6, align 4, !tbaa !9
  %1785 = icmp eq i32 %1784, 2
  br i1 %1785, label %1786, label %1820

1786:                                             ; preds = %1783
  %1787 = load ptr, ptr %4, align 8, !tbaa !5
  %1788 = getelementptr inbounds %struct.MImage, ptr %1787, i32 0, i32 3
  %1789 = load i32, ptr %31, align 4, !tbaa !9
  %1790 = sext i32 %1789 to i64
  %1791 = getelementptr inbounds [4 x ptr], ptr %1788, i64 0, i64 %1790
  %1792 = load ptr, ptr %1791, align 8, !tbaa !5
  %1793 = load i32, ptr %32, align 4, !tbaa !9
  %1794 = sext i32 %1793 to i64
  %1795 = getelementptr inbounds ptr, ptr %1792, i64 %1794
  %1796 = load ptr, ptr %1795, align 8, !tbaa !5
  %1797 = load i32, ptr %34, align 4, !tbaa !9
  %1798 = sext i32 %1797 to i64
  %1799 = getelementptr inbounds i8, ptr %1796, i64 %1798
  %1800 = getelementptr inbounds i8, ptr %1799, i64 1
  %1801 = load ptr, ptr %4, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.MImage, ptr %1801, i32 0, i32 3
  %1803 = load i32, ptr %31, align 4, !tbaa !9
  %1804 = sext i32 %1803 to i64
  %1805 = getelementptr inbounds [4 x ptr], ptr %1802, i64 0, i64 %1804
  %1806 = load ptr, ptr %1805, align 8, !tbaa !5
  %1807 = load i32, ptr %32, align 4, !tbaa !9
  %1808 = sext i32 %1807 to i64
  %1809 = getelementptr inbounds ptr, ptr %1806, i64 %1808
  %1810 = load ptr, ptr %1809, align 8, !tbaa !5
  %1811 = load i32, ptr %34, align 4, !tbaa !9
  %1812 = sext i32 %1811 to i64
  %1813 = getelementptr inbounds i8, ptr %1810, i64 %1812
  %1814 = load i8, ptr %1813, align 1, !tbaa !15
  %1815 = zext i8 %1814 to i32
  %1816 = trunc i32 %1815 to i8
  %1817 = load i32, ptr %5, align 4, !tbaa !9
  %1818 = sext i32 %1817 to i64
  %1819 = mul i64 %1818, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1800, i8 %1816, i64 %1819, i1 false)
  br label %1866

1820:                                             ; preds = %1783
  %1821 = load i32, ptr %6, align 4, !tbaa !9
  %1822 = icmp eq i32 %1821, 3
  br i1 %1822, label %1823, label %1865

1823:                                             ; preds = %1820
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %1824

1824:                                             ; preds = %1861, %1823
  %1825 = load i32, ptr %36, align 4, !tbaa !9
  %1826 = load i32, ptr %5, align 4, !tbaa !9
  %1827 = icmp sle i32 %1825, %1826
  br i1 %1827, label %1829, label %1828

1828:                                             ; preds = %1824
  store i32 51, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  br label %1864

1829:                                             ; preds = %1824
  %1830 = load ptr, ptr %4, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct.MImage, ptr %1830, i32 0, i32 3
  %1832 = load i32, ptr %31, align 4, !tbaa !9
  %1833 = sext i32 %1832 to i64
  %1834 = getelementptr inbounds [4 x ptr], ptr %1831, i64 0, i64 %1833
  %1835 = load ptr, ptr %1834, align 8, !tbaa !5
  %1836 = load i32, ptr %32, align 4, !tbaa !9
  %1837 = sext i32 %1836 to i64
  %1838 = getelementptr inbounds ptr, ptr %1835, i64 %1837
  %1839 = load ptr, ptr %1838, align 8, !tbaa !5
  %1840 = load i32, ptr %34, align 4, !tbaa !9
  %1841 = load i32, ptr %36, align 4, !tbaa !9
  %1842 = sub nsw i32 %1840, %1841
  %1843 = sext i32 %1842 to i64
  %1844 = getelementptr inbounds i8, ptr %1839, i64 %1843
  %1845 = load i8, ptr %1844, align 1, !tbaa !15
  %1846 = load ptr, ptr %4, align 8, !tbaa !5
  %1847 = getelementptr inbounds %struct.MImage, ptr %1846, i32 0, i32 3
  %1848 = load i32, ptr %31, align 4, !tbaa !9
  %1849 = sext i32 %1848 to i64
  %1850 = getelementptr inbounds [4 x ptr], ptr %1847, i64 0, i64 %1849
  %1851 = load ptr, ptr %1850, align 8, !tbaa !5
  %1852 = load i32, ptr %32, align 4, !tbaa !9
  %1853 = sext i32 %1852 to i64
  %1854 = getelementptr inbounds ptr, ptr %1851, i64 %1853
  %1855 = load ptr, ptr %1854, align 8, !tbaa !5
  %1856 = load i32, ptr %34, align 4, !tbaa !9
  %1857 = load i32, ptr %36, align 4, !tbaa !9
  %1858 = add nsw i32 %1856, %1857
  %1859 = sext i32 %1858 to i64
  %1860 = getelementptr inbounds i8, ptr %1855, i64 %1859
  store i8 %1845, ptr %1860, align 1, !tbaa !15
  br label %1861

1861:                                             ; preds = %1829
  %1862 = load i32, ptr %36, align 4, !tbaa !9
  %1863 = add nsw i32 %1862, 1
  store i32 %1863, ptr %36, align 4, !tbaa !9
  br label %1824, !llvm.loop !33

1864:                                             ; preds = %1828
  br label %1865

1865:                                             ; preds = %1864, %1820
  br label %1866

1866:                                             ; preds = %1865, %1786
  br label %1867

1867:                                             ; preds = %1866, %1765
  br label %1868

1868:                                             ; preds = %1867, %1744
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  br label %1869

1869:                                             ; preds = %1868
  %1870 = load i32, ptr %32, align 4, !tbaa !9
  %1871 = add nsw i32 %1870, 1
  store i32 %1871, ptr %32, align 4, !tbaa !9
  br label %1555, !llvm.loop !34

1872:                                             ; preds = %1555
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  %1873 = load ptr, ptr %4, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.MImage, ptr %1873, i32 0, i32 4
  %1875 = load ptr, ptr %1874, align 8, !tbaa !14
  %1876 = icmp eq ptr %1875, null
  br i1 %1876, label %1877, label %1878

1877:                                             ; preds = %1872
  br label %1892

1878:                                             ; preds = %1872
  %1879 = load ptr, ptr %4, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.MImage, ptr %1879, i32 0, i32 4
  %1881 = load ptr, ptr %1880, align 8, !tbaa !14
  %1882 = getelementptr inbounds %struct.MArray, ptr %1881, i32 0, i32 2
  %1883 = load ptr, ptr %1882, align 8, !tbaa !15
  %1884 = load i32, ptr %12, align 4, !tbaa !9
  %1885 = load i32, ptr %12, align 4, !tbaa !9
  %1886 = add nsw i32 %1884, %1885
  %1887 = add nsw i32 %1886, 4
  %1888 = sext i32 %1887 to i64
  %1889 = getelementptr inbounds i16, ptr %1883, i64 %1888
  %1890 = load i16, ptr %1889, align 2, !tbaa !16
  %1891 = sext i16 %1890 to i32
  br label %1892

1892:                                             ; preds = %1878, %1877
  %1893 = phi i32 [ 0, %1877 ], [ %1891, %1878 ]
  store i32 %1893, ptr %37, align 4, !tbaa !9
  %1894 = load ptr, ptr %4, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.MImage, ptr %1894, i32 0, i32 4
  %1896 = load ptr, ptr %1895, align 8, !tbaa !14
  %1897 = icmp eq ptr %1896, null
  br i1 %1897, label %1898, label %1902

1898:                                             ; preds = %1892
  %1899 = load ptr, ptr %4, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.MImage, ptr %1899, i32 0, i32 2
  %1901 = load i32, ptr %1900, align 8, !tbaa !13
  br label %1916

1902:                                             ; preds = %1892
  %1903 = load ptr, ptr %4, align 8, !tbaa !5
  %1904 = getelementptr inbounds %struct.MImage, ptr %1903, i32 0, i32 4
  %1905 = load ptr, ptr %1904, align 8, !tbaa !14
  %1906 = getelementptr inbounds %struct.MArray, ptr %1905, i32 0, i32 2
  %1907 = load ptr, ptr %1906, align 8, !tbaa !15
  %1908 = load i32, ptr %12, align 4, !tbaa !9
  %1909 = load i32, ptr %12, align 4, !tbaa !9
  %1910 = add nsw i32 %1908, %1909
  %1911 = add nsw i32 %1910, 5
  %1912 = sext i32 %1911 to i64
  %1913 = getelementptr inbounds i16, ptr %1907, i64 %1912
  %1914 = load i16, ptr %1913, align 2, !tbaa !16
  %1915 = sext i16 %1914 to i32
  br label %1916

1916:                                             ; preds = %1902, %1898
  %1917 = phi i32 [ %1901, %1898 ], [ %1915, %1902 ]
  %1918 = sub nsw i32 %1917, 1
  store i32 %1918, ptr %38, align 4, !tbaa !9
  %1919 = load i32, ptr %12, align 4, !tbaa !9
  %1920 = load i32, ptr %5, align 4, !tbaa !9
  %1921 = sub nsw i32 %1919, %1920
  store i32 %1921, ptr %32, align 4, !tbaa !9
  br label %1922

1922:                                             ; preds = %2088, %1916
  %1923 = load i32, ptr %32, align 4, !tbaa !9
  %1924 = load i32, ptr %12, align 4, !tbaa !9
  %1925 = icmp slt i32 %1923, %1924
  br i1 %1925, label %1926, label %2091

1926:                                             ; preds = %1922
  %1927 = load i32, ptr %6, align 4, !tbaa !9
  %1928 = icmp eq i32 %1927, 0
  br i1 %1928, label %1929, label %1956

1929:                                             ; preds = %1926
  %1930 = load ptr, ptr %4, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.MImage, ptr %1930, i32 0, i32 3
  %1932 = load i32, ptr %31, align 4, !tbaa !9
  %1933 = sext i32 %1932 to i64
  %1934 = getelementptr inbounds [4 x ptr], ptr %1931, i64 0, i64 %1933
  %1935 = load ptr, ptr %1934, align 8, !tbaa !5
  %1936 = load i32, ptr %32, align 4, !tbaa !9
  %1937 = sext i32 %1936 to i64
  %1938 = getelementptr inbounds ptr, ptr %1935, i64 %1937
  %1939 = load ptr, ptr %1938, align 8, !tbaa !5
  %1940 = load i32, ptr %37, align 4, !tbaa !9
  %1941 = sext i32 %1940 to i64
  %1942 = getelementptr inbounds i8, ptr %1939, i64 %1941
  %1943 = load i32, ptr %5, align 4, !tbaa !9
  %1944 = sext i32 %1943 to i64
  %1945 = sub i64 0, %1944
  %1946 = getelementptr inbounds i8, ptr %1942, i64 %1945
  %1947 = load i32, ptr %38, align 4, !tbaa !9
  %1948 = load i32, ptr %37, align 4, !tbaa !9
  %1949 = sub nsw i32 %1947, %1948
  %1950 = load i32, ptr %5, align 4, !tbaa !9
  %1951 = add nsw i32 %1949, %1950
  %1952 = load i32, ptr %5, align 4, !tbaa !9
  %1953 = add nsw i32 %1951, %1952
  %1954 = sext i32 %1953 to i64
  %1955 = mul i64 %1954, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1946, i8 0, i64 %1955, i1 false)
  br label %2087

1956:                                             ; preds = %1926
  %1957 = load i32, ptr %6, align 4, !tbaa !9
  %1958 = icmp eq i32 %1957, 1
  br i1 %1958, label %1959, label %1986

1959:                                             ; preds = %1956
  %1960 = load ptr, ptr %4, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.MImage, ptr %1960, i32 0, i32 3
  %1962 = load i32, ptr %31, align 4, !tbaa !9
  %1963 = sext i32 %1962 to i64
  %1964 = getelementptr inbounds [4 x ptr], ptr %1961, i64 0, i64 %1963
  %1965 = load ptr, ptr %1964, align 8, !tbaa !5
  %1966 = load i32, ptr %32, align 4, !tbaa !9
  %1967 = sext i32 %1966 to i64
  %1968 = getelementptr inbounds ptr, ptr %1965, i64 %1967
  %1969 = load ptr, ptr %1968, align 8, !tbaa !5
  %1970 = load i32, ptr %37, align 4, !tbaa !9
  %1971 = sext i32 %1970 to i64
  %1972 = getelementptr inbounds i8, ptr %1969, i64 %1971
  %1973 = load i32, ptr %5, align 4, !tbaa !9
  %1974 = sext i32 %1973 to i64
  %1975 = sub i64 0, %1974
  %1976 = getelementptr inbounds i8, ptr %1972, i64 %1975
  %1977 = load i32, ptr %38, align 4, !tbaa !9
  %1978 = load i32, ptr %37, align 4, !tbaa !9
  %1979 = sub nsw i32 %1977, %1978
  %1980 = load i32, ptr %5, align 4, !tbaa !9
  %1981 = add nsw i32 %1979, %1980
  %1982 = load i32, ptr %5, align 4, !tbaa !9
  %1983 = add nsw i32 %1981, %1982
  %1984 = sext i32 %1983 to i64
  %1985 = mul i64 %1984, 1
  call void @llvm.memset.p0.i64(ptr align 1 %1976, i8 -1, i64 %1985, i1 false)
  br label %2086

1986:                                             ; preds = %1956
  %1987 = load i32, ptr %6, align 4, !tbaa !9
  %1988 = icmp eq i32 %1987, 2
  br i1 %1988, label %1989, label %2033

1989:                                             ; preds = %1986
  %1990 = load ptr, ptr %4, align 8, !tbaa !5
  %1991 = getelementptr inbounds %struct.MImage, ptr %1990, i32 0, i32 3
  %1992 = load i32, ptr %31, align 4, !tbaa !9
  %1993 = sext i32 %1992 to i64
  %1994 = getelementptr inbounds [4 x ptr], ptr %1991, i64 0, i64 %1993
  %1995 = load ptr, ptr %1994, align 8, !tbaa !5
  %1996 = load i32, ptr %32, align 4, !tbaa !9
  %1997 = sext i32 %1996 to i64
  %1998 = getelementptr inbounds ptr, ptr %1995, i64 %1997
  %1999 = load ptr, ptr %1998, align 8, !tbaa !5
  %2000 = load i32, ptr %37, align 4, !tbaa !9
  %2001 = sext i32 %2000 to i64
  %2002 = getelementptr inbounds i8, ptr %1999, i64 %2001
  %2003 = load i32, ptr %5, align 4, !tbaa !9
  %2004 = sext i32 %2003 to i64
  %2005 = sub i64 0, %2004
  %2006 = getelementptr inbounds i8, ptr %2002, i64 %2005
  %2007 = load ptr, ptr %4, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.MImage, ptr %2007, i32 0, i32 3
  %2009 = load i32, ptr %31, align 4, !tbaa !9
  %2010 = sext i32 %2009 to i64
  %2011 = getelementptr inbounds [4 x ptr], ptr %2008, i64 0, i64 %2010
  %2012 = load ptr, ptr %2011, align 8, !tbaa !5
  %2013 = load i32, ptr %12, align 4, !tbaa !9
  %2014 = sext i32 %2013 to i64
  %2015 = getelementptr inbounds ptr, ptr %2012, i64 %2014
  %2016 = load ptr, ptr %2015, align 8, !tbaa !5
  %2017 = load i32, ptr %37, align 4, !tbaa !9
  %2018 = sext i32 %2017 to i64
  %2019 = getelementptr inbounds i8, ptr %2016, i64 %2018
  %2020 = load i32, ptr %5, align 4, !tbaa !9
  %2021 = sext i32 %2020 to i64
  %2022 = sub i64 0, %2021
  %2023 = getelementptr inbounds i8, ptr %2019, i64 %2022
  %2024 = load i32, ptr %38, align 4, !tbaa !9
  %2025 = load i32, ptr %37, align 4, !tbaa !9
  %2026 = sub nsw i32 %2024, %2025
  %2027 = load i32, ptr %5, align 4, !tbaa !9
  %2028 = add nsw i32 %2026, %2027
  %2029 = load i32, ptr %5, align 4, !tbaa !9
  %2030 = add nsw i32 %2028, %2029
  %2031 = sext i32 %2030 to i64
  %2032 = mul i64 %2031, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2006, ptr align 1 %2023, i64 %2032, i1 false)
  br label %2085

2033:                                             ; preds = %1986
  %2034 = load i32, ptr %6, align 4, !tbaa !9
  %2035 = icmp eq i32 %2034, 3
  br i1 %2035, label %2036, label %2084

2036:                                             ; preds = %2033
  %2037 = load ptr, ptr %4, align 8, !tbaa !5
  %2038 = getelementptr inbounds %struct.MImage, ptr %2037, i32 0, i32 3
  %2039 = load i32, ptr %31, align 4, !tbaa !9
  %2040 = sext i32 %2039 to i64
  %2041 = getelementptr inbounds [4 x ptr], ptr %2038, i64 0, i64 %2040
  %2042 = load ptr, ptr %2041, align 8, !tbaa !5
  %2043 = load i32, ptr %32, align 4, !tbaa !9
  %2044 = sext i32 %2043 to i64
  %2045 = getelementptr inbounds ptr, ptr %2042, i64 %2044
  %2046 = load ptr, ptr %2045, align 8, !tbaa !5
  %2047 = load i32, ptr %37, align 4, !tbaa !9
  %2048 = sext i32 %2047 to i64
  %2049 = getelementptr inbounds i8, ptr %2046, i64 %2048
  %2050 = load i32, ptr %5, align 4, !tbaa !9
  %2051 = sext i32 %2050 to i64
  %2052 = sub i64 0, %2051
  %2053 = getelementptr inbounds i8, ptr %2049, i64 %2052
  %2054 = load ptr, ptr %4, align 8, !tbaa !5
  %2055 = getelementptr inbounds %struct.MImage, ptr %2054, i32 0, i32 3
  %2056 = load i32, ptr %31, align 4, !tbaa !9
  %2057 = sext i32 %2056 to i64
  %2058 = getelementptr inbounds [4 x ptr], ptr %2055, i64 0, i64 %2057
  %2059 = load ptr, ptr %2058, align 8, !tbaa !5
  %2060 = load i32, ptr %12, align 4, !tbaa !9
  %2061 = load i32, ptr %12, align 4, !tbaa !9
  %2062 = add nsw i32 %2060, %2061
  %2063 = load i32, ptr %32, align 4, !tbaa !9
  %2064 = sub nsw i32 %2062, %2063
  %2065 = sext i32 %2064 to i64
  %2066 = getelementptr inbounds ptr, ptr %2059, i64 %2065
  %2067 = load ptr, ptr %2066, align 8, !tbaa !5
  %2068 = load i32, ptr %37, align 4, !tbaa !9
  %2069 = sext i32 %2068 to i64
  %2070 = getelementptr inbounds i8, ptr %2067, i64 %2069
  %2071 = load i32, ptr %5, align 4, !tbaa !9
  %2072 = sext i32 %2071 to i64
  %2073 = sub i64 0, %2072
  %2074 = getelementptr inbounds i8, ptr %2070, i64 %2073
  %2075 = load i32, ptr %38, align 4, !tbaa !9
  %2076 = load i32, ptr %37, align 4, !tbaa !9
  %2077 = sub nsw i32 %2075, %2076
  %2078 = load i32, ptr %5, align 4, !tbaa !9
  %2079 = add nsw i32 %2077, %2078
  %2080 = load i32, ptr %5, align 4, !tbaa !9
  %2081 = add nsw i32 %2079, %2080
  %2082 = sext i32 %2081 to i64
  %2083 = mul i64 %2082, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2053, ptr align 1 %2074, i64 %2083, i1 false)
  br label %2084

2084:                                             ; preds = %2036, %2033
  br label %2085

2085:                                             ; preds = %2084, %1989
  br label %2086

2086:                                             ; preds = %2085, %1959
  br label %2087

2087:                                             ; preds = %2086, %1929
  br label %2088

2088:                                             ; preds = %2087
  %2089 = load i32, ptr %32, align 4, !tbaa !9
  %2090 = add nsw i32 %2089, 1
  store i32 %2090, ptr %32, align 4, !tbaa !9
  br label %1922, !llvm.loop !35

2091:                                             ; preds = %1922
  %2092 = load ptr, ptr %4, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.MImage, ptr %2092, i32 0, i32 4
  %2094 = load ptr, ptr %2093, align 8, !tbaa !14
  %2095 = icmp eq ptr %2094, null
  br i1 %2095, label %2096, label %2097

2096:                                             ; preds = %2091
  br label %2111

2097:                                             ; preds = %2091
  %2098 = load ptr, ptr %4, align 8, !tbaa !5
  %2099 = getelementptr inbounds %struct.MImage, ptr %2098, i32 0, i32 4
  %2100 = load ptr, ptr %2099, align 8, !tbaa !14
  %2101 = getelementptr inbounds %struct.MArray, ptr %2100, i32 0, i32 2
  %2102 = load ptr, ptr %2101, align 8, !tbaa !15
  %2103 = load i32, ptr %13, align 4, !tbaa !9
  %2104 = load i32, ptr %13, align 4, !tbaa !9
  %2105 = add nsw i32 %2103, %2104
  %2106 = add nsw i32 %2105, 4
  %2107 = sext i32 %2106 to i64
  %2108 = getelementptr inbounds i16, ptr %2102, i64 %2107
  %2109 = load i16, ptr %2108, align 2, !tbaa !16
  %2110 = sext i16 %2109 to i32
  br label %2111

2111:                                             ; preds = %2097, %2096
  %2112 = phi i32 [ 0, %2096 ], [ %2110, %2097 ]
  store i32 %2112, ptr %37, align 4, !tbaa !9
  %2113 = load ptr, ptr %4, align 8, !tbaa !5
  %2114 = getelementptr inbounds %struct.MImage, ptr %2113, i32 0, i32 4
  %2115 = load ptr, ptr %2114, align 8, !tbaa !14
  %2116 = icmp eq ptr %2115, null
  br i1 %2116, label %2117, label %2121

2117:                                             ; preds = %2111
  %2118 = load ptr, ptr %4, align 8, !tbaa !5
  %2119 = getelementptr inbounds %struct.MImage, ptr %2118, i32 0, i32 2
  %2120 = load i32, ptr %2119, align 8, !tbaa !13
  br label %2135

2121:                                             ; preds = %2111
  %2122 = load ptr, ptr %4, align 8, !tbaa !5
  %2123 = getelementptr inbounds %struct.MImage, ptr %2122, i32 0, i32 4
  %2124 = load ptr, ptr %2123, align 8, !tbaa !14
  %2125 = getelementptr inbounds %struct.MArray, ptr %2124, i32 0, i32 2
  %2126 = load ptr, ptr %2125, align 8, !tbaa !15
  %2127 = load i32, ptr %13, align 4, !tbaa !9
  %2128 = load i32, ptr %13, align 4, !tbaa !9
  %2129 = add nsw i32 %2127, %2128
  %2130 = add nsw i32 %2129, 5
  %2131 = sext i32 %2130 to i64
  %2132 = getelementptr inbounds i16, ptr %2126, i64 %2131
  %2133 = load i16, ptr %2132, align 2, !tbaa !16
  %2134 = sext i16 %2133 to i32
  br label %2135

2135:                                             ; preds = %2121, %2117
  %2136 = phi i32 [ %2120, %2117 ], [ %2134, %2121 ]
  %2137 = sub nsw i32 %2136, 1
  store i32 %2137, ptr %38, align 4, !tbaa !9
  %2138 = load i32, ptr %13, align 4, !tbaa !9
  %2139 = add nsw i32 %2138, 1
  store i32 %2139, ptr %32, align 4, !tbaa !9
  br label %2140

2140:                                             ; preds = %2308, %2135
  %2141 = load i32, ptr %32, align 4, !tbaa !9
  %2142 = load i32, ptr %13, align 4, !tbaa !9
  %2143 = load i32, ptr %5, align 4, !tbaa !9
  %2144 = add nsw i32 %2142, %2143
  %2145 = icmp sle i32 %2141, %2144
  br i1 %2145, label %2146, label %2311

2146:                                             ; preds = %2140
  %2147 = load i32, ptr %6, align 4, !tbaa !9
  %2148 = icmp eq i32 %2147, 0
  br i1 %2148, label %2149, label %2176

2149:                                             ; preds = %2146
  %2150 = load ptr, ptr %4, align 8, !tbaa !5
  %2151 = getelementptr inbounds %struct.MImage, ptr %2150, i32 0, i32 3
  %2152 = load i32, ptr %31, align 4, !tbaa !9
  %2153 = sext i32 %2152 to i64
  %2154 = getelementptr inbounds [4 x ptr], ptr %2151, i64 0, i64 %2153
  %2155 = load ptr, ptr %2154, align 8, !tbaa !5
  %2156 = load i32, ptr %32, align 4, !tbaa !9
  %2157 = sext i32 %2156 to i64
  %2158 = getelementptr inbounds ptr, ptr %2155, i64 %2157
  %2159 = load ptr, ptr %2158, align 8, !tbaa !5
  %2160 = load i32, ptr %37, align 4, !tbaa !9
  %2161 = sext i32 %2160 to i64
  %2162 = getelementptr inbounds i8, ptr %2159, i64 %2161
  %2163 = load i32, ptr %5, align 4, !tbaa !9
  %2164 = sext i32 %2163 to i64
  %2165 = sub i64 0, %2164
  %2166 = getelementptr inbounds i8, ptr %2162, i64 %2165
  %2167 = load i32, ptr %38, align 4, !tbaa !9
  %2168 = load i32, ptr %37, align 4, !tbaa !9
  %2169 = sub nsw i32 %2167, %2168
  %2170 = load i32, ptr %5, align 4, !tbaa !9
  %2171 = add nsw i32 %2169, %2170
  %2172 = load i32, ptr %5, align 4, !tbaa !9
  %2173 = add nsw i32 %2171, %2172
  %2174 = sext i32 %2173 to i64
  %2175 = mul i64 %2174, 1
  call void @llvm.memset.p0.i64(ptr align 1 %2166, i8 0, i64 %2175, i1 false)
  br label %2307

2176:                                             ; preds = %2146
  %2177 = load i32, ptr %6, align 4, !tbaa !9
  %2178 = icmp eq i32 %2177, 1
  br i1 %2178, label %2179, label %2206

2179:                                             ; preds = %2176
  %2180 = load ptr, ptr %4, align 8, !tbaa !5
  %2181 = getelementptr inbounds %struct.MImage, ptr %2180, i32 0, i32 3
  %2182 = load i32, ptr %31, align 4, !tbaa !9
  %2183 = sext i32 %2182 to i64
  %2184 = getelementptr inbounds [4 x ptr], ptr %2181, i64 0, i64 %2183
  %2185 = load ptr, ptr %2184, align 8, !tbaa !5
  %2186 = load i32, ptr %32, align 4, !tbaa !9
  %2187 = sext i32 %2186 to i64
  %2188 = getelementptr inbounds ptr, ptr %2185, i64 %2187
  %2189 = load ptr, ptr %2188, align 8, !tbaa !5
  %2190 = load i32, ptr %37, align 4, !tbaa !9
  %2191 = sext i32 %2190 to i64
  %2192 = getelementptr inbounds i8, ptr %2189, i64 %2191
  %2193 = load i32, ptr %5, align 4, !tbaa !9
  %2194 = sext i32 %2193 to i64
  %2195 = sub i64 0, %2194
  %2196 = getelementptr inbounds i8, ptr %2192, i64 %2195
  %2197 = load i32, ptr %38, align 4, !tbaa !9
  %2198 = load i32, ptr %37, align 4, !tbaa !9
  %2199 = sub nsw i32 %2197, %2198
  %2200 = load i32, ptr %5, align 4, !tbaa !9
  %2201 = add nsw i32 %2199, %2200
  %2202 = load i32, ptr %5, align 4, !tbaa !9
  %2203 = add nsw i32 %2201, %2202
  %2204 = sext i32 %2203 to i64
  %2205 = mul i64 %2204, 1
  call void @llvm.memset.p0.i64(ptr align 1 %2196, i8 -1, i64 %2205, i1 false)
  br label %2306

2206:                                             ; preds = %2176
  %2207 = load i32, ptr %6, align 4, !tbaa !9
  %2208 = icmp eq i32 %2207, 2
  br i1 %2208, label %2209, label %2253

2209:                                             ; preds = %2206
  %2210 = load ptr, ptr %4, align 8, !tbaa !5
  %2211 = getelementptr inbounds %struct.MImage, ptr %2210, i32 0, i32 3
  %2212 = load i32, ptr %31, align 4, !tbaa !9
  %2213 = sext i32 %2212 to i64
  %2214 = getelementptr inbounds [4 x ptr], ptr %2211, i64 0, i64 %2213
  %2215 = load ptr, ptr %2214, align 8, !tbaa !5
  %2216 = load i32, ptr %32, align 4, !tbaa !9
  %2217 = sext i32 %2216 to i64
  %2218 = getelementptr inbounds ptr, ptr %2215, i64 %2217
  %2219 = load ptr, ptr %2218, align 8, !tbaa !5
  %2220 = load i32, ptr %37, align 4, !tbaa !9
  %2221 = sext i32 %2220 to i64
  %2222 = getelementptr inbounds i8, ptr %2219, i64 %2221
  %2223 = load i32, ptr %5, align 4, !tbaa !9
  %2224 = sext i32 %2223 to i64
  %2225 = sub i64 0, %2224
  %2226 = getelementptr inbounds i8, ptr %2222, i64 %2225
  %2227 = load ptr, ptr %4, align 8, !tbaa !5
  %2228 = getelementptr inbounds %struct.MImage, ptr %2227, i32 0, i32 3
  %2229 = load i32, ptr %31, align 4, !tbaa !9
  %2230 = sext i32 %2229 to i64
  %2231 = getelementptr inbounds [4 x ptr], ptr %2228, i64 0, i64 %2230
  %2232 = load ptr, ptr %2231, align 8, !tbaa !5
  %2233 = load i32, ptr %13, align 4, !tbaa !9
  %2234 = sext i32 %2233 to i64
  %2235 = getelementptr inbounds ptr, ptr %2232, i64 %2234
  %2236 = load ptr, ptr %2235, align 8, !tbaa !5
  %2237 = load i32, ptr %37, align 4, !tbaa !9
  %2238 = sext i32 %2237 to i64
  %2239 = getelementptr inbounds i8, ptr %2236, i64 %2238
  %2240 = load i32, ptr %5, align 4, !tbaa !9
  %2241 = sext i32 %2240 to i64
  %2242 = sub i64 0, %2241
  %2243 = getelementptr inbounds i8, ptr %2239, i64 %2242
  %2244 = load i32, ptr %38, align 4, !tbaa !9
  %2245 = load i32, ptr %37, align 4, !tbaa !9
  %2246 = sub nsw i32 %2244, %2245
  %2247 = load i32, ptr %5, align 4, !tbaa !9
  %2248 = add nsw i32 %2246, %2247
  %2249 = load i32, ptr %5, align 4, !tbaa !9
  %2250 = add nsw i32 %2248, %2249
  %2251 = sext i32 %2250 to i64
  %2252 = mul i64 %2251, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2226, ptr align 1 %2243, i64 %2252, i1 false)
  br label %2305

2253:                                             ; preds = %2206
  %2254 = load i32, ptr %6, align 4, !tbaa !9
  %2255 = icmp eq i32 %2254, 3
  br i1 %2255, label %2256, label %2304

2256:                                             ; preds = %2253
  %2257 = load ptr, ptr %4, align 8, !tbaa !5
  %2258 = getelementptr inbounds %struct.MImage, ptr %2257, i32 0, i32 3
  %2259 = load i32, ptr %31, align 4, !tbaa !9
  %2260 = sext i32 %2259 to i64
  %2261 = getelementptr inbounds [4 x ptr], ptr %2258, i64 0, i64 %2260
  %2262 = load ptr, ptr %2261, align 8, !tbaa !5
  %2263 = load i32, ptr %32, align 4, !tbaa !9
  %2264 = sext i32 %2263 to i64
  %2265 = getelementptr inbounds ptr, ptr %2262, i64 %2264
  %2266 = load ptr, ptr %2265, align 8, !tbaa !5
  %2267 = load i32, ptr %37, align 4, !tbaa !9
  %2268 = sext i32 %2267 to i64
  %2269 = getelementptr inbounds i8, ptr %2266, i64 %2268
  %2270 = load i32, ptr %5, align 4, !tbaa !9
  %2271 = sext i32 %2270 to i64
  %2272 = sub i64 0, %2271
  %2273 = getelementptr inbounds i8, ptr %2269, i64 %2272
  %2274 = load ptr, ptr %4, align 8, !tbaa !5
  %2275 = getelementptr inbounds %struct.MImage, ptr %2274, i32 0, i32 3
  %2276 = load i32, ptr %31, align 4, !tbaa !9
  %2277 = sext i32 %2276 to i64
  %2278 = getelementptr inbounds [4 x ptr], ptr %2275, i64 0, i64 %2277
  %2279 = load ptr, ptr %2278, align 8, !tbaa !5
  %2280 = load i32, ptr %13, align 4, !tbaa !9
  %2281 = load i32, ptr %13, align 4, !tbaa !9
  %2282 = add nsw i32 %2280, %2281
  %2283 = load i32, ptr %32, align 4, !tbaa !9
  %2284 = sub nsw i32 %2282, %2283
  %2285 = sext i32 %2284 to i64
  %2286 = getelementptr inbounds ptr, ptr %2279, i64 %2285
  %2287 = load ptr, ptr %2286, align 8, !tbaa !5
  %2288 = load i32, ptr %37, align 4, !tbaa !9
  %2289 = sext i32 %2288 to i64
  %2290 = getelementptr inbounds i8, ptr %2287, i64 %2289
  %2291 = load i32, ptr %5, align 4, !tbaa !9
  %2292 = sext i32 %2291 to i64
  %2293 = sub i64 0, %2292
  %2294 = getelementptr inbounds i8, ptr %2290, i64 %2293
  %2295 = load i32, ptr %38, align 4, !tbaa !9
  %2296 = load i32, ptr %37, align 4, !tbaa !9
  %2297 = sub nsw i32 %2295, %2296
  %2298 = load i32, ptr %5, align 4, !tbaa !9
  %2299 = add nsw i32 %2297, %2298
  %2300 = load i32, ptr %5, align 4, !tbaa !9
  %2301 = add nsw i32 %2299, %2300
  %2302 = sext i32 %2301 to i64
  %2303 = mul i64 %2302, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2273, ptr align 1 %2294, i64 %2303, i1 false)
  br label %2304

2304:                                             ; preds = %2256, %2253
  br label %2305

2305:                                             ; preds = %2304, %2209
  br label %2306

2306:                                             ; preds = %2305, %2179
  br label %2307

2307:                                             ; preds = %2306, %2149
  br label %2308

2308:                                             ; preds = %2307
  %2309 = load i32, ptr %32, align 4, !tbaa !9
  %2310 = add nsw i32 %2309, 1
  store i32 %2310, ptr %32, align 4, !tbaa !9
  br label %2140, !llvm.loop !36

2311:                                             ; preds = %2140
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  br label %2312

2312:                                             ; preds = %2311
  %2313 = load i32, ptr %31, align 4, !tbaa !9
  %2314 = add nsw i32 %2313, 1
  store i32 %2314, ptr %31, align 4, !tbaa !9
  br label %1546, !llvm.loop !37

2315:                                             ; preds = %1552
  %2316 = load ptr, ptr %4, align 8, !tbaa !5
  %2317 = call ptr @m_PropertyWrite(ptr noundef %2316, ptr noundef @.str.4, ptr noundef %6, i32 noundef 4)
  store i32 0, ptr %15, align 4
  br label %2318

2318:                                             ; preds = %2315, %1544
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  %2319 = load i32, ptr %15, align 4
  switch i32 %2319, label %2321 [
    i32 0, label %2320
    i32 1, label %2320
  ]

2320:                                             ; preds = %2318, %2318
  ret void

2321:                                             ; preds = %2318
  unreachable
}

declare ptr @m_PropertyRead(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!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, !6, i64 48}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!12, !10, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !20}
!31 = distinct !{!31, !20}
!32 = distinct !{!32, !20}
!33 = distinct !{!33, !20}
!34 = distinct !{!34, !20}
!35 = distinct !{!35, !20}
!36 = distinct !{!36, !20}
!37 = distinct !{!37, !20}


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

@.str = external hidden unnamed_addr constant [78 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@__FUNCTION__.mImageExpand = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [24 x i8], align 1

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: nounwind uwtable
define dso_local void @mImageExpand(ptr noundef %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #3 {
  %4 = alloca i32, align 4
  store i32 %2, ptr %4, align 4, !tbaa !5
  %5 = icmp sgt i32 %1, 8
  %6 = icmp ugt i32 %2, 3
  %spec.select = or i1 %5, %6
  br i1 %spec.select, label %7, label %8

7:                                                ; preds = %3
  tail call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef 1, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 244, ptr noundef nonnull @__FUNCTION__.mImageExpand, ptr noundef nonnull @.str.10) #5
  br label %8

8:                                                ; preds = %7, %3
  %9 = tail call ptr @m_PropertyRead(ptr noundef %0, ptr noundef nonnull @.str.4, ptr noundef null, ptr noundef null) #5
  %10 = load i32, ptr %9, align 4, !tbaa !5
  %11 = icmp eq i32 %10, 5
  br i1 %11, label %12, label %13

12:                                               ; preds = %8
  tail call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef 1, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 246, ptr noundef nonnull @__FUNCTION__.mImageExpand, ptr noundef nonnull @.str.11) #5
  br label %13

13:                                               ; preds = %12, %8
  %14 = getelementptr inbounds i8, ptr %0, i64 4
  %15 = load i32, ptr %14, align 4, !tbaa !9
  %16 = getelementptr inbounds i8, ptr %0, i64 8
  %17 = load i32, ptr %16, align 8, !tbaa !12
  %18 = getelementptr inbounds i8, ptr %0, i64 48
  %19 = load ptr, ptr %18, align 8, !tbaa !13
  %20 = icmp eq ptr %19, null
  br i1 %20, label %30, label %21

21:                                               ; preds = %13
  %22 = getelementptr inbounds i8, ptr %19, i64 8
  %23 = load ptr, ptr %22, align 8, !tbaa !14
  %24 = getelementptr inbounds i8, ptr %23, i64 4
  %25 = load i16, ptr %24, align 2, !tbaa !15
  %26 = sext i16 %25 to i32
  %27 = getelementptr inbounds i8, ptr %23, i64 6
  %28 = load i16, ptr %27, align 2, !tbaa !15
  %29 = sext i16 %28 to i32
  br label %30

30:                                               ; preds = %13, %21
  %31 = phi i32 [ %26, %21 ], [ 0, %13 ]
  %32 = phi i32 [ %29, %21 ], [ %15, %13 ]
  %33 = add i32 %32, -1
  %34 = load i32, ptr %9, align 4, !tbaa !5
  %35 = icmp eq i32 %34, 4
  %36 = load i32, ptr %0, align 8, !tbaa !17
  %37 = icmp sgt i32 %36, 0
  br i1 %35, label %.preheader688, label %.preheader694

.preheader694:                                    ; preds = %30
  br i1 %37, label %.preheader693.lr.ph, label %._crit_edge719

.preheader693.lr.ph:                              ; preds = %.preheader694
  %.not.not700 = icmp slt i32 %31, %32
  %.not650695 = icmp slt i32 %1, 1
  %38 = getelementptr inbounds i8, ptr %0, i64 16
  %39 = sext i32 %1 to i64
  %40 = sub nsw i64 0, %39
  %41 = shl nsw i32 %31, 1
  %42 = sext i32 %41 to i64
  %43 = sub i32 %31, %1
  %44 = icmp sgt i32 %1, 0
  %reass.add646 = shl i32 %1, 1
  %45 = sext i32 %31 to i64
  %46 = shl nsw i32 %33, 1
  %47 = sext i32 %46 to i64
  %48 = add nsw i32 %33, %1
  %.not713 = icmp sgt i32 %32, %48
  %49 = sext i32 %33 to i64
  %50 = add i32 %1, 1
  %51 = sext i32 %43 to i64
  %52 = sext i32 %32 to i64
  %53 = add i32 %32, %1
  %wide.trip.count771 = zext i32 %50 to i64
  %54 = add nsw i64 %wide.trip.count771, -1
  %55 = add nsw i64 %wide.trip.count771, -2
  %xtraiter = and i64 %54, 1
  %56 = icmp eq i64 %55, 0
  %unroll_iter = and i64 %54, -2
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %xtraiter897 = and i64 %54, 1
  %57 = icmp eq i64 %55, 0
  %unroll_iter899 = and i64 %54, -2
  %lcmp.mod898.not = icmp eq i64 %xtraiter897, 0
  br label %.preheader693

.preheader688:                                    ; preds = %30
  br i1 %37, label %.lr.ph761, label %.loopexit689

.lr.ph761:                                        ; preds = %.preheader688
  %58 = sub i32 %31, %1
  %59 = tail call i32 @llvm.smax.i32(i32 %58, i32 0)
  %60 = icmp slt i32 %59, %31
  %61 = shl nsw i32 %31, 1
  %62 = sext i32 %61 to i64
  %.not666720 = icmp slt i32 %1, 1
  %63 = getelementptr inbounds i8, ptr %0, i64 16
  %64 = sext i32 %1 to i64
  %65 = sub nsw i64 0, %64
  %66 = sub nsw i32 %17, %1
  %67 = sext i32 %17 to i64
  %.not652.not736 = icmp slt i32 %31, %32
  %68 = add i32 %33, %1
  %69 = tail call i32 @llvm.smin.i32(i32 %68, i32 %15)
  %70 = icmp slt i32 %32, %69
  %71 = shl nsw i32 %33, 1
  %72 = sext i32 %71 to i64
  %73 = icmp slt i32 %58, 0
  %reass.add658 = shl i32 %1, 1
  %.not653755 = icmp sgt i32 %15, %68
  %74 = shl i32 %15, 1
  %75 = add i32 %74, -2
  %76 = sext i32 %15 to i64
  %77 = add i32 %1, 1
  %78 = zext nneg i32 %59 to i64
  %79 = sext i32 %31 to i64
  %80 = sext i32 %32 to i64
  %81 = sext i32 %58 to i64
  %82 = add i32 %32, %1
  %wide.trip.count810 = zext nneg i32 %31 to i64
  %wide.trip.count840 = sext i32 %69 to i64
  %wide.trip.count835 = zext i32 %77 to i64
  %83 = add nsw i64 %wide.trip.count835, -1
  %84 = add nsw i64 %wide.trip.count835, -2
  %xtraiter901 = and i64 %83, 1
  %85 = icmp eq i64 %84, 0
  %unroll_iter903 = and i64 %83, -2
  %lcmp.mod902.not = icmp eq i64 %xtraiter901, 0
  %xtraiter905 = and i64 %83, 1
  %86 = icmp eq i64 %84, 0
  %unroll_iter907 = and i64 %83, -2
  %lcmp.mod906.not = icmp eq i64 %xtraiter905, 0
  %xtraiter909 = and i64 %83, 1
  %87 = icmp eq i64 %84, 0
  %unroll_iter911 = and i64 %83, -2
  %lcmp.mod910.not = icmp eq i64 %xtraiter909, 0
  %xtraiter913 = and i64 %83, 1
  %88 = icmp eq i64 %84, 0
  %unroll_iter915 = and i64 %83, -2
  %lcmp.mod914.not = icmp eq i64 %xtraiter913, 0
  %xtraiter917 = and i64 %83, 1
  %89 = icmp eq i64 %84, 0
  %unroll_iter919 = and i64 %83, -2
  %lcmp.mod918.not = icmp eq i64 %xtraiter917, 0
  %xtraiter921 = and i64 %83, 1
  %90 = icmp eq i64 %84, 0
  %unroll_iter923 = and i64 %83, -2
  %lcmp.mod922.not = icmp eq i64 %xtraiter921, 0
  br label %91

91:                                               ; preds = %.lr.ph761, %._crit_edge759
  %92 = phi i32 [ %2, %.lr.ph761 ], [ %585, %._crit_edge759 ]
  %93 = phi i32 [ %2, %.lr.ph761 ], [ %586, %._crit_edge759 ]
  %94 = phi i32 [ %2, %.lr.ph761 ], [ %587, %._crit_edge759 ]
  %95 = phi i32 [ %2, %.lr.ph761 ], [ %588, %._crit_edge759 ]
  %96 = phi i32 [ %2, %.lr.ph761 ], [ %589, %._crit_edge759 ]
  %indvars.iv852 = phi i64 [ 0, %.lr.ph761 ], [ %indvars.iv.next853, %._crit_edge759 ]
  br i1 %60, label %.lr.ph729, label %.preheader687

.lr.ph729:                                        ; preds = %91
  %97 = getelementptr inbounds [4 x ptr], ptr %63, i64 0, i64 %indvars.iv852
  br label %100

.preheader687:                                    ; preds = %.loopexit683, %91
  %98 = phi i32 [ %96, %91 ], [ %211, %.loopexit683 ]
  br i1 %.not652.not736, label %.lr.ph739, label %.preheader686

.lr.ph739:                                        ; preds = %.preheader687
  %99 = getelementptr inbounds [4 x ptr], ptr %63, i64 0, i64 %indvars.iv852
  br label %216

100:                                              ; preds = %.lr.ph729, %.loopexit683
  %101 = phi i32 [ %96, %.lr.ph729 ], [ %211, %.loopexit683 ]
  %indvars.iv807 = phi i64 [ %78, %.lr.ph729 ], [ %indvars.iv.next808, %.loopexit683 ]
  %102 = load ptr, ptr %18, align 8, !tbaa !13
  %103 = icmp eq ptr %102, null
  br i1 %103, label %111, label %104

104:                                              ; preds = %100
  %105 = getelementptr inbounds i8, ptr %102, i64 8
  %106 = load ptr, ptr %105, align 8, !tbaa !14
  %107 = getelementptr i16, ptr %106, i64 %62
  %108 = getelementptr i8, ptr %107, i64 8
  %109 = load i16, ptr %108, align 2, !tbaa !15
  %110 = sext i16 %109 to i32
  br label %111

111:                                              ; preds = %100, %104
  %112 = phi i32 [ %110, %104 ], [ 0, %100 ]
  %113 = icmp slt i32 %112, %1
  br i1 %113, label %114, label %.loopexit685

114:                                              ; preds = %111
  switch i32 %101, label %.loopexit685 [
    i32 0, label %115
    i32 1, label %120
    i32 2, label %125
    i32 3, label %.preheader684
  ]

.preheader684:                                    ; preds = %114
  br i1 %.not666720, label %.loopexit685, label %.lr.ph722.preheader

.lr.ph722.preheader:                              ; preds = %.preheader684
  br i1 %85, label %.loopexit685.loopexit.unr-lcssa, label %.lr.ph722

115:                                              ; preds = %114
  %116 = load ptr, ptr %97, align 8, !tbaa !18
  %117 = getelementptr inbounds ptr, ptr %116, i64 %indvars.iv807
  %118 = load ptr, ptr %117, align 8, !tbaa !18
  %119 = getelementptr inbounds i8, ptr %118, i64 %65
  tail call void @llvm.memset.p0.i64(ptr align 1 %119, i8 0, i64 %64, i1 false)
  br label %.loopexit685

120:                                              ; preds = %114
  %121 = load ptr, ptr %97, align 8, !tbaa !18
  %122 = getelementptr inbounds ptr, ptr %121, i64 %indvars.iv807
  %123 = load ptr, ptr %122, align 8, !tbaa !18
  %124 = getelementptr inbounds i8, ptr %123, i64 %65
  tail call void @llvm.memset.p0.i64(ptr align 1 %124, i8 -1, i64 %64, i1 false)
  br label %.loopexit685

125:                                              ; preds = %114
  %126 = load ptr, ptr %97, align 8, !tbaa !18
  %127 = getelementptr inbounds ptr, ptr %126, i64 %indvars.iv807
  %128 = load ptr, ptr %127, align 8, !tbaa !18
  %129 = getelementptr inbounds i8, ptr %128, i64 %65
  %130 = load i8, ptr %128, align 1, !tbaa !14
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %129, i8 %130, i64 %64, i1 false)
  br label %.loopexit685

.lr.ph722:                                        ; preds = %.lr.ph722.preheader, %.lr.ph722
  %indvars.iv797 = phi i64 [ %indvars.iv.next798.1, %.lr.ph722 ], [ 1, %.lr.ph722.preheader ]
  %niter904 = phi i64 [ %niter904.next.1, %.lr.ph722 ], [ 0, %.lr.ph722.preheader ]
  %131 = load ptr, ptr %97, align 8, !tbaa !18
  %132 = getelementptr inbounds ptr, ptr %131, i64 %indvars.iv807
  %133 = load ptr, ptr %132, align 8, !tbaa !18
  %134 = getelementptr inbounds i8, ptr %133, i64 %indvars.iv797
  %135 = load i8, ptr %134, align 1, !tbaa !14
  %136 = sub nsw i64 0, %indvars.iv797
  %137 = getelementptr inbounds i8, ptr %133, i64 %136
  store i8 %135, ptr %137, align 1, !tbaa !14
  %138 = load ptr, ptr %97, align 8, !tbaa !18
  %139 = getelementptr inbounds ptr, ptr %138, i64 %indvars.iv807
  %140 = load ptr, ptr %139, align 8, !tbaa !18
  %141 = getelementptr inbounds i8, ptr %140, i64 %indvars.iv797
  %142 = getelementptr inbounds i8, ptr %141, i64 1
  %143 = load i8, ptr %142, align 1, !tbaa !14
  %144 = xor i64 %indvars.iv797, -1
  %145 = getelementptr inbounds i8, ptr %140, i64 %144
  store i8 %143, ptr %145, align 1, !tbaa !14
  %indvars.iv.next798.1 = add nuw nsw i64 %indvars.iv797, 2
  %niter904.next.1 = add nuw i64 %niter904, 2
  %niter904.ncmp.1 = icmp eq i64 %niter904.next.1, %unroll_iter903
  br i1 %niter904.ncmp.1, label %.loopexit685.loopexit.unr-lcssa, label %.lr.ph722, !llvm.loop !19

.loopexit685.loopexit.unr-lcssa:                  ; preds = %.lr.ph722, %.lr.ph722.preheader
  %indvars.iv797.unr = phi i64 [ 1, %.lr.ph722.preheader ], [ %indvars.iv.next798.1, %.lr.ph722 ]
  br i1 %lcmp.mod902.not, label %.loopexit685, label %.lr.ph722.epil

.lr.ph722.epil:                                   ; preds = %.loopexit685.loopexit.unr-lcssa
  %146 = load ptr, ptr %97, align 8, !tbaa !18
  %147 = getelementptr inbounds ptr, ptr %146, i64 %indvars.iv807
  %148 = load ptr, ptr %147, align 8, !tbaa !18
  %149 = getelementptr inbounds i8, ptr %148, i64 %indvars.iv797.unr
  %150 = load i8, ptr %149, align 1, !tbaa !14
  %151 = sub nsw i64 0, %indvars.iv797.unr
  %152 = getelementptr inbounds i8, ptr %148, i64 %151
  store i8 %150, ptr %152, align 1, !tbaa !14
  br label %.loopexit685

.loopexit685:                                     ; preds = %.lr.ph722.epil, %.loopexit685.loopexit.unr-lcssa, %.preheader684, %114, %115, %125, %120, %111
  %153 = load ptr, ptr %18, align 8, !tbaa !13
  %154 = icmp eq ptr %153, null
  br i1 %154, label %155, label %157

155:                                              ; preds = %.loopexit685
  %156 = load i32, ptr %16, align 8, !tbaa !12
  br label %164

157:                                              ; preds = %.loopexit685
  %158 = getelementptr inbounds i8, ptr %153, i64 8
  %159 = load ptr, ptr %158, align 8, !tbaa !14
  %160 = getelementptr i16, ptr %159, i64 %62
  %161 = getelementptr i8, ptr %160, i64 10
  %162 = load i16, ptr %161, align 2, !tbaa !15
  %163 = sext i16 %162 to i32
  br label %164

164:                                              ; preds = %157, %155
  %165 = phi i32 [ %156, %155 ], [ %163, %157 ]
  %166 = icmp sgt i32 %165, %66
  br i1 %166, label %167, label %.loopexit683

167:                                              ; preds = %164
  switch i32 %95, label %.loopexit683 [
    i32 0, label %168
    i32 1, label %174
    i32 2, label %180
    i32 3, label %.preheader682
  ]

.preheader682:                                    ; preds = %167
  br i1 %.not666720, label %.loopexit683, label %.lr.ph725.preheader

.lr.ph725.preheader:                              ; preds = %.preheader682
  br i1 %86, label %.loopexit683.loopexit.unr-lcssa, label %.lr.ph725

168:                                              ; preds = %167
  %169 = load ptr, ptr %97, align 8, !tbaa !18
  %170 = getelementptr inbounds ptr, ptr %169, i64 %indvars.iv807
  %171 = load ptr, ptr %170, align 8, !tbaa !18
  %172 = getelementptr inbounds i8, ptr %171, i64 %67
  %173 = getelementptr inbounds i8, ptr %172, i64 1
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %173, i8 0, i64 %64, i1 false)
  br label %.loopexit683

174:                                              ; preds = %167
  %175 = load ptr, ptr %97, align 8, !tbaa !18
  %176 = getelementptr inbounds ptr, ptr %175, i64 %indvars.iv807
  %177 = load ptr, ptr %176, align 8, !tbaa !18
  %178 = getelementptr inbounds i8, ptr %177, i64 %67
  %179 = getelementptr inbounds i8, ptr %178, i64 1
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %179, i8 -1, i64 %64, i1 false)
  br label %.loopexit683

180:                                              ; preds = %167
  %181 = load ptr, ptr %97, align 8, !tbaa !18
  %182 = getelementptr inbounds ptr, ptr %181, i64 %indvars.iv807
  %183 = load ptr, ptr %182, align 8, !tbaa !18
  %184 = getelementptr inbounds i8, ptr %183, i64 %67
  %185 = getelementptr inbounds i8, ptr %184, i64 1
  %186 = load i8, ptr %184, align 1, !tbaa !14
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %185, i8 %186, i64 %64, i1 false)
  br label %.loopexit683

.lr.ph725:                                        ; preds = %.lr.ph725.preheader, %.lr.ph725
  %indvars.iv802 = phi i64 [ %indvars.iv.next803.1, %.lr.ph725 ], [ 1, %.lr.ph725.preheader ]
  %niter908 = phi i64 [ %niter908.next.1, %.lr.ph725 ], [ 0, %.lr.ph725.preheader ]
  %187 = load ptr, ptr %97, align 8, !tbaa !18
  %188 = getelementptr inbounds ptr, ptr %187, i64 %indvars.iv807
  %189 = load ptr, ptr %188, align 8, !tbaa !18
  %190 = sub nsw i64 %67, %indvars.iv802
  %191 = getelementptr inbounds i8, ptr %189, i64 %190
  %192 = load i8, ptr %191, align 1, !tbaa !14
  %193 = getelementptr i8, ptr %189, i64 %indvars.iv802
  %194 = getelementptr i8, ptr %193, i64 %67
  store i8 %192, ptr %194, align 1, !tbaa !14
  %indvars.iv.next803 = add nuw nsw i64 %indvars.iv802, 1
  %195 = load ptr, ptr %97, align 8, !tbaa !18
  %196 = getelementptr inbounds ptr, ptr %195, i64 %indvars.iv807
  %197 = load ptr, ptr %196, align 8, !tbaa !18
  %198 = sub nsw i64 %67, %indvars.iv.next803
  %199 = getelementptr inbounds i8, ptr %197, i64 %198
  %200 = load i8, ptr %199, align 1, !tbaa !14
  %201 = getelementptr i8, ptr %197, i64 %indvars.iv.next803
  %202 = getelementptr i8, ptr %201, i64 %67
  store i8 %200, ptr %202, align 1, !tbaa !14
  %indvars.iv.next803.1 = add nuw nsw i64 %indvars.iv802, 2
  %niter908.next.1 = add i64 %niter908, 2
  %niter908.ncmp.1 = icmp eq i64 %niter908.next.1, %unroll_iter907
  br i1 %niter908.ncmp.1, label %.loopexit683.loopexit.unr-lcssa, label %.lr.ph725, !llvm.loop !21

.loopexit683.loopexit.unr-lcssa:                  ; preds = %.lr.ph725, %.lr.ph725.preheader
  %indvars.iv802.unr = phi i64 [ 1, %.lr.ph725.preheader ], [ %indvars.iv.next803.1, %.lr.ph725 ]
  br i1 %lcmp.mod906.not, label %.loopexit683, label %.lr.ph725.epil

.lr.ph725.epil:                                   ; preds = %.loopexit683.loopexit.unr-lcssa
  %203 = load ptr, ptr %97, align 8, !tbaa !18
  %204 = getelementptr inbounds ptr, ptr %203, i64 %indvars.iv807
  %205 = load ptr, ptr %204, align 8, !tbaa !18
  %206 = sub nsw i64 %67, %indvars.iv802.unr
  %207 = getelementptr inbounds i8, ptr %205, i64 %206
  %208 = load i8, ptr %207, align 1, !tbaa !14
  %209 = getelementptr i8, ptr %205, i64 %indvars.iv802.unr
  %210 = getelementptr i8, ptr %209, i64 %67
  store i8 %208, ptr %210, align 1, !tbaa !14
  br label %.loopexit683

.loopexit683:                                     ; preds = %.lr.ph725.epil, %.loopexit683.loopexit.unr-lcssa, %.preheader682, %167, %168, %180, %174, %164
  %211 = phi i32 [ 3, %.preheader682 ], [ %95, %167 ], [ 0, %168 ], [ 2, %180 ], [ 1, %174 ], [ %101, %164 ], [ 3, %.loopexit683.loopexit.unr-lcssa ], [ 3, %.lr.ph725.epil ]
  %indvars.iv.next808 = add nuw nsw i64 %indvars.iv807, 1
  %exitcond811.not = icmp eq i64 %indvars.iv.next808, %wide.trip.count810
  br i1 %exitcond811.not, label %.preheader687, label %100, !llvm.loop !22

.preheader686:                                    ; preds = %.loopexit679, %.preheader687
  %212 = phi i32 [ %94, %.preheader687 ], [ %331, %.loopexit679 ]
  %213 = phi i32 [ %95, %.preheader687 ], [ %332, %.loopexit679 ]
  %214 = phi i32 [ %98, %.preheader687 ], [ %333, %.loopexit679 ]
  br i1 %70, label %.lr.ph749, label %._crit_edge750

.lr.ph749:                                        ; preds = %.preheader686
  %215 = getelementptr inbounds [4 x ptr], ptr %63, i64 0, i64 %indvars.iv852
  br label %334

216:                                              ; preds = %.lr.ph739, %.loopexit679
  %217 = phi i32 [ %94, %.lr.ph739 ], [ %331, %.loopexit679 ]
  %218 = phi i32 [ %95, %.lr.ph739 ], [ %332, %.loopexit679 ]
  %219 = phi i32 [ %98, %.lr.ph739 ], [ %333, %.loopexit679 ]
  %indvars.iv822 = phi i64 [ %79, %.lr.ph739 ], [ %indvars.iv.next823, %.loopexit679 ]
  %220 = load ptr, ptr %18, align 8, !tbaa !13
  %221 = icmp eq ptr %220, null
  br i1 %221, label %229, label %222

222:                                              ; preds = %216
  %223 = getelementptr inbounds i8, ptr %220, i64 8
  %224 = load ptr, ptr %223, align 8, !tbaa !14
  %.idx858 = shl i64 %indvars.iv822, 2
  %225 = getelementptr i8, ptr %224, i64 %.idx858
  %226 = getelementptr i8, ptr %225, i64 8
  %227 = load i16, ptr %226, align 2, !tbaa !15
  %228 = sext i16 %227 to i32
  br label %229

229:                                              ; preds = %216, %222
  %230 = phi i32 [ %228, %222 ], [ 0, %216 ]
  %231 = icmp slt i32 %230, %1
  br i1 %231, label %232, label %.loopexit681

232:                                              ; preds = %229
  switch i32 %217, label %.loopexit681 [
    i32 0, label %233
    i32 1, label %238
    i32 2, label %243
    i32 3, label %.preheader680
  ]

.preheader680:                                    ; preds = %232
  br i1 %.not666720, label %.loopexit681, label %.lr.ph732.preheader

.lr.ph732.preheader:                              ; preds = %.preheader680
  br i1 %87, label %.loopexit681.loopexit.unr-lcssa, label %.lr.ph732

233:                                              ; preds = %232
  %234 = load ptr, ptr %99, align 8, !tbaa !18
  %235 = getelementptr inbounds ptr, ptr %234, i64 %indvars.iv822
  %236 = load ptr, ptr %235, align 8, !tbaa !18
  %237 = getelementptr inbounds i8, ptr %236, i64 %65
  tail call void @llvm.memset.p0.i64(ptr align 1 %237, i8 0, i64 %64, i1 false)
  br label %.loopexit681

238:                                              ; preds = %232
  %239 = load ptr, ptr %99, align 8, !tbaa !18
  %240 = getelementptr inbounds ptr, ptr %239, i64 %indvars.iv822
  %241 = load ptr, ptr %240, align 8, !tbaa !18
  %242 = getelementptr inbounds i8, ptr %241, i64 %65
  tail call void @llvm.memset.p0.i64(ptr align 1 %242, i8 -1, i64 %64, i1 false)
  br label %.loopexit681

243:                                              ; preds = %232
  %244 = load ptr, ptr %99, align 8, !tbaa !18
  %245 = getelementptr inbounds ptr, ptr %244, i64 %indvars.iv822
  %246 = load ptr, ptr %245, align 8, !tbaa !18
  %247 = getelementptr inbounds i8, ptr %246, i64 %65
  %248 = load i8, ptr %246, align 1, !tbaa !14
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %247, i8 %248, i64 %64, i1 false)
  br label %.loopexit681

.lr.ph732:                                        ; preds = %.lr.ph732.preheader, %.lr.ph732
  %indvars.iv812 = phi i64 [ %indvars.iv.next813.1, %.lr.ph732 ], [ 1, %.lr.ph732.preheader ]
  %niter912 = phi i64 [ %niter912.next.1, %.lr.ph732 ], [ 0, %.lr.ph732.preheader ]
  %249 = load ptr, ptr %99, align 8, !tbaa !18
  %250 = getelementptr inbounds ptr, ptr %249, i64 %indvars.iv822
  %251 = load ptr, ptr %250, align 8, !tbaa !18
  %252 = getelementptr inbounds i8, ptr %251, i64 %indvars.iv812
  %253 = load i8, ptr %252, align 1, !tbaa !14
  %254 = sub nsw i64 0, %indvars.iv812
  %255 = getelementptr inbounds i8, ptr %251, i64 %254
  store i8 %253, ptr %255, align 1, !tbaa !14
  %256 = load ptr, ptr %99, align 8, !tbaa !18
  %257 = getelementptr inbounds ptr, ptr %256, i64 %indvars.iv822
  %258 = load ptr, ptr %257, align 8, !tbaa !18
  %259 = getelementptr inbounds i8, ptr %258, i64 %indvars.iv812
  %260 = getelementptr inbounds i8, ptr %259, i64 1
  %261 = load i8, ptr %260, align 1, !tbaa !14
  %262 = xor i64 %indvars.iv812, -1
  %263 = getelementptr inbounds i8, ptr %258, i64 %262
  store i8 %261, ptr %263, align 1, !tbaa !14
  %indvars.iv.next813.1 = add nuw nsw i64 %indvars.iv812, 2
  %niter912.next.1 = add nuw i64 %niter912, 2
  %niter912.ncmp.1 = icmp eq i64 %niter912.next.1, %unroll_iter911
  br i1 %niter912.ncmp.1, label %.loopexit681.loopexit.unr-lcssa, label %.lr.ph732, !llvm.loop !23

.loopexit681.loopexit.unr-lcssa:                  ; preds = %.lr.ph732, %.lr.ph732.preheader
  %indvars.iv812.unr = phi i64 [ 1, %.lr.ph732.preheader ], [ %indvars.iv.next813.1, %.lr.ph732 ]
  br i1 %lcmp.mod910.not, label %.loopexit681, label %.lr.ph732.epil

.lr.ph732.epil:                                   ; preds = %.loopexit681.loopexit.unr-lcssa
  %264 = load ptr, ptr %99, align 8, !tbaa !18
  %265 = getelementptr inbounds ptr, ptr %264, i64 %indvars.iv822
  %266 = load ptr, ptr %265, align 8, !tbaa !18
  %267 = getelementptr inbounds i8, ptr %266, i64 %indvars.iv812.unr
  %268 = load i8, ptr %267, align 1, !tbaa !14
  %269 = sub nsw i64 0, %indvars.iv812.unr
  %270 = getelementptr inbounds i8, ptr %266, i64 %269
  store i8 %268, ptr %270, align 1, !tbaa !14
  br label %.loopexit681

.loopexit681:                                     ; preds = %.lr.ph732.epil, %.loopexit681.loopexit.unr-lcssa, %.preheader680, %232, %233, %243, %238, %229
  %271 = phi i32 [ 3, %.preheader680 ], [ %217, %232 ], [ 0, %233 ], [ 2, %243 ], [ 1, %238 ], [ %218, %229 ], [ 3, %.loopexit681.loopexit.unr-lcssa ], [ 3, %.lr.ph732.epil ]
  %272 = phi i32 [ 3, %.preheader680 ], [ %217, %232 ], [ 0, %233 ], [ 2, %243 ], [ 1, %238 ], [ %219, %229 ], [ 3, %.loopexit681.loopexit.unr-lcssa ], [ 3, %.lr.ph732.epil ]
  %273 = load ptr, ptr %18, align 8, !tbaa !13
  %274 = icmp eq ptr %273, null
  br i1 %274, label %275, label %277

275:                                              ; preds = %.loopexit681
  %276 = load i32, ptr %16, align 8, !tbaa !12
  br label %284

277:                                              ; preds = %.loopexit681
  %278 = getelementptr inbounds i8, ptr %273, i64 8
  %279 = load ptr, ptr %278, align 8, !tbaa !14
  %.idx859 = shl i64 %indvars.iv822, 2
  %280 = getelementptr i8, ptr %279, i64 %.idx859
  %281 = getelementptr i8, ptr %280, i64 10
  %282 = load i16, ptr %281, align 2, !tbaa !15
  %283 = sext i16 %282 to i32
  br label %284

284:                                              ; preds = %277, %275
  %285 = phi i32 [ %276, %275 ], [ %283, %277 ]
  %286 = icmp sgt i32 %285, %66
  br i1 %286, label %287, label %.loopexit679

287:                                              ; preds = %284
  switch i32 %93, label %.loopexit679 [
    i32 0, label %288
    i32 1, label %294
    i32 2, label %300
    i32 3, label %.preheader678
  ]

.preheader678:                                    ; preds = %287
  br i1 %.not666720, label %.loopexit679, label %.lr.ph735.preheader

.lr.ph735.preheader:                              ; preds = %.preheader678
  br i1 %88, label %.loopexit679.loopexit.unr-lcssa, label %.lr.ph735

288:                                              ; preds = %287
  %289 = load ptr, ptr %99, align 8, !tbaa !18
  %290 = getelementptr inbounds ptr, ptr %289, i64 %indvars.iv822
  %291 = load ptr, ptr %290, align 8, !tbaa !18
  %292 = getelementptr inbounds i8, ptr %291, i64 %67
  %293 = getelementptr inbounds i8, ptr %292, i64 1
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %293, i8 0, i64 %64, i1 false)
  br label %.loopexit679

294:                                              ; preds = %287
  %295 = load ptr, ptr %99, align 8, !tbaa !18
  %296 = getelementptr inbounds ptr, ptr %295, i64 %indvars.iv822
  %297 = load ptr, ptr %296, align 8, !tbaa !18
  %298 = getelementptr inbounds i8, ptr %297, i64 %67
  %299 = getelementptr inbounds i8, ptr %298, i64 1
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %299, i8 -1, i64 %64, i1 false)
  br label %.loopexit679

300:                                              ; preds = %287
  %301 = load ptr, ptr %99, align 8, !tbaa !18
  %302 = getelementptr inbounds ptr, ptr %301, i64 %indvars.iv822
  %303 = load ptr, ptr %302, align 8, !tbaa !18
  %304 = getelementptr inbounds i8, ptr %303, i64 %67
  %305 = getelementptr inbounds i8, ptr %304, i64 1
  %306 = load i8, ptr %304, align 1, !tbaa !14
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %305, i8 %306, i64 %64, i1 false)
  br label %.loopexit679

.lr.ph735:                                        ; preds = %.lr.ph735.preheader, %.lr.ph735
  %indvars.iv817 = phi i64 [ %indvars.iv.next818.1, %.lr.ph735 ], [ 1, %.lr.ph735.preheader ]
  %niter916 = phi i64 [ %niter916.next.1, %.lr.ph735 ], [ 0, %.lr.ph735.preheader ]
  %307 = load ptr, ptr %99, align 8, !tbaa !18
  %308 = getelementptr inbounds ptr, ptr %307, i64 %indvars.iv822
  %309 = load ptr, ptr %308, align 8, !tbaa !18
  %310 = sub nsw i64 %67, %indvars.iv817
  %311 = getelementptr inbounds i8, ptr %309, i64 %310
  %312 = load i8, ptr %311, align 1, !tbaa !14
  %313 = getelementptr i8, ptr %309, i64 %indvars.iv817
  %314 = getelementptr i8, ptr %313, i64 %67
  store i8 %312, ptr %314, align 1, !tbaa !14
  %indvars.iv.next818 = add nuw nsw i64 %indvars.iv817, 1
  %315 = load ptr, ptr %99, align 8, !tbaa !18
  %316 = getelementptr inbounds ptr, ptr %315, i64 %indvars.iv822
  %317 = load ptr, ptr %316, align 8, !tbaa !18
  %318 = sub nsw i64 %67, %indvars.iv.next818
  %319 = getelementptr inbounds i8, ptr %317, i64 %318
  %320 = load i8, ptr %319, align 1, !tbaa !14
  %321 = getelementptr i8, ptr %317, i64 %indvars.iv.next818
  %322 = getelementptr i8, ptr %321, i64 %67
  store i8 %320, ptr %322, align 1, !tbaa !14
  %indvars.iv.next818.1 = add nuw nsw i64 %indvars.iv817, 2
  %niter916.next.1 = add i64 %niter916, 2
  %niter916.ncmp.1 = icmp eq i64 %niter916.next.1, %unroll_iter915
  br i1 %niter916.ncmp.1, label %.loopexit679.loopexit.unr-lcssa, label %.lr.ph735, !llvm.loop !24

.loopexit679.loopexit.unr-lcssa:                  ; preds = %.lr.ph735, %.lr.ph735.preheader
  %indvars.iv817.unr = phi i64 [ 1, %.lr.ph735.preheader ], [ %indvars.iv.next818.1, %.lr.ph735 ]
  br i1 %lcmp.mod914.not, label %.loopexit679, label %.lr.ph735.epil

.lr.ph735.epil:                                   ; preds = %.loopexit679.loopexit.unr-lcssa
  %323 = load ptr, ptr %99, align 8, !tbaa !18
  %324 = getelementptr inbounds ptr, ptr %323, i64 %indvars.iv822
  %325 = load ptr, ptr %324, align 8, !tbaa !18
  %326 = sub nsw i64 %67, %indvars.iv817.unr
  %327 = getelementptr inbounds i8, ptr %325, i64 %326
  %328 = load i8, ptr %327, align 1, !tbaa !14
  %329 = getelementptr i8, ptr %325, i64 %indvars.iv817.unr
  %330 = getelementptr i8, ptr %329, i64 %67
  store i8 %328, ptr %330, align 1, !tbaa !14
  br label %.loopexit679

.loopexit679:                                     ; preds = %.lr.ph735.epil, %.loopexit679.loopexit.unr-lcssa, %.preheader678, %287, %288, %300, %294, %284
  %331 = phi i32 [ 3, %.preheader678 ], [ %93, %287 ], [ 0, %288 ], [ 2, %300 ], [ 1, %294 ], [ %217, %284 ], [ 3, %.loopexit679.loopexit.unr-lcssa ], [ 3, %.lr.ph735.epil ]
  %332 = phi i32 [ 3, %.preheader678 ], [ %93, %287 ], [ 0, %288 ], [ 2, %300 ], [ 1, %294 ], [ %271, %284 ], [ 3, %.loopexit679.loopexit.unr-lcssa ], [ 3, %.lr.ph735.epil ]
  %333 = phi i32 [ 3, %.preheader678 ], [ %93, %287 ], [ 0, %288 ], [ 2, %300 ], [ 1, %294 ], [ %272, %284 ], [ 3, %.loopexit679.loopexit.unr-lcssa ], [ 3, %.lr.ph735.epil ]
  %indvars.iv.next823 = add nsw i64 %indvars.iv822, 1
  %exitcond826.not = icmp eq i64 %indvars.iv.next823, %80
  br i1 %exitcond826.not, label %.preheader686, label %216, !llvm.loop !25

334:                                              ; preds = %.lr.ph749, %.loopexit
  %335 = phi i32 [ %92, %.lr.ph749 ], [ %453, %.loopexit ]
  %336 = phi i32 [ %93, %.lr.ph749 ], [ %454, %.loopexit ]
  %337 = phi i32 [ %212, %.lr.ph749 ], [ %455, %.loopexit ]
  %338 = phi i32 [ %213, %.lr.ph749 ], [ %456, %.loopexit ]
  %339 = phi i32 [ %214, %.lr.ph749 ], [ %457, %.loopexit ]
  %indvars.iv837 = phi i64 [ %80, %.lr.ph749 ], [ %indvars.iv.next838, %.loopexit ]
  %340 = load ptr, ptr %18, align 8, !tbaa !13
  %341 = icmp eq ptr %340, null
  br i1 %341, label %349, label %342

342:                                              ; preds = %334
  %343 = getelementptr inbounds i8, ptr %340, i64 8
  %344 = load ptr, ptr %343, align 8, !tbaa !14
  %345 = getelementptr i16, ptr %344, i64 %72
  %346 = getelementptr i8, ptr %345, i64 8
  %347 = load i16, ptr %346, align 2, !tbaa !15
  %348 = sext i16 %347 to i32
  br label %349

349:                                              ; preds = %334, %342
  %350 = phi i32 [ %348, %342 ], [ 0, %334 ]
  %351 = icmp slt i32 %350, %1
  br i1 %351, label %352, label %.loopexit677

352:                                              ; preds = %349
  switch i32 %335, label %.loopexit677 [
    i32 0, label %353
    i32 1, label %358
    i32 2, label %363
    i32 3, label %.preheader676
  ]

.preheader676:                                    ; preds = %352
  br i1 %.not666720, label %.loopexit677, label %.lr.ph742.preheader

.lr.ph742.preheader:                              ; preds = %.preheader676
  br i1 %89, label %.loopexit677.loopexit.unr-lcssa, label %.lr.ph742

353:                                              ; preds = %352
  %354 = load ptr, ptr %215, align 8, !tbaa !18
  %355 = getelementptr inbounds ptr, ptr %354, i64 %indvars.iv837
  %356 = load ptr, ptr %355, align 8, !tbaa !18
  %357 = getelementptr inbounds i8, ptr %356, i64 %65
  tail call void @llvm.memset.p0.i64(ptr align 1 %357, i8 0, i64 %64, i1 false)
  br label %.loopexit677

358:                                              ; preds = %352
  %359 = load ptr, ptr %215, align 8, !tbaa !18
  %360 = getelementptr inbounds ptr, ptr %359, i64 %indvars.iv837
  %361 = load ptr, ptr %360, align 8, !tbaa !18
  %362 = getelementptr inbounds i8, ptr %361, i64 %65
  tail call void @llvm.memset.p0.i64(ptr align 1 %362, i8 -1, i64 %64, i1 false)
  br label %.loopexit677

363:                                              ; preds = %352
  %364 = load ptr, ptr %215, align 8, !tbaa !18
  %365 = getelementptr inbounds ptr, ptr %364, i64 %indvars.iv837
  %366 = load ptr, ptr %365, align 8, !tbaa !18
  %367 = getelementptr inbounds i8, ptr %366, i64 %65
  %368 = load i8, ptr %366, align 1, !tbaa !14
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %367, i8 %368, i64 %64, i1 false)
  br label %.loopexit677

.lr.ph742:                                        ; preds = %.lr.ph742.preheader, %.lr.ph742
  %indvars.iv827 = phi i64 [ %indvars.iv.next828.1, %.lr.ph742 ], [ 1, %.lr.ph742.preheader ]
  %niter920 = phi i64 [ %niter920.next.1, %.lr.ph742 ], [ 0, %.lr.ph742.preheader ]
  %369 = load ptr, ptr %215, align 8, !tbaa !18
  %370 = getelementptr inbounds ptr, ptr %369, i64 %indvars.iv837
  %371 = load ptr, ptr %370, align 8, !tbaa !18
  %372 = getelementptr inbounds i8, ptr %371, i64 %indvars.iv827
  %373 = load i8, ptr %372, align 1, !tbaa !14
  %374 = sub nsw i64 0, %indvars.iv827
  %375 = getelementptr inbounds i8, ptr %371, i64 %374
  store i8 %373, ptr %375, align 1, !tbaa !14
  %376 = load ptr, ptr %215, align 8, !tbaa !18
  %377 = getelementptr inbounds ptr, ptr %376, i64 %indvars.iv837
  %378 = load ptr, ptr %377, align 8, !tbaa !18
  %379 = getelementptr inbounds i8, ptr %378, i64 %indvars.iv827
  %380 = getelementptr inbounds i8, ptr %379, i64 1
  %381 = load i8, ptr %380, align 1, !tbaa !14
  %382 = xor i64 %indvars.iv827, -1
  %383 = getelementptr inbounds i8, ptr %378, i64 %382
  store i8 %381, ptr %383, align 1, !tbaa !14
  %indvars.iv.next828.1 = add nuw nsw i64 %indvars.iv827, 2
  %niter920.next.1 = add nuw i64 %niter920, 2
  %niter920.ncmp.1 = icmp eq i64 %niter920.next.1, %unroll_iter919
  br i1 %niter920.ncmp.1, label %.loopexit677.loopexit.unr-lcssa, label %.lr.ph742, !llvm.loop !26

.loopexit677.loopexit.unr-lcssa:                  ; preds = %.lr.ph742, %.lr.ph742.preheader
  %indvars.iv827.unr = phi i64 [ 1, %.lr.ph742.preheader ], [ %indvars.iv.next828.1, %.lr.ph742 ]
  br i1 %lcmp.mod918.not, label %.loopexit677, label %.lr.ph742.epil

.lr.ph742.epil:                                   ; preds = %.loopexit677.loopexit.unr-lcssa
  %384 = load ptr, ptr %215, align 8, !tbaa !18
  %385 = getelementptr inbounds ptr, ptr %384, i64 %indvars.iv837
  %386 = load ptr, ptr %385, align 8, !tbaa !18
  %387 = getelementptr inbounds i8, ptr %386, i64 %indvars.iv827.unr
  %388 = load i8, ptr %387, align 1, !tbaa !14
  %389 = sub nsw i64 0, %indvars.iv827.unr
  %390 = getelementptr inbounds i8, ptr %386, i64 %389
  store i8 %388, ptr %390, align 1, !tbaa !14
  br label %.loopexit677

.loopexit677:                                     ; preds = %.lr.ph742.epil, %.loopexit677.loopexit.unr-lcssa, %.preheader676, %352, %353, %363, %358, %349
  %391 = phi i32 [ 3, %.preheader676 ], [ %335, %352 ], [ 0, %353 ], [ 2, %363 ], [ 1, %358 ], [ %336, %349 ], [ 3, %.loopexit677.loopexit.unr-lcssa ], [ 3, %.lr.ph742.epil ]
  %392 = phi i32 [ 3, %.preheader676 ], [ %335, %352 ], [ 0, %353 ], [ 2, %363 ], [ 1, %358 ], [ %337, %349 ], [ 3, %.loopexit677.loopexit.unr-lcssa ], [ 3, %.lr.ph742.epil ]
  %393 = phi i32 [ 3, %.preheader676 ], [ %335, %352 ], [ 0, %353 ], [ 2, %363 ], [ 1, %358 ], [ %338, %349 ], [ 3, %.loopexit677.loopexit.unr-lcssa ], [ 3, %.lr.ph742.epil ]
  %394 = phi i32 [ 3, %.preheader676 ], [ %335, %352 ], [ 0, %353 ], [ 2, %363 ], [ 1, %358 ], [ %339, %349 ], [ 3, %.loopexit677.loopexit.unr-lcssa ], [ 3, %.lr.ph742.epil ]
  %395 = load ptr, ptr %18, align 8, !tbaa !13
  %396 = icmp eq ptr %395, null
  br i1 %396, label %397, label %399

397:                                              ; preds = %.loopexit677
  %398 = load i32, ptr %16, align 8, !tbaa !12
  br label %406

399:                                              ; preds = %.loopexit677
  %400 = getelementptr inbounds i8, ptr %395, i64 8
  %401 = load ptr, ptr %400, align 8, !tbaa !14
  %402 = getelementptr i16, ptr %401, i64 %72
  %403 = getelementptr i8, ptr %402, i64 10
  %404 = load i16, ptr %403, align 2, !tbaa !15
  %405 = sext i16 %404 to i32
  br label %406

406:                                              ; preds = %399, %397
  %407 = phi i32 [ %398, %397 ], [ %405, %399 ]
  %408 = icmp sgt i32 %407, %66
  br i1 %408, label %409, label %.loopexit

409:                                              ; preds = %406
  switch i32 %2, label %.loopexit [
    i32 0, label %410
    i32 1, label %416
    i32 2, label %422
    i32 3, label %.preheader
  ]

.preheader:                                       ; preds = %409
  br i1 %.not666720, label %.loopexit, label %.lr.ph745.preheader

.lr.ph745.preheader:                              ; preds = %.preheader
  br i1 %90, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph745

410:                                              ; preds = %409
  %411 = load ptr, ptr %215, align 8, !tbaa !18
  %412 = getelementptr inbounds ptr, ptr %411, i64 %indvars.iv837
  %413 = load ptr, ptr %412, align 8, !tbaa !18
  %414 = getelementptr inbounds i8, ptr %413, i64 %67
  %415 = getelementptr inbounds i8, ptr %414, i64 1
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %415, i8 0, i64 %64, i1 false)
  br label %.loopexit

416:                                              ; preds = %409
  %417 = load ptr, ptr %215, align 8, !tbaa !18
  %418 = getelementptr inbounds ptr, ptr %417, i64 %indvars.iv837
  %419 = load ptr, ptr %418, align 8, !tbaa !18
  %420 = getelementptr inbounds i8, ptr %419, i64 %67
  %421 = getelementptr inbounds i8, ptr %420, i64 1
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %421, i8 -1, i64 %64, i1 false)
  br label %.loopexit

422:                                              ; preds = %409
  %423 = load ptr, ptr %215, align 8, !tbaa !18
  %424 = getelementptr inbounds ptr, ptr %423, i64 %indvars.iv837
  %425 = load ptr, ptr %424, align 8, !tbaa !18
  %426 = getelementptr inbounds i8, ptr %425, i64 %67
  %427 = getelementptr inbounds i8, ptr %426, i64 1
  %428 = load i8, ptr %426, align 1, !tbaa !14
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %427, i8 %428, i64 %64, i1 false)
  br label %.loopexit

.lr.ph745:                                        ; preds = %.lr.ph745.preheader, %.lr.ph745
  %indvars.iv832 = phi i64 [ %indvars.iv.next833.1, %.lr.ph745 ], [ 1, %.lr.ph745.preheader ]
  %niter924 = phi i64 [ %niter924.next.1, %.lr.ph745 ], [ 0, %.lr.ph745.preheader ]
  %429 = load ptr, ptr %215, align 8, !tbaa !18
  %430 = getelementptr inbounds ptr, ptr %429, i64 %indvars.iv837
  %431 = load ptr, ptr %430, align 8, !tbaa !18
  %432 = sub nsw i64 %67, %indvars.iv832
  %433 = getelementptr inbounds i8, ptr %431, i64 %432
  %434 = load i8, ptr %433, align 1, !tbaa !14
  %435 = getelementptr i8, ptr %431, i64 %indvars.iv832
  %436 = getelementptr i8, ptr %435, i64 %67
  store i8 %434, ptr %436, align 1, !tbaa !14
  %indvars.iv.next833 = add nuw nsw i64 %indvars.iv832, 1
  %437 = load ptr, ptr %215, align 8, !tbaa !18
  %438 = getelementptr inbounds ptr, ptr %437, i64 %indvars.iv837
  %439 = load ptr, ptr %438, align 8, !tbaa !18
  %440 = sub nsw i64 %67, %indvars.iv.next833
  %441 = getelementptr inbounds i8, ptr %439, i64 %440
  %442 = load i8, ptr %441, align 1, !tbaa !14
  %443 = getelementptr i8, ptr %439, i64 %indvars.iv.next833
  %444 = getelementptr i8, ptr %443, i64 %67
  store i8 %442, ptr %444, align 1, !tbaa !14
  %indvars.iv.next833.1 = add nuw nsw i64 %indvars.iv832, 2
  %niter924.next.1 = add i64 %niter924, 2
  %niter924.ncmp.1 = icmp eq i64 %niter924.next.1, %unroll_iter923
  br i1 %niter924.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph745, !llvm.loop !27

.loopexit.loopexit.unr-lcssa:                     ; preds = %.lr.ph745, %.lr.ph745.preheader
  %indvars.iv832.unr = phi i64 [ 1, %.lr.ph745.preheader ], [ %indvars.iv.next833.1, %.lr.ph745 ]
  br i1 %lcmp.mod922.not, label %.loopexit, label %.lr.ph745.epil

.lr.ph745.epil:                                   ; preds = %.loopexit.loopexit.unr-lcssa
  %445 = load ptr, ptr %215, align 8, !tbaa !18
  %446 = getelementptr inbounds ptr, ptr %445, i64 %indvars.iv837
  %447 = load ptr, ptr %446, align 8, !tbaa !18
  %448 = sub nsw i64 %67, %indvars.iv832.unr
  %449 = getelementptr inbounds i8, ptr %447, i64 %448
  %450 = load i8, ptr %449, align 1, !tbaa !14
  %451 = getelementptr i8, ptr %447, i64 %indvars.iv832.unr
  %452 = getelementptr i8, ptr %451, i64 %67
  store i8 %450, ptr %452, align 1, !tbaa !14
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph745.epil, %.loopexit.loopexit.unr-lcssa, %.preheader, %409, %410, %422, %416, %406
  %453 = phi i32 [ 3, %.preheader ], [ %2, %409 ], [ 0, %410 ], [ 2, %422 ], [ 1, %416 ], [ %335, %406 ], [ 3, %.loopexit.loopexit.unr-lcssa ], [ 3, %.lr.ph745.epil ]
  %454 = phi i32 [ 3, %.preheader ], [ %2, %409 ], [ 0, %410 ], [ 2, %422 ], [ 1, %416 ], [ %391, %406 ], [ 3, %.loopexit.loopexit.unr-lcssa ], [ 3, %.lr.ph745.epil ]
  %455 = phi i32 [ 3, %.preheader ], [ %2, %409 ], [ 0, %410 ], [ 2, %422 ], [ 1, %416 ], [ %392, %406 ], [ 3, %.loopexit.loopexit.unr-lcssa ], [ 3, %.lr.ph745.epil ]
  %456 = phi i32 [ 3, %.preheader ], [ %2, %409 ], [ 0, %410 ], [ 2, %422 ], [ 1, %416 ], [ %393, %406 ], [ 3, %.loopexit.loopexit.unr-lcssa ], [ 3, %.lr.ph745.epil ]
  %457 = phi i32 [ 3, %.preheader ], [ %2, %409 ], [ 0, %410 ], [ 2, %422 ], [ 1, %416 ], [ %394, %406 ], [ 3, %.loopexit.loopexit.unr-lcssa ], [ 3, %.lr.ph745.epil ]
  %indvars.iv.next838 = add nsw i64 %indvars.iv837, 1
  %exitcond841.not = icmp eq i64 %indvars.iv.next838, %wide.trip.count840
  br i1 %exitcond841.not, label %._crit_edge750, label %334, !llvm.loop !28

._crit_edge750:                                   ; preds = %.loopexit, %.preheader686
  %458 = phi i32 [ %92, %.preheader686 ], [ %453, %.loopexit ]
  %459 = phi i32 [ %93, %.preheader686 ], [ %454, %.loopexit ]
  %460 = phi i32 [ %212, %.preheader686 ], [ %455, %.loopexit ]
  %461 = phi i32 [ %213, %.preheader686 ], [ %456, %.loopexit ]
  %462 = phi i32 [ %214, %.preheader686 ], [ %457, %.loopexit ]
  %463 = load ptr, ptr %18, align 8, !tbaa !13
  %464 = icmp eq ptr %463, null
  br i1 %464, label %465, label %467

465:                                              ; preds = %._crit_edge750
  %466 = load i32, ptr %16, align 8, !tbaa !12
  br label %477

467:                                              ; preds = %._crit_edge750
  %468 = getelementptr inbounds i8, ptr %463, i64 8
  %469 = load ptr, ptr %468, align 8, !tbaa !14
  %470 = getelementptr i16, ptr %469, i64 %62
  %471 = getelementptr i8, ptr %470, i64 8
  %472 = load i16, ptr %471, align 2, !tbaa !15
  %473 = sext i16 %472 to i32
  %474 = getelementptr i8, ptr %470, i64 10
  %475 = load i16, ptr %474, align 2, !tbaa !15
  %476 = sext i16 %475 to i32
  br label %477

477:                                              ; preds = %467, %465
  %478 = phi i32 [ 0, %465 ], [ %473, %467 ]
  %479 = phi i32 [ %466, %465 ], [ %476, %467 ]
  br i1 %73, label %.lr.ph753, label %._crit_edge754

.lr.ph753:                                        ; preds = %477
  %480 = getelementptr inbounds [4 x ptr], ptr %63, i64 0, i64 %indvars.iv852
  %481 = sext i32 %478 to i64
  %482 = sub i32 %reass.add658, %478
  %483 = add i32 %482, %479
  %484 = sext i32 %483 to i64
  br label %485

485:                                              ; preds = %.lr.ph753, %518
  %indvars.iv842 = phi i64 [ %81, %.lr.ph753 ], [ %indvars.iv.next843, %518 ]
  switch i32 %2, label %518 [
    i32 0, label %486
    i32 1, label %492
    i32 2, label %498
    i32 3, label %507
  ]

486:                                              ; preds = %485
  %487 = load ptr, ptr %480, align 8, !tbaa !18
  %488 = getelementptr inbounds ptr, ptr %487, i64 %indvars.iv842
  %489 = load ptr, ptr %488, align 8, !tbaa !18
  %490 = getelementptr inbounds i8, ptr %489, i64 %481
  %491 = getelementptr inbounds i8, ptr %490, i64 %65
  tail call void @llvm.memset.p0.i64(ptr align 1 %491, i8 0, i64 %484, i1 false)
  br label %518

492:                                              ; preds = %485
  %493 = load ptr, ptr %480, align 8, !tbaa !18
  %494 = getelementptr inbounds ptr, ptr %493, i64 %indvars.iv842
  %495 = load ptr, ptr %494, align 8, !tbaa !18
  %496 = getelementptr inbounds i8, ptr %495, i64 %481
  %497 = getelementptr inbounds i8, ptr %496, i64 %65
  tail call void @llvm.memset.p0.i64(ptr align 1 %497, i8 -1, i64 %484, i1 false)
  br label %518

498:                                              ; preds = %485
  %499 = load ptr, ptr %480, align 8, !tbaa !18
  %500 = getelementptr inbounds ptr, ptr %499, i64 %indvars.iv842
  %501 = load ptr, ptr %500, align 8, !tbaa !18
  %502 = getelementptr inbounds i8, ptr %501, i64 %481
  %503 = getelementptr inbounds i8, ptr %502, i64 %65
  %504 = load ptr, ptr %499, align 8, !tbaa !18
  %505 = getelementptr inbounds i8, ptr %504, i64 %481
  %506 = getelementptr inbounds i8, ptr %505, i64 %65
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %503, ptr align 1 %506, i64 %484, i1 false)
  br label %518

507:                                              ; preds = %485
  %508 = load ptr, ptr %480, align 8, !tbaa !18
  %509 = getelementptr inbounds ptr, ptr %508, i64 %indvars.iv842
  %510 = load ptr, ptr %509, align 8, !tbaa !18
  %511 = getelementptr inbounds i8, ptr %510, i64 %481
  %512 = getelementptr inbounds i8, ptr %511, i64 %65
  %513 = sub nsw i64 0, %indvars.iv842
  %514 = getelementptr inbounds ptr, ptr %508, i64 %513
  %515 = load ptr, ptr %514, align 8, !tbaa !18
  %516 = getelementptr inbounds i8, ptr %515, i64 %481
  %517 = getelementptr inbounds i8, ptr %516, i64 %65
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %512, ptr align 1 %517, i64 %484, i1 false)
  br label %518

518:                                              ; preds = %485, %486, %498, %507, %492
  %indvars.iv.next843 = add nsw i64 %indvars.iv842, 1
  %519 = and i64 %indvars.iv.next843, 4294967295
  %exitcond846.not = icmp eq i64 %519, 0
  br i1 %exitcond846.not, label %._crit_edge754.loopexit, label %485, !llvm.loop !29

._crit_edge754.loopexit:                          ; preds = %518
  %.pre = load ptr, ptr %18, align 8, !tbaa !13
  br label %._crit_edge754

._crit_edge754:                                   ; preds = %._crit_edge754.loopexit, %477
  %520 = phi ptr [ %.pre, %._crit_edge754.loopexit ], [ %463, %477 ]
  %521 = phi i32 [ %2, %._crit_edge754.loopexit ], [ %458, %477 ]
  %522 = phi i32 [ %2, %._crit_edge754.loopexit ], [ %459, %477 ]
  %523 = phi i32 [ %2, %._crit_edge754.loopexit ], [ %460, %477 ]
  %524 = phi i32 [ %2, %._crit_edge754.loopexit ], [ %461, %477 ]
  %525 = phi i32 [ %2, %._crit_edge754.loopexit ], [ %462, %477 ]
  %526 = icmp eq ptr %520, null
  br i1 %526, label %527, label %529

527:                                              ; preds = %._crit_edge754
  %528 = load i32, ptr %16, align 8, !tbaa !12
  br label %539

529:                                              ; preds = %._crit_edge754
  %530 = getelementptr inbounds i8, ptr %520, i64 8
  %531 = load ptr, ptr %530, align 8, !tbaa !14
  %532 = getelementptr i16, ptr %531, i64 %72
  %533 = getelementptr i8, ptr %532, i64 8
  %534 = load i16, ptr %533, align 2, !tbaa !15
  %535 = sext i16 %534 to i32
  %536 = getelementptr i8, ptr %532, i64 10
  %537 = load i16, ptr %536, align 2, !tbaa !15
  %538 = sext i16 %537 to i32
  br label %539

539:                                              ; preds = %529, %527
  %540 = phi i32 [ 0, %527 ], [ %535, %529 ]
  %541 = phi i32 [ %528, %527 ], [ %538, %529 ]
  br i1 %.not653755, label %._crit_edge759, label %.lr.ph758

.lr.ph758:                                        ; preds = %539
  %542 = getelementptr inbounds [4 x ptr], ptr %63, i64 0, i64 %indvars.iv852
  %543 = sext i32 %540 to i64
  %544 = sub i32 %reass.add658, %540
  %545 = add i32 %544, %541
  %546 = sext i32 %545 to i64
  br label %547

547:                                              ; preds = %.lr.ph758, %584
  %indvars.iv847 = phi i64 [ %76, %.lr.ph758 ], [ %indvars.iv.next848, %584 ]
  switch i32 %2, label %584 [
    i32 0, label %548
    i32 1, label %554
    i32 2, label %560
    i32 3, label %571
  ]

548:                                              ; preds = %547
  %549 = load ptr, ptr %542, align 8, !tbaa !18
  %550 = getelementptr inbounds ptr, ptr %549, i64 %indvars.iv847
  %551 = load ptr, ptr %550, align 8, !tbaa !18
  %552 = getelementptr inbounds i8, ptr %551, i64 %543
  %553 = getelementptr inbounds i8, ptr %552, i64 %65
  tail call void @llvm.memset.p0.i64(ptr align 1 %553, i8 0, i64 %546, i1 false)
  br label %584

554:                                              ; preds = %547
  %555 = load ptr, ptr %542, align 8, !tbaa !18
  %556 = getelementptr inbounds ptr, ptr %555, i64 %indvars.iv847
  %557 = load ptr, ptr %556, align 8, !tbaa !18
  %558 = getelementptr inbounds i8, ptr %557, i64 %543
  %559 = getelementptr inbounds i8, ptr %558, i64 %65
  tail call void @llvm.memset.p0.i64(ptr align 1 %559, i8 -1, i64 %546, i1 false)
  br label %584

560:                                              ; preds = %547
  %561 = load ptr, ptr %542, align 8, !tbaa !18
  %562 = getelementptr inbounds ptr, ptr %561, i64 %indvars.iv847
  %563 = load ptr, ptr %562, align 8, !tbaa !18
  %564 = getelementptr inbounds i8, ptr %563, i64 %543
  %565 = getelementptr inbounds i8, ptr %564, i64 %65
  %566 = getelementptr ptr, ptr %561, i64 %76
  %567 = getelementptr i8, ptr %566, i64 -8
  %568 = load ptr, ptr %567, align 8, !tbaa !18
  %569 = getelementptr inbounds i8, ptr %568, i64 %543
  %570 = getelementptr inbounds i8, ptr %569, i64 %65
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %565, ptr align 1 %570, i64 %546, i1 false)
  br label %584

571:                                              ; preds = %547
  %572 = load ptr, ptr %542, align 8, !tbaa !18
  %573 = getelementptr inbounds ptr, ptr %572, i64 %indvars.iv847
  %574 = load ptr, ptr %573, align 8, !tbaa !18
  %575 = getelementptr inbounds i8, ptr %574, i64 %543
  %576 = getelementptr inbounds i8, ptr %575, i64 %65
  %577 = trunc nsw i64 %indvars.iv847 to i32
  %578 = sub i32 %75, %577
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds ptr, ptr %572, i64 %579
  %581 = load ptr, ptr %580, align 8, !tbaa !18
  %582 = getelementptr inbounds i8, ptr %581, i64 %543
  %583 = getelementptr inbounds i8, ptr %582, i64 %65
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %576, ptr align 1 %583, i64 %546, i1 false)
  br label %584

584:                                              ; preds = %547, %548, %560, %571, %554
  %indvars.iv.next848 = add nsw i64 %indvars.iv847, 1
  %lftr.wideiv850 = trunc i64 %indvars.iv.next848 to i32
  %exitcond851.not = icmp eq i32 %82, %lftr.wideiv850
  br i1 %exitcond851.not, label %._crit_edge759, label %547, !llvm.loop !30

._crit_edge759:                                   ; preds = %584, %539
  %585 = phi i32 [ %521, %539 ], [ %2, %584 ]
  %586 = phi i32 [ %522, %539 ], [ %2, %584 ]
  %587 = phi i32 [ %523, %539 ], [ %2, %584 ]
  %588 = phi i32 [ %524, %539 ], [ %2, %584 ]
  %589 = phi i32 [ %525, %539 ], [ %2, %584 ]
  %indvars.iv.next853 = add nuw nsw i64 %indvars.iv852, 1
  %590 = load i32, ptr %0, align 8, !tbaa !17
  %591 = sext i32 %590 to i64
  %592 = icmp slt i64 %indvars.iv.next853, %591
  br i1 %592, label %91, label %.loopexit689, !llvm.loop !31

.preheader693:                                    ; preds = %.preheader693.lr.ph, %._crit_edge717
  %.pr = phi i32 [ %2, %.preheader693.lr.ph ], [ %.pr856, %._crit_edge717 ]
  %593 = phi i32 [ %2, %.preheader693.lr.ph ], [ %827, %._crit_edge717 ]
  %indvars.iv794 = phi i64 [ 0, %.preheader693.lr.ph ], [ %indvars.iv.next795, %._crit_edge717 ]
  br i1 %.not.not700, label %.lr.ph702, label %._crit_edge

.lr.ph702:                                        ; preds = %.preheader693
  %594 = getelementptr inbounds [4 x ptr], ptr %38, i64 0, i64 %indvars.iv794
  br label %596

._crit_edge719:                                   ; preds = %._crit_edge717, %.preheader694
  %595 = call ptr @m_PropertyWrite(ptr noundef nonnull %0, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, i32 noundef 4) #5
  br label %.loopexit689

596:                                              ; preds = %.lr.ph702, %.loopexit691
  %597 = phi i32 [ %593, %.lr.ph702 ], [ %663, %.loopexit691 ]
  %indvars.iv773 = phi i64 [ %45, %.lr.ph702 ], [ %indvars.iv.next774, %.loopexit691 ]
  %598 = load ptr, ptr %18, align 8, !tbaa !13
  %599 = icmp eq ptr %598, null
  br i1 %599, label %600, label %602

600:                                              ; preds = %596
  %601 = load i32, ptr %16, align 8, !tbaa !12
  br label %612

602:                                              ; preds = %596
  %603 = getelementptr inbounds i8, ptr %598, i64 8
  %604 = load ptr, ptr %603, align 8, !tbaa !14
  %.idx = shl i64 %indvars.iv773, 2
  %605 = getelementptr i8, ptr %604, i64 %.idx
  %606 = getelementptr i8, ptr %605, i64 8
  %607 = load i16, ptr %606, align 2, !tbaa !15
  %608 = sext i16 %607 to i32
  %609 = getelementptr i8, ptr %605, i64 10
  %610 = load i16, ptr %609, align 2, !tbaa !15
  %611 = sext i16 %610 to i32
  br label %612

612:                                              ; preds = %602, %600
  %613 = phi i32 [ 0, %600 ], [ %608, %602 ]
  %614 = phi i32 [ %601, %600 ], [ %611, %602 ]
  %615 = add nsw i32 %614, -1
  switch i32 %597, label %thread-pre-split [
    i32 0, label %617
    i32 1, label %624
    i32 2, label %631
    i32 3, label %.preheader692
  ]

.preheader692:                                    ; preds = %612
  br i1 %.not650695, label %thread-pre-split, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader692
  %616 = sext i32 %613 to i64
  br i1 %56, label %thread-pre-split.loopexit.unr-lcssa, label %.lr.ph.new

617:                                              ; preds = %612
  %618 = load ptr, ptr %594, align 8, !tbaa !18
  %619 = getelementptr inbounds ptr, ptr %618, i64 %indvars.iv773
  %620 = load ptr, ptr %619, align 8, !tbaa !18
  %621 = sext i32 %613 to i64
  %622 = getelementptr inbounds i8, ptr %620, i64 %621
  %623 = getelementptr inbounds i8, ptr %622, i64 %40
  tail call void @llvm.memset.p0.i64(ptr align 1 %623, i8 0, i64 %39, i1 false)
  br label %thread-pre-split

624:                                              ; preds = %612
  %625 = load ptr, ptr %594, align 8, !tbaa !18
  %626 = getelementptr inbounds ptr, ptr %625, i64 %indvars.iv773
  %627 = load ptr, ptr %626, align 8, !tbaa !18
  %628 = sext i32 %613 to i64
  %629 = getelementptr inbounds i8, ptr %627, i64 %628
  %630 = getelementptr inbounds i8, ptr %629, i64 %40
  tail call void @llvm.memset.p0.i64(ptr align 1 %630, i8 -1, i64 %39, i1 false)
  br label %thread-pre-split

631:                                              ; preds = %612
  %632 = load ptr, ptr %594, align 8, !tbaa !18
  %633 = getelementptr inbounds ptr, ptr %632, i64 %indvars.iv773
  %634 = load ptr, ptr %633, align 8, !tbaa !18
  %635 = sext i32 %613 to i64
  %636 = getelementptr inbounds i8, ptr %634, i64 %635
  %637 = getelementptr inbounds i8, ptr %636, i64 %40
  %638 = load i8, ptr %636, align 1, !tbaa !14
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %637, i8 %638, i64 %39, i1 false)
  br label %thread-pre-split

.lr.ph.new:                                       ; preds = %.lr.ph, %.lr.ph.new
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph.new ], [ 1, %.lr.ph ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph.new ], [ 0, %.lr.ph ]
  %639 = load ptr, ptr %594, align 8, !tbaa !18
  %640 = getelementptr inbounds ptr, ptr %639, i64 %indvars.iv773
  %641 = load ptr, ptr %640, align 8, !tbaa !18
  %642 = getelementptr i8, ptr %641, i64 %indvars.iv
  %643 = getelementptr i8, ptr %642, i64 %616
  %644 = load i8, ptr %643, align 1, !tbaa !14
  %645 = sub nsw i64 %616, %indvars.iv
  %646 = getelementptr inbounds i8, ptr %641, i64 %645
  store i8 %644, ptr %646, align 1, !tbaa !14
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %647 = load ptr, ptr %594, align 8, !tbaa !18
  %648 = getelementptr inbounds ptr, ptr %647, i64 %indvars.iv773
  %649 = load ptr, ptr %648, align 8, !tbaa !18
  %650 = getelementptr i8, ptr %649, i64 %indvars.iv.next
  %651 = getelementptr i8, ptr %650, i64 %616
  %652 = load i8, ptr %651, align 1, !tbaa !14
  %653 = sub nsw i64 %616, %indvars.iv.next
  %654 = getelementptr inbounds i8, ptr %649, i64 %653
  store i8 %652, ptr %654, align 1, !tbaa !14
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %thread-pre-split.loopexit.unr-lcssa, label %.lr.ph.new, !llvm.loop !32

thread-pre-split.loopexit.unr-lcssa:              ; preds = %.lr.ph.new, %.lr.ph
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next.1, %.lr.ph.new ]
  br i1 %lcmp.mod.not, label %thread-pre-split, label %thread-pre-split.loopexit.epilog-lcssa

thread-pre-split.loopexit.epilog-lcssa:           ; preds = %thread-pre-split.loopexit.unr-lcssa
  %655 = load ptr, ptr %594, align 8, !tbaa !18
  %656 = getelementptr inbounds ptr, ptr %655, i64 %indvars.iv773
  %657 = load ptr, ptr %656, align 8, !tbaa !18
  %658 = getelementptr i8, ptr %657, i64 %indvars.iv.unr
  %659 = getelementptr i8, ptr %658, i64 %616
  %660 = load i8, ptr %659, align 1, !tbaa !14
  %661 = sub nsw i64 %616, %indvars.iv.unr
  %662 = getelementptr inbounds i8, ptr %657, i64 %661
  store i8 %660, ptr %662, align 1, !tbaa !14
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %thread-pre-split.loopexit.epilog-lcssa, %thread-pre-split.loopexit.unr-lcssa, %624, %631, %617, %.preheader692, %612
  %663 = phi i32 [ %597, %612 ], [ %.pr, %.preheader692 ], [ %.pr, %617 ], [ %.pr, %631 ], [ %.pr, %624 ], [ %.pr, %thread-pre-split.loopexit.unr-lcssa ], [ %.pr, %thread-pre-split.loopexit.epilog-lcssa ]
  switch i32 %663, label %.loopexit691 [
    i32 0, label %665
    i32 1, label %672
    i32 2, label %679
    i32 3, label %.preheader690
  ]

.preheader690:                                    ; preds = %thread-pre-split
  br i1 %.not650695, label %.loopexit691, label %.lr.ph699

.lr.ph699:                                        ; preds = %.preheader690
  %664 = sext i32 %615 to i64
  br i1 %57, label %.loopexit691.loopexit.unr-lcssa, label %.lr.ph699.new

665:                                              ; preds = %thread-pre-split
  %666 = load ptr, ptr %594, align 8, !tbaa !18
  %667 = getelementptr inbounds ptr, ptr %666, i64 %indvars.iv773
  %668 = load ptr, ptr %667, align 8, !tbaa !18
  %669 = sext i32 %615 to i64
  %670 = getelementptr inbounds i8, ptr %668, i64 %669
  %671 = getelementptr inbounds i8, ptr %670, i64 1
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %671, i8 0, i64 %39, i1 false)
  br label %.loopexit691

672:                                              ; preds = %thread-pre-split
  %673 = load ptr, ptr %594, align 8, !tbaa !18
  %674 = getelementptr inbounds ptr, ptr %673, i64 %indvars.iv773
  %675 = load ptr, ptr %674, align 8, !tbaa !18
  %676 = sext i32 %615 to i64
  %677 = getelementptr inbounds i8, ptr %675, i64 %676
  %678 = getelementptr inbounds i8, ptr %677, i64 1
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %678, i8 -1, i64 %39, i1 false)
  br label %.loopexit691

679:                                              ; preds = %thread-pre-split
  %680 = load ptr, ptr %594, align 8, !tbaa !18
  %681 = getelementptr inbounds ptr, ptr %680, i64 %indvars.iv773
  %682 = load ptr, ptr %681, align 8, !tbaa !18
  %683 = sext i32 %615 to i64
  %684 = getelementptr inbounds i8, ptr %682, i64 %683
  %685 = getelementptr inbounds i8, ptr %684, i64 1
  %686 = load i8, ptr %684, align 1, !tbaa !14
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %685, i8 %686, i64 %39, i1 false)
  br label %.loopexit691

.lr.ph699.new:                                    ; preds = %.lr.ph699, %.lr.ph699.new
  %indvars.iv768 = phi i64 [ %indvars.iv.next769.1, %.lr.ph699.new ], [ 1, %.lr.ph699 ]
  %niter900 = phi i64 [ %niter900.next.1, %.lr.ph699.new ], [ 0, %.lr.ph699 ]
  %687 = load ptr, ptr %594, align 8, !tbaa !18
  %688 = getelementptr inbounds ptr, ptr %687, i64 %indvars.iv773
  %689 = load ptr, ptr %688, align 8, !tbaa !18
  %690 = sub nsw i64 %664, %indvars.iv768
  %691 = getelementptr inbounds i8, ptr %689, i64 %690
  %692 = load i8, ptr %691, align 1, !tbaa !14
  %693 = getelementptr i8, ptr %689, i64 %indvars.iv768
  %694 = getelementptr i8, ptr %693, i64 %664
  store i8 %692, ptr %694, align 1, !tbaa !14
  %indvars.iv.next769 = add nuw nsw i64 %indvars.iv768, 1
  %695 = load ptr, ptr %594, align 8, !tbaa !18
  %696 = getelementptr inbounds ptr, ptr %695, i64 %indvars.iv773
  %697 = load ptr, ptr %696, align 8, !tbaa !18
  %698 = sub nsw i64 %664, %indvars.iv.next769
  %699 = getelementptr inbounds i8, ptr %697, i64 %698
  %700 = load i8, ptr %699, align 1, !tbaa !14
  %701 = getelementptr i8, ptr %697, i64 %indvars.iv.next769
  %702 = getelementptr i8, ptr %701, i64 %664
  store i8 %700, ptr %702, align 1, !tbaa !14
  %indvars.iv.next769.1 = add nuw nsw i64 %indvars.iv768, 2
  %niter900.next.1 = add i64 %niter900, 2
  %niter900.ncmp.1 = icmp eq i64 %niter900.next.1, %unroll_iter899
  br i1 %niter900.ncmp.1, label %.loopexit691.loopexit.unr-lcssa, label %.lr.ph699.new, !llvm.loop !33

.loopexit691.loopexit.unr-lcssa:                  ; preds = %.lr.ph699.new, %.lr.ph699
  %indvars.iv768.unr = phi i64 [ 1, %.lr.ph699 ], [ %indvars.iv.next769.1, %.lr.ph699.new ]
  br i1 %lcmp.mod898.not, label %.loopexit691, label %.loopexit691.loopexit.epilog-lcssa

.loopexit691.loopexit.epilog-lcssa:               ; preds = %.loopexit691.loopexit.unr-lcssa
  %703 = load ptr, ptr %594, align 8, !tbaa !18
  %704 = getelementptr inbounds ptr, ptr %703, i64 %indvars.iv773
  %705 = load ptr, ptr %704, align 8, !tbaa !18
  %706 = sub nsw i64 %664, %indvars.iv768.unr
  %707 = getelementptr inbounds i8, ptr %705, i64 %706
  %708 = load i8, ptr %707, align 1, !tbaa !14
  %709 = getelementptr i8, ptr %705, i64 %indvars.iv768.unr
  %710 = getelementptr i8, ptr %709, i64 %664
  store i8 %708, ptr %710, align 1, !tbaa !14
  br label %.loopexit691

.loopexit691:                                     ; preds = %.loopexit691.loopexit.epilog-lcssa, %.loopexit691.loopexit.unr-lcssa, %.preheader690, %thread-pre-split, %672, %679, %665
  %indvars.iv.next774 = add nsw i64 %indvars.iv773, 1
  %exitcond777.not = icmp eq i64 %indvars.iv.next774, %52
  br i1 %exitcond777.not, label %._crit_edge, label %596, !llvm.loop !34

._crit_edge:                                      ; preds = %.loopexit691, %.preheader693
  %711 = phi i32 [ %593, %.preheader693 ], [ %663, %.loopexit691 ]
  %712 = load ptr, ptr %18, align 8, !tbaa !13
  %713 = icmp eq ptr %712, null
  br i1 %713, label %714, label %716

714:                                              ; preds = %._crit_edge
  %715 = load i32, ptr %16, align 8, !tbaa !12
  br label %726

716:                                              ; preds = %._crit_edge
  %717 = getelementptr inbounds i8, ptr %712, i64 8
  %718 = load ptr, ptr %717, align 8, !tbaa !14
  %719 = getelementptr i16, ptr %718, i64 %42
  %720 = getelementptr i8, ptr %719, i64 8
  %721 = load i16, ptr %720, align 2, !tbaa !15
  %722 = sext i16 %721 to i32
  %723 = getelementptr i8, ptr %719, i64 10
  %724 = load i16, ptr %723, align 2, !tbaa !15
  %725 = sext i16 %724 to i32
  br label %726

726:                                              ; preds = %716, %714
  %727 = phi i32 [ 0, %714 ], [ %722, %716 ]
  %728 = phi i32 [ %715, %714 ], [ %725, %716 ]
  br i1 %44, label %.lr.ph705, label %._crit_edge706

.lr.ph705:                                        ; preds = %726
  %729 = add nsw i32 %728, -1
  %730 = getelementptr inbounds [4 x ptr], ptr %38, i64 0, i64 %indvars.iv794
  %731 = sext i32 %727 to i64
  %732 = sub i32 %reass.add646, %727
  %733 = add i32 %732, %729
  %734 = sext i32 %733 to i64
  switch i32 %2, label %._crit_edge706 [
    i32 0, label %.lr.ph705.split.us
    i32 1, label %.lr.ph705.split.us707
    i32 2, label %.lr.ph705.split.us709
    i32 3, label %.lr.ph705.split.us711
  ]

.lr.ph705.split.us:                               ; preds = %.lr.ph705, %.lr.ph705.split.us
  %indvars.iv787 = phi i64 [ %indvars.iv.next788, %.lr.ph705.split.us ], [ %51, %.lr.ph705 ]
  %735 = load ptr, ptr %730, align 8, !tbaa !18
  %736 = getelementptr inbounds ptr, ptr %735, i64 %indvars.iv787
  %737 = load ptr, ptr %736, align 8, !tbaa !18
  %738 = getelementptr inbounds i8, ptr %737, i64 %731
  %739 = getelementptr inbounds i8, ptr %738, i64 %40
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %739, i8 0, i64 %734, i1 false)
  %indvars.iv.next788 = add nsw i64 %indvars.iv787, 1
  %740 = icmp slt i64 %indvars.iv.next788, %45
  br i1 %740, label %.lr.ph705.split.us, label %._crit_edge706, !llvm.loop !35

.lr.ph705.split.us707:                            ; preds = %.lr.ph705, %.lr.ph705.split.us707
  %indvars.iv784 = phi i64 [ %indvars.iv.next785, %.lr.ph705.split.us707 ], [ %51, %.lr.ph705 ]
  %741 = load ptr, ptr %730, align 8, !tbaa !18
  %742 = getelementptr inbounds ptr, ptr %741, i64 %indvars.iv784
  %743 = load ptr, ptr %742, align 8, !tbaa !18
  %744 = getelementptr inbounds i8, ptr %743, i64 %731
  %745 = getelementptr inbounds i8, ptr %744, i64 %40
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %745, i8 -1, i64 %734, i1 false)
  %indvars.iv.next785 = add nsw i64 %indvars.iv784, 1
  %746 = icmp slt i64 %indvars.iv.next785, %45
  br i1 %746, label %.lr.ph705.split.us707, label %._crit_edge706, !llvm.loop !35

.lr.ph705.split.us709:                            ; preds = %.lr.ph705, %.lr.ph705.split.us709
  %indvars.iv781 = phi i64 [ %indvars.iv.next782, %.lr.ph705.split.us709 ], [ %51, %.lr.ph705 ]
  %747 = load ptr, ptr %730, align 8, !tbaa !18
  %748 = getelementptr inbounds ptr, ptr %747, i64 %indvars.iv781
  %749 = load ptr, ptr %748, align 8, !tbaa !18
  %750 = getelementptr inbounds i8, ptr %749, i64 %731
  %751 = getelementptr inbounds i8, ptr %750, i64 %40
  %752 = getelementptr inbounds ptr, ptr %747, i64 %45
  %753 = load ptr, ptr %752, align 8, !tbaa !18
  %754 = getelementptr inbounds i8, ptr %753, i64 %731
  %755 = getelementptr inbounds i8, ptr %754, i64 %40
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %751, ptr nonnull align 1 %755, i64 %734, i1 false)
  %indvars.iv.next782 = add nsw i64 %indvars.iv781, 1
  %756 = icmp slt i64 %indvars.iv.next782, %45
  br i1 %756, label %.lr.ph705.split.us709, label %._crit_edge706, !llvm.loop !35

.lr.ph705.split.us711:                            ; preds = %.lr.ph705, %.lr.ph705.split.us711
  %indvars.iv778 = phi i64 [ %indvars.iv.next779, %.lr.ph705.split.us711 ], [ %51, %.lr.ph705 ]
  %757 = load ptr, ptr %730, align 8, !tbaa !18
  %758 = getelementptr inbounds ptr, ptr %757, i64 %indvars.iv778
  %759 = load ptr, ptr %758, align 8, !tbaa !18
  %760 = getelementptr inbounds i8, ptr %759, i64 %731
  %761 = getelementptr inbounds i8, ptr %760, i64 %40
  %762 = sub nsw i64 %42, %indvars.iv778
  %763 = getelementptr inbounds ptr, ptr %757, i64 %762
  %764 = load ptr, ptr %763, align 8, !tbaa !18
  %765 = getelementptr inbounds i8, ptr %764, i64 %731
  %766 = getelementptr inbounds i8, ptr %765, i64 %40
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %761, ptr nonnull align 1 %766, i64 %734, i1 false)
  %indvars.iv.next779 = add nsw i64 %indvars.iv778, 1
  %767 = icmp slt i64 %indvars.iv.next779, %45
  br i1 %767, label %.lr.ph705.split.us711, label %._crit_edge706, !llvm.loop !35

._crit_edge706:                                   ; preds = %.lr.ph705.split.us711, %.lr.ph705.split.us709, %.lr.ph705.split.us707, %.lr.ph705.split.us, %.lr.ph705, %726
  %.pr857 = phi i32 [ %.pr, %726 ], [ %2, %.lr.ph705 ], [ 0, %.lr.ph705.split.us ], [ 1, %.lr.ph705.split.us707 ], [ 2, %.lr.ph705.split.us709 ], [ 3, %.lr.ph705.split.us711 ]
  %768 = phi i32 [ %711, %726 ], [ %2, %.lr.ph705 ], [ 0, %.lr.ph705.split.us ], [ 1, %.lr.ph705.split.us707 ], [ 2, %.lr.ph705.split.us709 ], [ 3, %.lr.ph705.split.us711 ]
  %769 = load ptr, ptr %18, align 8, !tbaa !13
  %770 = icmp eq ptr %769, null
  br i1 %770, label %771, label %773

771:                                              ; preds = %._crit_edge706
  %772 = load i32, ptr %16, align 8, !tbaa !12
  br label %783

773:                                              ; preds = %._crit_edge706
  %774 = getelementptr inbounds i8, ptr %769, i64 8
  %775 = load ptr, ptr %774, align 8, !tbaa !14
  %776 = getelementptr i16, ptr %775, i64 %47
  %777 = getelementptr i8, ptr %776, i64 8
  %778 = load i16, ptr %777, align 2, !tbaa !15
  %779 = sext i16 %778 to i32
  %780 = getelementptr i8, ptr %776, i64 10
  %781 = load i16, ptr %780, align 2, !tbaa !15
  %782 = sext i16 %781 to i32
  br label %783

783:                                              ; preds = %773, %771
  %784 = phi i32 [ 0, %771 ], [ %779, %773 ]
  %785 = phi i32 [ %772, %771 ], [ %782, %773 ]
  br i1 %.not713, label %._crit_edge717, label %.lr.ph716

.lr.ph716:                                        ; preds = %783
  %786 = add nsw i32 %785, -1
  %787 = getelementptr inbounds [4 x ptr], ptr %38, i64 0, i64 %indvars.iv794
  %788 = sext i32 %784 to i64
  %789 = sub i32 %reass.add646, %784
  %790 = add i32 %789, %786
  %791 = sext i32 %790 to i64
  br label %792

792:                                              ; preds = %.lr.ph716, %826
  %indvars.iv790 = phi i64 [ %52, %.lr.ph716 ], [ %indvars.iv.next791, %826 ]
  switch i32 %2, label %826 [
    i32 0, label %793
    i32 1, label %799
    i32 2, label %805
    i32 3, label %815
  ]

793:                                              ; preds = %792
  %794 = load ptr, ptr %787, align 8, !tbaa !18
  %795 = getelementptr inbounds ptr, ptr %794, i64 %indvars.iv790
  %796 = load ptr, ptr %795, align 8, !tbaa !18
  %797 = getelementptr inbounds i8, ptr %796, i64 %788
  %798 = getelementptr inbounds i8, ptr %797, i64 %40
  tail call void @llvm.memset.p0.i64(ptr align 1 %798, i8 0, i64 %791, i1 false)
  br label %826

799:                                              ; preds = %792
  %800 = load ptr, ptr %787, align 8, !tbaa !18
  %801 = getelementptr inbounds ptr, ptr %800, i64 %indvars.iv790
  %802 = load ptr, ptr %801, align 8, !tbaa !18
  %803 = getelementptr inbounds i8, ptr %802, i64 %788
  %804 = getelementptr inbounds i8, ptr %803, i64 %40
  tail call void @llvm.memset.p0.i64(ptr align 1 %804, i8 -1, i64 %791, i1 false)
  br label %826

805:                                              ; preds = %792
  %806 = load ptr, ptr %787, align 8, !tbaa !18
  %807 = getelementptr inbounds ptr, ptr %806, i64 %indvars.iv790
  %808 = load ptr, ptr %807, align 8, !tbaa !18
  %809 = getelementptr inbounds i8, ptr %808, i64 %788
  %810 = getelementptr inbounds i8, ptr %809, i64 %40
  %811 = getelementptr inbounds ptr, ptr %806, i64 %49
  %812 = load ptr, ptr %811, align 8, !tbaa !18
  %813 = getelementptr inbounds i8, ptr %812, i64 %788
  %814 = getelementptr inbounds i8, ptr %813, i64 %40
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %810, ptr align 1 %814, i64 %791, i1 false)
  br label %826

815:                                              ; preds = %792
  %816 = load ptr, ptr %787, align 8, !tbaa !18
  %817 = getelementptr inbounds ptr, ptr %816, i64 %indvars.iv790
  %818 = load ptr, ptr %817, align 8, !tbaa !18
  %819 = getelementptr inbounds i8, ptr %818, i64 %788
  %820 = getelementptr inbounds i8, ptr %819, i64 %40
  %821 = sub nsw i64 %47, %indvars.iv790
  %822 = getelementptr inbounds ptr, ptr %816, i64 %821
  %823 = load ptr, ptr %822, align 8, !tbaa !18
  %824 = getelementptr inbounds i8, ptr %823, i64 %788
  %825 = getelementptr inbounds i8, ptr %824, i64 %40
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %820, ptr align 1 %825, i64 %791, i1 false)
  br label %826

826:                                              ; preds = %792, %793, %805, %815, %799
  %indvars.iv.next791 = add nsw i64 %indvars.iv790, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next791 to i32
  %exitcond793.not = icmp eq i32 %53, %lftr.wideiv
  br i1 %exitcond793.not, label %._crit_edge717, label %792, !llvm.loop !36

._crit_edge717:                                   ; preds = %826, %783
  %.pr856 = phi i32 [ %.pr857, %783 ], [ %2, %826 ]
  %827 = phi i32 [ %768, %783 ], [ %2, %826 ]
  %indvars.iv.next795 = add nuw nsw i64 %indvars.iv794, 1
  %828 = load i32, ptr %0, align 8, !tbaa !17
  %829 = sext i32 %828 to i64
  %830 = icmp slt i64 %indvars.iv.next795, %829
  br i1 %830, label %.preheader693, label %._crit_edge719, !llvm.loop !37

.loopexit689:                                     ; preds = %._crit_edge759, %.preheader688, %._crit_edge719
  ret void
}

declare ptr @m_PropertyRead(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #4

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 4}
!10 = !{!"MImage", !6, i64 0, !6, i64 4, !6, i64 8, !7, i64 16, !11, i64 48}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!10, !6, i64 8}
!13 = !{!10, !11, i64 48}
!14 = !{!7, !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!10, !6, i64 0}
!18 = !{!11, !11, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !20}
!31 = distinct !{!31, !20}
!32 = distinct !{!32, !20}
!33 = distinct !{!33, !20}
!34 = distinct !{!34, !20}
!35 = distinct !{!35, !20}
!36 = distinct !{!36, !20}
!37 = distinct !{!37, !20}


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