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

; 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 [87 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [19 x i8], align 1
@__FUNCTION__.mImageGradientAdaptCheck = external hidden unnamed_addr constant [25 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

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

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

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

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

declare void @HandleExchange(ptr noundef, ptr noundef) #1

declare void @mImageRelease(ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @mImageGradientAdaptCheck(ptr noundef %0, ptr noundef %1, i32 noundef %2, float noundef %3) #3 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca float, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca [256 x i8], align 16
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i8, align 1
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i8, align 1
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i8, align 1
  %40 = alloca %struct.MImage, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  store float %3, ptr %8, align 4, !tbaa !11
  br label %41

41:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  %42 = load i32, ptr %7, align 4, !tbaa !9
  %43 = icmp sgt i32 %42, 4
  %44 = zext i1 %43 to i32
  store i32 %44, ptr %9, align 4, !tbaa !9
  %45 = load i32, ptr %9, align 4, !tbaa !9
  %46 = icmp ne i32 %45, 0
  br i1 %46, label %47, label %49

47:                                               ; preds = %41
  %48 = load i32, ptr %9, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %48, i32 noundef -1, ptr noundef @.str, i32 noundef 156, ptr noundef @__FUNCTION__.mImageGradientAdaptCheck, ptr noundef @.str.1)
  br label %49

49:                                               ; preds = %47, %41
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  br label %50

50:                                               ; preds = %49
  %51 = load ptr, ptr %5, align 8, !tbaa !5
  %52 = load i32, ptr %7, align 4, !tbaa !9
  call void @mImageExpand(ptr noundef %51, i32 noundef %52, i32 noundef 3)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  %53 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %53, ptr %10, align 8, !tbaa !5
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  %55 = icmp eq ptr %54, null
  br i1 %55, label %64, label %56

56:                                               ; preds = %50
  %57 = load ptr, ptr %6, align 8, !tbaa !5
  %58 = ptrtoint ptr %57 to i64
  %59 = icmp eq i64 %58, -1
  br i1 %59, label %64, label %60

60:                                               ; preds = %56
  %61 = load ptr, ptr %6, align 8, !tbaa !5
  %62 = load ptr, ptr %5, align 8, !tbaa !5
  %63 = icmp eq ptr %61, %62
  br i1 %63, label %64, label %72

64:                                               ; preds = %60, %56, %50
  %65 = load ptr, ptr %5, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.MImage, ptr %65, i32 0, i32 1
  %67 = load i32, ptr %66, align 4, !tbaa !13
  %68 = load ptr, ptr %5, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.MImage, ptr %68, i32 0, i32 2
  %70 = load i32, ptr %69, align 8, !tbaa !15
  %71 = call ptr @ImageCreate(i32 noundef 1, i32 noundef %67, i32 noundef %70, ptr noundef null)
  store ptr %71, ptr %6, align 8, !tbaa !5
  br label %126

72:                                               ; preds = %60
  br label %73

73:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  store i32 4, ptr %11, align 4, !tbaa !9
  %74 = load i32, ptr %11, align 4, !tbaa !9
  %75 = icmp eq i32 %74, 2
  br i1 %75, label %76, label %84

76:                                               ; preds = %73
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  %78 = load ptr, ptr %5, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.MImage, ptr %78, i32 0, i32 1
  %80 = load i32, ptr %79, align 4, !tbaa !13
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.MImage, ptr %81, i32 0, i32 3
  %83 = getelementptr inbounds [4 x ptr], ptr %82, i64 0, i64 0
  call void @ImageRedefine(ptr noundef %77, i32 noundef -1, i32 noundef 1, i32 noundef %80, ptr noundef %83)
  br label %123

84:                                               ; preds = %73
  %85 = load i32, ptr %11, align 4, !tbaa !9
  %86 = icmp eq i32 %85, 3
  br i1 %86, label %87, label %98

87:                                               ; preds = %84
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  %89 = load ptr, ptr %5, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.MImage, ptr %89, i32 0, i32 1
  %91 = load i32, ptr %90, align 4, !tbaa !13
  %92 = load ptr, ptr %5, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.MImage, ptr %92, i32 0, i32 2
  %94 = load i32, ptr %93, align 8, !tbaa !15
  %95 = load ptr, ptr %6, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.MImage, ptr %95, i32 0, i32 3
  %97 = getelementptr inbounds [4 x ptr], ptr %96, i64 0, i64 0
  call void @ImageRedefine(ptr noundef %88, i32 noundef 1, i32 noundef %91, i32 noundef %94, ptr noundef %97)
  br label %122

98:                                               ; preds = %84
  %99 = load i32, ptr %11, align 4, !tbaa !9
  %100 = icmp eq i32 %99, 4
  br i1 %100, label %101, label %112

101:                                              ; preds = %98
  %102 = load ptr, ptr %6, align 8, !tbaa !5
  %103 = load ptr, ptr %5, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.MImage, ptr %103, i32 0, i32 1
  %105 = load i32, ptr %104, align 4, !tbaa !13
  %106 = load ptr, ptr %5, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.MImage, ptr %106, i32 0, i32 2
  %108 = load i32, ptr %107, align 8, !tbaa !15
  %109 = load ptr, ptr %6, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.MImage, ptr %109, i32 0, i32 3
  %111 = getelementptr inbounds [4 x ptr], ptr %110, i64 0, i64 0
  call void @ImageRedefine(ptr noundef %102, i32 noundef 1, i32 noundef %105, i32 noundef %108, ptr noundef %111)
  br label %121

112:                                              ; preds = %98
  br label %113

113:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  store i32 1, ptr %12, align 4, !tbaa !9
  %114 = load i32, ptr %12, align 4, !tbaa !9
  %115 = icmp ne i32 %114, 0
  br i1 %115, label %116, label %118

116:                                              ; preds = %113
  %117 = load i32, ptr %12, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %117, i32 noundef -1, ptr noundef @.str, i32 noundef 164, ptr noundef @__FUNCTION__.mImageGradientAdaptCheck, ptr noundef @.str.2)
  br label %118

118:                                              ; preds = %116, %113
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  br label %119

119:                                              ; preds = %118
  br label %120

120:                                              ; preds = %119
  br label %121

121:                                              ; preds = %120, %101
  br label %122

122:                                              ; preds = %121, %87
  br label %123

123:                                              ; preds = %122, %76
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  br label %124

124:                                              ; preds = %123
  br label %125

125:                                              ; preds = %124
  br label %126

126:                                              ; preds = %125, %64
  call void @llvm.lifetime.start.p0(i64 256, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %154, %126
  %128 = load i32, ptr %14, align 4, !tbaa !9
  %129 = icmp slt i32 %128, 256
  br i1 %129, label %131, label %130

130:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  br label %157

131:                                              ; preds = %127
  %132 = load i32, ptr %14, align 4, !tbaa !9
  %133 = sitofp i32 %132 to float
  %134 = load float, ptr %8, align 4, !tbaa !11
  %135 = fmul float %133, %134
  %136 = fpext float %135 to double
  %137 = fadd double %136, 5.000000e-01
  %138 = fptosi double %137 to i32
  %139 = trunc i32 %138 to i8
  %140 = load i32, ptr %14, align 4, !tbaa !9
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %141
  store i8 %139, ptr %142, align 1, !tbaa !16
  %143 = load i32, ptr %14, align 4, !tbaa !9
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %144
  %146 = load i8, ptr %145, align 1, !tbaa !16
  %147 = zext i8 %146 to i32
  %148 = icmp slt i32 %147, 5
  br i1 %148, label %149, label %153

149:                                              ; preds = %131
  %150 = load i32, ptr %14, align 4, !tbaa !9
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %151
  store i8 5, ptr %152, align 1, !tbaa !16
  br label %153

153:                                              ; preds = %149, %131
  br label %154

154:                                              ; preds = %153
  %155 = load i32, ptr %14, align 4, !tbaa !9
  %156 = add nsw i32 %155, 1
  store i32 %156, ptr %14, align 4, !tbaa !9
  br label %127, !llvm.loop !17

157:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  %158 = load ptr, ptr %5, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.MImage, ptr %158, i32 0, i32 0
  %160 = load i32, ptr %159, align 8, !tbaa !19
  store i32 %160, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  %161 = load ptr, ptr %5, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.MImage, ptr %161, i32 0, i32 3
  %163 = getelementptr inbounds [4 x ptr], ptr %162, i64 0, i64 0
  store ptr %163, ptr %16, align 8, !tbaa !5
  br label %164

164:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  %165 = load ptr, ptr %5, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.MImage, ptr %165, i32 0, i32 4
  %167 = load ptr, ptr %166, align 8, !tbaa !20
  %168 = icmp eq ptr %167, null
  br i1 %168, label %169, label %170

169:                                              ; preds = %164
  br label %179

170:                                              ; preds = %164
  %171 = load ptr, ptr %5, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.MImage, ptr %171, i32 0, i32 4
  %173 = load ptr, ptr %172, align 8, !tbaa !20
  %174 = getelementptr inbounds %struct.MArray, ptr %173, i32 0, i32 2
  %175 = load ptr, ptr %174, align 8, !tbaa !16
  %176 = getelementptr inbounds i16, ptr %175, i64 2
  %177 = load i16, ptr %176, align 2, !tbaa !21
  %178 = sext i16 %177 to i32
  br label %179

179:                                              ; preds = %170, %169
  %180 = phi i32 [ 0, %169 ], [ %178, %170 ]
  store i32 %180, ptr %17, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %5161, %179
  %182 = load i32, ptr %17, align 4, !tbaa !9
  %183 = load ptr, ptr %5, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.MImage, ptr %183, i32 0, i32 4
  %185 = load ptr, ptr %184, align 8, !tbaa !20
  %186 = icmp eq ptr %185, null
  br i1 %186, label %187, label %191

187:                                              ; preds = %181
  %188 = load ptr, ptr %5, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.MImage, ptr %188, i32 0, i32 1
  %190 = load i32, ptr %189, align 4, !tbaa !13
  br label %200

191:                                              ; preds = %181
  %192 = load ptr, ptr %5, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.MImage, ptr %192, i32 0, i32 4
  %194 = load ptr, ptr %193, align 8, !tbaa !20
  %195 = getelementptr inbounds %struct.MArray, ptr %194, i32 0, i32 2
  %196 = load ptr, ptr %195, align 8, !tbaa !16
  %197 = getelementptr inbounds i16, ptr %196, i64 3
  %198 = load i16, ptr %197, align 2, !tbaa !21
  %199 = sext i16 %198 to i32
  br label %200

200:                                              ; preds = %191, %187
  %201 = phi i32 [ %190, %187 ], [ %199, %191 ]
  %202 = icmp slt i32 %182, %201
  br i1 %202, label %203, label %5168

203:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %204 = load ptr, ptr %5, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.MImage, ptr %204, i32 0, i32 2
  %206 = load i32, ptr %205, align 8, !tbaa !15
  store i32 %206, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  %207 = load ptr, ptr %5, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.MImage, ptr %207, i32 0, i32 2
  %209 = load i32, ptr %208, align 8, !tbaa !15
  store i32 %209, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  store i32 0, ptr %21, align 4, !tbaa !9
  %210 = load ptr, ptr %5, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.MImage, ptr %210, i32 0, i32 4
  %212 = load ptr, ptr %211, align 8, !tbaa !20
  %213 = icmp ne ptr %212, null
  br i1 %213, label %214, label %349

214:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  %215 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %215, ptr %22, align 4, !tbaa !9
  br label %216

216:                                              ; preds = %345, %214
  %217 = load i32, ptr %22, align 4, !tbaa !9
  %218 = load i32, ptr %17, align 4, !tbaa !9
  %219 = load i32, ptr %7, align 4, !tbaa !9
  %220 = sub nsw i32 16, %219
  %221 = load i32, ptr %7, align 4, !tbaa !9
  %222 = sub nsw i32 %220, %221
  %223 = add nsw i32 %218, %222
  %224 = load ptr, ptr %5, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.MImage, ptr %224, i32 0, i32 4
  %226 = load ptr, ptr %225, align 8, !tbaa !20
  %227 = icmp eq ptr %226, null
  br i1 %227, label %228, label %232

228:                                              ; preds = %216
  %229 = load ptr, ptr %5, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.MImage, ptr %229, i32 0, i32 1
  %231 = load i32, ptr %230, align 4, !tbaa !13
  br label %241

232:                                              ; preds = %216
  %233 = load ptr, ptr %5, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.MImage, ptr %233, i32 0, i32 4
  %235 = load ptr, ptr %234, align 8, !tbaa !20
  %236 = getelementptr inbounds %struct.MArray, ptr %235, i32 0, i32 2
  %237 = load ptr, ptr %236, align 8, !tbaa !16
  %238 = getelementptr inbounds i16, ptr %237, i64 3
  %239 = load i16, ptr %238, align 2, !tbaa !21
  %240 = sext i16 %239 to i32
  br label %241

241:                                              ; preds = %232, %228
  %242 = phi i32 [ %231, %228 ], [ %240, %232 ]
  %243 = icmp slt i32 %223, %242
  br i1 %243, label %244, label %251

244:                                              ; preds = %241
  %245 = load i32, ptr %17, align 4, !tbaa !9
  %246 = load i32, ptr %7, align 4, !tbaa !9
  %247 = sub nsw i32 16, %246
  %248 = load i32, ptr %7, align 4, !tbaa !9
  %249 = sub nsw i32 %247, %248
  %250 = add nsw i32 %245, %249
  br label %271

251:                                              ; preds = %241
  %252 = load ptr, ptr %5, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.MImage, ptr %252, i32 0, i32 4
  %254 = load ptr, ptr %253, align 8, !tbaa !20
  %255 = icmp eq ptr %254, null
  br i1 %255, label %256, label %260

256:                                              ; preds = %251
  %257 = load ptr, ptr %5, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.MImage, ptr %257, i32 0, i32 1
  %259 = load i32, ptr %258, align 4, !tbaa !13
  br label %269

260:                                              ; preds = %251
  %261 = load ptr, ptr %5, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.MImage, ptr %261, i32 0, i32 4
  %263 = load ptr, ptr %262, align 8, !tbaa !20
  %264 = getelementptr inbounds %struct.MArray, ptr %263, i32 0, i32 2
  %265 = load ptr, ptr %264, align 8, !tbaa !16
  %266 = getelementptr inbounds i16, ptr %265, i64 3
  %267 = load i16, ptr %266, align 2, !tbaa !21
  %268 = sext i16 %267 to i32
  br label %269

269:                                              ; preds = %260, %256
  %270 = phi i32 [ %259, %256 ], [ %268, %260 ]
  br label %271

271:                                              ; preds = %269, %244
  %272 = phi i32 [ %250, %244 ], [ %270, %269 ]
  %273 = icmp slt i32 %217, %272
  br i1 %273, label %275, label %274

274:                                              ; preds = %271
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  br label %348

275:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  %276 = load ptr, ptr %5, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.MImage, ptr %276, i32 0, i32 4
  %278 = load ptr, ptr %277, align 8, !tbaa !20
  %279 = icmp eq ptr %278, null
  br i1 %279, label %280, label %281

280:                                              ; preds = %275
  br label %295

281:                                              ; preds = %275
  %282 = load ptr, ptr %5, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.MImage, ptr %282, i32 0, i32 4
  %284 = load ptr, ptr %283, align 8, !tbaa !20
  %285 = getelementptr inbounds %struct.MArray, ptr %284, i32 0, i32 2
  %286 = load ptr, ptr %285, align 8, !tbaa !16
  %287 = load i32, ptr %22, align 4, !tbaa !9
  %288 = load i32, ptr %22, align 4, !tbaa !9
  %289 = add nsw i32 %287, %288
  %290 = add nsw i32 %289, 4
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds i16, ptr %286, i64 %291
  %293 = load i16, ptr %292, align 2, !tbaa !21
  %294 = sext i16 %293 to i32
  br label %295

295:                                              ; preds = %281, %280
  %296 = phi i32 [ 0, %280 ], [ %294, %281 ]
  store i32 %296, ptr %23, align 4, !tbaa !9
  %297 = load i32, ptr %23, align 4, !tbaa !9
  %298 = load i32, ptr %18, align 4, !tbaa !9
  %299 = icmp slt i32 %297, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %295
  %301 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %301, ptr %18, align 4, !tbaa !9
  br label %302

302:                                              ; preds = %300, %295
  %303 = load i32, ptr %23, align 4, !tbaa !9
  %304 = load i32, ptr %19, align 4, !tbaa !9
  %305 = icmp sgt i32 %303, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %302
  %307 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %307, ptr %19, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %306, %302
  %309 = load ptr, ptr %5, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.MImage, ptr %309, i32 0, i32 4
  %311 = load ptr, ptr %310, align 8, !tbaa !20
  %312 = icmp eq ptr %311, null
  br i1 %312, label %313, label %317

313:                                              ; preds = %308
  %314 = load ptr, ptr %5, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.MImage, ptr %314, i32 0, i32 2
  %316 = load i32, ptr %315, align 8, !tbaa !15
  br label %331

317:                                              ; preds = %308
  %318 = load ptr, ptr %5, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.MImage, ptr %318, i32 0, i32 4
  %320 = load ptr, ptr %319, align 8, !tbaa !20
  %321 = getelementptr inbounds %struct.MArray, ptr %320, i32 0, i32 2
  %322 = load ptr, ptr %321, align 8, !tbaa !16
  %323 = load i32, ptr %22, align 4, !tbaa !9
  %324 = load i32, ptr %22, align 4, !tbaa !9
  %325 = add nsw i32 %323, %324
  %326 = add nsw i32 %325, 5
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds i16, ptr %322, i64 %327
  %329 = load i16, ptr %328, align 2, !tbaa !21
  %330 = sext i16 %329 to i32
  br label %331

331:                                              ; preds = %317, %313
  %332 = phi i32 [ %316, %313 ], [ %330, %317 ]
  store i32 %332, ptr %23, align 4, !tbaa !9
  %333 = load i32, ptr %23, align 4, !tbaa !9
  %334 = load i32, ptr %20, align 4, !tbaa !9
  %335 = icmp slt i32 %333, %334
  br i1 %335, label %336, label %338

336:                                              ; preds = %331
  %337 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %337, ptr %20, align 4, !tbaa !9
  br label %338

338:                                              ; preds = %336, %331
  %339 = load i32, ptr %23, align 4, !tbaa !9
  %340 = load i32, ptr %21, align 4, !tbaa !9
  %341 = icmp sgt i32 %339, %340
  br i1 %341, label %342, label %344

342:                                              ; preds = %338
  %343 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %343, ptr %21, align 4, !tbaa !9
  br label %344

344:                                              ; preds = %342, %338
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  br label %345

345:                                              ; preds = %344
  %346 = load i32, ptr %22, align 4, !tbaa !9
  %347 = add nsw i32 %346, 1
  store i32 %347, ptr %22, align 4, !tbaa !9
  br label %216, !llvm.loop !23

348:                                              ; preds = %274
  br label %349

349:                                              ; preds = %348, %203
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  %350 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %350, ptr %24, align 4, !tbaa !9
  br label %351

351:                                              ; preds = %1957, %349
  %352 = load i32, ptr %24, align 4, !tbaa !9
  %353 = load i32, ptr %19, align 4, !tbaa !9
  %354 = icmp slt i32 %352, %353
  br i1 %354, label %356, label %355

355:                                              ; preds = %351
  store i32 19, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  br label %1960

356:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %357 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %357, ptr %26, align 4, !tbaa !9
  br label %358

358:                                              ; preds = %1953, %356
  %359 = load i32, ptr %26, align 4, !tbaa !9
  %360 = load i32, ptr %17, align 4, !tbaa !9
  %361 = load i32, ptr %7, align 4, !tbaa !9
  %362 = sub nsw i32 16, %361
  %363 = load i32, ptr %7, align 4, !tbaa !9
  %364 = sub nsw i32 %362, %363
  %365 = add nsw i32 %360, %364
  %366 = load ptr, ptr %5, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.MImage, ptr %366, i32 0, i32 4
  %368 = load ptr, ptr %367, align 8, !tbaa !20
  %369 = icmp eq ptr %368, null
  br i1 %369, label %370, label %374

370:                                              ; preds = %358
  %371 = load ptr, ptr %5, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.MImage, ptr %371, i32 0, i32 1
  %373 = load i32, ptr %372, align 4, !tbaa !13
  br label %383

374:                                              ; preds = %358
  %375 = load ptr, ptr %5, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.MImage, ptr %375, i32 0, i32 4
  %377 = load ptr, ptr %376, align 8, !tbaa !20
  %378 = getelementptr inbounds %struct.MArray, ptr %377, i32 0, i32 2
  %379 = load ptr, ptr %378, align 8, !tbaa !16
  %380 = getelementptr inbounds i16, ptr %379, i64 3
  %381 = load i16, ptr %380, align 2, !tbaa !21
  %382 = sext i16 %381 to i32
  br label %383

383:                                              ; preds = %374, %370
  %384 = phi i32 [ %373, %370 ], [ %382, %374 ]
  %385 = icmp slt i32 %365, %384
  br i1 %385, label %386, label %393

386:                                              ; preds = %383
  %387 = load i32, ptr %17, align 4, !tbaa !9
  %388 = load i32, ptr %7, align 4, !tbaa !9
  %389 = sub nsw i32 16, %388
  %390 = load i32, ptr %7, align 4, !tbaa !9
  %391 = sub nsw i32 %389, %390
  %392 = add nsw i32 %387, %391
  br label %413

393:                                              ; preds = %383
  %394 = load ptr, ptr %5, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.MImage, ptr %394, i32 0, i32 4
  %396 = load ptr, ptr %395, align 8, !tbaa !20
  %397 = icmp eq ptr %396, null
  br i1 %397, label %398, label %402

398:                                              ; preds = %393
  %399 = load ptr, ptr %5, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.MImage, ptr %399, i32 0, i32 1
  %401 = load i32, ptr %400, align 4, !tbaa !13
  br label %411

402:                                              ; preds = %393
  %403 = load ptr, ptr %5, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.MImage, ptr %403, i32 0, i32 4
  %405 = load ptr, ptr %404, align 8, !tbaa !20
  %406 = getelementptr inbounds %struct.MArray, ptr %405, i32 0, i32 2
  %407 = load ptr, ptr %406, align 8, !tbaa !16
  %408 = getelementptr inbounds i16, ptr %407, i64 3
  %409 = load i16, ptr %408, align 2, !tbaa !21
  %410 = sext i16 %409 to i32
  br label %411

411:                                              ; preds = %402, %398
  %412 = phi i32 [ %401, %398 ], [ %410, %402 ]
  br label %413

413:                                              ; preds = %411, %386
  %414 = phi i32 [ %392, %386 ], [ %412, %411 ]
  %415 = icmp slt i32 %359, %414
  br i1 %415, label %417, label %416

416:                                              ; preds = %413
  store i32 22, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  br label %1956

417:                                              ; preds = %413
  %418 = load i32, ptr %24, align 4, !tbaa !9
  %419 = load ptr, ptr %5, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.MImage, ptr %419, i32 0, i32 4
  %421 = load ptr, ptr %420, align 8, !tbaa !20
  %422 = icmp eq ptr %421, null
  br i1 %422, label %423, label %424

423:                                              ; preds = %417
  br label %438

424:                                              ; preds = %417
  %425 = load ptr, ptr %5, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.MImage, ptr %425, i32 0, i32 4
  %427 = load ptr, ptr %426, align 8, !tbaa !20
  %428 = getelementptr inbounds %struct.MArray, ptr %427, i32 0, i32 2
  %429 = load ptr, ptr %428, align 8, !tbaa !16
  %430 = load i32, ptr %26, align 4, !tbaa !9
  %431 = load i32, ptr %26, align 4, !tbaa !9
  %432 = add nsw i32 %430, %431
  %433 = add nsw i32 %432, 4
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds i16, ptr %429, i64 %434
  %436 = load i16, ptr %435, align 2, !tbaa !21
  %437 = sext i16 %436 to i32
  br label %438

438:                                              ; preds = %424, %423
  %439 = phi i32 [ 0, %423 ], [ %437, %424 ]
  %440 = icmp sgt i32 %418, %439
  br i1 %440, label %441, label %1952

441:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %442 = load ptr, ptr %6, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.MImage, ptr %442, i32 0, i32 3
  %444 = getelementptr inbounds [4 x ptr], ptr %443, i64 0, i64 0
  %445 = load ptr, ptr %444, align 8, !tbaa !5
  %446 = load i32, ptr %26, align 4, !tbaa !9
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds ptr, ptr %445, i64 %447
  %449 = load ptr, ptr %448, align 8, !tbaa !5
  %450 = load i32, ptr %24, align 4, !tbaa !9
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds i8, ptr %449, i64 %451
  store i8 0, ptr %452, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %453

453:                                              ; preds = %1947, %441
  %454 = load i32, ptr %28, align 4, !tbaa !9
  %455 = load i32, ptr %15, align 4, !tbaa !9
  %456 = icmp slt i32 %454, %455
  br i1 %456, label %458, label %457

457:                                              ; preds = %453
  store i32 25, ptr %25, align 4
  br label %1950

458:                                              ; preds = %453
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #4
  %459 = load ptr, ptr %16, align 8, !tbaa !5
  %460 = load i32, ptr %28, align 4, !tbaa !9
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds ptr, ptr %459, i64 %461
  %463 = load ptr, ptr %462, align 8, !tbaa !5
  %464 = load i32, ptr %26, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds ptr, ptr %463, i64 %465
  %467 = load ptr, ptr %466, align 8, !tbaa !5
  %468 = load i32, ptr %24, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds i8, ptr %467, i64 %469
  %471 = load i8, ptr %470, align 1, !tbaa !16
  store i8 %471, ptr %29, align 1, !tbaa !16
  %472 = load ptr, ptr %16, align 8, !tbaa !5
  %473 = load i32, ptr %28, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds ptr, ptr %472, i64 %474
  %476 = load ptr, ptr %475, align 8, !tbaa !5
  %477 = load i32, ptr %26, align 4, !tbaa !9
  %478 = load i32, ptr %7, align 4, !tbaa !9
  %479 = sub nsw i32 %477, %478
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds ptr, ptr %476, i64 %480
  %482 = load ptr, ptr %481, align 8, !tbaa !5
  %483 = load i32, ptr %24, align 4, !tbaa !9
  %484 = sub nsw i32 %483, 1
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds i8, ptr %482, i64 %485
  %487 = load i8, ptr %486, align 1, !tbaa !16
  %488 = zext i8 %487 to i32
  %489 = load ptr, ptr %16, align 8, !tbaa !5
  %490 = load i32, ptr %28, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds ptr, ptr %489, i64 %491
  %493 = load ptr, ptr %492, align 8, !tbaa !5
  %494 = load i32, ptr %26, align 4, !tbaa !9
  %495 = load i32, ptr %7, align 4, !tbaa !9
  %496 = add nsw i32 %494, %495
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds ptr, ptr %493, i64 %497
  %499 = load ptr, ptr %498, align 8, !tbaa !5
  %500 = load i32, ptr %24, align 4, !tbaa !9
  %501 = sub nsw i32 %500, 1
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds i8, ptr %499, i64 %502
  %504 = load i8, ptr %503, align 1, !tbaa !16
  %505 = zext i8 %504 to i32
  %506 = sub nsw i32 %488, %505
  %507 = mul nsw i32 %506, 2
  %508 = load ptr, ptr %16, align 8, !tbaa !5
  %509 = load i32, ptr %28, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds ptr, ptr %508, i64 %510
  %512 = load ptr, ptr %511, align 8, !tbaa !5
  %513 = load i32, ptr %26, align 4, !tbaa !9
  %514 = load i32, ptr %7, align 4, !tbaa !9
  %515 = sub nsw i32 %513, %514
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds ptr, ptr %512, i64 %516
  %518 = load ptr, ptr %517, align 8, !tbaa !5
  %519 = load i32, ptr %24, align 4, !tbaa !9
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds i8, ptr %518, i64 %520
  %522 = load i8, ptr %521, align 1, !tbaa !16
  %523 = zext i8 %522 to i32
  %524 = load ptr, ptr %16, align 8, !tbaa !5
  %525 = load i32, ptr %28, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds ptr, ptr %524, i64 %526
  %528 = load ptr, ptr %527, align 8, !tbaa !5
  %529 = load i32, ptr %26, align 4, !tbaa !9
  %530 = load i32, ptr %7, align 4, !tbaa !9
  %531 = add nsw i32 %529, %530
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds ptr, ptr %528, i64 %532
  %534 = load ptr, ptr %533, align 8, !tbaa !5
  %535 = load i32, ptr %24, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds i8, ptr %534, i64 %536
  %538 = load i8, ptr %537, align 1, !tbaa !16
  %539 = zext i8 %538 to i32
  %540 = sub nsw i32 %523, %539
  %541 = mul nsw i32 %540, 3
  %542 = add nsw i32 %507, %541
  %543 = load ptr, ptr %16, align 8, !tbaa !5
  %544 = load i32, ptr %28, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds ptr, ptr %543, i64 %545
  %547 = load ptr, ptr %546, align 8, !tbaa !5
  %548 = load i32, ptr %26, align 4, !tbaa !9
  %549 = load i32, ptr %7, align 4, !tbaa !9
  %550 = sub nsw i32 %548, %549
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds ptr, ptr %547, i64 %551
  %553 = load ptr, ptr %552, align 8, !tbaa !5
  %554 = load i32, ptr %24, align 4, !tbaa !9
  %555 = add nsw i32 %554, 1
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds i8, ptr %553, i64 %556
  %558 = load i8, ptr %557, align 1, !tbaa !16
  %559 = zext i8 %558 to i32
  %560 = load ptr, ptr %16, align 8, !tbaa !5
  %561 = load i32, ptr %28, align 4, !tbaa !9
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds ptr, ptr %560, i64 %562
  %564 = load ptr, ptr %563, align 8, !tbaa !5
  %565 = load i32, ptr %26, align 4, !tbaa !9
  %566 = load i32, ptr %7, align 4, !tbaa !9
  %567 = add nsw i32 %565, %566
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds ptr, ptr %564, i64 %568
  %570 = load ptr, ptr %569, align 8, !tbaa !5
  %571 = load i32, ptr %24, align 4, !tbaa !9
  %572 = add nsw i32 %571, 1
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds i8, ptr %570, i64 %573
  %575 = load i8, ptr %574, align 1, !tbaa !16
  %576 = zext i8 %575 to i32
  %577 = sub nsw i32 %559, %576
  %578 = mul nsw i32 %577, 2
  %579 = add nsw i32 %542, %578
  %580 = icmp sgt i32 %579, 0
  br i1 %580, label %581, label %690

581:                                              ; preds = %458
  %582 = load ptr, ptr %16, align 8, !tbaa !5
  %583 = load i32, ptr %28, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds ptr, ptr %582, i64 %584
  %586 = load ptr, ptr %585, align 8, !tbaa !5
  %587 = load i32, ptr %26, align 4, !tbaa !9
  %588 = load i32, ptr %7, align 4, !tbaa !9
  %589 = sub nsw i32 %587, %588
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds ptr, ptr %586, i64 %590
  %592 = load ptr, ptr %591, align 8, !tbaa !5
  %593 = load i32, ptr %24, align 4, !tbaa !9
  %594 = sub nsw i32 %593, 1
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds i8, ptr %592, i64 %595
  %597 = load i8, ptr %596, align 1, !tbaa !16
  %598 = zext i8 %597 to i32
  %599 = load ptr, ptr %16, align 8, !tbaa !5
  %600 = load i32, ptr %28, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds ptr, ptr %599, i64 %601
  %603 = load ptr, ptr %602, align 8, !tbaa !5
  %604 = load i32, ptr %26, align 4, !tbaa !9
  %605 = load i32, ptr %7, align 4, !tbaa !9
  %606 = add nsw i32 %604, %605
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds ptr, ptr %603, i64 %607
  %609 = load ptr, ptr %608, align 8, !tbaa !5
  %610 = load i32, ptr %24, align 4, !tbaa !9
  %611 = sub nsw i32 %610, 1
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds i8, ptr %609, i64 %612
  %614 = load i8, ptr %613, align 1, !tbaa !16
  %615 = zext i8 %614 to i32
  %616 = sub nsw i32 %598, %615
  %617 = mul nsw i32 %616, 2
  %618 = load ptr, ptr %16, align 8, !tbaa !5
  %619 = load i32, ptr %28, align 4, !tbaa !9
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds ptr, ptr %618, i64 %620
  %622 = load ptr, ptr %621, align 8, !tbaa !5
  %623 = load i32, ptr %26, align 4, !tbaa !9
  %624 = load i32, ptr %7, align 4, !tbaa !9
  %625 = sub nsw i32 %623, %624
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds ptr, ptr %622, i64 %626
  %628 = load ptr, ptr %627, align 8, !tbaa !5
  %629 = load i32, ptr %24, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds i8, ptr %628, i64 %630
  %632 = load i8, ptr %631, align 1, !tbaa !16
  %633 = zext i8 %632 to i32
  %634 = load ptr, ptr %16, align 8, !tbaa !5
  %635 = load i32, ptr %28, align 4, !tbaa !9
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds ptr, ptr %634, i64 %636
  %638 = load ptr, ptr %637, align 8, !tbaa !5
  %639 = load i32, ptr %26, align 4, !tbaa !9
  %640 = load i32, ptr %7, align 4, !tbaa !9
  %641 = add nsw i32 %639, %640
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds ptr, ptr %638, i64 %642
  %644 = load ptr, ptr %643, align 8, !tbaa !5
  %645 = load i32, ptr %24, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds i8, ptr %644, i64 %646
  %648 = load i8, ptr %647, align 1, !tbaa !16
  %649 = zext i8 %648 to i32
  %650 = sub nsw i32 %633, %649
  %651 = mul nsw i32 %650, 3
  %652 = add nsw i32 %617, %651
  %653 = load ptr, ptr %16, align 8, !tbaa !5
  %654 = load i32, ptr %28, align 4, !tbaa !9
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds ptr, ptr %653, i64 %655
  %657 = load ptr, ptr %656, align 8, !tbaa !5
  %658 = load i32, ptr %26, align 4, !tbaa !9
  %659 = load i32, ptr %7, align 4, !tbaa !9
  %660 = sub nsw i32 %658, %659
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds ptr, ptr %657, i64 %661
  %663 = load ptr, ptr %662, align 8, !tbaa !5
  %664 = load i32, ptr %24, align 4, !tbaa !9
  %665 = add nsw i32 %664, 1
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds i8, ptr %663, i64 %666
  %668 = load i8, ptr %667, align 1, !tbaa !16
  %669 = zext i8 %668 to i32
  %670 = load ptr, ptr %16, align 8, !tbaa !5
  %671 = load i32, ptr %28, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds ptr, ptr %670, i64 %672
  %674 = load ptr, ptr %673, align 8, !tbaa !5
  %675 = load i32, ptr %26, align 4, !tbaa !9
  %676 = load i32, ptr %7, align 4, !tbaa !9
  %677 = add nsw i32 %675, %676
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds ptr, ptr %674, i64 %678
  %680 = load ptr, ptr %679, align 8, !tbaa !5
  %681 = load i32, ptr %24, align 4, !tbaa !9
  %682 = add nsw i32 %681, 1
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds i8, ptr %680, i64 %683
  %685 = load i8, ptr %684, align 1, !tbaa !16
  %686 = zext i8 %685 to i32
  %687 = sub nsw i32 %669, %686
  %688 = mul nsw i32 %687, 2
  %689 = add nsw i32 %652, %688
  br label %800

690:                                              ; preds = %458
  %691 = load ptr, ptr %16, align 8, !tbaa !5
  %692 = load i32, ptr %28, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds ptr, ptr %691, i64 %693
  %695 = load ptr, ptr %694, align 8, !tbaa !5
  %696 = load i32, ptr %26, align 4, !tbaa !9
  %697 = load i32, ptr %7, align 4, !tbaa !9
  %698 = sub nsw i32 %696, %697
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds ptr, ptr %695, i64 %699
  %701 = load ptr, ptr %700, align 8, !tbaa !5
  %702 = load i32, ptr %24, align 4, !tbaa !9
  %703 = sub nsw i32 %702, 1
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds i8, ptr %701, i64 %704
  %706 = load i8, ptr %705, align 1, !tbaa !16
  %707 = zext i8 %706 to i32
  %708 = load ptr, ptr %16, align 8, !tbaa !5
  %709 = load i32, ptr %28, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds ptr, ptr %708, i64 %710
  %712 = load ptr, ptr %711, align 8, !tbaa !5
  %713 = load i32, ptr %26, align 4, !tbaa !9
  %714 = load i32, ptr %7, align 4, !tbaa !9
  %715 = add nsw i32 %713, %714
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds ptr, ptr %712, i64 %716
  %718 = load ptr, ptr %717, align 8, !tbaa !5
  %719 = load i32, ptr %24, align 4, !tbaa !9
  %720 = sub nsw i32 %719, 1
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds i8, ptr %718, i64 %721
  %723 = load i8, ptr %722, align 1, !tbaa !16
  %724 = zext i8 %723 to i32
  %725 = sub nsw i32 %707, %724
  %726 = mul nsw i32 %725, 2
  %727 = load ptr, ptr %16, align 8, !tbaa !5
  %728 = load i32, ptr %28, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds ptr, ptr %727, i64 %729
  %731 = load ptr, ptr %730, align 8, !tbaa !5
  %732 = load i32, ptr %26, align 4, !tbaa !9
  %733 = load i32, ptr %7, align 4, !tbaa !9
  %734 = sub nsw i32 %732, %733
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds ptr, ptr %731, i64 %735
  %737 = load ptr, ptr %736, align 8, !tbaa !5
  %738 = load i32, ptr %24, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds i8, ptr %737, i64 %739
  %741 = load i8, ptr %740, align 1, !tbaa !16
  %742 = zext i8 %741 to i32
  %743 = load ptr, ptr %16, align 8, !tbaa !5
  %744 = load i32, ptr %28, align 4, !tbaa !9
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds ptr, ptr %743, i64 %745
  %747 = load ptr, ptr %746, align 8, !tbaa !5
  %748 = load i32, ptr %26, align 4, !tbaa !9
  %749 = load i32, ptr %7, align 4, !tbaa !9
  %750 = add nsw i32 %748, %749
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds ptr, ptr %747, i64 %751
  %753 = load ptr, ptr %752, align 8, !tbaa !5
  %754 = load i32, ptr %24, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds i8, ptr %753, i64 %755
  %757 = load i8, ptr %756, align 1, !tbaa !16
  %758 = zext i8 %757 to i32
  %759 = sub nsw i32 %742, %758
  %760 = mul nsw i32 %759, 3
  %761 = add nsw i32 %726, %760
  %762 = load ptr, ptr %16, align 8, !tbaa !5
  %763 = load i32, ptr %28, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds ptr, ptr %762, i64 %764
  %766 = load ptr, ptr %765, align 8, !tbaa !5
  %767 = load i32, ptr %26, align 4, !tbaa !9
  %768 = load i32, ptr %7, align 4, !tbaa !9
  %769 = sub nsw i32 %767, %768
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds ptr, ptr %766, i64 %770
  %772 = load ptr, ptr %771, align 8, !tbaa !5
  %773 = load i32, ptr %24, align 4, !tbaa !9
  %774 = add nsw i32 %773, 1
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds i8, ptr %772, i64 %775
  %777 = load i8, ptr %776, align 1, !tbaa !16
  %778 = zext i8 %777 to i32
  %779 = load ptr, ptr %16, align 8, !tbaa !5
  %780 = load i32, ptr %28, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds ptr, ptr %779, i64 %781
  %783 = load ptr, ptr %782, align 8, !tbaa !5
  %784 = load i32, ptr %26, align 4, !tbaa !9
  %785 = load i32, ptr %7, align 4, !tbaa !9
  %786 = add nsw i32 %784, %785
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds ptr, ptr %783, i64 %787
  %789 = load ptr, ptr %788, align 8, !tbaa !5
  %790 = load i32, ptr %24, align 4, !tbaa !9
  %791 = add nsw i32 %790, 1
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds i8, ptr %789, i64 %792
  %794 = load i8, ptr %793, align 1, !tbaa !16
  %795 = zext i8 %794 to i32
  %796 = sub nsw i32 %778, %795
  %797 = mul nsw i32 %796, 2
  %798 = add nsw i32 %761, %797
  %799 = sub nsw i32 0, %798
  br label %800

800:                                              ; preds = %690, %581
  %801 = phi i32 [ %689, %581 ], [ %799, %690 ]
  store i32 %801, ptr %27, align 4, !tbaa !9
  %802 = load i32, ptr %27, align 4, !tbaa !9
  %803 = load i8, ptr %29, align 1, !tbaa !16
  %804 = zext i8 %803 to i64
  %805 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %804
  %806 = load i8, ptr %805, align 1, !tbaa !16
  %807 = zext i8 %806 to i32
  %808 = icmp sgt i32 %802, %807
  br i1 %808, label %809, label %821

809:                                              ; preds = %800
  %810 = load ptr, ptr %6, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.MImage, ptr %810, i32 0, i32 3
  %812 = getelementptr inbounds [4 x ptr], ptr %811, i64 0, i64 0
  %813 = load ptr, ptr %812, align 8, !tbaa !5
  %814 = load i32, ptr %26, align 4, !tbaa !9
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds ptr, ptr %813, i64 %815
  %817 = load ptr, ptr %816, align 8, !tbaa !5
  %818 = load i32, ptr %24, align 4, !tbaa !9
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds i8, ptr %817, i64 %819
  store i8 -1, ptr %820, align 1, !tbaa !16
  store i32 25, ptr %25, align 4
  br label %1944

821:                                              ; preds = %800
  %822 = load ptr, ptr %16, align 8, !tbaa !5
  %823 = load i32, ptr %28, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds ptr, ptr %822, i64 %824
  %826 = load ptr, ptr %825, align 8, !tbaa !5
  %827 = load i32, ptr %26, align 4, !tbaa !9
  %828 = load i32, ptr %7, align 4, !tbaa !9
  %829 = sub nsw i32 %827, %828
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds ptr, ptr %826, i64 %830
  %832 = load ptr, ptr %831, align 8, !tbaa !5
  %833 = load i32, ptr %24, align 4, !tbaa !9
  %834 = load i32, ptr %7, align 4, !tbaa !9
  %835 = add nsw i32 %833, %834
  %836 = sub nsw i32 %835, 1
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds i8, ptr %832, i64 %837
  %839 = load i8, ptr %838, align 1, !tbaa !16
  %840 = zext i8 %839 to i32
  %841 = load ptr, ptr %16, align 8, !tbaa !5
  %842 = load i32, ptr %28, align 4, !tbaa !9
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds ptr, ptr %841, i64 %843
  %845 = load ptr, ptr %844, align 8, !tbaa !5
  %846 = load i32, ptr %26, align 4, !tbaa !9
  %847 = load i32, ptr %7, align 4, !tbaa !9
  %848 = add nsw i32 %846, %847
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds ptr, ptr %845, i64 %849
  %851 = load ptr, ptr %850, align 8, !tbaa !5
  %852 = load i32, ptr %24, align 4, !tbaa !9
  %853 = load i32, ptr %7, align 4, !tbaa !9
  %854 = sub nsw i32 %852, %853
  %855 = add nsw i32 %854, 1
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds i8, ptr %851, i64 %856
  %858 = load i8, ptr %857, align 1, !tbaa !16
  %859 = zext i8 %858 to i32
  %860 = sub nsw i32 %840, %859
  %861 = mul nsw i32 %860, 2
  %862 = load ptr, ptr %16, align 8, !tbaa !5
  %863 = load i32, ptr %28, align 4, !tbaa !9
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds ptr, ptr %862, i64 %864
  %866 = load ptr, ptr %865, align 8, !tbaa !5
  %867 = load i32, ptr %26, align 4, !tbaa !9
  %868 = load i32, ptr %7, align 4, !tbaa !9
  %869 = sub nsw i32 %867, %868
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds ptr, ptr %866, i64 %870
  %872 = load ptr, ptr %871, align 8, !tbaa !5
  %873 = load i32, ptr %24, align 4, !tbaa !9
  %874 = load i32, ptr %7, align 4, !tbaa !9
  %875 = add nsw i32 %873, %874
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds i8, ptr %872, i64 %876
  %878 = load i8, ptr %877, align 1, !tbaa !16
  %879 = zext i8 %878 to i32
  %880 = load ptr, ptr %16, align 8, !tbaa !5
  %881 = load i32, ptr %28, align 4, !tbaa !9
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds ptr, ptr %880, i64 %882
  %884 = load ptr, ptr %883, align 8, !tbaa !5
  %885 = load i32, ptr %26, align 4, !tbaa !9
  %886 = load i32, ptr %7, align 4, !tbaa !9
  %887 = add nsw i32 %885, %886
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds ptr, ptr %884, i64 %888
  %890 = load ptr, ptr %889, align 8, !tbaa !5
  %891 = load i32, ptr %24, align 4, !tbaa !9
  %892 = load i32, ptr %7, align 4, !tbaa !9
  %893 = sub nsw i32 %891, %892
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds i8, ptr %890, i64 %894
  %896 = load i8, ptr %895, align 1, !tbaa !16
  %897 = zext i8 %896 to i32
  %898 = sub nsw i32 %879, %897
  %899 = mul nsw i32 %898, 3
  %900 = add nsw i32 %861, %899
  %901 = load ptr, ptr %16, align 8, !tbaa !5
  %902 = load i32, ptr %28, align 4, !tbaa !9
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds ptr, ptr %901, i64 %903
  %905 = load ptr, ptr %904, align 8, !tbaa !5
  %906 = load i32, ptr %26, align 4, !tbaa !9
  %907 = load i32, ptr %7, align 4, !tbaa !9
  %908 = sub nsw i32 %906, %907
  %909 = add nsw i32 %908, 1
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds ptr, ptr %905, i64 %910
  %912 = load ptr, ptr %911, align 8, !tbaa !5
  %913 = load i32, ptr %24, align 4, !tbaa !9
  %914 = load i32, ptr %7, align 4, !tbaa !9
  %915 = add nsw i32 %913, %914
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds i8, ptr %912, i64 %916
  %918 = load i8, ptr %917, align 1, !tbaa !16
  %919 = zext i8 %918 to i32
  %920 = load ptr, ptr %16, align 8, !tbaa !5
  %921 = load i32, ptr %28, align 4, !tbaa !9
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds ptr, ptr %920, i64 %922
  %924 = load ptr, ptr %923, align 8, !tbaa !5
  %925 = load i32, ptr %26, align 4, !tbaa !9
  %926 = load i32, ptr %7, align 4, !tbaa !9
  %927 = add nsw i32 %925, %926
  %928 = sub nsw i32 %927, 1
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds ptr, ptr %924, i64 %929
  %931 = load ptr, ptr %930, align 8, !tbaa !5
  %932 = load i32, ptr %24, align 4, !tbaa !9
  %933 = load i32, ptr %7, align 4, !tbaa !9
  %934 = sub nsw i32 %932, %933
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds i8, ptr %931, i64 %935
  %937 = load i8, ptr %936, align 1, !tbaa !16
  %938 = zext i8 %937 to i32
  %939 = sub nsw i32 %919, %938
  %940 = mul nsw i32 %939, 2
  %941 = add nsw i32 %900, %940
  %942 = icmp sgt i32 %941, 0
  br i1 %942, label %943, label %1064

943:                                              ; preds = %821
  %944 = load ptr, ptr %16, align 8, !tbaa !5
  %945 = load i32, ptr %28, align 4, !tbaa !9
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds ptr, ptr %944, i64 %946
  %948 = load ptr, ptr %947, align 8, !tbaa !5
  %949 = load i32, ptr %26, align 4, !tbaa !9
  %950 = load i32, ptr %7, align 4, !tbaa !9
  %951 = sub nsw i32 %949, %950
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds ptr, ptr %948, i64 %952
  %954 = load ptr, ptr %953, align 8, !tbaa !5
  %955 = load i32, ptr %24, align 4, !tbaa !9
  %956 = load i32, ptr %7, align 4, !tbaa !9
  %957 = add nsw i32 %955, %956
  %958 = sub nsw i32 %957, 1
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds i8, ptr %954, i64 %959
  %961 = load i8, ptr %960, align 1, !tbaa !16
  %962 = zext i8 %961 to i32
  %963 = load ptr, ptr %16, align 8, !tbaa !5
  %964 = load i32, ptr %28, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds ptr, ptr %963, i64 %965
  %967 = load ptr, ptr %966, align 8, !tbaa !5
  %968 = load i32, ptr %26, align 4, !tbaa !9
  %969 = load i32, ptr %7, align 4, !tbaa !9
  %970 = add nsw i32 %968, %969
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds ptr, ptr %967, i64 %971
  %973 = load ptr, ptr %972, align 8, !tbaa !5
  %974 = load i32, ptr %24, align 4, !tbaa !9
  %975 = load i32, ptr %7, align 4, !tbaa !9
  %976 = sub nsw i32 %974, %975
  %977 = add nsw i32 %976, 1
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds i8, ptr %973, i64 %978
  %980 = load i8, ptr %979, align 1, !tbaa !16
  %981 = zext i8 %980 to i32
  %982 = sub nsw i32 %962, %981
  %983 = mul nsw i32 %982, 2
  %984 = load ptr, ptr %16, align 8, !tbaa !5
  %985 = load i32, ptr %28, 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 %26, align 4, !tbaa !9
  %990 = load i32, ptr %7, align 4, !tbaa !9
  %991 = sub nsw i32 %989, %990
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds ptr, ptr %988, i64 %992
  %994 = load ptr, ptr %993, align 8, !tbaa !5
  %995 = load i32, ptr %24, align 4, !tbaa !9
  %996 = load i32, ptr %7, align 4, !tbaa !9
  %997 = add nsw i32 %995, %996
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds i8, ptr %994, i64 %998
  %1000 = load i8, ptr %999, align 1, !tbaa !16
  %1001 = zext i8 %1000 to i32
  %1002 = load ptr, ptr %16, align 8, !tbaa !5
  %1003 = load i32, ptr %28, align 4, !tbaa !9
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds ptr, ptr %1002, i64 %1004
  %1006 = load ptr, ptr %1005, align 8, !tbaa !5
  %1007 = load i32, ptr %26, align 4, !tbaa !9
  %1008 = load i32, ptr %7, align 4, !tbaa !9
  %1009 = add nsw i32 %1007, %1008
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds ptr, ptr %1006, i64 %1010
  %1012 = load ptr, ptr %1011, align 8, !tbaa !5
  %1013 = load i32, ptr %24, align 4, !tbaa !9
  %1014 = load i32, ptr %7, align 4, !tbaa !9
  %1015 = sub nsw i32 %1013, %1014
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds i8, ptr %1012, i64 %1016
  %1018 = load i8, ptr %1017, align 1, !tbaa !16
  %1019 = zext i8 %1018 to i32
  %1020 = sub nsw i32 %1001, %1019
  %1021 = mul nsw i32 %1020, 3
  %1022 = add nsw i32 %983, %1021
  %1023 = load ptr, ptr %16, align 8, !tbaa !5
  %1024 = load i32, ptr %28, align 4, !tbaa !9
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds ptr, ptr %1023, i64 %1025
  %1027 = load ptr, ptr %1026, align 8, !tbaa !5
  %1028 = load i32, ptr %26, align 4, !tbaa !9
  %1029 = load i32, ptr %7, align 4, !tbaa !9
  %1030 = sub nsw i32 %1028, %1029
  %1031 = add nsw i32 %1030, 1
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds ptr, ptr %1027, i64 %1032
  %1034 = load ptr, ptr %1033, align 8, !tbaa !5
  %1035 = load i32, ptr %24, align 4, !tbaa !9
  %1036 = load i32, ptr %7, align 4, !tbaa !9
  %1037 = add nsw i32 %1035, %1036
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds i8, ptr %1034, i64 %1038
  %1040 = load i8, ptr %1039, align 1, !tbaa !16
  %1041 = zext i8 %1040 to i32
  %1042 = load ptr, ptr %16, align 8, !tbaa !5
  %1043 = load i32, ptr %28, align 4, !tbaa !9
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds ptr, ptr %1042, i64 %1044
  %1046 = load ptr, ptr %1045, align 8, !tbaa !5
  %1047 = load i32, ptr %26, align 4, !tbaa !9
  %1048 = load i32, ptr %7, align 4, !tbaa !9
  %1049 = add nsw i32 %1047, %1048
  %1050 = sub nsw i32 %1049, 1
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds ptr, ptr %1046, i64 %1051
  %1053 = load ptr, ptr %1052, align 8, !tbaa !5
  %1054 = load i32, ptr %24, align 4, !tbaa !9
  %1055 = load i32, ptr %7, align 4, !tbaa !9
  %1056 = sub nsw i32 %1054, %1055
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds i8, ptr %1053, i64 %1057
  %1059 = load i8, ptr %1058, align 1, !tbaa !16
  %1060 = zext i8 %1059 to i32
  %1061 = sub nsw i32 %1041, %1060
  %1062 = mul nsw i32 %1061, 2
  %1063 = add nsw i32 %1022, %1062
  br label %1186

1064:                                             ; preds = %821
  %1065 = load ptr, ptr %16, align 8, !tbaa !5
  %1066 = load i32, ptr %28, align 4, !tbaa !9
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds ptr, ptr %1065, i64 %1067
  %1069 = load ptr, ptr %1068, align 8, !tbaa !5
  %1070 = load i32, ptr %26, align 4, !tbaa !9
  %1071 = load i32, ptr %7, align 4, !tbaa !9
  %1072 = sub nsw i32 %1070, %1071
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds ptr, ptr %1069, i64 %1073
  %1075 = load ptr, ptr %1074, align 8, !tbaa !5
  %1076 = load i32, ptr %24, align 4, !tbaa !9
  %1077 = load i32, ptr %7, align 4, !tbaa !9
  %1078 = add nsw i32 %1076, %1077
  %1079 = sub nsw i32 %1078, 1
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds i8, ptr %1075, i64 %1080
  %1082 = load i8, ptr %1081, align 1, !tbaa !16
  %1083 = zext i8 %1082 to i32
  %1084 = load ptr, ptr %16, align 8, !tbaa !5
  %1085 = load i32, ptr %28, align 4, !tbaa !9
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds ptr, ptr %1084, i64 %1086
  %1088 = load ptr, ptr %1087, align 8, !tbaa !5
  %1089 = load i32, ptr %26, align 4, !tbaa !9
  %1090 = load i32, ptr %7, align 4, !tbaa !9
  %1091 = add nsw i32 %1089, %1090
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds ptr, ptr %1088, i64 %1092
  %1094 = load ptr, ptr %1093, align 8, !tbaa !5
  %1095 = load i32, ptr %24, align 4, !tbaa !9
  %1096 = load i32, ptr %7, align 4, !tbaa !9
  %1097 = sub nsw i32 %1095, %1096
  %1098 = add nsw i32 %1097, 1
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds i8, ptr %1094, i64 %1099
  %1101 = load i8, ptr %1100, align 1, !tbaa !16
  %1102 = zext i8 %1101 to i32
  %1103 = sub nsw i32 %1083, %1102
  %1104 = mul nsw i32 %1103, 2
  %1105 = load ptr, ptr %16, align 8, !tbaa !5
  %1106 = load i32, ptr %28, align 4, !tbaa !9
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds ptr, ptr %1105, i64 %1107
  %1109 = load ptr, ptr %1108, align 8, !tbaa !5
  %1110 = load i32, ptr %26, align 4, !tbaa !9
  %1111 = load i32, ptr %7, align 4, !tbaa !9
  %1112 = sub nsw i32 %1110, %1111
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds ptr, ptr %1109, i64 %1113
  %1115 = load ptr, ptr %1114, align 8, !tbaa !5
  %1116 = load i32, ptr %24, align 4, !tbaa !9
  %1117 = load i32, ptr %7, align 4, !tbaa !9
  %1118 = add nsw i32 %1116, %1117
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds i8, ptr %1115, i64 %1119
  %1121 = load i8, ptr %1120, align 1, !tbaa !16
  %1122 = zext i8 %1121 to i32
  %1123 = load ptr, ptr %16, align 8, !tbaa !5
  %1124 = load i32, ptr %28, align 4, !tbaa !9
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds ptr, ptr %1123, i64 %1125
  %1127 = load ptr, ptr %1126, align 8, !tbaa !5
  %1128 = load i32, ptr %26, align 4, !tbaa !9
  %1129 = load i32, ptr %7, align 4, !tbaa !9
  %1130 = add nsw i32 %1128, %1129
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds ptr, ptr %1127, i64 %1131
  %1133 = load ptr, ptr %1132, align 8, !tbaa !5
  %1134 = load i32, ptr %24, align 4, !tbaa !9
  %1135 = load i32, ptr %7, align 4, !tbaa !9
  %1136 = sub nsw i32 %1134, %1135
  %1137 = sext i32 %1136 to i64
  %1138 = getelementptr inbounds i8, ptr %1133, i64 %1137
  %1139 = load i8, ptr %1138, align 1, !tbaa !16
  %1140 = zext i8 %1139 to i32
  %1141 = sub nsw i32 %1122, %1140
  %1142 = mul nsw i32 %1141, 3
  %1143 = add nsw i32 %1104, %1142
  %1144 = load ptr, ptr %16, align 8, !tbaa !5
  %1145 = load i32, ptr %28, align 4, !tbaa !9
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds ptr, ptr %1144, i64 %1146
  %1148 = load ptr, ptr %1147, align 8, !tbaa !5
  %1149 = load i32, ptr %26, align 4, !tbaa !9
  %1150 = load i32, ptr %7, align 4, !tbaa !9
  %1151 = sub nsw i32 %1149, %1150
  %1152 = add nsw i32 %1151, 1
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds ptr, ptr %1148, i64 %1153
  %1155 = load ptr, ptr %1154, align 8, !tbaa !5
  %1156 = load i32, ptr %24, align 4, !tbaa !9
  %1157 = load i32, ptr %7, align 4, !tbaa !9
  %1158 = add nsw i32 %1156, %1157
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds i8, ptr %1155, i64 %1159
  %1161 = load i8, ptr %1160, align 1, !tbaa !16
  %1162 = zext i8 %1161 to i32
  %1163 = load ptr, ptr %16, align 8, !tbaa !5
  %1164 = load i32, ptr %28, align 4, !tbaa !9
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds ptr, ptr %1163, i64 %1165
  %1167 = load ptr, ptr %1166, align 8, !tbaa !5
  %1168 = load i32, ptr %26, align 4, !tbaa !9
  %1169 = load i32, ptr %7, align 4, !tbaa !9
  %1170 = add nsw i32 %1168, %1169
  %1171 = sub nsw i32 %1170, 1
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds ptr, ptr %1167, i64 %1172
  %1174 = load ptr, ptr %1173, align 8, !tbaa !5
  %1175 = load i32, ptr %24, align 4, !tbaa !9
  %1176 = load i32, ptr %7, align 4, !tbaa !9
  %1177 = sub nsw i32 %1175, %1176
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds i8, ptr %1174, i64 %1178
  %1180 = load i8, ptr %1179, align 1, !tbaa !16
  %1181 = zext i8 %1180 to i32
  %1182 = sub nsw i32 %1162, %1181
  %1183 = mul nsw i32 %1182, 2
  %1184 = add nsw i32 %1143, %1183
  %1185 = sub nsw i32 0, %1184
  br label %1186

1186:                                             ; preds = %1064, %943
  %1187 = phi i32 [ %1063, %943 ], [ %1185, %1064 ]
  store i32 %1187, ptr %27, align 4, !tbaa !9
  %1188 = load i32, ptr %27, align 4, !tbaa !9
  %1189 = load i8, ptr %29, align 1, !tbaa !16
  %1190 = zext i8 %1189 to i64
  %1191 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %1190
  %1192 = load i8, ptr %1191, align 1, !tbaa !16
  %1193 = zext i8 %1192 to i32
  %1194 = icmp sgt i32 %1188, %1193
  br i1 %1194, label %1195, label %1207

1195:                                             ; preds = %1186
  %1196 = load ptr, ptr %6, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.MImage, ptr %1196, i32 0, i32 3
  %1198 = getelementptr inbounds [4 x ptr], ptr %1197, i64 0, i64 0
  %1199 = load ptr, ptr %1198, align 8, !tbaa !5
  %1200 = load i32, ptr %26, align 4, !tbaa !9
  %1201 = sext i32 %1200 to i64
  %1202 = getelementptr inbounds ptr, ptr %1199, i64 %1201
  %1203 = load ptr, ptr %1202, align 8, !tbaa !5
  %1204 = load i32, ptr %24, align 4, !tbaa !9
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds i8, ptr %1203, i64 %1205
  store i8 -1, ptr %1206, align 1, !tbaa !16
  store i32 25, ptr %25, align 4
  br label %1944

1207:                                             ; preds = %1186
  %1208 = load ptr, ptr %16, align 8, !tbaa !5
  %1209 = load i32, ptr %28, align 4, !tbaa !9
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds ptr, ptr %1208, i64 %1210
  %1212 = load ptr, ptr %1211, align 8, !tbaa !5
  %1213 = load i32, ptr %26, align 4, !tbaa !9
  %1214 = sub nsw i32 %1213, 1
  %1215 = sext i32 %1214 to i64
  %1216 = getelementptr inbounds ptr, ptr %1212, i64 %1215
  %1217 = load ptr, ptr %1216, align 8, !tbaa !5
  %1218 = load i32, ptr %24, align 4, !tbaa !9
  %1219 = load i32, ptr %7, align 4, !tbaa !9
  %1220 = sub nsw i32 %1218, %1219
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds i8, ptr %1217, i64 %1221
  %1223 = load i8, ptr %1222, align 1, !tbaa !16
  %1224 = zext i8 %1223 to i32
  %1225 = load ptr, ptr %16, align 8, !tbaa !5
  %1226 = load i32, ptr %28, align 4, !tbaa !9
  %1227 = sext i32 %1226 to i64
  %1228 = getelementptr inbounds ptr, ptr %1225, i64 %1227
  %1229 = load ptr, ptr %1228, align 8, !tbaa !5
  %1230 = load i32, ptr %26, align 4, !tbaa !9
  %1231 = sub nsw i32 %1230, 1
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds ptr, ptr %1229, i64 %1232
  %1234 = load ptr, ptr %1233, align 8, !tbaa !5
  %1235 = load i32, ptr %24, align 4, !tbaa !9
  %1236 = load i32, ptr %7, align 4, !tbaa !9
  %1237 = add nsw i32 %1235, %1236
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr inbounds i8, ptr %1234, i64 %1238
  %1240 = load i8, ptr %1239, align 1, !tbaa !16
  %1241 = zext i8 %1240 to i32
  %1242 = sub nsw i32 %1224, %1241
  %1243 = mul nsw i32 %1242, 2
  %1244 = load ptr, ptr %16, align 8, !tbaa !5
  %1245 = load i32, ptr %28, align 4, !tbaa !9
  %1246 = sext i32 %1245 to i64
  %1247 = getelementptr inbounds ptr, ptr %1244, i64 %1246
  %1248 = load ptr, ptr %1247, align 8, !tbaa !5
  %1249 = load i32, ptr %26, align 4, !tbaa !9
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds ptr, ptr %1248, i64 %1250
  %1252 = load ptr, ptr %1251, align 8, !tbaa !5
  %1253 = load i32, ptr %24, align 4, !tbaa !9
  %1254 = load i32, ptr %7, align 4, !tbaa !9
  %1255 = sub nsw i32 %1253, %1254
  %1256 = sext i32 %1255 to i64
  %1257 = getelementptr inbounds i8, ptr %1252, i64 %1256
  %1258 = load i8, ptr %1257, align 1, !tbaa !16
  %1259 = zext i8 %1258 to i32
  %1260 = load ptr, ptr %16, align 8, !tbaa !5
  %1261 = load i32, ptr %28, align 4, !tbaa !9
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds ptr, ptr %1260, i64 %1262
  %1264 = load ptr, ptr %1263, align 8, !tbaa !5
  %1265 = load i32, ptr %26, align 4, !tbaa !9
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds ptr, ptr %1264, i64 %1266
  %1268 = load ptr, ptr %1267, align 8, !tbaa !5
  %1269 = load i32, ptr %24, align 4, !tbaa !9
  %1270 = load i32, ptr %7, align 4, !tbaa !9
  %1271 = add nsw i32 %1269, %1270
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds i8, ptr %1268, i64 %1272
  %1274 = load i8, ptr %1273, align 1, !tbaa !16
  %1275 = zext i8 %1274 to i32
  %1276 = sub nsw i32 %1259, %1275
  %1277 = mul nsw i32 %1276, 3
  %1278 = add nsw i32 %1243, %1277
  %1279 = load ptr, ptr %16, align 8, !tbaa !5
  %1280 = load i32, ptr %28, align 4, !tbaa !9
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds ptr, ptr %1279, i64 %1281
  %1283 = load ptr, ptr %1282, align 8, !tbaa !5
  %1284 = load i32, ptr %26, align 4, !tbaa !9
  %1285 = add nsw i32 %1284, 1
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds ptr, ptr %1283, i64 %1286
  %1288 = load ptr, ptr %1287, align 8, !tbaa !5
  %1289 = load i32, ptr %24, align 4, !tbaa !9
  %1290 = load i32, ptr %7, align 4, !tbaa !9
  %1291 = sub nsw i32 %1289, %1290
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds i8, ptr %1288, i64 %1292
  %1294 = load i8, ptr %1293, align 1, !tbaa !16
  %1295 = zext i8 %1294 to i32
  %1296 = load ptr, ptr %16, align 8, !tbaa !5
  %1297 = load i32, ptr %28, align 4, !tbaa !9
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds ptr, ptr %1296, i64 %1298
  %1300 = load ptr, ptr %1299, align 8, !tbaa !5
  %1301 = load i32, ptr %26, align 4, !tbaa !9
  %1302 = add nsw i32 %1301, 1
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds ptr, ptr %1300, i64 %1303
  %1305 = load ptr, ptr %1304, align 8, !tbaa !5
  %1306 = load i32, ptr %24, align 4, !tbaa !9
  %1307 = load i32, ptr %7, align 4, !tbaa !9
  %1308 = add nsw i32 %1306, %1307
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds i8, ptr %1305, i64 %1309
  %1311 = load i8, ptr %1310, align 1, !tbaa !16
  %1312 = zext i8 %1311 to i32
  %1313 = sub nsw i32 %1295, %1312
  %1314 = mul nsw i32 %1313, 2
  %1315 = add nsw i32 %1278, %1314
  %1316 = icmp sgt i32 %1315, 0
  br i1 %1316, label %1317, label %1426

1317:                                             ; preds = %1207
  %1318 = load ptr, ptr %16, align 8, !tbaa !5
  %1319 = load i32, ptr %28, align 4, !tbaa !9
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds ptr, ptr %1318, i64 %1320
  %1322 = load ptr, ptr %1321, align 8, !tbaa !5
  %1323 = load i32, ptr %26, align 4, !tbaa !9
  %1324 = sub nsw i32 %1323, 1
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds ptr, ptr %1322, i64 %1325
  %1327 = load ptr, ptr %1326, align 8, !tbaa !5
  %1328 = load i32, ptr %24, align 4, !tbaa !9
  %1329 = load i32, ptr %7, align 4, !tbaa !9
  %1330 = sub nsw i32 %1328, %1329
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds i8, ptr %1327, i64 %1331
  %1333 = load i8, ptr %1332, align 1, !tbaa !16
  %1334 = zext i8 %1333 to i32
  %1335 = load ptr, ptr %16, align 8, !tbaa !5
  %1336 = load i32, ptr %28, align 4, !tbaa !9
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds ptr, ptr %1335, i64 %1337
  %1339 = load ptr, ptr %1338, align 8, !tbaa !5
  %1340 = load i32, ptr %26, align 4, !tbaa !9
  %1341 = sub nsw i32 %1340, 1
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds ptr, ptr %1339, i64 %1342
  %1344 = load ptr, ptr %1343, align 8, !tbaa !5
  %1345 = load i32, ptr %24, align 4, !tbaa !9
  %1346 = load i32, ptr %7, align 4, !tbaa !9
  %1347 = add nsw i32 %1345, %1346
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds i8, ptr %1344, i64 %1348
  %1350 = load i8, ptr %1349, align 1, !tbaa !16
  %1351 = zext i8 %1350 to i32
  %1352 = sub nsw i32 %1334, %1351
  %1353 = mul nsw i32 %1352, 2
  %1354 = load ptr, ptr %16, align 8, !tbaa !5
  %1355 = load i32, ptr %28, align 4, !tbaa !9
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds ptr, ptr %1354, i64 %1356
  %1358 = load ptr, ptr %1357, align 8, !tbaa !5
  %1359 = load i32, ptr %26, align 4, !tbaa !9
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr inbounds ptr, ptr %1358, i64 %1360
  %1362 = load ptr, ptr %1361, align 8, !tbaa !5
  %1363 = load i32, ptr %24, align 4, !tbaa !9
  %1364 = load i32, ptr %7, align 4, !tbaa !9
  %1365 = sub nsw i32 %1363, %1364
  %1366 = sext i32 %1365 to i64
  %1367 = getelementptr inbounds i8, ptr %1362, i64 %1366
  %1368 = load i8, ptr %1367, align 1, !tbaa !16
  %1369 = zext i8 %1368 to i32
  %1370 = load ptr, ptr %16, align 8, !tbaa !5
  %1371 = load i32, ptr %28, align 4, !tbaa !9
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds ptr, ptr %1370, i64 %1372
  %1374 = load ptr, ptr %1373, align 8, !tbaa !5
  %1375 = load i32, ptr %26, align 4, !tbaa !9
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds ptr, ptr %1374, i64 %1376
  %1378 = load ptr, ptr %1377, align 8, !tbaa !5
  %1379 = load i32, ptr %24, align 4, !tbaa !9
  %1380 = load i32, ptr %7, align 4, !tbaa !9
  %1381 = add nsw i32 %1379, %1380
  %1382 = sext i32 %1381 to i64
  %1383 = getelementptr inbounds i8, ptr %1378, i64 %1382
  %1384 = load i8, ptr %1383, align 1, !tbaa !16
  %1385 = zext i8 %1384 to i32
  %1386 = sub nsw i32 %1369, %1385
  %1387 = mul nsw i32 %1386, 3
  %1388 = add nsw i32 %1353, %1387
  %1389 = load ptr, ptr %16, align 8, !tbaa !5
  %1390 = load i32, ptr %28, align 4, !tbaa !9
  %1391 = sext i32 %1390 to i64
  %1392 = getelementptr inbounds ptr, ptr %1389, i64 %1391
  %1393 = load ptr, ptr %1392, align 8, !tbaa !5
  %1394 = load i32, ptr %26, align 4, !tbaa !9
  %1395 = add nsw i32 %1394, 1
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds ptr, ptr %1393, i64 %1396
  %1398 = load ptr, ptr %1397, align 8, !tbaa !5
  %1399 = load i32, ptr %24, align 4, !tbaa !9
  %1400 = load i32, ptr %7, align 4, !tbaa !9
  %1401 = sub nsw i32 %1399, %1400
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds i8, ptr %1398, i64 %1402
  %1404 = load i8, ptr %1403, align 1, !tbaa !16
  %1405 = zext i8 %1404 to i32
  %1406 = load ptr, ptr %16, align 8, !tbaa !5
  %1407 = load i32, ptr %28, align 4, !tbaa !9
  %1408 = sext i32 %1407 to i64
  %1409 = getelementptr inbounds ptr, ptr %1406, i64 %1408
  %1410 = load ptr, ptr %1409, align 8, !tbaa !5
  %1411 = load i32, ptr %26, align 4, !tbaa !9
  %1412 = add nsw i32 %1411, 1
  %1413 = sext i32 %1412 to i64
  %1414 = getelementptr inbounds ptr, ptr %1410, i64 %1413
  %1415 = load ptr, ptr %1414, align 8, !tbaa !5
  %1416 = load i32, ptr %24, align 4, !tbaa !9
  %1417 = load i32, ptr %7, align 4, !tbaa !9
  %1418 = add nsw i32 %1416, %1417
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds i8, ptr %1415, i64 %1419
  %1421 = load i8, ptr %1420, align 1, !tbaa !16
  %1422 = zext i8 %1421 to i32
  %1423 = sub nsw i32 %1405, %1422
  %1424 = mul nsw i32 %1423, 2
  %1425 = add nsw i32 %1388, %1424
  br label %1536

1426:                                             ; preds = %1207
  %1427 = load ptr, ptr %16, align 8, !tbaa !5
  %1428 = load i32, ptr %28, align 4, !tbaa !9
  %1429 = sext i32 %1428 to i64
  %1430 = getelementptr inbounds ptr, ptr %1427, i64 %1429
  %1431 = load ptr, ptr %1430, align 8, !tbaa !5
  %1432 = load i32, ptr %26, align 4, !tbaa !9
  %1433 = sub nsw i32 %1432, 1
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds ptr, ptr %1431, i64 %1434
  %1436 = load ptr, ptr %1435, align 8, !tbaa !5
  %1437 = load i32, ptr %24, align 4, !tbaa !9
  %1438 = load i32, ptr %7, align 4, !tbaa !9
  %1439 = sub nsw i32 %1437, %1438
  %1440 = sext i32 %1439 to i64
  %1441 = getelementptr inbounds i8, ptr %1436, i64 %1440
  %1442 = load i8, ptr %1441, align 1, !tbaa !16
  %1443 = zext i8 %1442 to i32
  %1444 = load ptr, ptr %16, align 8, !tbaa !5
  %1445 = load i32, ptr %28, align 4, !tbaa !9
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds ptr, ptr %1444, i64 %1446
  %1448 = load ptr, ptr %1447, align 8, !tbaa !5
  %1449 = load i32, ptr %26, align 4, !tbaa !9
  %1450 = sub nsw i32 %1449, 1
  %1451 = sext i32 %1450 to i64
  %1452 = getelementptr inbounds ptr, ptr %1448, i64 %1451
  %1453 = load ptr, ptr %1452, align 8, !tbaa !5
  %1454 = load i32, ptr %24, align 4, !tbaa !9
  %1455 = load i32, ptr %7, align 4, !tbaa !9
  %1456 = add nsw i32 %1454, %1455
  %1457 = sext i32 %1456 to i64
  %1458 = getelementptr inbounds i8, ptr %1453, i64 %1457
  %1459 = load i8, ptr %1458, align 1, !tbaa !16
  %1460 = zext i8 %1459 to i32
  %1461 = sub nsw i32 %1443, %1460
  %1462 = mul nsw i32 %1461, 2
  %1463 = load ptr, ptr %16, align 8, !tbaa !5
  %1464 = load i32, ptr %28, align 4, !tbaa !9
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds ptr, ptr %1463, i64 %1465
  %1467 = load ptr, ptr %1466, align 8, !tbaa !5
  %1468 = load i32, ptr %26, align 4, !tbaa !9
  %1469 = sext i32 %1468 to i64
  %1470 = getelementptr inbounds ptr, ptr %1467, i64 %1469
  %1471 = load ptr, ptr %1470, align 8, !tbaa !5
  %1472 = load i32, ptr %24, align 4, !tbaa !9
  %1473 = load i32, ptr %7, align 4, !tbaa !9
  %1474 = sub nsw i32 %1472, %1473
  %1475 = sext i32 %1474 to i64
  %1476 = getelementptr inbounds i8, ptr %1471, i64 %1475
  %1477 = load i8, ptr %1476, align 1, !tbaa !16
  %1478 = zext i8 %1477 to i32
  %1479 = load ptr, ptr %16, align 8, !tbaa !5
  %1480 = load i32, ptr %28, align 4, !tbaa !9
  %1481 = sext i32 %1480 to i64
  %1482 = getelementptr inbounds ptr, ptr %1479, i64 %1481
  %1483 = load ptr, ptr %1482, align 8, !tbaa !5
  %1484 = load i32, ptr %26, align 4, !tbaa !9
  %1485 = sext i32 %1484 to i64
  %1486 = getelementptr inbounds ptr, ptr %1483, i64 %1485
  %1487 = load ptr, ptr %1486, align 8, !tbaa !5
  %1488 = load i32, ptr %24, align 4, !tbaa !9
  %1489 = load i32, ptr %7, align 4, !tbaa !9
  %1490 = add nsw i32 %1488, %1489
  %1491 = sext i32 %1490 to i64
  %1492 = getelementptr inbounds i8, ptr %1487, i64 %1491
  %1493 = load i8, ptr %1492, align 1, !tbaa !16
  %1494 = zext i8 %1493 to i32
  %1495 = sub nsw i32 %1478, %1494
  %1496 = mul nsw i32 %1495, 3
  %1497 = add nsw i32 %1462, %1496
  %1498 = load ptr, ptr %16, align 8, !tbaa !5
  %1499 = load i32, ptr %28, align 4, !tbaa !9
  %1500 = sext i32 %1499 to i64
  %1501 = getelementptr inbounds ptr, ptr %1498, i64 %1500
  %1502 = load ptr, ptr %1501, align 8, !tbaa !5
  %1503 = load i32, ptr %26, align 4, !tbaa !9
  %1504 = add nsw i32 %1503, 1
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds ptr, ptr %1502, i64 %1505
  %1507 = load ptr, ptr %1506, align 8, !tbaa !5
  %1508 = load i32, ptr %24, align 4, !tbaa !9
  %1509 = load i32, ptr %7, align 4, !tbaa !9
  %1510 = sub nsw i32 %1508, %1509
  %1511 = sext i32 %1510 to i64
  %1512 = getelementptr inbounds i8, ptr %1507, i64 %1511
  %1513 = load i8, ptr %1512, align 1, !tbaa !16
  %1514 = zext i8 %1513 to i32
  %1515 = load ptr, ptr %16, align 8, !tbaa !5
  %1516 = load i32, ptr %28, align 4, !tbaa !9
  %1517 = sext i32 %1516 to i64
  %1518 = getelementptr inbounds ptr, ptr %1515, i64 %1517
  %1519 = load ptr, ptr %1518, align 8, !tbaa !5
  %1520 = load i32, ptr %26, align 4, !tbaa !9
  %1521 = add nsw i32 %1520, 1
  %1522 = sext i32 %1521 to i64
  %1523 = getelementptr inbounds ptr, ptr %1519, i64 %1522
  %1524 = load ptr, ptr %1523, align 8, !tbaa !5
  %1525 = load i32, ptr %24, align 4, !tbaa !9
  %1526 = load i32, ptr %7, align 4, !tbaa !9
  %1527 = add nsw i32 %1525, %1526
  %1528 = sext i32 %1527 to i64
  %1529 = getelementptr inbounds i8, ptr %1524, i64 %1528
  %1530 = load i8, ptr %1529, align 1, !tbaa !16
  %1531 = zext i8 %1530 to i32
  %1532 = sub nsw i32 %1514, %1531
  %1533 = mul nsw i32 %1532, 2
  %1534 = add nsw i32 %1497, %1533
  %1535 = sub nsw i32 0, %1534
  br label %1536

1536:                                             ; preds = %1426, %1317
  %1537 = phi i32 [ %1425, %1317 ], [ %1535, %1426 ]
  store i32 %1537, ptr %27, align 4, !tbaa !9
  %1538 = load i32, ptr %27, align 4, !tbaa !9
  %1539 = load i8, ptr %29, align 1, !tbaa !16
  %1540 = zext i8 %1539 to i64
  %1541 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %1540
  %1542 = load i8, ptr %1541, align 1, !tbaa !16
  %1543 = zext i8 %1542 to i32
  %1544 = icmp sgt i32 %1538, %1543
  br i1 %1544, label %1545, label %1557

1545:                                             ; preds = %1536
  %1546 = load ptr, ptr %6, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.MImage, ptr %1546, i32 0, i32 3
  %1548 = getelementptr inbounds [4 x ptr], ptr %1547, i64 0, i64 0
  %1549 = load ptr, ptr %1548, align 8, !tbaa !5
  %1550 = load i32, ptr %26, align 4, !tbaa !9
  %1551 = sext i32 %1550 to i64
  %1552 = getelementptr inbounds ptr, ptr %1549, i64 %1551
  %1553 = load ptr, ptr %1552, align 8, !tbaa !5
  %1554 = load i32, ptr %24, align 4, !tbaa !9
  %1555 = sext i32 %1554 to i64
  %1556 = getelementptr inbounds i8, ptr %1553, i64 %1555
  store i8 -1, ptr %1556, align 1, !tbaa !16
  store i32 25, ptr %25, align 4
  br label %1944

1557:                                             ; preds = %1536
  %1558 = load ptr, ptr %16, align 8, !tbaa !5
  %1559 = load i32, ptr %28, align 4, !tbaa !9
  %1560 = sext i32 %1559 to i64
  %1561 = getelementptr inbounds ptr, ptr %1558, i64 %1560
  %1562 = load ptr, ptr %1561, align 8, !tbaa !5
  %1563 = load i32, ptr %26, align 4, !tbaa !9
  %1564 = load i32, ptr %7, align 4, !tbaa !9
  %1565 = sub nsw i32 %1563, %1564
  %1566 = sext i32 %1565 to i64
  %1567 = getelementptr inbounds ptr, ptr %1562, i64 %1566
  %1568 = load ptr, ptr %1567, align 8, !tbaa !5
  %1569 = load i32, ptr %24, align 4, !tbaa !9
  %1570 = load i32, ptr %7, align 4, !tbaa !9
  %1571 = sub nsw i32 %1569, %1570
  %1572 = add nsw i32 %1571, 1
  %1573 = sext i32 %1572 to i64
  %1574 = getelementptr inbounds i8, ptr %1568, i64 %1573
  %1575 = load i8, ptr %1574, align 1, !tbaa !16
  %1576 = zext i8 %1575 to i32
  %1577 = load ptr, ptr %16, align 8, !tbaa !5
  %1578 = load i32, ptr %28, align 4, !tbaa !9
  %1579 = sext i32 %1578 to i64
  %1580 = getelementptr inbounds ptr, ptr %1577, i64 %1579
  %1581 = load ptr, ptr %1580, align 8, !tbaa !5
  %1582 = load i32, ptr %26, align 4, !tbaa !9
  %1583 = load i32, ptr %7, align 4, !tbaa !9
  %1584 = add nsw i32 %1582, %1583
  %1585 = sext i32 %1584 to i64
  %1586 = getelementptr inbounds ptr, ptr %1581, i64 %1585
  %1587 = load ptr, ptr %1586, align 8, !tbaa !5
  %1588 = load i32, ptr %24, align 4, !tbaa !9
  %1589 = load i32, ptr %7, align 4, !tbaa !9
  %1590 = add nsw i32 %1588, %1589
  %1591 = sub nsw i32 %1590, 1
  %1592 = sext i32 %1591 to i64
  %1593 = getelementptr inbounds i8, ptr %1587, i64 %1592
  %1594 = load i8, ptr %1593, align 1, !tbaa !16
  %1595 = zext i8 %1594 to i32
  %1596 = sub nsw i32 %1576, %1595
  %1597 = mul nsw i32 %1596, 2
  %1598 = load ptr, ptr %16, align 8, !tbaa !5
  %1599 = load i32, ptr %28, align 4, !tbaa !9
  %1600 = sext i32 %1599 to i64
  %1601 = getelementptr inbounds ptr, ptr %1598, i64 %1600
  %1602 = load ptr, ptr %1601, align 8, !tbaa !5
  %1603 = load i32, ptr %26, align 4, !tbaa !9
  %1604 = load i32, ptr %7, align 4, !tbaa !9
  %1605 = sub nsw i32 %1603, %1604
  %1606 = sext i32 %1605 to i64
  %1607 = getelementptr inbounds ptr, ptr %1602, i64 %1606
  %1608 = load ptr, ptr %1607, align 8, !tbaa !5
  %1609 = load i32, ptr %24, align 4, !tbaa !9
  %1610 = load i32, ptr %7, align 4, !tbaa !9
  %1611 = sub nsw i32 %1609, %1610
  %1612 = sext i32 %1611 to i64
  %1613 = getelementptr inbounds i8, ptr %1608, i64 %1612
  %1614 = load i8, ptr %1613, align 1, !tbaa !16
  %1615 = zext i8 %1614 to i32
  %1616 = load ptr, ptr %16, align 8, !tbaa !5
  %1617 = load i32, ptr %28, align 4, !tbaa !9
  %1618 = sext i32 %1617 to i64
  %1619 = getelementptr inbounds ptr, ptr %1616, i64 %1618
  %1620 = load ptr, ptr %1619, align 8, !tbaa !5
  %1621 = load i32, ptr %26, align 4, !tbaa !9
  %1622 = load i32, ptr %7, align 4, !tbaa !9
  %1623 = add nsw i32 %1621, %1622
  %1624 = sext i32 %1623 to i64
  %1625 = getelementptr inbounds ptr, ptr %1620, i64 %1624
  %1626 = load ptr, ptr %1625, align 8, !tbaa !5
  %1627 = load i32, ptr %24, align 4, !tbaa !9
  %1628 = load i32, ptr %7, align 4, !tbaa !9
  %1629 = add nsw i32 %1627, %1628
  %1630 = sext i32 %1629 to i64
  %1631 = getelementptr inbounds i8, ptr %1626, i64 %1630
  %1632 = load i8, ptr %1631, align 1, !tbaa !16
  %1633 = zext i8 %1632 to i32
  %1634 = sub nsw i32 %1615, %1633
  %1635 = mul nsw i32 %1634, 3
  %1636 = add nsw i32 %1597, %1635
  %1637 = load ptr, ptr %16, align 8, !tbaa !5
  %1638 = load i32, ptr %28, align 4, !tbaa !9
  %1639 = sext i32 %1638 to i64
  %1640 = getelementptr inbounds ptr, ptr %1637, i64 %1639
  %1641 = load ptr, ptr %1640, align 8, !tbaa !5
  %1642 = load i32, ptr %26, align 4, !tbaa !9
  %1643 = load i32, ptr %7, align 4, !tbaa !9
  %1644 = sub nsw i32 %1642, %1643
  %1645 = add nsw i32 %1644, 1
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds ptr, ptr %1641, i64 %1646
  %1648 = load ptr, ptr %1647, align 8, !tbaa !5
  %1649 = load i32, ptr %24, align 4, !tbaa !9
  %1650 = load i32, ptr %7, align 4, !tbaa !9
  %1651 = sub nsw i32 %1649, %1650
  %1652 = sext i32 %1651 to i64
  %1653 = getelementptr inbounds i8, ptr %1648, i64 %1652
  %1654 = load i8, ptr %1653, align 1, !tbaa !16
  %1655 = zext i8 %1654 to i32
  %1656 = load ptr, ptr %16, align 8, !tbaa !5
  %1657 = load i32, ptr %28, align 4, !tbaa !9
  %1658 = sext i32 %1657 to i64
  %1659 = getelementptr inbounds ptr, ptr %1656, i64 %1658
  %1660 = load ptr, ptr %1659, align 8, !tbaa !5
  %1661 = load i32, ptr %26, align 4, !tbaa !9
  %1662 = load i32, ptr %7, align 4, !tbaa !9
  %1663 = add nsw i32 %1661, %1662
  %1664 = sub nsw i32 %1663, 1
  %1665 = sext i32 %1664 to i64
  %1666 = getelementptr inbounds ptr, ptr %1660, i64 %1665
  %1667 = load ptr, ptr %1666, align 8, !tbaa !5
  %1668 = load i32, ptr %24, align 4, !tbaa !9
  %1669 = load i32, ptr %7, align 4, !tbaa !9
  %1670 = add nsw i32 %1668, %1669
  %1671 = sext i32 %1670 to i64
  %1672 = getelementptr inbounds i8, ptr %1667, i64 %1671
  %1673 = load i8, ptr %1672, align 1, !tbaa !16
  %1674 = zext i8 %1673 to i32
  %1675 = sub nsw i32 %1655, %1674
  %1676 = mul nsw i32 %1675, 2
  %1677 = add nsw i32 %1636, %1676
  %1678 = icmp sgt i32 %1677, 0
  br i1 %1678, label %1679, label %1800

1679:                                             ; preds = %1557
  %1680 = load ptr, ptr %16, align 8, !tbaa !5
  %1681 = load i32, ptr %28, align 4, !tbaa !9
  %1682 = sext i32 %1681 to i64
  %1683 = getelementptr inbounds ptr, ptr %1680, i64 %1682
  %1684 = load ptr, ptr %1683, align 8, !tbaa !5
  %1685 = load i32, ptr %26, align 4, !tbaa !9
  %1686 = load i32, ptr %7, align 4, !tbaa !9
  %1687 = sub nsw i32 %1685, %1686
  %1688 = sext i32 %1687 to i64
  %1689 = getelementptr inbounds ptr, ptr %1684, i64 %1688
  %1690 = load ptr, ptr %1689, align 8, !tbaa !5
  %1691 = load i32, ptr %24, align 4, !tbaa !9
  %1692 = load i32, ptr %7, align 4, !tbaa !9
  %1693 = sub nsw i32 %1691, %1692
  %1694 = add nsw i32 %1693, 1
  %1695 = sext i32 %1694 to i64
  %1696 = getelementptr inbounds i8, ptr %1690, i64 %1695
  %1697 = load i8, ptr %1696, align 1, !tbaa !16
  %1698 = zext i8 %1697 to i32
  %1699 = load ptr, ptr %16, align 8, !tbaa !5
  %1700 = load i32, ptr %28, align 4, !tbaa !9
  %1701 = sext i32 %1700 to i64
  %1702 = getelementptr inbounds ptr, ptr %1699, i64 %1701
  %1703 = load ptr, ptr %1702, align 8, !tbaa !5
  %1704 = load i32, ptr %26, align 4, !tbaa !9
  %1705 = load i32, ptr %7, align 4, !tbaa !9
  %1706 = add nsw i32 %1704, %1705
  %1707 = sext i32 %1706 to i64
  %1708 = getelementptr inbounds ptr, ptr %1703, i64 %1707
  %1709 = load ptr, ptr %1708, align 8, !tbaa !5
  %1710 = load i32, ptr %24, align 4, !tbaa !9
  %1711 = load i32, ptr %7, align 4, !tbaa !9
  %1712 = add nsw i32 %1710, %1711
  %1713 = sub nsw i32 %1712, 1
  %1714 = sext i32 %1713 to i64
  %1715 = getelementptr inbounds i8, ptr %1709, i64 %1714
  %1716 = load i8, ptr %1715, align 1, !tbaa !16
  %1717 = zext i8 %1716 to i32
  %1718 = sub nsw i32 %1698, %1717
  %1719 = mul nsw i32 %1718, 2
  %1720 = load ptr, ptr %16, align 8, !tbaa !5
  %1721 = load i32, ptr %28, align 4, !tbaa !9
  %1722 = sext i32 %1721 to i64
  %1723 = getelementptr inbounds ptr, ptr %1720, i64 %1722
  %1724 = load ptr, ptr %1723, align 8, !tbaa !5
  %1725 = load i32, ptr %26, align 4, !tbaa !9
  %1726 = load i32, ptr %7, align 4, !tbaa !9
  %1727 = sub nsw i32 %1725, %1726
  %1728 = sext i32 %1727 to i64
  %1729 = getelementptr inbounds ptr, ptr %1724, i64 %1728
  %1730 = load ptr, ptr %1729, align 8, !tbaa !5
  %1731 = load i32, ptr %24, align 4, !tbaa !9
  %1732 = load i32, ptr %7, align 4, !tbaa !9
  %1733 = sub nsw i32 %1731, %1732
  %1734 = sext i32 %1733 to i64
  %1735 = getelementptr inbounds i8, ptr %1730, i64 %1734
  %1736 = load i8, ptr %1735, align 1, !tbaa !16
  %1737 = zext i8 %1736 to i32
  %1738 = load ptr, ptr %16, align 8, !tbaa !5
  %1739 = load i32, ptr %28, align 4, !tbaa !9
  %1740 = sext i32 %1739 to i64
  %1741 = getelementptr inbounds ptr, ptr %1738, i64 %1740
  %1742 = load ptr, ptr %1741, align 8, !tbaa !5
  %1743 = load i32, ptr %26, align 4, !tbaa !9
  %1744 = load i32, ptr %7, align 4, !tbaa !9
  %1745 = add nsw i32 %1743, %1744
  %1746 = sext i32 %1745 to i64
  %1747 = getelementptr inbounds ptr, ptr %1742, i64 %1746
  %1748 = load ptr, ptr %1747, align 8, !tbaa !5
  %1749 = load i32, ptr %24, align 4, !tbaa !9
  %1750 = load i32, ptr %7, align 4, !tbaa !9
  %1751 = add nsw i32 %1749, %1750
  %1752 = sext i32 %1751 to i64
  %1753 = getelementptr inbounds i8, ptr %1748, i64 %1752
  %1754 = load i8, ptr %1753, align 1, !tbaa !16
  %1755 = zext i8 %1754 to i32
  %1756 = sub nsw i32 %1737, %1755
  %1757 = mul nsw i32 %1756, 3
  %1758 = add nsw i32 %1719, %1757
  %1759 = load ptr, ptr %16, align 8, !tbaa !5
  %1760 = load i32, ptr %28, align 4, !tbaa !9
  %1761 = sext i32 %1760 to i64
  %1762 = getelementptr inbounds ptr, ptr %1759, i64 %1761
  %1763 = load ptr, ptr %1762, align 8, !tbaa !5
  %1764 = load i32, ptr %26, align 4, !tbaa !9
  %1765 = load i32, ptr %7, align 4, !tbaa !9
  %1766 = sub nsw i32 %1764, %1765
  %1767 = add nsw i32 %1766, 1
  %1768 = sext i32 %1767 to i64
  %1769 = getelementptr inbounds ptr, ptr %1763, i64 %1768
  %1770 = load ptr, ptr %1769, align 8, !tbaa !5
  %1771 = load i32, ptr %24, align 4, !tbaa !9
  %1772 = load i32, ptr %7, align 4, !tbaa !9
  %1773 = sub nsw i32 %1771, %1772
  %1774 = sext i32 %1773 to i64
  %1775 = getelementptr inbounds i8, ptr %1770, i64 %1774
  %1776 = load i8, ptr %1775, align 1, !tbaa !16
  %1777 = zext i8 %1776 to i32
  %1778 = load ptr, ptr %16, align 8, !tbaa !5
  %1779 = load i32, ptr %28, align 4, !tbaa !9
  %1780 = sext i32 %1779 to i64
  %1781 = getelementptr inbounds ptr, ptr %1778, i64 %1780
  %1782 = load ptr, ptr %1781, align 8, !tbaa !5
  %1783 = load i32, ptr %26, align 4, !tbaa !9
  %1784 = load i32, ptr %7, align 4, !tbaa !9
  %1785 = add nsw i32 %1783, %1784
  %1786 = sub nsw i32 %1785, 1
  %1787 = sext i32 %1786 to i64
  %1788 = getelementptr inbounds ptr, ptr %1782, i64 %1787
  %1789 = load ptr, ptr %1788, align 8, !tbaa !5
  %1790 = load i32, ptr %24, align 4, !tbaa !9
  %1791 = load i32, ptr %7, align 4, !tbaa !9
  %1792 = add nsw i32 %1790, %1791
  %1793 = sext i32 %1792 to i64
  %1794 = getelementptr inbounds i8, ptr %1789, i64 %1793
  %1795 = load i8, ptr %1794, align 1, !tbaa !16
  %1796 = zext i8 %1795 to i32
  %1797 = sub nsw i32 %1777, %1796
  %1798 = mul nsw i32 %1797, 2
  %1799 = add nsw i32 %1758, %1798
  br label %1922

1800:                                             ; preds = %1557
  %1801 = load ptr, ptr %16, align 8, !tbaa !5
  %1802 = load i32, ptr %28, align 4, !tbaa !9
  %1803 = sext i32 %1802 to i64
  %1804 = getelementptr inbounds ptr, ptr %1801, i64 %1803
  %1805 = load ptr, ptr %1804, align 8, !tbaa !5
  %1806 = load i32, ptr %26, align 4, !tbaa !9
  %1807 = load i32, ptr %7, align 4, !tbaa !9
  %1808 = sub nsw i32 %1806, %1807
  %1809 = sext i32 %1808 to i64
  %1810 = getelementptr inbounds ptr, ptr %1805, i64 %1809
  %1811 = load ptr, ptr %1810, align 8, !tbaa !5
  %1812 = load i32, ptr %24, align 4, !tbaa !9
  %1813 = load i32, ptr %7, align 4, !tbaa !9
  %1814 = sub nsw i32 %1812, %1813
  %1815 = add nsw i32 %1814, 1
  %1816 = sext i32 %1815 to i64
  %1817 = getelementptr inbounds i8, ptr %1811, i64 %1816
  %1818 = load i8, ptr %1817, align 1, !tbaa !16
  %1819 = zext i8 %1818 to i32
  %1820 = load ptr, ptr %16, align 8, !tbaa !5
  %1821 = load i32, ptr %28, align 4, !tbaa !9
  %1822 = sext i32 %1821 to i64
  %1823 = getelementptr inbounds ptr, ptr %1820, i64 %1822
  %1824 = load ptr, ptr %1823, align 8, !tbaa !5
  %1825 = load i32, ptr %26, align 4, !tbaa !9
  %1826 = load i32, ptr %7, align 4, !tbaa !9
  %1827 = add nsw i32 %1825, %1826
  %1828 = sext i32 %1827 to i64
  %1829 = getelementptr inbounds ptr, ptr %1824, i64 %1828
  %1830 = load ptr, ptr %1829, align 8, !tbaa !5
  %1831 = load i32, ptr %24, align 4, !tbaa !9
  %1832 = load i32, ptr %7, align 4, !tbaa !9
  %1833 = add nsw i32 %1831, %1832
  %1834 = sub nsw i32 %1833, 1
  %1835 = sext i32 %1834 to i64
  %1836 = getelementptr inbounds i8, ptr %1830, i64 %1835
  %1837 = load i8, ptr %1836, align 1, !tbaa !16
  %1838 = zext i8 %1837 to i32
  %1839 = sub nsw i32 %1819, %1838
  %1840 = mul nsw i32 %1839, 2
  %1841 = load ptr, ptr %16, align 8, !tbaa !5
  %1842 = load i32, ptr %28, align 4, !tbaa !9
  %1843 = sext i32 %1842 to i64
  %1844 = getelementptr inbounds ptr, ptr %1841, i64 %1843
  %1845 = load ptr, ptr %1844, align 8, !tbaa !5
  %1846 = load i32, ptr %26, align 4, !tbaa !9
  %1847 = load i32, ptr %7, align 4, !tbaa !9
  %1848 = sub nsw i32 %1846, %1847
  %1849 = sext i32 %1848 to i64
  %1850 = getelementptr inbounds ptr, ptr %1845, i64 %1849
  %1851 = load ptr, ptr %1850, align 8, !tbaa !5
  %1852 = load i32, ptr %24, align 4, !tbaa !9
  %1853 = load i32, ptr %7, align 4, !tbaa !9
  %1854 = sub nsw i32 %1852, %1853
  %1855 = sext i32 %1854 to i64
  %1856 = getelementptr inbounds i8, ptr %1851, i64 %1855
  %1857 = load i8, ptr %1856, align 1, !tbaa !16
  %1858 = zext i8 %1857 to i32
  %1859 = load ptr, ptr %16, align 8, !tbaa !5
  %1860 = load i32, ptr %28, align 4, !tbaa !9
  %1861 = sext i32 %1860 to i64
  %1862 = getelementptr inbounds ptr, ptr %1859, i64 %1861
  %1863 = load ptr, ptr %1862, align 8, !tbaa !5
  %1864 = load i32, ptr %26, align 4, !tbaa !9
  %1865 = load i32, ptr %7, align 4, !tbaa !9
  %1866 = add nsw i32 %1864, %1865
  %1867 = sext i32 %1866 to i64
  %1868 = getelementptr inbounds ptr, ptr %1863, i64 %1867
  %1869 = load ptr, ptr %1868, align 8, !tbaa !5
  %1870 = load i32, ptr %24, align 4, !tbaa !9
  %1871 = load i32, ptr %7, align 4, !tbaa !9
  %1872 = add nsw i32 %1870, %1871
  %1873 = sext i32 %1872 to i64
  %1874 = getelementptr inbounds i8, ptr %1869, i64 %1873
  %1875 = load i8, ptr %1874, align 1, !tbaa !16
  %1876 = zext i8 %1875 to i32
  %1877 = sub nsw i32 %1858, %1876
  %1878 = mul nsw i32 %1877, 3
  %1879 = add nsw i32 %1840, %1878
  %1880 = load ptr, ptr %16, align 8, !tbaa !5
  %1881 = load i32, ptr %28, align 4, !tbaa !9
  %1882 = sext i32 %1881 to i64
  %1883 = getelementptr inbounds ptr, ptr %1880, i64 %1882
  %1884 = load ptr, ptr %1883, align 8, !tbaa !5
  %1885 = load i32, ptr %26, align 4, !tbaa !9
  %1886 = load i32, ptr %7, align 4, !tbaa !9
  %1887 = sub nsw i32 %1885, %1886
  %1888 = add nsw i32 %1887, 1
  %1889 = sext i32 %1888 to i64
  %1890 = getelementptr inbounds ptr, ptr %1884, i64 %1889
  %1891 = load ptr, ptr %1890, align 8, !tbaa !5
  %1892 = load i32, ptr %24, align 4, !tbaa !9
  %1893 = load i32, ptr %7, align 4, !tbaa !9
  %1894 = sub nsw i32 %1892, %1893
  %1895 = sext i32 %1894 to i64
  %1896 = getelementptr inbounds i8, ptr %1891, i64 %1895
  %1897 = load i8, ptr %1896, align 1, !tbaa !16
  %1898 = zext i8 %1897 to i32
  %1899 = load ptr, ptr %16, align 8, !tbaa !5
  %1900 = load i32, ptr %28, align 4, !tbaa !9
  %1901 = sext i32 %1900 to i64
  %1902 = getelementptr inbounds ptr, ptr %1899, i64 %1901
  %1903 = load ptr, ptr %1902, align 8, !tbaa !5
  %1904 = load i32, ptr %26, align 4, !tbaa !9
  %1905 = load i32, ptr %7, align 4, !tbaa !9
  %1906 = add nsw i32 %1904, %1905
  %1907 = sub nsw i32 %1906, 1
  %1908 = sext i32 %1907 to i64
  %1909 = getelementptr inbounds ptr, ptr %1903, i64 %1908
  %1910 = load ptr, ptr %1909, align 8, !tbaa !5
  %1911 = load i32, ptr %24, align 4, !tbaa !9
  %1912 = load i32, ptr %7, align 4, !tbaa !9
  %1913 = add nsw i32 %1911, %1912
  %1914 = sext i32 %1913 to i64
  %1915 = getelementptr inbounds i8, ptr %1910, i64 %1914
  %1916 = load i8, ptr %1915, align 1, !tbaa !16
  %1917 = zext i8 %1916 to i32
  %1918 = sub nsw i32 %1898, %1917
  %1919 = mul nsw i32 %1918, 2
  %1920 = add nsw i32 %1879, %1919
  %1921 = sub nsw i32 0, %1920
  br label %1922

1922:                                             ; preds = %1800, %1679
  %1923 = phi i32 [ %1799, %1679 ], [ %1921, %1800 ]
  store i32 %1923, ptr %27, align 4, !tbaa !9
  %1924 = load i32, ptr %27, align 4, !tbaa !9
  %1925 = load i8, ptr %29, align 1, !tbaa !16
  %1926 = zext i8 %1925 to i64
  %1927 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %1926
  %1928 = load i8, ptr %1927, align 1, !tbaa !16
  %1929 = zext i8 %1928 to i32
  %1930 = icmp sgt i32 %1924, %1929
  br i1 %1930, label %1931, label %1943

1931:                                             ; preds = %1922
  %1932 = load ptr, ptr %6, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.MImage, ptr %1932, i32 0, i32 3
  %1934 = getelementptr inbounds [4 x ptr], ptr %1933, i64 0, i64 0
  %1935 = load ptr, ptr %1934, align 8, !tbaa !5
  %1936 = load i32, ptr %26, 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 %24, align 4, !tbaa !9
  %1941 = sext i32 %1940 to i64
  %1942 = getelementptr inbounds i8, ptr %1939, i64 %1941
  store i8 -1, ptr %1942, align 1, !tbaa !16
  store i32 25, ptr %25, align 4
  br label %1944

1943:                                             ; preds = %1922
  store i32 0, ptr %25, align 4
  br label %1944

1944:                                             ; preds = %1943, %1931, %1545, %1195, %809
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #4
  %1945 = load i32, ptr %25, align 4
  switch i32 %1945, label %1950 [
    i32 0, label %1946
  ]

1946:                                             ; preds = %1944
  br label %1947

1947:                                             ; preds = %1946
  %1948 = load i32, ptr %28, align 4, !tbaa !9
  %1949 = add nsw i32 %1948, 1
  store i32 %1949, ptr %28, align 4, !tbaa !9
  br label %453, !llvm.loop !24

1950:                                             ; preds = %1944, %457
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  br label %1951

1951:                                             ; preds = %1950
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  br label %1952

1952:                                             ; preds = %1951, %438
  br label %1953

1953:                                             ; preds = %1952
  %1954 = load i32, ptr %26, align 4, !tbaa !9
  %1955 = add nsw i32 %1954, 1
  store i32 %1955, ptr %26, align 4, !tbaa !9
  br label %358, !llvm.loop !25

1956:                                             ; preds = %416
  br label %1957

1957:                                             ; preds = %1956
  %1958 = load i32, ptr %24, align 4, !tbaa !9
  %1959 = add nsw i32 %1958, 1
  store i32 %1959, ptr %24, align 4, !tbaa !9
  br label %351, !llvm.loop !26

1960:                                             ; preds = %355
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  %1961 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %1961, ptr %30, align 4, !tbaa !9
  br label %1962

1962:                                             ; preds = %3543, %1960
  %1963 = load i32, ptr %30, align 4, !tbaa !9
  %1964 = load i32, ptr %20, align 4, !tbaa !9
  %1965 = icmp slt i32 %1963, %1964
  br i1 %1965, label %1967, label %1966

1966:                                             ; preds = %1962
  store i32 28, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  br label %3546

1967:                                             ; preds = %1962
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  %1968 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %1968, ptr %31, align 4, !tbaa !9
  br label %1969

1969:                                             ; preds = %3539, %1967
  %1970 = load i32, ptr %31, align 4, !tbaa !9
  %1971 = load i32, ptr %17, align 4, !tbaa !9
  %1972 = load i32, ptr %7, align 4, !tbaa !9
  %1973 = sub nsw i32 16, %1972
  %1974 = load i32, ptr %7, align 4, !tbaa !9
  %1975 = sub nsw i32 %1973, %1974
  %1976 = add nsw i32 %1971, %1975
  %1977 = load ptr, ptr %5, align 8, !tbaa !5
  %1978 = getelementptr inbounds %struct.MImage, ptr %1977, i32 0, i32 4
  %1979 = load ptr, ptr %1978, align 8, !tbaa !20
  %1980 = icmp eq ptr %1979, null
  br i1 %1980, label %1981, label %1985

1981:                                             ; preds = %1969
  %1982 = load ptr, ptr %5, align 8, !tbaa !5
  %1983 = getelementptr inbounds %struct.MImage, ptr %1982, i32 0, i32 1
  %1984 = load i32, ptr %1983, align 4, !tbaa !13
  br label %1994

1985:                                             ; preds = %1969
  %1986 = load ptr, ptr %5, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.MImage, ptr %1986, i32 0, i32 4
  %1988 = load ptr, ptr %1987, align 8, !tbaa !20
  %1989 = getelementptr inbounds %struct.MArray, ptr %1988, i32 0, i32 2
  %1990 = load ptr, ptr %1989, align 8, !tbaa !16
  %1991 = getelementptr inbounds i16, ptr %1990, i64 3
  %1992 = load i16, ptr %1991, align 2, !tbaa !21
  %1993 = sext i16 %1992 to i32
  br label %1994

1994:                                             ; preds = %1985, %1981
  %1995 = phi i32 [ %1984, %1981 ], [ %1993, %1985 ]
  %1996 = icmp slt i32 %1976, %1995
  br i1 %1996, label %1997, label %2004

1997:                                             ; preds = %1994
  %1998 = load i32, ptr %17, align 4, !tbaa !9
  %1999 = load i32, ptr %7, align 4, !tbaa !9
  %2000 = sub nsw i32 16, %1999
  %2001 = load i32, ptr %7, align 4, !tbaa !9
  %2002 = sub nsw i32 %2000, %2001
  %2003 = add nsw i32 %1998, %2002
  br label %2024

2004:                                             ; preds = %1994
  %2005 = load ptr, ptr %5, align 8, !tbaa !5
  %2006 = getelementptr inbounds %struct.MImage, ptr %2005, i32 0, i32 4
  %2007 = load ptr, ptr %2006, align 8, !tbaa !20
  %2008 = icmp eq ptr %2007, null
  br i1 %2008, label %2009, label %2013

2009:                                             ; preds = %2004
  %2010 = load ptr, ptr %5, align 8, !tbaa !5
  %2011 = getelementptr inbounds %struct.MImage, ptr %2010, i32 0, i32 1
  %2012 = load i32, ptr %2011, align 4, !tbaa !13
  br label %2022

2013:                                             ; preds = %2004
  %2014 = load ptr, ptr %5, align 8, !tbaa !5
  %2015 = getelementptr inbounds %struct.MImage, ptr %2014, i32 0, i32 4
  %2016 = load ptr, ptr %2015, align 8, !tbaa !20
  %2017 = getelementptr inbounds %struct.MArray, ptr %2016, i32 0, i32 2
  %2018 = load ptr, ptr %2017, align 8, !tbaa !16
  %2019 = getelementptr inbounds i16, ptr %2018, i64 3
  %2020 = load i16, ptr %2019, align 2, !tbaa !21
  %2021 = sext i16 %2020 to i32
  br label %2022

2022:                                             ; preds = %2013, %2009
  %2023 = phi i32 [ %2012, %2009 ], [ %2021, %2013 ]
  br label %2024

2024:                                             ; preds = %2022, %1997
  %2025 = phi i32 [ %2003, %1997 ], [ %2023, %2022 ]
  %2026 = icmp slt i32 %1970, %2025
  br i1 %2026, label %2028, label %2027

2027:                                             ; preds = %2024
  store i32 31, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  br label %3542

2028:                                             ; preds = %2024
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  %2029 = load ptr, ptr %6, align 8, !tbaa !5
  %2030 = getelementptr inbounds %struct.MImage, ptr %2029, i32 0, i32 3
  %2031 = getelementptr inbounds [4 x ptr], ptr %2030, i64 0, i64 0
  %2032 = load ptr, ptr %2031, align 8, !tbaa !5
  %2033 = load i32, ptr %31, align 4, !tbaa !9
  %2034 = sext i32 %2033 to i64
  %2035 = getelementptr inbounds ptr, ptr %2032, i64 %2034
  %2036 = load ptr, ptr %2035, align 8, !tbaa !5
  %2037 = load i32, ptr %30, align 4, !tbaa !9
  %2038 = sext i32 %2037 to i64
  %2039 = getelementptr inbounds i8, ptr %2036, i64 %2038
  store i8 0, ptr %2039, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %2040

2040:                                             ; preds = %3534, %2028
  %2041 = load i32, ptr %33, align 4, !tbaa !9
  %2042 = load i32, ptr %15, align 4, !tbaa !9
  %2043 = icmp slt i32 %2041, %2042
  br i1 %2043, label %2045, label %2044

2044:                                             ; preds = %2040
  store i32 34, ptr %25, align 4
  br label %3537

2045:                                             ; preds = %2040
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #4
  %2046 = load ptr, ptr %16, align 8, !tbaa !5
  %2047 = load i32, ptr %33, align 4, !tbaa !9
  %2048 = sext i32 %2047 to i64
  %2049 = getelementptr inbounds ptr, ptr %2046, i64 %2048
  %2050 = load ptr, ptr %2049, align 8, !tbaa !5
  %2051 = load i32, ptr %31, align 4, !tbaa !9
  %2052 = sext i32 %2051 to i64
  %2053 = getelementptr inbounds ptr, ptr %2050, i64 %2052
  %2054 = load ptr, ptr %2053, align 8, !tbaa !5
  %2055 = load i32, ptr %30, align 4, !tbaa !9
  %2056 = sext i32 %2055 to i64
  %2057 = getelementptr inbounds i8, ptr %2054, i64 %2056
  %2058 = load i8, ptr %2057, align 1, !tbaa !16
  store i8 %2058, ptr %34, align 1, !tbaa !16
  %2059 = load ptr, ptr %16, align 8, !tbaa !5
  %2060 = load i32, ptr %33, align 4, !tbaa !9
  %2061 = sext i32 %2060 to i64
  %2062 = getelementptr inbounds ptr, ptr %2059, i64 %2061
  %2063 = load ptr, ptr %2062, align 8, !tbaa !5
  %2064 = load i32, ptr %31, align 4, !tbaa !9
  %2065 = load i32, ptr %7, align 4, !tbaa !9
  %2066 = sub nsw i32 %2064, %2065
  %2067 = sext i32 %2066 to i64
  %2068 = getelementptr inbounds ptr, ptr %2063, i64 %2067
  %2069 = load ptr, ptr %2068, align 8, !tbaa !5
  %2070 = load i32, ptr %30, align 4, !tbaa !9
  %2071 = sub nsw i32 %2070, 1
  %2072 = sext i32 %2071 to i64
  %2073 = getelementptr inbounds i8, ptr %2069, i64 %2072
  %2074 = load i8, ptr %2073, align 1, !tbaa !16
  %2075 = zext i8 %2074 to i32
  %2076 = load ptr, ptr %16, align 8, !tbaa !5
  %2077 = load i32, ptr %33, align 4, !tbaa !9
  %2078 = sext i32 %2077 to i64
  %2079 = getelementptr inbounds ptr, ptr %2076, i64 %2078
  %2080 = load ptr, ptr %2079, align 8, !tbaa !5
  %2081 = load i32, ptr %31, align 4, !tbaa !9
  %2082 = load i32, ptr %7, align 4, !tbaa !9
  %2083 = add nsw i32 %2081, %2082
  %2084 = sext i32 %2083 to i64
  %2085 = getelementptr inbounds ptr, ptr %2080, i64 %2084
  %2086 = load ptr, ptr %2085, align 8, !tbaa !5
  %2087 = load i32, ptr %30, align 4, !tbaa !9
  %2088 = sub nsw i32 %2087, 1
  %2089 = sext i32 %2088 to i64
  %2090 = getelementptr inbounds i8, ptr %2086, i64 %2089
  %2091 = load i8, ptr %2090, align 1, !tbaa !16
  %2092 = zext i8 %2091 to i32
  %2093 = sub nsw i32 %2075, %2092
  %2094 = mul nsw i32 %2093, 2
  %2095 = load ptr, ptr %16, align 8, !tbaa !5
  %2096 = load i32, ptr %33, align 4, !tbaa !9
  %2097 = sext i32 %2096 to i64
  %2098 = getelementptr inbounds ptr, ptr %2095, i64 %2097
  %2099 = load ptr, ptr %2098, align 8, !tbaa !5
  %2100 = load i32, ptr %31, align 4, !tbaa !9
  %2101 = load i32, ptr %7, align 4, !tbaa !9
  %2102 = sub nsw i32 %2100, %2101
  %2103 = sext i32 %2102 to i64
  %2104 = getelementptr inbounds ptr, ptr %2099, i64 %2103
  %2105 = load ptr, ptr %2104, align 8, !tbaa !5
  %2106 = load i32, ptr %30, align 4, !tbaa !9
  %2107 = sext i32 %2106 to i64
  %2108 = getelementptr inbounds i8, ptr %2105, i64 %2107
  %2109 = load i8, ptr %2108, align 1, !tbaa !16
  %2110 = zext i8 %2109 to i32
  %2111 = load ptr, ptr %16, align 8, !tbaa !5
  %2112 = load i32, ptr %33, align 4, !tbaa !9
  %2113 = sext i32 %2112 to i64
  %2114 = getelementptr inbounds ptr, ptr %2111, i64 %2113
  %2115 = load ptr, ptr %2114, align 8, !tbaa !5
  %2116 = load i32, ptr %31, align 4, !tbaa !9
  %2117 = load i32, ptr %7, align 4, !tbaa !9
  %2118 = add nsw i32 %2116, %2117
  %2119 = sext i32 %2118 to i64
  %2120 = getelementptr inbounds ptr, ptr %2115, i64 %2119
  %2121 = load ptr, ptr %2120, align 8, !tbaa !5
  %2122 = load i32, ptr %30, align 4, !tbaa !9
  %2123 = sext i32 %2122 to i64
  %2124 = getelementptr inbounds i8, ptr %2121, i64 %2123
  %2125 = load i8, ptr %2124, align 1, !tbaa !16
  %2126 = zext i8 %2125 to i32
  %2127 = sub nsw i32 %2110, %2126
  %2128 = mul nsw i32 %2127, 3
  %2129 = add nsw i32 %2094, %2128
  %2130 = load ptr, ptr %16, align 8, !tbaa !5
  %2131 = load i32, ptr %33, align 4, !tbaa !9
  %2132 = sext i32 %2131 to i64
  %2133 = getelementptr inbounds ptr, ptr %2130, i64 %2132
  %2134 = load ptr, ptr %2133, align 8, !tbaa !5
  %2135 = load i32, ptr %31, align 4, !tbaa !9
  %2136 = load i32, ptr %7, align 4, !tbaa !9
  %2137 = sub nsw i32 %2135, %2136
  %2138 = sext i32 %2137 to i64
  %2139 = getelementptr inbounds ptr, ptr %2134, i64 %2138
  %2140 = load ptr, ptr %2139, align 8, !tbaa !5
  %2141 = load i32, ptr %30, align 4, !tbaa !9
  %2142 = add nsw i32 %2141, 1
  %2143 = sext i32 %2142 to i64
  %2144 = getelementptr inbounds i8, ptr %2140, i64 %2143
  %2145 = load i8, ptr %2144, align 1, !tbaa !16
  %2146 = zext i8 %2145 to i32
  %2147 = load ptr, ptr %16, align 8, !tbaa !5
  %2148 = load i32, ptr %33, align 4, !tbaa !9
  %2149 = sext i32 %2148 to i64
  %2150 = getelementptr inbounds ptr, ptr %2147, i64 %2149
  %2151 = load ptr, ptr %2150, align 8, !tbaa !5
  %2152 = load i32, ptr %31, align 4, !tbaa !9
  %2153 = load i32, ptr %7, align 4, !tbaa !9
  %2154 = add nsw i32 %2152, %2153
  %2155 = sext i32 %2154 to i64
  %2156 = getelementptr inbounds ptr, ptr %2151, i64 %2155
  %2157 = load ptr, ptr %2156, align 8, !tbaa !5
  %2158 = load i32, ptr %30, align 4, !tbaa !9
  %2159 = add nsw i32 %2158, 1
  %2160 = sext i32 %2159 to i64
  %2161 = getelementptr inbounds i8, ptr %2157, i64 %2160
  %2162 = load i8, ptr %2161, align 1, !tbaa !16
  %2163 = zext i8 %2162 to i32
  %2164 = sub nsw i32 %2146, %2163
  %2165 = mul nsw i32 %2164, 2
  %2166 = add nsw i32 %2129, %2165
  %2167 = icmp sgt i32 %2166, 0
  br i1 %2167, label %2168, label %2277

2168:                                             ; preds = %2045
  %2169 = load ptr, ptr %16, align 8, !tbaa !5
  %2170 = load i32, ptr %33, align 4, !tbaa !9
  %2171 = sext i32 %2170 to i64
  %2172 = getelementptr inbounds ptr, ptr %2169, i64 %2171
  %2173 = load ptr, ptr %2172, align 8, !tbaa !5
  %2174 = load i32, ptr %31, align 4, !tbaa !9
  %2175 = load i32, ptr %7, align 4, !tbaa !9
  %2176 = sub nsw i32 %2174, %2175
  %2177 = sext i32 %2176 to i64
  %2178 = getelementptr inbounds ptr, ptr %2173, i64 %2177
  %2179 = load ptr, ptr %2178, align 8, !tbaa !5
  %2180 = load i32, ptr %30, align 4, !tbaa !9
  %2181 = sub nsw i32 %2180, 1
  %2182 = sext i32 %2181 to i64
  %2183 = getelementptr inbounds i8, ptr %2179, i64 %2182
  %2184 = load i8, ptr %2183, align 1, !tbaa !16
  %2185 = zext i8 %2184 to i32
  %2186 = load ptr, ptr %16, align 8, !tbaa !5
  %2187 = load i32, ptr %33, align 4, !tbaa !9
  %2188 = sext i32 %2187 to i64
  %2189 = getelementptr inbounds ptr, ptr %2186, i64 %2188
  %2190 = load ptr, ptr %2189, align 8, !tbaa !5
  %2191 = load i32, ptr %31, align 4, !tbaa !9
  %2192 = load i32, ptr %7, align 4, !tbaa !9
  %2193 = add nsw i32 %2191, %2192
  %2194 = sext i32 %2193 to i64
  %2195 = getelementptr inbounds ptr, ptr %2190, i64 %2194
  %2196 = load ptr, ptr %2195, align 8, !tbaa !5
  %2197 = load i32, ptr %30, align 4, !tbaa !9
  %2198 = sub nsw i32 %2197, 1
  %2199 = sext i32 %2198 to i64
  %2200 = getelementptr inbounds i8, ptr %2196, i64 %2199
  %2201 = load i8, ptr %2200, align 1, !tbaa !16
  %2202 = zext i8 %2201 to i32
  %2203 = sub nsw i32 %2185, %2202
  %2204 = mul nsw i32 %2203, 2
  %2205 = load ptr, ptr %16, align 8, !tbaa !5
  %2206 = load i32, ptr %33, align 4, !tbaa !9
  %2207 = sext i32 %2206 to i64
  %2208 = getelementptr inbounds ptr, ptr %2205, i64 %2207
  %2209 = load ptr, ptr %2208, align 8, !tbaa !5
  %2210 = load i32, ptr %31, align 4, !tbaa !9
  %2211 = load i32, ptr %7, align 4, !tbaa !9
  %2212 = sub nsw i32 %2210, %2211
  %2213 = sext i32 %2212 to i64
  %2214 = getelementptr inbounds ptr, ptr %2209, i64 %2213
  %2215 = load ptr, ptr %2214, align 8, !tbaa !5
  %2216 = load i32, ptr %30, align 4, !tbaa !9
  %2217 = sext i32 %2216 to i64
  %2218 = getelementptr inbounds i8, ptr %2215, i64 %2217
  %2219 = load i8, ptr %2218, align 1, !tbaa !16
  %2220 = zext i8 %2219 to i32
  %2221 = load ptr, ptr %16, align 8, !tbaa !5
  %2222 = load i32, ptr %33, align 4, !tbaa !9
  %2223 = sext i32 %2222 to i64
  %2224 = getelementptr inbounds ptr, ptr %2221, i64 %2223
  %2225 = load ptr, ptr %2224, align 8, !tbaa !5
  %2226 = load i32, ptr %31, align 4, !tbaa !9
  %2227 = load i32, ptr %7, align 4, !tbaa !9
  %2228 = add nsw i32 %2226, %2227
  %2229 = sext i32 %2228 to i64
  %2230 = getelementptr inbounds ptr, ptr %2225, i64 %2229
  %2231 = load ptr, ptr %2230, align 8, !tbaa !5
  %2232 = load i32, ptr %30, align 4, !tbaa !9
  %2233 = sext i32 %2232 to i64
  %2234 = getelementptr inbounds i8, ptr %2231, i64 %2233
  %2235 = load i8, ptr %2234, align 1, !tbaa !16
  %2236 = zext i8 %2235 to i32
  %2237 = sub nsw i32 %2220, %2236
  %2238 = mul nsw i32 %2237, 3
  %2239 = add nsw i32 %2204, %2238
  %2240 = load ptr, ptr %16, align 8, !tbaa !5
  %2241 = load i32, ptr %33, align 4, !tbaa !9
  %2242 = sext i32 %2241 to i64
  %2243 = getelementptr inbounds ptr, ptr %2240, i64 %2242
  %2244 = load ptr, ptr %2243, align 8, !tbaa !5
  %2245 = load i32, ptr %31, align 4, !tbaa !9
  %2246 = load i32, ptr %7, align 4, !tbaa !9
  %2247 = sub nsw i32 %2245, %2246
  %2248 = sext i32 %2247 to i64
  %2249 = getelementptr inbounds ptr, ptr %2244, i64 %2248
  %2250 = load ptr, ptr %2249, align 8, !tbaa !5
  %2251 = load i32, ptr %30, align 4, !tbaa !9
  %2252 = add nsw i32 %2251, 1
  %2253 = sext i32 %2252 to i64
  %2254 = getelementptr inbounds i8, ptr %2250, i64 %2253
  %2255 = load i8, ptr %2254, align 1, !tbaa !16
  %2256 = zext i8 %2255 to i32
  %2257 = load ptr, ptr %16, align 8, !tbaa !5
  %2258 = load i32, ptr %33, align 4, !tbaa !9
  %2259 = sext i32 %2258 to i64
  %2260 = getelementptr inbounds ptr, ptr %2257, i64 %2259
  %2261 = load ptr, ptr %2260, align 8, !tbaa !5
  %2262 = load i32, ptr %31, align 4, !tbaa !9
  %2263 = load i32, ptr %7, align 4, !tbaa !9
  %2264 = add nsw i32 %2262, %2263
  %2265 = sext i32 %2264 to i64
  %2266 = getelementptr inbounds ptr, ptr %2261, i64 %2265
  %2267 = load ptr, ptr %2266, align 8, !tbaa !5
  %2268 = load i32, ptr %30, align 4, !tbaa !9
  %2269 = add nsw i32 %2268, 1
  %2270 = sext i32 %2269 to i64
  %2271 = getelementptr inbounds i8, ptr %2267, i64 %2270
  %2272 = load i8, ptr %2271, align 1, !tbaa !16
  %2273 = zext i8 %2272 to i32
  %2274 = sub nsw i32 %2256, %2273
  %2275 = mul nsw i32 %2274, 2
  %2276 = add nsw i32 %2239, %2275
  br label %2387

2277:                                             ; preds = %2045
  %2278 = load ptr, ptr %16, align 8, !tbaa !5
  %2279 = load i32, ptr %33, align 4, !tbaa !9
  %2280 = sext i32 %2279 to i64
  %2281 = getelementptr inbounds ptr, ptr %2278, i64 %2280
  %2282 = load ptr, ptr %2281, align 8, !tbaa !5
  %2283 = load i32, ptr %31, align 4, !tbaa !9
  %2284 = load i32, ptr %7, align 4, !tbaa !9
  %2285 = sub nsw i32 %2283, %2284
  %2286 = sext i32 %2285 to i64
  %2287 = getelementptr inbounds ptr, ptr %2282, i64 %2286
  %2288 = load ptr, ptr %2287, align 8, !tbaa !5
  %2289 = load i32, ptr %30, align 4, !tbaa !9
  %2290 = sub nsw i32 %2289, 1
  %2291 = sext i32 %2290 to i64
  %2292 = getelementptr inbounds i8, ptr %2288, i64 %2291
  %2293 = load i8, ptr %2292, align 1, !tbaa !16
  %2294 = zext i8 %2293 to i32
  %2295 = load ptr, ptr %16, align 8, !tbaa !5
  %2296 = load i32, ptr %33, align 4, !tbaa !9
  %2297 = sext i32 %2296 to i64
  %2298 = getelementptr inbounds ptr, ptr %2295, i64 %2297
  %2299 = load ptr, ptr %2298, align 8, !tbaa !5
  %2300 = load i32, ptr %31, align 4, !tbaa !9
  %2301 = load i32, ptr %7, align 4, !tbaa !9
  %2302 = add nsw i32 %2300, %2301
  %2303 = sext i32 %2302 to i64
  %2304 = getelementptr inbounds ptr, ptr %2299, i64 %2303
  %2305 = load ptr, ptr %2304, align 8, !tbaa !5
  %2306 = load i32, ptr %30, align 4, !tbaa !9
  %2307 = sub nsw i32 %2306, 1
  %2308 = sext i32 %2307 to i64
  %2309 = getelementptr inbounds i8, ptr %2305, i64 %2308
  %2310 = load i8, ptr %2309, align 1, !tbaa !16
  %2311 = zext i8 %2310 to i32
  %2312 = sub nsw i32 %2294, %2311
  %2313 = mul nsw i32 %2312, 2
  %2314 = load ptr, ptr %16, align 8, !tbaa !5
  %2315 = load i32, ptr %33, align 4, !tbaa !9
  %2316 = sext i32 %2315 to i64
  %2317 = getelementptr inbounds ptr, ptr %2314, i64 %2316
  %2318 = load ptr, ptr %2317, align 8, !tbaa !5
  %2319 = load i32, ptr %31, align 4, !tbaa !9
  %2320 = load i32, ptr %7, align 4, !tbaa !9
  %2321 = sub nsw i32 %2319, %2320
  %2322 = sext i32 %2321 to i64
  %2323 = getelementptr inbounds ptr, ptr %2318, i64 %2322
  %2324 = load ptr, ptr %2323, align 8, !tbaa !5
  %2325 = load i32, ptr %30, align 4, !tbaa !9
  %2326 = sext i32 %2325 to i64
  %2327 = getelementptr inbounds i8, ptr %2324, i64 %2326
  %2328 = load i8, ptr %2327, align 1, !tbaa !16
  %2329 = zext i8 %2328 to i32
  %2330 = load ptr, ptr %16, align 8, !tbaa !5
  %2331 = load i32, ptr %33, align 4, !tbaa !9
  %2332 = sext i32 %2331 to i64
  %2333 = getelementptr inbounds ptr, ptr %2330, i64 %2332
  %2334 = load ptr, ptr %2333, align 8, !tbaa !5
  %2335 = load i32, ptr %31, align 4, !tbaa !9
  %2336 = load i32, ptr %7, align 4, !tbaa !9
  %2337 = add nsw i32 %2335, %2336
  %2338 = sext i32 %2337 to i64
  %2339 = getelementptr inbounds ptr, ptr %2334, i64 %2338
  %2340 = load ptr, ptr %2339, align 8, !tbaa !5
  %2341 = load i32, ptr %30, align 4, !tbaa !9
  %2342 = sext i32 %2341 to i64
  %2343 = getelementptr inbounds i8, ptr %2340, i64 %2342
  %2344 = load i8, ptr %2343, align 1, !tbaa !16
  %2345 = zext i8 %2344 to i32
  %2346 = sub nsw i32 %2329, %2345
  %2347 = mul nsw i32 %2346, 3
  %2348 = add nsw i32 %2313, %2347
  %2349 = load ptr, ptr %16, align 8, !tbaa !5
  %2350 = load i32, ptr %33, align 4, !tbaa !9
  %2351 = sext i32 %2350 to i64
  %2352 = getelementptr inbounds ptr, ptr %2349, i64 %2351
  %2353 = load ptr, ptr %2352, align 8, !tbaa !5
  %2354 = load i32, ptr %31, align 4, !tbaa !9
  %2355 = load i32, ptr %7, align 4, !tbaa !9
  %2356 = sub nsw i32 %2354, %2355
  %2357 = sext i32 %2356 to i64
  %2358 = getelementptr inbounds ptr, ptr %2353, i64 %2357
  %2359 = load ptr, ptr %2358, align 8, !tbaa !5
  %2360 = load i32, ptr %30, align 4, !tbaa !9
  %2361 = add nsw i32 %2360, 1
  %2362 = sext i32 %2361 to i64
  %2363 = getelementptr inbounds i8, ptr %2359, i64 %2362
  %2364 = load i8, ptr %2363, align 1, !tbaa !16
  %2365 = zext i8 %2364 to i32
  %2366 = load ptr, ptr %16, align 8, !tbaa !5
  %2367 = load i32, ptr %33, align 4, !tbaa !9
  %2368 = sext i32 %2367 to i64
  %2369 = getelementptr inbounds ptr, ptr %2366, i64 %2368
  %2370 = load ptr, ptr %2369, align 8, !tbaa !5
  %2371 = load i32, ptr %31, align 4, !tbaa !9
  %2372 = load i32, ptr %7, align 4, !tbaa !9
  %2373 = add nsw i32 %2371, %2372
  %2374 = sext i32 %2373 to i64
  %2375 = getelementptr inbounds ptr, ptr %2370, i64 %2374
  %2376 = load ptr, ptr %2375, align 8, !tbaa !5
  %2377 = load i32, ptr %30, align 4, !tbaa !9
  %2378 = add nsw i32 %2377, 1
  %2379 = sext i32 %2378 to i64
  %2380 = getelementptr inbounds i8, ptr %2376, i64 %2379
  %2381 = load i8, ptr %2380, align 1, !tbaa !16
  %2382 = zext i8 %2381 to i32
  %2383 = sub nsw i32 %2365, %2382
  %2384 = mul nsw i32 %2383, 2
  %2385 = add nsw i32 %2348, %2384
  %2386 = sub nsw i32 0, %2385
  br label %2387

2387:                                             ; preds = %2277, %2168
  %2388 = phi i32 [ %2276, %2168 ], [ %2386, %2277 ]
  store i32 %2388, ptr %32, align 4, !tbaa !9
  %2389 = load i32, ptr %32, align 4, !tbaa !9
  %2390 = load i8, ptr %34, align 1, !tbaa !16
  %2391 = zext i8 %2390 to i64
  %2392 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %2391
  %2393 = load i8, ptr %2392, align 1, !tbaa !16
  %2394 = zext i8 %2393 to i32
  %2395 = icmp sgt i32 %2389, %2394
  br i1 %2395, label %2396, label %2408

2396:                                             ; preds = %2387
  %2397 = load ptr, ptr %6, align 8, !tbaa !5
  %2398 = getelementptr inbounds %struct.MImage, ptr %2397, i32 0, i32 3
  %2399 = getelementptr inbounds [4 x ptr], ptr %2398, i64 0, i64 0
  %2400 = load ptr, ptr %2399, align 8, !tbaa !5
  %2401 = load i32, ptr %31, align 4, !tbaa !9
  %2402 = sext i32 %2401 to i64
  %2403 = getelementptr inbounds ptr, ptr %2400, i64 %2402
  %2404 = load ptr, ptr %2403, align 8, !tbaa !5
  %2405 = load i32, ptr %30, align 4, !tbaa !9
  %2406 = sext i32 %2405 to i64
  %2407 = getelementptr inbounds i8, ptr %2404, i64 %2406
  store i8 -1, ptr %2407, align 1, !tbaa !16
  store i32 34, ptr %25, align 4
  br label %3531

2408:                                             ; preds = %2387
  %2409 = load ptr, ptr %16, align 8, !tbaa !5
  %2410 = load i32, ptr %33, align 4, !tbaa !9
  %2411 = sext i32 %2410 to i64
  %2412 = getelementptr inbounds ptr, ptr %2409, i64 %2411
  %2413 = load ptr, ptr %2412, align 8, !tbaa !5
  %2414 = load i32, ptr %31, align 4, !tbaa !9
  %2415 = load i32, ptr %7, align 4, !tbaa !9
  %2416 = sub nsw i32 %2414, %2415
  %2417 = sext i32 %2416 to i64
  %2418 = getelementptr inbounds ptr, ptr %2413, i64 %2417
  %2419 = load ptr, ptr %2418, align 8, !tbaa !5
  %2420 = load i32, ptr %30, align 4, !tbaa !9
  %2421 = load i32, ptr %7, align 4, !tbaa !9
  %2422 = add nsw i32 %2420, %2421
  %2423 = sub nsw i32 %2422, 1
  %2424 = sext i32 %2423 to i64
  %2425 = getelementptr inbounds i8, ptr %2419, i64 %2424
  %2426 = load i8, ptr %2425, align 1, !tbaa !16
  %2427 = zext i8 %2426 to i32
  %2428 = load ptr, ptr %16, align 8, !tbaa !5
  %2429 = load i32, ptr %33, align 4, !tbaa !9
  %2430 = sext i32 %2429 to i64
  %2431 = getelementptr inbounds ptr, ptr %2428, i64 %2430
  %2432 = load ptr, ptr %2431, align 8, !tbaa !5
  %2433 = load i32, ptr %31, align 4, !tbaa !9
  %2434 = load i32, ptr %7, align 4, !tbaa !9
  %2435 = add nsw i32 %2433, %2434
  %2436 = sext i32 %2435 to i64
  %2437 = getelementptr inbounds ptr, ptr %2432, i64 %2436
  %2438 = load ptr, ptr %2437, align 8, !tbaa !5
  %2439 = load i32, ptr %30, align 4, !tbaa !9
  %2440 = load i32, ptr %7, align 4, !tbaa !9
  %2441 = sub nsw i32 %2439, %2440
  %2442 = add nsw i32 %2441, 1
  %2443 = sext i32 %2442 to i64
  %2444 = getelementptr inbounds i8, ptr %2438, i64 %2443
  %2445 = load i8, ptr %2444, align 1, !tbaa !16
  %2446 = zext i8 %2445 to i32
  %2447 = sub nsw i32 %2427, %2446
  %2448 = mul nsw i32 %2447, 2
  %2449 = load ptr, ptr %16, align 8, !tbaa !5
  %2450 = load i32, ptr %33, align 4, !tbaa !9
  %2451 = sext i32 %2450 to i64
  %2452 = getelementptr inbounds ptr, ptr %2449, i64 %2451
  %2453 = load ptr, ptr %2452, align 8, !tbaa !5
  %2454 = load i32, ptr %31, align 4, !tbaa !9
  %2455 = load i32, ptr %7, align 4, !tbaa !9
  %2456 = sub nsw i32 %2454, %2455
  %2457 = sext i32 %2456 to i64
  %2458 = getelementptr inbounds ptr, ptr %2453, i64 %2457
  %2459 = load ptr, ptr %2458, align 8, !tbaa !5
  %2460 = load i32, ptr %30, align 4, !tbaa !9
  %2461 = load i32, ptr %7, align 4, !tbaa !9
  %2462 = add nsw i32 %2460, %2461
  %2463 = sext i32 %2462 to i64
  %2464 = getelementptr inbounds i8, ptr %2459, i64 %2463
  %2465 = load i8, ptr %2464, align 1, !tbaa !16
  %2466 = zext i8 %2465 to i32
  %2467 = load ptr, ptr %16, align 8, !tbaa !5
  %2468 = load i32, ptr %33, align 4, !tbaa !9
  %2469 = sext i32 %2468 to i64
  %2470 = getelementptr inbounds ptr, ptr %2467, i64 %2469
  %2471 = load ptr, ptr %2470, align 8, !tbaa !5
  %2472 = load i32, ptr %31, align 4, !tbaa !9
  %2473 = load i32, ptr %7, align 4, !tbaa !9
  %2474 = add nsw i32 %2472, %2473
  %2475 = sext i32 %2474 to i64
  %2476 = getelementptr inbounds ptr, ptr %2471, i64 %2475
  %2477 = load ptr, ptr %2476, align 8, !tbaa !5
  %2478 = load i32, ptr %30, align 4, !tbaa !9
  %2479 = load i32, ptr %7, align 4, !tbaa !9
  %2480 = sub nsw i32 %2478, %2479
  %2481 = sext i32 %2480 to i64
  %2482 = getelementptr inbounds i8, ptr %2477, i64 %2481
  %2483 = load i8, ptr %2482, align 1, !tbaa !16
  %2484 = zext i8 %2483 to i32
  %2485 = sub nsw i32 %2466, %2484
  %2486 = mul nsw i32 %2485, 3
  %2487 = add nsw i32 %2448, %2486
  %2488 = load ptr, ptr %16, align 8, !tbaa !5
  %2489 = load i32, ptr %33, align 4, !tbaa !9
  %2490 = sext i32 %2489 to i64
  %2491 = getelementptr inbounds ptr, ptr %2488, i64 %2490
  %2492 = load ptr, ptr %2491, align 8, !tbaa !5
  %2493 = load i32, ptr %31, align 4, !tbaa !9
  %2494 = load i32, ptr %7, align 4, !tbaa !9
  %2495 = sub nsw i32 %2493, %2494
  %2496 = add nsw i32 %2495, 1
  %2497 = sext i32 %2496 to i64
  %2498 = getelementptr inbounds ptr, ptr %2492, i64 %2497
  %2499 = load ptr, ptr %2498, align 8, !tbaa !5
  %2500 = load i32, ptr %30, align 4, !tbaa !9
  %2501 = load i32, ptr %7, align 4, !tbaa !9
  %2502 = add nsw i32 %2500, %2501
  %2503 = sext i32 %2502 to i64
  %2504 = getelementptr inbounds i8, ptr %2499, i64 %2503
  %2505 = load i8, ptr %2504, align 1, !tbaa !16
  %2506 = zext i8 %2505 to i32
  %2507 = load ptr, ptr %16, align 8, !tbaa !5
  %2508 = load i32, ptr %33, align 4, !tbaa !9
  %2509 = sext i32 %2508 to i64
  %2510 = getelementptr inbounds ptr, ptr %2507, i64 %2509
  %2511 = load ptr, ptr %2510, align 8, !tbaa !5
  %2512 = load i32, ptr %31, align 4, !tbaa !9
  %2513 = load i32, ptr %7, align 4, !tbaa !9
  %2514 = add nsw i32 %2512, %2513
  %2515 = sub nsw i32 %2514, 1
  %2516 = sext i32 %2515 to i64
  %2517 = getelementptr inbounds ptr, ptr %2511, i64 %2516
  %2518 = load ptr, ptr %2517, align 8, !tbaa !5
  %2519 = load i32, ptr %30, align 4, !tbaa !9
  %2520 = load i32, ptr %7, align 4, !tbaa !9
  %2521 = sub nsw i32 %2519, %2520
  %2522 = sext i32 %2521 to i64
  %2523 = getelementptr inbounds i8, ptr %2518, i64 %2522
  %2524 = load i8, ptr %2523, align 1, !tbaa !16
  %2525 = zext i8 %2524 to i32
  %2526 = sub nsw i32 %2506, %2525
  %2527 = mul nsw i32 %2526, 2
  %2528 = add nsw i32 %2487, %2527
  %2529 = icmp sgt i32 %2528, 0
  br i1 %2529, label %2530, label %2651

2530:                                             ; preds = %2408
  %2531 = load ptr, ptr %16, align 8, !tbaa !5
  %2532 = load i32, ptr %33, align 4, !tbaa !9
  %2533 = sext i32 %2532 to i64
  %2534 = getelementptr inbounds ptr, ptr %2531, i64 %2533
  %2535 = load ptr, ptr %2534, align 8, !tbaa !5
  %2536 = load i32, ptr %31, align 4, !tbaa !9
  %2537 = load i32, ptr %7, align 4, !tbaa !9
  %2538 = sub nsw i32 %2536, %2537
  %2539 = sext i32 %2538 to i64
  %2540 = getelementptr inbounds ptr, ptr %2535, i64 %2539
  %2541 = load ptr, ptr %2540, align 8, !tbaa !5
  %2542 = load i32, ptr %30, align 4, !tbaa !9
  %2543 = load i32, ptr %7, align 4, !tbaa !9
  %2544 = add nsw i32 %2542, %2543
  %2545 = sub nsw i32 %2544, 1
  %2546 = sext i32 %2545 to i64
  %2547 = getelementptr inbounds i8, ptr %2541, i64 %2546
  %2548 = load i8, ptr %2547, align 1, !tbaa !16
  %2549 = zext i8 %2548 to i32
  %2550 = load ptr, ptr %16, align 8, !tbaa !5
  %2551 = load i32, ptr %33, align 4, !tbaa !9
  %2552 = sext i32 %2551 to i64
  %2553 = getelementptr inbounds ptr, ptr %2550, i64 %2552
  %2554 = load ptr, ptr %2553, align 8, !tbaa !5
  %2555 = load i32, ptr %31, align 4, !tbaa !9
  %2556 = load i32, ptr %7, align 4, !tbaa !9
  %2557 = add nsw i32 %2555, %2556
  %2558 = sext i32 %2557 to i64
  %2559 = getelementptr inbounds ptr, ptr %2554, i64 %2558
  %2560 = load ptr, ptr %2559, align 8, !tbaa !5
  %2561 = load i32, ptr %30, align 4, !tbaa !9
  %2562 = load i32, ptr %7, align 4, !tbaa !9
  %2563 = sub nsw i32 %2561, %2562
  %2564 = add nsw i32 %2563, 1
  %2565 = sext i32 %2564 to i64
  %2566 = getelementptr inbounds i8, ptr %2560, i64 %2565
  %2567 = load i8, ptr %2566, align 1, !tbaa !16
  %2568 = zext i8 %2567 to i32
  %2569 = sub nsw i32 %2549, %2568
  %2570 = mul nsw i32 %2569, 2
  %2571 = load ptr, ptr %16, align 8, !tbaa !5
  %2572 = load i32, ptr %33, align 4, !tbaa !9
  %2573 = sext i32 %2572 to i64
  %2574 = getelementptr inbounds ptr, ptr %2571, i64 %2573
  %2575 = load ptr, ptr %2574, align 8, !tbaa !5
  %2576 = load i32, ptr %31, align 4, !tbaa !9
  %2577 = load i32, ptr %7, align 4, !tbaa !9
  %2578 = sub nsw i32 %2576, %2577
  %2579 = sext i32 %2578 to i64
  %2580 = getelementptr inbounds ptr, ptr %2575, i64 %2579
  %2581 = load ptr, ptr %2580, align 8, !tbaa !5
  %2582 = load i32, ptr %30, align 4, !tbaa !9
  %2583 = load i32, ptr %7, align 4, !tbaa !9
  %2584 = add nsw i32 %2582, %2583
  %2585 = sext i32 %2584 to i64
  %2586 = getelementptr inbounds i8, ptr %2581, i64 %2585
  %2587 = load i8, ptr %2586, align 1, !tbaa !16
  %2588 = zext i8 %2587 to i32
  %2589 = load ptr, ptr %16, align 8, !tbaa !5
  %2590 = load i32, ptr %33, align 4, !tbaa !9
  %2591 = sext i32 %2590 to i64
  %2592 = getelementptr inbounds ptr, ptr %2589, i64 %2591
  %2593 = load ptr, ptr %2592, align 8, !tbaa !5
  %2594 = load i32, ptr %31, align 4, !tbaa !9
  %2595 = load i32, ptr %7, align 4, !tbaa !9
  %2596 = add nsw i32 %2594, %2595
  %2597 = sext i32 %2596 to i64
  %2598 = getelementptr inbounds ptr, ptr %2593, i64 %2597
  %2599 = load ptr, ptr %2598, align 8, !tbaa !5
  %2600 = load i32, ptr %30, align 4, !tbaa !9
  %2601 = load i32, ptr %7, align 4, !tbaa !9
  %2602 = sub nsw i32 %2600, %2601
  %2603 = sext i32 %2602 to i64
  %2604 = getelementptr inbounds i8, ptr %2599, i64 %2603
  %2605 = load i8, ptr %2604, align 1, !tbaa !16
  %2606 = zext i8 %2605 to i32
  %2607 = sub nsw i32 %2588, %2606
  %2608 = mul nsw i32 %2607, 3
  %2609 = add nsw i32 %2570, %2608
  %2610 = load ptr, ptr %16, align 8, !tbaa !5
  %2611 = load i32, ptr %33, align 4, !tbaa !9
  %2612 = sext i32 %2611 to i64
  %2613 = getelementptr inbounds ptr, ptr %2610, i64 %2612
  %2614 = load ptr, ptr %2613, align 8, !tbaa !5
  %2615 = load i32, ptr %31, align 4, !tbaa !9
  %2616 = load i32, ptr %7, align 4, !tbaa !9
  %2617 = sub nsw i32 %2615, %2616
  %2618 = add nsw i32 %2617, 1
  %2619 = sext i32 %2618 to i64
  %2620 = getelementptr inbounds ptr, ptr %2614, i64 %2619
  %2621 = load ptr, ptr %2620, align 8, !tbaa !5
  %2622 = load i32, ptr %30, align 4, !tbaa !9
  %2623 = load i32, ptr %7, align 4, !tbaa !9
  %2624 = add nsw i32 %2622, %2623
  %2625 = sext i32 %2624 to i64
  %2626 = getelementptr inbounds i8, ptr %2621, i64 %2625
  %2627 = load i8, ptr %2626, align 1, !tbaa !16
  %2628 = zext i8 %2627 to i32
  %2629 = load ptr, ptr %16, align 8, !tbaa !5
  %2630 = load i32, ptr %33, align 4, !tbaa !9
  %2631 = sext i32 %2630 to i64
  %2632 = getelementptr inbounds ptr, ptr %2629, i64 %2631
  %2633 = load ptr, ptr %2632, align 8, !tbaa !5
  %2634 = load i32, ptr %31, align 4, !tbaa !9
  %2635 = load i32, ptr %7, align 4, !tbaa !9
  %2636 = add nsw i32 %2634, %2635
  %2637 = sub nsw i32 %2636, 1
  %2638 = sext i32 %2637 to i64
  %2639 = getelementptr inbounds ptr, ptr %2633, i64 %2638
  %2640 = load ptr, ptr %2639, align 8, !tbaa !5
  %2641 = load i32, ptr %30, align 4, !tbaa !9
  %2642 = load i32, ptr %7, align 4, !tbaa !9
  %2643 = sub nsw i32 %2641, %2642
  %2644 = sext i32 %2643 to i64
  %2645 = getelementptr inbounds i8, ptr %2640, i64 %2644
  %2646 = load i8, ptr %2645, align 1, !tbaa !16
  %2647 = zext i8 %2646 to i32
  %2648 = sub nsw i32 %2628, %2647
  %2649 = mul nsw i32 %2648, 2
  %2650 = add nsw i32 %2609, %2649
  br label %2773

2651:                                             ; preds = %2408
  %2652 = load ptr, ptr %16, align 8, !tbaa !5
  %2653 = load i32, ptr %33, align 4, !tbaa !9
  %2654 = sext i32 %2653 to i64
  %2655 = getelementptr inbounds ptr, ptr %2652, i64 %2654
  %2656 = load ptr, ptr %2655, align 8, !tbaa !5
  %2657 = load i32, ptr %31, align 4, !tbaa !9
  %2658 = load i32, ptr %7, align 4, !tbaa !9
  %2659 = sub nsw i32 %2657, %2658
  %2660 = sext i32 %2659 to i64
  %2661 = getelementptr inbounds ptr, ptr %2656, i64 %2660
  %2662 = load ptr, ptr %2661, align 8, !tbaa !5
  %2663 = load i32, ptr %30, align 4, !tbaa !9
  %2664 = load i32, ptr %7, align 4, !tbaa !9
  %2665 = add nsw i32 %2663, %2664
  %2666 = sub nsw i32 %2665, 1
  %2667 = sext i32 %2666 to i64
  %2668 = getelementptr inbounds i8, ptr %2662, i64 %2667
  %2669 = load i8, ptr %2668, align 1, !tbaa !16
  %2670 = zext i8 %2669 to i32
  %2671 = load ptr, ptr %16, align 8, !tbaa !5
  %2672 = load i32, ptr %33, align 4, !tbaa !9
  %2673 = sext i32 %2672 to i64
  %2674 = getelementptr inbounds ptr, ptr %2671, i64 %2673
  %2675 = load ptr, ptr %2674, align 8, !tbaa !5
  %2676 = load i32, ptr %31, align 4, !tbaa !9
  %2677 = load i32, ptr %7, align 4, !tbaa !9
  %2678 = add nsw i32 %2676, %2677
  %2679 = sext i32 %2678 to i64
  %2680 = getelementptr inbounds ptr, ptr %2675, i64 %2679
  %2681 = load ptr, ptr %2680, align 8, !tbaa !5
  %2682 = load i32, ptr %30, align 4, !tbaa !9
  %2683 = load i32, ptr %7, align 4, !tbaa !9
  %2684 = sub nsw i32 %2682, %2683
  %2685 = add nsw i32 %2684, 1
  %2686 = sext i32 %2685 to i64
  %2687 = getelementptr inbounds i8, ptr %2681, i64 %2686
  %2688 = load i8, ptr %2687, align 1, !tbaa !16
  %2689 = zext i8 %2688 to i32
  %2690 = sub nsw i32 %2670, %2689
  %2691 = mul nsw i32 %2690, 2
  %2692 = load ptr, ptr %16, align 8, !tbaa !5
  %2693 = load i32, ptr %33, align 4, !tbaa !9
  %2694 = sext i32 %2693 to i64
  %2695 = getelementptr inbounds ptr, ptr %2692, i64 %2694
  %2696 = load ptr, ptr %2695, align 8, !tbaa !5
  %2697 = load i32, ptr %31, align 4, !tbaa !9
  %2698 = load i32, ptr %7, align 4, !tbaa !9
  %2699 = sub nsw i32 %2697, %2698
  %2700 = sext i32 %2699 to i64
  %2701 = getelementptr inbounds ptr, ptr %2696, i64 %2700
  %2702 = load ptr, ptr %2701, align 8, !tbaa !5
  %2703 = load i32, ptr %30, align 4, !tbaa !9
  %2704 = load i32, ptr %7, align 4, !tbaa !9
  %2705 = add nsw i32 %2703, %2704
  %2706 = sext i32 %2705 to i64
  %2707 = getelementptr inbounds i8, ptr %2702, i64 %2706
  %2708 = load i8, ptr %2707, align 1, !tbaa !16
  %2709 = zext i8 %2708 to i32
  %2710 = load ptr, ptr %16, align 8, !tbaa !5
  %2711 = load i32, ptr %33, align 4, !tbaa !9
  %2712 = sext i32 %2711 to i64
  %2713 = getelementptr inbounds ptr, ptr %2710, i64 %2712
  %2714 = load ptr, ptr %2713, align 8, !tbaa !5
  %2715 = load i32, ptr %31, align 4, !tbaa !9
  %2716 = load i32, ptr %7, align 4, !tbaa !9
  %2717 = add nsw i32 %2715, %2716
  %2718 = sext i32 %2717 to i64
  %2719 = getelementptr inbounds ptr, ptr %2714, i64 %2718
  %2720 = load ptr, ptr %2719, align 8, !tbaa !5
  %2721 = load i32, ptr %30, align 4, !tbaa !9
  %2722 = load i32, ptr %7, align 4, !tbaa !9
  %2723 = sub nsw i32 %2721, %2722
  %2724 = sext i32 %2723 to i64
  %2725 = getelementptr inbounds i8, ptr %2720, i64 %2724
  %2726 = load i8, ptr %2725, align 1, !tbaa !16
  %2727 = zext i8 %2726 to i32
  %2728 = sub nsw i32 %2709, %2727
  %2729 = mul nsw i32 %2728, 3
  %2730 = add nsw i32 %2691, %2729
  %2731 = load ptr, ptr %16, align 8, !tbaa !5
  %2732 = load i32, ptr %33, align 4, !tbaa !9
  %2733 = sext i32 %2732 to i64
  %2734 = getelementptr inbounds ptr, ptr %2731, i64 %2733
  %2735 = load ptr, ptr %2734, align 8, !tbaa !5
  %2736 = load i32, ptr %31, align 4, !tbaa !9
  %2737 = load i32, ptr %7, align 4, !tbaa !9
  %2738 = sub nsw i32 %2736, %2737
  %2739 = add nsw i32 %2738, 1
  %2740 = sext i32 %2739 to i64
  %2741 = getelementptr inbounds ptr, ptr %2735, i64 %2740
  %2742 = load ptr, ptr %2741, align 8, !tbaa !5
  %2743 = load i32, ptr %30, align 4, !tbaa !9
  %2744 = load i32, ptr %7, align 4, !tbaa !9
  %2745 = add nsw i32 %2743, %2744
  %2746 = sext i32 %2745 to i64
  %2747 = getelementptr inbounds i8, ptr %2742, i64 %2746
  %2748 = load i8, ptr %2747, align 1, !tbaa !16
  %2749 = zext i8 %2748 to i32
  %2750 = load ptr, ptr %16, align 8, !tbaa !5
  %2751 = load i32, ptr %33, align 4, !tbaa !9
  %2752 = sext i32 %2751 to i64
  %2753 = getelementptr inbounds ptr, ptr %2750, i64 %2752
  %2754 = load ptr, ptr %2753, align 8, !tbaa !5
  %2755 = load i32, ptr %31, align 4, !tbaa !9
  %2756 = load i32, ptr %7, align 4, !tbaa !9
  %2757 = add nsw i32 %2755, %2756
  %2758 = sub nsw i32 %2757, 1
  %2759 = sext i32 %2758 to i64
  %2760 = getelementptr inbounds ptr, ptr %2754, i64 %2759
  %2761 = load ptr, ptr %2760, align 8, !tbaa !5
  %2762 = load i32, ptr %30, align 4, !tbaa !9
  %2763 = load i32, ptr %7, align 4, !tbaa !9
  %2764 = sub nsw i32 %2762, %2763
  %2765 = sext i32 %2764 to i64
  %2766 = getelementptr inbounds i8, ptr %2761, i64 %2765
  %2767 = load i8, ptr %2766, align 1, !tbaa !16
  %2768 = zext i8 %2767 to i32
  %2769 = sub nsw i32 %2749, %2768
  %2770 = mul nsw i32 %2769, 2
  %2771 = add nsw i32 %2730, %2770
  %2772 = sub nsw i32 0, %2771
  br label %2773

2773:                                             ; preds = %2651, %2530
  %2774 = phi i32 [ %2650, %2530 ], [ %2772, %2651 ]
  store i32 %2774, ptr %32, align 4, !tbaa !9
  %2775 = load i32, ptr %32, align 4, !tbaa !9
  %2776 = load i8, ptr %34, align 1, !tbaa !16
  %2777 = zext i8 %2776 to i64
  %2778 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %2777
  %2779 = load i8, ptr %2778, align 1, !tbaa !16
  %2780 = zext i8 %2779 to i32
  %2781 = icmp sgt i32 %2775, %2780
  br i1 %2781, label %2782, label %2794

2782:                                             ; preds = %2773
  %2783 = load ptr, ptr %6, align 8, !tbaa !5
  %2784 = getelementptr inbounds %struct.MImage, ptr %2783, i32 0, i32 3
  %2785 = getelementptr inbounds [4 x ptr], ptr %2784, i64 0, i64 0
  %2786 = load ptr, ptr %2785, align 8, !tbaa !5
  %2787 = load i32, ptr %31, align 4, !tbaa !9
  %2788 = sext i32 %2787 to i64
  %2789 = getelementptr inbounds ptr, ptr %2786, i64 %2788
  %2790 = load ptr, ptr %2789, align 8, !tbaa !5
  %2791 = load i32, ptr %30, align 4, !tbaa !9
  %2792 = sext i32 %2791 to i64
  %2793 = getelementptr inbounds i8, ptr %2790, i64 %2792
  store i8 -1, ptr %2793, align 1, !tbaa !16
  store i32 34, ptr %25, align 4
  br label %3531

2794:                                             ; preds = %2773
  %2795 = load ptr, ptr %16, align 8, !tbaa !5
  %2796 = load i32, ptr %33, align 4, !tbaa !9
  %2797 = sext i32 %2796 to i64
  %2798 = getelementptr inbounds ptr, ptr %2795, i64 %2797
  %2799 = load ptr, ptr %2798, align 8, !tbaa !5
  %2800 = load i32, ptr %31, align 4, !tbaa !9
  %2801 = sub nsw i32 %2800, 1
  %2802 = sext i32 %2801 to i64
  %2803 = getelementptr inbounds ptr, ptr %2799, i64 %2802
  %2804 = load ptr, ptr %2803, align 8, !tbaa !5
  %2805 = load i32, ptr %30, align 4, !tbaa !9
  %2806 = load i32, ptr %7, align 4, !tbaa !9
  %2807 = sub nsw i32 %2805, %2806
  %2808 = sext i32 %2807 to i64
  %2809 = getelementptr inbounds i8, ptr %2804, i64 %2808
  %2810 = load i8, ptr %2809, align 1, !tbaa !16
  %2811 = zext i8 %2810 to i32
  %2812 = load ptr, ptr %16, align 8, !tbaa !5
  %2813 = load i32, ptr %33, align 4, !tbaa !9
  %2814 = sext i32 %2813 to i64
  %2815 = getelementptr inbounds ptr, ptr %2812, i64 %2814
  %2816 = load ptr, ptr %2815, align 8, !tbaa !5
  %2817 = load i32, ptr %31, align 4, !tbaa !9
  %2818 = sub nsw i32 %2817, 1
  %2819 = sext i32 %2818 to i64
  %2820 = getelementptr inbounds ptr, ptr %2816, i64 %2819
  %2821 = load ptr, ptr %2820, align 8, !tbaa !5
  %2822 = load i32, ptr %30, align 4, !tbaa !9
  %2823 = load i32, ptr %7, align 4, !tbaa !9
  %2824 = add nsw i32 %2822, %2823
  %2825 = sext i32 %2824 to i64
  %2826 = getelementptr inbounds i8, ptr %2821, i64 %2825
  %2827 = load i8, ptr %2826, align 1, !tbaa !16
  %2828 = zext i8 %2827 to i32
  %2829 = sub nsw i32 %2811, %2828
  %2830 = mul nsw i32 %2829, 2
  %2831 = load ptr, ptr %16, align 8, !tbaa !5
  %2832 = load i32, ptr %33, align 4, !tbaa !9
  %2833 = sext i32 %2832 to i64
  %2834 = getelementptr inbounds ptr, ptr %2831, i64 %2833
  %2835 = load ptr, ptr %2834, align 8, !tbaa !5
  %2836 = load i32, ptr %31, align 4, !tbaa !9
  %2837 = sext i32 %2836 to i64
  %2838 = getelementptr inbounds ptr, ptr %2835, i64 %2837
  %2839 = load ptr, ptr %2838, align 8, !tbaa !5
  %2840 = load i32, ptr %30, align 4, !tbaa !9
  %2841 = load i32, ptr %7, align 4, !tbaa !9
  %2842 = sub nsw i32 %2840, %2841
  %2843 = sext i32 %2842 to i64
  %2844 = getelementptr inbounds i8, ptr %2839, i64 %2843
  %2845 = load i8, ptr %2844, align 1, !tbaa !16
  %2846 = zext i8 %2845 to i32
  %2847 = load ptr, ptr %16, align 8, !tbaa !5
  %2848 = load i32, ptr %33, align 4, !tbaa !9
  %2849 = sext i32 %2848 to i64
  %2850 = getelementptr inbounds ptr, ptr %2847, i64 %2849
  %2851 = load ptr, ptr %2850, align 8, !tbaa !5
  %2852 = load i32, ptr %31, align 4, !tbaa !9
  %2853 = sext i32 %2852 to i64
  %2854 = getelementptr inbounds ptr, ptr %2851, i64 %2853
  %2855 = load ptr, ptr %2854, align 8, !tbaa !5
  %2856 = load i32, ptr %30, align 4, !tbaa !9
  %2857 = load i32, ptr %7, align 4, !tbaa !9
  %2858 = add nsw i32 %2856, %2857
  %2859 = sext i32 %2858 to i64
  %2860 = getelementptr inbounds i8, ptr %2855, i64 %2859
  %2861 = load i8, ptr %2860, align 1, !tbaa !16
  %2862 = zext i8 %2861 to i32
  %2863 = sub nsw i32 %2846, %2862
  %2864 = mul nsw i32 %2863, 3
  %2865 = add nsw i32 %2830, %2864
  %2866 = load ptr, ptr %16, align 8, !tbaa !5
  %2867 = load i32, ptr %33, align 4, !tbaa !9
  %2868 = sext i32 %2867 to i64
  %2869 = getelementptr inbounds ptr, ptr %2866, i64 %2868
  %2870 = load ptr, ptr %2869, align 8, !tbaa !5
  %2871 = load i32, ptr %31, align 4, !tbaa !9
  %2872 = add nsw i32 %2871, 1
  %2873 = sext i32 %2872 to i64
  %2874 = getelementptr inbounds ptr, ptr %2870, i64 %2873
  %2875 = load ptr, ptr %2874, align 8, !tbaa !5
  %2876 = load i32, ptr %30, align 4, !tbaa !9
  %2877 = load i32, ptr %7, align 4, !tbaa !9
  %2878 = sub nsw i32 %2876, %2877
  %2879 = sext i32 %2878 to i64
  %2880 = getelementptr inbounds i8, ptr %2875, i64 %2879
  %2881 = load i8, ptr %2880, align 1, !tbaa !16
  %2882 = zext i8 %2881 to i32
  %2883 = load ptr, ptr %16, align 8, !tbaa !5
  %2884 = load i32, ptr %33, align 4, !tbaa !9
  %2885 = sext i32 %2884 to i64
  %2886 = getelementptr inbounds ptr, ptr %2883, i64 %2885
  %2887 = load ptr, ptr %2886, align 8, !tbaa !5
  %2888 = load i32, ptr %31, align 4, !tbaa !9
  %2889 = add nsw i32 %2888, 1
  %2890 = sext i32 %2889 to i64
  %2891 = getelementptr inbounds ptr, ptr %2887, i64 %2890
  %2892 = load ptr, ptr %2891, align 8, !tbaa !5
  %2893 = load i32, ptr %30, align 4, !tbaa !9
  %2894 = load i32, ptr %7, align 4, !tbaa !9
  %2895 = add nsw i32 %2893, %2894
  %2896 = sext i32 %2895 to i64
  %2897 = getelementptr inbounds i8, ptr %2892, i64 %2896
  %2898 = load i8, ptr %2897, align 1, !tbaa !16
  %2899 = zext i8 %2898 to i32
  %2900 = sub nsw i32 %2882, %2899
  %2901 = mul nsw i32 %2900, 2
  %2902 = add nsw i32 %2865, %2901
  %2903 = icmp sgt i32 %2902, 0
  br i1 %2903, label %2904, label %3013

2904:                                             ; preds = %2794
  %2905 = load ptr, ptr %16, align 8, !tbaa !5
  %2906 = load i32, ptr %33, align 4, !tbaa !9
  %2907 = sext i32 %2906 to i64
  %2908 = getelementptr inbounds ptr, ptr %2905, i64 %2907
  %2909 = load ptr, ptr %2908, align 8, !tbaa !5
  %2910 = load i32, ptr %31, align 4, !tbaa !9
  %2911 = sub nsw i32 %2910, 1
  %2912 = sext i32 %2911 to i64
  %2913 = getelementptr inbounds ptr, ptr %2909, i64 %2912
  %2914 = load ptr, ptr %2913, align 8, !tbaa !5
  %2915 = load i32, ptr %30, align 4, !tbaa !9
  %2916 = load i32, ptr %7, align 4, !tbaa !9
  %2917 = sub nsw i32 %2915, %2916
  %2918 = sext i32 %2917 to i64
  %2919 = getelementptr inbounds i8, ptr %2914, i64 %2918
  %2920 = load i8, ptr %2919, align 1, !tbaa !16
  %2921 = zext i8 %2920 to i32
  %2922 = load ptr, ptr %16, align 8, !tbaa !5
  %2923 = load i32, ptr %33, align 4, !tbaa !9
  %2924 = sext i32 %2923 to i64
  %2925 = getelementptr inbounds ptr, ptr %2922, i64 %2924
  %2926 = load ptr, ptr %2925, align 8, !tbaa !5
  %2927 = load i32, ptr %31, align 4, !tbaa !9
  %2928 = sub nsw i32 %2927, 1
  %2929 = sext i32 %2928 to i64
  %2930 = getelementptr inbounds ptr, ptr %2926, i64 %2929
  %2931 = load ptr, ptr %2930, align 8, !tbaa !5
  %2932 = load i32, ptr %30, align 4, !tbaa !9
  %2933 = load i32, ptr %7, align 4, !tbaa !9
  %2934 = add nsw i32 %2932, %2933
  %2935 = sext i32 %2934 to i64
  %2936 = getelementptr inbounds i8, ptr %2931, i64 %2935
  %2937 = load i8, ptr %2936, align 1, !tbaa !16
  %2938 = zext i8 %2937 to i32
  %2939 = sub nsw i32 %2921, %2938
  %2940 = mul nsw i32 %2939, 2
  %2941 = load ptr, ptr %16, align 8, !tbaa !5
  %2942 = load i32, ptr %33, align 4, !tbaa !9
  %2943 = sext i32 %2942 to i64
  %2944 = getelementptr inbounds ptr, ptr %2941, i64 %2943
  %2945 = load ptr, ptr %2944, align 8, !tbaa !5
  %2946 = load i32, ptr %31, align 4, !tbaa !9
  %2947 = sext i32 %2946 to i64
  %2948 = getelementptr inbounds ptr, ptr %2945, i64 %2947
  %2949 = load ptr, ptr %2948, align 8, !tbaa !5
  %2950 = load i32, ptr %30, align 4, !tbaa !9
  %2951 = load i32, ptr %7, align 4, !tbaa !9
  %2952 = sub nsw i32 %2950, %2951
  %2953 = sext i32 %2952 to i64
  %2954 = getelementptr inbounds i8, ptr %2949, i64 %2953
  %2955 = load i8, ptr %2954, align 1, !tbaa !16
  %2956 = zext i8 %2955 to i32
  %2957 = load ptr, ptr %16, align 8, !tbaa !5
  %2958 = load i32, ptr %33, align 4, !tbaa !9
  %2959 = sext i32 %2958 to i64
  %2960 = getelementptr inbounds ptr, ptr %2957, i64 %2959
  %2961 = load ptr, ptr %2960, align 8, !tbaa !5
  %2962 = load i32, ptr %31, align 4, !tbaa !9
  %2963 = sext i32 %2962 to i64
  %2964 = getelementptr inbounds ptr, ptr %2961, i64 %2963
  %2965 = load ptr, ptr %2964, align 8, !tbaa !5
  %2966 = load i32, ptr %30, align 4, !tbaa !9
  %2967 = load i32, ptr %7, align 4, !tbaa !9
  %2968 = add nsw i32 %2966, %2967
  %2969 = sext i32 %2968 to i64
  %2970 = getelementptr inbounds i8, ptr %2965, i64 %2969
  %2971 = load i8, ptr %2970, align 1, !tbaa !16
  %2972 = zext i8 %2971 to i32
  %2973 = sub nsw i32 %2956, %2972
  %2974 = mul nsw i32 %2973, 3
  %2975 = add nsw i32 %2940, %2974
  %2976 = load ptr, ptr %16, align 8, !tbaa !5
  %2977 = load i32, ptr %33, align 4, !tbaa !9
  %2978 = sext i32 %2977 to i64
  %2979 = getelementptr inbounds ptr, ptr %2976, i64 %2978
  %2980 = load ptr, ptr %2979, align 8, !tbaa !5
  %2981 = load i32, ptr %31, align 4, !tbaa !9
  %2982 = add nsw i32 %2981, 1
  %2983 = sext i32 %2982 to i64
  %2984 = getelementptr inbounds ptr, ptr %2980, i64 %2983
  %2985 = load ptr, ptr %2984, align 8, !tbaa !5
  %2986 = load i32, ptr %30, align 4, !tbaa !9
  %2987 = load i32, ptr %7, align 4, !tbaa !9
  %2988 = sub nsw i32 %2986, %2987
  %2989 = sext i32 %2988 to i64
  %2990 = getelementptr inbounds i8, ptr %2985, i64 %2989
  %2991 = load i8, ptr %2990, align 1, !tbaa !16
  %2992 = zext i8 %2991 to i32
  %2993 = load ptr, ptr %16, align 8, !tbaa !5
  %2994 = load i32, ptr %33, align 4, !tbaa !9
  %2995 = sext i32 %2994 to i64
  %2996 = getelementptr inbounds ptr, ptr %2993, i64 %2995
  %2997 = load ptr, ptr %2996, align 8, !tbaa !5
  %2998 = load i32, ptr %31, align 4, !tbaa !9
  %2999 = add nsw i32 %2998, 1
  %3000 = sext i32 %2999 to i64
  %3001 = getelementptr inbounds ptr, ptr %2997, i64 %3000
  %3002 = load ptr, ptr %3001, align 8, !tbaa !5
  %3003 = load i32, ptr %30, align 4, !tbaa !9
  %3004 = load i32, ptr %7, align 4, !tbaa !9
  %3005 = add nsw i32 %3003, %3004
  %3006 = sext i32 %3005 to i64
  %3007 = getelementptr inbounds i8, ptr %3002, i64 %3006
  %3008 = load i8, ptr %3007, align 1, !tbaa !16
  %3009 = zext i8 %3008 to i32
  %3010 = sub nsw i32 %2992, %3009
  %3011 = mul nsw i32 %3010, 2
  %3012 = add nsw i32 %2975, %3011
  br label %3123

3013:                                             ; preds = %2794
  %3014 = load ptr, ptr %16, align 8, !tbaa !5
  %3015 = load i32, ptr %33, align 4, !tbaa !9
  %3016 = sext i32 %3015 to i64
  %3017 = getelementptr inbounds ptr, ptr %3014, i64 %3016
  %3018 = load ptr, ptr %3017, align 8, !tbaa !5
  %3019 = load i32, ptr %31, align 4, !tbaa !9
  %3020 = sub nsw i32 %3019, 1
  %3021 = sext i32 %3020 to i64
  %3022 = getelementptr inbounds ptr, ptr %3018, i64 %3021
  %3023 = load ptr, ptr %3022, align 8, !tbaa !5
  %3024 = load i32, ptr %30, align 4, !tbaa !9
  %3025 = load i32, ptr %7, align 4, !tbaa !9
  %3026 = sub nsw i32 %3024, %3025
  %3027 = sext i32 %3026 to i64
  %3028 = getelementptr inbounds i8, ptr %3023, i64 %3027
  %3029 = load i8, ptr %3028, align 1, !tbaa !16
  %3030 = zext i8 %3029 to i32
  %3031 = load ptr, ptr %16, align 8, !tbaa !5
  %3032 = load i32, ptr %33, align 4, !tbaa !9
  %3033 = sext i32 %3032 to i64
  %3034 = getelementptr inbounds ptr, ptr %3031, i64 %3033
  %3035 = load ptr, ptr %3034, align 8, !tbaa !5
  %3036 = load i32, ptr %31, align 4, !tbaa !9
  %3037 = sub nsw i32 %3036, 1
  %3038 = sext i32 %3037 to i64
  %3039 = getelementptr inbounds ptr, ptr %3035, i64 %3038
  %3040 = load ptr, ptr %3039, align 8, !tbaa !5
  %3041 = load i32, ptr %30, align 4, !tbaa !9
  %3042 = load i32, ptr %7, align 4, !tbaa !9
  %3043 = add nsw i32 %3041, %3042
  %3044 = sext i32 %3043 to i64
  %3045 = getelementptr inbounds i8, ptr %3040, i64 %3044
  %3046 = load i8, ptr %3045, align 1, !tbaa !16
  %3047 = zext i8 %3046 to i32
  %3048 = sub nsw i32 %3030, %3047
  %3049 = mul nsw i32 %3048, 2
  %3050 = load ptr, ptr %16, align 8, !tbaa !5
  %3051 = load i32, ptr %33, align 4, !tbaa !9
  %3052 = sext i32 %3051 to i64
  %3053 = getelementptr inbounds ptr, ptr %3050, i64 %3052
  %3054 = load ptr, ptr %3053, align 8, !tbaa !5
  %3055 = load i32, ptr %31, align 4, !tbaa !9
  %3056 = sext i32 %3055 to i64
  %3057 = getelementptr inbounds ptr, ptr %3054, i64 %3056
  %3058 = load ptr, ptr %3057, align 8, !tbaa !5
  %3059 = load i32, ptr %30, align 4, !tbaa !9
  %3060 = load i32, ptr %7, align 4, !tbaa !9
  %3061 = sub nsw i32 %3059, %3060
  %3062 = sext i32 %3061 to i64
  %3063 = getelementptr inbounds i8, ptr %3058, i64 %3062
  %3064 = load i8, ptr %3063, align 1, !tbaa !16
  %3065 = zext i8 %3064 to i32
  %3066 = load ptr, ptr %16, align 8, !tbaa !5
  %3067 = load i32, ptr %33, align 4, !tbaa !9
  %3068 = sext i32 %3067 to i64
  %3069 = getelementptr inbounds ptr, ptr %3066, i64 %3068
  %3070 = load ptr, ptr %3069, align 8, !tbaa !5
  %3071 = load i32, ptr %31, align 4, !tbaa !9
  %3072 = sext i32 %3071 to i64
  %3073 = getelementptr inbounds ptr, ptr %3070, i64 %3072
  %3074 = load ptr, ptr %3073, align 8, !tbaa !5
  %3075 = load i32, ptr %30, align 4, !tbaa !9
  %3076 = load i32, ptr %7, align 4, !tbaa !9
  %3077 = add nsw i32 %3075, %3076
  %3078 = sext i32 %3077 to i64
  %3079 = getelementptr inbounds i8, ptr %3074, i64 %3078
  %3080 = load i8, ptr %3079, align 1, !tbaa !16
  %3081 = zext i8 %3080 to i32
  %3082 = sub nsw i32 %3065, %3081
  %3083 = mul nsw i32 %3082, 3
  %3084 = add nsw i32 %3049, %3083
  %3085 = load ptr, ptr %16, align 8, !tbaa !5
  %3086 = load i32, ptr %33, align 4, !tbaa !9
  %3087 = sext i32 %3086 to i64
  %3088 = getelementptr inbounds ptr, ptr %3085, i64 %3087
  %3089 = load ptr, ptr %3088, align 8, !tbaa !5
  %3090 = load i32, ptr %31, align 4, !tbaa !9
  %3091 = add nsw i32 %3090, 1
  %3092 = sext i32 %3091 to i64
  %3093 = getelementptr inbounds ptr, ptr %3089, i64 %3092
  %3094 = load ptr, ptr %3093, align 8, !tbaa !5
  %3095 = load i32, ptr %30, align 4, !tbaa !9
  %3096 = load i32, ptr %7, align 4, !tbaa !9
  %3097 = sub nsw i32 %3095, %3096
  %3098 = sext i32 %3097 to i64
  %3099 = getelementptr inbounds i8, ptr %3094, i64 %3098
  %3100 = load i8, ptr %3099, align 1, !tbaa !16
  %3101 = zext i8 %3100 to i32
  %3102 = load ptr, ptr %16, align 8, !tbaa !5
  %3103 = load i32, ptr %33, align 4, !tbaa !9
  %3104 = sext i32 %3103 to i64
  %3105 = getelementptr inbounds ptr, ptr %3102, i64 %3104
  %3106 = load ptr, ptr %3105, align 8, !tbaa !5
  %3107 = load i32, ptr %31, align 4, !tbaa !9
  %3108 = add nsw i32 %3107, 1
  %3109 = sext i32 %3108 to i64
  %3110 = getelementptr inbounds ptr, ptr %3106, i64 %3109
  %3111 = load ptr, ptr %3110, align 8, !tbaa !5
  %3112 = load i32, ptr %30, align 4, !tbaa !9
  %3113 = load i32, ptr %7, align 4, !tbaa !9
  %3114 = add nsw i32 %3112, %3113
  %3115 = sext i32 %3114 to i64
  %3116 = getelementptr inbounds i8, ptr %3111, i64 %3115
  %3117 = load i8, ptr %3116, align 1, !tbaa !16
  %3118 = zext i8 %3117 to i32
  %3119 = sub nsw i32 %3101, %3118
  %3120 = mul nsw i32 %3119, 2
  %3121 = add nsw i32 %3084, %3120
  %3122 = sub nsw i32 0, %3121
  br label %3123

3123:                                             ; preds = %3013, %2904
  %3124 = phi i32 [ %3012, %2904 ], [ %3122, %3013 ]
  store i32 %3124, ptr %32, align 4, !tbaa !9
  %3125 = load i32, ptr %32, align 4, !tbaa !9
  %3126 = load i8, ptr %34, align 1, !tbaa !16
  %3127 = zext i8 %3126 to i64
  %3128 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %3127
  %3129 = load i8, ptr %3128, align 1, !tbaa !16
  %3130 = zext i8 %3129 to i32
  %3131 = icmp sgt i32 %3125, %3130
  br i1 %3131, label %3132, label %3144

3132:                                             ; preds = %3123
  %3133 = load ptr, ptr %6, align 8, !tbaa !5
  %3134 = getelementptr inbounds %struct.MImage, ptr %3133, i32 0, i32 3
  %3135 = getelementptr inbounds [4 x ptr], ptr %3134, i64 0, i64 0
  %3136 = load ptr, ptr %3135, align 8, !tbaa !5
  %3137 = load i32, ptr %31, align 4, !tbaa !9
  %3138 = sext i32 %3137 to i64
  %3139 = getelementptr inbounds ptr, ptr %3136, i64 %3138
  %3140 = load ptr, ptr %3139, align 8, !tbaa !5
  %3141 = load i32, ptr %30, align 4, !tbaa !9
  %3142 = sext i32 %3141 to i64
  %3143 = getelementptr inbounds i8, ptr %3140, i64 %3142
  store i8 -1, ptr %3143, align 1, !tbaa !16
  store i32 34, ptr %25, align 4
  br label %3531

3144:                                             ; preds = %3123
  %3145 = load ptr, ptr %16, align 8, !tbaa !5
  %3146 = load i32, ptr %33, align 4, !tbaa !9
  %3147 = sext i32 %3146 to i64
  %3148 = getelementptr inbounds ptr, ptr %3145, i64 %3147
  %3149 = load ptr, ptr %3148, align 8, !tbaa !5
  %3150 = load i32, ptr %31, align 4, !tbaa !9
  %3151 = load i32, ptr %7, align 4, !tbaa !9
  %3152 = sub nsw i32 %3150, %3151
  %3153 = sext i32 %3152 to i64
  %3154 = getelementptr inbounds ptr, ptr %3149, i64 %3153
  %3155 = load ptr, ptr %3154, align 8, !tbaa !5
  %3156 = load i32, ptr %30, align 4, !tbaa !9
  %3157 = load i32, ptr %7, align 4, !tbaa !9
  %3158 = sub nsw i32 %3156, %3157
  %3159 = add nsw i32 %3158, 1
  %3160 = sext i32 %3159 to i64
  %3161 = getelementptr inbounds i8, ptr %3155, i64 %3160
  %3162 = load i8, ptr %3161, align 1, !tbaa !16
  %3163 = zext i8 %3162 to i32
  %3164 = load ptr, ptr %16, align 8, !tbaa !5
  %3165 = load i32, ptr %33, align 4, !tbaa !9
  %3166 = sext i32 %3165 to i64
  %3167 = getelementptr inbounds ptr, ptr %3164, i64 %3166
  %3168 = load ptr, ptr %3167, align 8, !tbaa !5
  %3169 = load i32, ptr %31, align 4, !tbaa !9
  %3170 = load i32, ptr %7, align 4, !tbaa !9
  %3171 = add nsw i32 %3169, %3170
  %3172 = sext i32 %3171 to i64
  %3173 = getelementptr inbounds ptr, ptr %3168, i64 %3172
  %3174 = load ptr, ptr %3173, align 8, !tbaa !5
  %3175 = load i32, ptr %30, align 4, !tbaa !9
  %3176 = load i32, ptr %7, align 4, !tbaa !9
  %3177 = add nsw i32 %3175, %3176
  %3178 = sub nsw i32 %3177, 1
  %3179 = sext i32 %3178 to i64
  %3180 = getelementptr inbounds i8, ptr %3174, i64 %3179
  %3181 = load i8, ptr %3180, align 1, !tbaa !16
  %3182 = zext i8 %3181 to i32
  %3183 = sub nsw i32 %3163, %3182
  %3184 = mul nsw i32 %3183, 2
  %3185 = load ptr, ptr %16, align 8, !tbaa !5
  %3186 = load i32, ptr %33, align 4, !tbaa !9
  %3187 = sext i32 %3186 to i64
  %3188 = getelementptr inbounds ptr, ptr %3185, i64 %3187
  %3189 = load ptr, ptr %3188, align 8, !tbaa !5
  %3190 = load i32, ptr %31, align 4, !tbaa !9
  %3191 = load i32, ptr %7, align 4, !tbaa !9
  %3192 = sub nsw i32 %3190, %3191
  %3193 = sext i32 %3192 to i64
  %3194 = getelementptr inbounds ptr, ptr %3189, i64 %3193
  %3195 = load ptr, ptr %3194, align 8, !tbaa !5
  %3196 = load i32, ptr %30, align 4, !tbaa !9
  %3197 = load i32, ptr %7, align 4, !tbaa !9
  %3198 = sub nsw i32 %3196, %3197
  %3199 = sext i32 %3198 to i64
  %3200 = getelementptr inbounds i8, ptr %3195, i64 %3199
  %3201 = load i8, ptr %3200, align 1, !tbaa !16
  %3202 = zext i8 %3201 to i32
  %3203 = load ptr, ptr %16, align 8, !tbaa !5
  %3204 = load i32, ptr %33, align 4, !tbaa !9
  %3205 = sext i32 %3204 to i64
  %3206 = getelementptr inbounds ptr, ptr %3203, i64 %3205
  %3207 = load ptr, ptr %3206, align 8, !tbaa !5
  %3208 = load i32, ptr %31, align 4, !tbaa !9
  %3209 = load i32, ptr %7, align 4, !tbaa !9
  %3210 = add nsw i32 %3208, %3209
  %3211 = sext i32 %3210 to i64
  %3212 = getelementptr inbounds ptr, ptr %3207, i64 %3211
  %3213 = load ptr, ptr %3212, align 8, !tbaa !5
  %3214 = load i32, ptr %30, align 4, !tbaa !9
  %3215 = load i32, ptr %7, align 4, !tbaa !9
  %3216 = add nsw i32 %3214, %3215
  %3217 = sext i32 %3216 to i64
  %3218 = getelementptr inbounds i8, ptr %3213, i64 %3217
  %3219 = load i8, ptr %3218, align 1, !tbaa !16
  %3220 = zext i8 %3219 to i32
  %3221 = sub nsw i32 %3202, %3220
  %3222 = mul nsw i32 %3221, 3
  %3223 = add nsw i32 %3184, %3222
  %3224 = load ptr, ptr %16, align 8, !tbaa !5
  %3225 = load i32, ptr %33, align 4, !tbaa !9
  %3226 = sext i32 %3225 to i64
  %3227 = getelementptr inbounds ptr, ptr %3224, i64 %3226
  %3228 = load ptr, ptr %3227, align 8, !tbaa !5
  %3229 = load i32, ptr %31, align 4, !tbaa !9
  %3230 = load i32, ptr %7, align 4, !tbaa !9
  %3231 = sub nsw i32 %3229, %3230
  %3232 = add nsw i32 %3231, 1
  %3233 = sext i32 %3232 to i64
  %3234 = getelementptr inbounds ptr, ptr %3228, i64 %3233
  %3235 = load ptr, ptr %3234, align 8, !tbaa !5
  %3236 = load i32, ptr %30, align 4, !tbaa !9
  %3237 = load i32, ptr %7, align 4, !tbaa !9
  %3238 = sub nsw i32 %3236, %3237
  %3239 = sext i32 %3238 to i64
  %3240 = getelementptr inbounds i8, ptr %3235, i64 %3239
  %3241 = load i8, ptr %3240, align 1, !tbaa !16
  %3242 = zext i8 %3241 to i32
  %3243 = load ptr, ptr %16, align 8, !tbaa !5
  %3244 = load i32, ptr %33, align 4, !tbaa !9
  %3245 = sext i32 %3244 to i64
  %3246 = getelementptr inbounds ptr, ptr %3243, i64 %3245
  %3247 = load ptr, ptr %3246, align 8, !tbaa !5
  %3248 = load i32, ptr %31, align 4, !tbaa !9
  %3249 = load i32, ptr %7, align 4, !tbaa !9
  %3250 = add nsw i32 %3248, %3249
  %3251 = sub nsw i32 %3250, 1
  %3252 = sext i32 %3251 to i64
  %3253 = getelementptr inbounds ptr, ptr %3247, i64 %3252
  %3254 = load ptr, ptr %3253, align 8, !tbaa !5
  %3255 = load i32, ptr %30, align 4, !tbaa !9
  %3256 = load i32, ptr %7, align 4, !tbaa !9
  %3257 = add nsw i32 %3255, %3256
  %3258 = sext i32 %3257 to i64
  %3259 = getelementptr inbounds i8, ptr %3254, i64 %3258
  %3260 = load i8, ptr %3259, align 1, !tbaa !16
  %3261 = zext i8 %3260 to i32
  %3262 = sub nsw i32 %3242, %3261
  %3263 = mul nsw i32 %3262, 2
  %3264 = add nsw i32 %3223, %3263
  %3265 = icmp sgt i32 %3264, 0
  br i1 %3265, label %3266, label %3387

3266:                                             ; preds = %3144
  %3267 = load ptr, ptr %16, align 8, !tbaa !5
  %3268 = load i32, ptr %33, align 4, !tbaa !9
  %3269 = sext i32 %3268 to i64
  %3270 = getelementptr inbounds ptr, ptr %3267, i64 %3269
  %3271 = load ptr, ptr %3270, align 8, !tbaa !5
  %3272 = load i32, ptr %31, align 4, !tbaa !9
  %3273 = load i32, ptr %7, align 4, !tbaa !9
  %3274 = sub nsw i32 %3272, %3273
  %3275 = sext i32 %3274 to i64
  %3276 = getelementptr inbounds ptr, ptr %3271, i64 %3275
  %3277 = load ptr, ptr %3276, align 8, !tbaa !5
  %3278 = load i32, ptr %30, align 4, !tbaa !9
  %3279 = load i32, ptr %7, align 4, !tbaa !9
  %3280 = sub nsw i32 %3278, %3279
  %3281 = add nsw i32 %3280, 1
  %3282 = sext i32 %3281 to i64
  %3283 = getelementptr inbounds i8, ptr %3277, i64 %3282
  %3284 = load i8, ptr %3283, align 1, !tbaa !16
  %3285 = zext i8 %3284 to i32
  %3286 = load ptr, ptr %16, align 8, !tbaa !5
  %3287 = load i32, ptr %33, align 4, !tbaa !9
  %3288 = sext i32 %3287 to i64
  %3289 = getelementptr inbounds ptr, ptr %3286, i64 %3288
  %3290 = load ptr, ptr %3289, align 8, !tbaa !5
  %3291 = load i32, ptr %31, align 4, !tbaa !9
  %3292 = load i32, ptr %7, align 4, !tbaa !9
  %3293 = add nsw i32 %3291, %3292
  %3294 = sext i32 %3293 to i64
  %3295 = getelementptr inbounds ptr, ptr %3290, i64 %3294
  %3296 = load ptr, ptr %3295, align 8, !tbaa !5
  %3297 = load i32, ptr %30, align 4, !tbaa !9
  %3298 = load i32, ptr %7, align 4, !tbaa !9
  %3299 = add nsw i32 %3297, %3298
  %3300 = sub nsw i32 %3299, 1
  %3301 = sext i32 %3300 to i64
  %3302 = getelementptr inbounds i8, ptr %3296, i64 %3301
  %3303 = load i8, ptr %3302, align 1, !tbaa !16
  %3304 = zext i8 %3303 to i32
  %3305 = sub nsw i32 %3285, %3304
  %3306 = mul nsw i32 %3305, 2
  %3307 = load ptr, ptr %16, align 8, !tbaa !5
  %3308 = load i32, ptr %33, align 4, !tbaa !9
  %3309 = sext i32 %3308 to i64
  %3310 = getelementptr inbounds ptr, ptr %3307, i64 %3309
  %3311 = load ptr, ptr %3310, align 8, !tbaa !5
  %3312 = load i32, ptr %31, align 4, !tbaa !9
  %3313 = load i32, ptr %7, align 4, !tbaa !9
  %3314 = sub nsw i32 %3312, %3313
  %3315 = sext i32 %3314 to i64
  %3316 = getelementptr inbounds ptr, ptr %3311, i64 %3315
  %3317 = load ptr, ptr %3316, align 8, !tbaa !5
  %3318 = load i32, ptr %30, align 4, !tbaa !9
  %3319 = load i32, ptr %7, align 4, !tbaa !9
  %3320 = sub nsw i32 %3318, %3319
  %3321 = sext i32 %3320 to i64
  %3322 = getelementptr inbounds i8, ptr %3317, i64 %3321
  %3323 = load i8, ptr %3322, align 1, !tbaa !16
  %3324 = zext i8 %3323 to i32
  %3325 = load ptr, ptr %16, align 8, !tbaa !5
  %3326 = load i32, ptr %33, align 4, !tbaa !9
  %3327 = sext i32 %3326 to i64
  %3328 = getelementptr inbounds ptr, ptr %3325, i64 %3327
  %3329 = load ptr, ptr %3328, align 8, !tbaa !5
  %3330 = load i32, ptr %31, align 4, !tbaa !9
  %3331 = load i32, ptr %7, align 4, !tbaa !9
  %3332 = add nsw i32 %3330, %3331
  %3333 = sext i32 %3332 to i64
  %3334 = getelementptr inbounds ptr, ptr %3329, i64 %3333
  %3335 = load ptr, ptr %3334, align 8, !tbaa !5
  %3336 = load i32, ptr %30, align 4, !tbaa !9
  %3337 = load i32, ptr %7, align 4, !tbaa !9
  %3338 = add nsw i32 %3336, %3337
  %3339 = sext i32 %3338 to i64
  %3340 = getelementptr inbounds i8, ptr %3335, i64 %3339
  %3341 = load i8, ptr %3340, align 1, !tbaa !16
  %3342 = zext i8 %3341 to i32
  %3343 = sub nsw i32 %3324, %3342
  %3344 = mul nsw i32 %3343, 3
  %3345 = add nsw i32 %3306, %3344
  %3346 = load ptr, ptr %16, align 8, !tbaa !5
  %3347 = load i32, ptr %33, align 4, !tbaa !9
  %3348 = sext i32 %3347 to i64
  %3349 = getelementptr inbounds ptr, ptr %3346, i64 %3348
  %3350 = load ptr, ptr %3349, align 8, !tbaa !5
  %3351 = load i32, ptr %31, align 4, !tbaa !9
  %3352 = load i32, ptr %7, align 4, !tbaa !9
  %3353 = sub nsw i32 %3351, %3352
  %3354 = add nsw i32 %3353, 1
  %3355 = sext i32 %3354 to i64
  %3356 = getelementptr inbounds ptr, ptr %3350, i64 %3355
  %3357 = load ptr, ptr %3356, align 8, !tbaa !5
  %3358 = load i32, ptr %30, align 4, !tbaa !9
  %3359 = load i32, ptr %7, align 4, !tbaa !9
  %3360 = sub nsw i32 %3358, %3359
  %3361 = sext i32 %3360 to i64
  %3362 = getelementptr inbounds i8, ptr %3357, i64 %3361
  %3363 = load i8, ptr %3362, align 1, !tbaa !16
  %3364 = zext i8 %3363 to i32
  %3365 = load ptr, ptr %16, align 8, !tbaa !5
  %3366 = load i32, ptr %33, align 4, !tbaa !9
  %3367 = sext i32 %3366 to i64
  %3368 = getelementptr inbounds ptr, ptr %3365, i64 %3367
  %3369 = load ptr, ptr %3368, align 8, !tbaa !5
  %3370 = load i32, ptr %31, align 4, !tbaa !9
  %3371 = load i32, ptr %7, align 4, !tbaa !9
  %3372 = add nsw i32 %3370, %3371
  %3373 = sub nsw i32 %3372, 1
  %3374 = sext i32 %3373 to i64
  %3375 = getelementptr inbounds ptr, ptr %3369, i64 %3374
  %3376 = load ptr, ptr %3375, align 8, !tbaa !5
  %3377 = load i32, ptr %30, align 4, !tbaa !9
  %3378 = load i32, ptr %7, align 4, !tbaa !9
  %3379 = add nsw i32 %3377, %3378
  %3380 = sext i32 %3379 to i64
  %3381 = getelementptr inbounds i8, ptr %3376, i64 %3380
  %3382 = load i8, ptr %3381, align 1, !tbaa !16
  %3383 = zext i8 %3382 to i32
  %3384 = sub nsw i32 %3364, %3383
  %3385 = mul nsw i32 %3384, 2
  %3386 = add nsw i32 %3345, %3385
  br label %3509

3387:                                             ; preds = %3144
  %3388 = load ptr, ptr %16, align 8, !tbaa !5
  %3389 = load i32, ptr %33, align 4, !tbaa !9
  %3390 = sext i32 %3389 to i64
  %3391 = getelementptr inbounds ptr, ptr %3388, i64 %3390
  %3392 = load ptr, ptr %3391, align 8, !tbaa !5
  %3393 = load i32, ptr %31, align 4, !tbaa !9
  %3394 = load i32, ptr %7, align 4, !tbaa !9
  %3395 = sub nsw i32 %3393, %3394
  %3396 = sext i32 %3395 to i64
  %3397 = getelementptr inbounds ptr, ptr %3392, i64 %3396
  %3398 = load ptr, ptr %3397, align 8, !tbaa !5
  %3399 = load i32, ptr %30, align 4, !tbaa !9
  %3400 = load i32, ptr %7, align 4, !tbaa !9
  %3401 = sub nsw i32 %3399, %3400
  %3402 = add nsw i32 %3401, 1
  %3403 = sext i32 %3402 to i64
  %3404 = getelementptr inbounds i8, ptr %3398, i64 %3403
  %3405 = load i8, ptr %3404, align 1, !tbaa !16
  %3406 = zext i8 %3405 to i32
  %3407 = load ptr, ptr %16, align 8, !tbaa !5
  %3408 = load i32, ptr %33, align 4, !tbaa !9
  %3409 = sext i32 %3408 to i64
  %3410 = getelementptr inbounds ptr, ptr %3407, i64 %3409
  %3411 = load ptr, ptr %3410, align 8, !tbaa !5
  %3412 = load i32, ptr %31, align 4, !tbaa !9
  %3413 = load i32, ptr %7, align 4, !tbaa !9
  %3414 = add nsw i32 %3412, %3413
  %3415 = sext i32 %3414 to i64
  %3416 = getelementptr inbounds ptr, ptr %3411, i64 %3415
  %3417 = load ptr, ptr %3416, align 8, !tbaa !5
  %3418 = load i32, ptr %30, align 4, !tbaa !9
  %3419 = load i32, ptr %7, align 4, !tbaa !9
  %3420 = add nsw i32 %3418, %3419
  %3421 = sub nsw i32 %3420, 1
  %3422 = sext i32 %3421 to i64
  %3423 = getelementptr inbounds i8, ptr %3417, i64 %3422
  %3424 = load i8, ptr %3423, align 1, !tbaa !16
  %3425 = zext i8 %3424 to i32
  %3426 = sub nsw i32 %3406, %3425
  %3427 = mul nsw i32 %3426, 2
  %3428 = load ptr, ptr %16, align 8, !tbaa !5
  %3429 = load i32, ptr %33, align 4, !tbaa !9
  %3430 = sext i32 %3429 to i64
  %3431 = getelementptr inbounds ptr, ptr %3428, i64 %3430
  %3432 = load ptr, ptr %3431, align 8, !tbaa !5
  %3433 = load i32, ptr %31, align 4, !tbaa !9
  %3434 = load i32, ptr %7, align 4, !tbaa !9
  %3435 = sub nsw i32 %3433, %3434
  %3436 = sext i32 %3435 to i64
  %3437 = getelementptr inbounds ptr, ptr %3432, i64 %3436
  %3438 = load ptr, ptr %3437, align 8, !tbaa !5
  %3439 = load i32, ptr %30, align 4, !tbaa !9
  %3440 = load i32, ptr %7, align 4, !tbaa !9
  %3441 = sub nsw i32 %3439, %3440
  %3442 = sext i32 %3441 to i64
  %3443 = getelementptr inbounds i8, ptr %3438, i64 %3442
  %3444 = load i8, ptr %3443, align 1, !tbaa !16
  %3445 = zext i8 %3444 to i32
  %3446 = load ptr, ptr %16, align 8, !tbaa !5
  %3447 = load i32, ptr %33, align 4, !tbaa !9
  %3448 = sext i32 %3447 to i64
  %3449 = getelementptr inbounds ptr, ptr %3446, i64 %3448
  %3450 = load ptr, ptr %3449, align 8, !tbaa !5
  %3451 = load i32, ptr %31, align 4, !tbaa !9
  %3452 = load i32, ptr %7, align 4, !tbaa !9
  %3453 = add nsw i32 %3451, %3452
  %3454 = sext i32 %3453 to i64
  %3455 = getelementptr inbounds ptr, ptr %3450, i64 %3454
  %3456 = load ptr, ptr %3455, align 8, !tbaa !5
  %3457 = load i32, ptr %30, align 4, !tbaa !9
  %3458 = load i32, ptr %7, align 4, !tbaa !9
  %3459 = add nsw i32 %3457, %3458
  %3460 = sext i32 %3459 to i64
  %3461 = getelementptr inbounds i8, ptr %3456, i64 %3460
  %3462 = load i8, ptr %3461, align 1, !tbaa !16
  %3463 = zext i8 %3462 to i32
  %3464 = sub nsw i32 %3445, %3463
  %3465 = mul nsw i32 %3464, 3
  %3466 = add nsw i32 %3427, %3465
  %3467 = load ptr, ptr %16, align 8, !tbaa !5
  %3468 = load i32, ptr %33, align 4, !tbaa !9
  %3469 = sext i32 %3468 to i64
  %3470 = getelementptr inbounds ptr, ptr %3467, i64 %3469
  %3471 = load ptr, ptr %3470, align 8, !tbaa !5
  %3472 = load i32, ptr %31, align 4, !tbaa !9
  %3473 = load i32, ptr %7, align 4, !tbaa !9
  %3474 = sub nsw i32 %3472, %3473
  %3475 = add nsw i32 %3474, 1
  %3476 = sext i32 %3475 to i64
  %3477 = getelementptr inbounds ptr, ptr %3471, i64 %3476
  %3478 = load ptr, ptr %3477, align 8, !tbaa !5
  %3479 = load i32, ptr %30, align 4, !tbaa !9
  %3480 = load i32, ptr %7, align 4, !tbaa !9
  %3481 = sub nsw i32 %3479, %3480
  %3482 = sext i32 %3481 to i64
  %3483 = getelementptr inbounds i8, ptr %3478, i64 %3482
  %3484 = load i8, ptr %3483, align 1, !tbaa !16
  %3485 = zext i8 %3484 to i32
  %3486 = load ptr, ptr %16, align 8, !tbaa !5
  %3487 = load i32, ptr %33, align 4, !tbaa !9
  %3488 = sext i32 %3487 to i64
  %3489 = getelementptr inbounds ptr, ptr %3486, i64 %3488
  %3490 = load ptr, ptr %3489, align 8, !tbaa !5
  %3491 = load i32, ptr %31, align 4, !tbaa !9
  %3492 = load i32, ptr %7, align 4, !tbaa !9
  %3493 = add nsw i32 %3491, %3492
  %3494 = sub nsw i32 %3493, 1
  %3495 = sext i32 %3494 to i64
  %3496 = getelementptr inbounds ptr, ptr %3490, i64 %3495
  %3497 = load ptr, ptr %3496, align 8, !tbaa !5
  %3498 = load i32, ptr %30, align 4, !tbaa !9
  %3499 = load i32, ptr %7, align 4, !tbaa !9
  %3500 = add nsw i32 %3498, %3499
  %3501 = sext i32 %3500 to i64
  %3502 = getelementptr inbounds i8, ptr %3497, i64 %3501
  %3503 = load i8, ptr %3502, align 1, !tbaa !16
  %3504 = zext i8 %3503 to i32
  %3505 = sub nsw i32 %3485, %3504
  %3506 = mul nsw i32 %3505, 2
  %3507 = add nsw i32 %3466, %3506
  %3508 = sub nsw i32 0, %3507
  br label %3509

3509:                                             ; preds = %3387, %3266
  %3510 = phi i32 [ %3386, %3266 ], [ %3508, %3387 ]
  store i32 %3510, ptr %32, align 4, !tbaa !9
  %3511 = load i32, ptr %32, align 4, !tbaa !9
  %3512 = load i8, ptr %34, align 1, !tbaa !16
  %3513 = zext i8 %3512 to i64
  %3514 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %3513
  %3515 = load i8, ptr %3514, align 1, !tbaa !16
  %3516 = zext i8 %3515 to i32
  %3517 = icmp sgt i32 %3511, %3516
  br i1 %3517, label %3518, label %3530

3518:                                             ; preds = %3509
  %3519 = load ptr, ptr %6, align 8, !tbaa !5
  %3520 = getelementptr inbounds %struct.MImage, ptr %3519, i32 0, i32 3
  %3521 = getelementptr inbounds [4 x ptr], ptr %3520, i64 0, i64 0
  %3522 = load ptr, ptr %3521, align 8, !tbaa !5
  %3523 = load i32, ptr %31, align 4, !tbaa !9
  %3524 = sext i32 %3523 to i64
  %3525 = getelementptr inbounds ptr, ptr %3522, i64 %3524
  %3526 = load ptr, ptr %3525, align 8, !tbaa !5
  %3527 = load i32, ptr %30, align 4, !tbaa !9
  %3528 = sext i32 %3527 to i64
  %3529 = getelementptr inbounds i8, ptr %3526, i64 %3528
  store i8 -1, ptr %3529, align 1, !tbaa !16
  store i32 34, ptr %25, align 4
  br label %3531

3530:                                             ; preds = %3509
  store i32 0, ptr %25, align 4
  br label %3531

3531:                                             ; preds = %3530, %3518, %3132, %2782, %2396
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #4
  %3532 = load i32, ptr %25, align 4
  switch i32 %3532, label %3537 [
    i32 0, label %3533
  ]

3533:                                             ; preds = %3531
  br label %3534

3534:                                             ; preds = %3533
  %3535 = load i32, ptr %33, align 4, !tbaa !9
  %3536 = add nsw i32 %3535, 1
  store i32 %3536, ptr %33, align 4, !tbaa !9
  br label %2040, !llvm.loop !27

3537:                                             ; preds = %3531, %2044
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  br label %3538

3538:                                             ; preds = %3537
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  br label %3539

3539:                                             ; preds = %3538
  %3540 = load i32, ptr %31, align 4, !tbaa !9
  %3541 = add nsw i32 %3540, 1
  store i32 %3541, ptr %31, align 4, !tbaa !9
  br label %1969, !llvm.loop !28

3542:                                             ; preds = %2027
  br label %3543

3543:                                             ; preds = %3542
  %3544 = load i32, ptr %30, align 4, !tbaa !9
  %3545 = add nsw i32 %3544, 1
  store i32 %3545, ptr %30, align 4, !tbaa !9
  br label %1962, !llvm.loop !29

3546:                                             ; preds = %1966
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  %3547 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %3547, ptr %35, align 4, !tbaa !9
  br label %3548

3548:                                             ; preds = %5157, %3546
  %3549 = load i32, ptr %35, align 4, !tbaa !9
  %3550 = load i32, ptr %21, align 4, !tbaa !9
  %3551 = icmp slt i32 %3549, %3550
  br i1 %3551, label %3553, label %3552

3552:                                             ; preds = %3548
  store i32 37, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  br label %5160

3553:                                             ; preds = %3548
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  %3554 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %3554, ptr %36, align 4, !tbaa !9
  br label %3555

3555:                                             ; preds = %5153, %3553
  %3556 = load i32, ptr %36, align 4, !tbaa !9
  %3557 = load i32, ptr %17, align 4, !tbaa !9
  %3558 = load i32, ptr %7, align 4, !tbaa !9
  %3559 = sub nsw i32 16, %3558
  %3560 = load i32, ptr %7, align 4, !tbaa !9
  %3561 = sub nsw i32 %3559, %3560
  %3562 = add nsw i32 %3557, %3561
  %3563 = load ptr, ptr %5, align 8, !tbaa !5
  %3564 = getelementptr inbounds %struct.MImage, ptr %3563, i32 0, i32 4
  %3565 = load ptr, ptr %3564, align 8, !tbaa !20
  %3566 = icmp eq ptr %3565, null
  br i1 %3566, label %3567, label %3571

3567:                                             ; preds = %3555
  %3568 = load ptr, ptr %5, align 8, !tbaa !5
  %3569 = getelementptr inbounds %struct.MImage, ptr %3568, i32 0, i32 1
  %3570 = load i32, ptr %3569, align 4, !tbaa !13
  br label %3580

3571:                                             ; preds = %3555
  %3572 = load ptr, ptr %5, align 8, !tbaa !5
  %3573 = getelementptr inbounds %struct.MImage, ptr %3572, i32 0, i32 4
  %3574 = load ptr, ptr %3573, align 8, !tbaa !20
  %3575 = getelementptr inbounds %struct.MArray, ptr %3574, i32 0, i32 2
  %3576 = load ptr, ptr %3575, align 8, !tbaa !16
  %3577 = getelementptr inbounds i16, ptr %3576, i64 3
  %3578 = load i16, ptr %3577, align 2, !tbaa !21
  %3579 = sext i16 %3578 to i32
  br label %3580

3580:                                             ; preds = %3571, %3567
  %3581 = phi i32 [ %3570, %3567 ], [ %3579, %3571 ]
  %3582 = icmp slt i32 %3562, %3581
  br i1 %3582, label %3583, label %3590

3583:                                             ; preds = %3580
  %3584 = load i32, ptr %17, align 4, !tbaa !9
  %3585 = load i32, ptr %7, align 4, !tbaa !9
  %3586 = sub nsw i32 16, %3585
  %3587 = load i32, ptr %7, align 4, !tbaa !9
  %3588 = sub nsw i32 %3586, %3587
  %3589 = add nsw i32 %3584, %3588
  br label %3610

3590:                                             ; preds = %3580
  %3591 = load ptr, ptr %5, align 8, !tbaa !5
  %3592 = getelementptr inbounds %struct.MImage, ptr %3591, i32 0, i32 4
  %3593 = load ptr, ptr %3592, align 8, !tbaa !20
  %3594 = icmp eq ptr %3593, null
  br i1 %3594, label %3595, label %3599

3595:                                             ; preds = %3590
  %3596 = load ptr, ptr %5, align 8, !tbaa !5
  %3597 = getelementptr inbounds %struct.MImage, ptr %3596, i32 0, i32 1
  %3598 = load i32, ptr %3597, align 4, !tbaa !13
  br label %3608

3599:                                             ; preds = %3590
  %3600 = load ptr, ptr %5, align 8, !tbaa !5
  %3601 = getelementptr inbounds %struct.MImage, ptr %3600, i32 0, i32 4
  %3602 = load ptr, ptr %3601, align 8, !tbaa !20
  %3603 = getelementptr inbounds %struct.MArray, ptr %3602, i32 0, i32 2
  %3604 = load ptr, ptr %3603, align 8, !tbaa !16
  %3605 = getelementptr inbounds i16, ptr %3604, i64 3
  %3606 = load i16, ptr %3605, align 2, !tbaa !21
  %3607 = sext i16 %3606 to i32
  br label %3608

3608:                                             ; preds = %3599, %3595
  %3609 = phi i32 [ %3598, %3595 ], [ %3607, %3599 ]
  br label %3610

3610:                                             ; preds = %3608, %3583
  %3611 = phi i32 [ %3589, %3583 ], [ %3609, %3608 ]
  %3612 = icmp slt i32 %3556, %3611
  br i1 %3612, label %3614, label %3613

3613:                                             ; preds = %3610
  store i32 40, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  br label %5156

3614:                                             ; preds = %3610
  %3615 = load i32, ptr %35, align 4, !tbaa !9
  %3616 = load ptr, ptr %5, align 8, !tbaa !5
  %3617 = getelementptr inbounds %struct.MImage, ptr %3616, i32 0, i32 4
  %3618 = load ptr, ptr %3617, align 8, !tbaa !20
  %3619 = icmp eq ptr %3618, null
  br i1 %3619, label %3620, label %3624

3620:                                             ; preds = %3614
  %3621 = load ptr, ptr %5, align 8, !tbaa !5
  %3622 = getelementptr inbounds %struct.MImage, ptr %3621, i32 0, i32 2
  %3623 = load i32, ptr %3622, align 8, !tbaa !15
  br label %3638

3624:                                             ; preds = %3614
  %3625 = load ptr, ptr %5, align 8, !tbaa !5
  %3626 = getelementptr inbounds %struct.MImage, ptr %3625, i32 0, i32 4
  %3627 = load ptr, ptr %3626, align 8, !tbaa !20
  %3628 = getelementptr inbounds %struct.MArray, ptr %3627, i32 0, i32 2
  %3629 = load ptr, ptr %3628, align 8, !tbaa !16
  %3630 = load i32, ptr %36, align 4, !tbaa !9
  %3631 = load i32, ptr %36, align 4, !tbaa !9
  %3632 = add nsw i32 %3630, %3631
  %3633 = add nsw i32 %3632, 5
  %3634 = sext i32 %3633 to i64
  %3635 = getelementptr inbounds i16, ptr %3629, i64 %3634
  %3636 = load i16, ptr %3635, align 2, !tbaa !21
  %3637 = sext i16 %3636 to i32
  br label %3638

3638:                                             ; preds = %3624, %3620
  %3639 = phi i32 [ %3623, %3620 ], [ %3637, %3624 ]
  %3640 = icmp slt i32 %3615, %3639
  br i1 %3640, label %3641, label %5152

3641:                                             ; preds = %3638
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  %3642 = load ptr, ptr %6, align 8, !tbaa !5
  %3643 = getelementptr inbounds %struct.MImage, ptr %3642, i32 0, i32 3
  %3644 = getelementptr inbounds [4 x ptr], ptr %3643, i64 0, i64 0
  %3645 = load ptr, ptr %3644, align 8, !tbaa !5
  %3646 = load i32, ptr %36, align 4, !tbaa !9
  %3647 = sext i32 %3646 to i64
  %3648 = getelementptr inbounds ptr, ptr %3645, i64 %3647
  %3649 = load ptr, ptr %3648, align 8, !tbaa !5
  %3650 = load i32, ptr %35, align 4, !tbaa !9
  %3651 = sext i32 %3650 to i64
  %3652 = getelementptr inbounds i8, ptr %3649, i64 %3651
  store i8 0, ptr %3652, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %3653

3653:                                             ; preds = %5147, %3641
  %3654 = load i32, ptr %38, align 4, !tbaa !9
  %3655 = load i32, ptr %15, align 4, !tbaa !9
  %3656 = icmp slt i32 %3654, %3655
  br i1 %3656, label %3658, label %3657

3657:                                             ; preds = %3653
  store i32 43, ptr %25, align 4
  br label %5150

3658:                                             ; preds = %3653
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #4
  %3659 = load ptr, ptr %16, align 8, !tbaa !5
  %3660 = load i32, ptr %38, align 4, !tbaa !9
  %3661 = sext i32 %3660 to i64
  %3662 = getelementptr inbounds ptr, ptr %3659, i64 %3661
  %3663 = load ptr, ptr %3662, align 8, !tbaa !5
  %3664 = load i32, ptr %36, align 4, !tbaa !9
  %3665 = sext i32 %3664 to i64
  %3666 = getelementptr inbounds ptr, ptr %3663, i64 %3665
  %3667 = load ptr, ptr %3666, align 8, !tbaa !5
  %3668 = load i32, ptr %35, align 4, !tbaa !9
  %3669 = sext i32 %3668 to i64
  %3670 = getelementptr inbounds i8, ptr %3667, i64 %3669
  %3671 = load i8, ptr %3670, align 1, !tbaa !16
  store i8 %3671, ptr %39, align 1, !tbaa !16
  %3672 = load ptr, ptr %16, align 8, !tbaa !5
  %3673 = load i32, ptr %38, align 4, !tbaa !9
  %3674 = sext i32 %3673 to i64
  %3675 = getelementptr inbounds ptr, ptr %3672, i64 %3674
  %3676 = load ptr, ptr %3675, align 8, !tbaa !5
  %3677 = load i32, ptr %36, align 4, !tbaa !9
  %3678 = load i32, ptr %7, align 4, !tbaa !9
  %3679 = sub nsw i32 %3677, %3678
  %3680 = sext i32 %3679 to i64
  %3681 = getelementptr inbounds ptr, ptr %3676, i64 %3680
  %3682 = load ptr, ptr %3681, align 8, !tbaa !5
  %3683 = load i32, ptr %35, align 4, !tbaa !9
  %3684 = sub nsw i32 %3683, 1
  %3685 = sext i32 %3684 to i64
  %3686 = getelementptr inbounds i8, ptr %3682, i64 %3685
  %3687 = load i8, ptr %3686, align 1, !tbaa !16
  %3688 = zext i8 %3687 to i32
  %3689 = load ptr, ptr %16, align 8, !tbaa !5
  %3690 = load i32, ptr %38, align 4, !tbaa !9
  %3691 = sext i32 %3690 to i64
  %3692 = getelementptr inbounds ptr, ptr %3689, i64 %3691
  %3693 = load ptr, ptr %3692, align 8, !tbaa !5
  %3694 = load i32, ptr %36, align 4, !tbaa !9
  %3695 = load i32, ptr %7, align 4, !tbaa !9
  %3696 = add nsw i32 %3694, %3695
  %3697 = sext i32 %3696 to i64
  %3698 = getelementptr inbounds ptr, ptr %3693, i64 %3697
  %3699 = load ptr, ptr %3698, align 8, !tbaa !5
  %3700 = load i32, ptr %35, align 4, !tbaa !9
  %3701 = sub nsw i32 %3700, 1
  %3702 = sext i32 %3701 to i64
  %3703 = getelementptr inbounds i8, ptr %3699, i64 %3702
  %3704 = load i8, ptr %3703, align 1, !tbaa !16
  %3705 = zext i8 %3704 to i32
  %3706 = sub nsw i32 %3688, %3705
  %3707 = mul nsw i32 %3706, 2
  %3708 = load ptr, ptr %16, align 8, !tbaa !5
  %3709 = load i32, ptr %38, align 4, !tbaa !9
  %3710 = sext i32 %3709 to i64
  %3711 = getelementptr inbounds ptr, ptr %3708, i64 %3710
  %3712 = load ptr, ptr %3711, align 8, !tbaa !5
  %3713 = load i32, ptr %36, align 4, !tbaa !9
  %3714 = load i32, ptr %7, align 4, !tbaa !9
  %3715 = sub nsw i32 %3713, %3714
  %3716 = sext i32 %3715 to i64
  %3717 = getelementptr inbounds ptr, ptr %3712, i64 %3716
  %3718 = load ptr, ptr %3717, align 8, !tbaa !5
  %3719 = load i32, ptr %35, align 4, !tbaa !9
  %3720 = sext i32 %3719 to i64
  %3721 = getelementptr inbounds i8, ptr %3718, i64 %3720
  %3722 = load i8, ptr %3721, align 1, !tbaa !16
  %3723 = zext i8 %3722 to i32
  %3724 = load ptr, ptr %16, align 8, !tbaa !5
  %3725 = load i32, ptr %38, align 4, !tbaa !9
  %3726 = sext i32 %3725 to i64
  %3727 = getelementptr inbounds ptr, ptr %3724, i64 %3726
  %3728 = load ptr, ptr %3727, align 8, !tbaa !5
  %3729 = load i32, ptr %36, align 4, !tbaa !9
  %3730 = load i32, ptr %7, align 4, !tbaa !9
  %3731 = add nsw i32 %3729, %3730
  %3732 = sext i32 %3731 to i64
  %3733 = getelementptr inbounds ptr, ptr %3728, i64 %3732
  %3734 = load ptr, ptr %3733, align 8, !tbaa !5
  %3735 = load i32, ptr %35, align 4, !tbaa !9
  %3736 = sext i32 %3735 to i64
  %3737 = getelementptr inbounds i8, ptr %3734, i64 %3736
  %3738 = load i8, ptr %3737, align 1, !tbaa !16
  %3739 = zext i8 %3738 to i32
  %3740 = sub nsw i32 %3723, %3739
  %3741 = mul nsw i32 %3740, 3
  %3742 = add nsw i32 %3707, %3741
  %3743 = load ptr, ptr %16, align 8, !tbaa !5
  %3744 = load i32, ptr %38, align 4, !tbaa !9
  %3745 = sext i32 %3744 to i64
  %3746 = getelementptr inbounds ptr, ptr %3743, i64 %3745
  %3747 = load ptr, ptr %3746, align 8, !tbaa !5
  %3748 = load i32, ptr %36, align 4, !tbaa !9
  %3749 = load i32, ptr %7, align 4, !tbaa !9
  %3750 = sub nsw i32 %3748, %3749
  %3751 = sext i32 %3750 to i64
  %3752 = getelementptr inbounds ptr, ptr %3747, i64 %3751
  %3753 = load ptr, ptr %3752, align 8, !tbaa !5
  %3754 = load i32, ptr %35, align 4, !tbaa !9
  %3755 = add nsw i32 %3754, 1
  %3756 = sext i32 %3755 to i64
  %3757 = getelementptr inbounds i8, ptr %3753, i64 %3756
  %3758 = load i8, ptr %3757, align 1, !tbaa !16
  %3759 = zext i8 %3758 to i32
  %3760 = load ptr, ptr %16, align 8, !tbaa !5
  %3761 = load i32, ptr %38, align 4, !tbaa !9
  %3762 = sext i32 %3761 to i64
  %3763 = getelementptr inbounds ptr, ptr %3760, i64 %3762
  %3764 = load ptr, ptr %3763, align 8, !tbaa !5
  %3765 = load i32, ptr %36, align 4, !tbaa !9
  %3766 = load i32, ptr %7, align 4, !tbaa !9
  %3767 = add nsw i32 %3765, %3766
  %3768 = sext i32 %3767 to i64
  %3769 = getelementptr inbounds ptr, ptr %3764, i64 %3768
  %3770 = load ptr, ptr %3769, align 8, !tbaa !5
  %3771 = load i32, ptr %35, align 4, !tbaa !9
  %3772 = add nsw i32 %3771, 1
  %3773 = sext i32 %3772 to i64
  %3774 = getelementptr inbounds i8, ptr %3770, i64 %3773
  %3775 = load i8, ptr %3774, align 1, !tbaa !16
  %3776 = zext i8 %3775 to i32
  %3777 = sub nsw i32 %3759, %3776
  %3778 = mul nsw i32 %3777, 2
  %3779 = add nsw i32 %3742, %3778
  %3780 = icmp sgt i32 %3779, 0
  br i1 %3780, label %3781, label %3890

3781:                                             ; preds = %3658
  %3782 = load ptr, ptr %16, align 8, !tbaa !5
  %3783 = load i32, ptr %38, align 4, !tbaa !9
  %3784 = sext i32 %3783 to i64
  %3785 = getelementptr inbounds ptr, ptr %3782, i64 %3784
  %3786 = load ptr, ptr %3785, align 8, !tbaa !5
  %3787 = load i32, ptr %36, align 4, !tbaa !9
  %3788 = load i32, ptr %7, align 4, !tbaa !9
  %3789 = sub nsw i32 %3787, %3788
  %3790 = sext i32 %3789 to i64
  %3791 = getelementptr inbounds ptr, ptr %3786, i64 %3790
  %3792 = load ptr, ptr %3791, align 8, !tbaa !5
  %3793 = load i32, ptr %35, align 4, !tbaa !9
  %3794 = sub nsw i32 %3793, 1
  %3795 = sext i32 %3794 to i64
  %3796 = getelementptr inbounds i8, ptr %3792, i64 %3795
  %3797 = load i8, ptr %3796, align 1, !tbaa !16
  %3798 = zext i8 %3797 to i32
  %3799 = load ptr, ptr %16, align 8, !tbaa !5
  %3800 = load i32, ptr %38, align 4, !tbaa !9
  %3801 = sext i32 %3800 to i64
  %3802 = getelementptr inbounds ptr, ptr %3799, i64 %3801
  %3803 = load ptr, ptr %3802, align 8, !tbaa !5
  %3804 = load i32, ptr %36, align 4, !tbaa !9
  %3805 = load i32, ptr %7, align 4, !tbaa !9
  %3806 = add nsw i32 %3804, %3805
  %3807 = sext i32 %3806 to i64
  %3808 = getelementptr inbounds ptr, ptr %3803, i64 %3807
  %3809 = load ptr, ptr %3808, align 8, !tbaa !5
  %3810 = load i32, ptr %35, align 4, !tbaa !9
  %3811 = sub nsw i32 %3810, 1
  %3812 = sext i32 %3811 to i64
  %3813 = getelementptr inbounds i8, ptr %3809, i64 %3812
  %3814 = load i8, ptr %3813, align 1, !tbaa !16
  %3815 = zext i8 %3814 to i32
  %3816 = sub nsw i32 %3798, %3815
  %3817 = mul nsw i32 %3816, 2
  %3818 = load ptr, ptr %16, align 8, !tbaa !5
  %3819 = load i32, ptr %38, align 4, !tbaa !9
  %3820 = sext i32 %3819 to i64
  %3821 = getelementptr inbounds ptr, ptr %3818, i64 %3820
  %3822 = load ptr, ptr %3821, align 8, !tbaa !5
  %3823 = load i32, ptr %36, align 4, !tbaa !9
  %3824 = load i32, ptr %7, align 4, !tbaa !9
  %3825 = sub nsw i32 %3823, %3824
  %3826 = sext i32 %3825 to i64
  %3827 = getelementptr inbounds ptr, ptr %3822, i64 %3826
  %3828 = load ptr, ptr %3827, align 8, !tbaa !5
  %3829 = load i32, ptr %35, align 4, !tbaa !9
  %3830 = sext i32 %3829 to i64
  %3831 = getelementptr inbounds i8, ptr %3828, i64 %3830
  %3832 = load i8, ptr %3831, align 1, !tbaa !16
  %3833 = zext i8 %3832 to i32
  %3834 = load ptr, ptr %16, align 8, !tbaa !5
  %3835 = load i32, ptr %38, align 4, !tbaa !9
  %3836 = sext i32 %3835 to i64
  %3837 = getelementptr inbounds ptr, ptr %3834, i64 %3836
  %3838 = load ptr, ptr %3837, align 8, !tbaa !5
  %3839 = load i32, ptr %36, align 4, !tbaa !9
  %3840 = load i32, ptr %7, align 4, !tbaa !9
  %3841 = add nsw i32 %3839, %3840
  %3842 = sext i32 %3841 to i64
  %3843 = getelementptr inbounds ptr, ptr %3838, i64 %3842
  %3844 = load ptr, ptr %3843, align 8, !tbaa !5
  %3845 = load i32, ptr %35, align 4, !tbaa !9
  %3846 = sext i32 %3845 to i64
  %3847 = getelementptr inbounds i8, ptr %3844, i64 %3846
  %3848 = load i8, ptr %3847, align 1, !tbaa !16
  %3849 = zext i8 %3848 to i32
  %3850 = sub nsw i32 %3833, %3849
  %3851 = mul nsw i32 %3850, 3
  %3852 = add nsw i32 %3817, %3851
  %3853 = load ptr, ptr %16, align 8, !tbaa !5
  %3854 = load i32, ptr %38, align 4, !tbaa !9
  %3855 = sext i32 %3854 to i64
  %3856 = getelementptr inbounds ptr, ptr %3853, i64 %3855
  %3857 = load ptr, ptr %3856, align 8, !tbaa !5
  %3858 = load i32, ptr %36, align 4, !tbaa !9
  %3859 = load i32, ptr %7, align 4, !tbaa !9
  %3860 = sub nsw i32 %3858, %3859
  %3861 = sext i32 %3860 to i64
  %3862 = getelementptr inbounds ptr, ptr %3857, i64 %3861
  %3863 = load ptr, ptr %3862, align 8, !tbaa !5
  %3864 = load i32, ptr %35, align 4, !tbaa !9
  %3865 = add nsw i32 %3864, 1
  %3866 = sext i32 %3865 to i64
  %3867 = getelementptr inbounds i8, ptr %3863, i64 %3866
  %3868 = load i8, ptr %3867, align 1, !tbaa !16
  %3869 = zext i8 %3868 to i32
  %3870 = load ptr, ptr %16, align 8, !tbaa !5
  %3871 = load i32, ptr %38, align 4, !tbaa !9
  %3872 = sext i32 %3871 to i64
  %3873 = getelementptr inbounds ptr, ptr %3870, i64 %3872
  %3874 = load ptr, ptr %3873, align 8, !tbaa !5
  %3875 = load i32, ptr %36, align 4, !tbaa !9
  %3876 = load i32, ptr %7, align 4, !tbaa !9
  %3877 = add nsw i32 %3875, %3876
  %3878 = sext i32 %3877 to i64
  %3879 = getelementptr inbounds ptr, ptr %3874, i64 %3878
  %3880 = load ptr, ptr %3879, align 8, !tbaa !5
  %3881 = load i32, ptr %35, align 4, !tbaa !9
  %3882 = add nsw i32 %3881, 1
  %3883 = sext i32 %3882 to i64
  %3884 = getelementptr inbounds i8, ptr %3880, i64 %3883
  %3885 = load i8, ptr %3884, align 1, !tbaa !16
  %3886 = zext i8 %3885 to i32
  %3887 = sub nsw i32 %3869, %3886
  %3888 = mul nsw i32 %3887, 2
  %3889 = add nsw i32 %3852, %3888
  br label %4000

3890:                                             ; preds = %3658
  %3891 = load ptr, ptr %16, align 8, !tbaa !5
  %3892 = load i32, ptr %38, align 4, !tbaa !9
  %3893 = sext i32 %3892 to i64
  %3894 = getelementptr inbounds ptr, ptr %3891, i64 %3893
  %3895 = load ptr, ptr %3894, align 8, !tbaa !5
  %3896 = load i32, ptr %36, align 4, !tbaa !9
  %3897 = load i32, ptr %7, align 4, !tbaa !9
  %3898 = sub nsw i32 %3896, %3897
  %3899 = sext i32 %3898 to i64
  %3900 = getelementptr inbounds ptr, ptr %3895, i64 %3899
  %3901 = load ptr, ptr %3900, align 8, !tbaa !5
  %3902 = load i32, ptr %35, align 4, !tbaa !9
  %3903 = sub nsw i32 %3902, 1
  %3904 = sext i32 %3903 to i64
  %3905 = getelementptr inbounds i8, ptr %3901, i64 %3904
  %3906 = load i8, ptr %3905, align 1, !tbaa !16
  %3907 = zext i8 %3906 to i32
  %3908 = load ptr, ptr %16, align 8, !tbaa !5
  %3909 = load i32, ptr %38, align 4, !tbaa !9
  %3910 = sext i32 %3909 to i64
  %3911 = getelementptr inbounds ptr, ptr %3908, i64 %3910
  %3912 = load ptr, ptr %3911, align 8, !tbaa !5
  %3913 = load i32, ptr %36, align 4, !tbaa !9
  %3914 = load i32, ptr %7, align 4, !tbaa !9
  %3915 = add nsw i32 %3913, %3914
  %3916 = sext i32 %3915 to i64
  %3917 = getelementptr inbounds ptr, ptr %3912, i64 %3916
  %3918 = load ptr, ptr %3917, align 8, !tbaa !5
  %3919 = load i32, ptr %35, align 4, !tbaa !9
  %3920 = sub nsw i32 %3919, 1
  %3921 = sext i32 %3920 to i64
  %3922 = getelementptr inbounds i8, ptr %3918, i64 %3921
  %3923 = load i8, ptr %3922, align 1, !tbaa !16
  %3924 = zext i8 %3923 to i32
  %3925 = sub nsw i32 %3907, %3924
  %3926 = mul nsw i32 %3925, 2
  %3927 = load ptr, ptr %16, align 8, !tbaa !5
  %3928 = load i32, ptr %38, align 4, !tbaa !9
  %3929 = sext i32 %3928 to i64
  %3930 = getelementptr inbounds ptr, ptr %3927, i64 %3929
  %3931 = load ptr, ptr %3930, align 8, !tbaa !5
  %3932 = load i32, ptr %36, align 4, !tbaa !9
  %3933 = load i32, ptr %7, align 4, !tbaa !9
  %3934 = sub nsw i32 %3932, %3933
  %3935 = sext i32 %3934 to i64
  %3936 = getelementptr inbounds ptr, ptr %3931, i64 %3935
  %3937 = load ptr, ptr %3936, align 8, !tbaa !5
  %3938 = load i32, ptr %35, align 4, !tbaa !9
  %3939 = sext i32 %3938 to i64
  %3940 = getelementptr inbounds i8, ptr %3937, i64 %3939
  %3941 = load i8, ptr %3940, align 1, !tbaa !16
  %3942 = zext i8 %3941 to i32
  %3943 = load ptr, ptr %16, align 8, !tbaa !5
  %3944 = load i32, ptr %38, align 4, !tbaa !9
  %3945 = sext i32 %3944 to i64
  %3946 = getelementptr inbounds ptr, ptr %3943, i64 %3945
  %3947 = load ptr, ptr %3946, align 8, !tbaa !5
  %3948 = load i32, ptr %36, align 4, !tbaa !9
  %3949 = load i32, ptr %7, align 4, !tbaa !9
  %3950 = add nsw i32 %3948, %3949
  %3951 = sext i32 %3950 to i64
  %3952 = getelementptr inbounds ptr, ptr %3947, i64 %3951
  %3953 = load ptr, ptr %3952, align 8, !tbaa !5
  %3954 = load i32, ptr %35, align 4, !tbaa !9
  %3955 = sext i32 %3954 to i64
  %3956 = getelementptr inbounds i8, ptr %3953, i64 %3955
  %3957 = load i8, ptr %3956, align 1, !tbaa !16
  %3958 = zext i8 %3957 to i32
  %3959 = sub nsw i32 %3942, %3958
  %3960 = mul nsw i32 %3959, 3
  %3961 = add nsw i32 %3926, %3960
  %3962 = load ptr, ptr %16, align 8, !tbaa !5
  %3963 = load i32, ptr %38, align 4, !tbaa !9
  %3964 = sext i32 %3963 to i64
  %3965 = getelementptr inbounds ptr, ptr %3962, i64 %3964
  %3966 = load ptr, ptr %3965, align 8, !tbaa !5
  %3967 = load i32, ptr %36, align 4, !tbaa !9
  %3968 = load i32, ptr %7, align 4, !tbaa !9
  %3969 = sub nsw i32 %3967, %3968
  %3970 = sext i32 %3969 to i64
  %3971 = getelementptr inbounds ptr, ptr %3966, i64 %3970
  %3972 = load ptr, ptr %3971, align 8, !tbaa !5
  %3973 = load i32, ptr %35, align 4, !tbaa !9
  %3974 = add nsw i32 %3973, 1
  %3975 = sext i32 %3974 to i64
  %3976 = getelementptr inbounds i8, ptr %3972, i64 %3975
  %3977 = load i8, ptr %3976, align 1, !tbaa !16
  %3978 = zext i8 %3977 to i32
  %3979 = load ptr, ptr %16, align 8, !tbaa !5
  %3980 = load i32, ptr %38, align 4, !tbaa !9
  %3981 = sext i32 %3980 to i64
  %3982 = getelementptr inbounds ptr, ptr %3979, i64 %3981
  %3983 = load ptr, ptr %3982, align 8, !tbaa !5
  %3984 = load i32, ptr %36, align 4, !tbaa !9
  %3985 = load i32, ptr %7, align 4, !tbaa !9
  %3986 = add nsw i32 %3984, %3985
  %3987 = sext i32 %3986 to i64
  %3988 = getelementptr inbounds ptr, ptr %3983, i64 %3987
  %3989 = load ptr, ptr %3988, align 8, !tbaa !5
  %3990 = load i32, ptr %35, align 4, !tbaa !9
  %3991 = add nsw i32 %3990, 1
  %3992 = sext i32 %3991 to i64
  %3993 = getelementptr inbounds i8, ptr %3989, i64 %3992
  %3994 = load i8, ptr %3993, align 1, !tbaa !16
  %3995 = zext i8 %3994 to i32
  %3996 = sub nsw i32 %3978, %3995
  %3997 = mul nsw i32 %3996, 2
  %3998 = add nsw i32 %3961, %3997
  %3999 = sub nsw i32 0, %3998
  br label %4000

4000:                                             ; preds = %3890, %3781
  %4001 = phi i32 [ %3889, %3781 ], [ %3999, %3890 ]
  store i32 %4001, ptr %37, align 4, !tbaa !9
  %4002 = load i32, ptr %37, align 4, !tbaa !9
  %4003 = load i8, ptr %39, align 1, !tbaa !16
  %4004 = zext i8 %4003 to i64
  %4005 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %4004
  %4006 = load i8, ptr %4005, align 1, !tbaa !16
  %4007 = zext i8 %4006 to i32
  %4008 = icmp sgt i32 %4002, %4007
  br i1 %4008, label %4009, label %4021

4009:                                             ; preds = %4000
  %4010 = load ptr, ptr %6, align 8, !tbaa !5
  %4011 = getelementptr inbounds %struct.MImage, ptr %4010, i32 0, i32 3
  %4012 = getelementptr inbounds [4 x ptr], ptr %4011, i64 0, i64 0
  %4013 = load ptr, ptr %4012, align 8, !tbaa !5
  %4014 = load i32, ptr %36, align 4, !tbaa !9
  %4015 = sext i32 %4014 to i64
  %4016 = getelementptr inbounds ptr, ptr %4013, i64 %4015
  %4017 = load ptr, ptr %4016, align 8, !tbaa !5
  %4018 = load i32, ptr %35, align 4, !tbaa !9
  %4019 = sext i32 %4018 to i64
  %4020 = getelementptr inbounds i8, ptr %4017, i64 %4019
  store i8 -1, ptr %4020, align 1, !tbaa !16
  store i32 43, ptr %25, align 4
  br label %5144

4021:                                             ; preds = %4000
  %4022 = load ptr, ptr %16, align 8, !tbaa !5
  %4023 = load i32, ptr %38, align 4, !tbaa !9
  %4024 = sext i32 %4023 to i64
  %4025 = getelementptr inbounds ptr, ptr %4022, i64 %4024
  %4026 = load ptr, ptr %4025, align 8, !tbaa !5
  %4027 = load i32, ptr %36, align 4, !tbaa !9
  %4028 = load i32, ptr %7, align 4, !tbaa !9
  %4029 = sub nsw i32 %4027, %4028
  %4030 = sext i32 %4029 to i64
  %4031 = getelementptr inbounds ptr, ptr %4026, i64 %4030
  %4032 = load ptr, ptr %4031, align 8, !tbaa !5
  %4033 = load i32, ptr %35, align 4, !tbaa !9
  %4034 = load i32, ptr %7, align 4, !tbaa !9
  %4035 = add nsw i32 %4033, %4034
  %4036 = sub nsw i32 %4035, 1
  %4037 = sext i32 %4036 to i64
  %4038 = getelementptr inbounds i8, ptr %4032, i64 %4037
  %4039 = load i8, ptr %4038, align 1, !tbaa !16
  %4040 = zext i8 %4039 to i32
  %4041 = load ptr, ptr %16, align 8, !tbaa !5
  %4042 = load i32, ptr %38, align 4, !tbaa !9
  %4043 = sext i32 %4042 to i64
  %4044 = getelementptr inbounds ptr, ptr %4041, i64 %4043
  %4045 = load ptr, ptr %4044, align 8, !tbaa !5
  %4046 = load i32, ptr %36, align 4, !tbaa !9
  %4047 = load i32, ptr %7, align 4, !tbaa !9
  %4048 = add nsw i32 %4046, %4047
  %4049 = sext i32 %4048 to i64
  %4050 = getelementptr inbounds ptr, ptr %4045, i64 %4049
  %4051 = load ptr, ptr %4050, align 8, !tbaa !5
  %4052 = load i32, ptr %35, align 4, !tbaa !9
  %4053 = load i32, ptr %7, align 4, !tbaa !9
  %4054 = sub nsw i32 %4052, %4053
  %4055 = add nsw i32 %4054, 1
  %4056 = sext i32 %4055 to i64
  %4057 = getelementptr inbounds i8, ptr %4051, i64 %4056
  %4058 = load i8, ptr %4057, align 1, !tbaa !16
  %4059 = zext i8 %4058 to i32
  %4060 = sub nsw i32 %4040, %4059
  %4061 = mul nsw i32 %4060, 2
  %4062 = load ptr, ptr %16, align 8, !tbaa !5
  %4063 = load i32, ptr %38, align 4, !tbaa !9
  %4064 = sext i32 %4063 to i64
  %4065 = getelementptr inbounds ptr, ptr %4062, i64 %4064
  %4066 = load ptr, ptr %4065, align 8, !tbaa !5
  %4067 = load i32, ptr %36, align 4, !tbaa !9
  %4068 = load i32, ptr %7, align 4, !tbaa !9
  %4069 = sub nsw i32 %4067, %4068
  %4070 = sext i32 %4069 to i64
  %4071 = getelementptr inbounds ptr, ptr %4066, i64 %4070
  %4072 = load ptr, ptr %4071, align 8, !tbaa !5
  %4073 = load i32, ptr %35, align 4, !tbaa !9
  %4074 = load i32, ptr %7, align 4, !tbaa !9
  %4075 = add nsw i32 %4073, %4074
  %4076 = sext i32 %4075 to i64
  %4077 = getelementptr inbounds i8, ptr %4072, i64 %4076
  %4078 = load i8, ptr %4077, align 1, !tbaa !16
  %4079 = zext i8 %4078 to i32
  %4080 = load ptr, ptr %16, align 8, !tbaa !5
  %4081 = load i32, ptr %38, align 4, !tbaa !9
  %4082 = sext i32 %4081 to i64
  %4083 = getelementptr inbounds ptr, ptr %4080, i64 %4082
  %4084 = load ptr, ptr %4083, align 8, !tbaa !5
  %4085 = load i32, ptr %36, align 4, !tbaa !9
  %4086 = load i32, ptr %7, align 4, !tbaa !9
  %4087 = add nsw i32 %4085, %4086
  %4088 = sext i32 %4087 to i64
  %4089 = getelementptr inbounds ptr, ptr %4084, i64 %4088
  %4090 = load ptr, ptr %4089, align 8, !tbaa !5
  %4091 = load i32, ptr %35, align 4, !tbaa !9
  %4092 = load i32, ptr %7, align 4, !tbaa !9
  %4093 = sub nsw i32 %4091, %4092
  %4094 = sext i32 %4093 to i64
  %4095 = getelementptr inbounds i8, ptr %4090, i64 %4094
  %4096 = load i8, ptr %4095, align 1, !tbaa !16
  %4097 = zext i8 %4096 to i32
  %4098 = sub nsw i32 %4079, %4097
  %4099 = mul nsw i32 %4098, 3
  %4100 = add nsw i32 %4061, %4099
  %4101 = load ptr, ptr %16, align 8, !tbaa !5
  %4102 = load i32, ptr %38, align 4, !tbaa !9
  %4103 = sext i32 %4102 to i64
  %4104 = getelementptr inbounds ptr, ptr %4101, i64 %4103
  %4105 = load ptr, ptr %4104, align 8, !tbaa !5
  %4106 = load i32, ptr %36, align 4, !tbaa !9
  %4107 = load i32, ptr %7, align 4, !tbaa !9
  %4108 = sub nsw i32 %4106, %4107
  %4109 = add nsw i32 %4108, 1
  %4110 = sext i32 %4109 to i64
  %4111 = getelementptr inbounds ptr, ptr %4105, i64 %4110
  %4112 = load ptr, ptr %4111, align 8, !tbaa !5
  %4113 = load i32, ptr %35, align 4, !tbaa !9
  %4114 = load i32, ptr %7, align 4, !tbaa !9
  %4115 = add nsw i32 %4113, %4114
  %4116 = sext i32 %4115 to i64
  %4117 = getelementptr inbounds i8, ptr %4112, i64 %4116
  %4118 = load i8, ptr %4117, align 1, !tbaa !16
  %4119 = zext i8 %4118 to i32
  %4120 = load ptr, ptr %16, align 8, !tbaa !5
  %4121 = load i32, ptr %38, align 4, !tbaa !9
  %4122 = sext i32 %4121 to i64
  %4123 = getelementptr inbounds ptr, ptr %4120, i64 %4122
  %4124 = load ptr, ptr %4123, align 8, !tbaa !5
  %4125 = load i32, ptr %36, align 4, !tbaa !9
  %4126 = load i32, ptr %7, align 4, !tbaa !9
  %4127 = add nsw i32 %4125, %4126
  %4128 = sub nsw i32 %4127, 1
  %4129 = sext i32 %4128 to i64
  %4130 = getelementptr inbounds ptr, ptr %4124, i64 %4129
  %4131 = load ptr, ptr %4130, align 8, !tbaa !5
  %4132 = load i32, ptr %35, align 4, !tbaa !9
  %4133 = load i32, ptr %7, align 4, !tbaa !9
  %4134 = sub nsw i32 %4132, %4133
  %4135 = sext i32 %4134 to i64
  %4136 = getelementptr inbounds i8, ptr %4131, i64 %4135
  %4137 = load i8, ptr %4136, align 1, !tbaa !16
  %4138 = zext i8 %4137 to i32
  %4139 = sub nsw i32 %4119, %4138
  %4140 = mul nsw i32 %4139, 2
  %4141 = add nsw i32 %4100, %4140
  %4142 = icmp sgt i32 %4141, 0
  br i1 %4142, label %4143, label %4264

4143:                                             ; preds = %4021
  %4144 = load ptr, ptr %16, align 8, !tbaa !5
  %4145 = load i32, ptr %38, align 4, !tbaa !9
  %4146 = sext i32 %4145 to i64
  %4147 = getelementptr inbounds ptr, ptr %4144, i64 %4146
  %4148 = load ptr, ptr %4147, align 8, !tbaa !5
  %4149 = load i32, ptr %36, align 4, !tbaa !9
  %4150 = load i32, ptr %7, align 4, !tbaa !9
  %4151 = sub nsw i32 %4149, %4150
  %4152 = sext i32 %4151 to i64
  %4153 = getelementptr inbounds ptr, ptr %4148, i64 %4152
  %4154 = load ptr, ptr %4153, align 8, !tbaa !5
  %4155 = load i32, ptr %35, align 4, !tbaa !9
  %4156 = load i32, ptr %7, align 4, !tbaa !9
  %4157 = add nsw i32 %4155, %4156
  %4158 = sub nsw i32 %4157, 1
  %4159 = sext i32 %4158 to i64
  %4160 = getelementptr inbounds i8, ptr %4154, i64 %4159
  %4161 = load i8, ptr %4160, align 1, !tbaa !16
  %4162 = zext i8 %4161 to i32
  %4163 = load ptr, ptr %16, align 8, !tbaa !5
  %4164 = load i32, ptr %38, align 4, !tbaa !9
  %4165 = sext i32 %4164 to i64
  %4166 = getelementptr inbounds ptr, ptr %4163, i64 %4165
  %4167 = load ptr, ptr %4166, align 8, !tbaa !5
  %4168 = load i32, ptr %36, align 4, !tbaa !9
  %4169 = load i32, ptr %7, align 4, !tbaa !9
  %4170 = add nsw i32 %4168, %4169
  %4171 = sext i32 %4170 to i64
  %4172 = getelementptr inbounds ptr, ptr %4167, i64 %4171
  %4173 = load ptr, ptr %4172, align 8, !tbaa !5
  %4174 = load i32, ptr %35, align 4, !tbaa !9
  %4175 = load i32, ptr %7, align 4, !tbaa !9
  %4176 = sub nsw i32 %4174, %4175
  %4177 = add nsw i32 %4176, 1
  %4178 = sext i32 %4177 to i64
  %4179 = getelementptr inbounds i8, ptr %4173, i64 %4178
  %4180 = load i8, ptr %4179, align 1, !tbaa !16
  %4181 = zext i8 %4180 to i32
  %4182 = sub nsw i32 %4162, %4181
  %4183 = mul nsw i32 %4182, 2
  %4184 = load ptr, ptr %16, align 8, !tbaa !5
  %4185 = load i32, ptr %38, align 4, !tbaa !9
  %4186 = sext i32 %4185 to i64
  %4187 = getelementptr inbounds ptr, ptr %4184, i64 %4186
  %4188 = load ptr, ptr %4187, align 8, !tbaa !5
  %4189 = load i32, ptr %36, align 4, !tbaa !9
  %4190 = load i32, ptr %7, align 4, !tbaa !9
  %4191 = sub nsw i32 %4189, %4190
  %4192 = sext i32 %4191 to i64
  %4193 = getelementptr inbounds ptr, ptr %4188, i64 %4192
  %4194 = load ptr, ptr %4193, align 8, !tbaa !5
  %4195 = load i32, ptr %35, align 4, !tbaa !9
  %4196 = load i32, ptr %7, align 4, !tbaa !9
  %4197 = add nsw i32 %4195, %4196
  %4198 = sext i32 %4197 to i64
  %4199 = getelementptr inbounds i8, ptr %4194, i64 %4198
  %4200 = load i8, ptr %4199, align 1, !tbaa !16
  %4201 = zext i8 %4200 to i32
  %4202 = load ptr, ptr %16, align 8, !tbaa !5
  %4203 = load i32, ptr %38, align 4, !tbaa !9
  %4204 = sext i32 %4203 to i64
  %4205 = getelementptr inbounds ptr, ptr %4202, i64 %4204
  %4206 = load ptr, ptr %4205, align 8, !tbaa !5
  %4207 = load i32, ptr %36, align 4, !tbaa !9
  %4208 = load i32, ptr %7, align 4, !tbaa !9
  %4209 = add nsw i32 %4207, %4208
  %4210 = sext i32 %4209 to i64
  %4211 = getelementptr inbounds ptr, ptr %4206, i64 %4210
  %4212 = load ptr, ptr %4211, align 8, !tbaa !5
  %4213 = load i32, ptr %35, align 4, !tbaa !9
  %4214 = load i32, ptr %7, align 4, !tbaa !9
  %4215 = sub nsw i32 %4213, %4214
  %4216 = sext i32 %4215 to i64
  %4217 = getelementptr inbounds i8, ptr %4212, i64 %4216
  %4218 = load i8, ptr %4217, align 1, !tbaa !16
  %4219 = zext i8 %4218 to i32
  %4220 = sub nsw i32 %4201, %4219
  %4221 = mul nsw i32 %4220, 3
  %4222 = add nsw i32 %4183, %4221
  %4223 = load ptr, ptr %16, align 8, !tbaa !5
  %4224 = load i32, ptr %38, align 4, !tbaa !9
  %4225 = sext i32 %4224 to i64
  %4226 = getelementptr inbounds ptr, ptr %4223, i64 %4225
  %4227 = load ptr, ptr %4226, align 8, !tbaa !5
  %4228 = load i32, ptr %36, align 4, !tbaa !9
  %4229 = load i32, ptr %7, align 4, !tbaa !9
  %4230 = sub nsw i32 %4228, %4229
  %4231 = add nsw i32 %4230, 1
  %4232 = sext i32 %4231 to i64
  %4233 = getelementptr inbounds ptr, ptr %4227, i64 %4232
  %4234 = load ptr, ptr %4233, align 8, !tbaa !5
  %4235 = load i32, ptr %35, align 4, !tbaa !9
  %4236 = load i32, ptr %7, align 4, !tbaa !9
  %4237 = add nsw i32 %4235, %4236
  %4238 = sext i32 %4237 to i64
  %4239 = getelementptr inbounds i8, ptr %4234, i64 %4238
  %4240 = load i8, ptr %4239, align 1, !tbaa !16
  %4241 = zext i8 %4240 to i32
  %4242 = load ptr, ptr %16, align 8, !tbaa !5
  %4243 = load i32, ptr %38, align 4, !tbaa !9
  %4244 = sext i32 %4243 to i64
  %4245 = getelementptr inbounds ptr, ptr %4242, i64 %4244
  %4246 = load ptr, ptr %4245, align 8, !tbaa !5
  %4247 = load i32, ptr %36, align 4, !tbaa !9
  %4248 = load i32, ptr %7, align 4, !tbaa !9
  %4249 = add nsw i32 %4247, %4248
  %4250 = sub nsw i32 %4249, 1
  %4251 = sext i32 %4250 to i64
  %4252 = getelementptr inbounds ptr, ptr %4246, i64 %4251
  %4253 = load ptr, ptr %4252, align 8, !tbaa !5
  %4254 = load i32, ptr %35, align 4, !tbaa !9
  %4255 = load i32, ptr %7, align 4, !tbaa !9
  %4256 = sub nsw i32 %4254, %4255
  %4257 = sext i32 %4256 to i64
  %4258 = getelementptr inbounds i8, ptr %4253, i64 %4257
  %4259 = load i8, ptr %4258, align 1, !tbaa !16
  %4260 = zext i8 %4259 to i32
  %4261 = sub nsw i32 %4241, %4260
  %4262 = mul nsw i32 %4261, 2
  %4263 = add nsw i32 %4222, %4262
  br label %4386

4264:                                             ; preds = %4021
  %4265 = load ptr, ptr %16, align 8, !tbaa !5
  %4266 = load i32, ptr %38, align 4, !tbaa !9
  %4267 = sext i32 %4266 to i64
  %4268 = getelementptr inbounds ptr, ptr %4265, i64 %4267
  %4269 = load ptr, ptr %4268, align 8, !tbaa !5
  %4270 = load i32, ptr %36, align 4, !tbaa !9
  %4271 = load i32, ptr %7, align 4, !tbaa !9
  %4272 = sub nsw i32 %4270, %4271
  %4273 = sext i32 %4272 to i64
  %4274 = getelementptr inbounds ptr, ptr %4269, i64 %4273
  %4275 = load ptr, ptr %4274, align 8, !tbaa !5
  %4276 = load i32, ptr %35, align 4, !tbaa !9
  %4277 = load i32, ptr %7, align 4, !tbaa !9
  %4278 = add nsw i32 %4276, %4277
  %4279 = sub nsw i32 %4278, 1
  %4280 = sext i32 %4279 to i64
  %4281 = getelementptr inbounds i8, ptr %4275, i64 %4280
  %4282 = load i8, ptr %4281, align 1, !tbaa !16
  %4283 = zext i8 %4282 to i32
  %4284 = load ptr, ptr %16, align 8, !tbaa !5
  %4285 = load i32, ptr %38, align 4, !tbaa !9
  %4286 = sext i32 %4285 to i64
  %4287 = getelementptr inbounds ptr, ptr %4284, i64 %4286
  %4288 = load ptr, ptr %4287, align 8, !tbaa !5
  %4289 = load i32, ptr %36, align 4, !tbaa !9
  %4290 = load i32, ptr %7, align 4, !tbaa !9
  %4291 = add nsw i32 %4289, %4290
  %4292 = sext i32 %4291 to i64
  %4293 = getelementptr inbounds ptr, ptr %4288, i64 %4292
  %4294 = load ptr, ptr %4293, align 8, !tbaa !5
  %4295 = load i32, ptr %35, align 4, !tbaa !9
  %4296 = load i32, ptr %7, align 4, !tbaa !9
  %4297 = sub nsw i32 %4295, %4296
  %4298 = add nsw i32 %4297, 1
  %4299 = sext i32 %4298 to i64
  %4300 = getelementptr inbounds i8, ptr %4294, i64 %4299
  %4301 = load i8, ptr %4300, align 1, !tbaa !16
  %4302 = zext i8 %4301 to i32
  %4303 = sub nsw i32 %4283, %4302
  %4304 = mul nsw i32 %4303, 2
  %4305 = load ptr, ptr %16, align 8, !tbaa !5
  %4306 = load i32, ptr %38, align 4, !tbaa !9
  %4307 = sext i32 %4306 to i64
  %4308 = getelementptr inbounds ptr, ptr %4305, i64 %4307
  %4309 = load ptr, ptr %4308, align 8, !tbaa !5
  %4310 = load i32, ptr %36, align 4, !tbaa !9
  %4311 = load i32, ptr %7, align 4, !tbaa !9
  %4312 = sub nsw i32 %4310, %4311
  %4313 = sext i32 %4312 to i64
  %4314 = getelementptr inbounds ptr, ptr %4309, i64 %4313
  %4315 = load ptr, ptr %4314, align 8, !tbaa !5
  %4316 = load i32, ptr %35, align 4, !tbaa !9
  %4317 = load i32, ptr %7, align 4, !tbaa !9
  %4318 = add nsw i32 %4316, %4317
  %4319 = sext i32 %4318 to i64
  %4320 = getelementptr inbounds i8, ptr %4315, i64 %4319
  %4321 = load i8, ptr %4320, align 1, !tbaa !16
  %4322 = zext i8 %4321 to i32
  %4323 = load ptr, ptr %16, align 8, !tbaa !5
  %4324 = load i32, ptr %38, align 4, !tbaa !9
  %4325 = sext i32 %4324 to i64
  %4326 = getelementptr inbounds ptr, ptr %4323, i64 %4325
  %4327 = load ptr, ptr %4326, align 8, !tbaa !5
  %4328 = load i32, ptr %36, align 4, !tbaa !9
  %4329 = load i32, ptr %7, align 4, !tbaa !9
  %4330 = add nsw i32 %4328, %4329
  %4331 = sext i32 %4330 to i64
  %4332 = getelementptr inbounds ptr, ptr %4327, i64 %4331
  %4333 = load ptr, ptr %4332, align 8, !tbaa !5
  %4334 = load i32, ptr %35, align 4, !tbaa !9
  %4335 = load i32, ptr %7, align 4, !tbaa !9
  %4336 = sub nsw i32 %4334, %4335
  %4337 = sext i32 %4336 to i64
  %4338 = getelementptr inbounds i8, ptr %4333, i64 %4337
  %4339 = load i8, ptr %4338, align 1, !tbaa !16
  %4340 = zext i8 %4339 to i32
  %4341 = sub nsw i32 %4322, %4340
  %4342 = mul nsw i32 %4341, 3
  %4343 = add nsw i32 %4304, %4342
  %4344 = load ptr, ptr %16, align 8, !tbaa !5
  %4345 = load i32, ptr %38, align 4, !tbaa !9
  %4346 = sext i32 %4345 to i64
  %4347 = getelementptr inbounds ptr, ptr %4344, i64 %4346
  %4348 = load ptr, ptr %4347, align 8, !tbaa !5
  %4349 = load i32, ptr %36, align 4, !tbaa !9
  %4350 = load i32, ptr %7, align 4, !tbaa !9
  %4351 = sub nsw i32 %4349, %4350
  %4352 = add nsw i32 %4351, 1
  %4353 = sext i32 %4352 to i64
  %4354 = getelementptr inbounds ptr, ptr %4348, i64 %4353
  %4355 = load ptr, ptr %4354, align 8, !tbaa !5
  %4356 = load i32, ptr %35, align 4, !tbaa !9
  %4357 = load i32, ptr %7, align 4, !tbaa !9
  %4358 = add nsw i32 %4356, %4357
  %4359 = sext i32 %4358 to i64
  %4360 = getelementptr inbounds i8, ptr %4355, i64 %4359
  %4361 = load i8, ptr %4360, align 1, !tbaa !16
  %4362 = zext i8 %4361 to i32
  %4363 = load ptr, ptr %16, align 8, !tbaa !5
  %4364 = load i32, ptr %38, align 4, !tbaa !9
  %4365 = sext i32 %4364 to i64
  %4366 = getelementptr inbounds ptr, ptr %4363, i64 %4365
  %4367 = load ptr, ptr %4366, align 8, !tbaa !5
  %4368 = load i32, ptr %36, align 4, !tbaa !9
  %4369 = load i32, ptr %7, align 4, !tbaa !9
  %4370 = add nsw i32 %4368, %4369
  %4371 = sub nsw i32 %4370, 1
  %4372 = sext i32 %4371 to i64
  %4373 = getelementptr inbounds ptr, ptr %4367, i64 %4372
  %4374 = load ptr, ptr %4373, align 8, !tbaa !5
  %4375 = load i32, ptr %35, align 4, !tbaa !9
  %4376 = load i32, ptr %7, align 4, !tbaa !9
  %4377 = sub nsw i32 %4375, %4376
  %4378 = sext i32 %4377 to i64
  %4379 = getelementptr inbounds i8, ptr %4374, i64 %4378
  %4380 = load i8, ptr %4379, align 1, !tbaa !16
  %4381 = zext i8 %4380 to i32
  %4382 = sub nsw i32 %4362, %4381
  %4383 = mul nsw i32 %4382, 2
  %4384 = add nsw i32 %4343, %4383
  %4385 = sub nsw i32 0, %4384
  br label %4386

4386:                                             ; preds = %4264, %4143
  %4387 = phi i32 [ %4263, %4143 ], [ %4385, %4264 ]
  store i32 %4387, ptr %37, align 4, !tbaa !9
  %4388 = load i32, ptr %37, align 4, !tbaa !9
  %4389 = load i8, ptr %39, align 1, !tbaa !16
  %4390 = zext i8 %4389 to i64
  %4391 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %4390
  %4392 = load i8, ptr %4391, align 1, !tbaa !16
  %4393 = zext i8 %4392 to i32
  %4394 = icmp sgt i32 %4388, %4393
  br i1 %4394, label %4395, label %4407

4395:                                             ; preds = %4386
  %4396 = load ptr, ptr %6, align 8, !tbaa !5
  %4397 = getelementptr inbounds %struct.MImage, ptr %4396, i32 0, i32 3
  %4398 = getelementptr inbounds [4 x ptr], ptr %4397, i64 0, i64 0
  %4399 = load ptr, ptr %4398, align 8, !tbaa !5
  %4400 = load i32, ptr %36, align 4, !tbaa !9
  %4401 = sext i32 %4400 to i64
  %4402 = getelementptr inbounds ptr, ptr %4399, i64 %4401
  %4403 = load ptr, ptr %4402, align 8, !tbaa !5
  %4404 = load i32, ptr %35, align 4, !tbaa !9
  %4405 = sext i32 %4404 to i64
  %4406 = getelementptr inbounds i8, ptr %4403, i64 %4405
  store i8 -1, ptr %4406, align 1, !tbaa !16
  store i32 43, ptr %25, align 4
  br label %5144

4407:                                             ; preds = %4386
  %4408 = load ptr, ptr %16, align 8, !tbaa !5
  %4409 = load i32, ptr %38, align 4, !tbaa !9
  %4410 = sext i32 %4409 to i64
  %4411 = getelementptr inbounds ptr, ptr %4408, i64 %4410
  %4412 = load ptr, ptr %4411, align 8, !tbaa !5
  %4413 = load i32, ptr %36, align 4, !tbaa !9
  %4414 = sub nsw i32 %4413, 1
  %4415 = sext i32 %4414 to i64
  %4416 = getelementptr inbounds ptr, ptr %4412, i64 %4415
  %4417 = load ptr, ptr %4416, align 8, !tbaa !5
  %4418 = load i32, ptr %35, align 4, !tbaa !9
  %4419 = load i32, ptr %7, align 4, !tbaa !9
  %4420 = sub nsw i32 %4418, %4419
  %4421 = sext i32 %4420 to i64
  %4422 = getelementptr inbounds i8, ptr %4417, i64 %4421
  %4423 = load i8, ptr %4422, align 1, !tbaa !16
  %4424 = zext i8 %4423 to i32
  %4425 = load ptr, ptr %16, align 8, !tbaa !5
  %4426 = load i32, ptr %38, align 4, !tbaa !9
  %4427 = sext i32 %4426 to i64
  %4428 = getelementptr inbounds ptr, ptr %4425, i64 %4427
  %4429 = load ptr, ptr %4428, align 8, !tbaa !5
  %4430 = load i32, ptr %36, align 4, !tbaa !9
  %4431 = sub nsw i32 %4430, 1
  %4432 = sext i32 %4431 to i64
  %4433 = getelementptr inbounds ptr, ptr %4429, i64 %4432
  %4434 = load ptr, ptr %4433, align 8, !tbaa !5
  %4435 = load i32, ptr %35, align 4, !tbaa !9
  %4436 = load i32, ptr %7, align 4, !tbaa !9
  %4437 = add nsw i32 %4435, %4436
  %4438 = sext i32 %4437 to i64
  %4439 = getelementptr inbounds i8, ptr %4434, i64 %4438
  %4440 = load i8, ptr %4439, align 1, !tbaa !16
  %4441 = zext i8 %4440 to i32
  %4442 = sub nsw i32 %4424, %4441
  %4443 = mul nsw i32 %4442, 2
  %4444 = load ptr, ptr %16, align 8, !tbaa !5
  %4445 = load i32, ptr %38, align 4, !tbaa !9
  %4446 = sext i32 %4445 to i64
  %4447 = getelementptr inbounds ptr, ptr %4444, i64 %4446
  %4448 = load ptr, ptr %4447, align 8, !tbaa !5
  %4449 = load i32, ptr %36, align 4, !tbaa !9
  %4450 = sext i32 %4449 to i64
  %4451 = getelementptr inbounds ptr, ptr %4448, i64 %4450
  %4452 = load ptr, ptr %4451, align 8, !tbaa !5
  %4453 = load i32, ptr %35, align 4, !tbaa !9
  %4454 = load i32, ptr %7, align 4, !tbaa !9
  %4455 = sub nsw i32 %4453, %4454
  %4456 = sext i32 %4455 to i64
  %4457 = getelementptr inbounds i8, ptr %4452, i64 %4456
  %4458 = load i8, ptr %4457, align 1, !tbaa !16
  %4459 = zext i8 %4458 to i32
  %4460 = load ptr, ptr %16, align 8, !tbaa !5
  %4461 = load i32, ptr %38, align 4, !tbaa !9
  %4462 = sext i32 %4461 to i64
  %4463 = getelementptr inbounds ptr, ptr %4460, i64 %4462
  %4464 = load ptr, ptr %4463, align 8, !tbaa !5
  %4465 = load i32, ptr %36, align 4, !tbaa !9
  %4466 = sext i32 %4465 to i64
  %4467 = getelementptr inbounds ptr, ptr %4464, i64 %4466
  %4468 = load ptr, ptr %4467, align 8, !tbaa !5
  %4469 = load i32, ptr %35, align 4, !tbaa !9
  %4470 = load i32, ptr %7, align 4, !tbaa !9
  %4471 = add nsw i32 %4469, %4470
  %4472 = sext i32 %4471 to i64
  %4473 = getelementptr inbounds i8, ptr %4468, i64 %4472
  %4474 = load i8, ptr %4473, align 1, !tbaa !16
  %4475 = zext i8 %4474 to i32
  %4476 = sub nsw i32 %4459, %4475
  %4477 = mul nsw i32 %4476, 3
  %4478 = add nsw i32 %4443, %4477
  %4479 = load ptr, ptr %16, align 8, !tbaa !5
  %4480 = load i32, ptr %38, align 4, !tbaa !9
  %4481 = sext i32 %4480 to i64
  %4482 = getelementptr inbounds ptr, ptr %4479, i64 %4481
  %4483 = load ptr, ptr %4482, align 8, !tbaa !5
  %4484 = load i32, ptr %36, align 4, !tbaa !9
  %4485 = add nsw i32 %4484, 1
  %4486 = sext i32 %4485 to i64
  %4487 = getelementptr inbounds ptr, ptr %4483, i64 %4486
  %4488 = load ptr, ptr %4487, align 8, !tbaa !5
  %4489 = load i32, ptr %35, align 4, !tbaa !9
  %4490 = load i32, ptr %7, align 4, !tbaa !9
  %4491 = sub nsw i32 %4489, %4490
  %4492 = sext i32 %4491 to i64
  %4493 = getelementptr inbounds i8, ptr %4488, i64 %4492
  %4494 = load i8, ptr %4493, align 1, !tbaa !16
  %4495 = zext i8 %4494 to i32
  %4496 = load ptr, ptr %16, align 8, !tbaa !5
  %4497 = load i32, ptr %38, align 4, !tbaa !9
  %4498 = sext i32 %4497 to i64
  %4499 = getelementptr inbounds ptr, ptr %4496, i64 %4498
  %4500 = load ptr, ptr %4499, align 8, !tbaa !5
  %4501 = load i32, ptr %36, align 4, !tbaa !9
  %4502 = add nsw i32 %4501, 1
  %4503 = sext i32 %4502 to i64
  %4504 = getelementptr inbounds ptr, ptr %4500, i64 %4503
  %4505 = load ptr, ptr %4504, align 8, !tbaa !5
  %4506 = load i32, ptr %35, align 4, !tbaa !9
  %4507 = load i32, ptr %7, align 4, !tbaa !9
  %4508 = add nsw i32 %4506, %4507
  %4509 = sext i32 %4508 to i64
  %4510 = getelementptr inbounds i8, ptr %4505, i64 %4509
  %4511 = load i8, ptr %4510, align 1, !tbaa !16
  %4512 = zext i8 %4511 to i32
  %4513 = sub nsw i32 %4495, %4512
  %4514 = mul nsw i32 %4513, 2
  %4515 = add nsw i32 %4478, %4514
  %4516 = icmp sgt i32 %4515, 0
  br i1 %4516, label %4517, label %4626

4517:                                             ; preds = %4407
  %4518 = load ptr, ptr %16, align 8, !tbaa !5
  %4519 = load i32, ptr %38, align 4, !tbaa !9
  %4520 = sext i32 %4519 to i64
  %4521 = getelementptr inbounds ptr, ptr %4518, i64 %4520
  %4522 = load ptr, ptr %4521, align 8, !tbaa !5
  %4523 = load i32, ptr %36, align 4, !tbaa !9
  %4524 = sub nsw i32 %4523, 1
  %4525 = sext i32 %4524 to i64
  %4526 = getelementptr inbounds ptr, ptr %4522, i64 %4525
  %4527 = load ptr, ptr %4526, align 8, !tbaa !5
  %4528 = load i32, ptr %35, align 4, !tbaa !9
  %4529 = load i32, ptr %7, align 4, !tbaa !9
  %4530 = sub nsw i32 %4528, %4529
  %4531 = sext i32 %4530 to i64
  %4532 = getelementptr inbounds i8, ptr %4527, i64 %4531
  %4533 = load i8, ptr %4532, align 1, !tbaa !16
  %4534 = zext i8 %4533 to i32
  %4535 = load ptr, ptr %16, align 8, !tbaa !5
  %4536 = load i32, ptr %38, align 4, !tbaa !9
  %4537 = sext i32 %4536 to i64
  %4538 = getelementptr inbounds ptr, ptr %4535, i64 %4537
  %4539 = load ptr, ptr %4538, align 8, !tbaa !5
  %4540 = load i32, ptr %36, align 4, !tbaa !9
  %4541 = sub nsw i32 %4540, 1
  %4542 = sext i32 %4541 to i64
  %4543 = getelementptr inbounds ptr, ptr %4539, i64 %4542
  %4544 = load ptr, ptr %4543, align 8, !tbaa !5
  %4545 = load i32, ptr %35, align 4, !tbaa !9
  %4546 = load i32, ptr %7, align 4, !tbaa !9
  %4547 = add nsw i32 %4545, %4546
  %4548 = sext i32 %4547 to i64
  %4549 = getelementptr inbounds i8, ptr %4544, i64 %4548
  %4550 = load i8, ptr %4549, align 1, !tbaa !16
  %4551 = zext i8 %4550 to i32
  %4552 = sub nsw i32 %4534, %4551
  %4553 = mul nsw i32 %4552, 2
  %4554 = load ptr, ptr %16, align 8, !tbaa !5
  %4555 = load i32, ptr %38, align 4, !tbaa !9
  %4556 = sext i32 %4555 to i64
  %4557 = getelementptr inbounds ptr, ptr %4554, i64 %4556
  %4558 = load ptr, ptr %4557, align 8, !tbaa !5
  %4559 = load i32, ptr %36, align 4, !tbaa !9
  %4560 = sext i32 %4559 to i64
  %4561 = getelementptr inbounds ptr, ptr %4558, i64 %4560
  %4562 = load ptr, ptr %4561, align 8, !tbaa !5
  %4563 = load i32, ptr %35, align 4, !tbaa !9
  %4564 = load i32, ptr %7, align 4, !tbaa !9
  %4565 = sub nsw i32 %4563, %4564
  %4566 = sext i32 %4565 to i64
  %4567 = getelementptr inbounds i8, ptr %4562, i64 %4566
  %4568 = load i8, ptr %4567, align 1, !tbaa !16
  %4569 = zext i8 %4568 to i32
  %4570 = load ptr, ptr %16, align 8, !tbaa !5
  %4571 = load i32, ptr %38, align 4, !tbaa !9
  %4572 = sext i32 %4571 to i64
  %4573 = getelementptr inbounds ptr, ptr %4570, i64 %4572
  %4574 = load ptr, ptr %4573, align 8, !tbaa !5
  %4575 = load i32, ptr %36, align 4, !tbaa !9
  %4576 = sext i32 %4575 to i64
  %4577 = getelementptr inbounds ptr, ptr %4574, i64 %4576
  %4578 = load ptr, ptr %4577, align 8, !tbaa !5
  %4579 = load i32, ptr %35, align 4, !tbaa !9
  %4580 = load i32, ptr %7, align 4, !tbaa !9
  %4581 = add nsw i32 %4579, %4580
  %4582 = sext i32 %4581 to i64
  %4583 = getelementptr inbounds i8, ptr %4578, i64 %4582
  %4584 = load i8, ptr %4583, align 1, !tbaa !16
  %4585 = zext i8 %4584 to i32
  %4586 = sub nsw i32 %4569, %4585
  %4587 = mul nsw i32 %4586, 3
  %4588 = add nsw i32 %4553, %4587
  %4589 = load ptr, ptr %16, align 8, !tbaa !5
  %4590 = load i32, ptr %38, align 4, !tbaa !9
  %4591 = sext i32 %4590 to i64
  %4592 = getelementptr inbounds ptr, ptr %4589, i64 %4591
  %4593 = load ptr, ptr %4592, align 8, !tbaa !5
  %4594 = load i32, ptr %36, align 4, !tbaa !9
  %4595 = add nsw i32 %4594, 1
  %4596 = sext i32 %4595 to i64
  %4597 = getelementptr inbounds ptr, ptr %4593, i64 %4596
  %4598 = load ptr, ptr %4597, align 8, !tbaa !5
  %4599 = load i32, ptr %35, align 4, !tbaa !9
  %4600 = load i32, ptr %7, align 4, !tbaa !9
  %4601 = sub nsw i32 %4599, %4600
  %4602 = sext i32 %4601 to i64
  %4603 = getelementptr inbounds i8, ptr %4598, i64 %4602
  %4604 = load i8, ptr %4603, align 1, !tbaa !16
  %4605 = zext i8 %4604 to i32
  %4606 = load ptr, ptr %16, align 8, !tbaa !5
  %4607 = load i32, ptr %38, align 4, !tbaa !9
  %4608 = sext i32 %4607 to i64
  %4609 = getelementptr inbounds ptr, ptr %4606, i64 %4608
  %4610 = load ptr, ptr %4609, align 8, !tbaa !5
  %4611 = load i32, ptr %36, align 4, !tbaa !9
  %4612 = add nsw i32 %4611, 1
  %4613 = sext i32 %4612 to i64
  %4614 = getelementptr inbounds ptr, ptr %4610, i64 %4613
  %4615 = load ptr, ptr %4614, align 8, !tbaa !5
  %4616 = load i32, ptr %35, align 4, !tbaa !9
  %4617 = load i32, ptr %7, align 4, !tbaa !9
  %4618 = add nsw i32 %4616, %4617
  %4619 = sext i32 %4618 to i64
  %4620 = getelementptr inbounds i8, ptr %4615, i64 %4619
  %4621 = load i8, ptr %4620, align 1, !tbaa !16
  %4622 = zext i8 %4621 to i32
  %4623 = sub nsw i32 %4605, %4622
  %4624 = mul nsw i32 %4623, 2
  %4625 = add nsw i32 %4588, %4624
  br label %4736

4626:                                             ; preds = %4407
  %4627 = load ptr, ptr %16, align 8, !tbaa !5
  %4628 = load i32, ptr %38, align 4, !tbaa !9
  %4629 = sext i32 %4628 to i64
  %4630 = getelementptr inbounds ptr, ptr %4627, i64 %4629
  %4631 = load ptr, ptr %4630, align 8, !tbaa !5
  %4632 = load i32, ptr %36, align 4, !tbaa !9
  %4633 = sub nsw i32 %4632, 1
  %4634 = sext i32 %4633 to i64
  %4635 = getelementptr inbounds ptr, ptr %4631, i64 %4634
  %4636 = load ptr, ptr %4635, align 8, !tbaa !5
  %4637 = load i32, ptr %35, align 4, !tbaa !9
  %4638 = load i32, ptr %7, align 4, !tbaa !9
  %4639 = sub nsw i32 %4637, %4638
  %4640 = sext i32 %4639 to i64
  %4641 = getelementptr inbounds i8, ptr %4636, i64 %4640
  %4642 = load i8, ptr %4641, align 1, !tbaa !16
  %4643 = zext i8 %4642 to i32
  %4644 = load ptr, ptr %16, align 8, !tbaa !5
  %4645 = load i32, ptr %38, align 4, !tbaa !9
  %4646 = sext i32 %4645 to i64
  %4647 = getelementptr inbounds ptr, ptr %4644, i64 %4646
  %4648 = load ptr, ptr %4647, align 8, !tbaa !5
  %4649 = load i32, ptr %36, align 4, !tbaa !9
  %4650 = sub nsw i32 %4649, 1
  %4651 = sext i32 %4650 to i64
  %4652 = getelementptr inbounds ptr, ptr %4648, i64 %4651
  %4653 = load ptr, ptr %4652, align 8, !tbaa !5
  %4654 = load i32, ptr %35, align 4, !tbaa !9
  %4655 = load i32, ptr %7, align 4, !tbaa !9
  %4656 = add nsw i32 %4654, %4655
  %4657 = sext i32 %4656 to i64
  %4658 = getelementptr inbounds i8, ptr %4653, i64 %4657
  %4659 = load i8, ptr %4658, align 1, !tbaa !16
  %4660 = zext i8 %4659 to i32
  %4661 = sub nsw i32 %4643, %4660
  %4662 = mul nsw i32 %4661, 2
  %4663 = load ptr, ptr %16, align 8, !tbaa !5
  %4664 = load i32, ptr %38, align 4, !tbaa !9
  %4665 = sext i32 %4664 to i64
  %4666 = getelementptr inbounds ptr, ptr %4663, i64 %4665
  %4667 = load ptr, ptr %4666, align 8, !tbaa !5
  %4668 = load i32, ptr %36, align 4, !tbaa !9
  %4669 = sext i32 %4668 to i64
  %4670 = getelementptr inbounds ptr, ptr %4667, i64 %4669
  %4671 = load ptr, ptr %4670, align 8, !tbaa !5
  %4672 = load i32, ptr %35, align 4, !tbaa !9
  %4673 = load i32, ptr %7, align 4, !tbaa !9
  %4674 = sub nsw i32 %4672, %4673
  %4675 = sext i32 %4674 to i64
  %4676 = getelementptr inbounds i8, ptr %4671, i64 %4675
  %4677 = load i8, ptr %4676, align 1, !tbaa !16
  %4678 = zext i8 %4677 to i32
  %4679 = load ptr, ptr %16, align 8, !tbaa !5
  %4680 = load i32, ptr %38, align 4, !tbaa !9
  %4681 = sext i32 %4680 to i64
  %4682 = getelementptr inbounds ptr, ptr %4679, i64 %4681
  %4683 = load ptr, ptr %4682, align 8, !tbaa !5
  %4684 = load i32, ptr %36, align 4, !tbaa !9
  %4685 = sext i32 %4684 to i64
  %4686 = getelementptr inbounds ptr, ptr %4683, i64 %4685
  %4687 = load ptr, ptr %4686, align 8, !tbaa !5
  %4688 = load i32, ptr %35, align 4, !tbaa !9
  %4689 = load i32, ptr %7, align 4, !tbaa !9
  %4690 = add nsw i32 %4688, %4689
  %4691 = sext i32 %4690 to i64
  %4692 = getelementptr inbounds i8, ptr %4687, i64 %4691
  %4693 = load i8, ptr %4692, align 1, !tbaa !16
  %4694 = zext i8 %4693 to i32
  %4695 = sub nsw i32 %4678, %4694
  %4696 = mul nsw i32 %4695, 3
  %4697 = add nsw i32 %4662, %4696
  %4698 = load ptr, ptr %16, align 8, !tbaa !5
  %4699 = load i32, ptr %38, align 4, !tbaa !9
  %4700 = sext i32 %4699 to i64
  %4701 = getelementptr inbounds ptr, ptr %4698, i64 %4700
  %4702 = load ptr, ptr %4701, align 8, !tbaa !5
  %4703 = load i32, ptr %36, align 4, !tbaa !9
  %4704 = add nsw i32 %4703, 1
  %4705 = sext i32 %4704 to i64
  %4706 = getelementptr inbounds ptr, ptr %4702, i64 %4705
  %4707 = load ptr, ptr %4706, align 8, !tbaa !5
  %4708 = load i32, ptr %35, align 4, !tbaa !9
  %4709 = load i32, ptr %7, align 4, !tbaa !9
  %4710 = sub nsw i32 %4708, %4709
  %4711 = sext i32 %4710 to i64
  %4712 = getelementptr inbounds i8, ptr %4707, i64 %4711
  %4713 = load i8, ptr %4712, align 1, !tbaa !16
  %4714 = zext i8 %4713 to i32
  %4715 = load ptr, ptr %16, align 8, !tbaa !5
  %4716 = load i32, ptr %38, align 4, !tbaa !9
  %4717 = sext i32 %4716 to i64
  %4718 = getelementptr inbounds ptr, ptr %4715, i64 %4717
  %4719 = load ptr, ptr %4718, align 8, !tbaa !5
  %4720 = load i32, ptr %36, align 4, !tbaa !9
  %4721 = add nsw i32 %4720, 1
  %4722 = sext i32 %4721 to i64
  %4723 = getelementptr inbounds ptr, ptr %4719, i64 %4722
  %4724 = load ptr, ptr %4723, align 8, !tbaa !5
  %4725 = load i32, ptr %35, align 4, !tbaa !9
  %4726 = load i32, ptr %7, align 4, !tbaa !9
  %4727 = add nsw i32 %4725, %4726
  %4728 = sext i32 %4727 to i64
  %4729 = getelementptr inbounds i8, ptr %4724, i64 %4728
  %4730 = load i8, ptr %4729, align 1, !tbaa !16
  %4731 = zext i8 %4730 to i32
  %4732 = sub nsw i32 %4714, %4731
  %4733 = mul nsw i32 %4732, 2
  %4734 = add nsw i32 %4697, %4733
  %4735 = sub nsw i32 0, %4734
  br label %4736

4736:                                             ; preds = %4626, %4517
  %4737 = phi i32 [ %4625, %4517 ], [ %4735, %4626 ]
  store i32 %4737, ptr %37, align 4, !tbaa !9
  %4738 = load i32, ptr %37, align 4, !tbaa !9
  %4739 = load i8, ptr %39, align 1, !tbaa !16
  %4740 = zext i8 %4739 to i64
  %4741 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %4740
  %4742 = load i8, ptr %4741, align 1, !tbaa !16
  %4743 = zext i8 %4742 to i32
  %4744 = icmp sgt i32 %4738, %4743
  br i1 %4744, label %4745, label %4757

4745:                                             ; preds = %4736
  %4746 = load ptr, ptr %6, align 8, !tbaa !5
  %4747 = getelementptr inbounds %struct.MImage, ptr %4746, i32 0, i32 3
  %4748 = getelementptr inbounds [4 x ptr], ptr %4747, i64 0, i64 0
  %4749 = load ptr, ptr %4748, align 8, !tbaa !5
  %4750 = load i32, ptr %36, align 4, !tbaa !9
  %4751 = sext i32 %4750 to i64
  %4752 = getelementptr inbounds ptr, ptr %4749, i64 %4751
  %4753 = load ptr, ptr %4752, align 8, !tbaa !5
  %4754 = load i32, ptr %35, align 4, !tbaa !9
  %4755 = sext i32 %4754 to i64
  %4756 = getelementptr inbounds i8, ptr %4753, i64 %4755
  store i8 -1, ptr %4756, align 1, !tbaa !16
  store i32 43, ptr %25, align 4
  br label %5144

4757:                                             ; preds = %4736
  %4758 = load ptr, ptr %16, align 8, !tbaa !5
  %4759 = load i32, ptr %38, align 4, !tbaa !9
  %4760 = sext i32 %4759 to i64
  %4761 = getelementptr inbounds ptr, ptr %4758, i64 %4760
  %4762 = load ptr, ptr %4761, align 8, !tbaa !5
  %4763 = load i32, ptr %36, align 4, !tbaa !9
  %4764 = load i32, ptr %7, align 4, !tbaa !9
  %4765 = sub nsw i32 %4763, %4764
  %4766 = sext i32 %4765 to i64
  %4767 = getelementptr inbounds ptr, ptr %4762, i64 %4766
  %4768 = load ptr, ptr %4767, align 8, !tbaa !5
  %4769 = load i32, ptr %35, align 4, !tbaa !9
  %4770 = load i32, ptr %7, align 4, !tbaa !9
  %4771 = sub nsw i32 %4769, %4770
  %4772 = add nsw i32 %4771, 1
  %4773 = sext i32 %4772 to i64
  %4774 = getelementptr inbounds i8, ptr %4768, i64 %4773
  %4775 = load i8, ptr %4774, align 1, !tbaa !16
  %4776 = zext i8 %4775 to i32
  %4777 = load ptr, ptr %16, align 8, !tbaa !5
  %4778 = load i32, ptr %38, align 4, !tbaa !9
  %4779 = sext i32 %4778 to i64
  %4780 = getelementptr inbounds ptr, ptr %4777, i64 %4779
  %4781 = load ptr, ptr %4780, align 8, !tbaa !5
  %4782 = load i32, ptr %36, align 4, !tbaa !9
  %4783 = load i32, ptr %7, align 4, !tbaa !9
  %4784 = add nsw i32 %4782, %4783
  %4785 = sext i32 %4784 to i64
  %4786 = getelementptr inbounds ptr, ptr %4781, i64 %4785
  %4787 = load ptr, ptr %4786, align 8, !tbaa !5
  %4788 = load i32, ptr %35, align 4, !tbaa !9
  %4789 = load i32, ptr %7, align 4, !tbaa !9
  %4790 = add nsw i32 %4788, %4789
  %4791 = sub nsw i32 %4790, 1
  %4792 = sext i32 %4791 to i64
  %4793 = getelementptr inbounds i8, ptr %4787, i64 %4792
  %4794 = load i8, ptr %4793, align 1, !tbaa !16
  %4795 = zext i8 %4794 to i32
  %4796 = sub nsw i32 %4776, %4795
  %4797 = mul nsw i32 %4796, 2
  %4798 = load ptr, ptr %16, align 8, !tbaa !5
  %4799 = load i32, ptr %38, align 4, !tbaa !9
  %4800 = sext i32 %4799 to i64
  %4801 = getelementptr inbounds ptr, ptr %4798, i64 %4800
  %4802 = load ptr, ptr %4801, align 8, !tbaa !5
  %4803 = load i32, ptr %36, align 4, !tbaa !9
  %4804 = load i32, ptr %7, align 4, !tbaa !9
  %4805 = sub nsw i32 %4803, %4804
  %4806 = sext i32 %4805 to i64
  %4807 = getelementptr inbounds ptr, ptr %4802, i64 %4806
  %4808 = load ptr, ptr %4807, align 8, !tbaa !5
  %4809 = load i32, ptr %35, align 4, !tbaa !9
  %4810 = load i32, ptr %7, align 4, !tbaa !9
  %4811 = sub nsw i32 %4809, %4810
  %4812 = sext i32 %4811 to i64
  %4813 = getelementptr inbounds i8, ptr %4808, i64 %4812
  %4814 = load i8, ptr %4813, align 1, !tbaa !16
  %4815 = zext i8 %4814 to i32
  %4816 = load ptr, ptr %16, align 8, !tbaa !5
  %4817 = load i32, ptr %38, align 4, !tbaa !9
  %4818 = sext i32 %4817 to i64
  %4819 = getelementptr inbounds ptr, ptr %4816, i64 %4818
  %4820 = load ptr, ptr %4819, align 8, !tbaa !5
  %4821 = load i32, ptr %36, align 4, !tbaa !9
  %4822 = load i32, ptr %7, align 4, !tbaa !9
  %4823 = add nsw i32 %4821, %4822
  %4824 = sext i32 %4823 to i64
  %4825 = getelementptr inbounds ptr, ptr %4820, i64 %4824
  %4826 = load ptr, ptr %4825, align 8, !tbaa !5
  %4827 = load i32, ptr %35, align 4, !tbaa !9
  %4828 = load i32, ptr %7, align 4, !tbaa !9
  %4829 = add nsw i32 %4827, %4828
  %4830 = sext i32 %4829 to i64
  %4831 = getelementptr inbounds i8, ptr %4826, i64 %4830
  %4832 = load i8, ptr %4831, align 1, !tbaa !16
  %4833 = zext i8 %4832 to i32
  %4834 = sub nsw i32 %4815, %4833
  %4835 = mul nsw i32 %4834, 3
  %4836 = add nsw i32 %4797, %4835
  %4837 = load ptr, ptr %16, align 8, !tbaa !5
  %4838 = load i32, ptr %38, align 4, !tbaa !9
  %4839 = sext i32 %4838 to i64
  %4840 = getelementptr inbounds ptr, ptr %4837, i64 %4839
  %4841 = load ptr, ptr %4840, align 8, !tbaa !5
  %4842 = load i32, ptr %36, align 4, !tbaa !9
  %4843 = load i32, ptr %7, align 4, !tbaa !9
  %4844 = sub nsw i32 %4842, %4843
  %4845 = add nsw i32 %4844, 1
  %4846 = sext i32 %4845 to i64
  %4847 = getelementptr inbounds ptr, ptr %4841, i64 %4846
  %4848 = load ptr, ptr %4847, align 8, !tbaa !5
  %4849 = load i32, ptr %35, align 4, !tbaa !9
  %4850 = load i32, ptr %7, align 4, !tbaa !9
  %4851 = sub nsw i32 %4849, %4850
  %4852 = sext i32 %4851 to i64
  %4853 = getelementptr inbounds i8, ptr %4848, i64 %4852
  %4854 = load i8, ptr %4853, align 1, !tbaa !16
  %4855 = zext i8 %4854 to i32
  %4856 = load ptr, ptr %16, align 8, !tbaa !5
  %4857 = load i32, ptr %38, align 4, !tbaa !9
  %4858 = sext i32 %4857 to i64
  %4859 = getelementptr inbounds ptr, ptr %4856, i64 %4858
  %4860 = load ptr, ptr %4859, align 8, !tbaa !5
  %4861 = load i32, ptr %36, align 4, !tbaa !9
  %4862 = load i32, ptr %7, align 4, !tbaa !9
  %4863 = add nsw i32 %4861, %4862
  %4864 = sub nsw i32 %4863, 1
  %4865 = sext i32 %4864 to i64
  %4866 = getelementptr inbounds ptr, ptr %4860, i64 %4865
  %4867 = load ptr, ptr %4866, align 8, !tbaa !5
  %4868 = load i32, ptr %35, align 4, !tbaa !9
  %4869 = load i32, ptr %7, align 4, !tbaa !9
  %4870 = add nsw i32 %4868, %4869
  %4871 = sext i32 %4870 to i64
  %4872 = getelementptr inbounds i8, ptr %4867, i64 %4871
  %4873 = load i8, ptr %4872, align 1, !tbaa !16
  %4874 = zext i8 %4873 to i32
  %4875 = sub nsw i32 %4855, %4874
  %4876 = mul nsw i32 %4875, 2
  %4877 = add nsw i32 %4836, %4876
  %4878 = icmp sgt i32 %4877, 0
  br i1 %4878, label %4879, label %5000

4879:                                             ; preds = %4757
  %4880 = load ptr, ptr %16, align 8, !tbaa !5
  %4881 = load i32, ptr %38, align 4, !tbaa !9
  %4882 = sext i32 %4881 to i64
  %4883 = getelementptr inbounds ptr, ptr %4880, i64 %4882
  %4884 = load ptr, ptr %4883, align 8, !tbaa !5
  %4885 = load i32, ptr %36, align 4, !tbaa !9
  %4886 = load i32, ptr %7, align 4, !tbaa !9
  %4887 = sub nsw i32 %4885, %4886
  %4888 = sext i32 %4887 to i64
  %4889 = getelementptr inbounds ptr, ptr %4884, i64 %4888
  %4890 = load ptr, ptr %4889, align 8, !tbaa !5
  %4891 = load i32, ptr %35, align 4, !tbaa !9
  %4892 = load i32, ptr %7, align 4, !tbaa !9
  %4893 = sub nsw i32 %4891, %4892
  %4894 = add nsw i32 %4893, 1
  %4895 = sext i32 %4894 to i64
  %4896 = getelementptr inbounds i8, ptr %4890, i64 %4895
  %4897 = load i8, ptr %4896, align 1, !tbaa !16
  %4898 = zext i8 %4897 to i32
  %4899 = load ptr, ptr %16, align 8, !tbaa !5
  %4900 = load i32, ptr %38, align 4, !tbaa !9
  %4901 = sext i32 %4900 to i64
  %4902 = getelementptr inbounds ptr, ptr %4899, i64 %4901
  %4903 = load ptr, ptr %4902, align 8, !tbaa !5
  %4904 = load i32, ptr %36, align 4, !tbaa !9
  %4905 = load i32, ptr %7, align 4, !tbaa !9
  %4906 = add nsw i32 %4904, %4905
  %4907 = sext i32 %4906 to i64
  %4908 = getelementptr inbounds ptr, ptr %4903, i64 %4907
  %4909 = load ptr, ptr %4908, align 8, !tbaa !5
  %4910 = load i32, ptr %35, align 4, !tbaa !9
  %4911 = load i32, ptr %7, align 4, !tbaa !9
  %4912 = add nsw i32 %4910, %4911
  %4913 = sub nsw i32 %4912, 1
  %4914 = sext i32 %4913 to i64
  %4915 = getelementptr inbounds i8, ptr %4909, i64 %4914
  %4916 = load i8, ptr %4915, align 1, !tbaa !16
  %4917 = zext i8 %4916 to i32
  %4918 = sub nsw i32 %4898, %4917
  %4919 = mul nsw i32 %4918, 2
  %4920 = load ptr, ptr %16, align 8, !tbaa !5
  %4921 = load i32, ptr %38, align 4, !tbaa !9
  %4922 = sext i32 %4921 to i64
  %4923 = getelementptr inbounds ptr, ptr %4920, i64 %4922
  %4924 = load ptr, ptr %4923, align 8, !tbaa !5
  %4925 = load i32, ptr %36, align 4, !tbaa !9
  %4926 = load i32, ptr %7, align 4, !tbaa !9
  %4927 = sub nsw i32 %4925, %4926
  %4928 = sext i32 %4927 to i64
  %4929 = getelementptr inbounds ptr, ptr %4924, i64 %4928
  %4930 = load ptr, ptr %4929, align 8, !tbaa !5
  %4931 = load i32, ptr %35, align 4, !tbaa !9
  %4932 = load i32, ptr %7, align 4, !tbaa !9
  %4933 = sub nsw i32 %4931, %4932
  %4934 = sext i32 %4933 to i64
  %4935 = getelementptr inbounds i8, ptr %4930, i64 %4934
  %4936 = load i8, ptr %4935, align 1, !tbaa !16
  %4937 = zext i8 %4936 to i32
  %4938 = load ptr, ptr %16, align 8, !tbaa !5
  %4939 = load i32, ptr %38, align 4, !tbaa !9
  %4940 = sext i32 %4939 to i64
  %4941 = getelementptr inbounds ptr, ptr %4938, i64 %4940
  %4942 = load ptr, ptr %4941, align 8, !tbaa !5
  %4943 = load i32, ptr %36, align 4, !tbaa !9
  %4944 = load i32, ptr %7, align 4, !tbaa !9
  %4945 = add nsw i32 %4943, %4944
  %4946 = sext i32 %4945 to i64
  %4947 = getelementptr inbounds ptr, ptr %4942, i64 %4946
  %4948 = load ptr, ptr %4947, align 8, !tbaa !5
  %4949 = load i32, ptr %35, align 4, !tbaa !9
  %4950 = load i32, ptr %7, align 4, !tbaa !9
  %4951 = add nsw i32 %4949, %4950
  %4952 = sext i32 %4951 to i64
  %4953 = getelementptr inbounds i8, ptr %4948, i64 %4952
  %4954 = load i8, ptr %4953, align 1, !tbaa !16
  %4955 = zext i8 %4954 to i32
  %4956 = sub nsw i32 %4937, %4955
  %4957 = mul nsw i32 %4956, 3
  %4958 = add nsw i32 %4919, %4957
  %4959 = load ptr, ptr %16, align 8, !tbaa !5
  %4960 = load i32, ptr %38, align 4, !tbaa !9
  %4961 = sext i32 %4960 to i64
  %4962 = getelementptr inbounds ptr, ptr %4959, i64 %4961
  %4963 = load ptr, ptr %4962, align 8, !tbaa !5
  %4964 = load i32, ptr %36, align 4, !tbaa !9
  %4965 = load i32, ptr %7, align 4, !tbaa !9
  %4966 = sub nsw i32 %4964, %4965
  %4967 = add nsw i32 %4966, 1
  %4968 = sext i32 %4967 to i64
  %4969 = getelementptr inbounds ptr, ptr %4963, i64 %4968
  %4970 = load ptr, ptr %4969, align 8, !tbaa !5
  %4971 = load i32, ptr %35, align 4, !tbaa !9
  %4972 = load i32, ptr %7, align 4, !tbaa !9
  %4973 = sub nsw i32 %4971, %4972
  %4974 = sext i32 %4973 to i64
  %4975 = getelementptr inbounds i8, ptr %4970, i64 %4974
  %4976 = load i8, ptr %4975, align 1, !tbaa !16
  %4977 = zext i8 %4976 to i32
  %4978 = load ptr, ptr %16, align 8, !tbaa !5
  %4979 = load i32, ptr %38, align 4, !tbaa !9
  %4980 = sext i32 %4979 to i64
  %4981 = getelementptr inbounds ptr, ptr %4978, i64 %4980
  %4982 = load ptr, ptr %4981, align 8, !tbaa !5
  %4983 = load i32, ptr %36, align 4, !tbaa !9
  %4984 = load i32, ptr %7, align 4, !tbaa !9
  %4985 = add nsw i32 %4983, %4984
  %4986 = sub nsw i32 %4985, 1
  %4987 = sext i32 %4986 to i64
  %4988 = getelementptr inbounds ptr, ptr %4982, i64 %4987
  %4989 = load ptr, ptr %4988, align 8, !tbaa !5
  %4990 = load i32, ptr %35, align 4, !tbaa !9
  %4991 = load i32, ptr %7, align 4, !tbaa !9
  %4992 = add nsw i32 %4990, %4991
  %4993 = sext i32 %4992 to i64
  %4994 = getelementptr inbounds i8, ptr %4989, i64 %4993
  %4995 = load i8, ptr %4994, align 1, !tbaa !16
  %4996 = zext i8 %4995 to i32
  %4997 = sub nsw i32 %4977, %4996
  %4998 = mul nsw i32 %4997, 2
  %4999 = add nsw i32 %4958, %4998
  br label %5122

5000:                                             ; preds = %4757
  %5001 = load ptr, ptr %16, align 8, !tbaa !5
  %5002 = load i32, ptr %38, align 4, !tbaa !9
  %5003 = sext i32 %5002 to i64
  %5004 = getelementptr inbounds ptr, ptr %5001, i64 %5003
  %5005 = load ptr, ptr %5004, align 8, !tbaa !5
  %5006 = load i32, ptr %36, align 4, !tbaa !9
  %5007 = load i32, ptr %7, align 4, !tbaa !9
  %5008 = sub nsw i32 %5006, %5007
  %5009 = sext i32 %5008 to i64
  %5010 = getelementptr inbounds ptr, ptr %5005, i64 %5009
  %5011 = load ptr, ptr %5010, align 8, !tbaa !5
  %5012 = load i32, ptr %35, align 4, !tbaa !9
  %5013 = load i32, ptr %7, align 4, !tbaa !9
  %5014 = sub nsw i32 %5012, %5013
  %5015 = add nsw i32 %5014, 1
  %5016 = sext i32 %5015 to i64
  %5017 = getelementptr inbounds i8, ptr %5011, i64 %5016
  %5018 = load i8, ptr %5017, align 1, !tbaa !16
  %5019 = zext i8 %5018 to i32
  %5020 = load ptr, ptr %16, align 8, !tbaa !5
  %5021 = load i32, ptr %38, align 4, !tbaa !9
  %5022 = sext i32 %5021 to i64
  %5023 = getelementptr inbounds ptr, ptr %5020, i64 %5022
  %5024 = load ptr, ptr %5023, align 8, !tbaa !5
  %5025 = load i32, ptr %36, align 4, !tbaa !9
  %5026 = load i32, ptr %7, align 4, !tbaa !9
  %5027 = add nsw i32 %5025, %5026
  %5028 = sext i32 %5027 to i64
  %5029 = getelementptr inbounds ptr, ptr %5024, i64 %5028
  %5030 = load ptr, ptr %5029, align 8, !tbaa !5
  %5031 = load i32, ptr %35, align 4, !tbaa !9
  %5032 = load i32, ptr %7, align 4, !tbaa !9
  %5033 = add nsw i32 %5031, %5032
  %5034 = sub nsw i32 %5033, 1
  %5035 = sext i32 %5034 to i64
  %5036 = getelementptr inbounds i8, ptr %5030, i64 %5035
  %5037 = load i8, ptr %5036, align 1, !tbaa !16
  %5038 = zext i8 %5037 to i32
  %5039 = sub nsw i32 %5019, %5038
  %5040 = mul nsw i32 %5039, 2
  %5041 = load ptr, ptr %16, align 8, !tbaa !5
  %5042 = load i32, ptr %38, align 4, !tbaa !9
  %5043 = sext i32 %5042 to i64
  %5044 = getelementptr inbounds ptr, ptr %5041, i64 %5043
  %5045 = load ptr, ptr %5044, align 8, !tbaa !5
  %5046 = load i32, ptr %36, align 4, !tbaa !9
  %5047 = load i32, ptr %7, align 4, !tbaa !9
  %5048 = sub nsw i32 %5046, %5047
  %5049 = sext i32 %5048 to i64
  %5050 = getelementptr inbounds ptr, ptr %5045, i64 %5049
  %5051 = load ptr, ptr %5050, align 8, !tbaa !5
  %5052 = load i32, ptr %35, align 4, !tbaa !9
  %5053 = load i32, ptr %7, align 4, !tbaa !9
  %5054 = sub nsw i32 %5052, %5053
  %5055 = sext i32 %5054 to i64
  %5056 = getelementptr inbounds i8, ptr %5051, i64 %5055
  %5057 = load i8, ptr %5056, align 1, !tbaa !16
  %5058 = zext i8 %5057 to i32
  %5059 = load ptr, ptr %16, align 8, !tbaa !5
  %5060 = load i32, ptr %38, align 4, !tbaa !9
  %5061 = sext i32 %5060 to i64
  %5062 = getelementptr inbounds ptr, ptr %5059, i64 %5061
  %5063 = load ptr, ptr %5062, align 8, !tbaa !5
  %5064 = load i32, ptr %36, align 4, !tbaa !9
  %5065 = load i32, ptr %7, align 4, !tbaa !9
  %5066 = add nsw i32 %5064, %5065
  %5067 = sext i32 %5066 to i64
  %5068 = getelementptr inbounds ptr, ptr %5063, i64 %5067
  %5069 = load ptr, ptr %5068, align 8, !tbaa !5
  %5070 = load i32, ptr %35, align 4, !tbaa !9
  %5071 = load i32, ptr %7, align 4, !tbaa !9
  %5072 = add nsw i32 %5070, %5071
  %5073 = sext i32 %5072 to i64
  %5074 = getelementptr inbounds i8, ptr %5069, i64 %5073
  %5075 = load i8, ptr %5074, align 1, !tbaa !16
  %5076 = zext i8 %5075 to i32
  %5077 = sub nsw i32 %5058, %5076
  %5078 = mul nsw i32 %5077, 3
  %5079 = add nsw i32 %5040, %5078
  %5080 = load ptr, ptr %16, align 8, !tbaa !5
  %5081 = load i32, ptr %38, align 4, !tbaa !9
  %5082 = sext i32 %5081 to i64
  %5083 = getelementptr inbounds ptr, ptr %5080, i64 %5082
  %5084 = load ptr, ptr %5083, align 8, !tbaa !5
  %5085 = load i32, ptr %36, align 4, !tbaa !9
  %5086 = load i32, ptr %7, align 4, !tbaa !9
  %5087 = sub nsw i32 %5085, %5086
  %5088 = add nsw i32 %5087, 1
  %5089 = sext i32 %5088 to i64
  %5090 = getelementptr inbounds ptr, ptr %5084, i64 %5089
  %5091 = load ptr, ptr %5090, align 8, !tbaa !5
  %5092 = load i32, ptr %35, align 4, !tbaa !9
  %5093 = load i32, ptr %7, align 4, !tbaa !9
  %5094 = sub nsw i32 %5092, %5093
  %5095 = sext i32 %5094 to i64
  %5096 = getelementptr inbounds i8, ptr %5091, i64 %5095
  %5097 = load i8, ptr %5096, align 1, !tbaa !16
  %5098 = zext i8 %5097 to i32
  %5099 = load ptr, ptr %16, align 8, !tbaa !5
  %5100 = load i32, ptr %38, align 4, !tbaa !9
  %5101 = sext i32 %5100 to i64
  %5102 = getelementptr inbounds ptr, ptr %5099, i64 %5101
  %5103 = load ptr, ptr %5102, align 8, !tbaa !5
  %5104 = load i32, ptr %36, align 4, !tbaa !9
  %5105 = load i32, ptr %7, align 4, !tbaa !9
  %5106 = add nsw i32 %5104, %5105
  %5107 = sub nsw i32 %5106, 1
  %5108 = sext i32 %5107 to i64
  %5109 = getelementptr inbounds ptr, ptr %5103, i64 %5108
  %5110 = load ptr, ptr %5109, align 8, !tbaa !5
  %5111 = load i32, ptr %35, align 4, !tbaa !9
  %5112 = load i32, ptr %7, align 4, !tbaa !9
  %5113 = add nsw i32 %5111, %5112
  %5114 = sext i32 %5113 to i64
  %5115 = getelementptr inbounds i8, ptr %5110, i64 %5114
  %5116 = load i8, ptr %5115, align 1, !tbaa !16
  %5117 = zext i8 %5116 to i32
  %5118 = sub nsw i32 %5098, %5117
  %5119 = mul nsw i32 %5118, 2
  %5120 = add nsw i32 %5079, %5119
  %5121 = sub nsw i32 0, %5120
  br label %5122

5122:                                             ; preds = %5000, %4879
  %5123 = phi i32 [ %4999, %4879 ], [ %5121, %5000 ]
  store i32 %5123, ptr %37, align 4, !tbaa !9
  %5124 = load i32, ptr %37, align 4, !tbaa !9
  %5125 = load i8, ptr %39, align 1, !tbaa !16
  %5126 = zext i8 %5125 to i64
  %5127 = getelementptr inbounds [256 x i8], ptr %13, i64 0, i64 %5126
  %5128 = load i8, ptr %5127, align 1, !tbaa !16
  %5129 = zext i8 %5128 to i32
  %5130 = icmp sgt i32 %5124, %5129
  br i1 %5130, label %5131, label %5143

5131:                                             ; preds = %5122
  %5132 = load ptr, ptr %6, align 8, !tbaa !5
  %5133 = getelementptr inbounds %struct.MImage, ptr %5132, i32 0, i32 3
  %5134 = getelementptr inbounds [4 x ptr], ptr %5133, i64 0, i64 0
  %5135 = load ptr, ptr %5134, align 8, !tbaa !5
  %5136 = load i32, ptr %36, align 4, !tbaa !9
  %5137 = sext i32 %5136 to i64
  %5138 = getelementptr inbounds ptr, ptr %5135, i64 %5137
  %5139 = load ptr, ptr %5138, align 8, !tbaa !5
  %5140 = load i32, ptr %35, align 4, !tbaa !9
  %5141 = sext i32 %5140 to i64
  %5142 = getelementptr inbounds i8, ptr %5139, i64 %5141
  store i8 -1, ptr %5142, align 1, !tbaa !16
  store i32 43, ptr %25, align 4
  br label %5144

5143:                                             ; preds = %5122
  store i32 0, ptr %25, align 4
  br label %5144

5144:                                             ; preds = %5143, %5131, %4745, %4395, %4009
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #4
  %5145 = load i32, ptr %25, align 4
  switch i32 %5145, label %5150 [
    i32 0, label %5146
  ]

5146:                                             ; preds = %5144
  br label %5147

5147:                                             ; preds = %5146
  %5148 = load i32, ptr %38, align 4, !tbaa !9
  %5149 = add nsw i32 %5148, 1
  store i32 %5149, ptr %38, align 4, !tbaa !9
  br label %3653, !llvm.loop !30

5150:                                             ; preds = %5144, %3657
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  br label %5151

5151:                                             ; preds = %5150
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  br label %5152

5152:                                             ; preds = %5151, %3638
  br label %5153

5153:                                             ; preds = %5152
  %5154 = load i32, ptr %36, align 4, !tbaa !9
  %5155 = add nsw i32 %5154, 1
  store i32 %5155, ptr %36, align 4, !tbaa !9
  br label %3555, !llvm.loop !31

5156:                                             ; preds = %3613
  br label %5157

5157:                                             ; preds = %5156
  %5158 = load i32, ptr %35, align 4, !tbaa !9
  %5159 = add nsw i32 %5158, 1
  store i32 %5159, ptr %35, align 4, !tbaa !9
  br label %3548, !llvm.loop !32

5160:                                             ; preds = %3552
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  br label %5161

5161:                                             ; preds = %5160
  %5162 = load i32, ptr %17, align 4, !tbaa !9
  %5163 = load i32, ptr %7, align 4, !tbaa !9
  %5164 = sub nsw i32 16, %5163
  %5165 = load i32, ptr %7, align 4, !tbaa !9
  %5166 = sub nsw i32 %5164, %5165
  %5167 = add nsw i32 %5162, %5166
  store i32 %5167, ptr %17, align 4, !tbaa !9
  br label %181, !llvm.loop !33

5168:                                             ; preds = %200
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  br label %5169

5169:                                             ; preds = %5168
  br label %5170

5170:                                             ; preds = %5169
  %5171 = load ptr, ptr %10, align 8, !tbaa !5
  %5172 = load ptr, ptr %6, align 8, !tbaa !5
  %5173 = icmp ne ptr %5171, %5172
  br i1 %5173, label %5174, label %5185

5174:                                             ; preds = %5170
  br label %5175

5175:                                             ; preds = %5174
  call void @llvm.lifetime.start.p0(i64 56, ptr %40) #4
  %5176 = load ptr, ptr %5, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %40, ptr align 8 %5176, i64 56, i1 false), !tbaa.struct !34
  %5177 = load ptr, ptr %5, align 8, !tbaa !5
  %5178 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %5177, ptr align 8 %5178, i64 56, i1 false), !tbaa.struct !34
  %5179 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %5179, ptr align 8 %40, i64 56, i1 false), !tbaa.struct !34
  %5180 = load ptr, ptr %5, align 8, !tbaa !5
  %5181 = load ptr, ptr %6, align 8, !tbaa !5
  call void @HandleExchange(ptr noundef %5180, ptr noundef %5181)
  call void @llvm.lifetime.end.p0(i64 56, ptr %40) #4
  br label %5182

5182:                                             ; preds = %5175
  br label %5183

5183:                                             ; preds = %5182
  %5184 = load ptr, ptr %6, align 8, !tbaa !5
  call void @mImageRelease(ptr noundef %5184)
  br label %5185

5185:                                             ; preds = %5183, %5170
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 256, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  ret void
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { 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, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 4}
!14 = !{!"MImage", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 16, !6, i64 48}
!15 = !{!14, !10, i64 8}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!14, !10, i64 0}
!20 = !{!14, !6, i64 48}
!21 = !{!22, !22, i64 0}
!22 = !{!"short", !7, i64 0}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !18}
!26 = distinct !{!26, !18}
!27 = distinct !{!27, !18}
!28 = distinct !{!28, !18}
!29 = distinct !{!29, !18}
!30 = distinct !{!30, !18}
!31 = distinct !{!31, !18}
!32 = distinct !{!32, !18}
!33 = distinct !{!33, !18}
!34 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 16, i64 32, !16, i64 48, i64 8, !5}


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

%struct.MImage = type { i32, i32, i32, [4 x ptr], ptr }

@.str = external hidden unnamed_addr constant [87 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [20 x i8], align 1
@__FUNCTION__.mImageGradientAdaptCheck = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress 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, ...) local_unnamed_addr #1

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

declare void @mImageExpand(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare ptr @ImageCreate(i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

declare void @ImageRedefine(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #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

declare void @HandleExchange(ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @mImageRelease(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @mImageGradientAdaptCheck(ptr noundef %0, ptr noundef %1, i32 noundef %2, float noundef %3) local_unnamed_addr #3 {
  %5 = alloca [256 x i8], align 16
  %6 = alloca %struct.MImage, align 8
  %7 = icmp sgt i32 %2, 4
  br i1 %7, label %8, label %9

8:                                                ; preds = %4
  tail call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef 1, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 156, ptr noundef nonnull @__FUNCTION__.mImageGradientAdaptCheck, ptr noundef nonnull @.str.1) #5
  br label %9

9:                                                ; preds = %8, %4
  tail call void @mImageExpand(ptr noundef %0, i32 noundef %2, i32 noundef 3) #5
  %magicptr = ptrtoint ptr %1 to i64
  switch i64 %magicptr, label %10 [
    i64 -1, label %12
    i64 0, label %12
  ]

10:                                               ; preds = %9
  %11 = icmp eq ptr %1, %0
  br i1 %11, label %12, label %18

12:                                               ; preds = %9, %9, %10
  %13 = getelementptr inbounds i8, ptr %0, i64 4
  %14 = load i32, ptr %13, align 4, !tbaa !5
  %15 = getelementptr inbounds i8, ptr %0, i64 8
  %16 = load i32, ptr %15, align 8, !tbaa !11
  %17 = tail call ptr @ImageCreate(i32 noundef 1, i32 noundef %14, i32 noundef %16, ptr noundef null) #5
  br label %vector.ph

18:                                               ; preds = %10
  %19 = getelementptr inbounds i8, ptr %0, i64 4
  %20 = load i32, ptr %19, align 4, !tbaa !5
  %21 = getelementptr inbounds i8, ptr %0, i64 8
  %22 = load i32, ptr %21, align 8, !tbaa !11
  %23 = getelementptr inbounds i8, ptr %1, i64 16
  tail call void @ImageRedefine(ptr noundef %1, i32 noundef 1, i32 noundef %20, i32 noundef %22, ptr noundef nonnull %23) #5
  br label %vector.ph

vector.ph:                                        ; preds = %18, %12
  %.0 = phi ptr [ %17, %12 ], [ %1, %18 ]
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %5) #5
  %broadcast.splatinsert = insertelement <16 x float> poison, float %3, i64 0
  %broadcast.splat = shufflevector <16 x float> %broadcast.splatinsert, <16 x float> poison, <16 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <16 x i32> [ <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %24 = uitofp <16 x i32> %vec.ind to <16 x float>
  %25 = fmul <16 x float> %broadcast.splat, %24
  %26 = fpext <16 x float> %25 to <16 x double>
  %27 = fadd <16 x double> %26, <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>
  %28 = fptosi <16 x double> %27 to <16 x i32>
  %29 = trunc <16 x i32> %28 to <16 x i8>
  %30 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %index
  %31 = and <16 x i32> %28, <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255>
  %32 = icmp ult <16 x i32> %31, <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>
  %33 = select <16 x i1> %32, <16 x i8> <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5>, <16 x i8> %29
  store <16 x i8> %33, ptr %30, align 16, !tbaa !12
  %index.next = add nuw i64 %index, 16
  %vec.ind.next = add <16 x i32> %vec.ind, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
  %34 = icmp eq i64 %index.next, 256
  br i1 %34, label %middle.block, label %vector.body, !llvm.loop !13

middle.block:                                     ; preds = %vector.body
  %35 = load i32, ptr %0, align 8, !tbaa !17
  %.fr1585 = freeze i32 %35
  %36 = getelementptr inbounds i8, ptr %0, i64 16
  %37 = getelementptr inbounds i8, ptr %0, i64 48
  %38 = load ptr, ptr %37, align 8, !tbaa !18
  %39 = icmp eq ptr %38, null
  br i1 %39, label %46, label %40

40:                                               ; preds = %middle.block
  %41 = getelementptr inbounds i8, ptr %38, i64 8
  %42 = load ptr, ptr %41, align 8, !tbaa !12
  %43 = getelementptr inbounds i8, ptr %42, i64 4
  %44 = load i16, ptr %43, align 2, !tbaa !19
  %45 = sext i16 %44 to i32
  br label %46

46:                                               ; preds = %middle.block, %40
  %47 = phi i32 [ %45, %40 ], [ 0, %middle.block ]
  %48 = getelementptr inbounds i8, ptr %0, i64 4
  %49 = getelementptr inbounds i8, ptr %0, i64 8
  %50 = shl i32 %2, 1
  %51 = getelementptr inbounds i8, ptr %.0, i64 16
  %52 = icmp sgt i32 %.fr1585, 0
  %53 = sext i32 %2 to i64
  %wide.trip.count = zext nneg i32 %.fr1585 to i64
  %wide.trip.count1616 = zext nneg i32 %.fr1585 to i64
  %wide.trip.count1632 = zext nneg i32 %.fr1585 to i64
  br label %54

54:                                               ; preds = %._crit_edge, %46
  %55 = phi ptr [ %38, %46 ], [ %739, %._crit_edge ]
  %.pre16531665 = phi ptr [ %38, %46 ], [ %.pre16531666, %._crit_edge ]
  %56 = phi ptr [ %38, %46 ], [ %740, %._crit_edge ]
  %57 = phi ptr [ %38, %46 ], [ %741, %._crit_edge ]
  %58 = phi ptr [ %38, %46 ], [ %742, %._crit_edge ]
  %59 = phi ptr [ %38, %46 ], [ %743, %._crit_edge ]
  %.pre1642 = phi ptr [ %38, %46 ], [ %.pre1643, %._crit_edge ]
  %60 = phi ptr [ %38, %46 ], [ %744, %._crit_edge ]
  %61 = phi ptr [ %38, %46 ], [ %745, %._crit_edge ]
  %.01453 = phi i32 [ %47, %46 ], [ %366, %._crit_edge ]
  %62 = sext i32 %.01453 to i64
  %63 = sext i32 %.01453 to i64
  %64 = icmp eq ptr %61, null
  br i1 %64, label %65, label %.thread1678

65:                                               ; preds = %54
  %66 = load i32, ptr %48, align 4, !tbaa !5
  %67 = icmp slt i32 %.01453, %66
  br i1 %67, label %74, label %782

.thread1678:                                      ; preds = %54
  %68 = getelementptr inbounds i8, ptr %61, i64 8
  %69 = load ptr, ptr %68, align 8, !tbaa !12
  %70 = getelementptr inbounds i8, ptr %69, i64 6
  %71 = load i16, ptr %70, align 2, !tbaa !19
  %72 = sext i16 %71 to i32
  %73 = icmp slt i32 %.01453, %72
  br i1 %73, label %.preheader1567, label %782

74:                                               ; preds = %65
  %75 = load i32, ptr %49, align 8, !tbaa !11
  br label %.loopexit

.preheader1567:                                   ; preds = %.thread1678
  %76 = load i32, ptr %49, align 8, !tbaa !11
  %reass.sub = sub i32 %.01453, %50
  %77 = add i32 %reass.sub, 16
  %78 = getelementptr inbounds i8, ptr %61, i64 8
  %79 = load ptr, ptr %78, align 8, !tbaa !12
  %80 = getelementptr inbounds i8, ptr %79, i64 6
  %81 = load i16, ptr %80, align 2, !tbaa !19
  %82 = sext i16 %81 to i32
  %spec.select1724 = tail call i32 @llvm.smin.i32(i32 %77, i32 %82)
  %83 = sext i32 %spec.select1724 to i64
  %84 = icmp slt i32 %.01453, %spec.select1724
  br i1 %84, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %.preheader1567
  %85 = sub nsw i64 %83, %62
  %min.iters.check = icmp ult i64 %85, 8
  br i1 %min.iters.check, label %scalar.ph1788.preheader, label %vector.ph1789

vector.ph1789:                                    ; preds = %.lr.ph
  %n.vec = and i64 %85, -8
  %ind.end = add nsw i64 %n.vec, %63
  %minmax.ident.splatinsert = insertelement <4 x i32> poison, i32 %76, i64 0
  %minmax.ident.splat = shufflevector <4 x i32> %minmax.ident.splatinsert, <4 x i32> poison, <4 x i32> zeroinitializer
  %minmax.ident.splatinsert1800 = insertelement <4 x i32> poison, i32 %76, i64 0
  %minmax.ident.splat1801 = shufflevector <4 x i32> %minmax.ident.splatinsert1800, <4 x i32> poison, <4 x i32> zeroinitializer
  %invariant.gep = getelementptr i8, ptr %79, i64 8
  %invariant.gep1894 = getelementptr i8, ptr %79, i64 24
  br label %vector.body1791

vector.body1791:                                  ; preds = %vector.body1791, %vector.ph1789
  %index1792 = phi i64 [ 0, %vector.ph1789 ], [ %index.next1806, %vector.body1791 ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph1789 ], [ %98, %vector.body1791 ]
  %vec.phi1793 = phi <4 x i32> [ zeroinitializer, %vector.ph1789 ], [ %99, %vector.body1791 ]
  %vec.phi1794 = phi <4 x i32> [ %minmax.ident.splat, %vector.ph1789 ], [ %96, %vector.body1791 ]
  %vec.phi1795 = phi <4 x i32> [ %minmax.ident.splat, %vector.ph1789 ], [ %97, %vector.body1791 ]
  %vec.phi1796 = phi <4 x i32> [ zeroinitializer, %vector.ph1789 ], [ %92, %vector.body1791 ]
  %vec.phi1797 = phi <4 x i32> [ zeroinitializer, %vector.ph1789 ], [ %93, %vector.body1791 ]
  %vec.phi1798 = phi <4 x i32> [ %minmax.ident.splat1801, %vector.ph1789 ], [ %90, %vector.body1791 ]
  %vec.phi1799 = phi <4 x i32> [ %minmax.ident.splat1801, %vector.ph1789 ], [ %91, %vector.body1791 ]
  %offset.idx = add i64 %index1792, %63
  %86 = shl i64 %offset.idx, 2
  %87 = shl i64 %offset.idx, 2
  %gep = getelementptr i8, ptr %invariant.gep, i64 %86
  %gep1895 = getelementptr i8, ptr %invariant.gep1894, i64 %87
  %wide.vec = load <8 x i16>, ptr %gep, align 2, !tbaa !19
  %wide.vec1802 = load <8 x i16>, ptr %gep1895, align 2, !tbaa !19
  %strided.vec = shufflevector <8 x i16> %wide.vec, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1803 = shufflevector <8 x i16> %wide.vec1802, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1804 = shufflevector <8 x i16> %wide.vec, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %strided.vec1805 = shufflevector <8 x i16> %wide.vec1802, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %88 = sext <4 x i16> %strided.vec to <4 x i32>
  %89 = sext <4 x i16> %strided.vec1803 to <4 x i32>
  %90 = tail call <4 x i32> @llvm.smin.v4i32(<4 x i32> %vec.phi1798, <4 x i32> %88)
  %91 = tail call <4 x i32> @llvm.smin.v4i32(<4 x i32> %vec.phi1799, <4 x i32> %89)
  %92 = tail call <4 x i32> @llvm.smax.v4i32(<4 x i32> %vec.phi1796, <4 x i32> %88)
  %93 = tail call <4 x i32> @llvm.smax.v4i32(<4 x i32> %vec.phi1797, <4 x i32> %89)
  %94 = sext <4 x i16> %strided.vec1804 to <4 x i32>
  %95 = sext <4 x i16> %strided.vec1805 to <4 x i32>
  %96 = tail call <4 x i32> @llvm.smin.v4i32(<4 x i32> %vec.phi1794, <4 x i32> %94)
  %97 = tail call <4 x i32> @llvm.smin.v4i32(<4 x i32> %vec.phi1795, <4 x i32> %95)
  %98 = tail call <4 x i32> @llvm.smax.v4i32(<4 x i32> %vec.phi, <4 x i32> %94)
  %99 = tail call <4 x i32> @llvm.smax.v4i32(<4 x i32> %vec.phi1793, <4 x i32> %95)
  %index.next1806 = add nuw i64 %index1792, 8
  %100 = icmp eq i64 %index.next1806, %n.vec
  br i1 %100, label %middle.block1787, label %vector.body1791, !llvm.loop !21

middle.block1787:                                 ; preds = %vector.body1791
  %rdx.minmax = tail call <4 x i32> @llvm.smax.v4i32(<4 x i32> %98, <4 x i32> %99)
  %101 = tail call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %rdx.minmax)
  %rdx.minmax1807 = tail call <4 x i32> @llvm.smin.v4i32(<4 x i32> %96, <4 x i32> %97)
  %102 = tail call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %rdx.minmax1807)
  %rdx.minmax1808 = tail call <4 x i32> @llvm.smax.v4i32(<4 x i32> %92, <4 x i32> %93)
  %103 = tail call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %rdx.minmax1808)
  %rdx.minmax1809 = tail call <4 x i32> @llvm.smin.v4i32(<4 x i32> %90, <4 x i32> %91)
  %104 = tail call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %rdx.minmax1809)
  %cmp.n = icmp eq i64 %85, %n.vec
  br i1 %cmp.n, label %.loopexit, label %scalar.ph1788.preheader

scalar.ph1788.preheader:                          ; preds = %middle.block1787, %.lr.ph
  %.014591783.ph = phi i32 [ 0, %.lr.ph ], [ %101, %middle.block1787 ]
  %.014621782.ph = phi i32 [ %76, %.lr.ph ], [ %102, %middle.block1787 ]
  %.014651781.ph = phi i32 [ 0, %.lr.ph ], [ %103, %middle.block1787 ]
  %.014681780.ph = phi i32 [ %76, %.lr.ph ], [ %104, %middle.block1787 ]
  %indvars.iv15921779.ph = phi i64 [ %63, %.lr.ph ], [ %ind.end, %middle.block1787 ]
  br label %scalar.ph1788

scalar.ph1788:                                    ; preds = %scalar.ph1788.preheader, %scalar.ph1788
  %.014591783 = phi i32 [ %.11460, %scalar.ph1788 ], [ %.014591783.ph, %scalar.ph1788.preheader ]
  %.014621782 = phi i32 [ %spec.select1525, %scalar.ph1788 ], [ %.014621782.ph, %scalar.ph1788.preheader ]
  %.014651781 = phi i32 [ %.11466, %scalar.ph1788 ], [ %.014651781.ph, %scalar.ph1788.preheader ]
  %.014681780 = phi i32 [ %spec.select1524, %scalar.ph1788 ], [ %.014681780.ph, %scalar.ph1788.preheader ]
  %indvars.iv15921779 = phi i64 [ %indvars.iv.next1593, %scalar.ph1788 ], [ %indvars.iv15921779.ph, %scalar.ph1788.preheader ]
  %.idx = shl i64 %indvars.iv15921779, 2
  %105 = getelementptr i8, ptr %79, i64 %.idx
  %106 = getelementptr i8, ptr %105, i64 8
  %107 = load i16, ptr %106, align 2, !tbaa !19
  %108 = sext i16 %107 to i32
  %spec.select1524 = tail call i32 @llvm.smin.i32(i32 %.014681780, i32 %108)
  %.11466 = tail call i32 @llvm.smax.i32(i32 %.014651781, i32 %108)
  %109 = getelementptr i8, ptr %105, i64 10
  %110 = load i16, ptr %109, align 2, !tbaa !19
  %111 = sext i16 %110 to i32
  %spec.select1525 = tail call i32 @llvm.smin.i32(i32 %.014621782, i32 %111)
  %.11460 = tail call i32 @llvm.smax.i32(i32 %.014591783, i32 %111)
  %indvars.iv.next1593 = add nsw i64 %indvars.iv15921779, 1
  %112 = icmp slt i64 %indvars.iv.next1593, %83
  br i1 %112, label %scalar.ph1788, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %scalar.ph1788, %.preheader1567, %middle.block1787, %74
  %.21470 = phi i32 [ %75, %74 ], [ %76, %.preheader1567 ], [ %104, %middle.block1787 ], [ %spec.select1524, %scalar.ph1788 ]
  %.21467 = phi i32 [ 0, %74 ], [ 0, %.preheader1567 ], [ %103, %middle.block1787 ], [ %.11466, %scalar.ph1788 ]
  %.21464 = phi i32 [ %75, %74 ], [ %76, %.preheader1567 ], [ %102, %middle.block1787 ], [ %spec.select1525, %scalar.ph1788 ]
  %.21461 = phi i32 [ 0, %74 ], [ 0, %.preheader1567 ], [ %101, %middle.block1787 ], [ %.11460, %scalar.ph1788 ]
  %113 = icmp slt i32 %.21470, %.21467
  br i1 %113, label %.preheader1564.lr.ph, label %.preheader1566

.preheader1564.lr.ph:                             ; preds = %.loopexit
  %reass.sub1523 = sub i32 %.01453, %50
  %114 = add i32 %reass.sub1523, 16
  %115 = sext i32 %.21470 to i64
  %wide.trip.count1608 = zext nneg i32 %.21467 to i64
  %116 = sext i32 %114 to i64
  %117 = sext i32 %114 to i64
  br label %.preheader1564

.preheader1566:                                   ; preds = %.split.us, %.loopexit
  %118 = phi ptr [ %55, %.loopexit ], [ %333, %.split.us ]
  %.pre16531659 = phi ptr [ %.pre16531665, %.loopexit ], [ %.pre16531660, %.split.us ]
  %119 = phi ptr [ %56, %.loopexit ], [ %334, %.split.us ]
  %120 = phi ptr [ %57, %.loopexit ], [ %335, %.split.us ]
  %121 = phi ptr [ %58, %.loopexit ], [ %336, %.split.us ]
  %122 = phi ptr [ %59, %.loopexit ], [ %337, %.split.us ]
  %.pre1645 = phi ptr [ %.pre1642, %.loopexit ], [ %.pre1647, %.split.us ]
  %123 = phi ptr [ %60, %.loopexit ], [ %338, %.split.us ]
  %124 = phi ptr [ %61, %.loopexit ], [ %338, %.split.us ]
  %125 = icmp slt i32 %.21467, %.21464
  br i1 %125, label %.preheader1563.lr.ph, label %.preheader1565

.preheader1563.lr.ph:                             ; preds = %.preheader1566
  %reass.sub1522 = sub i32 %.01453, %50
  %126 = add i32 %reass.sub1522, 16
  %127 = zext nneg i32 %.21467 to i64
  %wide.trip.count1624 = sext i32 %.21464 to i64
  br label %.preheader1563

.preheader1564:                                   ; preds = %.preheader1564.lr.ph, %.split.us
  %128 = phi ptr [ %55, %.preheader1564.lr.ph ], [ %333, %.split.us ]
  %.pre16531664 = phi ptr [ %.pre16531665, %.preheader1564.lr.ph ], [ %.pre16531660, %.split.us ]
  %129 = phi ptr [ %56, %.preheader1564.lr.ph ], [ %334, %.split.us ]
  %130 = phi ptr [ %57, %.preheader1564.lr.ph ], [ %335, %.split.us ]
  %131 = phi ptr [ %58, %.preheader1564.lr.ph ], [ %336, %.split.us ]
  %132 = phi ptr [ %59, %.preheader1564.lr.ph ], [ %337, %.split.us ]
  %.pre1646 = phi ptr [ %.pre1642, %.preheader1564.lr.ph ], [ %.pre1647, %.split.us ]
  %133 = phi ptr [ %60, %.preheader1564.lr.ph ], [ %338, %.split.us ]
  %indvars.iv1605 = phi i64 [ %115, %.preheader1564.lr.ph ], [ %indvars.iv.next1606, %.split.us ]
  %134 = add nsw i64 %indvars.iv1605, -1
  %indvars.iv.next1606 = add nsw i64 %indvars.iv1605, 1
  %135 = add nsw i64 %indvars.iv1605, %53
  %136 = add nsw i64 %135, -1
  %137 = sub nsw i64 %indvars.iv1605, %53
  %138 = add nsw i64 %137, 1
  br i1 %52, label %.preheader1564.split.us, label %.preheader1564.split

.preheader1564.split.us:                          ; preds = %.preheader1564, %.critedge.us
  %139 = phi ptr [ %.pre1650, %.critedge.us ], [ %128, %.preheader1564 ]
  %.pre16531663 = phi ptr [ %.pre1650, %.critedge.us ], [ %.pre16531664, %.preheader1564 ]
  %140 = phi ptr [ %.pre1650, %.critedge.us ], [ %129, %.preheader1564 ]
  %141 = phi ptr [ %.pre1650, %.critedge.us ], [ %130, %.preheader1564 ]
  %142 = phi ptr [ %.pre1650, %.critedge.us ], [ %131, %.preheader1564 ]
  %143 = phi ptr [ %.pre1650, %.critedge.us ], [ %132, %.preheader1564 ]
  %indvars.iv1602 = phi i64 [ %indvars.iv.next1603, %.critedge.us ], [ %63, %.preheader1564 ]
  %144 = icmp eq ptr %143, null
  br i1 %144, label %152, label %.thread.us

.thread.us:                                       ; preds = %.preheader1564.split.us
  %145 = getelementptr inbounds i8, ptr %143, i64 8
  %146 = load ptr, ptr %145, align 8, !tbaa !12
  %147 = getelementptr inbounds i8, ptr %146, i64 6
  %148 = load i16, ptr %147, align 2, !tbaa !19
  %149 = sext i16 %148 to i32
  %spec.select1725 = tail call i32 @llvm.smin.i32(i32 %114, i32 %149)
  %150 = sext i32 %spec.select1725 to i64
  %151 = icmp slt i64 %indvars.iv1602, %150
  br i1 %151, label %158, label %.split.us

152:                                              ; preds = %.preheader1564.split.us
  %153 = load i32, ptr %48, align 4, !tbaa !5
  %154 = icmp slt i32 %114, %153
  br i1 %154, label %.thread1680, label %.thread1531.us

.thread1531.us:                                   ; preds = %152
  %155 = sext i32 %153 to i64
  %156 = icmp slt i64 %indvars.iv1602, %155
  br i1 %156, label %.thread1532.us, label %.split.us

.thread1680:                                      ; preds = %152
  %157 = icmp slt i64 %indvars.iv1602, %117
  br i1 %157, label %.thread1532.us, label %.split.us

158:                                              ; preds = %.thread.us
  br i1 %144, label %.thread1532.us, label %159

159:                                              ; preds = %158
  %160 = getelementptr inbounds i8, ptr %143, i64 8
  %161 = load ptr, ptr %160, align 8, !tbaa !12
  %.idx1677 = shl i64 %indvars.iv1602, 2
  %162 = getelementptr i8, ptr %161, i64 %.idx1677
  %163 = getelementptr i8, ptr %162, i64 8
  %164 = load i16, ptr %163, align 2, !tbaa !19
  %165 = sext i16 %164 to i64
  br label %.thread1532.us

.thread1532.us:                                   ; preds = %.thread1680, %159, %158, %.thread1531.us
  %166 = phi i64 [ %165, %159 ], [ 0, %158 ], [ 0, %.thread1531.us ], [ 0, %.thread1680 ]
  %167 = icmp sgt i64 %indvars.iv1605, %166
  br i1 %167, label %.lr.ph.us, label %.critedge.us

.lr.ph.us:                                        ; preds = %.thread1532.us
  %168 = load ptr, ptr %51, align 8, !tbaa !23
  %169 = getelementptr inbounds ptr, ptr %168, i64 %indvars.iv1602
  %170 = load ptr, ptr %169, align 8, !tbaa !23
  %171 = getelementptr inbounds i8, ptr %170, i64 %indvars.iv1605
  store i8 0, ptr %171, align 1, !tbaa !12
  %172 = sub nsw i64 %indvars.iv1602, %53
  br label %174

173:                                              ; preds = %281
  %indvars.iv.next1599 = add nuw nsw i64 %indvars.iv1598, 1
  %exitcond1601.not = icmp eq i64 %indvars.iv.next1599, %wide.trip.count
  br i1 %exitcond1601.not, label %.critedge.us, label %174, !llvm.loop !24

174:                                              ; preds = %.lr.ph.us, %173
  %indvars.iv1598 = phi i64 [ 0, %.lr.ph.us ], [ %indvars.iv.next1599, %173 ]
  %175 = getelementptr inbounds ptr, ptr %36, i64 %indvars.iv1598
  %176 = load ptr, ptr %175, align 8, !tbaa !23
  %177 = getelementptr inbounds ptr, ptr %176, i64 %indvars.iv1602
  %178 = load ptr, ptr %177, align 8, !tbaa !23
  %179 = getelementptr inbounds i8, ptr %178, i64 %indvars.iv1605
  %180 = load i8, ptr %179, align 1, !tbaa !12
  %181 = getelementptr ptr, ptr %176, i64 %172
  %182 = load ptr, ptr %181, align 8, !tbaa !23
  %183 = getelementptr inbounds i8, ptr %182, i64 %134
  %184 = load i8, ptr %183, align 1, !tbaa !12
  %185 = zext i8 %184 to i32
  %186 = getelementptr ptr, ptr %176, i64 %indvars.iv1602
  %187 = getelementptr ptr, ptr %186, i64 %53
  %188 = load ptr, ptr %187, align 8, !tbaa !23
  %189 = getelementptr inbounds i8, ptr %188, i64 %134
  %190 = load i8, ptr %189, align 1, !tbaa !12
  %191 = zext i8 %190 to i32
  %192 = getelementptr inbounds i8, ptr %182, i64 %indvars.iv1605
  %193 = load i8, ptr %192, align 1, !tbaa !12
  %194 = zext i8 %193 to i32
  %195 = getelementptr inbounds i8, ptr %188, i64 %indvars.iv1605
  %196 = load i8, ptr %195, align 1, !tbaa !12
  %197 = zext i8 %196 to i32
  %198 = sub nsw i32 %194, %197
  %199 = mul nsw i32 %198, 3
  %200 = getelementptr inbounds i8, ptr %182, i64 %indvars.iv.next1606
  %201 = load i8, ptr %200, align 1, !tbaa !12
  %202 = zext i8 %201 to i32
  %203 = getelementptr inbounds i8, ptr %188, i64 %indvars.iv.next1606
  %204 = load i8, ptr %203, align 1, !tbaa !12
  %205 = zext i8 %204 to i32
  %206 = add nuw nsw i32 %185, %202
  %207 = add nuw nsw i32 %191, %205
  %208 = sub nsw i32 %206, %207
  %209 = shl nsw i32 %208, 1
  %210 = add nsw i32 %209, %199
  %211 = tail call i32 @llvm.abs.i32(i32 %210, i1 true)
  %212 = zext i8 %180 to i64
  %213 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %212
  %214 = load i8, ptr %213, align 1, !tbaa !12
  %215 = zext i8 %214 to i32
  %216 = icmp ugt i32 %211, %215
  br i1 %216, label %.critedge.us.sink.split, label %217

217:                                              ; preds = %174
  %218 = getelementptr inbounds i8, ptr %182, i64 %136
  %219 = load i8, ptr %218, align 1, !tbaa !12
  %220 = zext i8 %219 to i32
  %221 = getelementptr inbounds i8, ptr %188, i64 %138
  %222 = load i8, ptr %221, align 1, !tbaa !12
  %223 = zext i8 %222 to i32
  %224 = getelementptr inbounds i8, ptr %182, i64 %135
  %225 = load i8, ptr %224, align 1, !tbaa !12
  %226 = zext i8 %225 to i32
  %227 = getelementptr inbounds i8, ptr %188, i64 %137
  %228 = load i8, ptr %227, align 1, !tbaa !12
  %229 = zext i8 %228 to i32
  %230 = sub nsw i32 %226, %229
  %231 = mul nsw i32 %230, 3
  %232 = getelementptr i8, ptr %181, i64 8
  %233 = load ptr, ptr %232, align 8, !tbaa !23
  %234 = getelementptr inbounds i8, ptr %233, i64 %135
  %235 = load i8, ptr %234, align 1, !tbaa !12
  %236 = zext i8 %235 to i32
  %237 = getelementptr i8, ptr %187, i64 -8
  %238 = load ptr, ptr %237, align 8, !tbaa !23
  %239 = getelementptr inbounds i8, ptr %238, i64 %137
  %240 = load i8, ptr %239, align 1, !tbaa !12
  %241 = zext i8 %240 to i32
  %242 = add nuw nsw i32 %220, %236
  %243 = add nuw nsw i32 %223, %241
  %244 = sub nsw i32 %242, %243
  %245 = shl nsw i32 %244, 1
  %246 = add nsw i32 %245, %231
  %247 = tail call i32 @llvm.abs.i32(i32 %246, i1 true)
  %248 = icmp ugt i32 %247, %215
  br i1 %248, label %.critedge.us.sink.split, label %249

249:                                              ; preds = %217
  %250 = getelementptr i8, ptr %177, i64 -8
  %251 = load ptr, ptr %250, align 8, !tbaa !23
  %252 = getelementptr inbounds i8, ptr %251, i64 %137
  %253 = load i8, ptr %252, align 1, !tbaa !12
  %254 = zext i8 %253 to i32
  %255 = getelementptr inbounds i8, ptr %251, i64 %135
  %256 = load i8, ptr %255, align 1, !tbaa !12
  %257 = zext i8 %256 to i32
  %258 = getelementptr inbounds i8, ptr %178, i64 %137
  %259 = load i8, ptr %258, align 1, !tbaa !12
  %260 = zext i8 %259 to i32
  %261 = getelementptr inbounds i8, ptr %178, i64 %135
  %262 = load i8, ptr %261, align 1, !tbaa !12
  %263 = zext i8 %262 to i32
  %264 = sub nsw i32 %260, %263
  %265 = mul nsw i32 %264, 3
  %266 = getelementptr i8, ptr %177, i64 8
  %267 = load ptr, ptr %266, align 8, !tbaa !23
  %268 = getelementptr inbounds i8, ptr %267, i64 %137
  %269 = load i8, ptr %268, align 1, !tbaa !12
  %270 = zext i8 %269 to i32
  %271 = getelementptr inbounds i8, ptr %267, i64 %135
  %272 = load i8, ptr %271, align 1, !tbaa !12
  %273 = zext i8 %272 to i32
  %274 = add nuw nsw i32 %254, %270
  %275 = add nuw nsw i32 %257, %273
  %276 = sub nsw i32 %274, %275
  %277 = shl nsw i32 %276, 1
  %278 = add nsw i32 %277, %265
  %279 = tail call i32 @llvm.abs.i32(i32 %278, i1 true)
  %280 = icmp ugt i32 %279, %215
  br i1 %280, label %.critedge.us.sink.split, label %281

281:                                              ; preds = %249
  %282 = getelementptr inbounds i8, ptr %182, i64 %138
  %283 = load i8, ptr %282, align 1, !tbaa !12
  %284 = zext i8 %283 to i32
  %285 = getelementptr inbounds i8, ptr %188, i64 %136
  %286 = load i8, ptr %285, align 1, !tbaa !12
  %287 = zext i8 %286 to i32
  %288 = getelementptr inbounds i8, ptr %182, i64 %137
  %289 = load i8, ptr %288, align 1, !tbaa !12
  %290 = zext i8 %289 to i32
  %291 = getelementptr inbounds i8, ptr %188, i64 %135
  %292 = load i8, ptr %291, align 1, !tbaa !12
  %293 = zext i8 %292 to i32
  %294 = sub nsw i32 %290, %293
  %295 = mul nsw i32 %294, 3
  %296 = getelementptr inbounds i8, ptr %233, i64 %137
  %297 = load i8, ptr %296, align 1, !tbaa !12
  %298 = zext i8 %297 to i32
  %299 = getelementptr inbounds i8, ptr %238, i64 %135
  %300 = load i8, ptr %299, align 1, !tbaa !12
  %301 = zext i8 %300 to i32
  %302 = add nuw nsw i32 %284, %298
  %303 = add nuw nsw i32 %287, %301
  %304 = sub nsw i32 %302, %303
  %305 = shl nsw i32 %304, 1
  %306 = add nsw i32 %305, %295
  %307 = tail call i32 @llvm.abs.i32(i32 %306, i1 true)
  %308 = icmp ugt i32 %307, %215
  br i1 %308, label %.critedge.us.sink.split, label %173

.critedge.us.sink.split:                          ; preds = %174, %217, %249, %281
  %309 = load ptr, ptr %51, align 8, !tbaa !23
  %310 = getelementptr inbounds ptr, ptr %309, i64 %indvars.iv1602
  %311 = load ptr, ptr %310, align 8, !tbaa !23
  %312 = getelementptr inbounds i8, ptr %311, i64 %indvars.iv1605
  store i8 -1, ptr %312, align 1, !tbaa !12
  br label %.critedge.us

.critedge.us:                                     ; preds = %173, %.critedge.us.sink.split, %.thread1532.us
  %indvars.iv.next1603 = add nsw i64 %indvars.iv1602, 1
  %.pre1650 = load ptr, ptr %37, align 8, !tbaa !18
  br label %.preheader1564.split.us, !llvm.loop !25

.preheader1564.split:                             ; preds = %.preheader1564, %.critedge
  %313 = phi ptr [ %353, %.critedge ], [ %128, %.preheader1564 ]
  %.pre16531662 = phi ptr [ %.pre16531661, %.critedge ], [ %.pre16531664, %.preheader1564 ]
  %314 = phi ptr [ %354, %.critedge ], [ %129, %.preheader1564 ]
  %315 = phi ptr [ %355, %.critedge ], [ %130, %.preheader1564 ]
  %316 = phi ptr [ %356, %.critedge ], [ %131, %.preheader1564 ]
  %317 = phi ptr [ %357, %.critedge ], [ %132, %.preheader1564 ]
  %.pre1648 = phi ptr [ %.pre, %.critedge ], [ %.pre1646, %.preheader1564 ]
  %318 = phi ptr [ %.pre, %.critedge ], [ %133, %.preheader1564 ]
  %indvars.iv1595 = phi i64 [ %indvars.iv.next1596, %.critedge ], [ %63, %.preheader1564 ]
  %319 = icmp eq ptr %318, null
  br i1 %319, label %320, label %.thread

320:                                              ; preds = %.preheader1564.split
  %321 = load i32, ptr %48, align 4, !tbaa !5
  %322 = icmp slt i32 %114, %321
  br i1 %322, label %.thread1682, label %.thread1531

.thread:                                          ; preds = %.preheader1564.split
  %323 = getelementptr inbounds i8, ptr %318, i64 8
  %324 = load ptr, ptr %323, align 8, !tbaa !12
  %325 = getelementptr inbounds i8, ptr %324, i64 6
  %326 = load i16, ptr %325, align 2, !tbaa !19
  %327 = sext i16 %326 to i32
  %spec.select1728 = tail call i32 @llvm.smin.i32(i32 %114, i32 %327)
  %328 = sext i32 %spec.select1728 to i64
  %329 = icmp slt i64 %indvars.iv1595, %328
  br i1 %329, label %339, label %.split.us

.thread1682:                                      ; preds = %320
  %330 = icmp slt i64 %indvars.iv1595, %116
  br i1 %330, label %.thread1532, label %.split.us

.thread1531:                                      ; preds = %320
  %331 = sext i32 %321 to i64
  %332 = icmp slt i64 %indvars.iv1595, %331
  br i1 %332, label %.thread1532, label %.split.us

.split.us:                                        ; preds = %.thread1682, %.thread, %.thread1531, %.thread1531.us, %.thread.us, %.thread1680
  %333 = phi ptr [ %139, %.thread1680 ], [ %139, %.thread.us ], [ %139, %.thread1531.us ], [ %313, %.thread1531 ], [ %313, %.thread ], [ %313, %.thread1682 ]
  %.pre16531660 = phi ptr [ %.pre16531663, %.thread1680 ], [ %.pre16531663, %.thread.us ], [ %.pre16531663, %.thread1531.us ], [ %.pre16531662, %.thread1531 ], [ %.pre16531662, %.thread ], [ %.pre16531662, %.thread1682 ]
  %334 = phi ptr [ %140, %.thread1680 ], [ %140, %.thread.us ], [ %140, %.thread1531.us ], [ %314, %.thread1531 ], [ %314, %.thread ], [ %314, %.thread1682 ]
  %335 = phi ptr [ %141, %.thread1680 ], [ %141, %.thread.us ], [ %141, %.thread1531.us ], [ %315, %.thread1531 ], [ %315, %.thread ], [ %315, %.thread1682 ]
  %336 = phi ptr [ %142, %.thread1680 ], [ %142, %.thread.us ], [ %142, %.thread1531.us ], [ %316, %.thread1531 ], [ %316, %.thread ], [ %316, %.thread1682 ]
  %337 = phi ptr [ null, %.thread1531.us ], [ %143, %.thread.us ], [ null, %.thread1680 ], [ %317, %.thread1531 ], [ %317, %.thread ], [ %317, %.thread1682 ]
  %.pre1647 = phi ptr [ null, %.thread1531.us ], [ %143, %.thread.us ], [ null, %.thread1680 ], [ %.pre1648, %.thread1531 ], [ %.pre1648, %.thread ], [ %.pre1648, %.thread1682 ]
  %338 = phi ptr [ null, %.thread1531.us ], [ %143, %.thread.us ], [ null, %.thread1680 ], [ null, %.thread1682 ], [ %318, %.thread ], [ null, %.thread1531 ]
  %exitcond1609.not = icmp eq i64 %indvars.iv.next1606, %wide.trip.count1608
  br i1 %exitcond1609.not, label %.preheader1566, label %.preheader1564, !llvm.loop !26

339:                                              ; preds = %.thread
  br i1 %319, label %.thread1532, label %340

340:                                              ; preds = %339
  %341 = getelementptr inbounds i8, ptr %318, i64 8
  %342 = load ptr, ptr %341, align 8, !tbaa !12
  %.idx1674 = shl i64 %indvars.iv1595, 2
  %343 = getelementptr i8, ptr %342, i64 %.idx1674
  %344 = getelementptr i8, ptr %343, i64 8
  %345 = load i16, ptr %344, align 2, !tbaa !19
  %346 = sext i16 %345 to i64
  br label %.thread1532

.thread1532:                                      ; preds = %.thread1682, %.thread1531, %339, %340
  %347 = phi i64 [ %346, %340 ], [ 0, %339 ], [ 0, %.thread1531 ], [ 0, %.thread1682 ]
  %348 = icmp sgt i64 %indvars.iv1605, %347
  br i1 %348, label %.critedge.loopexit, label %.critedge

.critedge.loopexit:                               ; preds = %.thread1532
  %349 = load ptr, ptr %51, align 8, !tbaa !23
  %350 = getelementptr inbounds ptr, ptr %349, i64 %indvars.iv1595
  %351 = load ptr, ptr %350, align 8, !tbaa !23
  %352 = getelementptr inbounds i8, ptr %351, i64 %indvars.iv1605
  store i8 0, ptr %352, align 1, !tbaa !12
  %.pre.pre = load ptr, ptr %37, align 8, !tbaa !18
  br label %.critedge

.critedge:                                        ; preds = %.critedge.loopexit, %.thread1532
  %353 = phi ptr [ %.pre.pre, %.critedge.loopexit ], [ %313, %.thread1532 ]
  %.pre16531661 = phi ptr [ %.pre.pre, %.critedge.loopexit ], [ %.pre16531662, %.thread1532 ]
  %354 = phi ptr [ %.pre.pre, %.critedge.loopexit ], [ %314, %.thread1532 ]
  %355 = phi ptr [ %.pre.pre, %.critedge.loopexit ], [ %315, %.thread1532 ]
  %356 = phi ptr [ %.pre.pre, %.critedge.loopexit ], [ %316, %.thread1532 ]
  %357 = phi ptr [ %.pre.pre, %.critedge.loopexit ], [ %317, %.thread1532 ]
  %.pre = phi ptr [ %.pre.pre, %.critedge.loopexit ], [ %.pre1648, %.thread1532 ]
  %indvars.iv.next1596 = add nsw i64 %indvars.iv1595, 1
  br label %.preheader1564.split, !llvm.loop !25

.preheader1565:                                   ; preds = %.split1575.us, %.preheader1566
  %358 = phi ptr [ %118, %.preheader1566 ], [ %551, %.split1575.us ]
  %.pre16531654 = phi ptr [ %.pre16531659, %.preheader1566 ], [ %.pre16531655, %.split1575.us ]
  %359 = phi ptr [ %119, %.preheader1566 ], [ %552, %.split1575.us ]
  %360 = phi ptr [ %120, %.preheader1566 ], [ %553, %.split1575.us ]
  %361 = phi ptr [ %121, %.preheader1566 ], [ %554, %.split1575.us ]
  %362 = phi ptr [ %122, %.preheader1566 ], [ %554, %.split1575.us ]
  %.pre1644 = phi ptr [ %.pre1645, %.preheader1566 ], [ %554, %.split1575.us ]
  %363 = phi ptr [ %123, %.preheader1566 ], [ %554, %.split1575.us ]
  %364 = phi ptr [ %124, %.preheader1566 ], [ %554, %.split1575.us ]
  %365 = icmp slt i32 %.21464, %.21461
  %reass.sub1521 = sub i32 %.01453, %50
  %366 = add i32 %reass.sub1521, 16
  br i1 %365, label %.preheader.lr.ph, label %._crit_edge

.preheader.lr.ph:                                 ; preds = %.preheader1565
  %367 = sext i32 %.21464 to i64
  %wide.trip.count1640 = zext nneg i32 %.21461 to i64
  %368 = sext i32 %366 to i64
  %369 = sext i32 %366 to i64
  br label %.preheader

.preheader1563:                                   ; preds = %.preheader1563.lr.ph, %.split1575.us
  %370 = phi ptr [ %118, %.preheader1563.lr.ph ], [ %551, %.split1575.us ]
  %.pre16531658 = phi ptr [ %.pre16531659, %.preheader1563.lr.ph ], [ %.pre16531655, %.split1575.us ]
  %371 = phi ptr [ %119, %.preheader1563.lr.ph ], [ %552, %.split1575.us ]
  %372 = phi ptr [ %120, %.preheader1563.lr.ph ], [ %553, %.split1575.us ]
  %373 = phi ptr [ %121, %.preheader1563.lr.ph ], [ %554, %.split1575.us ]
  %indvars.iv1621 = phi i64 [ %127, %.preheader1563.lr.ph ], [ %indvars.iv.next1622, %.split1575.us ]
  %374 = add nsw i64 %indvars.iv1621, -1
  %indvars.iv.next1622 = add nuw nsw i64 %indvars.iv1621, 1
  %375 = add nsw i64 %indvars.iv1621, %53
  %376 = add nsw i64 %375, -1
  %377 = sub nsw i64 %indvars.iv1621, %53
  %378 = add nsw i64 %377, 1
  br i1 %52, label %.preheader1563.split.us, label %.preheader1563.split

.preheader1563.split.us:                          ; preds = %.preheader1563, %.critedge1527.us
  %379 = phi ptr [ %.pre1652, %.critedge1527.us ], [ %370, %.preheader1563 ]
  %.pre16531657 = phi ptr [ %.pre1652, %.critedge1527.us ], [ %.pre16531658, %.preheader1563 ]
  %380 = phi ptr [ %.pre1652, %.critedge1527.us ], [ %371, %.preheader1563 ]
  %381 = phi ptr [ %.pre1652, %.critedge1527.us ], [ %372, %.preheader1563 ]
  %indvars.iv1618 = phi i64 [ %indvars.iv.next1619, %.critedge1527.us ], [ %63, %.preheader1563 ]
  %382 = icmp eq ptr %381, null
  br i1 %382, label %388, label %.thread1533.us

.thread1533.us:                                   ; preds = %.preheader1563.split.us
  %383 = getelementptr inbounds i8, ptr %381, i64 8
  %384 = load ptr, ptr %383, align 8, !tbaa !12
  %385 = getelementptr inbounds i8, ptr %384, i64 6
  %386 = load i16, ptr %385, align 2, !tbaa !19
  %387 = sext i16 %386 to i32
  br label %.thread1534.us

388:                                              ; preds = %.preheader1563.split.us
  %389 = load i32, ptr %48, align 4, !tbaa !5
  br label %.thread1534.us

.thread1534.us:                                   ; preds = %388, %.thread1533.us
  %.sink1740 = phi i32 [ %389, %388 ], [ %387, %.thread1533.us ]
  %spec.select1730 = tail call i32 @llvm.smin.i32(i32 %126, i32 %.sink1740)
  %390 = sext i32 %spec.select1730 to i64
  %391 = icmp slt i64 %indvars.iv1618, %390
  br i1 %391, label %.lr.ph.us1573, label %.split1575.us

.lr.ph.us1573:                                    ; preds = %.thread1534.us
  %392 = load ptr, ptr %51, align 8, !tbaa !23
  %393 = getelementptr inbounds ptr, ptr %392, i64 %indvars.iv1618
  %394 = load ptr, ptr %393, align 8, !tbaa !23
  %395 = getelementptr inbounds i8, ptr %394, i64 %indvars.iv1621
  store i8 0, ptr %395, align 1, !tbaa !12
  %396 = sub nsw i64 %indvars.iv1618, %53
  br label %398

397:                                              ; preds = %505
  %indvars.iv.next1614 = add nuw nsw i64 %indvars.iv1613, 1
  %exitcond1617.not = icmp eq i64 %indvars.iv.next1614, %wide.trip.count1616
  br i1 %exitcond1617.not, label %.critedge1527.us, label %398, !llvm.loop !27

398:                                              ; preds = %.lr.ph.us1573, %397
  %indvars.iv1613 = phi i64 [ 0, %.lr.ph.us1573 ], [ %indvars.iv.next1614, %397 ]
  %399 = getelementptr inbounds ptr, ptr %36, i64 %indvars.iv1613
  %400 = load ptr, ptr %399, align 8, !tbaa !23
  %401 = getelementptr inbounds ptr, ptr %400, i64 %indvars.iv1618
  %402 = load ptr, ptr %401, align 8, !tbaa !23
  %403 = getelementptr inbounds i8, ptr %402, i64 %indvars.iv1621
  %404 = load i8, ptr %403, align 1, !tbaa !12
  %405 = getelementptr ptr, ptr %400, i64 %396
  %406 = load ptr, ptr %405, align 8, !tbaa !23
  %407 = getelementptr inbounds i8, ptr %406, i64 %374
  %408 = load i8, ptr %407, align 1, !tbaa !12
  %409 = zext i8 %408 to i32
  %410 = getelementptr ptr, ptr %400, i64 %indvars.iv1618
  %411 = getelementptr ptr, ptr %410, i64 %53
  %412 = load ptr, ptr %411, align 8, !tbaa !23
  %413 = getelementptr inbounds i8, ptr %412, i64 %374
  %414 = load i8, ptr %413, align 1, !tbaa !12
  %415 = zext i8 %414 to i32
  %416 = getelementptr inbounds i8, ptr %406, i64 %indvars.iv1621
  %417 = load i8, ptr %416, align 1, !tbaa !12
  %418 = zext i8 %417 to i32
  %419 = getelementptr inbounds i8, ptr %412, i64 %indvars.iv1621
  %420 = load i8, ptr %419, align 1, !tbaa !12
  %421 = zext i8 %420 to i32
  %422 = sub nsw i32 %418, %421
  %423 = mul nsw i32 %422, 3
  %424 = getelementptr inbounds i8, ptr %406, i64 %indvars.iv.next1622
  %425 = load i8, ptr %424, align 1, !tbaa !12
  %426 = zext i8 %425 to i32
  %427 = getelementptr inbounds i8, ptr %412, i64 %indvars.iv.next1622
  %428 = load i8, ptr %427, align 1, !tbaa !12
  %429 = zext i8 %428 to i32
  %430 = add nuw nsw i32 %409, %426
  %431 = add nuw nsw i32 %415, %429
  %432 = sub nsw i32 %430, %431
  %433 = shl nsw i32 %432, 1
  %434 = add nsw i32 %433, %423
  %435 = tail call i32 @llvm.abs.i32(i32 %434, i1 true)
  %436 = zext i8 %404 to i64
  %437 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %436
  %438 = load i8, ptr %437, align 1, !tbaa !12
  %439 = zext i8 %438 to i32
  %440 = icmp ugt i32 %435, %439
  br i1 %440, label %.critedge1527.us.sink.split, label %441

441:                                              ; preds = %398
  %442 = getelementptr inbounds i8, ptr %406, i64 %376
  %443 = load i8, ptr %442, align 1, !tbaa !12
  %444 = zext i8 %443 to i32
  %445 = getelementptr inbounds i8, ptr %412, i64 %378
  %446 = load i8, ptr %445, align 1, !tbaa !12
  %447 = zext i8 %446 to i32
  %448 = getelementptr inbounds i8, ptr %406, i64 %375
  %449 = load i8, ptr %448, align 1, !tbaa !12
  %450 = zext i8 %449 to i32
  %451 = getelementptr inbounds i8, ptr %412, i64 %377
  %452 = load i8, ptr %451, align 1, !tbaa !12
  %453 = zext i8 %452 to i32
  %454 = sub nsw i32 %450, %453
  %455 = mul nsw i32 %454, 3
  %456 = getelementptr i8, ptr %405, i64 8
  %457 = load ptr, ptr %456, align 8, !tbaa !23
  %458 = getelementptr inbounds i8, ptr %457, i64 %375
  %459 = load i8, ptr %458, align 1, !tbaa !12
  %460 = zext i8 %459 to i32
  %461 = getelementptr i8, ptr %411, i64 -8
  %462 = load ptr, ptr %461, align 8, !tbaa !23
  %463 = getelementptr inbounds i8, ptr %462, i64 %377
  %464 = load i8, ptr %463, align 1, !tbaa !12
  %465 = zext i8 %464 to i32
  %466 = add nuw nsw i32 %444, %460
  %467 = add nuw nsw i32 %447, %465
  %468 = sub nsw i32 %466, %467
  %469 = shl nsw i32 %468, 1
  %470 = add nsw i32 %469, %455
  %471 = tail call i32 @llvm.abs.i32(i32 %470, i1 true)
  %472 = icmp ugt i32 %471, %439
  br i1 %472, label %.critedge1527.us.sink.split, label %473

473:                                              ; preds = %441
  %474 = getelementptr i8, ptr %401, i64 -8
  %475 = load ptr, ptr %474, align 8, !tbaa !23
  %476 = getelementptr inbounds i8, ptr %475, i64 %377
  %477 = load i8, ptr %476, align 1, !tbaa !12
  %478 = zext i8 %477 to i32
  %479 = getelementptr inbounds i8, ptr %475, i64 %375
  %480 = load i8, ptr %479, align 1, !tbaa !12
  %481 = zext i8 %480 to i32
  %482 = getelementptr inbounds i8, ptr %402, i64 %377
  %483 = load i8, ptr %482, align 1, !tbaa !12
  %484 = zext i8 %483 to i32
  %485 = getelementptr inbounds i8, ptr %402, i64 %375
  %486 = load i8, ptr %485, align 1, !tbaa !12
  %487 = zext i8 %486 to i32
  %488 = sub nsw i32 %484, %487
  %489 = mul nsw i32 %488, 3
  %490 = getelementptr i8, ptr %401, i64 8
  %491 = load ptr, ptr %490, align 8, !tbaa !23
  %492 = getelementptr inbounds i8, ptr %491, i64 %377
  %493 = load i8, ptr %492, align 1, !tbaa !12
  %494 = zext i8 %493 to i32
  %495 = getelementptr inbounds i8, ptr %491, i64 %375
  %496 = load i8, ptr %495, align 1, !tbaa !12
  %497 = zext i8 %496 to i32
  %498 = add nuw nsw i32 %478, %494
  %499 = add nuw nsw i32 %481, %497
  %500 = sub nsw i32 %498, %499
  %501 = shl nsw i32 %500, 1
  %502 = add nsw i32 %501, %489
  %503 = tail call i32 @llvm.abs.i32(i32 %502, i1 true)
  %504 = icmp ugt i32 %503, %439
  br i1 %504, label %.critedge1527.us.sink.split, label %505

505:                                              ; preds = %473
  %506 = getelementptr inbounds i8, ptr %406, i64 %378
  %507 = load i8, ptr %506, align 1, !tbaa !12
  %508 = zext i8 %507 to i32
  %509 = getelementptr inbounds i8, ptr %412, i64 %376
  %510 = load i8, ptr %509, align 1, !tbaa !12
  %511 = zext i8 %510 to i32
  %512 = getelementptr inbounds i8, ptr %406, i64 %377
  %513 = load i8, ptr %512, align 1, !tbaa !12
  %514 = zext i8 %513 to i32
  %515 = getelementptr inbounds i8, ptr %412, i64 %375
  %516 = load i8, ptr %515, align 1, !tbaa !12
  %517 = zext i8 %516 to i32
  %518 = sub nsw i32 %514, %517
  %519 = mul nsw i32 %518, 3
  %520 = getelementptr inbounds i8, ptr %457, i64 %377
  %521 = load i8, ptr %520, align 1, !tbaa !12
  %522 = zext i8 %521 to i32
  %523 = getelementptr inbounds i8, ptr %462, i64 %375
  %524 = load i8, ptr %523, align 1, !tbaa !12
  %525 = zext i8 %524 to i32
  %526 = add nuw nsw i32 %508, %522
  %527 = add nuw nsw i32 %511, %525
  %528 = sub nsw i32 %526, %527
  %529 = shl nsw i32 %528, 1
  %530 = add nsw i32 %529, %519
  %531 = tail call i32 @llvm.abs.i32(i32 %530, i1 true)
  %532 = icmp ugt i32 %531, %439
  br i1 %532, label %.critedge1527.us.sink.split, label %397

.critedge1527.us.sink.split:                      ; preds = %398, %441, %473, %505
  %533 = load ptr, ptr %51, align 8, !tbaa !23
  %534 = getelementptr inbounds ptr, ptr %533, i64 %indvars.iv1618
  %535 = load ptr, ptr %534, align 8, !tbaa !23
  %536 = getelementptr inbounds i8, ptr %535, i64 %indvars.iv1621
  store i8 -1, ptr %536, align 1, !tbaa !12
  br label %.critedge1527.us

.critedge1527.us:                                 ; preds = %397, %.critedge1527.us.sink.split
  %indvars.iv.next1619 = add nsw i64 %indvars.iv1618, 1
  %.pre1652 = load ptr, ptr %37, align 8, !tbaa !18
  br label %.preheader1563.split.us, !llvm.loop !28

.preheader1563.split:                             ; preds = %.preheader1563, %.critedge1527.loopexit
  %537 = phi ptr [ %.pre1651, %.critedge1527.loopexit ], [ %370, %.preheader1563 ]
  %.pre16531656 = phi ptr [ %.pre1651, %.critedge1527.loopexit ], [ %.pre16531658, %.preheader1563 ]
  %538 = phi ptr [ %.pre1651, %.critedge1527.loopexit ], [ %371, %.preheader1563 ]
  %539 = phi ptr [ %.pre1651, %.critedge1527.loopexit ], [ %372, %.preheader1563 ]
  %540 = phi ptr [ %.pre1651, %.critedge1527.loopexit ], [ %373, %.preheader1563 ]
  %indvars.iv1610 = phi i64 [ %indvars.iv.next1611, %.critedge1527.loopexit ], [ %63, %.preheader1563 ]
  %541 = icmp eq ptr %540, null
  br i1 %541, label %542, label %.thread1533

542:                                              ; preds = %.preheader1563.split
  %543 = load i32, ptr %48, align 4, !tbaa !5
  br label %.thread1534

.thread1533:                                      ; preds = %.preheader1563.split
  %544 = getelementptr inbounds i8, ptr %540, i64 8
  %545 = load ptr, ptr %544, align 8, !tbaa !12
  %546 = getelementptr inbounds i8, ptr %545, i64 6
  %547 = load i16, ptr %546, align 2, !tbaa !19
  %548 = sext i16 %547 to i32
  br label %.thread1534

.thread1534:                                      ; preds = %.thread1533, %542
  %.sink1742 = phi i32 [ %548, %.thread1533 ], [ %543, %542 ]
  %spec.select1734 = tail call i32 @llvm.smin.i32(i32 %126, i32 %.sink1742)
  %549 = sext i32 %spec.select1734 to i64
  %550 = icmp slt i64 %indvars.iv1610, %549
  br i1 %550, label %.critedge1527.loopexit, label %.split1575.us

.split1575.us:                                    ; preds = %.thread1534, %.thread1534.us
  %551 = phi ptr [ %379, %.thread1534.us ], [ %537, %.thread1534 ]
  %.pre16531655 = phi ptr [ %.pre16531657, %.thread1534.us ], [ %.pre16531656, %.thread1534 ]
  %552 = phi ptr [ %380, %.thread1534.us ], [ %538, %.thread1534 ]
  %553 = phi ptr [ %381, %.thread1534.us ], [ %539, %.thread1534 ]
  %554 = phi ptr [ %381, %.thread1534.us ], [ %540, %.thread1534 ]
  %exitcond1625.not = icmp eq i64 %indvars.iv.next1622, %wide.trip.count1624
  br i1 %exitcond1625.not, label %.preheader1565, label %.preheader1563, !llvm.loop !29

.critedge1527.loopexit:                           ; preds = %.thread1534
  %555 = load ptr, ptr %51, align 8, !tbaa !23
  %556 = getelementptr inbounds ptr, ptr %555, i64 %indvars.iv1610
  %557 = load ptr, ptr %556, align 8, !tbaa !23
  %558 = getelementptr inbounds i8, ptr %557, i64 %indvars.iv1621
  store i8 0, ptr %558, align 1, !tbaa !12
  %indvars.iv.next1611 = add nsw i64 %indvars.iv1610, 1
  %.pre1651 = load ptr, ptr %37, align 8, !tbaa !18
  br label %.preheader1563.split, !llvm.loop !28

.preheader:                                       ; preds = %.preheader.lr.ph, %.split1581.us
  %559 = phi ptr [ %358, %.preheader.lr.ph ], [ %762, %.split1581.us ]
  %.pre16531667 = phi ptr [ %.pre16531654, %.preheader.lr.ph ], [ %.pre16531668, %.split1581.us ]
  %560 = phi ptr [ %359, %.preheader.lr.ph ], [ %763, %.split1581.us ]
  %indvars.iv1637 = phi i64 [ %367, %.preheader.lr.ph ], [ %indvars.iv.next1638, %.split1581.us ]
  %561 = add nsw i64 %indvars.iv1637, -1
  %indvars.iv.next1638 = add nsw i64 %indvars.iv1637, 1
  %562 = add nsw i64 %indvars.iv1637, %53
  %563 = add nsw i64 %562, -1
  %564 = sub nsw i64 %indvars.iv1637, %53
  %565 = add nsw i64 %564, 1
  br i1 %52, label %.preheader.split.us, label %.preheader.split

.preheader.split.us:                              ; preds = %.preheader, %.critedge1529.us
  %566 = phi ptr [ %.pre1671, %.critedge1529.us ], [ %559, %.preheader ]
  %indvars.iv1634 = phi i64 [ %indvars.iv.next1635, %.critedge1529.us ], [ %63, %.preheader ]
  %567 = icmp eq ptr %566, null
  br i1 %567, label %575, label %.thread1535.us

.thread1535.us:                                   ; preds = %.preheader.split.us
  %568 = getelementptr inbounds i8, ptr %566, i64 8
  %569 = load ptr, ptr %568, align 8, !tbaa !12
  %570 = getelementptr inbounds i8, ptr %569, i64 6
  %571 = load i16, ptr %570, align 2, !tbaa !19
  %572 = sext i16 %571 to i32
  %spec.select1735 = tail call i32 @llvm.smin.i32(i32 %366, i32 %572)
  %573 = sext i32 %spec.select1735 to i64
  %574 = icmp slt i64 %indvars.iv1634, %573
  br i1 %574, label %581, label %.split1581.us

575:                                              ; preds = %.preheader.split.us
  %576 = load i32, ptr %48, align 4, !tbaa !5
  %577 = icmp slt i32 %366, %576
  br i1 %577, label %.thread1684, label %.thread1537.us

.thread1537.us:                                   ; preds = %575
  %578 = sext i32 %576 to i64
  %579 = icmp slt i64 %indvars.iv1634, %578
  br i1 %579, label %.thread1538.us, label %.split1581.us

.thread1684:                                      ; preds = %575
  %580 = icmp slt i64 %indvars.iv1634, %369
  br i1 %580, label %.thread1538.us, label %.split1581.us

581:                                              ; preds = %.thread1535.us
  br i1 %567, label %.thread1538.us, label %582

582:                                              ; preds = %581
  %583 = getelementptr inbounds i8, ptr %566, i64 8
  %584 = load ptr, ptr %583, align 8, !tbaa !12
  %.idx1676 = shl i64 %indvars.iv1634, 2
  %585 = getelementptr i8, ptr %584, i64 %.idx1676
  %586 = getelementptr i8, ptr %585, i64 10
  %587 = load i16, ptr %586, align 2, !tbaa !19
  %588 = sext i16 %587 to i32
  br label %590

.thread1538.us:                                   ; preds = %.thread1684, %581, %.thread1537.us
  %589 = load i32, ptr %49, align 8, !tbaa !11
  br label %590

590:                                              ; preds = %.thread1538.us, %582
  %591 = phi i32 [ %589, %.thread1538.us ], [ %588, %582 ]
  %592 = sext i32 %591 to i64
  %593 = icmp slt i64 %indvars.iv1637, %592
  br i1 %593, label %.lr.ph.us1579, label %.critedge1529.us

.lr.ph.us1579:                                    ; preds = %590
  %594 = load ptr, ptr %51, align 8, !tbaa !23
  %595 = getelementptr inbounds ptr, ptr %594, i64 %indvars.iv1634
  %596 = load ptr, ptr %595, align 8, !tbaa !23
  %597 = getelementptr inbounds i8, ptr %596, i64 %indvars.iv1637
  store i8 0, ptr %597, align 1, !tbaa !12
  %598 = sub nsw i64 %indvars.iv1634, %53
  br label %600

599:                                              ; preds = %707
  %indvars.iv.next1630 = add nuw nsw i64 %indvars.iv1629, 1
  %exitcond1633.not = icmp eq i64 %indvars.iv.next1630, %wide.trip.count1632
  br i1 %exitcond1633.not, label %.critedge1529.us, label %600, !llvm.loop !30

600:                                              ; preds = %.lr.ph.us1579, %599
  %indvars.iv1629 = phi i64 [ 0, %.lr.ph.us1579 ], [ %indvars.iv.next1630, %599 ]
  %601 = getelementptr inbounds ptr, ptr %36, i64 %indvars.iv1629
  %602 = load ptr, ptr %601, align 8, !tbaa !23
  %603 = getelementptr inbounds ptr, ptr %602, i64 %indvars.iv1634
  %604 = load ptr, ptr %603, align 8, !tbaa !23
  %605 = getelementptr inbounds i8, ptr %604, i64 %indvars.iv1637
  %606 = load i8, ptr %605, align 1, !tbaa !12
  %607 = getelementptr ptr, ptr %602, i64 %598
  %608 = load ptr, ptr %607, align 8, !tbaa !23
  %609 = getelementptr inbounds i8, ptr %608, i64 %561
  %610 = load i8, ptr %609, align 1, !tbaa !12
  %611 = zext i8 %610 to i32
  %612 = getelementptr ptr, ptr %602, i64 %indvars.iv1634
  %613 = getelementptr ptr, ptr %612, i64 %53
  %614 = load ptr, ptr %613, align 8, !tbaa !23
  %615 = getelementptr inbounds i8, ptr %614, i64 %561
  %616 = load i8, ptr %615, align 1, !tbaa !12
  %617 = zext i8 %616 to i32
  %618 = getelementptr inbounds i8, ptr %608, i64 %indvars.iv1637
  %619 = load i8, ptr %618, align 1, !tbaa !12
  %620 = zext i8 %619 to i32
  %621 = getelementptr inbounds i8, ptr %614, i64 %indvars.iv1637
  %622 = load i8, ptr %621, align 1, !tbaa !12
  %623 = zext i8 %622 to i32
  %624 = sub nsw i32 %620, %623
  %625 = mul nsw i32 %624, 3
  %626 = getelementptr inbounds i8, ptr %608, i64 %indvars.iv.next1638
  %627 = load i8, ptr %626, align 1, !tbaa !12
  %628 = zext i8 %627 to i32
  %629 = getelementptr inbounds i8, ptr %614, i64 %indvars.iv.next1638
  %630 = load i8, ptr %629, align 1, !tbaa !12
  %631 = zext i8 %630 to i32
  %632 = add nuw nsw i32 %611, %628
  %633 = add nuw nsw i32 %617, %631
  %634 = sub nsw i32 %632, %633
  %635 = shl nsw i32 %634, 1
  %636 = add nsw i32 %635, %625
  %637 = tail call i32 @llvm.abs.i32(i32 %636, i1 true)
  %638 = zext i8 %606 to i64
  %639 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %638
  %640 = load i8, ptr %639, align 1, !tbaa !12
  %641 = zext i8 %640 to i32
  %642 = icmp ugt i32 %637, %641
  br i1 %642, label %.critedge1529.us.sink.split, label %643

643:                                              ; preds = %600
  %644 = getelementptr inbounds i8, ptr %608, i64 %563
  %645 = load i8, ptr %644, align 1, !tbaa !12
  %646 = zext i8 %645 to i32
  %647 = getelementptr inbounds i8, ptr %614, i64 %565
  %648 = load i8, ptr %647, align 1, !tbaa !12
  %649 = zext i8 %648 to i32
  %650 = getelementptr inbounds i8, ptr %608, i64 %562
  %651 = load i8, ptr %650, align 1, !tbaa !12
  %652 = zext i8 %651 to i32
  %653 = getelementptr inbounds i8, ptr %614, i64 %564
  %654 = load i8, ptr %653, align 1, !tbaa !12
  %655 = zext i8 %654 to i32
  %656 = sub nsw i32 %652, %655
  %657 = mul nsw i32 %656, 3
  %658 = getelementptr i8, ptr %607, i64 8
  %659 = load ptr, ptr %658, align 8, !tbaa !23
  %660 = getelementptr inbounds i8, ptr %659, i64 %562
  %661 = load i8, ptr %660, align 1, !tbaa !12
  %662 = zext i8 %661 to i32
  %663 = getelementptr i8, ptr %613, i64 -8
  %664 = load ptr, ptr %663, align 8, !tbaa !23
  %665 = getelementptr inbounds i8, ptr %664, i64 %564
  %666 = load i8, ptr %665, align 1, !tbaa !12
  %667 = zext i8 %666 to i32
  %668 = add nuw nsw i32 %646, %662
  %669 = add nuw nsw i32 %649, %667
  %670 = sub nsw i32 %668, %669
  %671 = shl nsw i32 %670, 1
  %672 = add nsw i32 %671, %657
  %673 = tail call i32 @llvm.abs.i32(i32 %672, i1 true)
  %674 = icmp ugt i32 %673, %641
  br i1 %674, label %.critedge1529.us.sink.split, label %675

675:                                              ; preds = %643
  %676 = getelementptr i8, ptr %603, i64 -8
  %677 = load ptr, ptr %676, align 8, !tbaa !23
  %678 = getelementptr inbounds i8, ptr %677, i64 %564
  %679 = load i8, ptr %678, align 1, !tbaa !12
  %680 = zext i8 %679 to i32
  %681 = getelementptr inbounds i8, ptr %677, i64 %562
  %682 = load i8, ptr %681, align 1, !tbaa !12
  %683 = zext i8 %682 to i32
  %684 = getelementptr inbounds i8, ptr %604, i64 %564
  %685 = load i8, ptr %684, align 1, !tbaa !12
  %686 = zext i8 %685 to i32
  %687 = getelementptr inbounds i8, ptr %604, i64 %562
  %688 = load i8, ptr %687, align 1, !tbaa !12
  %689 = zext i8 %688 to i32
  %690 = sub nsw i32 %686, %689
  %691 = mul nsw i32 %690, 3
  %692 = getelementptr i8, ptr %603, i64 8
  %693 = load ptr, ptr %692, align 8, !tbaa !23
  %694 = getelementptr inbounds i8, ptr %693, i64 %564
  %695 = load i8, ptr %694, align 1, !tbaa !12
  %696 = zext i8 %695 to i32
  %697 = getelementptr inbounds i8, ptr %693, i64 %562
  %698 = load i8, ptr %697, align 1, !tbaa !12
  %699 = zext i8 %698 to i32
  %700 = add nuw nsw i32 %680, %696
  %701 = add nuw nsw i32 %683, %699
  %702 = sub nsw i32 %700, %701
  %703 = shl nsw i32 %702, 1
  %704 = add nsw i32 %703, %691
  %705 = tail call i32 @llvm.abs.i32(i32 %704, i1 true)
  %706 = icmp ugt i32 %705, %641
  br i1 %706, label %.critedge1529.us.sink.split, label %707

707:                                              ; preds = %675
  %708 = getelementptr inbounds i8, ptr %608, i64 %565
  %709 = load i8, ptr %708, align 1, !tbaa !12
  %710 = zext i8 %709 to i32
  %711 = getelementptr inbounds i8, ptr %614, i64 %563
  %712 = load i8, ptr %711, align 1, !tbaa !12
  %713 = zext i8 %712 to i32
  %714 = getelementptr inbounds i8, ptr %608, i64 %564
  %715 = load i8, ptr %714, align 1, !tbaa !12
  %716 = zext i8 %715 to i32
  %717 = getelementptr inbounds i8, ptr %614, i64 %562
  %718 = load i8, ptr %717, align 1, !tbaa !12
  %719 = zext i8 %718 to i32
  %720 = sub nsw i32 %716, %719
  %721 = mul nsw i32 %720, 3
  %722 = getelementptr inbounds i8, ptr %659, i64 %564
  %723 = load i8, ptr %722, align 1, !tbaa !12
  %724 = zext i8 %723 to i32
  %725 = getelementptr inbounds i8, ptr %664, i64 %562
  %726 = load i8, ptr %725, align 1, !tbaa !12
  %727 = zext i8 %726 to i32
  %728 = add nuw nsw i32 %710, %724
  %729 = add nuw nsw i32 %713, %727
  %730 = sub nsw i32 %728, %729
  %731 = shl nsw i32 %730, 1
  %732 = add nsw i32 %731, %721
  %733 = tail call i32 @llvm.abs.i32(i32 %732, i1 true)
  %734 = icmp ugt i32 %733, %641
  br i1 %734, label %.critedge1529.us.sink.split, label %599

.critedge1529.us.sink.split:                      ; preds = %600, %643, %675, %707
  %735 = load ptr, ptr %51, align 8, !tbaa !23
  %736 = getelementptr inbounds ptr, ptr %735, i64 %indvars.iv1634
  %737 = load ptr, ptr %736, align 8, !tbaa !23
  %738 = getelementptr inbounds i8, ptr %737, i64 %indvars.iv1637
  store i8 -1, ptr %738, align 1, !tbaa !12
  br label %.critedge1529.us

.critedge1529.us:                                 ; preds = %599, %.critedge1529.us.sink.split, %590
  %indvars.iv.next1635 = add nsw i64 %indvars.iv1634, 1
  %.pre1671 = load ptr, ptr %37, align 8, !tbaa !18
  br label %.preheader.split.us, !llvm.loop !31

._crit_edge:                                      ; preds = %.split1581.us, %.preheader1565
  %739 = phi ptr [ %358, %.preheader1565 ], [ %762, %.split1581.us ]
  %.pre16531666 = phi ptr [ %.pre16531654, %.preheader1565 ], [ %.pre16531668, %.split1581.us ]
  %740 = phi ptr [ %359, %.preheader1565 ], [ %763, %.split1581.us ]
  %741 = phi ptr [ %360, %.preheader1565 ], [ %763, %.split1581.us ]
  %742 = phi ptr [ %361, %.preheader1565 ], [ %763, %.split1581.us ]
  %743 = phi ptr [ %362, %.preheader1565 ], [ %763, %.split1581.us ]
  %.pre1643 = phi ptr [ %.pre1644, %.preheader1565 ], [ %763, %.split1581.us ]
  %744 = phi ptr [ %363, %.preheader1565 ], [ %763, %.split1581.us ]
  %745 = phi ptr [ %364, %.preheader1565 ], [ %763, %.split1581.us ]
  br label %54, !llvm.loop !32

.preheader.split:                                 ; preds = %.preheader, %.critedge1529
  %746 = phi ptr [ %781, %.critedge1529 ], [ %559, %.preheader ]
  %.pre16531669 = phi ptr [ %.pre1653, %.critedge1529 ], [ %.pre16531667, %.preheader ]
  %747 = phi ptr [ %.pre1653, %.critedge1529 ], [ %560, %.preheader ]
  %indvars.iv1626 = phi i64 [ %indvars.iv.next1627, %.critedge1529 ], [ %63, %.preheader ]
  %748 = icmp eq ptr %747, null
  br i1 %748, label %749, label %.thread1535

749:                                              ; preds = %.preheader.split
  %750 = load i32, ptr %48, align 4, !tbaa !5
  %751 = icmp slt i32 %366, %750
  br i1 %751, label %.thread1686, label %.thread1537

.thread1535:                                      ; preds = %.preheader.split
  %752 = getelementptr inbounds i8, ptr %747, i64 8
  %753 = load ptr, ptr %752, align 8, !tbaa !12
  %754 = getelementptr inbounds i8, ptr %753, i64 6
  %755 = load i16, ptr %754, align 2, !tbaa !19
  %756 = sext i16 %755 to i32
  %spec.select1738 = tail call i32 @llvm.smin.i32(i32 %366, i32 %756)
  %757 = sext i32 %spec.select1738 to i64
  %758 = icmp slt i64 %indvars.iv1626, %757
  br i1 %758, label %764, label %.split1581.us

.thread1686:                                      ; preds = %749
  %759 = icmp slt i64 %indvars.iv1626, %368
  br i1 %759, label %.thread1538, label %.split1581.us

.thread1537:                                      ; preds = %749
  %760 = sext i32 %750 to i64
  %761 = icmp slt i64 %indvars.iv1626, %760
  br i1 %761, label %.thread1538, label %.split1581.us

.split1581.us:                                    ; preds = %.thread1686, %.thread1535, %.thread1537, %.thread1537.us, %.thread1535.us, %.thread1684
  %762 = phi ptr [ null, %.thread1537.us ], [ %566, %.thread1535.us ], [ null, %.thread1684 ], [ %746, %.thread1537 ], [ %746, %.thread1535 ], [ %746, %.thread1686 ]
  %.pre16531668 = phi ptr [ null, %.thread1537.us ], [ %566, %.thread1535.us ], [ null, %.thread1684 ], [ %.pre16531669, %.thread1537 ], [ %.pre16531669, %.thread1535 ], [ %.pre16531669, %.thread1686 ]
  %763 = phi ptr [ null, %.thread1537.us ], [ %566, %.thread1535.us ], [ null, %.thread1684 ], [ null, %.thread1686 ], [ %747, %.thread1535 ], [ null, %.thread1537 ]
  %exitcond1641.not = icmp eq i64 %indvars.iv.next1638, %wide.trip.count1640
  br i1 %exitcond1641.not, label %._crit_edge, label %.preheader, !llvm.loop !33

764:                                              ; preds = %.thread1535
  br i1 %748, label %.thread1538, label %766

.thread1538:                                      ; preds = %.thread1686, %.thread1537, %764
  %765 = load i32, ptr %49, align 8, !tbaa !11
  br label %773

766:                                              ; preds = %764
  %767 = getelementptr inbounds i8, ptr %747, i64 8
  %768 = load ptr, ptr %767, align 8, !tbaa !12
  %.idx1675 = shl i64 %indvars.iv1626, 2
  %769 = getelementptr i8, ptr %768, i64 %.idx1675
  %770 = getelementptr i8, ptr %769, i64 10
  %771 = load i16, ptr %770, align 2, !tbaa !19
  %772 = sext i16 %771 to i32
  br label %773

773:                                              ; preds = %766, %.thread1538
  %774 = phi i32 [ %765, %.thread1538 ], [ %772, %766 ]
  %775 = sext i32 %774 to i64
  %776 = icmp slt i64 %indvars.iv1637, %775
  br i1 %776, label %.critedge1529.loopexit, label %.critedge1529

.critedge1529.loopexit:                           ; preds = %773
  %777 = load ptr, ptr %51, align 8, !tbaa !23
  %778 = getelementptr inbounds ptr, ptr %777, i64 %indvars.iv1626
  %779 = load ptr, ptr %778, align 8, !tbaa !23
  %780 = getelementptr inbounds i8, ptr %779, i64 %indvars.iv1637
  store i8 0, ptr %780, align 1, !tbaa !12
  %.pre1653.pre = load ptr, ptr %37, align 8, !tbaa !18
  br label %.critedge1529

.critedge1529:                                    ; preds = %.critedge1529.loopexit, %773
  %781 = phi ptr [ %.pre1653.pre, %.critedge1529.loopexit ], [ %746, %773 ]
  %.pre1653 = phi ptr [ %.pre1653.pre, %.critedge1529.loopexit ], [ %.pre16531669, %773 ]
  %indvars.iv.next1627 = add nsw i64 %indvars.iv1626, 1
  br label %.preheader.split, !llvm.loop !31

782:                                              ; preds = %.thread1678, %65
  %.not = icmp eq ptr %.0, %1
  br i1 %.not, label %784, label %783

783:                                              ; preds = %782
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(56) %0, i64 56, i1 false), !tbaa.struct !34
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %.0, i64 56, i1 false), !tbaa.struct !34
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %.0, ptr noundef nonnull align 8 dereferenceable(56) %6, i64 56, i1 false), !tbaa.struct !34
  tail call void @HandleExchange(ptr noundef nonnull %0, ptr noundef %.0) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6)
  tail call void @mImageRelease(ptr noundef %.0) #5
  br label %784

784:                                              ; preds = %783, %782
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #5
  ret void
}

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

; 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.abs.i32(i32, i1 immarg) #4

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.smax.v4i32(<4 x i32>) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.smin.v4i32(<4 x i32>) #4

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


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