; LLVM IR from rdguez-mariano/fast_imas_IPOL :: io_png/libs/png (pngwutil)

; 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.png_struct_def = type { [1 x %struct.__jmp_buf_tag], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i64, i64, i64, %struct.z_stream_s, ptr, i64, i32, i32, i32, i32, i32, i64, i64, i64, i64, i64, i64, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, %struct.png_row_info_struct, i64, i64, ptr, i16, i16, [5 x i8], i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i8, float, %struct.png_color_16_struct, %struct.png_color_16_struct, ptr, i64, i64, i32, float, float, ptr, ptr, ptr, ptr, ptr, ptr, %struct.png_color_8_struct, %struct.png_color_8_struct, ptr, %struct.png_color_16_struct, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i64, i64, i64, i64, i32, i32, i64, i64, ptr, ptr, ptr, ptr, ptr, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, i64, ptr, ptr, i32, ptr, i8, i16, i16, i16, i64, i64, i8, i8, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i64, i64, %struct.png_unknown_chunk_t, i64, i64, ptr }
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }
%struct.z_stream_s = type { ptr, i32, i64, ptr, i32, i64, ptr, ptr, ptr, ptr, ptr, i32, i64, i64 }
%struct.png_row_info_struct = type { i64, i64, i8, i8, i8, i8 }
%struct.png_color_8_struct = type { i8, i8, i8, i8, i8 }
%struct.png_color_16_struct = type { i8, i16, i16, i16, i16 }
%struct.png_unknown_chunk_t = type { [5 x i8], ptr, i64, i8 }

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

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

; Function Attrs: nounwind uwtable
define dso_local void @png_write_find_filter(ptr noundef %0, ptr noundef %1) #1 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i8, align 1
  %11 = alloca i64, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i32, align 4
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i64, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i32, align 4
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca i64, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i32, align 4
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i64, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i32, align 4
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca ptr, align 8
  %76 = alloca ptr, align 8
  %77 = alloca ptr, align 8
  %78 = alloca i64, align 8
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca ptr, align 8
  %87 = alloca ptr, align 8
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca ptr, align 8
  %91 = alloca i64, align 8
  %92 = alloca i64, align 8
  %93 = alloca i64, align 8
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i64, align 8
  %97 = alloca i64, align 8
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca i64, align 8
  %108 = alloca i64, align 8
  %109 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #2
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #2
  %110 = load ptr, ptr %3, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.png_struct_def, ptr %110, i32 0, i32 48
  %112 = load i8, ptr %111, align 1, !tbaa !9
  store i8 %112, ptr %10, align 1, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #2
  %113 = load ptr, ptr %4, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.png_row_info_struct, ptr %113, i32 0, i32 1
  %115 = load i64, ptr %114, align 8, !tbaa !21
  store i64 %115, ptr %11, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #2
  %116 = load ptr, ptr %3, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.png_struct_def, ptr %116, i32 0, i32 102
  %118 = load i8, ptr %117, align 1, !tbaa !23
  %119 = zext i8 %118 to i32
  store i32 %119, ptr %12, align 4, !tbaa !24
  %120 = load ptr, ptr %4, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.png_row_info_struct, ptr %120, i32 0, i32 5
  %122 = load i8, ptr %121, align 1, !tbaa !25
  %123 = zext i8 %122 to i32
  %124 = add nsw i32 %123, 7
  %125 = ashr i32 %124, 3
  %126 = sext i32 %125 to i64
  store i64 %126, ptr %9, align 8, !tbaa !22
  %127 = load ptr, ptr %3, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.png_struct_def, ptr %127, i32 0, i32 31
  %129 = load ptr, ptr %128, align 8, !tbaa !26
  store ptr %129, ptr %6, align 8, !tbaa !5
  %130 = load ptr, ptr %3, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.png_struct_def, ptr %130, i32 0, i32 32
  %132 = load ptr, ptr %131, align 8, !tbaa !27
  store ptr %132, ptr %5, align 8, !tbaa !5
  %133 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %133, ptr %7, align 8, !tbaa !5
  store i64 9223372036854775807, ptr %8, align 8, !tbaa !22
  %134 = load i8, ptr %10, align 1, !tbaa !20
  %135 = zext i8 %134 to i32
  %136 = and i32 %135, 8
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %138, label %253

138:                                              ; preds = %2
  %139 = load i8, ptr %10, align 1, !tbaa !20
  %140 = zext i8 %139 to i32
  %141 = icmp ne i32 %140, 8
  br i1 %141, label %142, label %253

142:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #2
  store i64 0, ptr %14, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #2
  store i64 0, ptr %15, align 8, !tbaa !22
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = getelementptr inbounds i8, ptr %143, i64 1
  store ptr %144, ptr %13, align 8, !tbaa !5
  br label %145

145:                                              ; preds = %165, %142
  %146 = load i64, ptr %15, align 8, !tbaa !22
  %147 = load i64, ptr %11, align 8, !tbaa !22
  %148 = icmp ult i64 %146, %147
  br i1 %148, label %149, label %170

149:                                              ; preds = %145
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = load i8, ptr %150, align 1, !tbaa !20
  %152 = zext i8 %151 to i32
  store i32 %152, ptr %16, align 4, !tbaa !24
  %153 = load i32, ptr %16, align 4, !tbaa !24
  %154 = icmp slt i32 %153, 128
  br i1 %154, label %155, label %157

155:                                              ; preds = %149
  %156 = load i32, ptr %16, align 4, !tbaa !24
  br label %160

157:                                              ; preds = %149
  %158 = load i32, ptr %16, align 4, !tbaa !24
  %159 = sub nsw i32 256, %158
  br label %160

160:                                              ; preds = %157, %155
  %161 = phi i32 [ %156, %155 ], [ %159, %157 ]
  %162 = sext i32 %161 to i64
  %163 = load i64, ptr %14, align 8, !tbaa !22
  %164 = add i64 %163, %162
  store i64 %164, ptr %14, align 8, !tbaa !22
  br label %165

165:                                              ; preds = %160
  %166 = load i64, ptr %15, align 8, !tbaa !22
  %167 = add i64 %166, 1
  store i64 %167, ptr %15, align 8, !tbaa !22
  %168 = load ptr, ptr %13, align 8, !tbaa !5
  %169 = getelementptr inbounds i8, ptr %168, i32 1
  store ptr %169, ptr %13, align 8, !tbaa !5
  br label %145, !llvm.loop !28

170:                                              ; preds = %145
  %171 = load ptr, ptr %3, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.png_struct_def, ptr %171, i32 0, i32 101
  %173 = load i8, ptr %172, align 8, !tbaa !30
  %174 = zext i8 %173 to i32
  %175 = icmp eq i32 %174, 2
  br i1 %175, label %176, label %251

176:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #2
  %177 = load i64, ptr %14, align 8, !tbaa !22
  %178 = and i64 %177, 65535
  store i64 %178, ptr %18, align 8, !tbaa !22
  %179 = load i64, ptr %14, align 8, !tbaa !22
  %180 = lshr i64 %179, 10
  %181 = and i64 %180, 18014398509481920
  store i64 %181, ptr %17, align 8, !tbaa !22
  store i32 0, ptr %19, align 4, !tbaa !24
  br label %182

182:                                              ; preds = %220, %176
  %183 = load i32, ptr %19, align 4, !tbaa !24
  %184 = load i32, ptr %12, align 4, !tbaa !24
  %185 = icmp slt i32 %183, %184
  br i1 %185, label %186, label %223

186:                                              ; preds = %182
  %187 = load ptr, ptr %3, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.png_struct_def, ptr %187, i32 0, i32 103
  %189 = load ptr, ptr %188, align 8, !tbaa !31
  %190 = load i32, ptr %19, align 4, !tbaa !24
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds i8, ptr %189, i64 %191
  %193 = load i8, ptr %192, align 1, !tbaa !20
  %194 = zext i8 %193 to i32
  %195 = icmp eq i32 %194, 0
  br i1 %195, label %196, label %219

196:                                              ; preds = %186
  %197 = load i64, ptr %18, align 8, !tbaa !22
  %198 = load ptr, ptr %3, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.png_struct_def, ptr %198, i32 0, i32 104
  %200 = load ptr, ptr %199, align 8, !tbaa !32
  %201 = load i32, ptr %19, align 4, !tbaa !24
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds i16, ptr %200, i64 %202
  %204 = load i16, ptr %203, align 2, !tbaa !33
  %205 = zext i16 %204 to i64
  %206 = mul i64 %197, %205
  %207 = lshr i64 %206, 8
  store i64 %207, ptr %18, align 8, !tbaa !22
  %208 = load i64, ptr %17, align 8, !tbaa !22
  %209 = load ptr, ptr %3, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.png_struct_def, ptr %209, i32 0, i32 104
  %211 = load ptr, ptr %210, align 8, !tbaa !32
  %212 = load i32, ptr %19, align 4, !tbaa !24
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds i16, ptr %211, i64 %213
  %215 = load i16, ptr %214, align 2, !tbaa !33
  %216 = zext i16 %215 to i64
  %217 = mul i64 %208, %216
  %218 = lshr i64 %217, 8
  store i64 %218, ptr %17, align 8, !tbaa !22
  br label %219

219:                                              ; preds = %196, %186
  br label %220

220:                                              ; preds = %219
  %221 = load i32, ptr %19, align 4, !tbaa !24
  %222 = add nsw i32 %221, 1
  store i32 %222, ptr %19, align 4, !tbaa !24
  br label %182, !llvm.loop !34

223:                                              ; preds = %182
  %224 = load i64, ptr %18, align 8, !tbaa !22
  %225 = load ptr, ptr %3, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.png_struct_def, ptr %225, i32 0, i32 106
  %227 = load ptr, ptr %226, align 8, !tbaa !35
  %228 = getelementptr inbounds i16, ptr %227, i64 0
  %229 = load i16, ptr %228, align 2, !tbaa !33
  %230 = zext i16 %229 to i64
  %231 = mul i64 %224, %230
  %232 = lshr i64 %231, 3
  store i64 %232, ptr %18, align 8, !tbaa !22
  %233 = load i64, ptr %17, align 8, !tbaa !22
  %234 = load ptr, ptr %3, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.png_struct_def, ptr %234, i32 0, i32 106
  %236 = load ptr, ptr %235, align 8, !tbaa !35
  %237 = getelementptr inbounds i16, ptr %236, i64 0
  %238 = load i16, ptr %237, align 2, !tbaa !33
  %239 = zext i16 %238 to i64
  %240 = mul i64 %233, %239
  %241 = lshr i64 %240, 3
  store i64 %241, ptr %17, align 8, !tbaa !22
  %242 = load i64, ptr %17, align 8, !tbaa !22
  %243 = icmp ugt i64 %242, 18014398509481920
  br i1 %243, label %244, label %245

244:                                              ; preds = %223
  store i64 9223372036854775807, ptr %14, align 8, !tbaa !22
  br label %250

245:                                              ; preds = %223
  %246 = load i64, ptr %17, align 8, !tbaa !22
  %247 = shl i64 %246, 10
  %248 = load i64, ptr %18, align 8, !tbaa !22
  %249 = add i64 %247, %248
  store i64 %249, ptr %14, align 8, !tbaa !22
  br label %250

250:                                              ; preds = %245, %244
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #2
  br label %251

251:                                              ; preds = %250, %170
  %252 = load i64, ptr %14, align 8, !tbaa !22
  store i64 %252, ptr %8, align 8, !tbaa !22
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #2
  br label %253

253:                                              ; preds = %251, %138, %2
  %254 = load i8, ptr %10, align 1, !tbaa !20
  %255 = zext i8 %254 to i32
  %256 = icmp eq i32 %255, 16
  br i1 %256, label %257, label %310

257:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #2
  store i64 0, ptr %23, align 8, !tbaa !22
  %258 = load ptr, ptr %7, align 8, !tbaa !5
  %259 = getelementptr inbounds i8, ptr %258, i64 1
  store ptr %259, ptr %20, align 8, !tbaa !5
  %260 = load ptr, ptr %3, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.png_struct_def, ptr %260, i32 0, i32 33
  %262 = load ptr, ptr %261, align 8, !tbaa !36
  %263 = getelementptr inbounds i8, ptr %262, i64 1
  store ptr %263, ptr %22, align 8, !tbaa !5
  br label %264

264:                                              ; preds = %272, %257
  %265 = load i64, ptr %23, align 8, !tbaa !22
  %266 = load i64, ptr %9, align 8, !tbaa !22
  %267 = icmp ult i64 %265, %266
  br i1 %267, label %268, label %279

268:                                              ; preds = %264
  %269 = load ptr, ptr %20, align 8, !tbaa !5
  %270 = load i8, ptr %269, align 1, !tbaa !20
  %271 = load ptr, ptr %22, align 8, !tbaa !5
  store i8 %270, ptr %271, align 1, !tbaa !20
  br label %272

272:                                              ; preds = %268
  %273 = load i64, ptr %23, align 8, !tbaa !22
  %274 = add i64 %273, 1
  store i64 %274, ptr %23, align 8, !tbaa !22
  %275 = load ptr, ptr %20, align 8, !tbaa !5
  %276 = getelementptr inbounds i8, ptr %275, i32 1
  store ptr %276, ptr %20, align 8, !tbaa !5
  %277 = load ptr, ptr %22, align 8, !tbaa !5
  %278 = getelementptr inbounds i8, ptr %277, i32 1
  store ptr %278, ptr %22, align 8, !tbaa !5
  br label %264, !llvm.loop !37

279:                                              ; preds = %264
  %280 = load ptr, ptr %7, align 8, !tbaa !5
  %281 = getelementptr inbounds i8, ptr %280, i64 1
  store ptr %281, ptr %21, align 8, !tbaa !5
  br label %282

282:                                              ; preds = %297, %279
  %283 = load i64, ptr %23, align 8, !tbaa !22
  %284 = load i64, ptr %11, align 8, !tbaa !22
  %285 = icmp ult i64 %283, %284
  br i1 %285, label %286, label %306

286:                                              ; preds = %282
  %287 = load ptr, ptr %20, align 8, !tbaa !5
  %288 = load i8, ptr %287, align 1, !tbaa !20
  %289 = zext i8 %288 to i32
  %290 = load ptr, ptr %21, align 8, !tbaa !5
  %291 = load i8, ptr %290, align 1, !tbaa !20
  %292 = zext i8 %291 to i32
  %293 = sub nsw i32 %289, %292
  %294 = and i32 %293, 255
  %295 = trunc i32 %294 to i8
  %296 = load ptr, ptr %22, align 8, !tbaa !5
  store i8 %295, ptr %296, align 1, !tbaa !20
  br label %297

297:                                              ; preds = %286
  %298 = load i64, ptr %23, align 8, !tbaa !22
  %299 = add i64 %298, 1
  store i64 %299, ptr %23, align 8, !tbaa !22
  %300 = load ptr, ptr %20, align 8, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %300, i32 1
  store ptr %301, ptr %20, align 8, !tbaa !5
  %302 = load ptr, ptr %21, align 8, !tbaa !5
  %303 = getelementptr inbounds i8, ptr %302, i32 1
  store ptr %303, ptr %21, align 8, !tbaa !5
  %304 = load ptr, ptr %22, align 8, !tbaa !5
  %305 = getelementptr inbounds i8, ptr %304, i32 1
  store ptr %305, ptr %22, align 8, !tbaa !5
  br label %282, !llvm.loop !38

306:                                              ; preds = %282
  %307 = load ptr, ptr %3, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.png_struct_def, ptr %307, i32 0, i32 33
  %309 = load ptr, ptr %308, align 8, !tbaa !36
  store ptr %309, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #2
  br label %569

310:                                              ; preds = %253
  %311 = load i8, ptr %10, align 1, !tbaa !20
  %312 = zext i8 %311 to i32
  %313 = and i32 %312, 16
  %314 = icmp ne i32 %313, 0
  br i1 %314, label %315, label %568

315:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #2
  store i64 0, ptr %27, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #2
  %316 = load i64, ptr %8, align 8, !tbaa !22
  store i64 %316, ptr %28, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #2
  %317 = load ptr, ptr %3, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.png_struct_def, ptr %317, i32 0, i32 101
  %319 = load i8, ptr %318, align 8, !tbaa !30
  %320 = zext i8 %319 to i32
  %321 = icmp eq i32 %320, 2
  br i1 %321, label %322, label %397

322:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #2
  %323 = load i64, ptr %28, align 8, !tbaa !22
  %324 = and i64 %323, 65535
  store i64 %324, ptr %33, align 8, !tbaa !22
  %325 = load i64, ptr %28, align 8, !tbaa !22
  %326 = lshr i64 %325, 10
  %327 = and i64 %326, 18014398509481920
  store i64 %327, ptr %32, align 8, !tbaa !22
  store i32 0, ptr %31, align 4, !tbaa !24
  br label %328

328:                                              ; preds = %366, %322
  %329 = load i32, ptr %31, align 4, !tbaa !24
  %330 = load i32, ptr %12, align 4, !tbaa !24
  %331 = icmp slt i32 %329, %330
  br i1 %331, label %332, label %369

332:                                              ; preds = %328
  %333 = load ptr, ptr %3, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.png_struct_def, ptr %333, i32 0, i32 103
  %335 = load ptr, ptr %334, align 8, !tbaa !31
  %336 = load i32, ptr %31, align 4, !tbaa !24
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds i8, ptr %335, i64 %337
  %339 = load i8, ptr %338, align 1, !tbaa !20
  %340 = zext i8 %339 to i32
  %341 = icmp eq i32 %340, 1
  br i1 %341, label %342, label %365

342:                                              ; preds = %332
  %343 = load i64, ptr %33, align 8, !tbaa !22
  %344 = load ptr, ptr %3, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.png_struct_def, ptr %344, i32 0, i32 105
  %346 = load ptr, ptr %345, align 8, !tbaa !39
  %347 = load i32, ptr %31, align 4, !tbaa !24
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds i16, ptr %346, i64 %348
  %350 = load i16, ptr %349, align 2, !tbaa !33
  %351 = zext i16 %350 to i64
  %352 = mul i64 %343, %351
  %353 = lshr i64 %352, 8
  store i64 %353, ptr %33, align 8, !tbaa !22
  %354 = load i64, ptr %32, align 8, !tbaa !22
  %355 = load ptr, ptr %3, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.png_struct_def, ptr %355, i32 0, i32 105
  %357 = load ptr, ptr %356, align 8, !tbaa !39
  %358 = load i32, ptr %31, align 4, !tbaa !24
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds i16, ptr %357, i64 %359
  %361 = load i16, ptr %360, align 2, !tbaa !33
  %362 = zext i16 %361 to i64
  %363 = mul i64 %354, %362
  %364 = lshr i64 %363, 8
  store i64 %364, ptr %32, align 8, !tbaa !22
  br label %365

365:                                              ; preds = %342, %332
  br label %366

366:                                              ; preds = %365
  %367 = load i32, ptr %31, align 4, !tbaa !24
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %31, align 4, !tbaa !24
  br label %328, !llvm.loop !40

369:                                              ; preds = %328
  %370 = load i64, ptr %33, align 8, !tbaa !22
  %371 = load ptr, ptr %3, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.png_struct_def, ptr %371, i32 0, i32 107
  %373 = load ptr, ptr %372, align 8, !tbaa !41
  %374 = getelementptr inbounds i16, ptr %373, i64 1
  %375 = load i16, ptr %374, align 2, !tbaa !33
  %376 = zext i16 %375 to i64
  %377 = mul i64 %370, %376
  %378 = lshr i64 %377, 3
  store i64 %378, ptr %33, align 8, !tbaa !22
  %379 = load i64, ptr %32, align 8, !tbaa !22
  %380 = load ptr, ptr %3, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.png_struct_def, ptr %380, i32 0, i32 107
  %382 = load ptr, ptr %381, align 8, !tbaa !41
  %383 = getelementptr inbounds i16, ptr %382, i64 1
  %384 = load i16, ptr %383, align 2, !tbaa !33
  %385 = zext i16 %384 to i64
  %386 = mul i64 %379, %385
  %387 = lshr i64 %386, 3
  store i64 %387, ptr %32, align 8, !tbaa !22
  %388 = load i64, ptr %32, align 8, !tbaa !22
  %389 = icmp ugt i64 %388, 18014398509481920
  br i1 %389, label %390, label %391

390:                                              ; preds = %369
  store i64 9223372036854775807, ptr %28, align 8, !tbaa !22
  br label %396

391:                                              ; preds = %369
  %392 = load i64, ptr %32, align 8, !tbaa !22
  %393 = shl i64 %392, 10
  %394 = load i64, ptr %33, align 8, !tbaa !22
  %395 = add i64 %393, %394
  store i64 %395, ptr %28, align 8, !tbaa !22
  br label %396

396:                                              ; preds = %391, %390
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #2
  br label %397

397:                                              ; preds = %396, %315
  store i64 0, ptr %29, align 8, !tbaa !22
  %398 = load ptr, ptr %7, align 8, !tbaa !5
  %399 = getelementptr inbounds i8, ptr %398, i64 1
  store ptr %399, ptr %24, align 8, !tbaa !5
  %400 = load ptr, ptr %3, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.png_struct_def, ptr %400, i32 0, i32 33
  %402 = load ptr, ptr %401, align 8, !tbaa !36
  %403 = getelementptr inbounds i8, ptr %402, i64 1
  store ptr %403, ptr %25, align 8, !tbaa !5
  br label %404

404:                                              ; preds = %425, %397
  %405 = load i64, ptr %29, align 8, !tbaa !22
  %406 = load i64, ptr %9, align 8, !tbaa !22
  %407 = icmp ult i64 %405, %406
  br i1 %407, label %408, label %432

408:                                              ; preds = %404
  %409 = load ptr, ptr %24, align 8, !tbaa !5
  %410 = load i8, ptr %409, align 1, !tbaa !20
  %411 = load ptr, ptr %25, align 8, !tbaa !5
  store i8 %410, ptr %411, align 1, !tbaa !20
  %412 = zext i8 %410 to i32
  store i32 %412, ptr %30, align 4, !tbaa !24
  %413 = load i32, ptr %30, align 4, !tbaa !24
  %414 = icmp slt i32 %413, 128
  br i1 %414, label %415, label %417

415:                                              ; preds = %408
  %416 = load i32, ptr %30, align 4, !tbaa !24
  br label %420

417:                                              ; preds = %408
  %418 = load i32, ptr %30, align 4, !tbaa !24
  %419 = sub nsw i32 256, %418
  br label %420

420:                                              ; preds = %417, %415
  %421 = phi i32 [ %416, %415 ], [ %419, %417 ]
  %422 = sext i32 %421 to i64
  %423 = load i64, ptr %27, align 8, !tbaa !22
  %424 = add i64 %423, %422
  store i64 %424, ptr %27, align 8, !tbaa !22
  br label %425

425:                                              ; preds = %420
  %426 = load i64, ptr %29, align 8, !tbaa !22
  %427 = add i64 %426, 1
  store i64 %427, ptr %29, align 8, !tbaa !22
  %428 = load ptr, ptr %24, align 8, !tbaa !5
  %429 = getelementptr inbounds i8, ptr %428, i32 1
  store ptr %429, ptr %24, align 8, !tbaa !5
  %430 = load ptr, ptr %25, align 8, !tbaa !5
  %431 = getelementptr inbounds i8, ptr %430, i32 1
  store ptr %431, ptr %25, align 8, !tbaa !5
  br label %404, !llvm.loop !42

432:                                              ; preds = %404
  %433 = load ptr, ptr %7, align 8, !tbaa !5
  %434 = getelementptr inbounds i8, ptr %433, i64 1
  store ptr %434, ptr %26, align 8, !tbaa !5
  br label %435

435:                                              ; preds = %468, %432
  %436 = load i64, ptr %29, align 8, !tbaa !22
  %437 = load i64, ptr %11, align 8, !tbaa !22
  %438 = icmp ult i64 %436, %437
  br i1 %438, label %439, label %477

439:                                              ; preds = %435
  %440 = load ptr, ptr %24, align 8, !tbaa !5
  %441 = load i8, ptr %440, align 1, !tbaa !20
  %442 = zext i8 %441 to i32
  %443 = load ptr, ptr %26, align 8, !tbaa !5
  %444 = load i8, ptr %443, align 1, !tbaa !20
  %445 = zext i8 %444 to i32
  %446 = sub nsw i32 %442, %445
  %447 = and i32 %446, 255
  %448 = trunc i32 %447 to i8
  %449 = load ptr, ptr %25, align 8, !tbaa !5
  store i8 %448, ptr %449, align 1, !tbaa !20
  %450 = zext i8 %448 to i32
  store i32 %450, ptr %30, align 4, !tbaa !24
  %451 = load i32, ptr %30, align 4, !tbaa !24
  %452 = icmp slt i32 %451, 128
  br i1 %452, label %453, label %455

453:                                              ; preds = %439
  %454 = load i32, ptr %30, align 4, !tbaa !24
  br label %458

455:                                              ; preds = %439
  %456 = load i32, ptr %30, align 4, !tbaa !24
  %457 = sub nsw i32 256, %456
  br label %458

458:                                              ; preds = %455, %453
  %459 = phi i32 [ %454, %453 ], [ %457, %455 ]
  %460 = sext i32 %459 to i64
  %461 = load i64, ptr %27, align 8, !tbaa !22
  %462 = add i64 %461, %460
  store i64 %462, ptr %27, align 8, !tbaa !22
  %463 = load i64, ptr %27, align 8, !tbaa !22
  %464 = load i64, ptr %28, align 8, !tbaa !22
  %465 = icmp ugt i64 %463, %464
  br i1 %465, label %466, label %467

466:                                              ; preds = %458
  br label %477

467:                                              ; preds = %458
  br label %468

468:                                              ; preds = %467
  %469 = load i64, ptr %29, align 8, !tbaa !22
  %470 = add i64 %469, 1
  store i64 %470, ptr %29, align 8, !tbaa !22
  %471 = load ptr, ptr %24, align 8, !tbaa !5
  %472 = getelementptr inbounds i8, ptr %471, i32 1
  store ptr %472, ptr %24, align 8, !tbaa !5
  %473 = load ptr, ptr %26, align 8, !tbaa !5
  %474 = getelementptr inbounds i8, ptr %473, i32 1
  store ptr %474, ptr %26, align 8, !tbaa !5
  %475 = load ptr, ptr %25, align 8, !tbaa !5
  %476 = getelementptr inbounds i8, ptr %475, i32 1
  store ptr %476, ptr %25, align 8, !tbaa !5
  br label %435, !llvm.loop !43

477:                                              ; preds = %466, %435
  %478 = load ptr, ptr %3, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.png_struct_def, ptr %478, i32 0, i32 101
  %480 = load i8, ptr %479, align 8, !tbaa !30
  %481 = zext i8 %480 to i32
  %482 = icmp eq i32 %481, 2
  br i1 %482, label %483, label %558

483:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #2
  %484 = load i64, ptr %27, align 8, !tbaa !22
  %485 = and i64 %484, 65535
  store i64 %485, ptr %36, align 8, !tbaa !22
  %486 = load i64, ptr %27, align 8, !tbaa !22
  %487 = lshr i64 %486, 10
  %488 = and i64 %487, 18014398509481920
  store i64 %488, ptr %35, align 8, !tbaa !22
  store i32 0, ptr %34, align 4, !tbaa !24
  br label %489

489:                                              ; preds = %527, %483
  %490 = load i32, ptr %34, align 4, !tbaa !24
  %491 = load i32, ptr %12, align 4, !tbaa !24
  %492 = icmp slt i32 %490, %491
  br i1 %492, label %493, label %530

493:                                              ; preds = %489
  %494 = load ptr, ptr %3, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.png_struct_def, ptr %494, i32 0, i32 103
  %496 = load ptr, ptr %495, align 8, !tbaa !31
  %497 = load i32, ptr %34, align 4, !tbaa !24
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds i8, ptr %496, i64 %498
  %500 = load i8, ptr %499, align 1, !tbaa !20
  %501 = zext i8 %500 to i32
  %502 = icmp eq i32 %501, 1
  br i1 %502, label %503, label %526

503:                                              ; preds = %493
  %504 = load i64, ptr %36, align 8, !tbaa !22
  %505 = load ptr, ptr %3, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.png_struct_def, ptr %505, i32 0, i32 105
  %507 = load ptr, ptr %506, align 8, !tbaa !39
  %508 = load i32, ptr %34, align 4, !tbaa !24
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds i16, ptr %507, i64 %509
  %511 = load i16, ptr %510, align 2, !tbaa !33
  %512 = zext i16 %511 to i64
  %513 = mul i64 %504, %512
  %514 = lshr i64 %513, 8
  store i64 %514, ptr %36, align 8, !tbaa !22
  %515 = load i64, ptr %35, align 8, !tbaa !22
  %516 = load ptr, ptr %3, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.png_struct_def, ptr %516, i32 0, i32 105
  %518 = load ptr, ptr %517, align 8, !tbaa !39
  %519 = load i32, ptr %34, align 4, !tbaa !24
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds i16, ptr %518, i64 %520
  %522 = load i16, ptr %521, align 2, !tbaa !33
  %523 = zext i16 %522 to i64
  %524 = mul i64 %515, %523
  %525 = lshr i64 %524, 8
  store i64 %525, ptr %35, align 8, !tbaa !22
  br label %526

526:                                              ; preds = %503, %493
  br label %527

527:                                              ; preds = %526
  %528 = load i32, ptr %34, align 4, !tbaa !24
  %529 = add nsw i32 %528, 1
  store i32 %529, ptr %34, align 4, !tbaa !24
  br label %489, !llvm.loop !44

530:                                              ; preds = %489
  %531 = load i64, ptr %36, align 8, !tbaa !22
  %532 = load ptr, ptr %3, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.png_struct_def, ptr %532, i32 0, i32 107
  %534 = load ptr, ptr %533, align 8, !tbaa !41
  %535 = getelementptr inbounds i16, ptr %534, i64 1
  %536 = load i16, ptr %535, align 2, !tbaa !33
  %537 = zext i16 %536 to i64
  %538 = mul i64 %531, %537
  %539 = lshr i64 %538, 3
  store i64 %539, ptr %36, align 8, !tbaa !22
  %540 = load i64, ptr %35, align 8, !tbaa !22
  %541 = load ptr, ptr %3, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.png_struct_def, ptr %541, i32 0, i32 107
  %543 = load ptr, ptr %542, align 8, !tbaa !41
  %544 = getelementptr inbounds i16, ptr %543, i64 1
  %545 = load i16, ptr %544, align 2, !tbaa !33
  %546 = zext i16 %545 to i64
  %547 = mul i64 %540, %546
  %548 = lshr i64 %547, 3
  store i64 %548, ptr %35, align 8, !tbaa !22
  %549 = load i64, ptr %35, align 8, !tbaa !22
  %550 = icmp ugt i64 %549, 18014398509481920
  br i1 %550, label %551, label %552

551:                                              ; preds = %530
  store i64 9223372036854775807, ptr %27, align 8, !tbaa !22
  br label %557

552:                                              ; preds = %530
  %553 = load i64, ptr %35, align 8, !tbaa !22
  %554 = shl i64 %553, 10
  %555 = load i64, ptr %36, align 8, !tbaa !22
  %556 = add i64 %554, %555
  store i64 %556, ptr %27, align 8, !tbaa !22
  br label %557

557:                                              ; preds = %552, %551
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #2
  br label %558

558:                                              ; preds = %557, %477
  %559 = load i64, ptr %27, align 8, !tbaa !22
  %560 = load i64, ptr %8, align 8, !tbaa !22
  %561 = icmp ult i64 %559, %560
  br i1 %561, label %562, label %567

562:                                              ; preds = %558
  %563 = load i64, ptr %27, align 8, !tbaa !22
  store i64 %563, ptr %8, align 8, !tbaa !22
  %564 = load ptr, ptr %3, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.png_struct_def, ptr %564, i32 0, i32 33
  %566 = load ptr, ptr %565, align 8, !tbaa !36
  store ptr %566, ptr %5, align 8, !tbaa !5
  br label %567

567:                                              ; preds = %562, %558
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #2
  br label %568

568:                                              ; preds = %567, %310
  br label %569

569:                                              ; preds = %568, %306
  %570 = load i8, ptr %10, align 1, !tbaa !20
  %571 = zext i8 %570 to i32
  %572 = icmp eq i32 %571, 32
  br i1 %572, label %573, label %610

573:                                              ; preds = %569
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #2
  store i64 0, ptr %40, align 8, !tbaa !22
  %574 = load ptr, ptr %7, align 8, !tbaa !5
  %575 = getelementptr inbounds i8, ptr %574, i64 1
  store ptr %575, ptr %37, align 8, !tbaa !5
  %576 = load ptr, ptr %3, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.png_struct_def, ptr %576, i32 0, i32 34
  %578 = load ptr, ptr %577, align 8, !tbaa !45
  %579 = getelementptr inbounds i8, ptr %578, i64 1
  store ptr %579, ptr %38, align 8, !tbaa !5
  %580 = load ptr, ptr %6, align 8, !tbaa !5
  %581 = getelementptr inbounds i8, ptr %580, i64 1
  store ptr %581, ptr %39, align 8, !tbaa !5
  br label %582

582:                                              ; preds = %597, %573
  %583 = load i64, ptr %40, align 8, !tbaa !22
  %584 = load i64, ptr %11, align 8, !tbaa !22
  %585 = icmp ult i64 %583, %584
  br i1 %585, label %586, label %606

586:                                              ; preds = %582
  %587 = load ptr, ptr %37, align 8, !tbaa !5
  %588 = load i8, ptr %587, align 1, !tbaa !20
  %589 = zext i8 %588 to i32
  %590 = load ptr, ptr %39, align 8, !tbaa !5
  %591 = load i8, ptr %590, align 1, !tbaa !20
  %592 = zext i8 %591 to i32
  %593 = sub nsw i32 %589, %592
  %594 = and i32 %593, 255
  %595 = trunc i32 %594 to i8
  %596 = load ptr, ptr %38, align 8, !tbaa !5
  store i8 %595, ptr %596, align 1, !tbaa !20
  br label %597

597:                                              ; preds = %586
  %598 = load i64, ptr %40, align 8, !tbaa !22
  %599 = add i64 %598, 1
  store i64 %599, ptr %40, align 8, !tbaa !22
  %600 = load ptr, ptr %37, align 8, !tbaa !5
  %601 = getelementptr inbounds i8, ptr %600, i32 1
  store ptr %601, ptr %37, align 8, !tbaa !5
  %602 = load ptr, ptr %39, align 8, !tbaa !5
  %603 = getelementptr inbounds i8, ptr %602, i32 1
  store ptr %603, ptr %39, align 8, !tbaa !5
  %604 = load ptr, ptr %38, align 8, !tbaa !5
  %605 = getelementptr inbounds i8, ptr %604, i32 1
  store ptr %605, ptr %38, align 8, !tbaa !5
  br label %582, !llvm.loop !46

606:                                              ; preds = %582
  %607 = load ptr, ptr %3, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.png_struct_def, ptr %607, i32 0, i32 34
  %609 = load ptr, ptr %608, align 8, !tbaa !45
  store ptr %609, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #2
  br label %837

610:                                              ; preds = %569
  %611 = load i8, ptr %10, align 1, !tbaa !20
  %612 = zext i8 %611 to i32
  %613 = and i32 %612, 32
  %614 = icmp ne i32 %613, 0
  br i1 %614, label %615, label %836

615:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #2
  store i64 0, ptr %44, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #2
  %616 = load i64, ptr %8, align 8, !tbaa !22
  store i64 %616, ptr %45, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #2
  %617 = load ptr, ptr %3, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.png_struct_def, ptr %617, i32 0, i32 101
  %619 = load i8, ptr %618, align 8, !tbaa !30
  %620 = zext i8 %619 to i32
  %621 = icmp eq i32 %620, 2
  br i1 %621, label %622, label %697

622:                                              ; preds = %615
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #2
  %623 = load i64, ptr %45, align 8, !tbaa !22
  %624 = and i64 %623, 65535
  store i64 %624, ptr %50, align 8, !tbaa !22
  %625 = load i64, ptr %45, align 8, !tbaa !22
  %626 = lshr i64 %625, 10
  %627 = and i64 %626, 18014398509481920
  store i64 %627, ptr %49, align 8, !tbaa !22
  store i32 0, ptr %48, align 4, !tbaa !24
  br label %628

628:                                              ; preds = %666, %622
  %629 = load i32, ptr %48, align 4, !tbaa !24
  %630 = load i32, ptr %12, align 4, !tbaa !24
  %631 = icmp slt i32 %629, %630
  br i1 %631, label %632, label %669

632:                                              ; preds = %628
  %633 = load ptr, ptr %3, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.png_struct_def, ptr %633, i32 0, i32 103
  %635 = load ptr, ptr %634, align 8, !tbaa !31
  %636 = load i32, ptr %48, align 4, !tbaa !24
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds i8, ptr %635, i64 %637
  %639 = load i8, ptr %638, align 1, !tbaa !20
  %640 = zext i8 %639 to i32
  %641 = icmp eq i32 %640, 2
  br i1 %641, label %642, label %665

642:                                              ; preds = %632
  %643 = load i64, ptr %50, align 8, !tbaa !22
  %644 = load ptr, ptr %3, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.png_struct_def, ptr %644, i32 0, i32 105
  %646 = load ptr, ptr %645, align 8, !tbaa !39
  %647 = load i32, ptr %48, align 4, !tbaa !24
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds i16, ptr %646, i64 %648
  %650 = load i16, ptr %649, align 2, !tbaa !33
  %651 = zext i16 %650 to i64
  %652 = mul i64 %643, %651
  %653 = lshr i64 %652, 8
  store i64 %653, ptr %50, align 8, !tbaa !22
  %654 = load i64, ptr %49, align 8, !tbaa !22
  %655 = load ptr, ptr %3, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.png_struct_def, ptr %655, i32 0, i32 105
  %657 = load ptr, ptr %656, align 8, !tbaa !39
  %658 = load i32, ptr %48, align 4, !tbaa !24
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds i16, ptr %657, i64 %659
  %661 = load i16, ptr %660, align 2, !tbaa !33
  %662 = zext i16 %661 to i64
  %663 = mul i64 %654, %662
  %664 = lshr i64 %663, 8
  store i64 %664, ptr %49, align 8, !tbaa !22
  br label %665

665:                                              ; preds = %642, %632
  br label %666

666:                                              ; preds = %665
  %667 = load i32, ptr %48, align 4, !tbaa !24
  %668 = add nsw i32 %667, 1
  store i32 %668, ptr %48, align 4, !tbaa !24
  br label %628, !llvm.loop !47

669:                                              ; preds = %628
  %670 = load i64, ptr %50, align 8, !tbaa !22
  %671 = load ptr, ptr %3, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.png_struct_def, ptr %671, i32 0, i32 107
  %673 = load ptr, ptr %672, align 8, !tbaa !41
  %674 = getelementptr inbounds i16, ptr %673, i64 2
  %675 = load i16, ptr %674, align 2, !tbaa !33
  %676 = zext i16 %675 to i64
  %677 = mul i64 %670, %676
  %678 = lshr i64 %677, 3
  store i64 %678, ptr %50, align 8, !tbaa !22
  %679 = load i64, ptr %49, align 8, !tbaa !22
  %680 = load ptr, ptr %3, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.png_struct_def, ptr %680, i32 0, i32 107
  %682 = load ptr, ptr %681, align 8, !tbaa !41
  %683 = getelementptr inbounds i16, ptr %682, i64 2
  %684 = load i16, ptr %683, align 2, !tbaa !33
  %685 = zext i16 %684 to i64
  %686 = mul i64 %679, %685
  %687 = lshr i64 %686, 3
  store i64 %687, ptr %49, align 8, !tbaa !22
  %688 = load i64, ptr %49, align 8, !tbaa !22
  %689 = icmp ugt i64 %688, 18014398509481920
  br i1 %689, label %690, label %691

690:                                              ; preds = %669
  store i64 9223372036854775807, ptr %45, align 8, !tbaa !22
  br label %696

691:                                              ; preds = %669
  %692 = load i64, ptr %49, align 8, !tbaa !22
  %693 = shl i64 %692, 10
  %694 = load i64, ptr %50, align 8, !tbaa !22
  %695 = add i64 %693, %694
  store i64 %695, ptr %45, align 8, !tbaa !22
  br label %696

696:                                              ; preds = %691, %690
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #2
  br label %697

697:                                              ; preds = %696, %615
  store i64 0, ptr %46, align 8, !tbaa !22
  %698 = load ptr, ptr %7, align 8, !tbaa !5
  %699 = getelementptr inbounds i8, ptr %698, i64 1
  store ptr %699, ptr %41, align 8, !tbaa !5
  %700 = load ptr, ptr %3, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.png_struct_def, ptr %700, i32 0, i32 34
  %702 = load ptr, ptr %701, align 8, !tbaa !45
  %703 = getelementptr inbounds i8, ptr %702, i64 1
  store ptr %703, ptr %42, align 8, !tbaa !5
  %704 = load ptr, ptr %6, align 8, !tbaa !5
  %705 = getelementptr inbounds i8, ptr %704, i64 1
  store ptr %705, ptr %43, align 8, !tbaa !5
  br label %706

706:                                              ; preds = %742, %697
  %707 = load i64, ptr %46, align 8, !tbaa !22
  %708 = load i64, ptr %11, align 8, !tbaa !22
  %709 = icmp ult i64 %707, %708
  br i1 %709, label %710, label %745

710:                                              ; preds = %706
  %711 = load ptr, ptr %41, align 8, !tbaa !5
  %712 = getelementptr inbounds i8, ptr %711, i32 1
  store ptr %712, ptr %41, align 8, !tbaa !5
  %713 = load i8, ptr %711, align 1, !tbaa !20
  %714 = zext i8 %713 to i32
  %715 = load ptr, ptr %43, align 8, !tbaa !5
  %716 = getelementptr inbounds i8, ptr %715, i32 1
  store ptr %716, ptr %43, align 8, !tbaa !5
  %717 = load i8, ptr %715, align 1, !tbaa !20
  %718 = zext i8 %717 to i32
  %719 = sub nsw i32 %714, %718
  %720 = and i32 %719, 255
  %721 = trunc i32 %720 to i8
  %722 = load ptr, ptr %42, align 8, !tbaa !5
  %723 = getelementptr inbounds i8, ptr %722, i32 1
  store ptr %723, ptr %42, align 8, !tbaa !5
  store i8 %721, ptr %722, align 1, !tbaa !20
  %724 = zext i8 %721 to i32
  store i32 %724, ptr %47, align 4, !tbaa !24
  %725 = load i32, ptr %47, align 4, !tbaa !24
  %726 = icmp slt i32 %725, 128
  br i1 %726, label %727, label %729

727:                                              ; preds = %710
  %728 = load i32, ptr %47, align 4, !tbaa !24
  br label %732

729:                                              ; preds = %710
  %730 = load i32, ptr %47, align 4, !tbaa !24
  %731 = sub nsw i32 256, %730
  br label %732

732:                                              ; preds = %729, %727
  %733 = phi i32 [ %728, %727 ], [ %731, %729 ]
  %734 = sext i32 %733 to i64
  %735 = load i64, ptr %44, align 8, !tbaa !22
  %736 = add i64 %735, %734
  store i64 %736, ptr %44, align 8, !tbaa !22
  %737 = load i64, ptr %44, align 8, !tbaa !22
  %738 = load i64, ptr %45, align 8, !tbaa !22
  %739 = icmp ugt i64 %737, %738
  br i1 %739, label %740, label %741

740:                                              ; preds = %732
  br label %745

741:                                              ; preds = %732
  br label %742

742:                                              ; preds = %741
  %743 = load i64, ptr %46, align 8, !tbaa !22
  %744 = add i64 %743, 1
  store i64 %744, ptr %46, align 8, !tbaa !22
  br label %706, !llvm.loop !48

745:                                              ; preds = %740, %706
  %746 = load ptr, ptr %3, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.png_struct_def, ptr %746, i32 0, i32 101
  %748 = load i8, ptr %747, align 8, !tbaa !30
  %749 = zext i8 %748 to i32
  %750 = icmp eq i32 %749, 2
  br i1 %750, label %751, label %826

751:                                              ; preds = %745
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #2
  %752 = load i64, ptr %44, align 8, !tbaa !22
  %753 = and i64 %752, 65535
  store i64 %753, ptr %53, align 8, !tbaa !22
  %754 = load i64, ptr %44, align 8, !tbaa !22
  %755 = lshr i64 %754, 10
  %756 = and i64 %755, 18014398509481920
  store i64 %756, ptr %52, align 8, !tbaa !22
  store i32 0, ptr %51, align 4, !tbaa !24
  br label %757

757:                                              ; preds = %795, %751
  %758 = load i32, ptr %51, align 4, !tbaa !24
  %759 = load i32, ptr %12, align 4, !tbaa !24
  %760 = icmp slt i32 %758, %759
  br i1 %760, label %761, label %798

761:                                              ; preds = %757
  %762 = load ptr, ptr %3, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.png_struct_def, ptr %762, i32 0, i32 103
  %764 = load ptr, ptr %763, align 8, !tbaa !31
  %765 = load i32, ptr %51, align 4, !tbaa !24
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds i8, ptr %764, i64 %766
  %768 = load i8, ptr %767, align 1, !tbaa !20
  %769 = zext i8 %768 to i32
  %770 = icmp eq i32 %769, 2
  br i1 %770, label %771, label %794

771:                                              ; preds = %761
  %772 = load i64, ptr %53, align 8, !tbaa !22
  %773 = load ptr, ptr %3, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.png_struct_def, ptr %773, i32 0, i32 104
  %775 = load ptr, ptr %774, align 8, !tbaa !32
  %776 = load i32, ptr %51, align 4, !tbaa !24
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds i16, ptr %775, i64 %777
  %779 = load i16, ptr %778, align 2, !tbaa !33
  %780 = zext i16 %779 to i64
  %781 = mul i64 %772, %780
  %782 = lshr i64 %781, 8
  store i64 %782, ptr %53, align 8, !tbaa !22
  %783 = load i64, ptr %52, align 8, !tbaa !22
  %784 = load ptr, ptr %3, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.png_struct_def, ptr %784, i32 0, i32 104
  %786 = load ptr, ptr %785, align 8, !tbaa !32
  %787 = load i32, ptr %51, align 4, !tbaa !24
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds i16, ptr %786, i64 %788
  %790 = load i16, ptr %789, align 2, !tbaa !33
  %791 = zext i16 %790 to i64
  %792 = mul i64 %783, %791
  %793 = lshr i64 %792, 8
  store i64 %793, ptr %52, align 8, !tbaa !22
  br label %794

794:                                              ; preds = %771, %761
  br label %795

795:                                              ; preds = %794
  %796 = load i32, ptr %51, align 4, !tbaa !24
  %797 = add nsw i32 %796, 1
  store i32 %797, ptr %51, align 4, !tbaa !24
  br label %757, !llvm.loop !49

798:                                              ; preds = %757
  %799 = load i64, ptr %53, align 8, !tbaa !22
  %800 = load ptr, ptr %3, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.png_struct_def, ptr %800, i32 0, i32 106
  %802 = load ptr, ptr %801, align 8, !tbaa !35
  %803 = getelementptr inbounds i16, ptr %802, i64 2
  %804 = load i16, ptr %803, align 2, !tbaa !33
  %805 = zext i16 %804 to i64
  %806 = mul i64 %799, %805
  %807 = lshr i64 %806, 3
  store i64 %807, ptr %53, align 8, !tbaa !22
  %808 = load i64, ptr %52, align 8, !tbaa !22
  %809 = load ptr, ptr %3, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.png_struct_def, ptr %809, i32 0, i32 106
  %811 = load ptr, ptr %810, align 8, !tbaa !35
  %812 = getelementptr inbounds i16, ptr %811, i64 2
  %813 = load i16, ptr %812, align 2, !tbaa !33
  %814 = zext i16 %813 to i64
  %815 = mul i64 %808, %814
  %816 = lshr i64 %815, 3
  store i64 %816, ptr %52, align 8, !tbaa !22
  %817 = load i64, ptr %52, align 8, !tbaa !22
  %818 = icmp ugt i64 %817, 18014398509481920
  br i1 %818, label %819, label %820

819:                                              ; preds = %798
  store i64 9223372036854775807, ptr %44, align 8, !tbaa !22
  br label %825

820:                                              ; preds = %798
  %821 = load i64, ptr %52, align 8, !tbaa !22
  %822 = shl i64 %821, 10
  %823 = load i64, ptr %53, align 8, !tbaa !22
  %824 = add i64 %822, %823
  store i64 %824, ptr %44, align 8, !tbaa !22
  br label %825

825:                                              ; preds = %820, %819
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #2
  br label %826

826:                                              ; preds = %825, %745
  %827 = load i64, ptr %44, align 8, !tbaa !22
  %828 = load i64, ptr %8, align 8, !tbaa !22
  %829 = icmp ult i64 %827, %828
  br i1 %829, label %830, label %835

830:                                              ; preds = %826
  %831 = load i64, ptr %44, align 8, !tbaa !22
  store i64 %831, ptr %8, align 8, !tbaa !22
  %832 = load ptr, ptr %3, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.png_struct_def, ptr %832, i32 0, i32 34
  %834 = load ptr, ptr %833, align 8, !tbaa !45
  store ptr %834, ptr %5, align 8, !tbaa !5
  br label %835

835:                                              ; preds = %830, %826
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #2
  br label %836

836:                                              ; preds = %835, %610
  br label %837

837:                                              ; preds = %836, %606
  %838 = load i8, ptr %10, align 1, !tbaa !20
  %839 = zext i8 %838 to i32
  %840 = icmp eq i32 %839, 64
  br i1 %840, label %841, label %906

841:                                              ; preds = %837
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #2
  store i64 0, ptr %58, align 8, !tbaa !22
  %842 = load ptr, ptr %7, align 8, !tbaa !5
  %843 = getelementptr inbounds i8, ptr %842, i64 1
  store ptr %843, ptr %54, align 8, !tbaa !5
  %844 = load ptr, ptr %3, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.png_struct_def, ptr %844, i32 0, i32 35
  %846 = load ptr, ptr %845, align 8, !tbaa !50
  %847 = getelementptr inbounds i8, ptr %846, i64 1
  store ptr %847, ptr %55, align 8, !tbaa !5
  %848 = load ptr, ptr %6, align 8, !tbaa !5
  %849 = getelementptr inbounds i8, ptr %848, i64 1
  store ptr %849, ptr %56, align 8, !tbaa !5
  br label %850

850:                                              ; preds = %869, %841
  %851 = load i64, ptr %58, align 8, !tbaa !22
  %852 = load i64, ptr %9, align 8, !tbaa !22
  %853 = icmp ult i64 %851, %852
  br i1 %853, label %854, label %872

854:                                              ; preds = %850
  %855 = load ptr, ptr %54, align 8, !tbaa !5
  %856 = getelementptr inbounds i8, ptr %855, i32 1
  store ptr %856, ptr %54, align 8, !tbaa !5
  %857 = load i8, ptr %855, align 1, !tbaa !20
  %858 = zext i8 %857 to i32
  %859 = load ptr, ptr %56, align 8, !tbaa !5
  %860 = getelementptr inbounds i8, ptr %859, i32 1
  store ptr %860, ptr %56, align 8, !tbaa !5
  %861 = load i8, ptr %859, align 1, !tbaa !20
  %862 = zext i8 %861 to i32
  %863 = sdiv i32 %862, 2
  %864 = sub nsw i32 %858, %863
  %865 = and i32 %864, 255
  %866 = trunc i32 %865 to i8
  %867 = load ptr, ptr %55, align 8, !tbaa !5
  %868 = getelementptr inbounds i8, ptr %867, i32 1
  store ptr %868, ptr %55, align 8, !tbaa !5
  store i8 %866, ptr %867, align 1, !tbaa !20
  br label %869

869:                                              ; preds = %854
  %870 = load i64, ptr %58, align 8, !tbaa !22
  %871 = add i64 %870, 1
  store i64 %871, ptr %58, align 8, !tbaa !22
  br label %850, !llvm.loop !51

872:                                              ; preds = %850
  %873 = load ptr, ptr %7, align 8, !tbaa !5
  %874 = getelementptr inbounds i8, ptr %873, i64 1
  store ptr %874, ptr %57, align 8, !tbaa !5
  br label %875

875:                                              ; preds = %899, %872
  %876 = load i64, ptr %58, align 8, !tbaa !22
  %877 = load i64, ptr %11, align 8, !tbaa !22
  %878 = icmp ult i64 %876, %877
  br i1 %878, label %879, label %902

879:                                              ; preds = %875
  %880 = load ptr, ptr %54, align 8, !tbaa !5
  %881 = getelementptr inbounds i8, ptr %880, i32 1
  store ptr %881, ptr %54, align 8, !tbaa !5
  %882 = load i8, ptr %880, align 1, !tbaa !20
  %883 = zext i8 %882 to i32
  %884 = load ptr, ptr %56, align 8, !tbaa !5
  %885 = getelementptr inbounds i8, ptr %884, i32 1
  store ptr %885, ptr %56, align 8, !tbaa !5
  %886 = load i8, ptr %884, align 1, !tbaa !20
  %887 = zext i8 %886 to i32
  %888 = load ptr, ptr %57, align 8, !tbaa !5
  %889 = getelementptr inbounds i8, ptr %888, i32 1
  store ptr %889, ptr %57, align 8, !tbaa !5
  %890 = load i8, ptr %888, align 1, !tbaa !20
  %891 = zext i8 %890 to i32
  %892 = add nsw i32 %887, %891
  %893 = sdiv i32 %892, 2
  %894 = sub nsw i32 %883, %893
  %895 = and i32 %894, 255
  %896 = trunc i32 %895 to i8
  %897 = load ptr, ptr %55, align 8, !tbaa !5
  %898 = getelementptr inbounds i8, ptr %897, i32 1
  store ptr %898, ptr %55, align 8, !tbaa !5
  store i8 %896, ptr %897, align 1, !tbaa !20
  br label %899

899:                                              ; preds = %879
  %900 = load i64, ptr %58, align 8, !tbaa !22
  %901 = add i64 %900, 1
  store i64 %901, ptr %58, align 8, !tbaa !22
  br label %875, !llvm.loop !52

902:                                              ; preds = %875
  %903 = load ptr, ptr %3, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.png_struct_def, ptr %903, i32 0, i32 35
  %905 = load ptr, ptr %904, align 8, !tbaa !50
  store ptr %905, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #2
  br label %1177

906:                                              ; preds = %837
  %907 = load i8, ptr %10, align 1, !tbaa !20
  %908 = zext i8 %907 to i32
  %909 = and i32 %908, 64
  %910 = icmp ne i32 %909, 0
  br i1 %910, label %911, label %1176

911:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #2
  store i64 0, ptr %63, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #2
  %912 = load i64, ptr %8, align 8, !tbaa !22
  store i64 %912, ptr %64, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #2
  %913 = load ptr, ptr %3, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.png_struct_def, ptr %913, i32 0, i32 101
  %915 = load i8, ptr %914, align 8, !tbaa !30
  %916 = zext i8 %915 to i32
  %917 = icmp eq i32 %916, 2
  br i1 %917, label %918, label %993

918:                                              ; preds = %911
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #2
  %919 = load i64, ptr %64, align 8, !tbaa !22
  %920 = and i64 %919, 65535
  store i64 %920, ptr %69, align 8, !tbaa !22
  %921 = load i64, ptr %64, align 8, !tbaa !22
  %922 = lshr i64 %921, 10
  %923 = and i64 %922, 18014398509481920
  store i64 %923, ptr %68, align 8, !tbaa !22
  store i32 0, ptr %67, align 4, !tbaa !24
  br label %924

924:                                              ; preds = %962, %918
  %925 = load i32, ptr %67, align 4, !tbaa !24
  %926 = load i32, ptr %12, align 4, !tbaa !24
  %927 = icmp slt i32 %925, %926
  br i1 %927, label %928, label %965

928:                                              ; preds = %924
  %929 = load ptr, ptr %3, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.png_struct_def, ptr %929, i32 0, i32 103
  %931 = load ptr, ptr %930, align 8, !tbaa !31
  %932 = load i32, ptr %67, align 4, !tbaa !24
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds i8, ptr %931, i64 %933
  %935 = load i8, ptr %934, align 1, !tbaa !20
  %936 = zext i8 %935 to i32
  %937 = icmp eq i32 %936, 3
  br i1 %937, label %938, label %961

938:                                              ; preds = %928
  %939 = load i64, ptr %69, align 8, !tbaa !22
  %940 = load ptr, ptr %3, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.png_struct_def, ptr %940, i32 0, i32 105
  %942 = load ptr, ptr %941, align 8, !tbaa !39
  %943 = load i32, ptr %67, align 4, !tbaa !24
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds i16, ptr %942, i64 %944
  %946 = load i16, ptr %945, align 2, !tbaa !33
  %947 = zext i16 %946 to i64
  %948 = mul i64 %939, %947
  %949 = lshr i64 %948, 8
  store i64 %949, ptr %69, align 8, !tbaa !22
  %950 = load i64, ptr %68, align 8, !tbaa !22
  %951 = load ptr, ptr %3, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.png_struct_def, ptr %951, i32 0, i32 105
  %953 = load ptr, ptr %952, align 8, !tbaa !39
  %954 = load i32, ptr %67, align 4, !tbaa !24
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds i16, ptr %953, i64 %955
  %957 = load i16, ptr %956, align 2, !tbaa !33
  %958 = zext i16 %957 to i64
  %959 = mul i64 %950, %958
  %960 = lshr i64 %959, 8
  store i64 %960, ptr %68, align 8, !tbaa !22
  br label %961

961:                                              ; preds = %938, %928
  br label %962

962:                                              ; preds = %961
  %963 = load i32, ptr %67, align 4, !tbaa !24
  %964 = add nsw i32 %963, 1
  store i32 %964, ptr %67, align 4, !tbaa !24
  br label %924, !llvm.loop !53

965:                                              ; preds = %924
  %966 = load i64, ptr %69, align 8, !tbaa !22
  %967 = load ptr, ptr %3, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.png_struct_def, ptr %967, i32 0, i32 107
  %969 = load ptr, ptr %968, align 8, !tbaa !41
  %970 = getelementptr inbounds i16, ptr %969, i64 3
  %971 = load i16, ptr %970, align 2, !tbaa !33
  %972 = zext i16 %971 to i64
  %973 = mul i64 %966, %972
  %974 = lshr i64 %973, 3
  store i64 %974, ptr %69, align 8, !tbaa !22
  %975 = load i64, ptr %68, align 8, !tbaa !22
  %976 = load ptr, ptr %3, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.png_struct_def, ptr %976, i32 0, i32 107
  %978 = load ptr, ptr %977, align 8, !tbaa !41
  %979 = getelementptr inbounds i16, ptr %978, i64 3
  %980 = load i16, ptr %979, align 2, !tbaa !33
  %981 = zext i16 %980 to i64
  %982 = mul i64 %975, %981
  %983 = lshr i64 %982, 3
  store i64 %983, ptr %68, align 8, !tbaa !22
  %984 = load i64, ptr %68, align 8, !tbaa !22
  %985 = icmp ugt i64 %984, 18014398509481920
  br i1 %985, label %986, label %987

986:                                              ; preds = %965
  store i64 9223372036854775807, ptr %64, align 8, !tbaa !22
  br label %992

987:                                              ; preds = %965
  %988 = load i64, ptr %68, align 8, !tbaa !22
  %989 = shl i64 %988, 10
  %990 = load i64, ptr %69, align 8, !tbaa !22
  %991 = add i64 %989, %990
  store i64 %991, ptr %64, align 8, !tbaa !22
  br label %992

992:                                              ; preds = %987, %986
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #2
  br label %993

993:                                              ; preds = %992, %911
  store i64 0, ptr %65, align 8, !tbaa !22
  %994 = load ptr, ptr %7, align 8, !tbaa !5
  %995 = getelementptr inbounds i8, ptr %994, i64 1
  store ptr %995, ptr %59, align 8, !tbaa !5
  %996 = load ptr, ptr %3, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.png_struct_def, ptr %996, i32 0, i32 35
  %998 = load ptr, ptr %997, align 8, !tbaa !50
  %999 = getelementptr inbounds i8, ptr %998, i64 1
  store ptr %999, ptr %60, align 8, !tbaa !5
  %1000 = load ptr, ptr %6, align 8, !tbaa !5
  %1001 = getelementptr inbounds i8, ptr %1000, i64 1
  store ptr %1001, ptr %61, align 8, !tbaa !5
  br label %1002

1002:                                             ; preds = %1034, %993
  %1003 = load i64, ptr %65, align 8, !tbaa !22
  %1004 = load i64, ptr %9, align 8, !tbaa !22
  %1005 = icmp ult i64 %1003, %1004
  br i1 %1005, label %1006, label %1037

1006:                                             ; preds = %1002
  %1007 = load ptr, ptr %59, align 8, !tbaa !5
  %1008 = getelementptr inbounds i8, ptr %1007, i32 1
  store ptr %1008, ptr %59, align 8, !tbaa !5
  %1009 = load i8, ptr %1007, align 1, !tbaa !20
  %1010 = zext i8 %1009 to i32
  %1011 = load ptr, ptr %61, align 8, !tbaa !5
  %1012 = getelementptr inbounds i8, ptr %1011, i32 1
  store ptr %1012, ptr %61, align 8, !tbaa !5
  %1013 = load i8, ptr %1011, align 1, !tbaa !20
  %1014 = zext i8 %1013 to i32
  %1015 = sdiv i32 %1014, 2
  %1016 = sub nsw i32 %1010, %1015
  %1017 = and i32 %1016, 255
  %1018 = trunc i32 %1017 to i8
  %1019 = load ptr, ptr %60, align 8, !tbaa !5
  %1020 = getelementptr inbounds i8, ptr %1019, i32 1
  store ptr %1020, ptr %60, align 8, !tbaa !5
  store i8 %1018, ptr %1019, align 1, !tbaa !20
  %1021 = zext i8 %1018 to i32
  store i32 %1021, ptr %66, align 4, !tbaa !24
  %1022 = load i32, ptr %66, align 4, !tbaa !24
  %1023 = icmp slt i32 %1022, 128
  br i1 %1023, label %1024, label %1026

1024:                                             ; preds = %1006
  %1025 = load i32, ptr %66, align 4, !tbaa !24
  br label %1029

1026:                                             ; preds = %1006
  %1027 = load i32, ptr %66, align 4, !tbaa !24
  %1028 = sub nsw i32 256, %1027
  br label %1029

1029:                                             ; preds = %1026, %1024
  %1030 = phi i32 [ %1025, %1024 ], [ %1028, %1026 ]
  %1031 = sext i32 %1030 to i64
  %1032 = load i64, ptr %63, align 8, !tbaa !22
  %1033 = add i64 %1032, %1031
  store i64 %1033, ptr %63, align 8, !tbaa !22
  br label %1034

1034:                                             ; preds = %1029
  %1035 = load i64, ptr %65, align 8, !tbaa !22
  %1036 = add i64 %1035, 1
  store i64 %1036, ptr %65, align 8, !tbaa !22
  br label %1002, !llvm.loop !54

1037:                                             ; preds = %1002
  %1038 = load ptr, ptr %7, align 8, !tbaa !5
  %1039 = getelementptr inbounds i8, ptr %1038, i64 1
  store ptr %1039, ptr %62, align 8, !tbaa !5
  br label %1040

1040:                                             ; preds = %1082, %1037
  %1041 = load i64, ptr %65, align 8, !tbaa !22
  %1042 = load i64, ptr %11, align 8, !tbaa !22
  %1043 = icmp ult i64 %1041, %1042
  br i1 %1043, label %1044, label %1085

1044:                                             ; preds = %1040
  %1045 = load ptr, ptr %59, align 8, !tbaa !5
  %1046 = getelementptr inbounds i8, ptr %1045, i32 1
  store ptr %1046, ptr %59, align 8, !tbaa !5
  %1047 = load i8, ptr %1045, align 1, !tbaa !20
  %1048 = zext i8 %1047 to i32
  %1049 = load ptr, ptr %61, align 8, !tbaa !5
  %1050 = getelementptr inbounds i8, ptr %1049, i32 1
  store ptr %1050, ptr %61, align 8, !tbaa !5
  %1051 = load i8, ptr %1049, align 1, !tbaa !20
  %1052 = zext i8 %1051 to i32
  %1053 = load ptr, ptr %62, align 8, !tbaa !5
  %1054 = getelementptr inbounds i8, ptr %1053, i32 1
  store ptr %1054, ptr %62, align 8, !tbaa !5
  %1055 = load i8, ptr %1053, align 1, !tbaa !20
  %1056 = zext i8 %1055 to i32
  %1057 = add nsw i32 %1052, %1056
  %1058 = sdiv i32 %1057, 2
  %1059 = sub nsw i32 %1048, %1058
  %1060 = and i32 %1059, 255
  %1061 = trunc i32 %1060 to i8
  %1062 = load ptr, ptr %60, align 8, !tbaa !5
  %1063 = getelementptr inbounds i8, ptr %1062, i32 1
  store ptr %1063, ptr %60, align 8, !tbaa !5
  store i8 %1061, ptr %1062, align 1, !tbaa !20
  %1064 = zext i8 %1061 to i32
  store i32 %1064, ptr %66, align 4, !tbaa !24
  %1065 = load i32, ptr %66, align 4, !tbaa !24
  %1066 = icmp slt i32 %1065, 128
  br i1 %1066, label %1067, label %1069

1067:                                             ; preds = %1044
  %1068 = load i32, ptr %66, align 4, !tbaa !24
  br label %1072

1069:                                             ; preds = %1044
  %1070 = load i32, ptr %66, align 4, !tbaa !24
  %1071 = sub nsw i32 256, %1070
  br label %1072

1072:                                             ; preds = %1069, %1067
  %1073 = phi i32 [ %1068, %1067 ], [ %1071, %1069 ]
  %1074 = sext i32 %1073 to i64
  %1075 = load i64, ptr %63, align 8, !tbaa !22
  %1076 = add i64 %1075, %1074
  store i64 %1076, ptr %63, align 8, !tbaa !22
  %1077 = load i64, ptr %63, align 8, !tbaa !22
  %1078 = load i64, ptr %64, align 8, !tbaa !22
  %1079 = icmp ugt i64 %1077, %1078
  br i1 %1079, label %1080, label %1081

1080:                                             ; preds = %1072
  br label %1085

1081:                                             ; preds = %1072
  br label %1082

1082:                                             ; preds = %1081
  %1083 = load i64, ptr %65, align 8, !tbaa !22
  %1084 = add i64 %1083, 1
  store i64 %1084, ptr %65, align 8, !tbaa !22
  br label %1040, !llvm.loop !55

1085:                                             ; preds = %1080, %1040
  %1086 = load ptr, ptr %3, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.png_struct_def, ptr %1086, i32 0, i32 101
  %1088 = load i8, ptr %1087, align 8, !tbaa !30
  %1089 = zext i8 %1088 to i32
  %1090 = icmp eq i32 %1089, 2
  br i1 %1090, label %1091, label %1166

1091:                                             ; preds = %1085
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #2
  %1092 = load i64, ptr %63, align 8, !tbaa !22
  %1093 = and i64 %1092, 65535
  store i64 %1093, ptr %72, align 8, !tbaa !22
  %1094 = load i64, ptr %63, align 8, !tbaa !22
  %1095 = lshr i64 %1094, 10
  %1096 = and i64 %1095, 18014398509481920
  store i64 %1096, ptr %71, align 8, !tbaa !22
  store i32 0, ptr %70, align 4, !tbaa !24
  br label %1097

1097:                                             ; preds = %1135, %1091
  %1098 = load i32, ptr %70, align 4, !tbaa !24
  %1099 = load i32, ptr %12, align 4, !tbaa !24
  %1100 = icmp slt i32 %1098, %1099
  br i1 %1100, label %1101, label %1138

1101:                                             ; preds = %1097
  %1102 = load ptr, ptr %3, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.png_struct_def, ptr %1102, i32 0, i32 103
  %1104 = load ptr, ptr %1103, align 8, !tbaa !31
  %1105 = load i32, ptr %70, align 4, !tbaa !24
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds i8, ptr %1104, i64 %1106
  %1108 = load i8, ptr %1107, align 1, !tbaa !20
  %1109 = zext i8 %1108 to i32
  %1110 = icmp eq i32 %1109, 0
  br i1 %1110, label %1111, label %1134

1111:                                             ; preds = %1101
  %1112 = load i64, ptr %72, align 8, !tbaa !22
  %1113 = load ptr, ptr %3, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.png_struct_def, ptr %1113, i32 0, i32 104
  %1115 = load ptr, ptr %1114, align 8, !tbaa !32
  %1116 = load i32, ptr %70, align 4, !tbaa !24
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds i16, ptr %1115, i64 %1117
  %1119 = load i16, ptr %1118, align 2, !tbaa !33
  %1120 = zext i16 %1119 to i64
  %1121 = mul i64 %1112, %1120
  %1122 = lshr i64 %1121, 8
  store i64 %1122, ptr %72, align 8, !tbaa !22
  %1123 = load i64, ptr %71, align 8, !tbaa !22
  %1124 = load ptr, ptr %3, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.png_struct_def, ptr %1124, i32 0, i32 104
  %1126 = load ptr, ptr %1125, align 8, !tbaa !32
  %1127 = load i32, ptr %70, align 4, !tbaa !24
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds i16, ptr %1126, i64 %1128
  %1130 = load i16, ptr %1129, align 2, !tbaa !33
  %1131 = zext i16 %1130 to i64
  %1132 = mul i64 %1123, %1131
  %1133 = lshr i64 %1132, 8
  store i64 %1133, ptr %71, align 8, !tbaa !22
  br label %1134

1134:                                             ; preds = %1111, %1101
  br label %1135

1135:                                             ; preds = %1134
  %1136 = load i32, ptr %70, align 4, !tbaa !24
  %1137 = add nsw i32 %1136, 1
  store i32 %1137, ptr %70, align 4, !tbaa !24
  br label %1097, !llvm.loop !56

1138:                                             ; preds = %1097
  %1139 = load i64, ptr %72, align 8, !tbaa !22
  %1140 = load ptr, ptr %3, align 8, !tbaa !5
  %1141 = getelementptr inbounds %struct.png_struct_def, ptr %1140, i32 0, i32 106
  %1142 = load ptr, ptr %1141, align 8, !tbaa !35
  %1143 = getelementptr inbounds i16, ptr %1142, i64 3
  %1144 = load i16, ptr %1143, align 2, !tbaa !33
  %1145 = zext i16 %1144 to i64
  %1146 = mul i64 %1139, %1145
  %1147 = lshr i64 %1146, 3
  store i64 %1147, ptr %72, align 8, !tbaa !22
  %1148 = load i64, ptr %71, align 8, !tbaa !22
  %1149 = load ptr, ptr %3, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.png_struct_def, ptr %1149, i32 0, i32 106
  %1151 = load ptr, ptr %1150, align 8, !tbaa !35
  %1152 = getelementptr inbounds i16, ptr %1151, i64 3
  %1153 = load i16, ptr %1152, align 2, !tbaa !33
  %1154 = zext i16 %1153 to i64
  %1155 = mul i64 %1148, %1154
  %1156 = lshr i64 %1155, 3
  store i64 %1156, ptr %71, align 8, !tbaa !22
  %1157 = load i64, ptr %71, align 8, !tbaa !22
  %1158 = icmp ugt i64 %1157, 18014398509481920
  br i1 %1158, label %1159, label %1160

1159:                                             ; preds = %1138
  store i64 9223372036854775807, ptr %63, align 8, !tbaa !22
  br label %1165

1160:                                             ; preds = %1138
  %1161 = load i64, ptr %71, align 8, !tbaa !22
  %1162 = shl i64 %1161, 10
  %1163 = load i64, ptr %72, align 8, !tbaa !22
  %1164 = add i64 %1162, %1163
  store i64 %1164, ptr %63, align 8, !tbaa !22
  br label %1165

1165:                                             ; preds = %1160, %1159
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #2
  br label %1166

1166:                                             ; preds = %1165, %1085
  %1167 = load i64, ptr %63, align 8, !tbaa !22
  %1168 = load i64, ptr %8, align 8, !tbaa !22
  %1169 = icmp ult i64 %1167, %1168
  br i1 %1169, label %1170, label %1175

1170:                                             ; preds = %1166
  %1171 = load i64, ptr %63, align 8, !tbaa !22
  store i64 %1171, ptr %8, align 8, !tbaa !22
  %1172 = load ptr, ptr %3, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.png_struct_def, ptr %1172, i32 0, i32 35
  %1174 = load ptr, ptr %1173, align 8, !tbaa !50
  store ptr %1174, ptr %5, align 8, !tbaa !5
  br label %1175

1175:                                             ; preds = %1170, %1166
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #2
  br label %1176

1176:                                             ; preds = %1175, %906
  br label %1177

1177:                                             ; preds = %1176, %902
  %1178 = load i8, ptr %10, align 1, !tbaa !20
  %1179 = zext i8 %1178 to i32
  %1180 = icmp eq i32 %1179, 128
  br i1 %1180, label %1181, label %1310

1181:                                             ; preds = %1177
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #2
  store i64 0, ptr %78, align 8, !tbaa !22
  %1182 = load ptr, ptr %7, align 8, !tbaa !5
  %1183 = getelementptr inbounds i8, ptr %1182, i64 1
  store ptr %1183, ptr %73, align 8, !tbaa !5
  %1184 = load ptr, ptr %3, align 8, !tbaa !5
  %1185 = getelementptr inbounds %struct.png_struct_def, ptr %1184, i32 0, i32 36
  %1186 = load ptr, ptr %1185, align 8, !tbaa !57
  %1187 = getelementptr inbounds i8, ptr %1186, i64 1
  store ptr %1187, ptr %74, align 8, !tbaa !5
  %1188 = load ptr, ptr %6, align 8, !tbaa !5
  %1189 = getelementptr inbounds i8, ptr %1188, i64 1
  store ptr %1189, ptr %75, align 8, !tbaa !5
  br label %1190

1190:                                             ; preds = %1208, %1181
  %1191 = load i64, ptr %78, align 8, !tbaa !22
  %1192 = load i64, ptr %9, align 8, !tbaa !22
  %1193 = icmp ult i64 %1191, %1192
  br i1 %1193, label %1194, label %1211

1194:                                             ; preds = %1190
  %1195 = load ptr, ptr %73, align 8, !tbaa !5
  %1196 = getelementptr inbounds i8, ptr %1195, i32 1
  store ptr %1196, ptr %73, align 8, !tbaa !5
  %1197 = load i8, ptr %1195, align 1, !tbaa !20
  %1198 = zext i8 %1197 to i32
  %1199 = load ptr, ptr %75, align 8, !tbaa !5
  %1200 = getelementptr inbounds i8, ptr %1199, i32 1
  store ptr %1200, ptr %75, align 8, !tbaa !5
  %1201 = load i8, ptr %1199, align 1, !tbaa !20
  %1202 = zext i8 %1201 to i32
  %1203 = sub nsw i32 %1198, %1202
  %1204 = and i32 %1203, 255
  %1205 = trunc i32 %1204 to i8
  %1206 = load ptr, ptr %74, align 8, !tbaa !5
  %1207 = getelementptr inbounds i8, ptr %1206, i32 1
  store ptr %1207, ptr %74, align 8, !tbaa !5
  store i8 %1205, ptr %1206, align 1, !tbaa !20
  br label %1208

1208:                                             ; preds = %1194
  %1209 = load i64, ptr %78, align 8, !tbaa !22
  %1210 = add i64 %1209, 1
  store i64 %1210, ptr %78, align 8, !tbaa !22
  br label %1190, !llvm.loop !58

1211:                                             ; preds = %1190
  %1212 = load ptr, ptr %7, align 8, !tbaa !5
  %1213 = getelementptr inbounds i8, ptr %1212, i64 1
  store ptr %1213, ptr %77, align 8, !tbaa !5
  %1214 = load ptr, ptr %6, align 8, !tbaa !5
  %1215 = getelementptr inbounds i8, ptr %1214, i64 1
  store ptr %1215, ptr %76, align 8, !tbaa !5
  br label %1216

1216:                                             ; preds = %1303, %1211
  %1217 = load i64, ptr %78, align 8, !tbaa !22
  %1218 = load i64, ptr %11, align 8, !tbaa !22
  %1219 = icmp ult i64 %1217, %1218
  br i1 %1219, label %1220, label %1306

1220:                                             ; preds = %1216
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #2
  %1221 = load ptr, ptr %75, align 8, !tbaa !5
  %1222 = getelementptr inbounds i8, ptr %1221, i32 1
  store ptr %1222, ptr %75, align 8, !tbaa !5
  %1223 = load i8, ptr %1221, align 1, !tbaa !20
  %1224 = zext i8 %1223 to i32
  store i32 %1224, ptr %80, align 4, !tbaa !24
  %1225 = load ptr, ptr %76, align 8, !tbaa !5
  %1226 = getelementptr inbounds i8, ptr %1225, i32 1
  store ptr %1226, ptr %76, align 8, !tbaa !5
  %1227 = load i8, ptr %1225, align 1, !tbaa !20
  %1228 = zext i8 %1227 to i32
  store i32 %1228, ptr %81, align 4, !tbaa !24
  %1229 = load ptr, ptr %77, align 8, !tbaa !5
  %1230 = getelementptr inbounds i8, ptr %1229, i32 1
  store ptr %1230, ptr %77, align 8, !tbaa !5
  %1231 = load i8, ptr %1229, align 1, !tbaa !20
  %1232 = zext i8 %1231 to i32
  store i32 %1232, ptr %79, align 4, !tbaa !24
  %1233 = load i32, ptr %80, align 4, !tbaa !24
  %1234 = load i32, ptr %81, align 4, !tbaa !24
  %1235 = sub nsw i32 %1233, %1234
  store i32 %1235, ptr %85, align 4, !tbaa !24
  %1236 = load i32, ptr %79, align 4, !tbaa !24
  %1237 = load i32, ptr %81, align 4, !tbaa !24
  %1238 = sub nsw i32 %1236, %1237
  store i32 %1238, ptr %84, align 4, !tbaa !24
  %1239 = load i32, ptr %85, align 4, !tbaa !24
  %1240 = icmp slt i32 %1239, 0
  br i1 %1240, label %1241, label %1244

1241:                                             ; preds = %1220
  %1242 = load i32, ptr %85, align 4, !tbaa !24
  %1243 = sub nsw i32 0, %1242
  br label %1246

1244:                                             ; preds = %1220
  %1245 = load i32, ptr %85, align 4, !tbaa !24
  br label %1246

1246:                                             ; preds = %1244, %1241
  %1247 = phi i32 [ %1243, %1241 ], [ %1245, %1244 ]
  store i32 %1247, ptr %82, align 4, !tbaa !24
  %1248 = load i32, ptr %84, align 4, !tbaa !24
  %1249 = icmp slt i32 %1248, 0
  br i1 %1249, label %1250, label %1253

1250:                                             ; preds = %1246
  %1251 = load i32, ptr %84, align 4, !tbaa !24
  %1252 = sub nsw i32 0, %1251
  br label %1255

1253:                                             ; preds = %1246
  %1254 = load i32, ptr %84, align 4, !tbaa !24
  br label %1255

1255:                                             ; preds = %1253, %1250
  %1256 = phi i32 [ %1252, %1250 ], [ %1254, %1253 ]
  store i32 %1256, ptr %83, align 4, !tbaa !24
  %1257 = load i32, ptr %85, align 4, !tbaa !24
  %1258 = load i32, ptr %84, align 4, !tbaa !24
  %1259 = add nsw i32 %1257, %1258
  %1260 = icmp slt i32 %1259, 0
  br i1 %1260, label %1261, label %1266

1261:                                             ; preds = %1255
  %1262 = load i32, ptr %85, align 4, !tbaa !24
  %1263 = load i32, ptr %84, align 4, !tbaa !24
  %1264 = add nsw i32 %1262, %1263
  %1265 = sub nsw i32 0, %1264
  br label %1270

1266:                                             ; preds = %1255
  %1267 = load i32, ptr %85, align 4, !tbaa !24
  %1268 = load i32, ptr %84, align 4, !tbaa !24
  %1269 = add nsw i32 %1267, %1268
  br label %1270

1270:                                             ; preds = %1266, %1261
  %1271 = phi i32 [ %1265, %1261 ], [ %1269, %1266 ]
  store i32 %1271, ptr %84, align 4, !tbaa !24
  %1272 = load i32, ptr %82, align 4, !tbaa !24
  %1273 = load i32, ptr %83, align 4, !tbaa !24
  %1274 = icmp sle i32 %1272, %1273
  br i1 %1274, label %1275, label %1281

1275:                                             ; preds = %1270
  %1276 = load i32, ptr %82, align 4, !tbaa !24
  %1277 = load i32, ptr %84, align 4, !tbaa !24
  %1278 = icmp sle i32 %1276, %1277
  br i1 %1278, label %1279, label %1281

1279:                                             ; preds = %1275
  %1280 = load i32, ptr %79, align 4, !tbaa !24
  br label %1291

1281:                                             ; preds = %1275, %1270
  %1282 = load i32, ptr %83, align 4, !tbaa !24
  %1283 = load i32, ptr %84, align 4, !tbaa !24
  %1284 = icmp sle i32 %1282, %1283
  br i1 %1284, label %1285, label %1287

1285:                                             ; preds = %1281
  %1286 = load i32, ptr %80, align 4, !tbaa !24
  br label %1289

1287:                                             ; preds = %1281
  %1288 = load i32, ptr %81, align 4, !tbaa !24
  br label %1289

1289:                                             ; preds = %1287, %1285
  %1290 = phi i32 [ %1286, %1285 ], [ %1288, %1287 ]
  br label %1291

1291:                                             ; preds = %1289, %1279
  %1292 = phi i32 [ %1280, %1279 ], [ %1290, %1289 ]
  store i32 %1292, ptr %85, align 4, !tbaa !24
  %1293 = load ptr, ptr %73, align 8, !tbaa !5
  %1294 = getelementptr inbounds i8, ptr %1293, i32 1
  store ptr %1294, ptr %73, align 8, !tbaa !5
  %1295 = load i8, ptr %1293, align 1, !tbaa !20
  %1296 = zext i8 %1295 to i32
  %1297 = load i32, ptr %85, align 4, !tbaa !24
  %1298 = sub nsw i32 %1296, %1297
  %1299 = and i32 %1298, 255
  %1300 = trunc i32 %1299 to i8
  %1301 = load ptr, ptr %74, align 8, !tbaa !5
  %1302 = getelementptr inbounds i8, ptr %1301, i32 1
  store ptr %1302, ptr %74, align 8, !tbaa !5
  store i8 %1300, ptr %1301, align 1, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #2
  br label %1303

1303:                                             ; preds = %1291
  %1304 = load i64, ptr %78, align 8, !tbaa !22
  %1305 = add i64 %1304, 1
  store i64 %1305, ptr %78, align 8, !tbaa !22
  br label %1216, !llvm.loop !59

1306:                                             ; preds = %1216
  %1307 = load ptr, ptr %3, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.png_struct_def, ptr %1307, i32 0, i32 36
  %1309 = load ptr, ptr %1308, align 8, !tbaa !57
  store ptr %1309, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #2
  br label %1647

1310:                                             ; preds = %1177
  %1311 = load i8, ptr %10, align 1, !tbaa !20
  %1312 = zext i8 %1311 to i32
  %1313 = and i32 %1312, 128
  %1314 = icmp ne i32 %1313, 0
  br i1 %1314, label %1315, label %1646

1315:                                             ; preds = %1310
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #2
  store i64 0, ptr %91, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #2
  %1316 = load i64, ptr %8, align 8, !tbaa !22
  store i64 %1316, ptr %92, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #2
  %1317 = load ptr, ptr %3, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.png_struct_def, ptr %1317, i32 0, i32 101
  %1319 = load i8, ptr %1318, align 8, !tbaa !30
  %1320 = zext i8 %1319 to i32
  %1321 = icmp eq i32 %1320, 2
  br i1 %1321, label %1322, label %1397

1322:                                             ; preds = %1315
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #2
  %1323 = load i64, ptr %92, align 8, !tbaa !22
  %1324 = and i64 %1323, 65535
  store i64 %1324, ptr %97, align 8, !tbaa !22
  %1325 = load i64, ptr %92, align 8, !tbaa !22
  %1326 = lshr i64 %1325, 10
  %1327 = and i64 %1326, 18014398509481920
  store i64 %1327, ptr %96, align 8, !tbaa !22
  store i32 0, ptr %95, align 4, !tbaa !24
  br label %1328

1328:                                             ; preds = %1366, %1322
  %1329 = load i32, ptr %95, align 4, !tbaa !24
  %1330 = load i32, ptr %12, align 4, !tbaa !24
  %1331 = icmp slt i32 %1329, %1330
  br i1 %1331, label %1332, label %1369

1332:                                             ; preds = %1328
  %1333 = load ptr, ptr %3, align 8, !tbaa !5
  %1334 = getelementptr inbounds %struct.png_struct_def, ptr %1333, i32 0, i32 103
  %1335 = load ptr, ptr %1334, align 8, !tbaa !31
  %1336 = load i32, ptr %95, align 4, !tbaa !24
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds i8, ptr %1335, i64 %1337
  %1339 = load i8, ptr %1338, align 1, !tbaa !20
  %1340 = zext i8 %1339 to i32
  %1341 = icmp eq i32 %1340, 4
  br i1 %1341, label %1342, label %1365

1342:                                             ; preds = %1332
  %1343 = load i64, ptr %97, align 8, !tbaa !22
  %1344 = load ptr, ptr %3, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.png_struct_def, ptr %1344, i32 0, i32 105
  %1346 = load ptr, ptr %1345, align 8, !tbaa !39
  %1347 = load i32, ptr %95, align 4, !tbaa !24
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds i16, ptr %1346, i64 %1348
  %1350 = load i16, ptr %1349, align 2, !tbaa !33
  %1351 = zext i16 %1350 to i64
  %1352 = mul i64 %1343, %1351
  %1353 = lshr i64 %1352, 8
  store i64 %1353, ptr %97, align 8, !tbaa !22
  %1354 = load i64, ptr %96, align 8, !tbaa !22
  %1355 = load ptr, ptr %3, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.png_struct_def, ptr %1355, i32 0, i32 105
  %1357 = load ptr, ptr %1356, align 8, !tbaa !39
  %1358 = load i32, ptr %95, align 4, !tbaa !24
  %1359 = sext i32 %1358 to i64
  %1360 = getelementptr inbounds i16, ptr %1357, i64 %1359
  %1361 = load i16, ptr %1360, align 2, !tbaa !33
  %1362 = zext i16 %1361 to i64
  %1363 = mul i64 %1354, %1362
  %1364 = lshr i64 %1363, 8
  store i64 %1364, ptr %96, align 8, !tbaa !22
  br label %1365

1365:                                             ; preds = %1342, %1332
  br label %1366

1366:                                             ; preds = %1365
  %1367 = load i32, ptr %95, align 4, !tbaa !24
  %1368 = add nsw i32 %1367, 1
  store i32 %1368, ptr %95, align 4, !tbaa !24
  br label %1328, !llvm.loop !60

1369:                                             ; preds = %1328
  %1370 = load i64, ptr %97, align 8, !tbaa !22
  %1371 = load ptr, ptr %3, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.png_struct_def, ptr %1371, i32 0, i32 107
  %1373 = load ptr, ptr %1372, align 8, !tbaa !41
  %1374 = getelementptr inbounds i16, ptr %1373, i64 4
  %1375 = load i16, ptr %1374, align 2, !tbaa !33
  %1376 = zext i16 %1375 to i64
  %1377 = mul i64 %1370, %1376
  %1378 = lshr i64 %1377, 3
  store i64 %1378, ptr %97, align 8, !tbaa !22
  %1379 = load i64, ptr %96, align 8, !tbaa !22
  %1380 = load ptr, ptr %3, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.png_struct_def, ptr %1380, i32 0, i32 107
  %1382 = load ptr, ptr %1381, align 8, !tbaa !41
  %1383 = getelementptr inbounds i16, ptr %1382, i64 4
  %1384 = load i16, ptr %1383, align 2, !tbaa !33
  %1385 = zext i16 %1384 to i64
  %1386 = mul i64 %1379, %1385
  %1387 = lshr i64 %1386, 3
  store i64 %1387, ptr %96, align 8, !tbaa !22
  %1388 = load i64, ptr %96, align 8, !tbaa !22
  %1389 = icmp ugt i64 %1388, 18014398509481920
  br i1 %1389, label %1390, label %1391

1390:                                             ; preds = %1369
  store i64 9223372036854775807, ptr %92, align 8, !tbaa !22
  br label %1396

1391:                                             ; preds = %1369
  %1392 = load i64, ptr %96, align 8, !tbaa !22
  %1393 = shl i64 %1392, 10
  %1394 = load i64, ptr %97, align 8, !tbaa !22
  %1395 = add i64 %1393, %1394
  store i64 %1395, ptr %92, align 8, !tbaa !22
  br label %1396

1396:                                             ; preds = %1391, %1390
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #2
  br label %1397

1397:                                             ; preds = %1396, %1315
  store i64 0, ptr %93, align 8, !tbaa !22
  %1398 = load ptr, ptr %7, align 8, !tbaa !5
  %1399 = getelementptr inbounds i8, ptr %1398, i64 1
  store ptr %1399, ptr %86, align 8, !tbaa !5
  %1400 = load ptr, ptr %3, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.png_struct_def, ptr %1400, i32 0, i32 36
  %1402 = load ptr, ptr %1401, align 8, !tbaa !57
  %1403 = getelementptr inbounds i8, ptr %1402, i64 1
  store ptr %1403, ptr %87, align 8, !tbaa !5
  %1404 = load ptr, ptr %6, align 8, !tbaa !5
  %1405 = getelementptr inbounds i8, ptr %1404, i64 1
  store ptr %1405, ptr %88, align 8, !tbaa !5
  br label %1406

1406:                                             ; preds = %1437, %1397
  %1407 = load i64, ptr %93, align 8, !tbaa !22
  %1408 = load i64, ptr %9, align 8, !tbaa !22
  %1409 = icmp ult i64 %1407, %1408
  br i1 %1409, label %1410, label %1440

1410:                                             ; preds = %1406
  %1411 = load ptr, ptr %86, align 8, !tbaa !5
  %1412 = getelementptr inbounds i8, ptr %1411, i32 1
  store ptr %1412, ptr %86, align 8, !tbaa !5
  %1413 = load i8, ptr %1411, align 1, !tbaa !20
  %1414 = zext i8 %1413 to i32
  %1415 = load ptr, ptr %88, align 8, !tbaa !5
  %1416 = getelementptr inbounds i8, ptr %1415, i32 1
  store ptr %1416, ptr %88, align 8, !tbaa !5
  %1417 = load i8, ptr %1415, align 1, !tbaa !20
  %1418 = zext i8 %1417 to i32
  %1419 = sub nsw i32 %1414, %1418
  %1420 = and i32 %1419, 255
  %1421 = trunc i32 %1420 to i8
  %1422 = load ptr, ptr %87, align 8, !tbaa !5
  %1423 = getelementptr inbounds i8, ptr %1422, i32 1
  store ptr %1423, ptr %87, align 8, !tbaa !5
  store i8 %1421, ptr %1422, align 1, !tbaa !20
  %1424 = zext i8 %1421 to i32
  store i32 %1424, ptr %94, align 4, !tbaa !24
  %1425 = load i32, ptr %94, align 4, !tbaa !24
  %1426 = icmp slt i32 %1425, 128
  br i1 %1426, label %1427, label %1429

1427:                                             ; preds = %1410
  %1428 = load i32, ptr %94, align 4, !tbaa !24
  br label %1432

1429:                                             ; preds = %1410
  %1430 = load i32, ptr %94, align 4, !tbaa !24
  %1431 = sub nsw i32 256, %1430
  br label %1432

1432:                                             ; preds = %1429, %1427
  %1433 = phi i32 [ %1428, %1427 ], [ %1431, %1429 ]
  %1434 = sext i32 %1433 to i64
  %1435 = load i64, ptr %91, align 8, !tbaa !22
  %1436 = add i64 %1435, %1434
  store i64 %1436, ptr %91, align 8, !tbaa !22
  br label %1437

1437:                                             ; preds = %1432
  %1438 = load i64, ptr %93, align 8, !tbaa !22
  %1439 = add i64 %1438, 1
  store i64 %1439, ptr %93, align 8, !tbaa !22
  br label %1406, !llvm.loop !61

1440:                                             ; preds = %1406
  %1441 = load ptr, ptr %7, align 8, !tbaa !5
  %1442 = getelementptr inbounds i8, ptr %1441, i64 1
  store ptr %1442, ptr %90, align 8, !tbaa !5
  %1443 = load ptr, ptr %6, align 8, !tbaa !5
  %1444 = getelementptr inbounds i8, ptr %1443, i64 1
  store ptr %1444, ptr %89, align 8, !tbaa !5
  br label %1445

1445:                                             ; preds = %1553, %1440
  %1446 = load i64, ptr %93, align 8, !tbaa !22
  %1447 = load i64, ptr %11, align 8, !tbaa !22
  %1448 = icmp ult i64 %1446, %1447
  br i1 %1448, label %1449, label %1556

1449:                                             ; preds = %1445
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #2
  %1450 = load ptr, ptr %88, align 8, !tbaa !5
  %1451 = getelementptr inbounds i8, ptr %1450, i32 1
  store ptr %1451, ptr %88, align 8, !tbaa !5
  %1452 = load i8, ptr %1450, align 1, !tbaa !20
  %1453 = zext i8 %1452 to i32
  store i32 %1453, ptr %99, align 4, !tbaa !24
  %1454 = load ptr, ptr %89, align 8, !tbaa !5
  %1455 = getelementptr inbounds i8, ptr %1454, i32 1
  store ptr %1455, ptr %89, align 8, !tbaa !5
  %1456 = load i8, ptr %1454, align 1, !tbaa !20
  %1457 = zext i8 %1456 to i32
  store i32 %1457, ptr %100, align 4, !tbaa !24
  %1458 = load ptr, ptr %90, align 8, !tbaa !5
  %1459 = getelementptr inbounds i8, ptr %1458, i32 1
  store ptr %1459, ptr %90, align 8, !tbaa !5
  %1460 = load i8, ptr %1458, align 1, !tbaa !20
  %1461 = zext i8 %1460 to i32
  store i32 %1461, ptr %98, align 4, !tbaa !24
  %1462 = load i32, ptr %99, align 4, !tbaa !24
  %1463 = load i32, ptr %100, align 4, !tbaa !24
  %1464 = sub nsw i32 %1462, %1463
  store i32 %1464, ptr %104, align 4, !tbaa !24
  %1465 = load i32, ptr %98, align 4, !tbaa !24
  %1466 = load i32, ptr %100, align 4, !tbaa !24
  %1467 = sub nsw i32 %1465, %1466
  store i32 %1467, ptr %103, align 4, !tbaa !24
  %1468 = load i32, ptr %104, align 4, !tbaa !24
  %1469 = icmp slt i32 %1468, 0
  br i1 %1469, label %1470, label %1473

1470:                                             ; preds = %1449
  %1471 = load i32, ptr %104, align 4, !tbaa !24
  %1472 = sub nsw i32 0, %1471
  br label %1475

1473:                                             ; preds = %1449
  %1474 = load i32, ptr %104, align 4, !tbaa !24
  br label %1475

1475:                                             ; preds = %1473, %1470
  %1476 = phi i32 [ %1472, %1470 ], [ %1474, %1473 ]
  store i32 %1476, ptr %101, align 4, !tbaa !24
  %1477 = load i32, ptr %103, align 4, !tbaa !24
  %1478 = icmp slt i32 %1477, 0
  br i1 %1478, label %1479, label %1482

1479:                                             ; preds = %1475
  %1480 = load i32, ptr %103, align 4, !tbaa !24
  %1481 = sub nsw i32 0, %1480
  br label %1484

1482:                                             ; preds = %1475
  %1483 = load i32, ptr %103, align 4, !tbaa !24
  br label %1484

1484:                                             ; preds = %1482, %1479
  %1485 = phi i32 [ %1481, %1479 ], [ %1483, %1482 ]
  store i32 %1485, ptr %102, align 4, !tbaa !24
  %1486 = load i32, ptr %104, align 4, !tbaa !24
  %1487 = load i32, ptr %103, align 4, !tbaa !24
  %1488 = add nsw i32 %1486, %1487
  %1489 = icmp slt i32 %1488, 0
  br i1 %1489, label %1490, label %1495

1490:                                             ; preds = %1484
  %1491 = load i32, ptr %104, align 4, !tbaa !24
  %1492 = load i32, ptr %103, align 4, !tbaa !24
  %1493 = add nsw i32 %1491, %1492
  %1494 = sub nsw i32 0, %1493
  br label %1499

1495:                                             ; preds = %1484
  %1496 = load i32, ptr %104, align 4, !tbaa !24
  %1497 = load i32, ptr %103, align 4, !tbaa !24
  %1498 = add nsw i32 %1496, %1497
  br label %1499

1499:                                             ; preds = %1495, %1490
  %1500 = phi i32 [ %1494, %1490 ], [ %1498, %1495 ]
  store i32 %1500, ptr %103, align 4, !tbaa !24
  %1501 = load i32, ptr %101, align 4, !tbaa !24
  %1502 = load i32, ptr %102, align 4, !tbaa !24
  %1503 = icmp sle i32 %1501, %1502
  br i1 %1503, label %1504, label %1510

1504:                                             ; preds = %1499
  %1505 = load i32, ptr %101, align 4, !tbaa !24
  %1506 = load i32, ptr %103, align 4, !tbaa !24
  %1507 = icmp sle i32 %1505, %1506
  br i1 %1507, label %1508, label %1510

1508:                                             ; preds = %1504
  %1509 = load i32, ptr %98, align 4, !tbaa !24
  br label %1520

1510:                                             ; preds = %1504, %1499
  %1511 = load i32, ptr %102, align 4, !tbaa !24
  %1512 = load i32, ptr %103, align 4, !tbaa !24
  %1513 = icmp sle i32 %1511, %1512
  br i1 %1513, label %1514, label %1516

1514:                                             ; preds = %1510
  %1515 = load i32, ptr %99, align 4, !tbaa !24
  br label %1518

1516:                                             ; preds = %1510
  %1517 = load i32, ptr %100, align 4, !tbaa !24
  br label %1518

1518:                                             ; preds = %1516, %1514
  %1519 = phi i32 [ %1515, %1514 ], [ %1517, %1516 ]
  br label %1520

1520:                                             ; preds = %1518, %1508
  %1521 = phi i32 [ %1509, %1508 ], [ %1519, %1518 ]
  store i32 %1521, ptr %104, align 4, !tbaa !24
  %1522 = load ptr, ptr %86, align 8, !tbaa !5
  %1523 = getelementptr inbounds i8, ptr %1522, i32 1
  store ptr %1523, ptr %86, align 8, !tbaa !5
  %1524 = load i8, ptr %1522, align 1, !tbaa !20
  %1525 = zext i8 %1524 to i32
  %1526 = load i32, ptr %104, align 4, !tbaa !24
  %1527 = sub nsw i32 %1525, %1526
  %1528 = and i32 %1527, 255
  %1529 = trunc i32 %1528 to i8
  %1530 = load ptr, ptr %87, align 8, !tbaa !5
  %1531 = getelementptr inbounds i8, ptr %1530, i32 1
  store ptr %1531, ptr %87, align 8, !tbaa !5
  store i8 %1529, ptr %1530, align 1, !tbaa !20
  %1532 = zext i8 %1529 to i32
  store i32 %1532, ptr %94, align 4, !tbaa !24
  %1533 = load i32, ptr %94, align 4, !tbaa !24
  %1534 = icmp slt i32 %1533, 128
  br i1 %1534, label %1535, label %1537

1535:                                             ; preds = %1520
  %1536 = load i32, ptr %94, align 4, !tbaa !24
  br label %1540

1537:                                             ; preds = %1520
  %1538 = load i32, ptr %94, align 4, !tbaa !24
  %1539 = sub nsw i32 256, %1538
  br label %1540

1540:                                             ; preds = %1537, %1535
  %1541 = phi i32 [ %1536, %1535 ], [ %1539, %1537 ]
  %1542 = sext i32 %1541 to i64
  %1543 = load i64, ptr %91, align 8, !tbaa !22
  %1544 = add i64 %1543, %1542
  store i64 %1544, ptr %91, align 8, !tbaa !22
  %1545 = load i64, ptr %91, align 8, !tbaa !22
  %1546 = load i64, ptr %92, align 8, !tbaa !22
  %1547 = icmp ugt i64 %1545, %1546
  br i1 %1547, label %1548, label %1549

1548:                                             ; preds = %1540
  store i32 68, ptr %105, align 4
  br label %1550

1549:                                             ; preds = %1540
  store i32 0, ptr %105, align 4
  br label %1550

1550:                                             ; preds = %1549, %1548
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #2
  %1551 = load i32, ptr %105, align 4
  switch i32 %1551, label %1689 [
    i32 0, label %1552
    i32 68, label %1556
  ]

1552:                                             ; preds = %1550
  br label %1553

1553:                                             ; preds = %1552
  %1554 = load i64, ptr %93, align 8, !tbaa !22
  %1555 = add i64 %1554, 1
  store i64 %1555, ptr %93, align 8, !tbaa !22
  br label %1445, !llvm.loop !62

1556:                                             ; preds = %1550, %1445
  %1557 = load ptr, ptr %3, align 8, !tbaa !5
  %1558 = getelementptr inbounds %struct.png_struct_def, ptr %1557, i32 0, i32 101
  %1559 = load i8, ptr %1558, align 8, !tbaa !30
  %1560 = zext i8 %1559 to i32
  %1561 = icmp eq i32 %1560, 2
  br i1 %1561, label %1562, label %1637

1562:                                             ; preds = %1556
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #2
  %1563 = load i64, ptr %91, align 8, !tbaa !22
  %1564 = and i64 %1563, 65535
  store i64 %1564, ptr %108, align 8, !tbaa !22
  %1565 = load i64, ptr %91, align 8, !tbaa !22
  %1566 = lshr i64 %1565, 10
  %1567 = and i64 %1566, 18014398509481920
  store i64 %1567, ptr %107, align 8, !tbaa !22
  store i32 0, ptr %106, align 4, !tbaa !24
  br label %1568

1568:                                             ; preds = %1606, %1562
  %1569 = load i32, ptr %106, align 4, !tbaa !24
  %1570 = load i32, ptr %12, align 4, !tbaa !24
  %1571 = icmp slt i32 %1569, %1570
  br i1 %1571, label %1572, label %1609

1572:                                             ; preds = %1568
  %1573 = load ptr, ptr %3, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.png_struct_def, ptr %1573, i32 0, i32 103
  %1575 = load ptr, ptr %1574, align 8, !tbaa !31
  %1576 = load i32, ptr %106, align 4, !tbaa !24
  %1577 = sext i32 %1576 to i64
  %1578 = getelementptr inbounds i8, ptr %1575, i64 %1577
  %1579 = load i8, ptr %1578, align 1, !tbaa !20
  %1580 = zext i8 %1579 to i32
  %1581 = icmp eq i32 %1580, 4
  br i1 %1581, label %1582, label %1605

1582:                                             ; preds = %1572
  %1583 = load i64, ptr %108, align 8, !tbaa !22
  %1584 = load ptr, ptr %3, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.png_struct_def, ptr %1584, i32 0, i32 104
  %1586 = load ptr, ptr %1585, align 8, !tbaa !32
  %1587 = load i32, ptr %106, align 4, !tbaa !24
  %1588 = sext i32 %1587 to i64
  %1589 = getelementptr inbounds i16, ptr %1586, i64 %1588
  %1590 = load i16, ptr %1589, align 2, !tbaa !33
  %1591 = zext i16 %1590 to i64
  %1592 = mul i64 %1583, %1591
  %1593 = lshr i64 %1592, 8
  store i64 %1593, ptr %108, align 8, !tbaa !22
  %1594 = load i64, ptr %107, align 8, !tbaa !22
  %1595 = load ptr, ptr %3, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.png_struct_def, ptr %1595, i32 0, i32 104
  %1597 = load ptr, ptr %1596, align 8, !tbaa !32
  %1598 = load i32, ptr %106, align 4, !tbaa !24
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds i16, ptr %1597, i64 %1599
  %1601 = load i16, ptr %1600, align 2, !tbaa !33
  %1602 = zext i16 %1601 to i64
  %1603 = mul i64 %1594, %1602
  %1604 = lshr i64 %1603, 8
  store i64 %1604, ptr %107, align 8, !tbaa !22
  br label %1605

1605:                                             ; preds = %1582, %1572
  br label %1606

1606:                                             ; preds = %1605
  %1607 = load i32, ptr %106, align 4, !tbaa !24
  %1608 = add nsw i32 %1607, 1
  store i32 %1608, ptr %106, align 4, !tbaa !24
  br label %1568, !llvm.loop !63

1609:                                             ; preds = %1568
  %1610 = load i64, ptr %108, align 8, !tbaa !22
  %1611 = load ptr, ptr %3, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.png_struct_def, ptr %1611, i32 0, i32 106
  %1613 = load ptr, ptr %1612, align 8, !tbaa !35
  %1614 = getelementptr inbounds i16, ptr %1613, i64 4
  %1615 = load i16, ptr %1614, align 2, !tbaa !33
  %1616 = zext i16 %1615 to i64
  %1617 = mul i64 %1610, %1616
  %1618 = lshr i64 %1617, 3
  store i64 %1618, ptr %108, align 8, !tbaa !22
  %1619 = load i64, ptr %107, align 8, !tbaa !22
  %1620 = load ptr, ptr %3, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.png_struct_def, ptr %1620, i32 0, i32 106
  %1622 = load ptr, ptr %1621, align 8, !tbaa !35
  %1623 = getelementptr inbounds i16, ptr %1622, i64 4
  %1624 = load i16, ptr %1623, align 2, !tbaa !33
  %1625 = zext i16 %1624 to i64
  %1626 = mul i64 %1619, %1625
  %1627 = lshr i64 %1626, 3
  store i64 %1627, ptr %107, align 8, !tbaa !22
  %1628 = load i64, ptr %107, align 8, !tbaa !22
  %1629 = icmp ugt i64 %1628, 18014398509481920
  br i1 %1629, label %1630, label %1631

1630:                                             ; preds = %1609
  store i64 9223372036854775807, ptr %91, align 8, !tbaa !22
  br label %1636

1631:                                             ; preds = %1609
  %1632 = load i64, ptr %107, align 8, !tbaa !22
  %1633 = shl i64 %1632, 10
  %1634 = load i64, ptr %108, align 8, !tbaa !22
  %1635 = add i64 %1633, %1634
  store i64 %1635, ptr %91, align 8, !tbaa !22
  br label %1636

1636:                                             ; preds = %1631, %1630
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #2
  br label %1637

1637:                                             ; preds = %1636, %1556
  %1638 = load i64, ptr %91, align 8, !tbaa !22
  %1639 = load i64, ptr %8, align 8, !tbaa !22
  %1640 = icmp ult i64 %1638, %1639
  br i1 %1640, label %1641, label %1645

1641:                                             ; preds = %1637
  %1642 = load ptr, ptr %3, align 8, !tbaa !5
  %1643 = getelementptr inbounds %struct.png_struct_def, ptr %1642, i32 0, i32 36
  %1644 = load ptr, ptr %1643, align 8, !tbaa !57
  store ptr %1644, ptr %5, align 8, !tbaa !5
  br label %1645

1645:                                             ; preds = %1641, %1637
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #2
  br label %1646

1646:                                             ; preds = %1645, %1310
  br label %1647

1647:                                             ; preds = %1646, %1306
  %1648 = load ptr, ptr %3, align 8, !tbaa !5
  %1649 = load ptr, ptr %5, align 8, !tbaa !5
  call void @png_write_filtered_row(ptr noundef %1648, ptr noundef %1649)
  %1650 = load ptr, ptr %3, align 8, !tbaa !5
  %1651 = getelementptr inbounds %struct.png_struct_def, ptr %1650, i32 0, i32 102
  %1652 = load i8, ptr %1651, align 1, !tbaa !23
  %1653 = zext i8 %1652 to i32
  %1654 = icmp sgt i32 %1653, 0
  br i1 %1654, label %1655, label %1688

1655:                                             ; preds = %1647
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #2
  store i32 1, ptr %109, align 4, !tbaa !24
  br label %1656

1656:                                             ; preds = %1675, %1655
  %1657 = load i32, ptr %109, align 4, !tbaa !24
  %1658 = load i32, ptr %12, align 4, !tbaa !24
  %1659 = icmp slt i32 %1657, %1658
  br i1 %1659, label %1660, label %1678

1660:                                             ; preds = %1656
  %1661 = load ptr, ptr %3, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.png_struct_def, ptr %1661, i32 0, i32 103
  %1663 = load ptr, ptr %1662, align 8, !tbaa !31
  %1664 = load i32, ptr %109, align 4, !tbaa !24
  %1665 = sub nsw i32 %1664, 1
  %1666 = sext i32 %1665 to i64
  %1667 = getelementptr inbounds i8, ptr %1663, i64 %1666
  %1668 = load i8, ptr %1667, align 1, !tbaa !20
  %1669 = load ptr, ptr %3, align 8, !tbaa !5
  %1670 = getelementptr inbounds %struct.png_struct_def, ptr %1669, i32 0, i32 103
  %1671 = load ptr, ptr %1670, align 8, !tbaa !31
  %1672 = load i32, ptr %109, align 4, !tbaa !24
  %1673 = sext i32 %1672 to i64
  %1674 = getelementptr inbounds i8, ptr %1671, i64 %1673
  store i8 %1668, ptr %1674, align 1, !tbaa !20
  br label %1675

1675:                                             ; preds = %1660
  %1676 = load i32, ptr %109, align 4, !tbaa !24
  %1677 = add nsw i32 %1676, 1
  store i32 %1677, ptr %109, align 4, !tbaa !24
  br label %1656, !llvm.loop !64

1678:                                             ; preds = %1656
  %1679 = load ptr, ptr %5, align 8, !tbaa !5
  %1680 = getelementptr inbounds i8, ptr %1679, i64 0
  %1681 = load i8, ptr %1680, align 1, !tbaa !20
  %1682 = load ptr, ptr %3, align 8, !tbaa !5
  %1683 = getelementptr inbounds %struct.png_struct_def, ptr %1682, i32 0, i32 103
  %1684 = load ptr, ptr %1683, align 8, !tbaa !31
  %1685 = load i32, ptr %109, align 4, !tbaa !24
  %1686 = sext i32 %1685 to i64
  %1687 = getelementptr inbounds i8, ptr %1684, i64 %1686
  store i8 %1681, ptr %1687, align 1, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #2
  br label %1688

1688:                                             ; preds = %1678, %1647
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #2
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #2
  ret void

1689:                                             ; preds = %1550
  unreachable
}

; Function Attrs: nounwind uwtable
declare dso_local void @png_write_filtered_row(ptr noundef, ptr noundef) #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !7, i64 629}
!10 = !{!"png_struct_def", !7, i64 0, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !7, i64 272, !7, i64 273, !11, i64 280, !11, i64 288, !11, i64 296, !12, i64 304, !6, i64 416, !11, i64 424, !13, i64 432, !13, i64 436, !13, i64 440, !13, i64 444, !13, i64 448, !11, i64 456, !11, i64 464, !11, i64 472, !11, i64 480, !11, i64 488, !11, i64 496, !11, i64 504, !11, i64 512, !6, i64 520, !6, i64 528, !6, i64 536, !6, i64 544, !6, i64 552, !6, i64 560, !14, i64 568, !11, i64 592, !11, i64 600, !6, i64 608, !15, i64 616, !15, i64 618, !7, i64 620, !7, i64 625, !7, i64 626, !7, i64 627, !7, i64 628, !7, i64 629, !7, i64 630, !7, i64 631, !7, i64 632, !7, i64 633, !7, i64 634, !7, i64 635, !7, i64 636, !15, i64 638, !7, i64 640, !16, i64 644, !17, i64 648, !17, i64 658, !6, i64 672, !11, i64 680, !11, i64 688, !13, i64 696, !16, i64 700, !16, i64 704, !6, i64 712, !6, i64 720, !6, i64 728, !6, i64 736, !6, i64 744, !6, i64 752, !18, i64 760, !18, i64 765, !6, i64 776, !17, i64 784, !6, i64 800, !6, i64 808, !6, i64 816, !6, i64 824, !6, i64 832, !6, i64 840, !6, i64 848, !6, i64 856, !6, i64 864, !11, i64 872, !11, i64 880, !11, i64 888, !11, i64 896, !11, i64 904, !11, i64 912, !13, i64 920, !13, i64 924, !11, i64 928, !11, i64 936, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !6, i64 976, !7, i64 984, !7, i64 985, !6, i64 992, !6, i64 1000, !6, i64 1008, !6, i64 1016, !6, i64 1024, !6, i64 1032, !11, i64 1040, !6, i64 1048, !6, i64 1056, !13, i64 1064, !6, i64 1072, !7, i64 1080, !15, i64 1082, !15, i64 1084, !15, i64 1086, !11, i64 1088, !11, i64 1096, !7, i64 1104, !7, i64 1105, !11, i64 1112, !11, i64 1120, !6, i64 1128, !6, i64 1136, !6, i64 1144, !6, i64 1152, !6, i64 1160, !6, i64 1168, !6, i64 1176, !7, i64 1184, !11, i64 1192, !11, i64 1200, !19, i64 1208, !11, i64 1240, !11, i64 1248, !6, i64 1256}
!11 = !{!"long", !7, i64 0}
!12 = !{!"z_stream_s", !6, i64 0, !13, i64 8, !11, i64 16, !6, i64 24, !13, i64 32, !11, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !13, i64 88, !11, i64 96, !11, i64 104}
!13 = !{!"int", !7, i64 0}
!14 = !{!"png_row_info_struct", !11, i64 0, !11, i64 8, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19}
!15 = !{!"short", !7, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = !{!"png_color_16_struct", !7, i64 0, !15, i64 2, !15, i64 4, !15, i64 6, !15, i64 8}
!18 = !{!"png_color_8_struct", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !7, i64 4}
!19 = !{!"png_unknown_chunk_t", !7, i64 0, !6, i64 8, !11, i64 16, !7, i64 24}
!20 = !{!7, !7, i64 0}
!21 = !{!14, !11, i64 8}
!22 = !{!11, !11, i64 0}
!23 = !{!10, !7, i64 985}
!24 = !{!13, !13, i64 0}
!25 = !{!14, !7, i64 19}
!26 = !{!10, !6, i64 520}
!27 = !{!10, !6, i64 528}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!10, !7, i64 984}
!31 = !{!10, !6, i64 992}
!32 = !{!10, !6, i64 1000}
!33 = !{!15, !15, i64 0}
!34 = distinct !{!34, !29}
!35 = !{!10, !6, i64 1016}
!36 = !{!10, !6, i64 536}
!37 = distinct !{!37, !29}
!38 = distinct !{!38, !29}
!39 = !{!10, !6, i64 1008}
!40 = distinct !{!40, !29}
!41 = !{!10, !6, i64 1024}
!42 = distinct !{!42, !29}
!43 = distinct !{!43, !29}
!44 = distinct !{!44, !29}
!45 = !{!10, !6, i64 544}
!46 = distinct !{!46, !29}
!47 = distinct !{!47, !29}
!48 = distinct !{!48, !29}
!49 = distinct !{!49, !29}
!50 = !{!10, !6, i64 552}
!51 = distinct !{!51, !29}
!52 = distinct !{!52, !29}
!53 = distinct !{!53, !29}
!54 = distinct !{!54, !29}
!55 = distinct !{!55, !29}
!56 = distinct !{!56, !29}
!57 = !{!10, !6, i64 560}
!58 = distinct !{!58, !29}
!59 = distinct !{!59, !29}
!60 = distinct !{!60, !29}
!61 = distinct !{!61, !29}
!62 = distinct !{!62, !29}
!63 = distinct !{!63, !29}
!64 = distinct !{!64, !29}


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

; Function Attrs: nounwind uwtable
define dso_local void @png_write_find_filter(ptr noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 {
  %3 = getelementptr inbounds i8, ptr %0, i64 629
  %4 = load i8, ptr %3, align 1, !tbaa !5
  %5 = getelementptr inbounds i8, ptr %1, i64 8
  %6 = load i64, ptr %5, align 8, !tbaa !19
  %7 = getelementptr inbounds i8, ptr %0, i64 985
  %8 = load i8, ptr %7, align 1, !tbaa !20
  %9 = getelementptr inbounds i8, ptr %1, i64 19
  %10 = load i8, ptr %9, align 1, !tbaa !21
  %11 = zext i8 %10 to i64
  %12 = add nuw nsw i64 %11, 7
  %13 = lshr i64 %12, 3
  %14 = getelementptr inbounds i8, ptr %0, i64 520
  %15 = load ptr, ptr %14, align 8, !tbaa !22
  %16 = ptrtoint ptr %15 to i64
  %17 = getelementptr inbounds i8, ptr %0, i64 528
  %18 = load ptr, ptr %17, align 8, !tbaa !23
  %19 = ptrtoint ptr %18 to i64
  %20 = zext i8 %4 to i32
  %21 = and i32 %20, 8
  %22 = icmp ne i32 %21, 0
  %23 = icmp ne i8 %4, 8
  %or.cond = and i1 %23, %22
  br i1 %or.cond, label %.preheader697, label %110

.preheader697:                                    ; preds = %2
  %.not940 = icmp eq i64 %6, 0
  br i1 %.not940, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.preheader697
  %min.iters.check = icmp ult i64 %6, 4
  br i1 %min.iters.check, label %.lr.ph.preheader1565, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %6, -4
  %ind.end = getelementptr i8, ptr %18, i64 %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %36, %vector.body ]
  %vec.phi1115 = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %37, %vector.body ]
  %next.gep = getelementptr i8, ptr %18, i64 %index
  %24 = getelementptr inbounds i8, ptr %next.gep, i64 1
  %25 = getelementptr inbounds i8, ptr %next.gep, i64 3
  %wide.load = load <2 x i8>, ptr %24, align 1, !tbaa !24
  %wide.load1117 = load <2 x i8>, ptr %25, align 1, !tbaa !24
  %26 = zext <2 x i8> %wide.load to <2 x i32>
  %27 = zext <2 x i8> %wide.load1117 to <2 x i32>
  %28 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %26
  %29 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %27
  %30 = icmp slt <2 x i8> %wide.load, zeroinitializer
  %31 = icmp slt <2 x i8> %wide.load1117, zeroinitializer
  %32 = select <2 x i1> %30, <2 x i32> %28, <2 x i32> %26
  %33 = select <2 x i1> %31, <2 x i32> %29, <2 x i32> %27
  %34 = zext nneg <2 x i32> %32 to <2 x i64>
  %35 = zext nneg <2 x i32> %33 to <2 x i64>
  %36 = add <2 x i64> %vec.phi, %34
  %37 = add <2 x i64> %vec.phi1115, %35
  %index.next = add nuw i64 %index, 4
  %38 = icmp eq i64 %index.next, %n.vec
  br i1 %38, label %middle.block, label %vector.body, !llvm.loop !25

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <2 x i64> %37, %36
  %39 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx)
  %cmp.n = icmp eq i64 %6, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader1565

.lr.ph.preheader1565:                             ; preds = %middle.block, %.lr.ph.preheader
  %.pn688700.ph = phi ptr [ %18, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.0489699.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %39, %middle.block ]
  %.0492698.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader1565, %.lr.ph
  %.pn688700 = phi ptr [ %.0488, %.lr.ph ], [ %.pn688700.ph, %.lr.ph.preheader1565 ]
  %.0489699 = phi i64 [ %46, %.lr.ph ], [ %.0489699.ph, %.lr.ph.preheader1565 ]
  %.0492698 = phi i64 [ %47, %.lr.ph ], [ %.0492698.ph, %.lr.ph.preheader1565 ]
  %.0488 = getelementptr inbounds i8, ptr %.pn688700, i64 1
  %40 = load i8, ptr %.0488, align 1, !tbaa !24
  %41 = zext i8 %40 to i32
  %42 = sub nuw nsw i32 256, %41
  %43 = icmp slt i8 %40, 0
  %44 = select i1 %43, i32 %42, i32 %41
  %45 = zext nneg i32 %44 to i64
  %46 = add i64 %.0489699, %45
  %47 = add nuw i64 %.0492698, 1
  %exitcond.not = icmp eq i64 %47, %6
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !29

._crit_edge:                                      ; preds = %.lr.ph, %middle.block, %.preheader697
  %.0489.lcssa = phi i64 [ 0, %.preheader697 ], [ %39, %middle.block ], [ %46, %.lr.ph ]
  %48 = getelementptr inbounds i8, ptr %0, i64 984
  %49 = load i8, ptr %48, align 8, !tbaa !30
  %50 = icmp eq i8 %49, 2
  br i1 %50, label %51, label %110

51:                                               ; preds = %._crit_edge
  %52 = and i64 %.0489.lcssa, 65535
  %53 = lshr i64 %.0489.lcssa, 10
  %54 = and i64 %53, 18014398509481920
  %.not941 = icmp eq i8 %8, 0
  br i1 %.not941, label %._crit_edge706, label %.lr.ph705

.lr.ph705:                                        ; preds = %51
  %55 = getelementptr inbounds i8, ptr %0, i64 992
  %56 = load ptr, ptr %55, align 8, !tbaa !31
  %57 = getelementptr inbounds i8, ptr %0, i64 1000
  %wide.trip.count = zext i8 %8 to i64
  %xtraiter = and i64 %wide.trip.count, 1
  %58 = icmp eq i8 %8, 1
  br i1 %58, label %._crit_edge706.loopexit.unr-lcssa, label %.lr.ph705.new

.lr.ph705.new:                                    ; preds = %.lr.ph705
  %unroll_iter = and i64 %wide.trip.count, 254
  br label %59

59:                                               ; preds = %85, %.lr.ph705.new
  %indvars.iv = phi i64 [ 0, %.lr.ph705.new ], [ %indvars.iv.next.1, %85 ]
  %.0515703 = phi i64 [ %54, %.lr.ph705.new ], [ %.1516.1, %85 ]
  %.0517702 = phi i64 [ %52, %.lr.ph705.new ], [ %.1518.1, %85 ]
  %niter = phi i64 [ 0, %.lr.ph705.new ], [ %niter.next.1, %85 ]
  %60 = getelementptr inbounds i8, ptr %56, i64 %indvars.iv
  %61 = load i8, ptr %60, align 1, !tbaa !24
  %62 = icmp eq i8 %61, 0
  br i1 %62, label %63, label %72

63:                                               ; preds = %59
  %64 = load ptr, ptr %57, align 8, !tbaa !32
  %65 = getelementptr inbounds i16, ptr %64, i64 %indvars.iv
  %66 = load i16, ptr %65, align 2, !tbaa !33
  %67 = zext i16 %66 to i64
  %68 = mul i64 %.0517702, %67
  %69 = lshr i64 %68, 8
  %70 = mul i64 %.0515703, %67
  %71 = lshr i64 %70, 8
  br label %72

72:                                               ; preds = %59, %63
  %.1518 = phi i64 [ %69, %63 ], [ %.0517702, %59 ]
  %.1516 = phi i64 [ %71, %63 ], [ %.0515703, %59 ]
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %73 = getelementptr inbounds i8, ptr %56, i64 %indvars.iv.next
  %74 = load i8, ptr %73, align 1, !tbaa !24
  %75 = icmp eq i8 %74, 0
  br i1 %75, label %76, label %85

76:                                               ; preds = %72
  %77 = load ptr, ptr %57, align 8, !tbaa !32
  %78 = getelementptr inbounds i16, ptr %77, i64 %indvars.iv.next
  %79 = load i16, ptr %78, align 2, !tbaa !33
  %80 = zext i16 %79 to i64
  %81 = mul i64 %.1518, %80
  %82 = lshr i64 %81, 8
  %83 = mul i64 %.1516, %80
  %84 = lshr i64 %83, 8
  br label %85

85:                                               ; preds = %76, %72
  %.1518.1 = phi i64 [ %82, %76 ], [ %.1518, %72 ]
  %.1516.1 = phi i64 [ %84, %76 ], [ %.1516, %72 ]
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge706.loopexit.unr-lcssa, label %59, !llvm.loop !34

._crit_edge706.loopexit.unr-lcssa:                ; preds = %85, %.lr.ph705
  %.1518.lcssa.ph = phi i64 [ poison, %.lr.ph705 ], [ %.1518.1, %85 ]
  %.1516.lcssa.ph = phi i64 [ poison, %.lr.ph705 ], [ %.1516.1, %85 ]
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph705 ], [ %indvars.iv.next.1, %85 ]
  %.0515703.unr = phi i64 [ %54, %.lr.ph705 ], [ %.1516.1, %85 ]
  %.0517702.unr = phi i64 [ %52, %.lr.ph705 ], [ %.1518.1, %85 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge706, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge706.loopexit.unr-lcssa
  %86 = getelementptr inbounds i8, ptr %56, i64 %indvars.iv.unr
  %87 = load i8, ptr %86, align 1, !tbaa !24
  %88 = icmp eq i8 %87, 0
  br i1 %88, label %89, label %._crit_edge706

89:                                               ; preds = %.epil.preheader
  %90 = load ptr, ptr %57, align 8, !tbaa !32
  %91 = getelementptr inbounds i16, ptr %90, i64 %indvars.iv.unr
  %92 = load i16, ptr %91, align 2, !tbaa !33
  %93 = zext i16 %92 to i64
  %94 = mul i64 %.0517702.unr, %93
  %95 = lshr i64 %94, 8
  %96 = mul i64 %.0515703.unr, %93
  %97 = lshr i64 %96, 8
  br label %._crit_edge706

._crit_edge706:                                   ; preds = %._crit_edge706.loopexit.unr-lcssa, %89, %.epil.preheader, %51
  %.0517.lcssa = phi i64 [ %52, %51 ], [ %.1518.lcssa.ph, %._crit_edge706.loopexit.unr-lcssa ], [ %95, %89 ], [ %.0517702.unr, %.epil.preheader ]
  %.0515.lcssa = phi i64 [ %54, %51 ], [ %.1516.lcssa.ph, %._crit_edge706.loopexit.unr-lcssa ], [ %97, %89 ], [ %.0515703.unr, %.epil.preheader ]
  %98 = getelementptr inbounds i8, ptr %0, i64 1016
  %99 = load ptr, ptr %98, align 8, !tbaa !35
  %100 = load i16, ptr %99, align 2, !tbaa !33
  %101 = zext i16 %100 to i64
  %102 = mul i64 %.0515.lcssa, %101
  %103 = icmp ugt i64 %102, 144115188075855367
  br i1 %103, label %110, label %104

104:                                              ; preds = %._crit_edge706
  %105 = mul i64 %.0517.lcssa, %101
  %106 = lshr i64 %105, 3
  %107 = shl nuw i64 %102, 7
  %108 = and i64 %107, -1024
  %109 = add i64 %108, %106
  br label %110

110:                                              ; preds = %._crit_edge, %._crit_edge706, %104, %2
  %.0481 = phi i64 [ 9223372036854775807, %2 ], [ %.0489.lcssa, %._crit_edge ], [ %109, %104 ], [ 9223372036854775807, %._crit_edge706 ]
  %111 = icmp eq i8 %4, 16
  br i1 %111, label %112, label %183

112:                                              ; preds = %110
  %113 = getelementptr i8, ptr %18, i64 1
  %114 = getelementptr inbounds i8, ptr %0, i64 536
  %115 = load ptr, ptr %114, align 8, !tbaa !36
  %.0578746 = getelementptr i8, ptr %115, i64 1
  %.not945 = icmp eq i8 %10, 0
  br i1 %.not945, label %.preheader695, label %.lr.ph751.preheader

.lr.ph751.preheader:                              ; preds = %112
  %116 = ptrtoint ptr %115 to i64
  %min.iters.check1147 = icmp ult i8 %10, 121
  %117 = sub i64 %116, %19
  %diff.check1144 = icmp ult i64 %117, 16
  %or.cond1529 = select i1 %min.iters.check1147, i1 true, i1 %diff.check1144
  br i1 %or.cond1529, label %.lr.ph751.preheader1555, label %vector.ph1148

.lr.ph751.preheader1555:                          ; preds = %middle.block1145, %.lr.ph751.preheader
  %.0578749.ph = phi ptr [ %.0578746, %.lr.ph751.preheader ], [ %ind.end1151, %middle.block1145 ]
  %.0520748.ph = phi ptr [ %113, %.lr.ph751.preheader ], [ %ind.end1153, %middle.block1145 ]
  %.0618747.ph = phi i64 [ 0, %.lr.ph751.preheader ], [ %n.vec1150, %middle.block1145 ]
  %xtraiter1587 = and i64 %13, 7
  %lcmp.mod1588.not = icmp eq i64 %xtraiter1587, 0
  br i1 %lcmp.mod1588.not, label %.lr.ph751.prol.loopexit, label %.lr.ph751.prol

.lr.ph751.prol:                                   ; preds = %.lr.ph751.preheader1555, %.lr.ph751.prol
  %.0578749.prol = phi ptr [ %.0578.prol, %.lr.ph751.prol ], [ %.0578749.ph, %.lr.ph751.preheader1555 ]
  %.0520748.prol = phi ptr [ %120, %.lr.ph751.prol ], [ %.0520748.ph, %.lr.ph751.preheader1555 ]
  %.0618747.prol = phi i64 [ %119, %.lr.ph751.prol ], [ %.0618747.ph, %.lr.ph751.preheader1555 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph751.prol ], [ 0, %.lr.ph751.preheader1555 ]
  %118 = load i8, ptr %.0520748.prol, align 1, !tbaa !24
  store i8 %118, ptr %.0578749.prol, align 1, !tbaa !24
  %119 = add nuw nsw i64 %.0618747.prol, 1
  %120 = getelementptr inbounds i8, ptr %.0520748.prol, i64 1
  %.0578.prol = getelementptr inbounds i8, ptr %.0578749.prol, i64 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1587
  br i1 %prol.iter.cmp.not, label %.lr.ph751.prol.loopexit, label %.lr.ph751.prol, !llvm.loop !37

.lr.ph751.prol.loopexit:                          ; preds = %.lr.ph751.prol, %.lr.ph751.preheader1555
  %.lcssa1557.unr = phi ptr [ poison, %.lr.ph751.preheader1555 ], [ %120, %.lr.ph751.prol ]
  %.0578.lcssa1556.unr = phi ptr [ poison, %.lr.ph751.preheader1555 ], [ %.0578.prol, %.lr.ph751.prol ]
  %.0578749.unr = phi ptr [ %.0578749.ph, %.lr.ph751.preheader1555 ], [ %.0578.prol, %.lr.ph751.prol ]
  %.0520748.unr = phi ptr [ %.0520748.ph, %.lr.ph751.preheader1555 ], [ %120, %.lr.ph751.prol ]
  %.0618747.unr = phi i64 [ %.0618747.ph, %.lr.ph751.preheader1555 ], [ %119, %.lr.ph751.prol ]
  %121 = sub nsw i64 %.0618747.ph, %13
  %122 = icmp ugt i64 %121, -8
  br i1 %122, label %.preheader695, label %.lr.ph751

vector.ph1148:                                    ; preds = %.lr.ph751.preheader
  %n.vec1150 = and i64 %13, 48
  %ind.end1151 = getelementptr i8, ptr %.0578746, i64 %n.vec1150
  %ind.end1153 = getelementptr i8, ptr %113, i64 %n.vec1150
  %wide.load1160 = load <16 x i8>, ptr %113, align 1, !tbaa !24
  store <16 x i8> %wide.load1160, ptr %.0578746, align 1, !tbaa !24
  %123 = icmp eq i64 %n.vec1150, 16
  br i1 %123, label %middle.block1145, label %vector.body1156.1, !llvm.loop !39

vector.body1156.1:                                ; preds = %vector.ph1148
  %next.gep1158.1 = getelementptr i8, ptr %115, i64 17
  %next.gep1159.1 = getelementptr i8, ptr %18, i64 17
  %wide.load1160.1 = load <16 x i8>, ptr %next.gep1159.1, align 1, !tbaa !24
  store <16 x i8> %wide.load1160.1, ptr %next.gep1158.1, align 1, !tbaa !24
  br label %middle.block1145

middle.block1145:                                 ; preds = %vector.body1156.1, %vector.ph1148
  %cmp.n1162 = icmp eq i64 %13, %n.vec1150
  br i1 %cmp.n1162, label %.preheader695, label %.lr.ph751.preheader1555

.preheader695:                                    ; preds = %.lr.ph751.prol.loopexit, %.lr.ph751, %middle.block1145, %112
  %.0618.lcssa = phi i64 [ 0, %112 ], [ %13, %middle.block1145 ], [ %13, %.lr.ph751 ], [ %13, %.lr.ph751.prol.loopexit ]
  %.0520.lcssa = phi ptr [ %113, %112 ], [ %ind.end1153, %middle.block1145 ], [ %.lcssa1557.unr, %.lr.ph751.prol.loopexit ], [ %161, %.lr.ph751 ]
  %.0578.lcssa = phi ptr [ %.0578746, %112 ], [ %ind.end1151, %middle.block1145 ], [ %.0578.lcssa1556.unr, %.lr.ph751.prol.loopexit ], [ %.0578.7, %.lr.ph751 ]
  %.0578.lcssa1164 = ptrtoint ptr %.0578.lcssa to i64
  %.0520.lcssa1166 = ptrtoint ptr %.0520.lcssa to i64
  %124 = icmp ult i64 %.0618.lcssa, %6
  br i1 %124, label %iter.check, label %.sink.split

iter.check:                                       ; preds = %.preheader695
  %125 = sub i64 %6, %.0618.lcssa
  %min.iters.check1170 = icmp ult i64 %125, 8
  br i1 %min.iters.check1170, label %.lr.ph759.preheader, label %vector.memcheck1163

vector.memcheck1163:                              ; preds = %iter.check
  %126 = sub i64 %19, %.0578.lcssa1164
  %diff.check1165 = icmp ugt i64 %126, -33
  %127 = sub i64 %.0578.lcssa1164, %.0520.lcssa1166
  %diff.check1167 = icmp ult i64 %127, 32
  %conflict.rdx = or i1 %diff.check1165, %diff.check1167
  br i1 %conflict.rdx, label %.lr.ph759.preheader, label %vector.main.loop.iter.check

vector.main.loop.iter.check:                      ; preds = %vector.memcheck1163
  %min.iters.check1172 = icmp ult i64 %125, 32
  br i1 %min.iters.check1172, label %vec.epilog.ph, label %vector.ph1173

vector.ph1173:                                    ; preds = %vector.main.loop.iter.check
  %n.vec1175 = and i64 %125, -32
  br label %vector.body1176

vector.body1176:                                  ; preds = %vector.body1176, %vector.ph1173
  %index1177 = phi i64 [ 0, %vector.ph1173 ], [ %index.next1188, %vector.body1176 ]
  %next.gep1178 = getelementptr i8, ptr %.0520.lcssa, i64 %index1177
  %next.gep1180 = getelementptr i8, ptr %113, i64 %index1177
  %next.gep1182 = getelementptr i8, ptr %.0578.lcssa, i64 %index1177
  %128 = getelementptr i8, ptr %next.gep1178, i64 16
  %wide.load1184 = load <16 x i8>, ptr %next.gep1178, align 1, !tbaa !24
  %wide.load1185 = load <16 x i8>, ptr %128, align 1, !tbaa !24
  %129 = getelementptr i8, ptr %next.gep1180, i64 16
  %wide.load1186 = load <16 x i8>, ptr %next.gep1180, align 1, !tbaa !24
  %wide.load1187 = load <16 x i8>, ptr %129, align 1, !tbaa !24
  %130 = sub <16 x i8> %wide.load1184, %wide.load1186
  %131 = sub <16 x i8> %wide.load1185, %wide.load1187
  %132 = getelementptr i8, ptr %next.gep1182, i64 16
  store <16 x i8> %130, ptr %next.gep1182, align 1, !tbaa !24
  store <16 x i8> %131, ptr %132, align 1, !tbaa !24
  %index.next1188 = add nuw i64 %index1177, 32
  %133 = icmp eq i64 %index.next1188, %n.vec1175
  br i1 %133, label %middle.block1168, label %vector.body1176, !llvm.loop !40

middle.block1168:                                 ; preds = %vector.body1176
  %cmp.n1189 = icmp eq i64 %125, %n.vec1175
  br i1 %cmp.n1189, label %.sink.split, label %vec.epilog.iter.check

vec.epilog.iter.check:                            ; preds = %middle.block1168
  %ind.end1202 = add i64 %.0618.lcssa, %n.vec1175
  %ind.end1199 = getelementptr i8, ptr %.0578.lcssa, i64 %n.vec1175
  %ind.end1196 = getelementptr i8, ptr %113, i64 %n.vec1175
  %ind.end1193 = getelementptr i8, ptr %.0520.lcssa, i64 %n.vec1175
  %n.vec.remaining = and i64 %125, 24
  %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
  br i1 %min.epilog.iters.check, label %.lr.ph759.preheader, label %vec.epilog.ph

.lr.ph759.preheader:                              ; preds = %vec.epilog.middle.block, %vector.memcheck1163, %iter.check, %vec.epilog.iter.check
  %.1521758.ph = phi ptr [ %.0520.lcssa, %iter.check ], [ %.0520.lcssa, %vector.memcheck1163 ], [ %ind.end1193, %vec.epilog.iter.check ], [ %ind.end1192, %vec.epilog.middle.block ]
  %.0522757.ph = phi ptr [ %113, %iter.check ], [ %113, %vector.memcheck1163 ], [ %ind.end1196, %vec.epilog.iter.check ], [ %ind.end1195, %vec.epilog.middle.block ]
  %.1579756.ph = phi ptr [ %.0578.lcssa, %iter.check ], [ %.0578.lcssa, %vector.memcheck1163 ], [ %ind.end1199, %vec.epilog.iter.check ], [ %ind.end1198, %vec.epilog.middle.block ]
  %.1619755.ph = phi i64 [ %.0618.lcssa, %iter.check ], [ %.0618.lcssa, %vector.memcheck1163 ], [ %ind.end1202, %vec.epilog.iter.check ], [ %ind.end1201, %vec.epilog.middle.block ]
  %134 = sub i64 %6, %.1619755.ph
  %xtraiter1589 = and i64 %134, 3
  %lcmp.mod1590.not = icmp eq i64 %xtraiter1589, 0
  br i1 %lcmp.mod1590.not, label %.lr.ph759.prol.loopexit, label %.lr.ph759.prol

.lr.ph759.prol:                                   ; preds = %.lr.ph759.preheader, %.lr.ph759.prol
  %.1521758.prol = phi ptr [ %138, %.lr.ph759.prol ], [ %.1521758.ph, %.lr.ph759.preheader ]
  %.0522757.prol = phi ptr [ %139, %.lr.ph759.prol ], [ %.0522757.ph, %.lr.ph759.preheader ]
  %.1579756.prol = phi ptr [ %140, %.lr.ph759.prol ], [ %.1579756.ph, %.lr.ph759.preheader ]
  %.1619755.prol = phi i64 [ %137, %.lr.ph759.prol ], [ %.1619755.ph, %.lr.ph759.preheader ]
  %prol.iter1591 = phi i64 [ %prol.iter1591.next, %.lr.ph759.prol ], [ 0, %.lr.ph759.preheader ]
  %135 = load i8, ptr %.1521758.prol, align 1, !tbaa !24
  %136 = load i8, ptr %.0522757.prol, align 1, !tbaa !24
  %.narrow686.prol = sub i8 %135, %136
  store i8 %.narrow686.prol, ptr %.1579756.prol, align 1, !tbaa !24
  %137 = add nuw i64 %.1619755.prol, 1
  %138 = getelementptr inbounds i8, ptr %.1521758.prol, i64 1
  %139 = getelementptr inbounds i8, ptr %.0522757.prol, i64 1
  %140 = getelementptr inbounds i8, ptr %.1579756.prol, i64 1
  %prol.iter1591.next = add i64 %prol.iter1591, 1
  %prol.iter1591.cmp.not = icmp eq i64 %prol.iter1591.next, %xtraiter1589
  br i1 %prol.iter1591.cmp.not, label %.lr.ph759.prol.loopexit, label %.lr.ph759.prol, !llvm.loop !41

.lr.ph759.prol.loopexit:                          ; preds = %.lr.ph759.prol, %.lr.ph759.preheader
  %.1521758.unr = phi ptr [ %.1521758.ph, %.lr.ph759.preheader ], [ %138, %.lr.ph759.prol ]
  %.0522757.unr = phi ptr [ %.0522757.ph, %.lr.ph759.preheader ], [ %139, %.lr.ph759.prol ]
  %.1579756.unr = phi ptr [ %.1579756.ph, %.lr.ph759.preheader ], [ %140, %.lr.ph759.prol ]
  %.1619755.unr = phi i64 [ %.1619755.ph, %.lr.ph759.preheader ], [ %137, %.lr.ph759.prol ]
  %141 = sub i64 %.1619755.ph, %6
  %142 = icmp ugt i64 %141, -4
  br i1 %142, label %.sink.split, label %.lr.ph759

vec.epilog.ph:                                    ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
  %vec.epilog.resume.val = phi i64 [ %n.vec1175, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
  %n.vec1191 = and i64 %125, -8
  %ind.end1192 = getelementptr i8, ptr %.0520.lcssa, i64 %n.vec1191
  %ind.end1195 = getelementptr i8, ptr %113, i64 %n.vec1191
  %ind.end1198 = getelementptr i8, ptr %.0578.lcssa, i64 %n.vec1191
  %ind.end1201 = add i64 %.0618.lcssa, %n.vec1191
  br label %vec.epilog.vector.body

vec.epilog.vector.body:                           ; preds = %vec.epilog.vector.body, %vec.epilog.ph
  %index1204 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next1210, %vec.epilog.vector.body ]
  %next.gep1205 = getelementptr i8, ptr %.0520.lcssa, i64 %index1204
  %next.gep1206 = getelementptr i8, ptr %113, i64 %index1204
  %next.gep1207 = getelementptr i8, ptr %.0578.lcssa, i64 %index1204
  %wide.load1208 = load <8 x i8>, ptr %next.gep1205, align 1, !tbaa !24
  %wide.load1209 = load <8 x i8>, ptr %next.gep1206, align 1, !tbaa !24
  %143 = sub <8 x i8> %wide.load1208, %wide.load1209
  store <8 x i8> %143, ptr %next.gep1207, align 1, !tbaa !24
  %index.next1210 = add nuw i64 %index1204, 8
  %144 = icmp eq i64 %index.next1210, %n.vec1191
  br i1 %144, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !42

vec.epilog.middle.block:                          ; preds = %vec.epilog.vector.body
  %cmp.n1211 = icmp eq i64 %125, %n.vec1191
  br i1 %cmp.n1211, label %.sink.split, label %.lr.ph759.preheader

.lr.ph751:                                        ; preds = %.lr.ph751.prol.loopexit, %.lr.ph751
  %.0578749 = phi ptr [ %.0578.7, %.lr.ph751 ], [ %.0578749.unr, %.lr.ph751.prol.loopexit ]
  %.0520748 = phi ptr [ %161, %.lr.ph751 ], [ %.0520748.unr, %.lr.ph751.prol.loopexit ]
  %.0618747 = phi i64 [ %160, %.lr.ph751 ], [ %.0618747.unr, %.lr.ph751.prol.loopexit ]
  %145 = load i8, ptr %.0520748, align 1, !tbaa !24
  store i8 %145, ptr %.0578749, align 1, !tbaa !24
  %146 = getelementptr inbounds i8, ptr %.0520748, i64 1
  %.0578 = getelementptr inbounds i8, ptr %.0578749, i64 1
  %147 = load i8, ptr %146, align 1, !tbaa !24
  store i8 %147, ptr %.0578, align 1, !tbaa !24
  %148 = getelementptr inbounds i8, ptr %.0520748, i64 2
  %.0578.1 = getelementptr inbounds i8, ptr %.0578749, i64 2
  %149 = load i8, ptr %148, align 1, !tbaa !24
  store i8 %149, ptr %.0578.1, align 1, !tbaa !24
  %150 = getelementptr inbounds i8, ptr %.0520748, i64 3
  %.0578.2 = getelementptr inbounds i8, ptr %.0578749, i64 3
  %151 = load i8, ptr %150, align 1, !tbaa !24
  store i8 %151, ptr %.0578.2, align 1, !tbaa !24
  %152 = getelementptr inbounds i8, ptr %.0520748, i64 4
  %.0578.3 = getelementptr inbounds i8, ptr %.0578749, i64 4
  %153 = load i8, ptr %152, align 1, !tbaa !24
  store i8 %153, ptr %.0578.3, align 1, !tbaa !24
  %154 = getelementptr inbounds i8, ptr %.0520748, i64 5
  %.0578.4 = getelementptr inbounds i8, ptr %.0578749, i64 5
  %155 = load i8, ptr %154, align 1, !tbaa !24
  store i8 %155, ptr %.0578.4, align 1, !tbaa !24
  %156 = getelementptr inbounds i8, ptr %.0520748, i64 6
  %.0578.5 = getelementptr inbounds i8, ptr %.0578749, i64 6
  %157 = load i8, ptr %156, align 1, !tbaa !24
  store i8 %157, ptr %.0578.5, align 1, !tbaa !24
  %158 = getelementptr inbounds i8, ptr %.0520748, i64 7
  %.0578.6 = getelementptr inbounds i8, ptr %.0578749, i64 7
  %159 = load i8, ptr %158, align 1, !tbaa !24
  store i8 %159, ptr %.0578.6, align 1, !tbaa !24
  %160 = add nuw nsw i64 %.0618747, 8
  %161 = getelementptr inbounds i8, ptr %.0520748, i64 8
  %.0578.7 = getelementptr inbounds i8, ptr %.0578749, i64 8
  %exitcond1001.not.7 = icmp eq i64 %160, %13
  br i1 %exitcond1001.not.7, label %.preheader695, label %.lr.ph751, !llvm.loop !43

.lr.ph759:                                        ; preds = %.lr.ph759.prol.loopexit, %.lr.ph759
  %.1521758 = phi ptr [ %180, %.lr.ph759 ], [ %.1521758.unr, %.lr.ph759.prol.loopexit ]
  %.0522757 = phi ptr [ %181, %.lr.ph759 ], [ %.0522757.unr, %.lr.ph759.prol.loopexit ]
  %.1579756 = phi ptr [ %182, %.lr.ph759 ], [ %.1579756.unr, %.lr.ph759.prol.loopexit ]
  %.1619755 = phi i64 [ %179, %.lr.ph759 ], [ %.1619755.unr, %.lr.ph759.prol.loopexit ]
  %162 = load i8, ptr %.1521758, align 1, !tbaa !24
  %163 = load i8, ptr %.0522757, align 1, !tbaa !24
  %.narrow686 = sub i8 %162, %163
  store i8 %.narrow686, ptr %.1579756, align 1, !tbaa !24
  %164 = getelementptr inbounds i8, ptr %.1521758, i64 1
  %165 = getelementptr inbounds i8, ptr %.0522757, i64 1
  %166 = getelementptr inbounds i8, ptr %.1579756, i64 1
  %167 = load i8, ptr %164, align 1, !tbaa !24
  %168 = load i8, ptr %165, align 1, !tbaa !24
  %.narrow686.1 = sub i8 %167, %168
  store i8 %.narrow686.1, ptr %166, align 1, !tbaa !24
  %169 = getelementptr inbounds i8, ptr %.1521758, i64 2
  %170 = getelementptr inbounds i8, ptr %.0522757, i64 2
  %171 = getelementptr inbounds i8, ptr %.1579756, i64 2
  %172 = load i8, ptr %169, align 1, !tbaa !24
  %173 = load i8, ptr %170, align 1, !tbaa !24
  %.narrow686.2 = sub i8 %172, %173
  store i8 %.narrow686.2, ptr %171, align 1, !tbaa !24
  %174 = getelementptr inbounds i8, ptr %.1521758, i64 3
  %175 = getelementptr inbounds i8, ptr %.0522757, i64 3
  %176 = getelementptr inbounds i8, ptr %.1579756, i64 3
  %177 = load i8, ptr %174, align 1, !tbaa !24
  %178 = load i8, ptr %175, align 1, !tbaa !24
  %.narrow686.3 = sub i8 %177, %178
  store i8 %.narrow686.3, ptr %176, align 1, !tbaa !24
  %179 = add nuw i64 %.1619755, 4
  %180 = getelementptr inbounds i8, ptr %.1521758, i64 4
  %181 = getelementptr inbounds i8, ptr %.0522757, i64 4
  %182 = getelementptr inbounds i8, ptr %.1579756, i64 4
  %exitcond1002.not.3 = icmp eq i64 %179, %6
  br i1 %exitcond1002.not.3, label %.sink.split, label %.lr.ph759, !llvm.loop !44

183:                                              ; preds = %110
  %184 = and i32 %20, 16
  %.not = icmp eq i32 %184, 0
  br i1 %.not, label %471, label %185

185:                                              ; preds = %183
  %186 = getelementptr inbounds i8, ptr %0, i64 984
  %187 = load i8, ptr %186, align 8, !tbaa !30
  %188 = icmp eq i8 %187, 2
  br i1 %188, label %189, label %249

189:                                              ; preds = %185
  %190 = and i64 %.0481, 65535
  %191 = lshr i64 %.0481, 10
  %192 = and i64 %191, 18014398509481920
  %.not942 = icmp eq i8 %8, 0
  br i1 %.not942, label %._crit_edge714, label %.lr.ph713

.lr.ph713:                                        ; preds = %189
  %193 = getelementptr inbounds i8, ptr %0, i64 992
  %194 = load ptr, ptr %193, align 8, !tbaa !31
  %195 = getelementptr inbounds i8, ptr %0, i64 1008
  %wide.trip.count993 = zext i8 %8 to i64
  %xtraiter1572 = and i64 %wide.trip.count993, 1
  %196 = icmp eq i8 %8, 1
  br i1 %196, label %._crit_edge714.loopexit.unr-lcssa, label %.lr.ph713.new

.lr.ph713.new:                                    ; preds = %.lr.ph713
  %unroll_iter1576 = and i64 %wide.trip.count993, 254
  br label %197

197:                                              ; preds = %223, %.lr.ph713.new
  %indvars.iv990 = phi i64 [ 0, %.lr.ph713.new ], [ %indvars.iv.next991.1, %223 ]
  %.0599711 = phi i64 [ %190, %.lr.ph713.new ], [ %.1600.1, %223 ]
  %.0601710 = phi i64 [ %192, %.lr.ph713.new ], [ %.1602.1, %223 ]
  %niter1577 = phi i64 [ 0, %.lr.ph713.new ], [ %niter1577.next.1, %223 ]
  %198 = getelementptr inbounds i8, ptr %194, i64 %indvars.iv990
  %199 = load i8, ptr %198, align 1, !tbaa !24
  %200 = icmp eq i8 %199, 1
  br i1 %200, label %201, label %210

201:                                              ; preds = %197
  %202 = load ptr, ptr %195, align 8, !tbaa !45
  %203 = getelementptr inbounds i16, ptr %202, i64 %indvars.iv990
  %204 = load i16, ptr %203, align 2, !tbaa !33
  %205 = zext i16 %204 to i64
  %206 = mul i64 %.0599711, %205
  %207 = lshr i64 %206, 8
  %208 = mul i64 %.0601710, %205
  %209 = lshr i64 %208, 8
  br label %210

210:                                              ; preds = %197, %201
  %.1602 = phi i64 [ %209, %201 ], [ %.0601710, %197 ]
  %.1600 = phi i64 [ %207, %201 ], [ %.0599711, %197 ]
  %indvars.iv.next991 = or disjoint i64 %indvars.iv990, 1
  %211 = getelementptr inbounds i8, ptr %194, i64 %indvars.iv.next991
  %212 = load i8, ptr %211, align 1, !tbaa !24
  %213 = icmp eq i8 %212, 1
  br i1 %213, label %214, label %223

214:                                              ; preds = %210
  %215 = load ptr, ptr %195, align 8, !tbaa !45
  %216 = getelementptr inbounds i16, ptr %215, i64 %indvars.iv.next991
  %217 = load i16, ptr %216, align 2, !tbaa !33
  %218 = zext i16 %217 to i64
  %219 = mul i64 %.1600, %218
  %220 = lshr i64 %219, 8
  %221 = mul i64 %.1602, %218
  %222 = lshr i64 %221, 8
  br label %223

223:                                              ; preds = %214, %210
  %.1602.1 = phi i64 [ %222, %214 ], [ %.1602, %210 ]
  %.1600.1 = phi i64 [ %220, %214 ], [ %.1600, %210 ]
  %indvars.iv.next991.1 = add nuw nsw i64 %indvars.iv990, 2
  %niter1577.next.1 = add i64 %niter1577, 2
  %niter1577.ncmp.1 = icmp eq i64 %niter1577.next.1, %unroll_iter1576
  br i1 %niter1577.ncmp.1, label %._crit_edge714.loopexit.unr-lcssa, label %197, !llvm.loop !46

._crit_edge714.loopexit.unr-lcssa:                ; preds = %223, %.lr.ph713
  %.1602.lcssa.ph = phi i64 [ poison, %.lr.ph713 ], [ %.1602.1, %223 ]
  %.1600.lcssa.ph = phi i64 [ poison, %.lr.ph713 ], [ %.1600.1, %223 ]
  %indvars.iv990.unr = phi i64 [ 0, %.lr.ph713 ], [ %indvars.iv.next991.1, %223 ]
  %.0599711.unr = phi i64 [ %190, %.lr.ph713 ], [ %.1600.1, %223 ]
  %.0601710.unr = phi i64 [ %192, %.lr.ph713 ], [ %.1602.1, %223 ]
  %lcmp.mod1573.not = icmp eq i64 %xtraiter1572, 0
  br i1 %lcmp.mod1573.not, label %._crit_edge714, label %.epil.preheader1571

.epil.preheader1571:                              ; preds = %._crit_edge714.loopexit.unr-lcssa
  %224 = getelementptr inbounds i8, ptr %194, i64 %indvars.iv990.unr
  %225 = load i8, ptr %224, align 1, !tbaa !24
  %226 = icmp eq i8 %225, 1
  br i1 %226, label %227, label %._crit_edge714

227:                                              ; preds = %.epil.preheader1571
  %228 = load ptr, ptr %195, align 8, !tbaa !45
  %229 = getelementptr inbounds i16, ptr %228, i64 %indvars.iv990.unr
  %230 = load i16, ptr %229, align 2, !tbaa !33
  %231 = zext i16 %230 to i64
  %232 = mul i64 %.0599711.unr, %231
  %233 = lshr i64 %232, 8
  %234 = mul i64 %.0601710.unr, %231
  %235 = lshr i64 %234, 8
  br label %._crit_edge714

._crit_edge714:                                   ; preds = %._crit_edge714.loopexit.unr-lcssa, %227, %.epil.preheader1571, %189
  %.0601.lcssa = phi i64 [ %192, %189 ], [ %.1602.lcssa.ph, %._crit_edge714.loopexit.unr-lcssa ], [ %235, %227 ], [ %.0601710.unr, %.epil.preheader1571 ]
  %.0599.lcssa = phi i64 [ %190, %189 ], [ %.1600.lcssa.ph, %._crit_edge714.loopexit.unr-lcssa ], [ %233, %227 ], [ %.0599711.unr, %.epil.preheader1571 ]
  %236 = getelementptr inbounds i8, ptr %0, i64 1024
  %237 = load ptr, ptr %236, align 8, !tbaa !47
  %238 = getelementptr inbounds i8, ptr %237, i64 2
  %239 = load i16, ptr %238, align 2, !tbaa !33
  %240 = zext i16 %239 to i64
  %241 = mul i64 %.0601.lcssa, %240
  %242 = icmp ugt i64 %241, 144115188075855367
  br i1 %242, label %249, label %243

243:                                              ; preds = %._crit_edge714
  %244 = mul i64 %.0599.lcssa, %240
  %245 = lshr i64 %244, 3
  %246 = shl nuw i64 %241, 7
  %247 = and i64 %246, -1024
  %248 = add i64 %247, %245
  br label %249

249:                                              ; preds = %243, %._crit_edge714, %185
  %.1607 = phi i64 [ %.0481, %185 ], [ %248, %243 ], [ 9223372036854775807, %._crit_edge714 ]
  %250 = getelementptr inbounds i8, ptr %18, i64 1
  %251 = getelementptr inbounds i8, ptr %0, i64 536
  %252 = load ptr, ptr %251, align 8, !tbaa !36
  %.0614717 = getelementptr i8, ptr %252, i64 1
  %.not943 = icmp eq i8 %10, 0
  br i1 %.not943, label %.preheader696, label %.lr.ph723.preheader

.lr.ph723.preheader:                              ; preds = %249
  %253 = ptrtoint ptr %252 to i64
  %min.iters.check1120 = icmp ult i8 %10, 25
  %254 = sub i64 %253, %19
  %diff.check = icmp ult i64 %254, 4
  %or.cond1530 = select i1 %min.iters.check1120, i1 true, i1 %diff.check
  br i1 %or.cond1530, label %.lr.ph723.preheader1559, label %vector.ph1121

.lr.ph723.preheader1559:                          ; preds = %middle.block1118, %.lr.ph723.preheader
  %.0614721.ph = phi ptr [ %.0614717, %.lr.ph723.preheader ], [ %ind.end1124, %middle.block1118 ]
  %.0604720.ph = phi i64 [ 0, %.lr.ph723.preheader ], [ %n.vec1123, %middle.block1118 ]
  %.0608719.ph = phi i64 [ 0, %.lr.ph723.preheader ], [ %373, %middle.block1118 ]
  %.0616718.ph = phi ptr [ %250, %.lr.ph723.preheader ], [ %ind.end1127, %middle.block1118 ]
  %.neg = or disjoint i64 %.0604720.ph, 1
  %255 = and i64 %12, 8
  %lcmp.mod1579.not = icmp eq i64 %255, 0
  br i1 %lcmp.mod1579.not, label %.lr.ph723.prol.loopexit, label %.lr.ph723.prol

.lr.ph723.prol:                                   ; preds = %.lr.ph723.preheader1559
  %256 = load i8, ptr %.0616718.ph, align 1, !tbaa !24
  store i8 %256, ptr %.0614721.ph, align 1, !tbaa !24
  %257 = zext i8 %256 to i32
  %258 = sub nuw nsw i32 256, %257
  %259 = icmp slt i8 %256, 0
  %260 = select i1 %259, i32 %258, i32 %257
  %261 = zext nneg i32 %260 to i64
  %262 = add i64 %.0608719.ph, %261
  %263 = or disjoint i64 %.0604720.ph, 1
  %264 = getelementptr inbounds i8, ptr %.0616718.ph, i64 1
  %.0614.prol = getelementptr inbounds i8, ptr %.0614721.ph, i64 1
  br label %.lr.ph723.prol.loopexit

.lr.ph723.prol.loopexit:                          ; preds = %.lr.ph723.prol, %.lr.ph723.preheader1559
  %.lcssa1562.unr = phi i64 [ poison, %.lr.ph723.preheader1559 ], [ %262, %.lr.ph723.prol ]
  %.lcssa1561.unr = phi ptr [ poison, %.lr.ph723.preheader1559 ], [ %264, %.lr.ph723.prol ]
  %.0614.lcssa1560.unr = phi ptr [ poison, %.lr.ph723.preheader1559 ], [ %.0614.prol, %.lr.ph723.prol ]
  %.0614721.unr = phi ptr [ %.0614721.ph, %.lr.ph723.preheader1559 ], [ %.0614.prol, %.lr.ph723.prol ]
  %.0604720.unr = phi i64 [ %.0604720.ph, %.lr.ph723.preheader1559 ], [ %263, %.lr.ph723.prol ]
  %.0608719.unr = phi i64 [ %.0608719.ph, %.lr.ph723.preheader1559 ], [ %262, %.lr.ph723.prol ]
  %.0616718.unr = phi ptr [ %.0616718.ph, %.lr.ph723.preheader1559 ], [ %264, %.lr.ph723.prol ]
  %265 = icmp eq i64 %13, %.neg
  br i1 %265, label %.preheader696, label %.lr.ph723

vector.ph1121:                                    ; preds = %.lr.ph723.preheader
  %n.vec1123 = and i64 %13, 60
  %ind.end1124 = getelementptr i8, ptr %.0614717, i64 %n.vec1123
  %ind.end1127 = getelementptr i8, ptr %250, i64 %n.vec1123
  %266 = getelementptr i8, ptr %18, i64 3
  %wide.load1137 = load <2 x i8>, ptr %250, align 1, !tbaa !24
  %wide.load1138 = load <2 x i8>, ptr %266, align 1, !tbaa !24
  %267 = getelementptr i8, ptr %252, i64 3
  store <2 x i8> %wide.load1137, ptr %.0614717, align 1, !tbaa !24
  store <2 x i8> %wide.load1138, ptr %267, align 1, !tbaa !24
  %268 = zext <2 x i8> %wide.load1137 to <2 x i32>
  %269 = zext <2 x i8> %wide.load1138 to <2 x i32>
  %270 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %268
  %271 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %269
  %272 = icmp slt <2 x i8> %wide.load1137, zeroinitializer
  %273 = icmp slt <2 x i8> %wide.load1138, zeroinitializer
  %274 = select <2 x i1> %272, <2 x i32> %270, <2 x i32> %268
  %275 = select <2 x i1> %273, <2 x i32> %271, <2 x i32> %269
  %276 = zext nneg <2 x i32> %274 to <2 x i64>
  %277 = zext nneg <2 x i32> %275 to <2 x i64>
  %278 = icmp eq i64 %n.vec1123, 4
  br i1 %278, label %middle.block1118, label %vector.body1129.1, !llvm.loop !48

vector.body1129.1:                                ; preds = %vector.ph1121
  %next.gep1133.1 = getelementptr i8, ptr %252, i64 5
  %next.gep1135.1 = getelementptr i8, ptr %18, i64 5
  %279 = getelementptr i8, ptr %18, i64 7
  %wide.load1137.1 = load <2 x i8>, ptr %next.gep1135.1, align 1, !tbaa !24
  %wide.load1138.1 = load <2 x i8>, ptr %279, align 1, !tbaa !24
  %280 = getelementptr i8, ptr %252, i64 7
  store <2 x i8> %wide.load1137.1, ptr %next.gep1133.1, align 1, !tbaa !24
  store <2 x i8> %wide.load1138.1, ptr %280, align 1, !tbaa !24
  %281 = zext <2 x i8> %wide.load1137.1 to <2 x i32>
  %282 = zext <2 x i8> %wide.load1138.1 to <2 x i32>
  %283 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %281
  %284 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %282
  %285 = icmp slt <2 x i8> %wide.load1137.1, zeroinitializer
  %286 = icmp slt <2 x i8> %wide.load1138.1, zeroinitializer
  %287 = select <2 x i1> %285, <2 x i32> %283, <2 x i32> %281
  %288 = select <2 x i1> %286, <2 x i32> %284, <2 x i32> %282
  %narrow = add nuw nsw <2 x i32> %274, %287
  %289 = zext nneg <2 x i32> %narrow to <2 x i64>
  %narrow1657 = add nuw nsw <2 x i32> %275, %288
  %290 = zext nneg <2 x i32> %narrow1657 to <2 x i64>
  %291 = icmp eq i64 %n.vec1123, 8
  br i1 %291, label %middle.block1118, label %vector.body1129.2, !llvm.loop !48

vector.body1129.2:                                ; preds = %vector.body1129.1
  %next.gep1133.2 = getelementptr i8, ptr %252, i64 9
  %next.gep1135.2 = getelementptr i8, ptr %18, i64 9
  %292 = getelementptr i8, ptr %18, i64 11
  %wide.load1137.2 = load <2 x i8>, ptr %next.gep1135.2, align 1, !tbaa !24
  %wide.load1138.2 = load <2 x i8>, ptr %292, align 1, !tbaa !24
  %293 = getelementptr i8, ptr %252, i64 11
  store <2 x i8> %wide.load1137.2, ptr %next.gep1133.2, align 1, !tbaa !24
  store <2 x i8> %wide.load1138.2, ptr %293, align 1, !tbaa !24
  %294 = zext <2 x i8> %wide.load1137.2 to <2 x i32>
  %295 = zext <2 x i8> %wide.load1138.2 to <2 x i32>
  %296 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %294
  %297 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %295
  %298 = icmp slt <2 x i8> %wide.load1137.2, zeroinitializer
  %299 = icmp slt <2 x i8> %wide.load1138.2, zeroinitializer
  %300 = select <2 x i1> %298, <2 x i32> %296, <2 x i32> %294
  %301 = select <2 x i1> %299, <2 x i32> %297, <2 x i32> %295
  %narrow1658 = add nuw nsw <2 x i32> %narrow, %300
  %302 = zext nneg <2 x i32> %narrow1658 to <2 x i64>
  %narrow1659 = add nuw nsw <2 x i32> %narrow1657, %301
  %303 = zext nneg <2 x i32> %narrow1659 to <2 x i64>
  %304 = icmp eq i64 %n.vec1123, 12
  br i1 %304, label %middle.block1118, label %vector.body1129.3, !llvm.loop !48

vector.body1129.3:                                ; preds = %vector.body1129.2
  %next.gep1133.3 = getelementptr i8, ptr %252, i64 13
  %next.gep1135.3 = getelementptr i8, ptr %18, i64 13
  %305 = getelementptr i8, ptr %18, i64 15
  %wide.load1137.3 = load <2 x i8>, ptr %next.gep1135.3, align 1, !tbaa !24
  %wide.load1138.3 = load <2 x i8>, ptr %305, align 1, !tbaa !24
  %306 = getelementptr i8, ptr %252, i64 15
  store <2 x i8> %wide.load1137.3, ptr %next.gep1133.3, align 1, !tbaa !24
  store <2 x i8> %wide.load1138.3, ptr %306, align 1, !tbaa !24
  %307 = zext <2 x i8> %wide.load1137.3 to <2 x i32>
  %308 = zext <2 x i8> %wide.load1138.3 to <2 x i32>
  %309 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %307
  %310 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %308
  %311 = icmp slt <2 x i8> %wide.load1137.3, zeroinitializer
  %312 = icmp slt <2 x i8> %wide.load1138.3, zeroinitializer
  %313 = select <2 x i1> %311, <2 x i32> %309, <2 x i32> %307
  %314 = select <2 x i1> %312, <2 x i32> %310, <2 x i32> %308
  %narrow1660 = add nuw nsw <2 x i32> %narrow1658, %313
  %315 = zext nneg <2 x i32> %narrow1660 to <2 x i64>
  %narrow1661 = add nuw nsw <2 x i32> %narrow1659, %314
  %316 = zext nneg <2 x i32> %narrow1661 to <2 x i64>
  %317 = icmp eq i64 %n.vec1123, 16
  br i1 %317, label %middle.block1118, label %vector.body1129.4, !llvm.loop !48

vector.body1129.4:                                ; preds = %vector.body1129.3
  %next.gep1133.4 = getelementptr i8, ptr %252, i64 17
  %next.gep1135.4 = getelementptr i8, ptr %18, i64 17
  %318 = getelementptr i8, ptr %18, i64 19
  %wide.load1137.4 = load <2 x i8>, ptr %next.gep1135.4, align 1, !tbaa !24
  %wide.load1138.4 = load <2 x i8>, ptr %318, align 1, !tbaa !24
  %319 = getelementptr i8, ptr %252, i64 19
  store <2 x i8> %wide.load1137.4, ptr %next.gep1133.4, align 1, !tbaa !24
  store <2 x i8> %wide.load1138.4, ptr %319, align 1, !tbaa !24
  %320 = zext <2 x i8> %wide.load1137.4 to <2 x i32>
  %321 = zext <2 x i8> %wide.load1138.4 to <2 x i32>
  %322 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %320
  %323 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %321
  %324 = icmp slt <2 x i8> %wide.load1137.4, zeroinitializer
  %325 = icmp slt <2 x i8> %wide.load1138.4, zeroinitializer
  %326 = select <2 x i1> %324, <2 x i32> %322, <2 x i32> %320
  %327 = select <2 x i1> %325, <2 x i32> %323, <2 x i32> %321
  %narrow1662 = add nuw nsw <2 x i32> %narrow1660, %326
  %328 = zext nneg <2 x i32> %narrow1662 to <2 x i64>
  %narrow1663 = add nuw nsw <2 x i32> %narrow1661, %327
  %329 = zext nneg <2 x i32> %narrow1663 to <2 x i64>
  %330 = icmp eq i64 %n.vec1123, 20
  br i1 %330, label %middle.block1118, label %vector.body1129.5, !llvm.loop !48

vector.body1129.5:                                ; preds = %vector.body1129.4
  %next.gep1133.5 = getelementptr i8, ptr %252, i64 21
  %next.gep1135.5 = getelementptr i8, ptr %18, i64 21
  %331 = getelementptr i8, ptr %18, i64 23
  %wide.load1137.5 = load <2 x i8>, ptr %next.gep1135.5, align 1, !tbaa !24
  %wide.load1138.5 = load <2 x i8>, ptr %331, align 1, !tbaa !24
  %332 = getelementptr i8, ptr %252, i64 23
  store <2 x i8> %wide.load1137.5, ptr %next.gep1133.5, align 1, !tbaa !24
  store <2 x i8> %wide.load1138.5, ptr %332, align 1, !tbaa !24
  %333 = zext <2 x i8> %wide.load1137.5 to <2 x i32>
  %334 = zext <2 x i8> %wide.load1138.5 to <2 x i32>
  %335 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %333
  %336 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %334
  %337 = icmp slt <2 x i8> %wide.load1137.5, zeroinitializer
  %338 = icmp slt <2 x i8> %wide.load1138.5, zeroinitializer
  %339 = select <2 x i1> %337, <2 x i32> %335, <2 x i32> %333
  %340 = select <2 x i1> %338, <2 x i32> %336, <2 x i32> %334
  %narrow1664 = add nuw nsw <2 x i32> %narrow1662, %339
  %341 = zext <2 x i32> %narrow1664 to <2 x i64>
  %narrow1665 = add nuw nsw <2 x i32> %narrow1663, %340
  %342 = zext <2 x i32> %narrow1665 to <2 x i64>
  %343 = icmp eq i64 %n.vec1123, 24
  br i1 %343, label %middle.block1118, label %vector.body1129.6, !llvm.loop !48

vector.body1129.6:                                ; preds = %vector.body1129.5
  %next.gep1133.6 = getelementptr i8, ptr %252, i64 25
  %next.gep1135.6 = getelementptr i8, ptr %18, i64 25
  %344 = getelementptr i8, ptr %18, i64 27
  %wide.load1137.6 = load <2 x i8>, ptr %next.gep1135.6, align 1, !tbaa !24
  %wide.load1138.6 = load <2 x i8>, ptr %344, align 1, !tbaa !24
  %345 = getelementptr i8, ptr %252, i64 27
  store <2 x i8> %wide.load1137.6, ptr %next.gep1133.6, align 1, !tbaa !24
  store <2 x i8> %wide.load1138.6, ptr %345, align 1, !tbaa !24
  %346 = zext <2 x i8> %wide.load1137.6 to <2 x i32>
  %347 = zext <2 x i8> %wide.load1138.6 to <2 x i32>
  %348 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %346
  %349 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %347
  %350 = icmp slt <2 x i8> %wide.load1137.6, zeroinitializer
  %351 = icmp slt <2 x i8> %wide.load1138.6, zeroinitializer
  %352 = select <2 x i1> %350, <2 x i32> %348, <2 x i32> %346
  %353 = select <2 x i1> %351, <2 x i32> %349, <2 x i32> %347
  %354 = zext nneg <2 x i32> %352 to <2 x i64>
  %355 = zext nneg <2 x i32> %353 to <2 x i64>
  %356 = add nuw nsw <2 x i64> %341, %354
  %357 = add nuw nsw <2 x i64> %342, %355
  %358 = icmp eq i64 %n.vec1123, 28
  br i1 %358, label %middle.block1118, label %vector.body1129.7, !llvm.loop !48

vector.body1129.7:                                ; preds = %vector.body1129.6
  %next.gep1133.7 = getelementptr i8, ptr %252, i64 29
  %next.gep1135.7 = getelementptr i8, ptr %18, i64 29
  %359 = getelementptr i8, ptr %18, i64 31
  %wide.load1137.7 = load <2 x i8>, ptr %next.gep1135.7, align 1, !tbaa !24
  %wide.load1138.7 = load <2 x i8>, ptr %359, align 1, !tbaa !24
  %360 = getelementptr i8, ptr %252, i64 31
  store <2 x i8> %wide.load1137.7, ptr %next.gep1133.7, align 1, !tbaa !24
  store <2 x i8> %wide.load1138.7, ptr %360, align 1, !tbaa !24
  %361 = zext <2 x i8> %wide.load1137.7 to <2 x i32>
  %362 = zext <2 x i8> %wide.load1138.7 to <2 x i32>
  %363 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %361
  %364 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %362
  %365 = icmp slt <2 x i8> %wide.load1137.7, zeroinitializer
  %366 = icmp slt <2 x i8> %wide.load1138.7, zeroinitializer
  %367 = select <2 x i1> %365, <2 x i32> %363, <2 x i32> %361
  %368 = select <2 x i1> %366, <2 x i32> %364, <2 x i32> %362
  %369 = zext nneg <2 x i32> %367 to <2 x i64>
  %370 = zext nneg <2 x i32> %368 to <2 x i64>
  %371 = add nuw nsw <2 x i64> %356, %369
  %372 = add nuw nsw <2 x i64> %357, %370
  br label %middle.block1118

middle.block1118:                                 ; preds = %vector.body1129.7, %vector.body1129.6, %vector.body1129.5, %vector.body1129.4, %vector.body1129.3, %vector.body1129.2, %vector.body1129.1, %vector.ph1121
  %.lcssa1564 = phi <2 x i64> [ %276, %vector.ph1121 ], [ %289, %vector.body1129.1 ], [ %302, %vector.body1129.2 ], [ %315, %vector.body1129.3 ], [ %328, %vector.body1129.4 ], [ %341, %vector.body1129.5 ], [ %356, %vector.body1129.6 ], [ %371, %vector.body1129.7 ]
  %.lcssa1563 = phi <2 x i64> [ %277, %vector.ph1121 ], [ %290, %vector.body1129.1 ], [ %303, %vector.body1129.2 ], [ %316, %vector.body1129.3 ], [ %329, %vector.body1129.4 ], [ %342, %vector.body1129.5 ], [ %357, %vector.body1129.6 ], [ %372, %vector.body1129.7 ]
  %bin.rdx1140 = add <2 x i64> %.lcssa1563, %.lcssa1564
  %373 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx1140)
  %cmp.n1141 = icmp eq i64 %13, %n.vec1123
  br i1 %cmp.n1141, label %.preheader696, label %.lr.ph723.preheader1559

.preheader696:                                    ; preds = %.lr.ph723.prol.loopexit, %.lr.ph723, %middle.block1118, %249
  %.0616.lcssa = phi ptr [ %250, %249 ], [ %ind.end1127, %middle.block1118 ], [ %.lcssa1561.unr, %.lr.ph723.prol.loopexit ], [ %391, %.lr.ph723 ]
  %.0608.lcssa = phi i64 [ 0, %249 ], [ %373, %middle.block1118 ], [ %.lcssa1562.unr, %.lr.ph723.prol.loopexit ], [ %389, %.lr.ph723 ]
  %.0604.lcssa = phi i64 [ 0, %249 ], [ %13, %middle.block1118 ], [ %13, %.lr.ph723 ], [ %13, %.lr.ph723.prol.loopexit ]
  %.0614.lcssa = phi ptr [ %.0614717, %249 ], [ %ind.end1124, %middle.block1118 ], [ %.0614.lcssa1560.unr, %.lr.ph723.prol.loopexit ], [ %.0614.1, %.lr.ph723 ]
  %374 = icmp ult i64 %.0604.lcssa, %6
  br i1 %374, label %.lr.ph733, label %._crit_edge734

.lr.ph723:                                        ; preds = %.lr.ph723.prol.loopexit, %.lr.ph723
  %.0614721 = phi ptr [ %.0614.1, %.lr.ph723 ], [ %.0614721.unr, %.lr.ph723.prol.loopexit ]
  %.0604720 = phi i64 [ %390, %.lr.ph723 ], [ %.0604720.unr, %.lr.ph723.prol.loopexit ]
  %.0608719 = phi i64 [ %389, %.lr.ph723 ], [ %.0608719.unr, %.lr.ph723.prol.loopexit ]
  %.0616718 = phi ptr [ %391, %.lr.ph723 ], [ %.0616718.unr, %.lr.ph723.prol.loopexit ]
  %375 = load i8, ptr %.0616718, align 1, !tbaa !24
  store i8 %375, ptr %.0614721, align 1, !tbaa !24
  %376 = zext i8 %375 to i32
  %377 = sub nuw nsw i32 256, %376
  %378 = icmp slt i8 %375, 0
  %379 = select i1 %378, i32 %377, i32 %376
  %380 = zext nneg i32 %379 to i64
  %381 = add i64 %.0608719, %380
  %382 = getelementptr inbounds i8, ptr %.0616718, i64 1
  %.0614 = getelementptr inbounds i8, ptr %.0614721, i64 1
  %383 = load i8, ptr %382, align 1, !tbaa !24
  store i8 %383, ptr %.0614, align 1, !tbaa !24
  %384 = zext i8 %383 to i32
  %385 = sub nuw nsw i32 256, %384
  %386 = icmp slt i8 %383, 0
  %387 = select i1 %386, i32 %385, i32 %384
  %388 = zext nneg i32 %387 to i64
  %389 = add i64 %381, %388
  %390 = add nuw nsw i64 %.0604720, 2
  %391 = getelementptr inbounds i8, ptr %.0616718, i64 2
  %.0614.1 = getelementptr inbounds i8, ptr %.0614721, i64 2
  %exitcond995.not.1 = icmp eq i64 %390, %13
  br i1 %exitcond995.not.1, label %.preheader696, label %.lr.ph723, !llvm.loop !49

.lr.ph733:                                        ; preds = %.preheader696, %.lr.ph733
  %.1605732 = phi i64 [ %401, %.lr.ph733 ], [ %.0604.lcssa, %.preheader696 ]
  %.1609731 = phi i64 [ %399, %.lr.ph733 ], [ %.0608.lcssa, %.preheader696 ]
  %.0613730 = phi ptr [ %403, %.lr.ph733 ], [ %250, %.preheader696 ]
  %.1615729 = phi ptr [ %404, %.lr.ph733 ], [ %.0614.lcssa, %.preheader696 ]
  %.1617728 = phi ptr [ %402, %.lr.ph733 ], [ %.0616.lcssa, %.preheader696 ]
  %392 = load i8, ptr %.1617728, align 1, !tbaa !24
  %393 = load i8, ptr %.0613730, align 1, !tbaa !24
  %.narrow = sub i8 %392, %393
  store i8 %.narrow, ptr %.1615729, align 1, !tbaa !24
  %394 = zext i8 %.narrow to i32
  %395 = sub nuw nsw i32 256, %394
  %396 = icmp slt i8 %.narrow, 0
  %397 = select i1 %396, i32 %395, i32 %394
  %398 = zext nneg i32 %397 to i64
  %399 = add i64 %.1609731, %398
  %400 = icmp ule i64 %399, %.1607
  %401 = add nuw i64 %.1605732, 1
  %402 = getelementptr inbounds i8, ptr %.1617728, i64 1
  %403 = getelementptr inbounds i8, ptr %.0613730, i64 1
  %404 = getelementptr inbounds i8, ptr %.1615729, i64 1
  %405 = icmp ult i64 %401, %6
  %or.cond926 = select i1 %400, i1 %405, i1 false
  br i1 %or.cond926, label %.lr.ph733, label %._crit_edge734, !llvm.loop !50

._crit_edge734:                                   ; preds = %.lr.ph733, %.preheader696
  %.2610 = phi i64 [ %.0608.lcssa, %.preheader696 ], [ %399, %.lr.ph733 ]
  %406 = load i8, ptr %186, align 8, !tbaa !30
  %407 = icmp eq i8 %406, 2
  br i1 %407, label %408, label %468

408:                                              ; preds = %._crit_edge734
  %409 = and i64 %.2610, 65535
  %410 = lshr i64 %.2610, 10
  %411 = and i64 %410, 18014398509481920
  %.not944 = icmp eq i8 %8, 0
  br i1 %.not944, label %._crit_edge743, label %.lr.ph742

.lr.ph742:                                        ; preds = %408
  %412 = getelementptr inbounds i8, ptr %0, i64 992
  %413 = load ptr, ptr %412, align 8, !tbaa !31
  %414 = getelementptr inbounds i8, ptr %0, i64 1008
  %wide.trip.count999 = zext i8 %8 to i64
  %xtraiter1581 = and i64 %wide.trip.count999, 1
  %415 = icmp eq i8 %8, 1
  br i1 %415, label %._crit_edge743.loopexit.unr-lcssa, label %.lr.ph742.new

.lr.ph742.new:                                    ; preds = %.lr.ph742
  %unroll_iter1585 = and i64 %wide.trip.count999, 254
  br label %416

416:                                              ; preds = %442, %.lr.ph742.new
  %indvars.iv996 = phi i64 [ 0, %.lr.ph742.new ], [ %indvars.iv.next997.1, %442 ]
  %.0594740 = phi i64 [ %409, %.lr.ph742.new ], [ %.1595.1, %442 ]
  %.0596739 = phi i64 [ %411, %.lr.ph742.new ], [ %.1597.1, %442 ]
  %niter1586 = phi i64 [ 0, %.lr.ph742.new ], [ %niter1586.next.1, %442 ]
  %417 = getelementptr inbounds i8, ptr %413, i64 %indvars.iv996
  %418 = load i8, ptr %417, align 1, !tbaa !24
  %419 = icmp eq i8 %418, 1
  br i1 %419, label %420, label %429

420:                                              ; preds = %416
  %421 = load ptr, ptr %414, align 8, !tbaa !45
  %422 = getelementptr inbounds i16, ptr %421, i64 %indvars.iv996
  %423 = load i16, ptr %422, align 2, !tbaa !33
  %424 = zext i16 %423 to i64
  %425 = mul i64 %.0594740, %424
  %426 = lshr i64 %425, 8
  %427 = mul i64 %.0596739, %424
  %428 = lshr i64 %427, 8
  br label %429

429:                                              ; preds = %416, %420
  %.1597 = phi i64 [ %428, %420 ], [ %.0596739, %416 ]
  %.1595 = phi i64 [ %426, %420 ], [ %.0594740, %416 ]
  %indvars.iv.next997 = or disjoint i64 %indvars.iv996, 1
  %430 = getelementptr inbounds i8, ptr %413, i64 %indvars.iv.next997
  %431 = load i8, ptr %430, align 1, !tbaa !24
  %432 = icmp eq i8 %431, 1
  br i1 %432, label %433, label %442

433:                                              ; preds = %429
  %434 = load ptr, ptr %414, align 8, !tbaa !45
  %435 = getelementptr inbounds i16, ptr %434, i64 %indvars.iv.next997
  %436 = load i16, ptr %435, align 2, !tbaa !33
  %437 = zext i16 %436 to i64
  %438 = mul i64 %.1595, %437
  %439 = lshr i64 %438, 8
  %440 = mul i64 %.1597, %437
  %441 = lshr i64 %440, 8
  br label %442

442:                                              ; preds = %433, %429
  %.1597.1 = phi i64 [ %441, %433 ], [ %.1597, %429 ]
  %.1595.1 = phi i64 [ %439, %433 ], [ %.1595, %429 ]
  %indvars.iv.next997.1 = add nuw nsw i64 %indvars.iv996, 2
  %niter1586.next.1 = add i64 %niter1586, 2
  %niter1586.ncmp.1 = icmp eq i64 %niter1586.next.1, %unroll_iter1585
  br i1 %niter1586.ncmp.1, label %._crit_edge743.loopexit.unr-lcssa, label %416, !llvm.loop !51

._crit_edge743.loopexit.unr-lcssa:                ; preds = %442, %.lr.ph742
  %.1597.lcssa.ph = phi i64 [ poison, %.lr.ph742 ], [ %.1597.1, %442 ]
  %.1595.lcssa.ph = phi i64 [ poison, %.lr.ph742 ], [ %.1595.1, %442 ]
  %indvars.iv996.unr = phi i64 [ 0, %.lr.ph742 ], [ %indvars.iv.next997.1, %442 ]
  %.0594740.unr = phi i64 [ %409, %.lr.ph742 ], [ %.1595.1, %442 ]
  %.0596739.unr = phi i64 [ %411, %.lr.ph742 ], [ %.1597.1, %442 ]
  %lcmp.mod1582.not = icmp eq i64 %xtraiter1581, 0
  br i1 %lcmp.mod1582.not, label %._crit_edge743, label %.epil.preheader1580

.epil.preheader1580:                              ; preds = %._crit_edge743.loopexit.unr-lcssa
  %443 = getelementptr inbounds i8, ptr %413, i64 %indvars.iv996.unr
  %444 = load i8, ptr %443, align 1, !tbaa !24
  %445 = icmp eq i8 %444, 1
  br i1 %445, label %446, label %._crit_edge743

446:                                              ; preds = %.epil.preheader1580
  %447 = load ptr, ptr %414, align 8, !tbaa !45
  %448 = getelementptr inbounds i16, ptr %447, i64 %indvars.iv996.unr
  %449 = load i16, ptr %448, align 2, !tbaa !33
  %450 = zext i16 %449 to i64
  %451 = mul i64 %.0594740.unr, %450
  %452 = lshr i64 %451, 8
  %453 = mul i64 %.0596739.unr, %450
  %454 = lshr i64 %453, 8
  br label %._crit_edge743

._crit_edge743:                                   ; preds = %._crit_edge743.loopexit.unr-lcssa, %446, %.epil.preheader1580, %408
  %.0596.lcssa = phi i64 [ %411, %408 ], [ %.1597.lcssa.ph, %._crit_edge743.loopexit.unr-lcssa ], [ %454, %446 ], [ %.0596739.unr, %.epil.preheader1580 ]
  %.0594.lcssa = phi i64 [ %409, %408 ], [ %.1595.lcssa.ph, %._crit_edge743.loopexit.unr-lcssa ], [ %452, %446 ], [ %.0594740.unr, %.epil.preheader1580 ]
  %455 = getelementptr inbounds i8, ptr %0, i64 1024
  %456 = load ptr, ptr %455, align 8, !tbaa !47
  %457 = getelementptr inbounds i8, ptr %456, i64 2
  %458 = load i16, ptr %457, align 2, !tbaa !33
  %459 = zext i16 %458 to i64
  %460 = mul i64 %.0596.lcssa, %459
  %461 = icmp ugt i64 %460, 144115188075855367
  br i1 %461, label %468, label %462

462:                                              ; preds = %._crit_edge743
  %463 = mul i64 %.0594.lcssa, %459
  %464 = lshr i64 %463, 3
  %465 = shl nuw i64 %460, 7
  %466 = and i64 %465, -1024
  %467 = add i64 %466, %464
  br label %468

468:                                              ; preds = %462, %._crit_edge743, %._crit_edge734
  %.4612 = phi i64 [ %.2610, %._crit_edge734 ], [ %467, %462 ], [ 9223372036854775807, %._crit_edge743 ]
  %469 = icmp ult i64 %.4612, %.0481
  br i1 %469, label %.sink.split, label %471

.sink.split:                                      ; preds = %.lr.ph759.prol.loopexit, %.lr.ph759, %middle.block1168, %vec.epilog.middle.block, %468, %.preheader695
  %.sink = phi ptr [ %114, %.preheader695 ], [ %251, %468 ], [ %114, %vec.epilog.middle.block ], [ %114, %middle.block1168 ], [ %114, %.lr.ph759 ], [ %114, %.lr.ph759.prol.loopexit ]
  %.2483.ph = phi i64 [ %.0481, %.preheader695 ], [ %.4612, %468 ], [ %.0481, %vec.epilog.middle.block ], [ %.0481, %middle.block1168 ], [ %.0481, %.lr.ph759 ], [ %.0481, %.lr.ph759.prol.loopexit ]
  %470 = load ptr, ptr %.sink, align 8, !tbaa !36
  br label %471

471:                                              ; preds = %.sink.split, %468, %183
  %.2483 = phi i64 [ %.0481, %183 ], [ %.0481, %468 ], [ %.2483.ph, %.sink.split ]
  %.1480 = phi ptr [ %18, %183 ], [ %18, %468 ], [ %470, %.sink.split ]
  %472 = icmp eq i8 %4, 32
  br i1 %472, label %473, label %504

473:                                              ; preds = %471
  %474 = getelementptr inbounds i8, ptr %0, i64 544
  %475 = load ptr, ptr %474, align 8, !tbaa !52
  %476 = ptrtoint ptr %475 to i64
  %.not949 = icmp eq i64 %6, 0
  br i1 %.not949, label %.thread1059, label %iter.check1220

iter.check1220:                                   ; preds = %473
  %min.iters.check1218 = icmp ult i64 %6, 8
  br i1 %min.iters.check1218, label %.lr.ph796.preheader, label %vector.memcheck1212

vector.memcheck1212:                              ; preds = %iter.check1220
  %477 = sub i64 %476, %19
  %diff.check1213 = icmp ult i64 %477, 32
  %478 = sub i64 %476, %16
  %diff.check1214 = icmp ult i64 %478, 32
  %conflict.rdx1215 = or i1 %diff.check1213, %diff.check1214
  br i1 %conflict.rdx1215, label %.lr.ph796.preheader, label %vector.main.loop.iter.check1222

vector.main.loop.iter.check1222:                  ; preds = %vector.memcheck1212
  %min.iters.check1221 = icmp ult i64 %6, 32
  br i1 %min.iters.check1221, label %vec.epilog.ph1242, label %vector.ph1223

vector.ph1223:                                    ; preds = %vector.main.loop.iter.check1222
  %n.vec1225 = and i64 %6, -32
  br label %vector.body1226

vector.body1226:                                  ; preds = %vector.body1226, %vector.ph1223
  %index1227 = phi i64 [ 0, %vector.ph1223 ], [ %index.next1238, %vector.body1226 ]
  %next.gep1228 = getelementptr i8, ptr %15, i64 %index1227
  %next.gep1230 = getelementptr i8, ptr %475, i64 %index1227
  %next.gep1232 = getelementptr i8, ptr %18, i64 %index1227
  %479 = getelementptr inbounds i8, ptr %next.gep1230, i64 1
  %480 = getelementptr inbounds i8, ptr %next.gep1228, i64 1
  %481 = getelementptr inbounds i8, ptr %next.gep1232, i64 1
  %482 = getelementptr inbounds i8, ptr %next.gep1232, i64 17
  %wide.load1234 = load <16 x i8>, ptr %481, align 1, !tbaa !24
  %wide.load1235 = load <16 x i8>, ptr %482, align 1, !tbaa !24
  %483 = getelementptr inbounds i8, ptr %next.gep1228, i64 17
  %wide.load1236 = load <16 x i8>, ptr %480, align 1, !tbaa !24
  %wide.load1237 = load <16 x i8>, ptr %483, align 1, !tbaa !24
  %484 = sub <16 x i8> %wide.load1234, %wide.load1236
  %485 = sub <16 x i8> %wide.load1235, %wide.load1237
  %486 = getelementptr inbounds i8, ptr %next.gep1230, i64 17
  store <16 x i8> %484, ptr %479, align 1, !tbaa !24
  store <16 x i8> %485, ptr %486, align 1, !tbaa !24
  %index.next1238 = add nuw i64 %index1227, 32
  %487 = icmp eq i64 %index.next1238, %n.vec1225
  br i1 %487, label %middle.block1216, label %vector.body1226, !llvm.loop !53

middle.block1216:                                 ; preds = %vector.body1226
  %cmp.n1239 = icmp eq i64 %6, %n.vec1225
  br i1 %cmp.n1239, label %._crit_edge797.sink.split, label %vec.epilog.iter.check1243

vec.epilog.iter.check1243:                        ; preds = %middle.block1216
  %ind.end1257 = getelementptr i8, ptr %18, i64 %n.vec1225
  %ind.end1254 = getelementptr i8, ptr %475, i64 %n.vec1225
  %ind.end1251 = getelementptr i8, ptr %15, i64 %n.vec1225
  %n.vec.remaining1244 = and i64 %6, 24
  %min.epilog.iters.check1245 = icmp eq i64 %n.vec.remaining1244, 0
  br i1 %min.epilog.iters.check1245, label %.lr.ph796.preheader, label %vec.epilog.ph1242

vec.epilog.ph1242:                                ; preds = %vector.main.loop.iter.check1222, %vec.epilog.iter.check1243
  %vec.epilog.resume.val1246 = phi i64 [ %n.vec1225, %vec.epilog.iter.check1243 ], [ 0, %vector.main.loop.iter.check1222 ]
  %n.vec1248 = and i64 %6, -8
  %ind.end1250 = getelementptr i8, ptr %15, i64 %n.vec1248
  %ind.end1253 = getelementptr i8, ptr %475, i64 %n.vec1248
  %ind.end1256 = getelementptr i8, ptr %18, i64 %n.vec1248
  %invariant.gep = getelementptr i8, ptr %475, i64 1
  %invariant.gep1719 = getelementptr i8, ptr %15, i64 1
  %invariant.gep1721 = getelementptr i8, ptr %18, i64 1
  br label %vec.epilog.vector.body1259

vec.epilog.vector.body1259:                       ; preds = %vec.epilog.vector.body1259, %vec.epilog.ph1242
  %index1260 = phi i64 [ %vec.epilog.resume.val1246, %vec.epilog.ph1242 ], [ %index.next1266, %vec.epilog.vector.body1259 ]
  %gep = getelementptr i8, ptr %invariant.gep, i64 %index1260
  %gep1720 = getelementptr i8, ptr %invariant.gep1719, i64 %index1260
  %gep1722 = getelementptr i8, ptr %invariant.gep1721, i64 %index1260
  %wide.load1264 = load <8 x i8>, ptr %gep1722, align 1, !tbaa !24
  %wide.load1265 = load <8 x i8>, ptr %gep1720, align 1, !tbaa !24
  %488 = sub <8 x i8> %wide.load1264, %wide.load1265
  store <8 x i8> %488, ptr %gep, align 1, !tbaa !24
  %index.next1266 = add nuw i64 %index1260, 8
  %489 = icmp eq i64 %index.next1266, %n.vec1248
  br i1 %489, label %vec.epilog.middle.block1240, label %vec.epilog.vector.body1259, !llvm.loop !54

vec.epilog.middle.block1240:                      ; preds = %vec.epilog.vector.body1259
  %cmp.n1267 = icmp eq i64 %6, %n.vec1248
  br i1 %cmp.n1267, label %._crit_edge797.sink.split, label %.lr.ph796.preheader

.lr.ph796.preheader:                              ; preds = %vec.epilog.middle.block1240, %vector.memcheck1212, %iter.check1220, %vec.epilog.iter.check1243
  %.0590794.ph = phi i64 [ 0, %iter.check1220 ], [ 0, %vector.memcheck1212 ], [ %n.vec1225, %vec.epilog.iter.check1243 ], [ %n.vec1248, %vec.epilog.middle.block1240 ]
  %.pn683793.ph = phi ptr [ %15, %iter.check1220 ], [ %15, %vector.memcheck1212 ], [ %ind.end1251, %vec.epilog.iter.check1243 ], [ %ind.end1250, %vec.epilog.middle.block1240 ]
  %.pn684792.ph = phi ptr [ %475, %iter.check1220 ], [ %475, %vector.memcheck1212 ], [ %ind.end1254, %vec.epilog.iter.check1243 ], [ %ind.end1253, %vec.epilog.middle.block1240 ]
  %.pn682791.ph = phi ptr [ %18, %iter.check1220 ], [ %18, %vector.memcheck1212 ], [ %ind.end1257, %vec.epilog.iter.check1243 ], [ %ind.end1256, %vec.epilog.middle.block1240 ]
  %xtraiter1606 = and i64 %6, 3
  %lcmp.mod1607.not = icmp eq i64 %xtraiter1606, 0
  br i1 %lcmp.mod1607.not, label %.lr.ph796.prol.loopexit, label %.lr.ph796.prol

.lr.ph796.prol:                                   ; preds = %.lr.ph796.preheader, %.lr.ph796.prol
  %.0590794.prol = phi i64 [ %492, %.lr.ph796.prol ], [ %.0590794.ph, %.lr.ph796.preheader ]
  %.pn683793.prol = phi ptr [ %.0591.prol, %.lr.ph796.prol ], [ %.pn683793.ph, %.lr.ph796.preheader ]
  %.pn684792.prol = phi ptr [ %.0592.prol, %.lr.ph796.prol ], [ %.pn684792.ph, %.lr.ph796.preheader ]
  %.pn682791.prol = phi ptr [ %.0593.prol, %.lr.ph796.prol ], [ %.pn682791.ph, %.lr.ph796.preheader ]
  %prol.iter1608 = phi i64 [ %prol.iter1608.next, %.lr.ph796.prol ], [ 0, %.lr.ph796.preheader ]
  %.0592.prol = getelementptr inbounds i8, ptr %.pn684792.prol, i64 1
  %.0591.prol = getelementptr inbounds i8, ptr %.pn683793.prol, i64 1
  %.0593.prol = getelementptr inbounds i8, ptr %.pn682791.prol, i64 1
  %490 = load i8, ptr %.0593.prol, align 1, !tbaa !24
  %491 = load i8, ptr %.0591.prol, align 1, !tbaa !24
  %.narrow681.prol = sub i8 %490, %491
  store i8 %.narrow681.prol, ptr %.0592.prol, align 1, !tbaa !24
  %492 = add nuw i64 %.0590794.prol, 1
  %prol.iter1608.next = add i64 %prol.iter1608, 1
  %prol.iter1608.cmp.not = icmp eq i64 %prol.iter1608.next, %xtraiter1606
  br i1 %prol.iter1608.cmp.not, label %.lr.ph796.prol.loopexit, label %.lr.ph796.prol, !llvm.loop !55

.lr.ph796.prol.loopexit:                          ; preds = %.lr.ph796.prol, %.lr.ph796.preheader
  %.0590794.unr = phi i64 [ %.0590794.ph, %.lr.ph796.preheader ], [ %492, %.lr.ph796.prol ]
  %.pn683793.unr = phi ptr [ %.pn683793.ph, %.lr.ph796.preheader ], [ %.0591.prol, %.lr.ph796.prol ]
  %.pn684792.unr = phi ptr [ %.pn684792.ph, %.lr.ph796.preheader ], [ %.0592.prol, %.lr.ph796.prol ]
  %.pn682791.unr = phi ptr [ %.pn682791.ph, %.lr.ph796.preheader ], [ %.0593.prol, %.lr.ph796.prol ]
  %493 = sub i64 %.0590794.ph, %6
  %494 = icmp ugt i64 %493, -4
  br i1 %494, label %._crit_edge797.sink.split, label %.lr.ph796

.lr.ph796:                                        ; preds = %.lr.ph796.prol.loopexit, %.lr.ph796
  %.0590794 = phi i64 [ %503, %.lr.ph796 ], [ %.0590794.unr, %.lr.ph796.prol.loopexit ]
  %.pn683793 = phi ptr [ %.0591.3, %.lr.ph796 ], [ %.pn683793.unr, %.lr.ph796.prol.loopexit ]
  %.pn684792 = phi ptr [ %.0592.3, %.lr.ph796 ], [ %.pn684792.unr, %.lr.ph796.prol.loopexit ]
  %.pn682791 = phi ptr [ %.0593.3, %.lr.ph796 ], [ %.pn682791.unr, %.lr.ph796.prol.loopexit ]
  %.0592 = getelementptr inbounds i8, ptr %.pn684792, i64 1
  %.0591 = getelementptr inbounds i8, ptr %.pn683793, i64 1
  %.0593 = getelementptr inbounds i8, ptr %.pn682791, i64 1
  %495 = load i8, ptr %.0593, align 1, !tbaa !24
  %496 = load i8, ptr %.0591, align 1, !tbaa !24
  %.narrow681 = sub i8 %495, %496
  store i8 %.narrow681, ptr %.0592, align 1, !tbaa !24
  %.0592.1 = getelementptr inbounds i8, ptr %.pn684792, i64 2
  %.0591.1 = getelementptr inbounds i8, ptr %.pn683793, i64 2
  %.0593.1 = getelementptr inbounds i8, ptr %.pn682791, i64 2
  %497 = load i8, ptr %.0593.1, align 1, !tbaa !24
  %498 = load i8, ptr %.0591.1, align 1, !tbaa !24
  %.narrow681.1 = sub i8 %497, %498
  store i8 %.narrow681.1, ptr %.0592.1, align 1, !tbaa !24
  %.0592.2 = getelementptr inbounds i8, ptr %.pn684792, i64 3
  %.0591.2 = getelementptr inbounds i8, ptr %.pn683793, i64 3
  %.0593.2 = getelementptr inbounds i8, ptr %.pn682791, i64 3
  %499 = load i8, ptr %.0593.2, align 1, !tbaa !24
  %500 = load i8, ptr %.0591.2, align 1, !tbaa !24
  %.narrow681.2 = sub i8 %499, %500
  store i8 %.narrow681.2, ptr %.0592.2, align 1, !tbaa !24
  %.0592.3 = getelementptr inbounds i8, ptr %.pn684792, i64 4
  %.0591.3 = getelementptr inbounds i8, ptr %.pn683793, i64 4
  %.0593.3 = getelementptr inbounds i8, ptr %.pn682791, i64 4
  %501 = load i8, ptr %.0593.3, align 1, !tbaa !24
  %502 = load i8, ptr %.0591.3, align 1, !tbaa !24
  %.narrow681.3 = sub i8 %501, %502
  store i8 %.narrow681.3, ptr %.0592.3, align 1, !tbaa !24
  %503 = add nuw i64 %.0590794, 4
  %exitcond1014.not.3 = icmp eq i64 %503, %6
  br i1 %exitcond1014.not.3, label %._crit_edge797.sink.split, label %.lr.ph796, !llvm.loop !56

504:                                              ; preds = %471
  %505 = and i32 %20, 32
  %.not645 = icmp eq i32 %505, 0
  br i1 %.not645, label %._crit_edge797, label %506

506:                                              ; preds = %504
  %507 = getelementptr inbounds i8, ptr %0, i64 984
  %508 = load i8, ptr %507, align 8, !tbaa !30
  %509 = icmp eq i8 %508, 2
  br i1 %509, label %510, label %570

510:                                              ; preds = %506
  %511 = and i64 %.2483, 65535
  %512 = lshr i64 %.2483, 10
  %513 = and i64 %512, 18014398509481920
  %.not946 = icmp eq i8 %8, 0
  br i1 %.not946, label %._crit_edge766, label %.lr.ph765

.lr.ph765:                                        ; preds = %510
  %514 = getelementptr inbounds i8, ptr %0, i64 992
  %515 = load ptr, ptr %514, align 8, !tbaa !31
  %516 = getelementptr inbounds i8, ptr %0, i64 1008
  %wide.trip.count1006 = zext i8 %8 to i64
  %xtraiter1593 = and i64 %wide.trip.count1006, 1
  %517 = icmp eq i8 %8, 1
  br i1 %517, label %._crit_edge766.loopexit.unr-lcssa, label %.lr.ph765.new

.lr.ph765.new:                                    ; preds = %.lr.ph765
  %unroll_iter1597 = and i64 %wide.trip.count1006, 254
  br label %518

518:                                              ; preds = %544, %.lr.ph765.new
  %indvars.iv1003 = phi i64 [ 0, %.lr.ph765.new ], [ %indvars.iv.next1004.1, %544 ]
  %.0573763 = phi i64 [ %511, %.lr.ph765.new ], [ %.1574.1, %544 ]
  %.0575762 = phi i64 [ %513, %.lr.ph765.new ], [ %.1576.1, %544 ]
  %niter1598 = phi i64 [ 0, %.lr.ph765.new ], [ %niter1598.next.1, %544 ]
  %519 = getelementptr inbounds i8, ptr %515, i64 %indvars.iv1003
  %520 = load i8, ptr %519, align 1, !tbaa !24
  %521 = icmp eq i8 %520, 2
  br i1 %521, label %522, label %531

522:                                              ; preds = %518
  %523 = load ptr, ptr %516, align 8, !tbaa !45
  %524 = getelementptr inbounds i16, ptr %523, i64 %indvars.iv1003
  %525 = load i16, ptr %524, align 2, !tbaa !33
  %526 = zext i16 %525 to i64
  %527 = mul i64 %.0573763, %526
  %528 = lshr i64 %527, 8
  %529 = mul i64 %.0575762, %526
  %530 = lshr i64 %529, 8
  br label %531

531:                                              ; preds = %518, %522
  %.1576 = phi i64 [ %530, %522 ], [ %.0575762, %518 ]
  %.1574 = phi i64 [ %528, %522 ], [ %.0573763, %518 ]
  %indvars.iv.next1004 = or disjoint i64 %indvars.iv1003, 1
  %532 = getelementptr inbounds i8, ptr %515, i64 %indvars.iv.next1004
  %533 = load i8, ptr %532, align 1, !tbaa !24
  %534 = icmp eq i8 %533, 2
  br i1 %534, label %535, label %544

535:                                              ; preds = %531
  %536 = load ptr, ptr %516, align 8, !tbaa !45
  %537 = getelementptr inbounds i16, ptr %536, i64 %indvars.iv.next1004
  %538 = load i16, ptr %537, align 2, !tbaa !33
  %539 = zext i16 %538 to i64
  %540 = mul i64 %.1574, %539
  %541 = lshr i64 %540, 8
  %542 = mul i64 %.1576, %539
  %543 = lshr i64 %542, 8
  br label %544

544:                                              ; preds = %535, %531
  %.1576.1 = phi i64 [ %543, %535 ], [ %.1576, %531 ]
  %.1574.1 = phi i64 [ %541, %535 ], [ %.1574, %531 ]
  %indvars.iv.next1004.1 = add nuw nsw i64 %indvars.iv1003, 2
  %niter1598.next.1 = add i64 %niter1598, 2
  %niter1598.ncmp.1 = icmp eq i64 %niter1598.next.1, %unroll_iter1597
  br i1 %niter1598.ncmp.1, label %._crit_edge766.loopexit.unr-lcssa, label %518, !llvm.loop !57

._crit_edge766.loopexit.unr-lcssa:                ; preds = %544, %.lr.ph765
  %.1576.lcssa.ph = phi i64 [ poison, %.lr.ph765 ], [ %.1576.1, %544 ]
  %.1574.lcssa.ph = phi i64 [ poison, %.lr.ph765 ], [ %.1574.1, %544 ]
  %indvars.iv1003.unr = phi i64 [ 0, %.lr.ph765 ], [ %indvars.iv.next1004.1, %544 ]
  %.0573763.unr = phi i64 [ %511, %.lr.ph765 ], [ %.1574.1, %544 ]
  %.0575762.unr = phi i64 [ %513, %.lr.ph765 ], [ %.1576.1, %544 ]
  %lcmp.mod1594.not = icmp eq i64 %xtraiter1593, 0
  br i1 %lcmp.mod1594.not, label %._crit_edge766, label %.epil.preheader1592

.epil.preheader1592:                              ; preds = %._crit_edge766.loopexit.unr-lcssa
  %545 = getelementptr inbounds i8, ptr %515, i64 %indvars.iv1003.unr
  %546 = load i8, ptr %545, align 1, !tbaa !24
  %547 = icmp eq i8 %546, 2
  br i1 %547, label %548, label %._crit_edge766

548:                                              ; preds = %.epil.preheader1592
  %549 = load ptr, ptr %516, align 8, !tbaa !45
  %550 = getelementptr inbounds i16, ptr %549, i64 %indvars.iv1003.unr
  %551 = load i16, ptr %550, align 2, !tbaa !33
  %552 = zext i16 %551 to i64
  %553 = mul i64 %.0573763.unr, %552
  %554 = lshr i64 %553, 8
  %555 = mul i64 %.0575762.unr, %552
  %556 = lshr i64 %555, 8
  br label %._crit_edge766

._crit_edge766:                                   ; preds = %._crit_edge766.loopexit.unr-lcssa, %548, %.epil.preheader1592, %510
  %.0575.lcssa = phi i64 [ %513, %510 ], [ %.1576.lcssa.ph, %._crit_edge766.loopexit.unr-lcssa ], [ %556, %548 ], [ %.0575762.unr, %.epil.preheader1592 ]
  %.0573.lcssa = phi i64 [ %511, %510 ], [ %.1574.lcssa.ph, %._crit_edge766.loopexit.unr-lcssa ], [ %554, %548 ], [ %.0573763.unr, %.epil.preheader1592 ]
  %557 = getelementptr inbounds i8, ptr %0, i64 1024
  %558 = load ptr, ptr %557, align 8, !tbaa !47
  %559 = getelementptr inbounds i8, ptr %558, i64 4
  %560 = load i16, ptr %559, align 2, !tbaa !33
  %561 = zext i16 %560 to i64
  %562 = mul i64 %.0575.lcssa, %561
  %563 = icmp ugt i64 %562, 144115188075855367
  br i1 %563, label %570, label %564

564:                                              ; preds = %._crit_edge766
  %565 = mul i64 %.0573.lcssa, %561
  %566 = lshr i64 %565, 3
  %567 = shl nuw i64 %562, 7
  %568 = and i64 %567, -1024
  %569 = add i64 %568, %566
  br label %570

570:                                              ; preds = %564, %._crit_edge766, %506
  %.1582 = phi i64 [ %.2483, %506 ], [ %569, %564 ], [ 9223372036854775807, %._crit_edge766 ]
  %571 = getelementptr inbounds i8, ptr %0, i64 544
  %.not947 = icmp eq i64 %6, 0
  br i1 %.not947, label %._crit_edge779, label %.lr.ph778.preheader

.lr.ph778.preheader:                              ; preds = %570
  %572 = load ptr, ptr %571, align 8, !tbaa !52
  br label %.lr.ph778

.lr.ph778:                                        ; preds = %.lr.ph778, %.lr.ph778.preheader
  %.pn646.pn = phi ptr [ %18, %.lr.ph778.preheader ], [ %.0589776, %.lr.ph778 ]
  %.pn647.pn = phi ptr [ %15, %.lr.ph778.preheader ], [ %.0587775, %.lr.ph778 ]
  %.pn649.pn = phi ptr [ %572, %.lr.ph778.preheader ], [ %.0588774, %.lr.ph778 ]
  %.0580773 = phi i64 [ 0, %.lr.ph778.preheader ], [ %582, %.lr.ph778 ]
  %.0583772 = phi i64 [ 0, %.lr.ph778.preheader ], [ %580, %.lr.ph778 ]
  %.0588774 = getelementptr inbounds i8, ptr %.pn649.pn, i64 1
  %.0587775 = getelementptr inbounds i8, ptr %.pn647.pn, i64 1
  %.0589776 = getelementptr inbounds i8, ptr %.pn646.pn, i64 1
  %573 = load i8, ptr %.0589776, align 1, !tbaa !24
  %574 = load i8, ptr %.0587775, align 1, !tbaa !24
  %.narrow648 = sub i8 %573, %574
  store i8 %.narrow648, ptr %.0588774, align 1, !tbaa !24
  %575 = zext i8 %.narrow648 to i32
  %576 = sub nuw nsw i32 256, %575
  %577 = icmp slt i8 %.narrow648, 0
  %578 = select i1 %577, i32 %576, i32 %575
  %579 = zext nneg i32 %578 to i64
  %580 = add i64 %.0583772, %579
  %581 = icmp ugt i64 %580, %.1582
  %582 = add nuw i64 %.0580773, 1
  %exitcond1008.not = icmp eq i64 %582, %6
  %or.cond1086 = select i1 %581, i1 true, i1 %exitcond1008.not
  br i1 %or.cond1086, label %._crit_edge779.loopexit, label %.lr.ph778, !llvm.loop !58

._crit_edge779.loopexit:                          ; preds = %.lr.ph778
  %.pre = load i8, ptr %507, align 8, !tbaa !30
  br label %._crit_edge779

._crit_edge779:                                   ; preds = %._crit_edge779.loopexit, %570
  %583 = phi i8 [ %508, %570 ], [ %.pre, %._crit_edge779.loopexit ]
  %.1584 = phi i64 [ 0, %570 ], [ %580, %._crit_edge779.loopexit ]
  %584 = icmp eq i8 %583, 2
  br i1 %584, label %585, label %645

585:                                              ; preds = %._crit_edge779
  %586 = and i64 %.1584, 65535
  %587 = lshr i64 %.1584, 10
  %588 = and i64 %587, 18014398509481920
  %.not948 = icmp eq i8 %8, 0
  br i1 %.not948, label %._crit_edge788, label %.lr.ph787

.lr.ph787:                                        ; preds = %585
  %589 = getelementptr inbounds i8, ptr %0, i64 992
  %590 = load ptr, ptr %589, align 8, !tbaa !31
  %591 = getelementptr inbounds i8, ptr %0, i64 1000
  %wide.trip.count1012 = zext i8 %8 to i64
  %xtraiter1600 = and i64 %wide.trip.count1012, 1
  %592 = icmp eq i8 %8, 1
  br i1 %592, label %._crit_edge788.loopexit.unr-lcssa, label %.lr.ph787.new

.lr.ph787.new:                                    ; preds = %.lr.ph787
  %unroll_iter1604 = and i64 %wide.trip.count1012, 254
  br label %593

593:                                              ; preds = %619, %.lr.ph787.new
  %indvars.iv1009 = phi i64 [ 0, %.lr.ph787.new ], [ %indvars.iv.next1010.1, %619 ]
  %.0568785 = phi i64 [ %586, %.lr.ph787.new ], [ %.1569.1, %619 ]
  %.0570784 = phi i64 [ %588, %.lr.ph787.new ], [ %.1571.1, %619 ]
  %niter1605 = phi i64 [ 0, %.lr.ph787.new ], [ %niter1605.next.1, %619 ]
  %594 = getelementptr inbounds i8, ptr %590, i64 %indvars.iv1009
  %595 = load i8, ptr %594, align 1, !tbaa !24
  %596 = icmp eq i8 %595, 2
  br i1 %596, label %597, label %606

597:                                              ; preds = %593
  %598 = load ptr, ptr %591, align 8, !tbaa !32
  %599 = getelementptr inbounds i16, ptr %598, i64 %indvars.iv1009
  %600 = load i16, ptr %599, align 2, !tbaa !33
  %601 = zext i16 %600 to i64
  %602 = mul i64 %.0568785, %601
  %603 = lshr i64 %602, 8
  %604 = mul i64 %.0570784, %601
  %605 = lshr i64 %604, 8
  br label %606

606:                                              ; preds = %593, %597
  %.1571 = phi i64 [ %605, %597 ], [ %.0570784, %593 ]
  %.1569 = phi i64 [ %603, %597 ], [ %.0568785, %593 ]
  %indvars.iv.next1010 = or disjoint i64 %indvars.iv1009, 1
  %607 = getelementptr inbounds i8, ptr %590, i64 %indvars.iv.next1010
  %608 = load i8, ptr %607, align 1, !tbaa !24
  %609 = icmp eq i8 %608, 2
  br i1 %609, label %610, label %619

610:                                              ; preds = %606
  %611 = load ptr, ptr %591, align 8, !tbaa !32
  %612 = getelementptr inbounds i16, ptr %611, i64 %indvars.iv.next1010
  %613 = load i16, ptr %612, align 2, !tbaa !33
  %614 = zext i16 %613 to i64
  %615 = mul i64 %.1569, %614
  %616 = lshr i64 %615, 8
  %617 = mul i64 %.1571, %614
  %618 = lshr i64 %617, 8
  br label %619

619:                                              ; preds = %610, %606
  %.1571.1 = phi i64 [ %618, %610 ], [ %.1571, %606 ]
  %.1569.1 = phi i64 [ %616, %610 ], [ %.1569, %606 ]
  %indvars.iv.next1010.1 = add nuw nsw i64 %indvars.iv1009, 2
  %niter1605.next.1 = add i64 %niter1605, 2
  %niter1605.ncmp.1 = icmp eq i64 %niter1605.next.1, %unroll_iter1604
  br i1 %niter1605.ncmp.1, label %._crit_edge788.loopexit.unr-lcssa, label %593, !llvm.loop !59

._crit_edge788.loopexit.unr-lcssa:                ; preds = %619, %.lr.ph787
  %.1571.lcssa.ph = phi i64 [ poison, %.lr.ph787 ], [ %.1571.1, %619 ]
  %.1569.lcssa.ph = phi i64 [ poison, %.lr.ph787 ], [ %.1569.1, %619 ]
  %indvars.iv1009.unr = phi i64 [ 0, %.lr.ph787 ], [ %indvars.iv.next1010.1, %619 ]
  %.0568785.unr = phi i64 [ %586, %.lr.ph787 ], [ %.1569.1, %619 ]
  %.0570784.unr = phi i64 [ %588, %.lr.ph787 ], [ %.1571.1, %619 ]
  %lcmp.mod1601.not = icmp eq i64 %xtraiter1600, 0
  br i1 %lcmp.mod1601.not, label %._crit_edge788, label %.epil.preheader1599

.epil.preheader1599:                              ; preds = %._crit_edge788.loopexit.unr-lcssa
  %620 = getelementptr inbounds i8, ptr %590, i64 %indvars.iv1009.unr
  %621 = load i8, ptr %620, align 1, !tbaa !24
  %622 = icmp eq i8 %621, 2
  br i1 %622, label %623, label %._crit_edge788

623:                                              ; preds = %.epil.preheader1599
  %624 = load ptr, ptr %591, align 8, !tbaa !32
  %625 = getelementptr inbounds i16, ptr %624, i64 %indvars.iv1009.unr
  %626 = load i16, ptr %625, align 2, !tbaa !33
  %627 = zext i16 %626 to i64
  %628 = mul i64 %.0568785.unr, %627
  %629 = lshr i64 %628, 8
  %630 = mul i64 %.0570784.unr, %627
  %631 = lshr i64 %630, 8
  br label %._crit_edge788

._crit_edge788:                                   ; preds = %._crit_edge788.loopexit.unr-lcssa, %623, %.epil.preheader1599, %585
  %.0570.lcssa = phi i64 [ %588, %585 ], [ %.1571.lcssa.ph, %._crit_edge788.loopexit.unr-lcssa ], [ %631, %623 ], [ %.0570784.unr, %.epil.preheader1599 ]
  %.0568.lcssa = phi i64 [ %586, %585 ], [ %.1569.lcssa.ph, %._crit_edge788.loopexit.unr-lcssa ], [ %629, %623 ], [ %.0568785.unr, %.epil.preheader1599 ]
  %632 = getelementptr inbounds i8, ptr %0, i64 1016
  %633 = load ptr, ptr %632, align 8, !tbaa !35
  %634 = getelementptr inbounds i8, ptr %633, i64 4
  %635 = load i16, ptr %634, align 2, !tbaa !33
  %636 = zext i16 %635 to i64
  %637 = mul i64 %.0570.lcssa, %636
  %638 = icmp ugt i64 %637, 144115188075855367
  br i1 %638, label %645, label %639

639:                                              ; preds = %._crit_edge788
  %640 = mul i64 %.0568.lcssa, %636
  %641 = lshr i64 %640, 3
  %642 = shl nuw i64 %637, 7
  %643 = and i64 %642, -1024
  %644 = add i64 %643, %641
  br label %645

645:                                              ; preds = %639, %._crit_edge788, %._crit_edge779
  %.3586 = phi i64 [ %.1584, %._crit_edge779 ], [ %644, %639 ], [ 9223372036854775807, %._crit_edge788 ]
  %646 = icmp ult i64 %.3586, %.2483
  br i1 %646, label %._crit_edge797.sink.split, label %._crit_edge797

._crit_edge797.sink.split:                        ; preds = %.lr.ph796.prol.loopexit, %.lr.ph796, %middle.block1216, %vec.epilog.middle.block1240, %645
  %.sink1087 = phi ptr [ %571, %645 ], [ %474, %vec.epilog.middle.block1240 ], [ %474, %middle.block1216 ], [ %474, %.lr.ph796 ], [ %474, %.lr.ph796.prol.loopexit ]
  %.4485.ph = phi i64 [ %.3586, %645 ], [ %.2483, %vec.epilog.middle.block1240 ], [ %.2483, %middle.block1216 ], [ %.2483, %.lr.ph796 ], [ %.2483, %.lr.ph796.prol.loopexit ]
  %.pre1046 = load ptr, ptr %.sink1087, align 8, !tbaa !52
  br label %._crit_edge797

._crit_edge797:                                   ; preds = %._crit_edge797.sink.split, %645, %504
  %.4485 = phi i64 [ %.2483, %504 ], [ %.2483, %645 ], [ %.4485.ph, %._crit_edge797.sink.split ]
  %.3 = phi ptr [ %.1480, %504 ], [ %.1480, %645 ], [ %.pre1046, %._crit_edge797.sink.split ]
  %647 = icmp eq i8 %4, 64
  br i1 %647, label %648, label %740

648:                                              ; preds = %._crit_edge797
  %649 = getelementptr inbounds i8, ptr %18, i64 1
  %650 = getelementptr inbounds i8, ptr %0, i64 552
  %651 = load ptr, ptr %650, align 8, !tbaa !60
  %652 = ptrtoint ptr %651 to i64
  %.0564839 = getelementptr inbounds i8, ptr %651, i64 1
  %.0562840 = getelementptr inbounds i8, ptr %15, i64 1
  %.not953 = icmp eq i8 %10, 0
  br i1 %.not953, label %.preheader693, label %.lr.ph846.preheader

.lr.ph846.preheader:                              ; preds = %648
  %min.iters.check1309 = icmp ult i8 %10, 121
  br i1 %min.iters.check1309, label %.lr.ph846.preheader1542, label %vector.memcheck1303

.lr.ph846.preheader1542:                          ; preds = %middle.block1307, %vector.memcheck1303, %.lr.ph846.preheader
  %.0562844.ph = phi ptr [ %.0562840, %vector.memcheck1303 ], [ %.0562840, %.lr.ph846.preheader ], [ %ind.end1313, %middle.block1307 ]
  %.0564843.ph = phi ptr [ %.0564839, %vector.memcheck1303 ], [ %.0564839, %.lr.ph846.preheader ], [ %ind.end1315, %middle.block1307 ]
  %.0559842.ph = phi i64 [ 0, %vector.memcheck1303 ], [ 0, %.lr.ph846.preheader ], [ %n.vec1312, %middle.block1307 ]
  %.0566841.ph = phi ptr [ %649, %vector.memcheck1303 ], [ %649, %.lr.ph846.preheader ], [ %ind.end1318, %middle.block1307 ]
  %xtraiter1626 = and i64 %13, 3
  %lcmp.mod1627.not = icmp eq i64 %xtraiter1626, 0
  br i1 %lcmp.mod1627.not, label %.lr.ph846.prol.loopexit, label %.lr.ph846.prol

.lr.ph846.prol:                                   ; preds = %.lr.ph846.preheader1542, %.lr.ph846.prol
  %.0562844.prol = phi ptr [ %.0562.prol, %.lr.ph846.prol ], [ %.0562844.ph, %.lr.ph846.preheader1542 ]
  %.0564843.prol = phi ptr [ %.0564.prol, %.lr.ph846.prol ], [ %.0564843.ph, %.lr.ph846.preheader1542 ]
  %.0559842.prol = phi i64 [ %657, %.lr.ph846.prol ], [ %.0559842.ph, %.lr.ph846.preheader1542 ]
  %.0566841.prol = phi ptr [ %653, %.lr.ph846.prol ], [ %.0566841.ph, %.lr.ph846.preheader1542 ]
  %prol.iter1628 = phi i64 [ %prol.iter1628.next, %.lr.ph846.prol ], [ 0, %.lr.ph846.preheader1542 ]
  %653 = getelementptr inbounds i8, ptr %.0566841.prol, i64 1
  %654 = load i8, ptr %.0566841.prol, align 1, !tbaa !24
  %655 = load i8, ptr %.0562844.prol, align 1, !tbaa !24
  %656 = lshr i8 %655, 1
  %.narrow678.prol = sub i8 %654, %656
  store i8 %.narrow678.prol, ptr %.0564843.prol, align 1, !tbaa !24
  %657 = add nuw nsw i64 %.0559842.prol, 1
  %.0564.prol = getelementptr inbounds i8, ptr %.0564843.prol, i64 1
  %.0562.prol = getelementptr inbounds i8, ptr %.0562844.prol, i64 1
  %prol.iter1628.next = add i64 %prol.iter1628, 1
  %prol.iter1628.cmp.not = icmp eq i64 %prol.iter1628.next, %xtraiter1626
  br i1 %prol.iter1628.cmp.not, label %.lr.ph846.prol.loopexit, label %.lr.ph846.prol, !llvm.loop !61

.lr.ph846.prol.loopexit:                          ; preds = %.lr.ph846.prol, %.lr.ph846.preheader1542
  %.lcssa1545.unr = phi ptr [ poison, %.lr.ph846.preheader1542 ], [ %653, %.lr.ph846.prol ]
  %.0564.lcssa1544.unr = phi ptr [ poison, %.lr.ph846.preheader1542 ], [ %.0564.prol, %.lr.ph846.prol ]
  %.0562.lcssa1543.unr = phi ptr [ poison, %.lr.ph846.preheader1542 ], [ %.0562.prol, %.lr.ph846.prol ]
  %.0562844.unr = phi ptr [ %.0562844.ph, %.lr.ph846.preheader1542 ], [ %.0562.prol, %.lr.ph846.prol ]
  %.0564843.unr = phi ptr [ %.0564843.ph, %.lr.ph846.preheader1542 ], [ %.0564.prol, %.lr.ph846.prol ]
  %.0559842.unr = phi i64 [ %.0559842.ph, %.lr.ph846.preheader1542 ], [ %657, %.lr.ph846.prol ]
  %.0566841.unr = phi ptr [ %.0566841.ph, %.lr.ph846.preheader1542 ], [ %653, %.lr.ph846.prol ]
  %658 = sub nsw i64 %.0559842.ph, %13
  %659 = icmp ugt i64 %658, -4
  br i1 %659, label %.preheader693, label %.lr.ph846

vector.memcheck1303:                              ; preds = %.lr.ph846.preheader
  %660 = sub i64 %652, %19
  %diff.check1304 = icmp ult i64 %660, 16
  %661 = sub i64 %652, %16
  %diff.check1305 = icmp ult i64 %661, 16
  %conflict.rdx1306 = or i1 %diff.check1304, %diff.check1305
  br i1 %conflict.rdx1306, label %.lr.ph846.preheader1542, label %vector.ph1310

vector.ph1310:                                    ; preds = %vector.memcheck1303
  %n.vec1312 = and i64 %13, 48
  %ind.end1313 = getelementptr i8, ptr %.0562840, i64 %n.vec1312
  %ind.end1315 = getelementptr i8, ptr %.0564839, i64 %n.vec1312
  %ind.end1318 = getelementptr i8, ptr %649, i64 %n.vec1312
  %wide.load1325 = load <16 x i8>, ptr %649, align 1, !tbaa !24
  %wide.load1326 = load <16 x i8>, ptr %.0562840, align 1, !tbaa !24
  %662 = lshr <16 x i8> %wide.load1326, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
  %663 = sub <16 x i8> %wide.load1325, %662
  store <16 x i8> %663, ptr %.0564839, align 1, !tbaa !24
  %664 = icmp eq i64 %n.vec1312, 16
  br i1 %664, label %middle.block1307, label %vector.body1320.1, !llvm.loop !62

vector.body1320.1:                                ; preds = %vector.ph1310
  %next.gep1322.1 = getelementptr i8, ptr %15, i64 17
  %next.gep1323.1 = getelementptr i8, ptr %651, i64 17
  %next.gep1324.1 = getelementptr i8, ptr %18, i64 17
  %wide.load1325.1 = load <16 x i8>, ptr %next.gep1324.1, align 1, !tbaa !24
  %wide.load1326.1 = load <16 x i8>, ptr %next.gep1322.1, align 1, !tbaa !24
  %665 = lshr <16 x i8> %wide.load1326.1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
  %666 = sub <16 x i8> %wide.load1325.1, %665
  store <16 x i8> %666, ptr %next.gep1323.1, align 1, !tbaa !24
  br label %middle.block1307

middle.block1307:                                 ; preds = %vector.body1320.1, %vector.ph1310
  %cmp.n1328 = icmp eq i64 %13, %n.vec1312
  br i1 %cmp.n1328, label %.preheader693, label %.lr.ph846.preheader1542

.preheader693:                                    ; preds = %.lr.ph846.prol.loopexit, %.lr.ph846, %middle.block1307, %648
  %.0566.lcssa = phi ptr [ %649, %648 ], [ %ind.end1318, %middle.block1307 ], [ %.lcssa1545.unr, %.lr.ph846.prol.loopexit ], [ %712, %.lr.ph846 ]
  %.0559.lcssa = phi i64 [ 0, %648 ], [ %13, %middle.block1307 ], [ %13, %.lr.ph846 ], [ %13, %.lr.ph846.prol.loopexit ]
  %.0564.lcssa = phi ptr [ %.0564839, %648 ], [ %ind.end1315, %middle.block1307 ], [ %.0564.lcssa1544.unr, %.lr.ph846.prol.loopexit ], [ %.0564.3, %.lr.ph846 ]
  %.0562.lcssa = phi ptr [ %.0562840, %648 ], [ %ind.end1313, %middle.block1307 ], [ %.0562.lcssa1543.unr, %.lr.ph846.prol.loopexit ], [ %.0562.3, %.lr.ph846 ]
  %.0564.lcssa1330 = ptrtoint ptr %.0564.lcssa to i64
  %.0566.lcssa1332 = ptrtoint ptr %.0566.lcssa to i64
  %.0562.lcssa1335 = ptrtoint ptr %.0562.lcssa to i64
  %667 = icmp ult i64 %.0559.lcssa, %6
  br i1 %667, label %iter.check1342, label %.sink.split1088

iter.check1342:                                   ; preds = %.preheader693
  %668 = sub i64 %6, %.0559.lcssa
  %min.iters.check1340 = icmp ult i64 %668, 8
  br i1 %min.iters.check1340, label %.lr.ph856.preheader, label %vector.memcheck1329

vector.memcheck1329:                              ; preds = %iter.check1342
  %669 = sub i64 %19, %.0564.lcssa1330
  %diff.check1331 = icmp ugt i64 %669, -17
  %670 = sub i64 %.0564.lcssa1330, %.0566.lcssa1332
  %diff.check1333 = icmp ult i64 %670, 16
  %conflict.rdx1334 = or i1 %diff.check1331, %diff.check1333
  %671 = sub i64 %.0564.lcssa1330, %.0562.lcssa1335
  %diff.check1336 = icmp ult i64 %671, 16
  %conflict.rdx1337 = or i1 %conflict.rdx1334, %diff.check1336
  br i1 %conflict.rdx1337, label %.lr.ph856.preheader, label %vector.main.loop.iter.check1344

vector.main.loop.iter.check1344:                  ; preds = %vector.memcheck1329
  %min.iters.check1343 = icmp ult i64 %668, 16
  br i1 %min.iters.check1343, label %vec.epilog.ph1361, label %vector.ph1345

vector.ph1345:                                    ; preds = %vector.main.loop.iter.check1344
  %n.vec1347 = and i64 %668, -16
  br label %vector.body1348

vector.body1348:                                  ; preds = %vector.body1348, %vector.ph1345
  %index1349 = phi i64 [ 0, %vector.ph1345 ], [ %index.next1357, %vector.body1348 ]
  %next.gep1350 = getelementptr i8, ptr %649, i64 %index1349
  %next.gep1351 = getelementptr i8, ptr %.0562.lcssa, i64 %index1349
  %next.gep1352 = getelementptr i8, ptr %.0564.lcssa, i64 %index1349
  %next.gep1353 = getelementptr i8, ptr %.0566.lcssa, i64 %index1349
  %wide.load1354 = load <16 x i8>, ptr %next.gep1353, align 1, !tbaa !24
  %wide.load1355 = load <16 x i8>, ptr %next.gep1351, align 1, !tbaa !24
  %672 = zext <16 x i8> %wide.load1355 to <16 x i16>
  %wide.load1356 = load <16 x i8>, ptr %next.gep1350, align 1, !tbaa !24
  %673 = zext <16 x i8> %wide.load1356 to <16 x i16>
  %674 = add nuw nsw <16 x i16> %673, %672
  %675 = lshr <16 x i16> %674, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
  %676 = trunc nuw <16 x i16> %675 to <16 x i8>
  %677 = sub <16 x i8> %wide.load1354, %676
  store <16 x i8> %677, ptr %next.gep1352, align 1, !tbaa !24
  %index.next1357 = add nuw i64 %index1349, 16
  %678 = icmp eq i64 %index.next1357, %n.vec1347
  br i1 %678, label %middle.block1338, label %vector.body1348, !llvm.loop !63

middle.block1338:                                 ; preds = %vector.body1348
  %cmp.n1358 = icmp eq i64 %668, %n.vec1347
  br i1 %cmp.n1358, label %.sink.split1088, label %vec.epilog.iter.check1362

vec.epilog.iter.check1362:                        ; preds = %middle.block1338
  %ind.end1381 = getelementptr i8, ptr %.0566.lcssa, i64 %n.vec1347
  %ind.end1378 = getelementptr i8, ptr %.0564.lcssa, i64 %n.vec1347
  %ind.end1375 = getelementptr i8, ptr %.0562.lcssa, i64 %n.vec1347
  %ind.end1372 = getelementptr i8, ptr %649, i64 %n.vec1347
  %ind.end1369 = add i64 %.0559.lcssa, %n.vec1347
  %n.vec.remaining1363 = and i64 %668, 8
  %min.epilog.iters.check1364.not.not = icmp eq i64 %n.vec.remaining1363, 0
  br i1 %min.epilog.iters.check1364.not.not, label %.lr.ph856.preheader, label %vec.epilog.ph1361

.lr.ph856.preheader:                              ; preds = %vec.epilog.middle.block1359, %vector.memcheck1329, %iter.check1342, %vec.epilog.iter.check1362
  %.1560855.ph = phi i64 [ %.0559.lcssa, %iter.check1342 ], [ %.0559.lcssa, %vector.memcheck1329 ], [ %ind.end1369, %vec.epilog.iter.check1362 ], [ %ind.end1368, %vec.epilog.middle.block1359 ]
  %.0561854.ph = phi ptr [ %649, %iter.check1342 ], [ %649, %vector.memcheck1329 ], [ %ind.end1372, %vec.epilog.iter.check1362 ], [ %ind.end1371, %vec.epilog.middle.block1359 ]
  %.1563853.ph = phi ptr [ %.0562.lcssa, %iter.check1342 ], [ %.0562.lcssa, %vector.memcheck1329 ], [ %ind.end1375, %vec.epilog.iter.check1362 ], [ %ind.end1374, %vec.epilog.middle.block1359 ]
  %.1565852.ph = phi ptr [ %.0564.lcssa, %iter.check1342 ], [ %.0564.lcssa, %vector.memcheck1329 ], [ %ind.end1378, %vec.epilog.iter.check1362 ], [ %ind.end1377, %vec.epilog.middle.block1359 ]
  %.1567851.ph = phi ptr [ %.0566.lcssa, %iter.check1342 ], [ %.0566.lcssa, %vector.memcheck1329 ], [ %ind.end1381, %vec.epilog.iter.check1362 ], [ %ind.end1380, %vec.epilog.middle.block1359 ]
  %679 = sub i64 %6, %.1560855.ph
  %.neg1677 = add i64 %.1560855.ph, 1
  %xtraiter1629 = and i64 %679, 1
  %lcmp.mod1630.not = icmp eq i64 %xtraiter1629, 0
  br i1 %lcmp.mod1630.not, label %.lr.ph856.prol.loopexit, label %.lr.ph856.prol

.lr.ph856.prol:                                   ; preds = %.lr.ph856.preheader
  %680 = getelementptr inbounds i8, ptr %.1567851.ph, i64 1
  %681 = load i8, ptr %.1567851.ph, align 1, !tbaa !24
  %682 = getelementptr inbounds i8, ptr %.1563853.ph, i64 1
  %683 = load i8, ptr %.1563853.ph, align 1, !tbaa !24
  %684 = zext i8 %683 to i16
  %685 = getelementptr inbounds i8, ptr %.0561854.ph, i64 1
  %686 = load i8, ptr %.0561854.ph, align 1, !tbaa !24
  %687 = zext i8 %686 to i16
  %688 = add nuw nsw i16 %687, %684
  %689 = lshr i16 %688, 1
  %.tr674.prol = trunc nuw i16 %689 to i8
  %.narrow675.prol = sub i8 %681, %.tr674.prol
  %690 = getelementptr inbounds i8, ptr %.1565852.ph, i64 1
  store i8 %.narrow675.prol, ptr %.1565852.ph, align 1, !tbaa !24
  %691 = add nuw i64 %.1560855.ph, 1
  br label %.lr.ph856.prol.loopexit

.lr.ph856.prol.loopexit:                          ; preds = %.lr.ph856.prol, %.lr.ph856.preheader
  %.1560855.unr = phi i64 [ %.1560855.ph, %.lr.ph856.preheader ], [ %691, %.lr.ph856.prol ]
  %.0561854.unr = phi ptr [ %.0561854.ph, %.lr.ph856.preheader ], [ %685, %.lr.ph856.prol ]
  %.1563853.unr = phi ptr [ %.1563853.ph, %.lr.ph856.preheader ], [ %682, %.lr.ph856.prol ]
  %.1565852.unr = phi ptr [ %.1565852.ph, %.lr.ph856.preheader ], [ %690, %.lr.ph856.prol ]
  %.1567851.unr = phi ptr [ %.1567851.ph, %.lr.ph856.preheader ], [ %680, %.lr.ph856.prol ]
  %692 = icmp eq i64 %6, %.neg1677
  br i1 %692, label %.sink.split1088, label %.lr.ph856

vec.epilog.ph1361:                                ; preds = %vector.main.loop.iter.check1344, %vec.epilog.iter.check1362
  %vec.epilog.resume.val1365 = phi i64 [ %n.vec1347, %vec.epilog.iter.check1362 ], [ 0, %vector.main.loop.iter.check1344 ]
  %n.vec1367 = and i64 %668, -8
  %ind.end1368 = add i64 %.0559.lcssa, %n.vec1367
  %ind.end1371 = getelementptr i8, ptr %649, i64 %n.vec1367
  %ind.end1374 = getelementptr i8, ptr %.0562.lcssa, i64 %n.vec1367
  %ind.end1377 = getelementptr i8, ptr %.0564.lcssa, i64 %n.vec1367
  %ind.end1380 = getelementptr i8, ptr %.0566.lcssa, i64 %n.vec1367
  br label %vec.epilog.vector.body1383

vec.epilog.vector.body1383:                       ; preds = %vec.epilog.vector.body1383, %vec.epilog.ph1361
  %index1384 = phi i64 [ %vec.epilog.resume.val1365, %vec.epilog.ph1361 ], [ %index.next1392, %vec.epilog.vector.body1383 ]
  %next.gep1385 = getelementptr i8, ptr %649, i64 %index1384
  %next.gep1386 = getelementptr i8, ptr %.0562.lcssa, i64 %index1384
  %next.gep1387 = getelementptr i8, ptr %.0564.lcssa, i64 %index1384
  %next.gep1388 = getelementptr i8, ptr %.0566.lcssa, i64 %index1384
  %wide.load1389 = load <8 x i8>, ptr %next.gep1388, align 1, !tbaa !24
  %wide.load1390 = load <8 x i8>, ptr %next.gep1386, align 1, !tbaa !24
  %693 = zext <8 x i8> %wide.load1390 to <8 x i16>
  %wide.load1391 = load <8 x i8>, ptr %next.gep1385, align 1, !tbaa !24
  %694 = zext <8 x i8> %wide.load1391 to <8 x i16>
  %695 = add nuw nsw <8 x i16> %694, %693
  %696 = lshr <8 x i16> %695, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
  %697 = trunc nuw <8 x i16> %696 to <8 x i8>
  %698 = sub <8 x i8> %wide.load1389, %697
  store <8 x i8> %698, ptr %next.gep1387, align 1, !tbaa !24
  %index.next1392 = add nuw i64 %index1384, 8
  %699 = icmp eq i64 %index.next1392, %n.vec1367
  br i1 %699, label %vec.epilog.middle.block1359, label %vec.epilog.vector.body1383, !llvm.loop !64

vec.epilog.middle.block1359:                      ; preds = %vec.epilog.vector.body1383
  %cmp.n1393 = icmp eq i64 %668, %n.vec1367
  br i1 %cmp.n1393, label %.sink.split1088, label %.lr.ph856.preheader

.lr.ph846:                                        ; preds = %.lr.ph846.prol.loopexit, %.lr.ph846
  %.0562844 = phi ptr [ %.0562.3, %.lr.ph846 ], [ %.0562844.unr, %.lr.ph846.prol.loopexit ]
  %.0564843 = phi ptr [ %.0564.3, %.lr.ph846 ], [ %.0564843.unr, %.lr.ph846.prol.loopexit ]
  %.0559842 = phi i64 [ %716, %.lr.ph846 ], [ %.0559842.unr, %.lr.ph846.prol.loopexit ]
  %.0566841 = phi ptr [ %712, %.lr.ph846 ], [ %.0566841.unr, %.lr.ph846.prol.loopexit ]
  %700 = getelementptr inbounds i8, ptr %.0566841, i64 1
  %701 = load i8, ptr %.0566841, align 1, !tbaa !24
  %702 = load i8, ptr %.0562844, align 1, !tbaa !24
  %703 = lshr i8 %702, 1
  %.narrow678 = sub i8 %701, %703
  store i8 %.narrow678, ptr %.0564843, align 1, !tbaa !24
  %.0564 = getelementptr inbounds i8, ptr %.0564843, i64 1
  %.0562 = getelementptr inbounds i8, ptr %.0562844, i64 1
  %704 = getelementptr inbounds i8, ptr %.0566841, i64 2
  %705 = load i8, ptr %700, align 1, !tbaa !24
  %706 = load i8, ptr %.0562, align 1, !tbaa !24
  %707 = lshr i8 %706, 1
  %.narrow678.1 = sub i8 %705, %707
  store i8 %.narrow678.1, ptr %.0564, align 1, !tbaa !24
  %.0564.1 = getelementptr inbounds i8, ptr %.0564843, i64 2
  %.0562.1 = getelementptr inbounds i8, ptr %.0562844, i64 2
  %708 = getelementptr inbounds i8, ptr %.0566841, i64 3
  %709 = load i8, ptr %704, align 1, !tbaa !24
  %710 = load i8, ptr %.0562.1, align 1, !tbaa !24
  %711 = lshr i8 %710, 1
  %.narrow678.2 = sub i8 %709, %711
  store i8 %.narrow678.2, ptr %.0564.1, align 1, !tbaa !24
  %.0564.2 = getelementptr inbounds i8, ptr %.0564843, i64 3
  %.0562.2 = getelementptr inbounds i8, ptr %.0562844, i64 3
  %712 = getelementptr inbounds i8, ptr %.0566841, i64 4
  %713 = load i8, ptr %708, align 1, !tbaa !24
  %714 = load i8, ptr %.0562.2, align 1, !tbaa !24
  %715 = lshr i8 %714, 1
  %.narrow678.3 = sub i8 %713, %715
  store i8 %.narrow678.3, ptr %.0564.2, align 1, !tbaa !24
  %716 = add nuw nsw i64 %.0559842, 4
  %.0564.3 = getelementptr inbounds i8, ptr %.0564843, i64 4
  %.0562.3 = getelementptr inbounds i8, ptr %.0562844, i64 4
  %exitcond1026.not.3 = icmp eq i64 %716, %13
  br i1 %exitcond1026.not.3, label %.preheader693, label %.lr.ph846, !llvm.loop !65

.lr.ph856:                                        ; preds = %.lr.ph856.prol.loopexit, %.lr.ph856
  %.1560855 = phi i64 [ %739, %.lr.ph856 ], [ %.1560855.unr, %.lr.ph856.prol.loopexit ]
  %.0561854 = phi ptr [ %733, %.lr.ph856 ], [ %.0561854.unr, %.lr.ph856.prol.loopexit ]
  %.1563853 = phi ptr [ %730, %.lr.ph856 ], [ %.1563853.unr, %.lr.ph856.prol.loopexit ]
  %.1565852 = phi ptr [ %738, %.lr.ph856 ], [ %.1565852.unr, %.lr.ph856.prol.loopexit ]
  %.1567851 = phi ptr [ %728, %.lr.ph856 ], [ %.1567851.unr, %.lr.ph856.prol.loopexit ]
  %717 = getelementptr inbounds i8, ptr %.1567851, i64 1
  %718 = load i8, ptr %.1567851, align 1, !tbaa !24
  %719 = getelementptr inbounds i8, ptr %.1563853, i64 1
  %720 = load i8, ptr %.1563853, align 1, !tbaa !24
  %721 = zext i8 %720 to i16
  %722 = getelementptr inbounds i8, ptr %.0561854, i64 1
  %723 = load i8, ptr %.0561854, align 1, !tbaa !24
  %724 = zext i8 %723 to i16
  %725 = add nuw nsw i16 %724, %721
  %726 = lshr i16 %725, 1
  %.tr674 = trunc nuw i16 %726 to i8
  %.narrow675 = sub i8 %718, %.tr674
  %727 = getelementptr inbounds i8, ptr %.1565852, i64 1
  store i8 %.narrow675, ptr %.1565852, align 1, !tbaa !24
  %728 = getelementptr inbounds i8, ptr %.1567851, i64 2
  %729 = load i8, ptr %717, align 1, !tbaa !24
  %730 = getelementptr inbounds i8, ptr %.1563853, i64 2
  %731 = load i8, ptr %719, align 1, !tbaa !24
  %732 = zext i8 %731 to i16
  %733 = getelementptr inbounds i8, ptr %.0561854, i64 2
  %734 = load i8, ptr %722, align 1, !tbaa !24
  %735 = zext i8 %734 to i16
  %736 = add nuw nsw i16 %735, %732
  %737 = lshr i16 %736, 1
  %.tr674.1 = trunc nuw i16 %737 to i8
  %.narrow675.1 = sub i8 %729, %.tr674.1
  %738 = getelementptr inbounds i8, ptr %.1565852, i64 2
  store i8 %.narrow675.1, ptr %727, align 1, !tbaa !24
  %739 = add nuw i64 %.1560855, 2
  %exitcond1027.not.1 = icmp eq i64 %739, %6
  br i1 %exitcond1027.not.1, label %.sink.split1088, label %.lr.ph856, !llvm.loop !66

740:                                              ; preds = %._crit_edge797
  %741 = and i32 %20, 64
  %.not650 = icmp eq i32 %741, 0
  br i1 %.not650, label %1081, label %742

742:                                              ; preds = %740
  %743 = getelementptr inbounds i8, ptr %0, i64 984
  %744 = load i8, ptr %743, align 8, !tbaa !30
  %745 = icmp eq i8 %744, 2
  br i1 %745, label %746, label %806

746:                                              ; preds = %742
  %747 = and i64 %.4485, 65535
  %748 = lshr i64 %.4485, 10
  %749 = and i64 %748, 18014398509481920
  %.not950 = icmp eq i8 %8, 0
  br i1 %.not950, label %._crit_edge803, label %.lr.ph802

.lr.ph802:                                        ; preds = %746
  %750 = getelementptr inbounds i8, ptr %0, i64 992
  %751 = load ptr, ptr %750, align 8, !tbaa !31
  %752 = getelementptr inbounds i8, ptr %0, i64 1008
  %wide.trip.count1018 = zext i8 %8 to i64
  %xtraiter1610 = and i64 %wide.trip.count1018, 1
  %753 = icmp eq i8 %8, 1
  br i1 %753, label %._crit_edge803.loopexit.unr-lcssa, label %.lr.ph802.new

.lr.ph802.new:                                    ; preds = %.lr.ph802
  %unroll_iter1614 = and i64 %wide.trip.count1018, 254
  br label %754

754:                                              ; preds = %780, %.lr.ph802.new
  %indvars.iv1015 = phi i64 [ 0, %.lr.ph802.new ], [ %indvars.iv.next1016.1, %780 ]
  %.0538800 = phi i64 [ %747, %.lr.ph802.new ], [ %.1539.1, %780 ]
  %.0540799 = phi i64 [ %749, %.lr.ph802.new ], [ %.1541.1, %780 ]
  %niter1615 = phi i64 [ 0, %.lr.ph802.new ], [ %niter1615.next.1, %780 ]
  %755 = getelementptr inbounds i8, ptr %751, i64 %indvars.iv1015
  %756 = load i8, ptr %755, align 1, !tbaa !24
  %757 = icmp eq i8 %756, 3
  br i1 %757, label %758, label %767

758:                                              ; preds = %754
  %759 = load ptr, ptr %752, align 8, !tbaa !45
  %760 = getelementptr inbounds i16, ptr %759, i64 %indvars.iv1015
  %761 = load i16, ptr %760, align 2, !tbaa !33
  %762 = zext i16 %761 to i64
  %763 = mul i64 %.0538800, %762
  %764 = lshr i64 %763, 8
  %765 = mul i64 %.0540799, %762
  %766 = lshr i64 %765, 8
  br label %767

767:                                              ; preds = %754, %758
  %.1541 = phi i64 [ %766, %758 ], [ %.0540799, %754 ]
  %.1539 = phi i64 [ %764, %758 ], [ %.0538800, %754 ]
  %indvars.iv.next1016 = or disjoint i64 %indvars.iv1015, 1
  %768 = getelementptr inbounds i8, ptr %751, i64 %indvars.iv.next1016
  %769 = load i8, ptr %768, align 1, !tbaa !24
  %770 = icmp eq i8 %769, 3
  br i1 %770, label %771, label %780

771:                                              ; preds = %767
  %772 = load ptr, ptr %752, align 8, !tbaa !45
  %773 = getelementptr inbounds i16, ptr %772, i64 %indvars.iv.next1016
  %774 = load i16, ptr %773, align 2, !tbaa !33
  %775 = zext i16 %774 to i64
  %776 = mul i64 %.1539, %775
  %777 = lshr i64 %776, 8
  %778 = mul i64 %.1541, %775
  %779 = lshr i64 %778, 8
  br label %780

780:                                              ; preds = %771, %767
  %.1541.1 = phi i64 [ %779, %771 ], [ %.1541, %767 ]
  %.1539.1 = phi i64 [ %777, %771 ], [ %.1539, %767 ]
  %indvars.iv.next1016.1 = add nuw nsw i64 %indvars.iv1015, 2
  %niter1615.next.1 = add i64 %niter1615, 2
  %niter1615.ncmp.1 = icmp eq i64 %niter1615.next.1, %unroll_iter1614
  br i1 %niter1615.ncmp.1, label %._crit_edge803.loopexit.unr-lcssa, label %754, !llvm.loop !67

._crit_edge803.loopexit.unr-lcssa:                ; preds = %780, %.lr.ph802
  %.1541.lcssa.ph = phi i64 [ poison, %.lr.ph802 ], [ %.1541.1, %780 ]
  %.1539.lcssa.ph = phi i64 [ poison, %.lr.ph802 ], [ %.1539.1, %780 ]
  %indvars.iv1015.unr = phi i64 [ 0, %.lr.ph802 ], [ %indvars.iv.next1016.1, %780 ]
  %.0538800.unr = phi i64 [ %747, %.lr.ph802 ], [ %.1539.1, %780 ]
  %.0540799.unr = phi i64 [ %749, %.lr.ph802 ], [ %.1541.1, %780 ]
  %lcmp.mod1611.not = icmp eq i64 %xtraiter1610, 0
  br i1 %lcmp.mod1611.not, label %._crit_edge803, label %.epil.preheader1609

.epil.preheader1609:                              ; preds = %._crit_edge803.loopexit.unr-lcssa
  %781 = getelementptr inbounds i8, ptr %751, i64 %indvars.iv1015.unr
  %782 = load i8, ptr %781, align 1, !tbaa !24
  %783 = icmp eq i8 %782, 3
  br i1 %783, label %784, label %._crit_edge803

784:                                              ; preds = %.epil.preheader1609
  %785 = load ptr, ptr %752, align 8, !tbaa !45
  %786 = getelementptr inbounds i16, ptr %785, i64 %indvars.iv1015.unr
  %787 = load i16, ptr %786, align 2, !tbaa !33
  %788 = zext i16 %787 to i64
  %789 = mul i64 %.0538800.unr, %788
  %790 = lshr i64 %789, 8
  %791 = mul i64 %.0540799.unr, %788
  %792 = lshr i64 %791, 8
  br label %._crit_edge803

._crit_edge803:                                   ; preds = %._crit_edge803.loopexit.unr-lcssa, %784, %.epil.preheader1609, %746
  %.0540.lcssa = phi i64 [ %749, %746 ], [ %.1541.lcssa.ph, %._crit_edge803.loopexit.unr-lcssa ], [ %792, %784 ], [ %.0540799.unr, %.epil.preheader1609 ]
  %.0538.lcssa = phi i64 [ %747, %746 ], [ %.1539.lcssa.ph, %._crit_edge803.loopexit.unr-lcssa ], [ %790, %784 ], [ %.0538800.unr, %.epil.preheader1609 ]
  %793 = getelementptr inbounds i8, ptr %0, i64 1024
  %794 = load ptr, ptr %793, align 8, !tbaa !47
  %795 = getelementptr inbounds i8, ptr %794, i64 6
  %796 = load i16, ptr %795, align 2, !tbaa !33
  %797 = zext i16 %796 to i64
  %798 = mul i64 %.0540.lcssa, %797
  %799 = icmp ugt i64 %798, 144115188075855367
  br i1 %799, label %806, label %800

800:                                              ; preds = %._crit_edge803
  %801 = mul i64 %.0538.lcssa, %797
  %802 = lshr i64 %801, 3
  %803 = shl nuw i64 %798, 7
  %804 = and i64 %803, -1024
  %805 = add i64 %804, %802
  br label %806

806:                                              ; preds = %800, %._crit_edge803, %742
  %.1546 = phi i64 [ %.4485, %742 ], [ %805, %800 ], [ 9223372036854775807, %._crit_edge803 ]
  %807 = getelementptr inbounds i8, ptr %18, i64 1
  %808 = getelementptr inbounds i8, ptr %0, i64 552
  %809 = load ptr, ptr %808, align 8, !tbaa !60
  %810 = ptrtoint ptr %809 to i64
  %.0555806 = getelementptr inbounds i8, ptr %809, i64 1
  %.0553807 = getelementptr inbounds i8, ptr %15, i64 1
  %.not951 = icmp eq i8 %10, 0
  br i1 %.not951, label %.preheader694, label %.lr.ph814.preheader

.lr.ph814.preheader:                              ; preds = %806
  %min.iters.check1274 = icmp ult i8 %10, 41
  br i1 %min.iters.check1274, label %.lr.ph814.preheader1547, label %vector.memcheck1268

.lr.ph814.preheader1547:                          ; preds = %middle.block1272, %vector.memcheck1268, %.lr.ph814.preheader
  %.0553812.ph = phi ptr [ %.0553807, %vector.memcheck1268 ], [ %.0553807, %.lr.ph814.preheader ], [ %ind.end1278, %middle.block1272 ]
  %.0555811.ph = phi ptr [ %.0555806, %vector.memcheck1268 ], [ %.0555806, %.lr.ph814.preheader ], [ %ind.end1280, %middle.block1272 ]
  %.0543810.ph = phi i64 [ 0, %vector.memcheck1268 ], [ 0, %.lr.ph814.preheader ], [ %n.vec1277, %middle.block1272 ]
  %.0547809.ph = phi i64 [ 0, %vector.memcheck1268 ], [ 0, %.lr.ph814.preheader ], [ %973, %middle.block1272 ]
  %.0557808.ph = phi ptr [ %807, %vector.memcheck1268 ], [ %807, %.lr.ph814.preheader ], [ %ind.end1283, %middle.block1272 ]
  %.neg1676 = or disjoint i64 %.0543810.ph, 1
  %811 = and i64 %12, 8
  %lcmp.mod1617.not = icmp eq i64 %811, 0
  br i1 %lcmp.mod1617.not, label %.lr.ph814.prol.loopexit, label %.lr.ph814.prol

.lr.ph814.prol:                                   ; preds = %.lr.ph814.preheader1547
  %812 = getelementptr inbounds i8, ptr %.0557808.ph, i64 1
  %813 = load i8, ptr %.0557808.ph, align 1, !tbaa !24
  %814 = load i8, ptr %.0553812.ph, align 1, !tbaa !24
  %815 = lshr i8 %814, 1
  %.narrow654.prol = sub i8 %813, %815
  store i8 %.narrow654.prol, ptr %.0555811.ph, align 1, !tbaa !24
  %816 = zext i8 %.narrow654.prol to i32
  %817 = sub nuw nsw i32 256, %816
  %818 = icmp slt i8 %.narrow654.prol, 0
  %819 = select i1 %818, i32 %817, i32 %816
  %820 = zext nneg i32 %819 to i64
  %821 = add i64 %.0547809.ph, %820
  %822 = or disjoint i64 %.0543810.ph, 1
  %.0555.prol = getelementptr inbounds i8, ptr %.0555811.ph, i64 1
  %.0553.prol = getelementptr inbounds i8, ptr %.0553812.ph, i64 1
  br label %.lr.ph814.prol.loopexit

.lr.ph814.prol.loopexit:                          ; preds = %.lr.ph814.prol, %.lr.ph814.preheader1547
  %.lcssa1551.unr = phi ptr [ poison, %.lr.ph814.preheader1547 ], [ %812, %.lr.ph814.prol ]
  %.lcssa1550.unr = phi i64 [ poison, %.lr.ph814.preheader1547 ], [ %821, %.lr.ph814.prol ]
  %.0555.lcssa1549.unr = phi ptr [ poison, %.lr.ph814.preheader1547 ], [ %.0555.prol, %.lr.ph814.prol ]
  %.0553.lcssa1548.unr = phi ptr [ poison, %.lr.ph814.preheader1547 ], [ %.0553.prol, %.lr.ph814.prol ]
  %.0553812.unr = phi ptr [ %.0553812.ph, %.lr.ph814.preheader1547 ], [ %.0553.prol, %.lr.ph814.prol ]
  %.0555811.unr = phi ptr [ %.0555811.ph, %.lr.ph814.preheader1547 ], [ %.0555.prol, %.lr.ph814.prol ]
  %.0543810.unr = phi i64 [ %.0543810.ph, %.lr.ph814.preheader1547 ], [ %822, %.lr.ph814.prol ]
  %.0547809.unr = phi i64 [ %.0547809.ph, %.lr.ph814.preheader1547 ], [ %821, %.lr.ph814.prol ]
  %.0557808.unr = phi ptr [ %.0557808.ph, %.lr.ph814.preheader1547 ], [ %812, %.lr.ph814.prol ]
  %823 = icmp eq i64 %13, %.neg1676
  br i1 %823, label %.preheader694, label %.lr.ph814

vector.memcheck1268:                              ; preds = %.lr.ph814.preheader
  %824 = sub i64 %810, %19
  %diff.check1269 = icmp ult i64 %824, 4
  %825 = sub i64 %810, %16
  %diff.check1270 = icmp ult i64 %825, 4
  %conflict.rdx1271 = or i1 %diff.check1269, %diff.check1270
  br i1 %conflict.rdx1271, label %.lr.ph814.preheader1547, label %vector.ph1275

vector.ph1275:                                    ; preds = %vector.memcheck1268
  %n.vec1277 = and i64 %13, 60
  %ind.end1278 = getelementptr i8, ptr %.0553807, i64 %n.vec1277
  %ind.end1280 = getelementptr i8, ptr %.0555806, i64 %n.vec1277
  %ind.end1283 = getelementptr i8, ptr %807, i64 %n.vec1277
  %826 = getelementptr i8, ptr %18, i64 3
  %wide.load1295 = load <2 x i8>, ptr %807, align 1, !tbaa !24
  %wide.load1296 = load <2 x i8>, ptr %826, align 1, !tbaa !24
  %827 = getelementptr i8, ptr %15, i64 3
  %wide.load1297 = load <2 x i8>, ptr %.0553807, align 1, !tbaa !24
  %wide.load1298 = load <2 x i8>, ptr %827, align 1, !tbaa !24
  %828 = lshr <2 x i8> %wide.load1297, <i8 1, i8 1>
  %829 = lshr <2 x i8> %wide.load1298, <i8 1, i8 1>
  %830 = sub <2 x i8> %wide.load1295, %828
  %831 = sub <2 x i8> %wide.load1296, %829
  %832 = getelementptr i8, ptr %809, i64 3
  store <2 x i8> %830, ptr %.0555806, align 1, !tbaa !24
  store <2 x i8> %831, ptr %832, align 1, !tbaa !24
  %833 = zext <2 x i8> %830 to <2 x i32>
  %834 = zext <2 x i8> %831 to <2 x i32>
  %835 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %833
  %836 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %834
  %837 = icmp slt <2 x i8> %830, zeroinitializer
  %838 = icmp slt <2 x i8> %831, zeroinitializer
  %839 = select <2 x i1> %837, <2 x i32> %835, <2 x i32> %833
  %840 = select <2 x i1> %838, <2 x i32> %836, <2 x i32> %834
  %841 = zext nneg <2 x i32> %839 to <2 x i64>
  %842 = zext nneg <2 x i32> %840 to <2 x i64>
  %843 = icmp eq i64 %n.vec1277, 4
  br i1 %843, label %middle.block1272, label %vector.body1285.1, !llvm.loop !68

vector.body1285.1:                                ; preds = %vector.ph1275
  %next.gep1289.1 = getelementptr i8, ptr %15, i64 5
  %next.gep1291.1 = getelementptr i8, ptr %809, i64 5
  %next.gep1293.1 = getelementptr i8, ptr %18, i64 5
  %844 = getelementptr i8, ptr %18, i64 7
  %wide.load1295.1 = load <2 x i8>, ptr %next.gep1293.1, align 1, !tbaa !24
  %wide.load1296.1 = load <2 x i8>, ptr %844, align 1, !tbaa !24
  %845 = getelementptr i8, ptr %15, i64 7
  %wide.load1297.1 = load <2 x i8>, ptr %next.gep1289.1, align 1, !tbaa !24
  %wide.load1298.1 = load <2 x i8>, ptr %845, align 1, !tbaa !24
  %846 = lshr <2 x i8> %wide.load1297.1, <i8 1, i8 1>
  %847 = lshr <2 x i8> %wide.load1298.1, <i8 1, i8 1>
  %848 = sub <2 x i8> %wide.load1295.1, %846
  %849 = sub <2 x i8> %wide.load1296.1, %847
  %850 = getelementptr i8, ptr %809, i64 7
  store <2 x i8> %848, ptr %next.gep1291.1, align 1, !tbaa !24
  store <2 x i8> %849, ptr %850, align 1, !tbaa !24
  %851 = zext <2 x i8> %848 to <2 x i32>
  %852 = zext <2 x i8> %849 to <2 x i32>
  %853 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %851
  %854 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %852
  %855 = icmp slt <2 x i8> %848, zeroinitializer
  %856 = icmp slt <2 x i8> %849, zeroinitializer
  %857 = select <2 x i1> %855, <2 x i32> %853, <2 x i32> %851
  %858 = select <2 x i1> %856, <2 x i32> %854, <2 x i32> %852
  %narrow1666 = add nuw nsw <2 x i32> %839, %857
  %859 = zext nneg <2 x i32> %narrow1666 to <2 x i64>
  %narrow1667 = add nuw nsw <2 x i32> %840, %858
  %860 = zext nneg <2 x i32> %narrow1667 to <2 x i64>
  %861 = icmp eq i64 %n.vec1277, 8
  br i1 %861, label %middle.block1272, label %vector.body1285.2, !llvm.loop !68

vector.body1285.2:                                ; preds = %vector.body1285.1
  %next.gep1289.2 = getelementptr i8, ptr %15, i64 9
  %next.gep1291.2 = getelementptr i8, ptr %809, i64 9
  %next.gep1293.2 = getelementptr i8, ptr %18, i64 9
  %862 = getelementptr i8, ptr %18, i64 11
  %wide.load1295.2 = load <2 x i8>, ptr %next.gep1293.2, align 1, !tbaa !24
  %wide.load1296.2 = load <2 x i8>, ptr %862, align 1, !tbaa !24
  %863 = getelementptr i8, ptr %15, i64 11
  %wide.load1297.2 = load <2 x i8>, ptr %next.gep1289.2, align 1, !tbaa !24
  %wide.load1298.2 = load <2 x i8>, ptr %863, align 1, !tbaa !24
  %864 = lshr <2 x i8> %wide.load1297.2, <i8 1, i8 1>
  %865 = lshr <2 x i8> %wide.load1298.2, <i8 1, i8 1>
  %866 = sub <2 x i8> %wide.load1295.2, %864
  %867 = sub <2 x i8> %wide.load1296.2, %865
  %868 = getelementptr i8, ptr %809, i64 11
  store <2 x i8> %866, ptr %next.gep1291.2, align 1, !tbaa !24
  store <2 x i8> %867, ptr %868, align 1, !tbaa !24
  %869 = zext <2 x i8> %866 to <2 x i32>
  %870 = zext <2 x i8> %867 to <2 x i32>
  %871 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %869
  %872 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %870
  %873 = icmp slt <2 x i8> %866, zeroinitializer
  %874 = icmp slt <2 x i8> %867, zeroinitializer
  %875 = select <2 x i1> %873, <2 x i32> %871, <2 x i32> %869
  %876 = select <2 x i1> %874, <2 x i32> %872, <2 x i32> %870
  %narrow1668 = add nuw nsw <2 x i32> %narrow1666, %875
  %877 = zext nneg <2 x i32> %narrow1668 to <2 x i64>
  %narrow1669 = add nuw nsw <2 x i32> %narrow1667, %876
  %878 = zext nneg <2 x i32> %narrow1669 to <2 x i64>
  %879 = icmp eq i64 %n.vec1277, 12
  br i1 %879, label %middle.block1272, label %vector.body1285.3, !llvm.loop !68

vector.body1285.3:                                ; preds = %vector.body1285.2
  %next.gep1289.3 = getelementptr i8, ptr %15, i64 13
  %next.gep1291.3 = getelementptr i8, ptr %809, i64 13
  %next.gep1293.3 = getelementptr i8, ptr %18, i64 13
  %880 = getelementptr i8, ptr %18, i64 15
  %wide.load1295.3 = load <2 x i8>, ptr %next.gep1293.3, align 1, !tbaa !24
  %wide.load1296.3 = load <2 x i8>, ptr %880, align 1, !tbaa !24
  %881 = getelementptr i8, ptr %15, i64 15
  %wide.load1297.3 = load <2 x i8>, ptr %next.gep1289.3, align 1, !tbaa !24
  %wide.load1298.3 = load <2 x i8>, ptr %881, align 1, !tbaa !24
  %882 = lshr <2 x i8> %wide.load1297.3, <i8 1, i8 1>
  %883 = lshr <2 x i8> %wide.load1298.3, <i8 1, i8 1>
  %884 = sub <2 x i8> %wide.load1295.3, %882
  %885 = sub <2 x i8> %wide.load1296.3, %883
  %886 = getelementptr i8, ptr %809, i64 15
  store <2 x i8> %884, ptr %next.gep1291.3, align 1, !tbaa !24
  store <2 x i8> %885, ptr %886, align 1, !tbaa !24
  %887 = zext <2 x i8> %884 to <2 x i32>
  %888 = zext <2 x i8> %885 to <2 x i32>
  %889 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %887
  %890 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %888
  %891 = icmp slt <2 x i8> %884, zeroinitializer
  %892 = icmp slt <2 x i8> %885, zeroinitializer
  %893 = select <2 x i1> %891, <2 x i32> %889, <2 x i32> %887
  %894 = select <2 x i1> %892, <2 x i32> %890, <2 x i32> %888
  %narrow1670 = add nuw nsw <2 x i32> %narrow1668, %893
  %895 = zext nneg <2 x i32> %narrow1670 to <2 x i64>
  %narrow1671 = add nuw nsw <2 x i32> %narrow1669, %894
  %896 = zext nneg <2 x i32> %narrow1671 to <2 x i64>
  %897 = icmp eq i64 %n.vec1277, 16
  br i1 %897, label %middle.block1272, label %vector.body1285.4, !llvm.loop !68

vector.body1285.4:                                ; preds = %vector.body1285.3
  %next.gep1289.4 = getelementptr i8, ptr %15, i64 17
  %next.gep1291.4 = getelementptr i8, ptr %809, i64 17
  %next.gep1293.4 = getelementptr i8, ptr %18, i64 17
  %898 = getelementptr i8, ptr %18, i64 19
  %wide.load1295.4 = load <2 x i8>, ptr %next.gep1293.4, align 1, !tbaa !24
  %wide.load1296.4 = load <2 x i8>, ptr %898, align 1, !tbaa !24
  %899 = getelementptr i8, ptr %15, i64 19
  %wide.load1297.4 = load <2 x i8>, ptr %next.gep1289.4, align 1, !tbaa !24
  %wide.load1298.4 = load <2 x i8>, ptr %899, align 1, !tbaa !24
  %900 = lshr <2 x i8> %wide.load1297.4, <i8 1, i8 1>
  %901 = lshr <2 x i8> %wide.load1298.4, <i8 1, i8 1>
  %902 = sub <2 x i8> %wide.load1295.4, %900
  %903 = sub <2 x i8> %wide.load1296.4, %901
  %904 = getelementptr i8, ptr %809, i64 19
  store <2 x i8> %902, ptr %next.gep1291.4, align 1, !tbaa !24
  store <2 x i8> %903, ptr %904, align 1, !tbaa !24
  %905 = zext <2 x i8> %902 to <2 x i32>
  %906 = zext <2 x i8> %903 to <2 x i32>
  %907 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %905
  %908 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %906
  %909 = icmp slt <2 x i8> %902, zeroinitializer
  %910 = icmp slt <2 x i8> %903, zeroinitializer
  %911 = select <2 x i1> %909, <2 x i32> %907, <2 x i32> %905
  %912 = select <2 x i1> %910, <2 x i32> %908, <2 x i32> %906
  %narrow1672 = add nuw nsw <2 x i32> %narrow1670, %911
  %913 = zext nneg <2 x i32> %narrow1672 to <2 x i64>
  %narrow1673 = add nuw nsw <2 x i32> %narrow1671, %912
  %914 = zext nneg <2 x i32> %narrow1673 to <2 x i64>
  %915 = icmp eq i64 %n.vec1277, 20
  br i1 %915, label %middle.block1272, label %vector.body1285.5, !llvm.loop !68

vector.body1285.5:                                ; preds = %vector.body1285.4
  %next.gep1289.5 = getelementptr i8, ptr %15, i64 21
  %next.gep1291.5 = getelementptr i8, ptr %809, i64 21
  %next.gep1293.5 = getelementptr i8, ptr %18, i64 21
  %916 = getelementptr i8, ptr %18, i64 23
  %wide.load1295.5 = load <2 x i8>, ptr %next.gep1293.5, align 1, !tbaa !24
  %wide.load1296.5 = load <2 x i8>, ptr %916, align 1, !tbaa !24
  %917 = getelementptr i8, ptr %15, i64 23
  %wide.load1297.5 = load <2 x i8>, ptr %next.gep1289.5, align 1, !tbaa !24
  %wide.load1298.5 = load <2 x i8>, ptr %917, align 1, !tbaa !24
  %918 = lshr <2 x i8> %wide.load1297.5, <i8 1, i8 1>
  %919 = lshr <2 x i8> %wide.load1298.5, <i8 1, i8 1>
  %920 = sub <2 x i8> %wide.load1295.5, %918
  %921 = sub <2 x i8> %wide.load1296.5, %919
  %922 = getelementptr i8, ptr %809, i64 23
  store <2 x i8> %920, ptr %next.gep1291.5, align 1, !tbaa !24
  store <2 x i8> %921, ptr %922, align 1, !tbaa !24
  %923 = zext <2 x i8> %920 to <2 x i32>
  %924 = zext <2 x i8> %921 to <2 x i32>
  %925 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %923
  %926 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %924
  %927 = icmp slt <2 x i8> %920, zeroinitializer
  %928 = icmp slt <2 x i8> %921, zeroinitializer
  %929 = select <2 x i1> %927, <2 x i32> %925, <2 x i32> %923
  %930 = select <2 x i1> %928, <2 x i32> %926, <2 x i32> %924
  %narrow1674 = add nuw nsw <2 x i32> %narrow1672, %929
  %931 = zext <2 x i32> %narrow1674 to <2 x i64>
  %narrow1675 = add nuw nsw <2 x i32> %narrow1673, %930
  %932 = zext <2 x i32> %narrow1675 to <2 x i64>
  %933 = icmp eq i64 %n.vec1277, 24
  br i1 %933, label %middle.block1272, label %vector.body1285.6, !llvm.loop !68

vector.body1285.6:                                ; preds = %vector.body1285.5
  %next.gep1289.6 = getelementptr i8, ptr %15, i64 25
  %next.gep1291.6 = getelementptr i8, ptr %809, i64 25
  %next.gep1293.6 = getelementptr i8, ptr %18, i64 25
  %934 = getelementptr i8, ptr %18, i64 27
  %wide.load1295.6 = load <2 x i8>, ptr %next.gep1293.6, align 1, !tbaa !24
  %wide.load1296.6 = load <2 x i8>, ptr %934, align 1, !tbaa !24
  %935 = getelementptr i8, ptr %15, i64 27
  %wide.load1297.6 = load <2 x i8>, ptr %next.gep1289.6, align 1, !tbaa !24
  %wide.load1298.6 = load <2 x i8>, ptr %935, align 1, !tbaa !24
  %936 = lshr <2 x i8> %wide.load1297.6, <i8 1, i8 1>
  %937 = lshr <2 x i8> %wide.load1298.6, <i8 1, i8 1>
  %938 = sub <2 x i8> %wide.load1295.6, %936
  %939 = sub <2 x i8> %wide.load1296.6, %937
  %940 = getelementptr i8, ptr %809, i64 27
  store <2 x i8> %938, ptr %next.gep1291.6, align 1, !tbaa !24
  store <2 x i8> %939, ptr %940, align 1, !tbaa !24
  %941 = zext <2 x i8> %938 to <2 x i32>
  %942 = zext <2 x i8> %939 to <2 x i32>
  %943 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %941
  %944 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %942
  %945 = icmp slt <2 x i8> %938, zeroinitializer
  %946 = icmp slt <2 x i8> %939, zeroinitializer
  %947 = select <2 x i1> %945, <2 x i32> %943, <2 x i32> %941
  %948 = select <2 x i1> %946, <2 x i32> %944, <2 x i32> %942
  %949 = zext nneg <2 x i32> %947 to <2 x i64>
  %950 = zext nneg <2 x i32> %948 to <2 x i64>
  %951 = add nuw nsw <2 x i64> %931, %949
  %952 = add nuw nsw <2 x i64> %932, %950
  %953 = icmp eq i64 %n.vec1277, 28
  br i1 %953, label %middle.block1272, label %vector.body1285.7, !llvm.loop !68

vector.body1285.7:                                ; preds = %vector.body1285.6
  %next.gep1289.7 = getelementptr i8, ptr %15, i64 29
  %next.gep1291.7 = getelementptr i8, ptr %809, i64 29
  %next.gep1293.7 = getelementptr i8, ptr %18, i64 29
  %954 = getelementptr i8, ptr %18, i64 31
  %wide.load1295.7 = load <2 x i8>, ptr %next.gep1293.7, align 1, !tbaa !24
  %wide.load1296.7 = load <2 x i8>, ptr %954, align 1, !tbaa !24
  %955 = getelementptr i8, ptr %15, i64 31
  %wide.load1297.7 = load <2 x i8>, ptr %next.gep1289.7, align 1, !tbaa !24
  %wide.load1298.7 = load <2 x i8>, ptr %955, align 1, !tbaa !24
  %956 = lshr <2 x i8> %wide.load1297.7, <i8 1, i8 1>
  %957 = lshr <2 x i8> %wide.load1298.7, <i8 1, i8 1>
  %958 = sub <2 x i8> %wide.load1295.7, %956
  %959 = sub <2 x i8> %wide.load1296.7, %957
  %960 = getelementptr i8, ptr %809, i64 31
  store <2 x i8> %958, ptr %next.gep1291.7, align 1, !tbaa !24
  store <2 x i8> %959, ptr %960, align 1, !tbaa !24
  %961 = zext <2 x i8> %958 to <2 x i32>
  %962 = zext <2 x i8> %959 to <2 x i32>
  %963 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %961
  %964 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %962
  %965 = icmp slt <2 x i8> %958, zeroinitializer
  %966 = icmp slt <2 x i8> %959, zeroinitializer
  %967 = select <2 x i1> %965, <2 x i32> %963, <2 x i32> %961
  %968 = select <2 x i1> %966, <2 x i32> %964, <2 x i32> %962
  %969 = zext nneg <2 x i32> %967 to <2 x i64>
  %970 = zext nneg <2 x i32> %968 to <2 x i64>
  %971 = add nuw nsw <2 x i64> %951, %969
  %972 = add nuw nsw <2 x i64> %952, %970
  br label %middle.block1272

middle.block1272:                                 ; preds = %vector.body1285.7, %vector.body1285.6, %vector.body1285.5, %vector.body1285.4, %vector.body1285.3, %vector.body1285.2, %vector.body1285.1, %vector.ph1275
  %.lcssa1553 = phi <2 x i64> [ %841, %vector.ph1275 ], [ %859, %vector.body1285.1 ], [ %877, %vector.body1285.2 ], [ %895, %vector.body1285.3 ], [ %913, %vector.body1285.4 ], [ %931, %vector.body1285.5 ], [ %951, %vector.body1285.6 ], [ %971, %vector.body1285.7 ]
  %.lcssa1552 = phi <2 x i64> [ %842, %vector.ph1275 ], [ %860, %vector.body1285.1 ], [ %878, %vector.body1285.2 ], [ %896, %vector.body1285.3 ], [ %914, %vector.body1285.4 ], [ %932, %vector.body1285.5 ], [ %952, %vector.body1285.6 ], [ %972, %vector.body1285.7 ]
  %bin.rdx1300 = add <2 x i64> %.lcssa1552, %.lcssa1553
  %973 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx1300)
  %cmp.n1301 = icmp eq i64 %13, %n.vec1277
  br i1 %cmp.n1301, label %.preheader694, label %.lr.ph814.preheader1547

.preheader694:                                    ; preds = %.lr.ph814.prol.loopexit, %.lr.ph814, %middle.block1272, %806
  %.0557.lcssa = phi ptr [ %807, %806 ], [ %ind.end1283, %middle.block1272 ], [ %.lcssa1551.unr, %.lr.ph814.prol.loopexit ], [ %985, %.lr.ph814 ]
  %.0547.lcssa = phi i64 [ 0, %806 ], [ %973, %middle.block1272 ], [ %.lcssa1550.unr, %.lr.ph814.prol.loopexit ], [ %994, %.lr.ph814 ]
  %.0543.lcssa = phi i64 [ 0, %806 ], [ %13, %middle.block1272 ], [ %13, %.lr.ph814 ], [ %13, %.lr.ph814.prol.loopexit ]
  %.0555.lcssa = phi ptr [ %.0555806, %806 ], [ %ind.end1280, %middle.block1272 ], [ %.0555.lcssa1549.unr, %.lr.ph814.prol.loopexit ], [ %.0555.1, %.lr.ph814 ]
  %.0553.lcssa = phi ptr [ %.0553807, %806 ], [ %ind.end1278, %middle.block1272 ], [ %.0553.lcssa1548.unr, %.lr.ph814.prol.loopexit ], [ %.0553.1, %.lr.ph814 ]
  %974 = icmp ult i64 %.0543.lcssa, %6
  br i1 %974, label %.lr.ph826, label %._crit_edge827

.lr.ph814:                                        ; preds = %.lr.ph814.prol.loopexit, %.lr.ph814
  %.0553812 = phi ptr [ %.0553.1, %.lr.ph814 ], [ %.0553812.unr, %.lr.ph814.prol.loopexit ]
  %.0555811 = phi ptr [ %.0555.1, %.lr.ph814 ], [ %.0555811.unr, %.lr.ph814.prol.loopexit ]
  %.0543810 = phi i64 [ %995, %.lr.ph814 ], [ %.0543810.unr, %.lr.ph814.prol.loopexit ]
  %.0547809 = phi i64 [ %994, %.lr.ph814 ], [ %.0547809.unr, %.lr.ph814.prol.loopexit ]
  %.0557808 = phi ptr [ %985, %.lr.ph814 ], [ %.0557808.unr, %.lr.ph814.prol.loopexit ]
  %975 = getelementptr inbounds i8, ptr %.0557808, i64 1
  %976 = load i8, ptr %.0557808, align 1, !tbaa !24
  %977 = load i8, ptr %.0553812, align 1, !tbaa !24
  %978 = lshr i8 %977, 1
  %.narrow654 = sub i8 %976, %978
  store i8 %.narrow654, ptr %.0555811, align 1, !tbaa !24
  %979 = zext i8 %.narrow654 to i32
  %980 = sub nuw nsw i32 256, %979
  %981 = icmp slt i8 %.narrow654, 0
  %982 = select i1 %981, i32 %980, i32 %979
  %983 = zext nneg i32 %982 to i64
  %984 = add i64 %.0547809, %983
  %.0555 = getelementptr inbounds i8, ptr %.0555811, i64 1
  %.0553 = getelementptr inbounds i8, ptr %.0553812, i64 1
  %985 = getelementptr inbounds i8, ptr %.0557808, i64 2
  %986 = load i8, ptr %975, align 1, !tbaa !24
  %987 = load i8, ptr %.0553, align 1, !tbaa !24
  %988 = lshr i8 %987, 1
  %.narrow654.1 = sub i8 %986, %988
  store i8 %.narrow654.1, ptr %.0555, align 1, !tbaa !24
  %989 = zext i8 %.narrow654.1 to i32
  %990 = sub nuw nsw i32 256, %989
  %991 = icmp slt i8 %.narrow654.1, 0
  %992 = select i1 %991, i32 %990, i32 %989
  %993 = zext nneg i32 %992 to i64
  %994 = add i64 %984, %993
  %995 = add nuw nsw i64 %.0543810, 2
  %.0555.1 = getelementptr inbounds i8, ptr %.0555811, i64 2
  %.0553.1 = getelementptr inbounds i8, ptr %.0553812, i64 2
  %exitcond1020.not.1 = icmp eq i64 %995, %13
  br i1 %exitcond1020.not.1, label %.preheader694, label %.lr.ph814, !llvm.loop !69

.lr.ph826:                                        ; preds = %.preheader694, %.lr.ph826
  %.1544825 = phi i64 [ %1014, %.lr.ph826 ], [ %.0543.lcssa, %.preheader694 ]
  %.1548824 = phi i64 [ %1008, %.lr.ph826 ], [ %.0547.lcssa, %.preheader694 ]
  %.0552823 = phi ptr [ %1011, %.lr.ph826 ], [ %807, %.preheader694 ]
  %.1554822 = phi ptr [ %1012, %.lr.ph826 ], [ %.0553.lcssa, %.preheader694 ]
  %.1556821 = phi ptr [ %1010, %.lr.ph826 ], [ %.0555.lcssa, %.preheader694 ]
  %.1558820 = phi ptr [ %1013, %.lr.ph826 ], [ %.0557.lcssa, %.preheader694 ]
  %996 = load i8, ptr %.1558820, align 1, !tbaa !24
  %997 = load i8, ptr %.1554822, align 1, !tbaa !24
  %998 = zext i8 %997 to i16
  %999 = load i8, ptr %.0552823, align 1, !tbaa !24
  %1000 = zext i8 %999 to i16
  %1001 = add nuw nsw i16 %1000, %998
  %1002 = lshr i16 %1001, 1
  %.tr = trunc nuw i16 %1002 to i8
  %.narrow651 = sub i8 %996, %.tr
  store i8 %.narrow651, ptr %.1556821, align 1, !tbaa !24
  %1003 = zext i8 %.narrow651 to i32
  %1004 = sub nuw nsw i32 256, %1003
  %1005 = icmp slt i8 %.narrow651, 0
  %1006 = select i1 %1005, i32 %1004, i32 %1003
  %1007 = zext nneg i32 %1006 to i64
  %1008 = add i64 %.1548824, %1007
  %1009 = icmp ule i64 %1008, %.1546
  %1010 = getelementptr inbounds i8, ptr %.1556821, i64 1
  %1011 = getelementptr inbounds i8, ptr %.0552823, i64 1
  %1012 = getelementptr inbounds i8, ptr %.1554822, i64 1
  %1013 = getelementptr inbounds i8, ptr %.1558820, i64 1
  %1014 = add nuw i64 %.1544825, 1
  %1015 = icmp ult i64 %1014, %6
  %or.cond932 = select i1 %1009, i1 %1015, i1 false
  br i1 %or.cond932, label %.lr.ph826, label %._crit_edge827, !llvm.loop !70

._crit_edge827:                                   ; preds = %.lr.ph826, %.preheader694
  %.2549 = phi i64 [ %.0547.lcssa, %.preheader694 ], [ %1008, %.lr.ph826 ]
  %1016 = load i8, ptr %743, align 8, !tbaa !30
  %1017 = icmp eq i8 %1016, 2
  br i1 %1017, label %1018, label %1078

1018:                                             ; preds = %._crit_edge827
  %1019 = and i64 %.2549, 65535
  %1020 = lshr i64 %.2549, 10
  %1021 = and i64 %1020, 18014398509481920
  %.not952 = icmp eq i8 %8, 0
  br i1 %.not952, label %._crit_edge836, label %.lr.ph835

.lr.ph835:                                        ; preds = %1018
  %1022 = getelementptr inbounds i8, ptr %0, i64 992
  %1023 = load ptr, ptr %1022, align 8, !tbaa !31
  %1024 = getelementptr inbounds i8, ptr %0, i64 1000
  %wide.trip.count1024 = zext i8 %8 to i64
  %xtraiter1620 = and i64 %wide.trip.count1024, 1
  %1025 = icmp eq i8 %8, 1
  br i1 %1025, label %._crit_edge836.loopexit.unr-lcssa, label %.lr.ph835.new

.lr.ph835.new:                                    ; preds = %.lr.ph835
  %unroll_iter1624 = and i64 %wide.trip.count1024, 254
  br label %1026

1026:                                             ; preds = %1052, %.lr.ph835.new
  %indvars.iv1021 = phi i64 [ 0, %.lr.ph835.new ], [ %indvars.iv.next1022.1, %1052 ]
  %.0533833 = phi i64 [ %1019, %.lr.ph835.new ], [ %.1534.1, %1052 ]
  %.0535832 = phi i64 [ %1021, %.lr.ph835.new ], [ %.1536.1, %1052 ]
  %niter1625 = phi i64 [ 0, %.lr.ph835.new ], [ %niter1625.next.1, %1052 ]
  %1027 = getelementptr inbounds i8, ptr %1023, i64 %indvars.iv1021
  %1028 = load i8, ptr %1027, align 1, !tbaa !24
  %1029 = icmp eq i8 %1028, 0
  br i1 %1029, label %1030, label %1039

1030:                                             ; preds = %1026
  %1031 = load ptr, ptr %1024, align 8, !tbaa !32
  %1032 = getelementptr inbounds i16, ptr %1031, i64 %indvars.iv1021
  %1033 = load i16, ptr %1032, align 2, !tbaa !33
  %1034 = zext i16 %1033 to i64
  %1035 = mul i64 %.0533833, %1034
  %1036 = lshr i64 %1035, 8
  %1037 = mul i64 %.0535832, %1034
  %1038 = lshr i64 %1037, 8
  br label %1039

1039:                                             ; preds = %1026, %1030
  %.1536 = phi i64 [ %1038, %1030 ], [ %.0535832, %1026 ]
  %.1534 = phi i64 [ %1036, %1030 ], [ %.0533833, %1026 ]
  %indvars.iv.next1022 = or disjoint i64 %indvars.iv1021, 1
  %1040 = getelementptr inbounds i8, ptr %1023, i64 %indvars.iv.next1022
  %1041 = load i8, ptr %1040, align 1, !tbaa !24
  %1042 = icmp eq i8 %1041, 0
  br i1 %1042, label %1043, label %1052

1043:                                             ; preds = %1039
  %1044 = load ptr, ptr %1024, align 8, !tbaa !32
  %1045 = getelementptr inbounds i16, ptr %1044, i64 %indvars.iv.next1022
  %1046 = load i16, ptr %1045, align 2, !tbaa !33
  %1047 = zext i16 %1046 to i64
  %1048 = mul i64 %.1534, %1047
  %1049 = lshr i64 %1048, 8
  %1050 = mul i64 %.1536, %1047
  %1051 = lshr i64 %1050, 8
  br label %1052

1052:                                             ; preds = %1043, %1039
  %.1536.1 = phi i64 [ %1051, %1043 ], [ %.1536, %1039 ]
  %.1534.1 = phi i64 [ %1049, %1043 ], [ %.1534, %1039 ]
  %indvars.iv.next1022.1 = add nuw nsw i64 %indvars.iv1021, 2
  %niter1625.next.1 = add i64 %niter1625, 2
  %niter1625.ncmp.1 = icmp eq i64 %niter1625.next.1, %unroll_iter1624
  br i1 %niter1625.ncmp.1, label %._crit_edge836.loopexit.unr-lcssa, label %1026, !llvm.loop !71

._crit_edge836.loopexit.unr-lcssa:                ; preds = %1052, %.lr.ph835
  %.1536.lcssa.ph = phi i64 [ poison, %.lr.ph835 ], [ %.1536.1, %1052 ]
  %.1534.lcssa.ph = phi i64 [ poison, %.lr.ph835 ], [ %.1534.1, %1052 ]
  %indvars.iv1021.unr = phi i64 [ 0, %.lr.ph835 ], [ %indvars.iv.next1022.1, %1052 ]
  %.0533833.unr = phi i64 [ %1019, %.lr.ph835 ], [ %.1534.1, %1052 ]
  %.0535832.unr = phi i64 [ %1021, %.lr.ph835 ], [ %.1536.1, %1052 ]
  %lcmp.mod1621.not = icmp eq i64 %xtraiter1620, 0
  br i1 %lcmp.mod1621.not, label %._crit_edge836, label %.epil.preheader1619

.epil.preheader1619:                              ; preds = %._crit_edge836.loopexit.unr-lcssa
  %1053 = getelementptr inbounds i8, ptr %1023, i64 %indvars.iv1021.unr
  %1054 = load i8, ptr %1053, align 1, !tbaa !24
  %1055 = icmp eq i8 %1054, 0
  br i1 %1055, label %1056, label %._crit_edge836

1056:                                             ; preds = %.epil.preheader1619
  %1057 = load ptr, ptr %1024, align 8, !tbaa !32
  %1058 = getelementptr inbounds i16, ptr %1057, i64 %indvars.iv1021.unr
  %1059 = load i16, ptr %1058, align 2, !tbaa !33
  %1060 = zext i16 %1059 to i64
  %1061 = mul i64 %.0533833.unr, %1060
  %1062 = lshr i64 %1061, 8
  %1063 = mul i64 %.0535832.unr, %1060
  %1064 = lshr i64 %1063, 8
  br label %._crit_edge836

._crit_edge836:                                   ; preds = %._crit_edge836.loopexit.unr-lcssa, %1056, %.epil.preheader1619, %1018
  %.0535.lcssa = phi i64 [ %1021, %1018 ], [ %.1536.lcssa.ph, %._crit_edge836.loopexit.unr-lcssa ], [ %1064, %1056 ], [ %.0535832.unr, %.epil.preheader1619 ]
  %.0533.lcssa = phi i64 [ %1019, %1018 ], [ %.1534.lcssa.ph, %._crit_edge836.loopexit.unr-lcssa ], [ %1062, %1056 ], [ %.0533833.unr, %.epil.preheader1619 ]
  %1065 = getelementptr inbounds i8, ptr %0, i64 1016
  %1066 = load ptr, ptr %1065, align 8, !tbaa !35
  %1067 = getelementptr inbounds i8, ptr %1066, i64 6
  %1068 = load i16, ptr %1067, align 2, !tbaa !33
  %1069 = zext i16 %1068 to i64
  %1070 = mul i64 %.0535.lcssa, %1069
  %1071 = icmp ugt i64 %1070, 144115188075855367
  br i1 %1071, label %1078, label %1072

1072:                                             ; preds = %._crit_edge836
  %1073 = mul i64 %.0533.lcssa, %1069
  %1074 = lshr i64 %1073, 3
  %1075 = shl nuw i64 %1070, 7
  %1076 = and i64 %1075, -1024
  %1077 = add i64 %1076, %1074
  br label %1078

1078:                                             ; preds = %1072, %._crit_edge836, %._crit_edge827
  %.4551 = phi i64 [ %.2549, %._crit_edge827 ], [ %1077, %1072 ], [ 9223372036854775807, %._crit_edge836 ]
  %1079 = icmp ult i64 %.4551, %.4485
  br i1 %1079, label %.sink.split1088, label %1081

.sink.split1088:                                  ; preds = %.lr.ph856.prol.loopexit, %.lr.ph856, %middle.block1338, %vec.epilog.middle.block1359, %1078, %.preheader693
  %.sink1089 = phi ptr [ %650, %.preheader693 ], [ %808, %1078 ], [ %650, %vec.epilog.middle.block1359 ], [ %650, %middle.block1338 ], [ %650, %.lr.ph856 ], [ %650, %.lr.ph856.prol.loopexit ]
  %.6487.ph = phi i64 [ %.4485, %.preheader693 ], [ %.4551, %1078 ], [ %.4485, %vec.epilog.middle.block1359 ], [ %.4485, %middle.block1338 ], [ %.4485, %.lr.ph856 ], [ %.4485, %.lr.ph856.prol.loopexit ]
  %1080 = load ptr, ptr %.sink1089, align 8, !tbaa !60
  br label %1081

1081:                                             ; preds = %.sink.split1088, %1078, %740
  %.6487 = phi i64 [ %.4485, %740 ], [ %.4485, %1078 ], [ %.6487.ph, %.sink.split1088 ]
  %.5 = phi ptr [ %.3, %740 ], [ %.3, %1078 ], [ %1080, %.sink.split1088 ]
  %1082 = icmp eq i8 %4, -128
  br i1 %1082, label %1083, label %1178

1083:                                             ; preds = %1081
  %1084 = getelementptr inbounds i8, ptr %18, i64 1
  %1085 = getelementptr inbounds i8, ptr %0, i64 560
  %1086 = load ptr, ptr %1085, align 8, !tbaa !72
  %1087 = ptrtoint ptr %1086 to i64
  %1088 = getelementptr inbounds i8, ptr %15, i64 1
  %.0529899 = getelementptr inbounds i8, ptr %1086, i64 1
  %.not957 = icmp eq i8 %10, 0
  br i1 %.not957, label %.preheader691, label %.lr.ph905.preheader

.lr.ph905.preheader:                              ; preds = %1083
  %min.iters.check1435 = icmp ult i8 %10, 121
  br i1 %min.iters.check1435, label %.lr.ph905.preheader1531, label %vector.memcheck1429

.lr.ph905.preheader1531:                          ; preds = %middle.block1433, %vector.memcheck1429, %.lr.ph905.preheader
  %.0529903.ph = phi ptr [ %.0529899, %vector.memcheck1429 ], [ %.0529899, %.lr.ph905.preheader ], [ %ind.end1439, %middle.block1433 ]
  %.0523902.ph = phi i64 [ 0, %vector.memcheck1429 ], [ 0, %.lr.ph905.preheader ], [ %n.vec1438, %middle.block1433 ]
  %.0527901.ph = phi ptr [ %1088, %vector.memcheck1429 ], [ %1088, %.lr.ph905.preheader ], [ %ind.end1442, %middle.block1433 ]
  %.0531900.ph = phi ptr [ %1084, %vector.memcheck1429 ], [ %1084, %.lr.ph905.preheader ], [ %ind.end1444, %middle.block1433 ]
  %xtraiter1649 = and i64 %13, 3
  %lcmp.mod1650.not = icmp eq i64 %xtraiter1649, 0
  br i1 %lcmp.mod1650.not, label %.lr.ph905.prol.loopexit, label %.lr.ph905.prol

.lr.ph905.prol:                                   ; preds = %.lr.ph905.preheader1531, %.lr.ph905.prol
  %.0529903.prol = phi ptr [ %.0529.prol, %.lr.ph905.prol ], [ %.0529903.ph, %.lr.ph905.preheader1531 ]
  %.0523902.prol = phi i64 [ %1093, %.lr.ph905.prol ], [ %.0523902.ph, %.lr.ph905.preheader1531 ]
  %.0527901.prol = phi ptr [ %1091, %.lr.ph905.prol ], [ %.0527901.ph, %.lr.ph905.preheader1531 ]
  %.0531900.prol = phi ptr [ %1089, %.lr.ph905.prol ], [ %.0531900.ph, %.lr.ph905.preheader1531 ]
  %prol.iter1651 = phi i64 [ %prol.iter1651.next, %.lr.ph905.prol ], [ 0, %.lr.ph905.preheader1531 ]
  %1089 = getelementptr inbounds i8, ptr %.0531900.prol, i64 1
  %1090 = load i8, ptr %.0531900.prol, align 1, !tbaa !24
  %1091 = getelementptr inbounds i8, ptr %.0527901.prol, i64 1
  %1092 = load i8, ptr %.0527901.prol, align 1, !tbaa !24
  %.narrow672.prol = sub i8 %1090, %1092
  store i8 %.narrow672.prol, ptr %.0529903.prol, align 1, !tbaa !24
  %1093 = add nuw nsw i64 %.0523902.prol, 1
  %.0529.prol = getelementptr inbounds i8, ptr %.0529903.prol, i64 1
  %prol.iter1651.next = add i64 %prol.iter1651, 1
  %prol.iter1651.cmp.not = icmp eq i64 %prol.iter1651.next, %xtraiter1649
  br i1 %prol.iter1651.cmp.not, label %.lr.ph905.prol.loopexit, label %.lr.ph905.prol, !llvm.loop !73

.lr.ph905.prol.loopexit:                          ; preds = %.lr.ph905.prol, %.lr.ph905.preheader1531
  %.lcssa1533.unr = phi ptr [ poison, %.lr.ph905.preheader1531 ], [ %1089, %.lr.ph905.prol ]
  %.lcssa.unr = phi ptr [ poison, %.lr.ph905.preheader1531 ], [ %1091, %.lr.ph905.prol ]
  %.0529.lcssa1532.unr = phi ptr [ poison, %.lr.ph905.preheader1531 ], [ %.0529.prol, %.lr.ph905.prol ]
  %.0529903.unr = phi ptr [ %.0529903.ph, %.lr.ph905.preheader1531 ], [ %.0529.prol, %.lr.ph905.prol ]
  %.0523902.unr = phi i64 [ %.0523902.ph, %.lr.ph905.preheader1531 ], [ %1093, %.lr.ph905.prol ]
  %.0527901.unr = phi ptr [ %.0527901.ph, %.lr.ph905.preheader1531 ], [ %1091, %.lr.ph905.prol ]
  %.0531900.unr = phi ptr [ %.0531900.ph, %.lr.ph905.preheader1531 ], [ %1089, %.lr.ph905.prol ]
  %1094 = sub nsw i64 %.0523902.ph, %13
  %1095 = icmp ugt i64 %1094, -4
  br i1 %1095, label %.preheader691, label %.lr.ph905

vector.memcheck1429:                              ; preds = %.lr.ph905.preheader
  %1096 = sub i64 %1087, %19
  %diff.check1430 = icmp ult i64 %1096, 16
  %1097 = sub i64 %1087, %16
  %diff.check1431 = icmp ult i64 %1097, 16
  %conflict.rdx1432 = or i1 %diff.check1430, %diff.check1431
  br i1 %conflict.rdx1432, label %.lr.ph905.preheader1531, label %vector.ph1436

vector.ph1436:                                    ; preds = %vector.memcheck1429
  %n.vec1438 = and i64 %13, 48
  %ind.end1439 = getelementptr i8, ptr %.0529899, i64 %n.vec1438
  %ind.end1442 = getelementptr i8, ptr %1088, i64 %n.vec1438
  %ind.end1444 = getelementptr i8, ptr %1084, i64 %n.vec1438
  %wide.load1451 = load <16 x i8>, ptr %1084, align 1, !tbaa !24
  %wide.load1452 = load <16 x i8>, ptr %1088, align 1, !tbaa !24
  %1098 = sub <16 x i8> %wide.load1451, %wide.load1452
  store <16 x i8> %1098, ptr %.0529899, align 1, !tbaa !24
  %1099 = icmp eq i64 %n.vec1438, 16
  br i1 %1099, label %middle.block1433, label %vector.body1446.1, !llvm.loop !74

vector.body1446.1:                                ; preds = %vector.ph1436
  %next.gep1448.1 = getelementptr i8, ptr %1086, i64 17
  %next.gep1449.1 = getelementptr i8, ptr %15, i64 17
  %next.gep1450.1 = getelementptr i8, ptr %18, i64 17
  %wide.load1451.1 = load <16 x i8>, ptr %next.gep1450.1, align 1, !tbaa !24
  %wide.load1452.1 = load <16 x i8>, ptr %next.gep1449.1, align 1, !tbaa !24
  %1100 = sub <16 x i8> %wide.load1451.1, %wide.load1452.1
  store <16 x i8> %1100, ptr %next.gep1448.1, align 1, !tbaa !24
  br label %middle.block1433

middle.block1433:                                 ; preds = %vector.body1446.1, %vector.ph1436
  %cmp.n1454 = icmp eq i64 %13, %n.vec1438
  br i1 %cmp.n1454, label %.preheader691, label %.lr.ph905.preheader1531

.preheader691:                                    ; preds = %.lr.ph905.prol.loopexit, %.lr.ph905, %middle.block1433, %1083
  %.0531.lcssa = phi ptr [ %1084, %1083 ], [ %ind.end1444, %middle.block1433 ], [ %.lcssa1533.unr, %.lr.ph905.prol.loopexit ], [ %1153, %.lr.ph905 ]
  %.0527.lcssa = phi ptr [ %1088, %1083 ], [ %ind.end1442, %middle.block1433 ], [ %.lcssa.unr, %.lr.ph905.prol.loopexit ], [ %1155, %.lr.ph905 ]
  %.0523.lcssa = phi i64 [ 0, %1083 ], [ %13, %middle.block1433 ], [ %13, %.lr.ph905 ], [ %13, %.lr.ph905.prol.loopexit ]
  %.0529.lcssa = phi ptr [ %.0529899, %1083 ], [ %ind.end1439, %middle.block1433 ], [ %.0529.lcssa1532.unr, %.lr.ph905.prol.loopexit ], [ %.0529.3, %.lr.ph905 ]
  %.0529.lcssa1456 = ptrtoint ptr %.0529.lcssa to i64
  %.0527.lcssa1458 = ptrtoint ptr %.0527.lcssa to i64
  %.0531.lcssa1461 = ptrtoint ptr %.0531.lcssa to i64
  %1101 = icmp ult i64 %.0523.lcssa, %6
  br i1 %1101, label %iter.check1470, label %.thread1059.sink.split

iter.check1470:                                   ; preds = %.preheader691
  %1102 = sub i64 %6, %.0523.lcssa
  %min.iters.check1468 = icmp ult i64 %1102, 8
  br i1 %min.iters.check1468, label %.lr.ph916.preheader, label %vector.memcheck1455

vector.memcheck1455:                              ; preds = %iter.check1470
  %1103 = sub i64 %16, %.0529.lcssa1456
  %diff.check1457 = icmp ugt i64 %1103, -17
  %1104 = sub i64 %.0529.lcssa1456, %.0527.lcssa1458
  %diff.check1459 = icmp ult i64 %1104, 16
  %conflict.rdx1460 = or i1 %diff.check1457, %diff.check1459
  %1105 = sub i64 %.0529.lcssa1456, %.0531.lcssa1461
  %diff.check1462 = icmp ult i64 %1105, 16
  %conflict.rdx1463 = or i1 %conflict.rdx1460, %diff.check1462
  %1106 = sub i64 %19, %.0529.lcssa1456
  %diff.check1464 = icmp ugt i64 %1106, -17
  %conflict.rdx1465 = or i1 %conflict.rdx1463, %diff.check1464
  br i1 %conflict.rdx1465, label %.lr.ph916.preheader, label %vector.main.loop.iter.check1472

vector.main.loop.iter.check1472:                  ; preds = %vector.memcheck1455
  %min.iters.check1471 = icmp ult i64 %1102, 16
  br i1 %min.iters.check1471, label %vec.epilog.ph1491, label %vector.ph1473

vector.ph1473:                                    ; preds = %vector.main.loop.iter.check1472
  %n.vec1475 = and i64 %1102, -16
  br label %vector.body1476

vector.body1476:                                  ; preds = %vector.body1476, %vector.ph1473
  %index1477 = phi i64 [ 0, %vector.ph1473 ], [ %index.next1487, %vector.body1476 ]
  %next.gep1478 = getelementptr i8, ptr %1084, i64 %index1477
  %next.gep1479 = getelementptr i8, ptr %1088, i64 %index1477
  %next.gep1480 = getelementptr i8, ptr %.0527.lcssa, i64 %index1477
  %next.gep1481 = getelementptr i8, ptr %.0529.lcssa, i64 %index1477
  %next.gep1482 = getelementptr i8, ptr %.0531.lcssa, i64 %index1477
  %wide.load1483 = load <16 x i8>, ptr %next.gep1480, align 1, !tbaa !24
  %1107 = zext <16 x i8> %wide.load1483 to <16 x i32>
  %wide.load1484 = load <16 x i8>, ptr %next.gep1479, align 1, !tbaa !24
  %1108 = zext <16 x i8> %wide.load1484 to <16 x i32>
  %wide.load1485 = load <16 x i8>, ptr %next.gep1478, align 1, !tbaa !24
  %1109 = zext <16 x i8> %wide.load1485 to <16 x i32>
  %1110 = sub nsw <16 x i32> %1107, %1108
  %1111 = sub nsw <16 x i32> %1109, %1108
  %1112 = tail call <16 x i32> @llvm.abs.v16i32(<16 x i32> %1110, i1 true)
  %1113 = tail call <16 x i32> @llvm.abs.v16i32(<16 x i32> %1111, i1 true)
  %1114 = add nsw <16 x i32> %1111, %1110
  %1115 = tail call <16 x i32> @llvm.abs.v16i32(<16 x i32> %1114, i1 true)
  %1116 = icmp ugt <16 x i32> %1112, %1113
  %1117 = icmp ugt <16 x i32> %1112, %1115
  %1118 = select <16 x i1> %1116, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <16 x i1> %1117
  %1119 = icmp ugt <16 x i32> %1113, %1115
  %1120 = select <16 x i1> %1119, <16 x i8> %wide.load1484, <16 x i8> %wide.load1483
  %1121 = select <16 x i1> %1118, <16 x i8> %1120, <16 x i8> %wide.load1485
  %wide.load1486 = load <16 x i8>, ptr %next.gep1482, align 1, !tbaa !24
  %1122 = sub <16 x i8> %wide.load1486, %1121
  store <16 x i8> %1122, ptr %next.gep1481, align 1, !tbaa !24
  %index.next1487 = add nuw i64 %index1477, 16
  %1123 = icmp eq i64 %index.next1487, %n.vec1475
  br i1 %1123, label %middle.block1466, label %vector.body1476, !llvm.loop !75

middle.block1466:                                 ; preds = %vector.body1476
  %cmp.n1488 = icmp eq i64 %1102, %n.vec1475
  br i1 %cmp.n1488, label %.thread1059.sink.split, label %vec.epilog.iter.check1492

vec.epilog.iter.check1492:                        ; preds = %middle.block1466
  %ind.end1514 = getelementptr i8, ptr %.0531.lcssa, i64 %n.vec1475
  %ind.end1511 = getelementptr i8, ptr %.0529.lcssa, i64 %n.vec1475
  %ind.end1508 = getelementptr i8, ptr %.0527.lcssa, i64 %n.vec1475
  %ind.end1505 = getelementptr i8, ptr %1088, i64 %n.vec1475
  %ind.end1502 = getelementptr i8, ptr %1084, i64 %n.vec1475
  %ind.end1499 = add i64 %.0523.lcssa, %n.vec1475
  %n.vec.remaining1493 = and i64 %1102, 8
  %min.epilog.iters.check1494.not.not = icmp eq i64 %n.vec.remaining1493, 0
  br i1 %min.epilog.iters.check1494.not.not, label %.lr.ph916.preheader, label %vec.epilog.ph1491

.lr.ph916.preheader:                              ; preds = %vec.epilog.middle.block1489, %vector.memcheck1455, %iter.check1470, %vec.epilog.iter.check1492
  %.1524915.ph = phi i64 [ %.0523.lcssa, %iter.check1470 ], [ %.0523.lcssa, %vector.memcheck1455 ], [ %ind.end1499, %vec.epilog.iter.check1492 ], [ %ind.end1498, %vec.epilog.middle.block1489 ]
  %.0525914.ph = phi ptr [ %1084, %iter.check1470 ], [ %1084, %vector.memcheck1455 ], [ %ind.end1502, %vec.epilog.iter.check1492 ], [ %ind.end1501, %vec.epilog.middle.block1489 ]
  %.0526913.ph = phi ptr [ %1088, %iter.check1470 ], [ %1088, %vector.memcheck1455 ], [ %ind.end1505, %vec.epilog.iter.check1492 ], [ %ind.end1504, %vec.epilog.middle.block1489 ]
  %.1528912.ph = phi ptr [ %.0527.lcssa, %iter.check1470 ], [ %.0527.lcssa, %vector.memcheck1455 ], [ %ind.end1508, %vec.epilog.iter.check1492 ], [ %ind.end1507, %vec.epilog.middle.block1489 ]
  %.1530911.ph = phi ptr [ %.0529.lcssa, %iter.check1470 ], [ %.0529.lcssa, %vector.memcheck1455 ], [ %ind.end1511, %vec.epilog.iter.check1492 ], [ %ind.end1510, %vec.epilog.middle.block1489 ]
  %.1532910.ph = phi ptr [ %.0531.lcssa, %iter.check1470 ], [ %.0531.lcssa, %vector.memcheck1455 ], [ %ind.end1514, %vec.epilog.iter.check1492 ], [ %ind.end1513, %vec.epilog.middle.block1489 ]
  br label %.lr.ph916

vec.epilog.ph1491:                                ; preds = %vector.main.loop.iter.check1472, %vec.epilog.iter.check1492
  %vec.epilog.resume.val1495 = phi i64 [ %n.vec1475, %vec.epilog.iter.check1492 ], [ 0, %vector.main.loop.iter.check1472 ]
  %n.vec1497 = and i64 %1102, -8
  %ind.end1498 = add i64 %.0523.lcssa, %n.vec1497
  %ind.end1501 = getelementptr i8, ptr %1084, i64 %n.vec1497
  %ind.end1504 = getelementptr i8, ptr %1088, i64 %n.vec1497
  %ind.end1507 = getelementptr i8, ptr %.0527.lcssa, i64 %n.vec1497
  %ind.end1510 = getelementptr i8, ptr %.0529.lcssa, i64 %n.vec1497
  %ind.end1513 = getelementptr i8, ptr %.0531.lcssa, i64 %n.vec1497
  br label %vec.epilog.vector.body1516

vec.epilog.vector.body1516:                       ; preds = %vec.epilog.vector.body1516, %vec.epilog.ph1491
  %index1517 = phi i64 [ %vec.epilog.resume.val1495, %vec.epilog.ph1491 ], [ %index.next1527, %vec.epilog.vector.body1516 ]
  %next.gep1518 = getelementptr i8, ptr %1084, i64 %index1517
  %next.gep1519 = getelementptr i8, ptr %1088, i64 %index1517
  %next.gep1520 = getelementptr i8, ptr %.0527.lcssa, i64 %index1517
  %next.gep1521 = getelementptr i8, ptr %.0529.lcssa, i64 %index1517
  %next.gep1522 = getelementptr i8, ptr %.0531.lcssa, i64 %index1517
  %wide.load1523 = load <8 x i8>, ptr %next.gep1520, align 1, !tbaa !24
  %1124 = zext <8 x i8> %wide.load1523 to <8 x i32>
  %wide.load1524 = load <8 x i8>, ptr %next.gep1519, align 1, !tbaa !24
  %1125 = zext <8 x i8> %wide.load1524 to <8 x i32>
  %wide.load1525 = load <8 x i8>, ptr %next.gep1518, align 1, !tbaa !24
  %1126 = zext <8 x i8> %wide.load1525 to <8 x i32>
  %1127 = sub nsw <8 x i32> %1124, %1125
  %1128 = sub nsw <8 x i32> %1126, %1125
  %1129 = tail call <8 x i32> @llvm.abs.v8i32(<8 x i32> %1127, i1 true)
  %1130 = tail call <8 x i32> @llvm.abs.v8i32(<8 x i32> %1128, i1 true)
  %1131 = add nsw <8 x i32> %1128, %1127
  %1132 = tail call <8 x i32> @llvm.abs.v8i32(<8 x i32> %1131, i1 true)
  %1133 = icmp ugt <8 x i32> %1129, %1130
  %1134 = icmp ugt <8 x i32> %1129, %1132
  %1135 = select <8 x i1> %1133, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x i1> %1134
  %1136 = icmp ugt <8 x i32> %1130, %1132
  %1137 = select <8 x i1> %1136, <8 x i8> %wide.load1524, <8 x i8> %wide.load1523
  %1138 = select <8 x i1> %1135, <8 x i8> %1137, <8 x i8> %wide.load1525
  %wide.load1526 = load <8 x i8>, ptr %next.gep1522, align 1, !tbaa !24
  %1139 = sub <8 x i8> %wide.load1526, %1138
  store <8 x i8> %1139, ptr %next.gep1521, align 1, !tbaa !24
  %index.next1527 = add nuw i64 %index1517, 8
  %1140 = icmp eq i64 %index.next1527, %n.vec1497
  br i1 %1140, label %vec.epilog.middle.block1489, label %vec.epilog.vector.body1516, !llvm.loop !76

vec.epilog.middle.block1489:                      ; preds = %vec.epilog.vector.body1516
  %cmp.n1528 = icmp eq i64 %1102, %n.vec1497
  br i1 %cmp.n1528, label %.thread1059.sink.split, label %.lr.ph916.preheader

.lr.ph905:                                        ; preds = %.lr.ph905.prol.loopexit, %.lr.ph905
  %.0529903 = phi ptr [ %.0529.3, %.lr.ph905 ], [ %.0529903.unr, %.lr.ph905.prol.loopexit ]
  %.0523902 = phi i64 [ %1157, %.lr.ph905 ], [ %.0523902.unr, %.lr.ph905.prol.loopexit ]
  %.0527901 = phi ptr [ %1155, %.lr.ph905 ], [ %.0527901.unr, %.lr.ph905.prol.loopexit ]
  %.0531900 = phi ptr [ %1153, %.lr.ph905 ], [ %.0531900.unr, %.lr.ph905.prol.loopexit ]
  %1141 = getelementptr inbounds i8, ptr %.0531900, i64 1
  %1142 = load i8, ptr %.0531900, align 1, !tbaa !24
  %1143 = getelementptr inbounds i8, ptr %.0527901, i64 1
  %1144 = load i8, ptr %.0527901, align 1, !tbaa !24
  %.narrow672 = sub i8 %1142, %1144
  store i8 %.narrow672, ptr %.0529903, align 1, !tbaa !24
  %.0529 = getelementptr inbounds i8, ptr %.0529903, i64 1
  %1145 = getelementptr inbounds i8, ptr %.0531900, i64 2
  %1146 = load i8, ptr %1141, align 1, !tbaa !24
  %1147 = getelementptr inbounds i8, ptr %.0527901, i64 2
  %1148 = load i8, ptr %1143, align 1, !tbaa !24
  %.narrow672.1 = sub i8 %1146, %1148
  store i8 %.narrow672.1, ptr %.0529, align 1, !tbaa !24
  %.0529.1 = getelementptr inbounds i8, ptr %.0529903, i64 2
  %1149 = getelementptr inbounds i8, ptr %.0531900, i64 3
  %1150 = load i8, ptr %1145, align 1, !tbaa !24
  %1151 = getelementptr inbounds i8, ptr %.0527901, i64 3
  %1152 = load i8, ptr %1147, align 1, !tbaa !24
  %.narrow672.2 = sub i8 %1150, %1152
  store i8 %.narrow672.2, ptr %.0529.1, align 1, !tbaa !24
  %.0529.2 = getelementptr inbounds i8, ptr %.0529903, i64 3
  %1153 = getelementptr inbounds i8, ptr %.0531900, i64 4
  %1154 = load i8, ptr %1149, align 1, !tbaa !24
  %1155 = getelementptr inbounds i8, ptr %.0527901, i64 4
  %1156 = load i8, ptr %1151, align 1, !tbaa !24
  %.narrow672.3 = sub i8 %1154, %1156
  store i8 %.narrow672.3, ptr %.0529.2, align 1, !tbaa !24
  %1157 = add nuw nsw i64 %.0523902, 4
  %.0529.3 = getelementptr inbounds i8, ptr %.0529903, i64 4
  %exitcond1039.not.3 = icmp eq i64 %1157, %13
  br i1 %exitcond1039.not.3, label %.preheader691, label %.lr.ph905, !llvm.loop !77

.lr.ph916:                                        ; preds = %.lr.ph916.preheader, %.lr.ph916
  %.1524915 = phi i64 [ %1177, %.lr.ph916 ], [ %.1524915.ph, %.lr.ph916.preheader ]
  %.0525914 = phi ptr [ %1164, %.lr.ph916 ], [ %.0525914.ph, %.lr.ph916.preheader ]
  %.0526913 = phi ptr [ %1161, %.lr.ph916 ], [ %.0526913.ph, %.lr.ph916.preheader ]
  %.1528912 = phi ptr [ %1158, %.lr.ph916 ], [ %.1528912.ph, %.lr.ph916.preheader ]
  %.1530911 = phi ptr [ %1176, %.lr.ph916 ], [ %.1530911.ph, %.lr.ph916.preheader ]
  %.1532910 = phi ptr [ %1174, %.lr.ph916 ], [ %.1532910.ph, %.lr.ph916.preheader ]
  %1158 = getelementptr inbounds i8, ptr %.1528912, i64 1
  %1159 = load i8, ptr %.1528912, align 1, !tbaa !24
  %1160 = zext i8 %1159 to i32
  %1161 = getelementptr inbounds i8, ptr %.0526913, i64 1
  %1162 = load i8, ptr %.0526913, align 1, !tbaa !24
  %1163 = zext i8 %1162 to i32
  %1164 = getelementptr inbounds i8, ptr %.0525914, i64 1
  %1165 = load i8, ptr %.0525914, align 1, !tbaa !24
  %1166 = zext i8 %1165 to i32
  %1167 = sub nsw i32 %1160, %1163
  %1168 = sub nsw i32 %1166, %1163
  %1169 = tail call i32 @llvm.abs.i32(i32 %1167, i1 true)
  %1170 = tail call i32 @llvm.abs.i32(i32 %1168, i1 true)
  %1171 = add nsw i32 %1168, %1167
  %1172 = tail call i32 @llvm.abs.i32(i32 %1171, i1 true)
  %.not666 = icmp ugt i32 %1169, %1170
  %.not667 = icmp ugt i32 %1169, %1172
  %or.cond689 = select i1 %.not666, i1 true, i1 %.not667
  %.not668 = icmp ugt i32 %1170, %1172
  %1173 = select i1 %.not668, i8 %1162, i8 %1159
  %.tr669 = select i1 %or.cond689, i8 %1173, i8 %1165
  %1174 = getelementptr inbounds i8, ptr %.1532910, i64 1
  %1175 = load i8, ptr %.1532910, align 1, !tbaa !24
  %.narrow670 = sub i8 %1175, %.tr669
  %1176 = getelementptr inbounds i8, ptr %.1530911, i64 1
  store i8 %.narrow670, ptr %.1530911, align 1, !tbaa !24
  %1177 = add nuw i64 %.1524915, 1
  %exitcond1040.not = icmp eq i64 %1177, %6
  br i1 %exitcond1040.not, label %.thread1059.sink.split, label %.lr.ph916, !llvm.loop !78

1178:                                             ; preds = %1081
  %.not656 = icmp sgt i8 %4, -1
  br i1 %.not656, label %.thread1059, label %1179

1179:                                             ; preds = %1178
  %1180 = getelementptr inbounds i8, ptr %0, i64 984
  %1181 = load i8, ptr %1180, align 8, !tbaa !30
  %1182 = icmp eq i8 %1181, 2
  br i1 %1182, label %1183, label %1243

1183:                                             ; preds = %1179
  %1184 = and i64 %.6487, 65535
  %1185 = lshr i64 %.6487, 10
  %1186 = and i64 %1185, 18014398509481920
  %.not954 = icmp eq i8 %8, 0
  br i1 %.not954, label %._crit_edge863, label %.lr.ph862

.lr.ph862:                                        ; preds = %1183
  %1187 = getelementptr inbounds i8, ptr %0, i64 992
  %1188 = load ptr, ptr %1187, align 8, !tbaa !31
  %1189 = getelementptr inbounds i8, ptr %0, i64 1008
  %wide.trip.count1031 = zext i8 %8 to i64
  %xtraiter1633 = and i64 %wide.trip.count1031, 1
  %1190 = icmp eq i8 %8, 1
  br i1 %1190, label %._crit_edge863.loopexit.unr-lcssa, label %.lr.ph862.new

.lr.ph862.new:                                    ; preds = %.lr.ph862
  %unroll_iter1637 = and i64 %wide.trip.count1031, 254
  br label %1191

1191:                                             ; preds = %1217, %.lr.ph862.new
  %indvars.iv1028 = phi i64 [ 0, %.lr.ph862.new ], [ %indvars.iv.next1029.1, %1217 ]
  %.0493860 = phi i64 [ %1184, %.lr.ph862.new ], [ %.1494.1, %1217 ]
  %.0495859 = phi i64 [ %1186, %.lr.ph862.new ], [ %.1496.1, %1217 ]
  %niter1638 = phi i64 [ 0, %.lr.ph862.new ], [ %niter1638.next.1, %1217 ]
  %1192 = getelementptr inbounds i8, ptr %1188, i64 %indvars.iv1028
  %1193 = load i8, ptr %1192, align 1, !tbaa !24
  %1194 = icmp eq i8 %1193, 4
  br i1 %1194, label %1195, label %1204

1195:                                             ; preds = %1191
  %1196 = load ptr, ptr %1189, align 8, !tbaa !45
  %1197 = getelementptr inbounds i16, ptr %1196, i64 %indvars.iv1028
  %1198 = load i16, ptr %1197, align 2, !tbaa !33
  %1199 = zext i16 %1198 to i64
  %1200 = mul i64 %.0493860, %1199
  %1201 = lshr i64 %1200, 8
  %1202 = mul i64 %.0495859, %1199
  %1203 = lshr i64 %1202, 8
  br label %1204

1204:                                             ; preds = %1191, %1195
  %.1496 = phi i64 [ %1203, %1195 ], [ %.0495859, %1191 ]
  %.1494 = phi i64 [ %1201, %1195 ], [ %.0493860, %1191 ]
  %indvars.iv.next1029 = or disjoint i64 %indvars.iv1028, 1
  %1205 = getelementptr inbounds i8, ptr %1188, i64 %indvars.iv.next1029
  %1206 = load i8, ptr %1205, align 1, !tbaa !24
  %1207 = icmp eq i8 %1206, 4
  br i1 %1207, label %1208, label %1217

1208:                                             ; preds = %1204
  %1209 = load ptr, ptr %1189, align 8, !tbaa !45
  %1210 = getelementptr inbounds i16, ptr %1209, i64 %indvars.iv.next1029
  %1211 = load i16, ptr %1210, align 2, !tbaa !33
  %1212 = zext i16 %1211 to i64
  %1213 = mul i64 %.1494, %1212
  %1214 = lshr i64 %1213, 8
  %1215 = mul i64 %.1496, %1212
  %1216 = lshr i64 %1215, 8
  br label %1217

1217:                                             ; preds = %1208, %1204
  %.1496.1 = phi i64 [ %1216, %1208 ], [ %.1496, %1204 ]
  %.1494.1 = phi i64 [ %1214, %1208 ], [ %.1494, %1204 ]
  %indvars.iv.next1029.1 = add nuw nsw i64 %indvars.iv1028, 2
  %niter1638.next.1 = add i64 %niter1638, 2
  %niter1638.ncmp.1 = icmp eq i64 %niter1638.next.1, %unroll_iter1637
  br i1 %niter1638.ncmp.1, label %._crit_edge863.loopexit.unr-lcssa, label %1191, !llvm.loop !79

._crit_edge863.loopexit.unr-lcssa:                ; preds = %1217, %.lr.ph862
  %.1496.lcssa.ph = phi i64 [ poison, %.lr.ph862 ], [ %.1496.1, %1217 ]
  %.1494.lcssa.ph = phi i64 [ poison, %.lr.ph862 ], [ %.1494.1, %1217 ]
  %indvars.iv1028.unr = phi i64 [ 0, %.lr.ph862 ], [ %indvars.iv.next1029.1, %1217 ]
  %.0493860.unr = phi i64 [ %1184, %.lr.ph862 ], [ %.1494.1, %1217 ]
  %.0495859.unr = phi i64 [ %1186, %.lr.ph862 ], [ %.1496.1, %1217 ]
  %lcmp.mod1634.not = icmp eq i64 %xtraiter1633, 0
  br i1 %lcmp.mod1634.not, label %._crit_edge863, label %.epil.preheader1632

.epil.preheader1632:                              ; preds = %._crit_edge863.loopexit.unr-lcssa
  %1218 = getelementptr inbounds i8, ptr %1188, i64 %indvars.iv1028.unr
  %1219 = load i8, ptr %1218, align 1, !tbaa !24
  %1220 = icmp eq i8 %1219, 4
  br i1 %1220, label %1221, label %._crit_edge863

1221:                                             ; preds = %.epil.preheader1632
  %1222 = load ptr, ptr %1189, align 8, !tbaa !45
  %1223 = getelementptr inbounds i16, ptr %1222, i64 %indvars.iv1028.unr
  %1224 = load i16, ptr %1223, align 2, !tbaa !33
  %1225 = zext i16 %1224 to i64
  %1226 = mul i64 %.0493860.unr, %1225
  %1227 = lshr i64 %1226, 8
  %1228 = mul i64 %.0495859.unr, %1225
  %1229 = lshr i64 %1228, 8
  br label %._crit_edge863

._crit_edge863:                                   ; preds = %._crit_edge863.loopexit.unr-lcssa, %1221, %.epil.preheader1632, %1183
  %.0495.lcssa = phi i64 [ %1186, %1183 ], [ %.1496.lcssa.ph, %._crit_edge863.loopexit.unr-lcssa ], [ %1229, %1221 ], [ %.0495859.unr, %.epil.preheader1632 ]
  %.0493.lcssa = phi i64 [ %1184, %1183 ], [ %.1494.lcssa.ph, %._crit_edge863.loopexit.unr-lcssa ], [ %1227, %1221 ], [ %.0493860.unr, %.epil.preheader1632 ]
  %1230 = getelementptr inbounds i8, ptr %0, i64 1024
  %1231 = load ptr, ptr %1230, align 8, !tbaa !47
  %1232 = getelementptr inbounds i8, ptr %1231, i64 8
  %1233 = load i16, ptr %1232, align 2, !tbaa !33
  %1234 = zext i16 %1233 to i64
  %1235 = mul i64 %.0495.lcssa, %1234
  %1236 = icmp ugt i64 %1235, 144115188075855367
  br i1 %1236, label %1243, label %1237

1237:                                             ; preds = %._crit_edge863
  %1238 = mul i64 %.0493.lcssa, %1234
  %1239 = lshr i64 %1238, 3
  %1240 = shl nuw i64 %1235, 7
  %1241 = and i64 %1240, -1024
  %1242 = add i64 %1241, %1239
  br label %1243

1243:                                             ; preds = %1237, %._crit_edge863, %1179
  %.1501 = phi i64 [ %.6487, %1179 ], [ %1242, %1237 ], [ 9223372036854775807, %._crit_edge863 ]
  %1244 = getelementptr inbounds i8, ptr %18, i64 1
  %1245 = getelementptr inbounds i8, ptr %0, i64 560
  %1246 = load ptr, ptr %1245, align 8, !tbaa !72
  %1247 = ptrtoint ptr %1246 to i64
  %1248 = getelementptr inbounds i8, ptr %15, i64 1
  %.0511866 = getelementptr inbounds i8, ptr %1246, i64 1
  %.not955 = icmp eq i8 %10, 0
  br i1 %.not955, label %.preheader692, label %.lr.ph873.preheader

.lr.ph873.preheader:                              ; preds = %1243
  %min.iters.check1400 = icmp ult i8 %10, 41
  br i1 %min.iters.check1400, label %.lr.ph873.preheader1535, label %vector.memcheck1394

.lr.ph873.preheader1535:                          ; preds = %middle.block1398, %vector.memcheck1394, %.lr.ph873.preheader
  %.0511871.ph = phi ptr [ %.0511866, %vector.memcheck1394 ], [ %.0511866, %.lr.ph873.preheader ], [ %ind.end1404, %middle.block1398 ]
  %.0498870.ph = phi i64 [ 0, %vector.memcheck1394 ], [ 0, %.lr.ph873.preheader ], [ %n.vec1403, %middle.block1398 ]
  %.0502869.ph = phi i64 [ 0, %vector.memcheck1394 ], [ 0, %.lr.ph873.preheader ], [ %1395, %middle.block1398 ]
  %.0509868.ph = phi ptr [ %1248, %vector.memcheck1394 ], [ %1248, %.lr.ph873.preheader ], [ %ind.end1407, %middle.block1398 ]
  %.0513867.ph = phi ptr [ %1244, %vector.memcheck1394 ], [ %1244, %.lr.ph873.preheader ], [ %ind.end1409, %middle.block1398 ]
  %.neg1688 = or disjoint i64 %.0498870.ph, 1
  %1249 = and i64 %12, 8
  %lcmp.mod1640.not = icmp eq i64 %1249, 0
  br i1 %lcmp.mod1640.not, label %.lr.ph873.prol.loopexit, label %.lr.ph873.prol

.lr.ph873.prol:                                   ; preds = %.lr.ph873.preheader1535
  %1250 = getelementptr inbounds i8, ptr %.0513867.ph, i64 1
  %1251 = load i8, ptr %.0513867.ph, align 1, !tbaa !24
  %1252 = getelementptr inbounds i8, ptr %.0509868.ph, i64 1
  %1253 = load i8, ptr %.0509868.ph, align 1, !tbaa !24
  %.narrow663.prol = sub i8 %1251, %1253
  store i8 %.narrow663.prol, ptr %.0511871.ph, align 1, !tbaa !24
  %1254 = zext i8 %.narrow663.prol to i32
  %1255 = sub nuw nsw i32 256, %1254
  %1256 = icmp slt i8 %.narrow663.prol, 0
  %1257 = select i1 %1256, i32 %1255, i32 %1254
  %1258 = zext nneg i32 %1257 to i64
  %1259 = add i64 %.0502869.ph, %1258
  %1260 = or disjoint i64 %.0498870.ph, 1
  %.0511.prol = getelementptr inbounds i8, ptr %.0511871.ph, i64 1
  br label %.lr.ph873.prol.loopexit

.lr.ph873.prol.loopexit:                          ; preds = %.lr.ph873.prol, %.lr.ph873.preheader1535
  %.lcssa1539.unr = phi ptr [ poison, %.lr.ph873.preheader1535 ], [ %1250, %.lr.ph873.prol ]
  %.lcssa1538.unr = phi ptr [ poison, %.lr.ph873.preheader1535 ], [ %1252, %.lr.ph873.prol ]
  %.lcssa1537.unr = phi i64 [ poison, %.lr.ph873.preheader1535 ], [ %1259, %.lr.ph873.prol ]
  %.0511.lcssa1536.unr = phi ptr [ poison, %.lr.ph873.preheader1535 ], [ %.0511.prol, %.lr.ph873.prol ]
  %.0511871.unr = phi ptr [ %.0511871.ph, %.lr.ph873.preheader1535 ], [ %.0511.prol, %.lr.ph873.prol ]
  %.0498870.unr = phi i64 [ %.0498870.ph, %.lr.ph873.preheader1535 ], [ %1260, %.lr.ph873.prol ]
  %.0502869.unr = phi i64 [ %.0502869.ph, %.lr.ph873.preheader1535 ], [ %1259, %.lr.ph873.prol ]
  %.0509868.unr = phi ptr [ %.0509868.ph, %.lr.ph873.preheader1535 ], [ %1252, %.lr.ph873.prol ]
  %.0513867.unr = phi ptr [ %.0513867.ph, %.lr.ph873.preheader1535 ], [ %1250, %.lr.ph873.prol ]
  %1261 = icmp eq i64 %13, %.neg1688
  br i1 %1261, label %.preheader692, label %.lr.ph873

vector.memcheck1394:                              ; preds = %.lr.ph873.preheader
  %1262 = sub i64 %1247, %19
  %diff.check1395 = icmp ult i64 %1262, 4
  %1263 = sub i64 %1247, %16
  %diff.check1396 = icmp ult i64 %1263, 4
  %conflict.rdx1397 = or i1 %diff.check1395, %diff.check1396
  br i1 %conflict.rdx1397, label %.lr.ph873.preheader1535, label %vector.ph1401

vector.ph1401:                                    ; preds = %vector.memcheck1394
  %n.vec1403 = and i64 %13, 60
  %ind.end1404 = getelementptr i8, ptr %.0511866, i64 %n.vec1403
  %ind.end1407 = getelementptr i8, ptr %1248, i64 %n.vec1403
  %ind.end1409 = getelementptr i8, ptr %1244, i64 %n.vec1403
  %1264 = getelementptr i8, ptr %18, i64 3
  %wide.load1421 = load <2 x i8>, ptr %1244, align 1, !tbaa !24
  %wide.load1422 = load <2 x i8>, ptr %1264, align 1, !tbaa !24
  %1265 = getelementptr i8, ptr %15, i64 3
  %wide.load1423 = load <2 x i8>, ptr %1248, align 1, !tbaa !24
  %wide.load1424 = load <2 x i8>, ptr %1265, align 1, !tbaa !24
  %1266 = sub <2 x i8> %wide.load1421, %wide.load1423
  %1267 = sub <2 x i8> %wide.load1422, %wide.load1424
  %1268 = getelementptr i8, ptr %1246, i64 3
  store <2 x i8> %1266, ptr %.0511866, align 1, !tbaa !24
  store <2 x i8> %1267, ptr %1268, align 1, !tbaa !24
  %1269 = zext <2 x i8> %1266 to <2 x i32>
  %1270 = zext <2 x i8> %1267 to <2 x i32>
  %1271 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1269
  %1272 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1270
  %1273 = icmp slt <2 x i8> %1266, zeroinitializer
  %1274 = icmp slt <2 x i8> %1267, zeroinitializer
  %1275 = select <2 x i1> %1273, <2 x i32> %1271, <2 x i32> %1269
  %1276 = select <2 x i1> %1274, <2 x i32> %1272, <2 x i32> %1270
  %1277 = zext nneg <2 x i32> %1275 to <2 x i64>
  %1278 = zext nneg <2 x i32> %1276 to <2 x i64>
  %1279 = icmp eq i64 %n.vec1403, 4
  br i1 %1279, label %middle.block1398, label %vector.body1411.1, !llvm.loop !80

vector.body1411.1:                                ; preds = %vector.ph1401
  %next.gep1415.1 = getelementptr i8, ptr %1246, i64 5
  %next.gep1417.1 = getelementptr i8, ptr %15, i64 5
  %next.gep1419.1 = getelementptr i8, ptr %18, i64 5
  %1280 = getelementptr i8, ptr %18, i64 7
  %wide.load1421.1 = load <2 x i8>, ptr %next.gep1419.1, align 1, !tbaa !24
  %wide.load1422.1 = load <2 x i8>, ptr %1280, align 1, !tbaa !24
  %1281 = getelementptr i8, ptr %15, i64 7
  %wide.load1423.1 = load <2 x i8>, ptr %next.gep1417.1, align 1, !tbaa !24
  %wide.load1424.1 = load <2 x i8>, ptr %1281, align 1, !tbaa !24
  %1282 = sub <2 x i8> %wide.load1421.1, %wide.load1423.1
  %1283 = sub <2 x i8> %wide.load1422.1, %wide.load1424.1
  %1284 = getelementptr i8, ptr %1246, i64 7
  store <2 x i8> %1282, ptr %next.gep1415.1, align 1, !tbaa !24
  store <2 x i8> %1283, ptr %1284, align 1, !tbaa !24
  %1285 = zext <2 x i8> %1282 to <2 x i32>
  %1286 = zext <2 x i8> %1283 to <2 x i32>
  %1287 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1285
  %1288 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1286
  %1289 = icmp slt <2 x i8> %1282, zeroinitializer
  %1290 = icmp slt <2 x i8> %1283, zeroinitializer
  %1291 = select <2 x i1> %1289, <2 x i32> %1287, <2 x i32> %1285
  %1292 = select <2 x i1> %1290, <2 x i32> %1288, <2 x i32> %1286
  %narrow1678 = add nuw nsw <2 x i32> %1275, %1291
  %1293 = zext nneg <2 x i32> %narrow1678 to <2 x i64>
  %narrow1679 = add nuw nsw <2 x i32> %1276, %1292
  %1294 = zext nneg <2 x i32> %narrow1679 to <2 x i64>
  %1295 = icmp eq i64 %n.vec1403, 8
  br i1 %1295, label %middle.block1398, label %vector.body1411.2, !llvm.loop !80

vector.body1411.2:                                ; preds = %vector.body1411.1
  %next.gep1415.2 = getelementptr i8, ptr %1246, i64 9
  %next.gep1417.2 = getelementptr i8, ptr %15, i64 9
  %next.gep1419.2 = getelementptr i8, ptr %18, i64 9
  %1296 = getelementptr i8, ptr %18, i64 11
  %wide.load1421.2 = load <2 x i8>, ptr %next.gep1419.2, align 1, !tbaa !24
  %wide.load1422.2 = load <2 x i8>, ptr %1296, align 1, !tbaa !24
  %1297 = getelementptr i8, ptr %15, i64 11
  %wide.load1423.2 = load <2 x i8>, ptr %next.gep1417.2, align 1, !tbaa !24
  %wide.load1424.2 = load <2 x i8>, ptr %1297, align 1, !tbaa !24
  %1298 = sub <2 x i8> %wide.load1421.2, %wide.load1423.2
  %1299 = sub <2 x i8> %wide.load1422.2, %wide.load1424.2
  %1300 = getelementptr i8, ptr %1246, i64 11
  store <2 x i8> %1298, ptr %next.gep1415.2, align 1, !tbaa !24
  store <2 x i8> %1299, ptr %1300, align 1, !tbaa !24
  %1301 = zext <2 x i8> %1298 to <2 x i32>
  %1302 = zext <2 x i8> %1299 to <2 x i32>
  %1303 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1301
  %1304 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1302
  %1305 = icmp slt <2 x i8> %1298, zeroinitializer
  %1306 = icmp slt <2 x i8> %1299, zeroinitializer
  %1307 = select <2 x i1> %1305, <2 x i32> %1303, <2 x i32> %1301
  %1308 = select <2 x i1> %1306, <2 x i32> %1304, <2 x i32> %1302
  %narrow1680 = add nuw nsw <2 x i32> %narrow1678, %1307
  %1309 = zext nneg <2 x i32> %narrow1680 to <2 x i64>
  %narrow1681 = add nuw nsw <2 x i32> %narrow1679, %1308
  %1310 = zext nneg <2 x i32> %narrow1681 to <2 x i64>
  %1311 = icmp eq i64 %n.vec1403, 12
  br i1 %1311, label %middle.block1398, label %vector.body1411.3, !llvm.loop !80

vector.body1411.3:                                ; preds = %vector.body1411.2
  %next.gep1415.3 = getelementptr i8, ptr %1246, i64 13
  %next.gep1417.3 = getelementptr i8, ptr %15, i64 13
  %next.gep1419.3 = getelementptr i8, ptr %18, i64 13
  %1312 = getelementptr i8, ptr %18, i64 15
  %wide.load1421.3 = load <2 x i8>, ptr %next.gep1419.3, align 1, !tbaa !24
  %wide.load1422.3 = load <2 x i8>, ptr %1312, align 1, !tbaa !24
  %1313 = getelementptr i8, ptr %15, i64 15
  %wide.load1423.3 = load <2 x i8>, ptr %next.gep1417.3, align 1, !tbaa !24
  %wide.load1424.3 = load <2 x i8>, ptr %1313, align 1, !tbaa !24
  %1314 = sub <2 x i8> %wide.load1421.3, %wide.load1423.3
  %1315 = sub <2 x i8> %wide.load1422.3, %wide.load1424.3
  %1316 = getelementptr i8, ptr %1246, i64 15
  store <2 x i8> %1314, ptr %next.gep1415.3, align 1, !tbaa !24
  store <2 x i8> %1315, ptr %1316, align 1, !tbaa !24
  %1317 = zext <2 x i8> %1314 to <2 x i32>
  %1318 = zext <2 x i8> %1315 to <2 x i32>
  %1319 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1317
  %1320 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1318
  %1321 = icmp slt <2 x i8> %1314, zeroinitializer
  %1322 = icmp slt <2 x i8> %1315, zeroinitializer
  %1323 = select <2 x i1> %1321, <2 x i32> %1319, <2 x i32> %1317
  %1324 = select <2 x i1> %1322, <2 x i32> %1320, <2 x i32> %1318
  %narrow1682 = add nuw nsw <2 x i32> %narrow1680, %1323
  %1325 = zext nneg <2 x i32> %narrow1682 to <2 x i64>
  %narrow1683 = add nuw nsw <2 x i32> %narrow1681, %1324
  %1326 = zext nneg <2 x i32> %narrow1683 to <2 x i64>
  %1327 = icmp eq i64 %n.vec1403, 16
  br i1 %1327, label %middle.block1398, label %vector.body1411.4, !llvm.loop !80

vector.body1411.4:                                ; preds = %vector.body1411.3
  %next.gep1415.4 = getelementptr i8, ptr %1246, i64 17
  %next.gep1417.4 = getelementptr i8, ptr %15, i64 17
  %next.gep1419.4 = getelementptr i8, ptr %18, i64 17
  %1328 = getelementptr i8, ptr %18, i64 19
  %wide.load1421.4 = load <2 x i8>, ptr %next.gep1419.4, align 1, !tbaa !24
  %wide.load1422.4 = load <2 x i8>, ptr %1328, align 1, !tbaa !24
  %1329 = getelementptr i8, ptr %15, i64 19
  %wide.load1423.4 = load <2 x i8>, ptr %next.gep1417.4, align 1, !tbaa !24
  %wide.load1424.4 = load <2 x i8>, ptr %1329, align 1, !tbaa !24
  %1330 = sub <2 x i8> %wide.load1421.4, %wide.load1423.4
  %1331 = sub <2 x i8> %wide.load1422.4, %wide.load1424.4
  %1332 = getelementptr i8, ptr %1246, i64 19
  store <2 x i8> %1330, ptr %next.gep1415.4, align 1, !tbaa !24
  store <2 x i8> %1331, ptr %1332, align 1, !tbaa !24
  %1333 = zext <2 x i8> %1330 to <2 x i32>
  %1334 = zext <2 x i8> %1331 to <2 x i32>
  %1335 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1333
  %1336 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1334
  %1337 = icmp slt <2 x i8> %1330, zeroinitializer
  %1338 = icmp slt <2 x i8> %1331, zeroinitializer
  %1339 = select <2 x i1> %1337, <2 x i32> %1335, <2 x i32> %1333
  %1340 = select <2 x i1> %1338, <2 x i32> %1336, <2 x i32> %1334
  %narrow1684 = add nuw nsw <2 x i32> %narrow1682, %1339
  %1341 = zext nneg <2 x i32> %narrow1684 to <2 x i64>
  %narrow1685 = add nuw nsw <2 x i32> %narrow1683, %1340
  %1342 = zext nneg <2 x i32> %narrow1685 to <2 x i64>
  %1343 = icmp eq i64 %n.vec1403, 20
  br i1 %1343, label %middle.block1398, label %vector.body1411.5, !llvm.loop !80

vector.body1411.5:                                ; preds = %vector.body1411.4
  %next.gep1415.5 = getelementptr i8, ptr %1246, i64 21
  %next.gep1417.5 = getelementptr i8, ptr %15, i64 21
  %next.gep1419.5 = getelementptr i8, ptr %18, i64 21
  %1344 = getelementptr i8, ptr %18, i64 23
  %wide.load1421.5 = load <2 x i8>, ptr %next.gep1419.5, align 1, !tbaa !24
  %wide.load1422.5 = load <2 x i8>, ptr %1344, align 1, !tbaa !24
  %1345 = getelementptr i8, ptr %15, i64 23
  %wide.load1423.5 = load <2 x i8>, ptr %next.gep1417.5, align 1, !tbaa !24
  %wide.load1424.5 = load <2 x i8>, ptr %1345, align 1, !tbaa !24
  %1346 = sub <2 x i8> %wide.load1421.5, %wide.load1423.5
  %1347 = sub <2 x i8> %wide.load1422.5, %wide.load1424.5
  %1348 = getelementptr i8, ptr %1246, i64 23
  store <2 x i8> %1346, ptr %next.gep1415.5, align 1, !tbaa !24
  store <2 x i8> %1347, ptr %1348, align 1, !tbaa !24
  %1349 = zext <2 x i8> %1346 to <2 x i32>
  %1350 = zext <2 x i8> %1347 to <2 x i32>
  %1351 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1349
  %1352 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1350
  %1353 = icmp slt <2 x i8> %1346, zeroinitializer
  %1354 = icmp slt <2 x i8> %1347, zeroinitializer
  %1355 = select <2 x i1> %1353, <2 x i32> %1351, <2 x i32> %1349
  %1356 = select <2 x i1> %1354, <2 x i32> %1352, <2 x i32> %1350
  %narrow1686 = add nuw nsw <2 x i32> %narrow1684, %1355
  %1357 = zext <2 x i32> %narrow1686 to <2 x i64>
  %narrow1687 = add nuw nsw <2 x i32> %narrow1685, %1356
  %1358 = zext <2 x i32> %narrow1687 to <2 x i64>
  %1359 = icmp eq i64 %n.vec1403, 24
  br i1 %1359, label %middle.block1398, label %vector.body1411.6, !llvm.loop !80

vector.body1411.6:                                ; preds = %vector.body1411.5
  %next.gep1415.6 = getelementptr i8, ptr %1246, i64 25
  %next.gep1417.6 = getelementptr i8, ptr %15, i64 25
  %next.gep1419.6 = getelementptr i8, ptr %18, i64 25
  %1360 = getelementptr i8, ptr %18, i64 27
  %wide.load1421.6 = load <2 x i8>, ptr %next.gep1419.6, align 1, !tbaa !24
  %wide.load1422.6 = load <2 x i8>, ptr %1360, align 1, !tbaa !24
  %1361 = getelementptr i8, ptr %15, i64 27
  %wide.load1423.6 = load <2 x i8>, ptr %next.gep1417.6, align 1, !tbaa !24
  %wide.load1424.6 = load <2 x i8>, ptr %1361, align 1, !tbaa !24
  %1362 = sub <2 x i8> %wide.load1421.6, %wide.load1423.6
  %1363 = sub <2 x i8> %wide.load1422.6, %wide.load1424.6
  %1364 = getelementptr i8, ptr %1246, i64 27
  store <2 x i8> %1362, ptr %next.gep1415.6, align 1, !tbaa !24
  store <2 x i8> %1363, ptr %1364, align 1, !tbaa !24
  %1365 = zext <2 x i8> %1362 to <2 x i32>
  %1366 = zext <2 x i8> %1363 to <2 x i32>
  %1367 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1365
  %1368 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1366
  %1369 = icmp slt <2 x i8> %1362, zeroinitializer
  %1370 = icmp slt <2 x i8> %1363, zeroinitializer
  %1371 = select <2 x i1> %1369, <2 x i32> %1367, <2 x i32> %1365
  %1372 = select <2 x i1> %1370, <2 x i32> %1368, <2 x i32> %1366
  %1373 = zext nneg <2 x i32> %1371 to <2 x i64>
  %1374 = zext nneg <2 x i32> %1372 to <2 x i64>
  %1375 = add nuw nsw <2 x i64> %1357, %1373
  %1376 = add nuw nsw <2 x i64> %1358, %1374
  %1377 = icmp eq i64 %n.vec1403, 28
  br i1 %1377, label %middle.block1398, label %vector.body1411.7, !llvm.loop !80

vector.body1411.7:                                ; preds = %vector.body1411.6
  %next.gep1415.7 = getelementptr i8, ptr %1246, i64 29
  %next.gep1417.7 = getelementptr i8, ptr %15, i64 29
  %next.gep1419.7 = getelementptr i8, ptr %18, i64 29
  %1378 = getelementptr i8, ptr %18, i64 31
  %wide.load1421.7 = load <2 x i8>, ptr %next.gep1419.7, align 1, !tbaa !24
  %wide.load1422.7 = load <2 x i8>, ptr %1378, align 1, !tbaa !24
  %1379 = getelementptr i8, ptr %15, i64 31
  %wide.load1423.7 = load <2 x i8>, ptr %next.gep1417.7, align 1, !tbaa !24
  %wide.load1424.7 = load <2 x i8>, ptr %1379, align 1, !tbaa !24
  %1380 = sub <2 x i8> %wide.load1421.7, %wide.load1423.7
  %1381 = sub <2 x i8> %wide.load1422.7, %wide.load1424.7
  %1382 = getelementptr i8, ptr %1246, i64 31
  store <2 x i8> %1380, ptr %next.gep1415.7, align 1, !tbaa !24
  store <2 x i8> %1381, ptr %1382, align 1, !tbaa !24
  %1383 = zext <2 x i8> %1380 to <2 x i32>
  %1384 = zext <2 x i8> %1381 to <2 x i32>
  %1385 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1383
  %1386 = sub nuw nsw <2 x i32> <i32 256, i32 256>, %1384
  %1387 = icmp slt <2 x i8> %1380, zeroinitializer
  %1388 = icmp slt <2 x i8> %1381, zeroinitializer
  %1389 = select <2 x i1> %1387, <2 x i32> %1385, <2 x i32> %1383
  %1390 = select <2 x i1> %1388, <2 x i32> %1386, <2 x i32> %1384
  %1391 = zext nneg <2 x i32> %1389 to <2 x i64>
  %1392 = zext nneg <2 x i32> %1390 to <2 x i64>
  %1393 = add nuw nsw <2 x i64> %1375, %1391
  %1394 = add nuw nsw <2 x i64> %1376, %1392
  br label %middle.block1398

middle.block1398:                                 ; preds = %vector.body1411.7, %vector.body1411.6, %vector.body1411.5, %vector.body1411.4, %vector.body1411.3, %vector.body1411.2, %vector.body1411.1, %vector.ph1401
  %.lcssa1541 = phi <2 x i64> [ %1277, %vector.ph1401 ], [ %1293, %vector.body1411.1 ], [ %1309, %vector.body1411.2 ], [ %1325, %vector.body1411.3 ], [ %1341, %vector.body1411.4 ], [ %1357, %vector.body1411.5 ], [ %1375, %vector.body1411.6 ], [ %1393, %vector.body1411.7 ]
  %.lcssa1540 = phi <2 x i64> [ %1278, %vector.ph1401 ], [ %1294, %vector.body1411.1 ], [ %1310, %vector.body1411.2 ], [ %1326, %vector.body1411.3 ], [ %1342, %vector.body1411.4 ], [ %1358, %vector.body1411.5 ], [ %1376, %vector.body1411.6 ], [ %1394, %vector.body1411.7 ]
  %bin.rdx1426 = add <2 x i64> %.lcssa1540, %.lcssa1541
  %1395 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx1426)
  %cmp.n1427 = icmp eq i64 %13, %n.vec1403
  br i1 %cmp.n1427, label %.preheader692, label %.lr.ph873.preheader1535

.preheader692:                                    ; preds = %.lr.ph873.prol.loopexit, %.lr.ph873, %middle.block1398, %1243
  %.0513.lcssa = phi ptr [ %1244, %1243 ], [ %ind.end1409, %middle.block1398 ], [ %.lcssa1539.unr, %.lr.ph873.prol.loopexit ], [ %1407, %.lr.ph873 ]
  %.0509.lcssa = phi ptr [ %1248, %1243 ], [ %ind.end1407, %middle.block1398 ], [ %.lcssa1538.unr, %.lr.ph873.prol.loopexit ], [ %1409, %.lr.ph873 ]
  %.0502.lcssa = phi i64 [ 0, %1243 ], [ %1395, %middle.block1398 ], [ %.lcssa1537.unr, %.lr.ph873.prol.loopexit ], [ %1416, %.lr.ph873 ]
  %.0498.lcssa = phi i64 [ 0, %1243 ], [ %13, %middle.block1398 ], [ %13, %.lr.ph873 ], [ %13, %.lr.ph873.prol.loopexit ]
  %.0511.lcssa = phi ptr [ %.0511866, %1243 ], [ %ind.end1404, %middle.block1398 ], [ %.0511.lcssa1536.unr, %.lr.ph873.prol.loopexit ], [ %.0511.1, %.lr.ph873 ]
  %1396 = icmp ult i64 %.0498.lcssa, %6
  br i1 %1396, label %.lr.ph886, label %._crit_edge887

.lr.ph873:                                        ; preds = %.lr.ph873.prol.loopexit, %.lr.ph873
  %.0511871 = phi ptr [ %.0511.1, %.lr.ph873 ], [ %.0511871.unr, %.lr.ph873.prol.loopexit ]
  %.0498870 = phi i64 [ %1417, %.lr.ph873 ], [ %.0498870.unr, %.lr.ph873.prol.loopexit ]
  %.0502869 = phi i64 [ %1416, %.lr.ph873 ], [ %.0502869.unr, %.lr.ph873.prol.loopexit ]
  %.0509868 = phi ptr [ %1409, %.lr.ph873 ], [ %.0509868.unr, %.lr.ph873.prol.loopexit ]
  %.0513867 = phi ptr [ %1407, %.lr.ph873 ], [ %.0513867.unr, %.lr.ph873.prol.loopexit ]
  %1397 = getelementptr inbounds i8, ptr %.0513867, i64 1
  %1398 = load i8, ptr %.0513867, align 1, !tbaa !24
  %1399 = getelementptr inbounds i8, ptr %.0509868, i64 1
  %1400 = load i8, ptr %.0509868, align 1, !tbaa !24
  %.narrow663 = sub i8 %1398, %1400
  store i8 %.narrow663, ptr %.0511871, align 1, !tbaa !24
  %1401 = zext i8 %.narrow663 to i32
  %1402 = sub nuw nsw i32 256, %1401
  %1403 = icmp slt i8 %.narrow663, 0
  %1404 = select i1 %1403, i32 %1402, i32 %1401
  %1405 = zext nneg i32 %1404 to i64
  %1406 = add i64 %.0502869, %1405
  %.0511 = getelementptr inbounds i8, ptr %.0511871, i64 1
  %1407 = getelementptr inbounds i8, ptr %.0513867, i64 2
  %1408 = load i8, ptr %1397, align 1, !tbaa !24
  %1409 = getelementptr inbounds i8, ptr %.0509868, i64 2
  %1410 = load i8, ptr %1399, align 1, !tbaa !24
  %.narrow663.1 = sub i8 %1408, %1410
  store i8 %.narrow663.1, ptr %.0511, align 1, !tbaa !24
  %1411 = zext i8 %.narrow663.1 to i32
  %1412 = sub nuw nsw i32 256, %1411
  %1413 = icmp slt i8 %.narrow663.1, 0
  %1414 = select i1 %1413, i32 %1412, i32 %1411
  %1415 = zext nneg i32 %1414 to i64
  %1416 = add i64 %1406, %1415
  %1417 = add nuw nsw i64 %.0498870, 2
  %.0511.1 = getelementptr inbounds i8, ptr %.0511871, i64 2
  %exitcond1033.not.1 = icmp eq i64 %1417, %13
  br i1 %exitcond1033.not.1, label %.preheader692, label %.lr.ph873, !llvm.loop !81

.lr.ph886:                                        ; preds = %.preheader692, %.lr.ph886
  %.1499885 = phi i64 [ %1444, %.lr.ph886 ], [ %.0498.lcssa, %.preheader692 ]
  %.1503884 = phi i64 [ %1437, %.lr.ph886 ], [ %.0502.lcssa, %.preheader692 ]
  %.0507883 = phi ptr [ %1441, %.lr.ph886 ], [ %1244, %.preheader692 ]
  %.0508882 = phi ptr [ %1442, %.lr.ph886 ], [ %1248, %.preheader692 ]
  %.1510881 = phi ptr [ %1443, %.lr.ph886 ], [ %.0509.lcssa, %.preheader692 ]
  %.1512880 = phi ptr [ %1439, %.lr.ph886 ], [ %.0511.lcssa, %.preheader692 ]
  %.1514879 = phi ptr [ %1440, %.lr.ph886 ], [ %.0513.lcssa, %.preheader692 ]
  %1418 = load i8, ptr %.1510881, align 1, !tbaa !24
  %1419 = zext i8 %1418 to i32
  %1420 = load i8, ptr %.0508882, align 1, !tbaa !24
  %1421 = zext i8 %1420 to i32
  %1422 = load i8, ptr %.0507883, align 1, !tbaa !24
  %1423 = zext i8 %1422 to i32
  %1424 = sub nsw i32 %1419, %1421
  %1425 = sub nsw i32 %1423, %1421
  %1426 = tail call i32 @llvm.abs.i32(i32 %1424, i1 true)
  %1427 = tail call i32 @llvm.abs.i32(i32 %1425, i1 true)
  %1428 = add nsw i32 %1425, %1424
  %1429 = tail call i32 @llvm.abs.i32(i32 %1428, i1 true)
  %.not657 = icmp ugt i32 %1426, %1427
  %.not658 = icmp ugt i32 %1426, %1429
  %or.cond690 = select i1 %.not657, i1 true, i1 %.not658
  %.not659 = icmp ugt i32 %1427, %1429
  %1430 = select i1 %.not659, i8 %1420, i8 %1418
  %.tr660 = select i1 %or.cond690, i8 %1430, i8 %1422
  %1431 = load i8, ptr %.1514879, align 1, !tbaa !24
  %.narrow661 = sub i8 %1431, %.tr660
  store i8 %.narrow661, ptr %.1512880, align 1, !tbaa !24
  %1432 = zext i8 %.narrow661 to i32
  %1433 = sub nuw nsw i32 256, %1432
  %1434 = icmp slt i8 %.narrow661, 0
  %1435 = select i1 %1434, i32 %1433, i32 %1432
  %1436 = zext nneg i32 %1435 to i64
  %1437 = add i64 %.1503884, %1436
  %1438 = icmp ule i64 %1437, %.1501
  %1439 = getelementptr inbounds i8, ptr %.1512880, i64 1
  %1440 = getelementptr inbounds i8, ptr %.1514879, i64 1
  %1441 = getelementptr inbounds i8, ptr %.0507883, i64 1
  %1442 = getelementptr inbounds i8, ptr %.0508882, i64 1
  %1443 = getelementptr inbounds i8, ptr %.1510881, i64 1
  %1444 = add nuw i64 %.1499885, 1
  %1445 = icmp ult i64 %1444, %6
  %or.cond939 = select i1 %1438, i1 %1445, i1 false
  br i1 %or.cond939, label %.lr.ph886, label %._crit_edge887, !llvm.loop !82

._crit_edge887:                                   ; preds = %.lr.ph886, %.preheader692
  %.2504 = phi i64 [ %.0502.lcssa, %.preheader692 ], [ %1437, %.lr.ph886 ]
  %1446 = load i8, ptr %1180, align 8, !tbaa !30
  %1447 = icmp eq i8 %1446, 2
  br i1 %1447, label %1448, label %1508

1448:                                             ; preds = %._crit_edge887
  %1449 = and i64 %.2504, 65535
  %1450 = lshr i64 %.2504, 10
  %1451 = and i64 %1450, 18014398509481920
  %.not956 = icmp eq i8 %8, 0
  br i1 %.not956, label %._crit_edge896, label %.lr.ph895

.lr.ph895:                                        ; preds = %1448
  %1452 = getelementptr inbounds i8, ptr %0, i64 992
  %1453 = load ptr, ptr %1452, align 8, !tbaa !31
  %1454 = getelementptr inbounds i8, ptr %0, i64 1000
  %wide.trip.count1037 = zext i8 %8 to i64
  %xtraiter1643 = and i64 %wide.trip.count1037, 1
  %1455 = icmp eq i8 %8, 1
  br i1 %1455, label %._crit_edge896.loopexit.unr-lcssa, label %.lr.ph895.new

.lr.ph895.new:                                    ; preds = %.lr.ph895
  %unroll_iter1647 = and i64 %wide.trip.count1037, 254
  br label %1456

1456:                                             ; preds = %1482, %.lr.ph895.new
  %indvars.iv1034 = phi i64 [ 0, %.lr.ph895.new ], [ %indvars.iv.next1035.1, %1482 ]
  %.0474893 = phi i64 [ %1449, %.lr.ph895.new ], [ %.1.1, %1482 ]
  %.0475892 = phi i64 [ %1451, %.lr.ph895.new ], [ %.1476.1, %1482 ]
  %niter1648 = phi i64 [ 0, %.lr.ph895.new ], [ %niter1648.next.1, %1482 ]
  %1457 = getelementptr inbounds i8, ptr %1453, i64 %indvars.iv1034
  %1458 = load i8, ptr %1457, align 1, !tbaa !24
  %1459 = icmp eq i8 %1458, 4
  br i1 %1459, label %1460, label %1469

1460:                                             ; preds = %1456
  %1461 = load ptr, ptr %1454, align 8, !tbaa !32
  %1462 = getelementptr inbounds i16, ptr %1461, i64 %indvars.iv1034
  %1463 = load i16, ptr %1462, align 2, !tbaa !33
  %1464 = zext i16 %1463 to i64
  %1465 = mul i64 %.0474893, %1464
  %1466 = lshr i64 %1465, 8
  %1467 = mul i64 %.0475892, %1464
  %1468 = lshr i64 %1467, 8
  br label %1469

1469:                                             ; preds = %1456, %1460
  %.1476 = phi i64 [ %1468, %1460 ], [ %.0475892, %1456 ]
  %.1 = phi i64 [ %1466, %1460 ], [ %.0474893, %1456 ]
  %indvars.iv.next1035 = or disjoint i64 %indvars.iv1034, 1
  %1470 = getelementptr inbounds i8, ptr %1453, i64 %indvars.iv.next1035
  %1471 = load i8, ptr %1470, align 1, !tbaa !24
  %1472 = icmp eq i8 %1471, 4
  br i1 %1472, label %1473, label %1482

1473:                                             ; preds = %1469
  %1474 = load ptr, ptr %1454, align 8, !tbaa !32
  %1475 = getelementptr inbounds i16, ptr %1474, i64 %indvars.iv.next1035
  %1476 = load i16, ptr %1475, align 2, !tbaa !33
  %1477 = zext i16 %1476 to i64
  %1478 = mul i64 %.1, %1477
  %1479 = lshr i64 %1478, 8
  %1480 = mul i64 %.1476, %1477
  %1481 = lshr i64 %1480, 8
  br label %1482

1482:                                             ; preds = %1473, %1469
  %.1476.1 = phi i64 [ %1481, %1473 ], [ %.1476, %1469 ]
  %.1.1 = phi i64 [ %1479, %1473 ], [ %.1, %1469 ]
  %indvars.iv.next1035.1 = add nuw nsw i64 %indvars.iv1034, 2
  %niter1648.next.1 = add i64 %niter1648, 2
  %niter1648.ncmp.1 = icmp eq i64 %niter1648.next.1, %unroll_iter1647
  br i1 %niter1648.ncmp.1, label %._crit_edge896.loopexit.unr-lcssa, label %1456, !llvm.loop !83

._crit_edge896.loopexit.unr-lcssa:                ; preds = %1482, %.lr.ph895
  %.1476.lcssa.ph = phi i64 [ poison, %.lr.ph895 ], [ %.1476.1, %1482 ]
  %.1.lcssa.ph = phi i64 [ poison, %.lr.ph895 ], [ %.1.1, %1482 ]
  %indvars.iv1034.unr = phi i64 [ 0, %.lr.ph895 ], [ %indvars.iv.next1035.1, %1482 ]
  %.0474893.unr = phi i64 [ %1449, %.lr.ph895 ], [ %.1.1, %1482 ]
  %.0475892.unr = phi i64 [ %1451, %.lr.ph895 ], [ %.1476.1, %1482 ]
  %lcmp.mod1644.not = icmp eq i64 %xtraiter1643, 0
  br i1 %lcmp.mod1644.not, label %._crit_edge896, label %.epil.preheader1642

.epil.preheader1642:                              ; preds = %._crit_edge896.loopexit.unr-lcssa
  %1483 = getelementptr inbounds i8, ptr %1453, i64 %indvars.iv1034.unr
  %1484 = load i8, ptr %1483, align 1, !tbaa !24
  %1485 = icmp eq i8 %1484, 4
  br i1 %1485, label %1486, label %._crit_edge896

1486:                                             ; preds = %.epil.preheader1642
  %1487 = load ptr, ptr %1454, align 8, !tbaa !32
  %1488 = getelementptr inbounds i16, ptr %1487, i64 %indvars.iv1034.unr
  %1489 = load i16, ptr %1488, align 2, !tbaa !33
  %1490 = zext i16 %1489 to i64
  %1491 = mul i64 %.0474893.unr, %1490
  %1492 = lshr i64 %1491, 8
  %1493 = mul i64 %.0475892.unr, %1490
  %1494 = lshr i64 %1493, 8
  br label %._crit_edge896

._crit_edge896:                                   ; preds = %._crit_edge896.loopexit.unr-lcssa, %1486, %.epil.preheader1642, %1448
  %.0475.lcssa = phi i64 [ %1451, %1448 ], [ %.1476.lcssa.ph, %._crit_edge896.loopexit.unr-lcssa ], [ %1494, %1486 ], [ %.0475892.unr, %.epil.preheader1642 ]
  %.0474.lcssa = phi i64 [ %1449, %1448 ], [ %.1.lcssa.ph, %._crit_edge896.loopexit.unr-lcssa ], [ %1492, %1486 ], [ %.0474893.unr, %.epil.preheader1642 ]
  %1495 = getelementptr inbounds i8, ptr %0, i64 1016
  %1496 = load ptr, ptr %1495, align 8, !tbaa !35
  %1497 = getelementptr inbounds i8, ptr %1496, i64 8
  %1498 = load i16, ptr %1497, align 2, !tbaa !33
  %1499 = zext i16 %1498 to i64
  %1500 = mul i64 %.0475.lcssa, %1499
  %1501 = icmp ugt i64 %1500, 144115188075855367
  br i1 %1501, label %1508, label %1502

1502:                                             ; preds = %._crit_edge896
  %1503 = mul i64 %.0474.lcssa, %1499
  %1504 = lshr i64 %1503, 3
  %1505 = shl nuw i64 %1500, 7
  %1506 = and i64 %1505, -1024
  %1507 = add i64 %1506, %1504
  br label %1508

1508:                                             ; preds = %1502, %._crit_edge896, %._crit_edge887
  %.4506 = phi i64 [ %.2504, %._crit_edge887 ], [ %1507, %1502 ], [ 9223372036854775807, %._crit_edge896 ]
  %1509 = icmp ult i64 %.4506, %.6487
  br i1 %1509, label %.thread1059.sink.split, label %.thread1059

.thread1059.sink.split:                           ; preds = %.lr.ph916, %middle.block1466, %vec.epilog.middle.block1489, %1508, %.preheader691
  %.sink1090 = phi ptr [ %1085, %.preheader691 ], [ %1245, %1508 ], [ %1085, %vec.epilog.middle.block1489 ], [ %1085, %middle.block1466 ], [ %1085, %.lr.ph916 ]
  %1510 = load ptr, ptr %.sink1090, align 8, !tbaa !72
  br label %.thread1059

.thread1059:                                      ; preds = %.thread1059.sink.split, %473, %1508, %1178
  %.7 = phi ptr [ %.5, %1178 ], [ %.5, %1508 ], [ %475, %473 ], [ %1510, %.thread1059.sink.split ]
  tail call void @png_write_filtered_row(ptr noundef nonnull %0, ptr noundef %.7)
  %1511 = load i8, ptr %7, align 1, !tbaa !20
  %.not665 = icmp eq i8 %1511, 0
  br i1 %.not665, label %1545, label %.preheader

.preheader:                                       ; preds = %.thread1059
  %1512 = icmp ugt i8 %8, 1
  br i1 %1512, label %.lr.ph919, label %._crit_edge920

.lr.ph919:                                        ; preds = %.preheader
  %1513 = getelementptr inbounds i8, ptr %0, i64 992
  %wide.trip.count1044 = zext i8 %8 to i64
  %1514 = add nsw i64 %wide.trip.count1044, -1
  %1515 = add nsw i64 %wide.trip.count1044, -2
  %xtraiter1653 = and i64 %1514, 3
  %1516 = icmp ult i64 %1515, 3
  br i1 %1516, label %._crit_edge920.loopexit.unr-lcssa, label %.lr.ph919.new

.lr.ph919.new:                                    ; preds = %.lr.ph919
  %unroll_iter1655 = and i64 %1514, -4
  br label %1517

1517:                                             ; preds = %1517, %.lr.ph919.new
  %indvars.iv1041 = phi i64 [ 1, %.lr.ph919.new ], [ %indvars.iv.next1042.3, %1517 ]
  %niter1656 = phi i64 [ 0, %.lr.ph919.new ], [ %niter1656.next.3, %1517 ]
  %1518 = load ptr, ptr %1513, align 8, !tbaa !31
  %1519 = getelementptr i8, ptr %1518, i64 %indvars.iv1041
  %1520 = getelementptr i8, ptr %1519, i64 -1
  %1521 = load i8, ptr %1520, align 1, !tbaa !24
  store i8 %1521, ptr %1519, align 1, !tbaa !24
  %1522 = load ptr, ptr %1513, align 8, !tbaa !31
  %1523 = getelementptr i8, ptr %1522, i64 %indvars.iv1041
  %1524 = getelementptr i8, ptr %1523, i64 1
  %1525 = load i8, ptr %1523, align 1, !tbaa !24
  store i8 %1525, ptr %1524, align 1, !tbaa !24
  %1526 = load ptr, ptr %1513, align 8, !tbaa !31
  %1527 = getelementptr i8, ptr %1526, i64 %indvars.iv1041
  %1528 = getelementptr i8, ptr %1527, i64 2
  %1529 = getelementptr i8, ptr %1527, i64 1
  %1530 = load i8, ptr %1529, align 1, !tbaa !24
  store i8 %1530, ptr %1528, align 1, !tbaa !24
  %1531 = load ptr, ptr %1513, align 8, !tbaa !31
  %1532 = getelementptr i8, ptr %1531, i64 %indvars.iv1041
  %1533 = getelementptr i8, ptr %1532, i64 3
  %1534 = getelementptr i8, ptr %1532, i64 2
  %1535 = load i8, ptr %1534, align 1, !tbaa !24
  store i8 %1535, ptr %1533, align 1, !tbaa !24
  %indvars.iv.next1042.3 = add nuw nsw i64 %indvars.iv1041, 4
  %niter1656.next.3 = add i64 %niter1656, 4
  %niter1656.ncmp.3 = icmp eq i64 %niter1656.next.3, %unroll_iter1655
  br i1 %niter1656.ncmp.3, label %._crit_edge920.loopexit.unr-lcssa, label %1517, !llvm.loop !84

._crit_edge920.loopexit.unr-lcssa:                ; preds = %1517, %.lr.ph919
  %indvars.iv1041.unr = phi i64 [ 1, %.lr.ph919 ], [ %indvars.iv.next1042.3, %1517 ]
  %lcmp.mod1654.not = icmp eq i64 %xtraiter1653, 0
  br i1 %lcmp.mod1654.not, label %._crit_edge920.loopexit, label %.epil.preheader1652

.epil.preheader1652:                              ; preds = %._crit_edge920.loopexit.unr-lcssa, %.epil.preheader1652
  %indvars.iv1041.epil = phi i64 [ %indvars.iv.next1042.epil, %.epil.preheader1652 ], [ %indvars.iv1041.unr, %._crit_edge920.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader1652 ], [ 0, %._crit_edge920.loopexit.unr-lcssa ]
  %1536 = load ptr, ptr %1513, align 8, !tbaa !31
  %1537 = getelementptr i8, ptr %1536, i64 %indvars.iv1041.epil
  %1538 = getelementptr i8, ptr %1537, i64 -1
  %1539 = load i8, ptr %1538, align 1, !tbaa !24
  store i8 %1539, ptr %1537, align 1, !tbaa !24
  %indvars.iv.next1042.epil = add nuw nsw i64 %indvars.iv1041.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1653
  br i1 %epil.iter.cmp.not, label %._crit_edge920.loopexit, label %.epil.preheader1652, !llvm.loop !85

._crit_edge920.loopexit:                          ; preds = %.epil.preheader1652, %._crit_edge920.loopexit.unr-lcssa
  %1540 = zext i8 %8 to i64
  br label %._crit_edge920

._crit_edge920:                                   ; preds = %.preheader, %._crit_edge920.loopexit
  %.0.lcssa = phi i64 [ %1540, %._crit_edge920.loopexit ], [ 1, %.preheader ]
  %1541 = load i8, ptr %.7, align 1, !tbaa !24
  %1542 = getelementptr inbounds i8, ptr %0, i64 992
  %1543 = load ptr, ptr %1542, align 8, !tbaa !31
  %1544 = getelementptr inbounds i8, ptr %1543, i64 %.0.lcssa
  store i8 %1541, ptr %1544, align 1, !tbaa !24
  br label %1545

1545:                                             ; preds = %._crit_edge920, %.thread1059
  ret void
}

; Function Attrs: nounwind uwtable
declare dso_local void @png_write_filtered_row(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <16 x i32> @llvm.abs.v16i32(<16 x i32>, i1 immarg) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <8 x i32> @llvm.abs.v8i32(<8 x i32>, i1 immarg) #1

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }

!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 629}
!6 = !{!"png_struct_def", !7, i64 0, !9, i64 200, !9, i64 208, !9, i64 216, !9, i64 224, !9, i64 232, !9, i64 240, !9, i64 248, !9, i64 256, !9, i64 264, !7, i64 272, !7, i64 273, !10, i64 280, !10, i64 288, !10, i64 296, !11, i64 304, !9, i64 416, !10, i64 424, !12, i64 432, !12, i64 436, !12, i64 440, !12, i64 444, !12, i64 448, !10, i64 456, !10, i64 464, !10, i64 472, !10, i64 480, !10, i64 488, !10, i64 496, !10, i64 504, !10, i64 512, !9, i64 520, !9, i64 528, !9, i64 536, !9, i64 544, !9, i64 552, !9, i64 560, !13, i64 568, !10, i64 592, !10, i64 600, !9, i64 608, !14, i64 616, !14, i64 618, !7, i64 620, !7, i64 625, !7, i64 626, !7, i64 627, !7, i64 628, !7, i64 629, !7, i64 630, !7, i64 631, !7, i64 632, !7, i64 633, !7, i64 634, !7, i64 635, !7, i64 636, !14, i64 638, !7, i64 640, !15, i64 644, !16, i64 648, !16, i64 658, !9, i64 672, !10, i64 680, !10, i64 688, !12, i64 696, !15, i64 700, !15, i64 704, !9, i64 712, !9, i64 720, !9, i64 728, !9, i64 736, !9, i64 744, !9, i64 752, !17, i64 760, !17, i64 765, !9, i64 776, !16, i64 784, !9, i64 800, !9, i64 808, !9, i64 816, !9, i64 824, !9, i64 832, !9, i64 840, !9, i64 848, !9, i64 856, !9, i64 864, !10, i64 872, !10, i64 880, !10, i64 888, !10, i64 896, !10, i64 904, !10, i64 912, !12, i64 920, !12, i64 924, !10, i64 928, !10, i64 936, !9, i64 944, !9, i64 952, !9, i64 960, !9, i64 968, !9, i64 976, !7, i64 984, !7, i64 985, !9, i64 992, !9, i64 1000, !9, i64 1008, !9, i64 1016, !9, i64 1024, !9, i64 1032, !10, i64 1040, !9, i64 1048, !9, i64 1056, !12, i64 1064, !9, i64 1072, !7, i64 1080, !14, i64 1082, !14, i64 1084, !14, i64 1086, !10, i64 1088, !10, i64 1096, !7, i64 1104, !7, i64 1105, !10, i64 1112, !10, i64 1120, !9, i64 1128, !9, i64 1136, !9, i64 1144, !9, i64 1152, !9, i64 1160, !9, i64 1168, !9, i64 1176, !7, i64 1184, !10, i64 1192, !10, i64 1200, !18, i64 1208, !10, i64 1240, !10, i64 1248, !9, i64 1256}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!"any pointer", !7, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!"z_stream_s", !9, i64 0, !12, i64 8, !10, i64 16, !9, i64 24, !12, i64 32, !10, i64 40, !9, i64 48, !9, i64 56, !9, i64 64, !9, i64 72, !9, i64 80, !12, i64 88, !10, i64 96, !10, i64 104}
!12 = !{!"int", !7, i64 0}
!13 = !{!"png_row_info_struct", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19}
!14 = !{!"short", !7, i64 0}
!15 = !{!"float", !7, i64 0}
!16 = !{!"png_color_16_struct", !7, i64 0, !14, i64 2, !14, i64 4, !14, i64 6, !14, i64 8}
!17 = !{!"png_color_8_struct", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !7, i64 4}
!18 = !{!"png_unknown_chunk_t", !7, i64 0, !9, i64 8, !10, i64 16, !7, i64 24}
!19 = !{!13, !10, i64 8}
!20 = !{!6, !7, i64 985}
!21 = !{!13, !7, i64 19}
!22 = !{!6, !9, i64 520}
!23 = !{!6, !9, i64 528}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !26, !27, !28}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!"llvm.loop.isvectorized", i32 1}
!28 = !{!"llvm.loop.unroll.runtime.disable"}
!29 = distinct !{!29, !26, !28, !27}
!30 = !{!6, !7, i64 984}
!31 = !{!6, !9, i64 992}
!32 = !{!6, !9, i64 1000}
!33 = !{!14, !14, i64 0}
!34 = distinct !{!34, !26}
!35 = !{!6, !9, i64 1016}
!36 = !{!6, !9, i64 536}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.unroll.disable"}
!39 = distinct !{!39, !26, !27, !28}
!40 = distinct !{!40, !26, !27, !28}
!41 = distinct !{!41, !38}
!42 = distinct !{!42, !26, !27, !28}
!43 = distinct !{!43, !26, !27}
!44 = distinct !{!44, !26, !27}
!45 = !{!6, !9, i64 1008}
!46 = distinct !{!46, !26}
!47 = !{!6, !9, i64 1024}
!48 = distinct !{!48, !26, !27, !28}
!49 = distinct !{!49, !26, !27}
!50 = distinct !{!50, !26}
!51 = distinct !{!51, !26}
!52 = !{!6, !9, i64 544}
!53 = distinct !{!53, !26, !27, !28}
!54 = distinct !{!54, !26, !27, !28}
!55 = distinct !{!55, !38}
!56 = distinct !{!56, !26, !27}
!57 = distinct !{!57, !26}
!58 = distinct !{!58, !26}
!59 = distinct !{!59, !26}
!60 = !{!6, !9, i64 552}
!61 = distinct !{!61, !38}
!62 = distinct !{!62, !26, !27, !28}
!63 = distinct !{!63, !26, !27, !28}
!64 = distinct !{!64, !26, !27, !28}
!65 = distinct !{!65, !26, !27}
!66 = distinct !{!66, !26, !27}
!67 = distinct !{!67, !26}
!68 = distinct !{!68, !26, !27, !28}
!69 = distinct !{!69, !26, !27}
!70 = distinct !{!70, !26}
!71 = distinct !{!71, !26}
!72 = !{!6, !9, i64 560}
!73 = distinct !{!73, !38}
!74 = distinct !{!74, !26, !27, !28}
!75 = distinct !{!75, !26, !27, !28}
!76 = distinct !{!76, !26, !27, !28}
!77 = distinct !{!77, !26, !27}
!78 = distinct !{!78, !26, !27}
!79 = distinct !{!79, !26}
!80 = distinct !{!80, !26, !27, !28}
!81 = distinct !{!81, !26, !27}
!82 = distinct !{!82, !26}
!83 = distinct !{!83, !26}
!84 = distinct !{!84, !26}
!85 = distinct !{!85, !38}


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