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

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

@png_IDAT = external global [5 x i8], align 1
@png_IHDR = external global [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 x i8], align 1
@png_IEND = external global [5 x i8], align 1
@png_PLTE = external global [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [22 x i8], align 1
@png_gAMA = external global [5 x i8], align 1
@png_sBIT = external global [5 x i8], align 1
@png_cHRM = external global [5 x i8], align 1
@png_sRGB = external global [5 x i8], align 1
@png_iCCP = external global [5 x i8], align 1
@png_sPLT = external global [5 x i8], align 1
@png_tRNS = external global [5 x i8], align 1
@png_bKGD = external global [5 x i8], align 1
@png_hIST = external global [5 x i8], align 1
@png_pHYs = external global [5 x i8], align 1
@png_oFFs = external global [5 x i8], align 1
@png_pCAL = external global [5 x i8], align 1
@png_sCAL = external global [5 x i8], align 1
@png_tIME = external global [5 x i8], align 1
@png_tEXt = external global [5 x i8], align 1
@png_zTXt = external global [5 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @png_push_read_chunk(ptr noundef %0, ptr noundef %1) #0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca [4 x i8], align 1
  %6 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %7 = load ptr, ptr %3, align 8, !tbaa !5
  %8 = getelementptr inbounds %struct.png_struct_def, ptr %7, i32 0, i32 12
  %9 = load i64, ptr %8, align 8, !tbaa !9
  %10 = and i64 %9, 256
  %11 = icmp ne i64 %10, 0
  br i1 %11, label %43, label %12

12:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #4
  %13 = load ptr, ptr %3, align 8, !tbaa !5
  %14 = getelementptr inbounds %struct.png_struct_def, ptr %13, i32 0, i32 90
  %15 = load i64, ptr %14, align 8, !tbaa !20
  %16 = icmp ult i64 %15, 8
  br i1 %16, label %17, label %19

17:                                               ; preds = %12
  %18 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %18)
  store i32 1, ptr %6, align 4
  br label %40

19:                                               ; preds = %12
  %20 = load ptr, ptr %3, align 8, !tbaa !5
  %21 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  call void @png_push_fill_buffer(ptr noundef %20, ptr noundef %21, i64 noundef 4)
  %22 = load ptr, ptr %3, align 8, !tbaa !5
  %23 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %24 = call i64 @png_get_uint_31(ptr noundef %22, ptr noundef %23)
  %25 = load ptr, ptr %3, align 8, !tbaa !5
  %26 = getelementptr inbounds %struct.png_struct_def, ptr %25, i32 0, i32 86
  store i64 %24, ptr %26, align 8, !tbaa !21
  %27 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_reset_crc(ptr noundef %27)
  %28 = load ptr, ptr %3, align 8, !tbaa !5
  %29 = load ptr, ptr %3, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.png_struct_def, ptr %29, i32 0, i32 43
  %31 = getelementptr inbounds [5 x i8], ptr %30, i64 0, i64 0
  call void @png_crc_read(ptr noundef %28, ptr noundef %31, i64 noundef 4)
  %32 = load ptr, ptr %3, align 8, !tbaa !5
  %33 = load ptr, ptr %3, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.png_struct_def, ptr %33, i32 0, i32 43
  %35 = getelementptr inbounds [5 x i8], ptr %34, i64 0, i64 0
  call void @png_check_chunk_name(ptr noundef %32, ptr noundef %35)
  %36 = load ptr, ptr %3, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.png_struct_def, ptr %36, i32 0, i32 12
  %38 = load i64, ptr %37, align 8, !tbaa !9
  %39 = or i64 %38, 256
  store i64 %39, ptr %37, align 8, !tbaa !9
  store i32 0, ptr %6, align 4
  br label %40

40:                                               ; preds = %19, %17
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  %41 = load i32, ptr %6, align 4
  switch i32 %41, label %713 [
    i32 0, label %42
    i32 1, label %712
  ]

42:                                               ; preds = %40
  br label %43

43:                                               ; preds = %42, %2
  %44 = load ptr, ptr %3, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.png_struct_def, ptr %44, i32 0, i32 43
  %46 = getelementptr inbounds [5 x i8], ptr %45, i64 0, i64 0
  %47 = call i32 @memcmp(ptr noundef %46, ptr noundef @png_IDAT, i64 noundef 4) #5
  %48 = icmp ne i32 %47, 0
  br i1 %48, label %61, label %49

49:                                               ; preds = %43
  %50 = load ptr, ptr %3, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.png_struct_def, ptr %50, i32 0, i32 12
  %52 = load i64, ptr %51, align 8, !tbaa !9
  %53 = and i64 %52, 8
  %54 = icmp ne i64 %53, 0
  br i1 %54, label %55, label %60

55:                                               ; preds = %49
  %56 = load ptr, ptr %3, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.png_struct_def, ptr %56, i32 0, i32 12
  %58 = load i64, ptr %57, align 8, !tbaa !9
  %59 = or i64 %58, 8192
  store i64 %59, ptr %57, align 8, !tbaa !9
  br label %60

60:                                               ; preds = %55, %49
  br label %61

61:                                               ; preds = %60, %43
  %62 = load ptr, ptr %3, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.png_struct_def, ptr %62, i32 0, i32 43
  %64 = getelementptr inbounds [5 x i8], ptr %63, i64 0, i64 0
  %65 = call i32 @memcmp(ptr noundef %64, ptr noundef @png_IHDR, i64 noundef 4) #5
  %66 = icmp ne i32 %65, 0
  br i1 %66, label %91, label %67

67:                                               ; preds = %61
  %68 = load ptr, ptr %3, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.png_struct_def, ptr %68, i32 0, i32 86
  %70 = load i64, ptr %69, align 8, !tbaa !21
  %71 = icmp ne i64 %70, 13
  br i1 %71, label %72, label %74

72:                                               ; preds = %67
  %73 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %73, ptr noundef @.str.2)
  br label %74

74:                                               ; preds = %72, %67
  %75 = load ptr, ptr %3, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.png_struct_def, ptr %75, i32 0, i32 86
  %77 = load i64, ptr %76, align 8, !tbaa !21
  %78 = add i64 %77, 4
  %79 = load ptr, ptr %3, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.png_struct_def, ptr %79, i32 0, i32 90
  %81 = load i64, ptr %80, align 8, !tbaa !20
  %82 = icmp ugt i64 %78, %81
  br i1 %82, label %83, label %85

83:                                               ; preds = %74
  %84 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %84)
  br label %712

85:                                               ; preds = %74
  %86 = load ptr, ptr %3, align 8, !tbaa !5
  %87 = load ptr, ptr %4, align 8, !tbaa !5
  %88 = load ptr, ptr %3, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.png_struct_def, ptr %88, i32 0, i32 86
  %90 = load i64, ptr %89, align 8, !tbaa !21
  call void @png_handle_IHDR(ptr noundef %86, ptr noundef %87, i64 noundef %90)
  br label %707

91:                                               ; preds = %61
  %92 = load ptr, ptr %3, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.png_struct_def, ptr %92, i32 0, i32 43
  %94 = getelementptr inbounds [5 x i8], ptr %93, i64 0, i64 0
  %95 = call i32 @memcmp(ptr noundef %94, ptr noundef @png_IEND, i64 noundef 4) #5
  %96 = icmp ne i32 %95, 0
  br i1 %96, label %118, label %97

97:                                               ; preds = %91
  %98 = load ptr, ptr %3, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.png_struct_def, ptr %98, i32 0, i32 86
  %100 = load i64, ptr %99, align 8, !tbaa !21
  %101 = add i64 %100, 4
  %102 = load ptr, ptr %3, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.png_struct_def, ptr %102, i32 0, i32 90
  %104 = load i64, ptr %103, align 8, !tbaa !20
  %105 = icmp ugt i64 %101, %104
  br i1 %105, label %106, label %108

106:                                              ; preds = %97
  %107 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %107)
  br label %712

108:                                              ; preds = %97
  %109 = load ptr, ptr %3, align 8, !tbaa !5
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  %111 = load ptr, ptr %3, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.png_struct_def, ptr %111, i32 0, i32 86
  %113 = load i64, ptr %112, align 8, !tbaa !21
  call void @png_handle_IEND(ptr noundef %109, ptr noundef %110, i64 noundef %113)
  %114 = load ptr, ptr %3, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.png_struct_def, ptr %114, i32 0, i32 92
  store i32 6, ptr %115, align 8, !tbaa !22
  %116 = load ptr, ptr %3, align 8, !tbaa !5
  %117 = load ptr, ptr %4, align 8, !tbaa !5
  call void @png_push_have_end(ptr noundef %116, ptr noundef %117)
  br label %706

118:                                              ; preds = %91
  %119 = load ptr, ptr %3, align 8, !tbaa !5
  %120 = load ptr, ptr %3, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.png_struct_def, ptr %120, i32 0, i32 43
  %122 = getelementptr inbounds [5 x i8], ptr %121, i64 0, i64 0
  %123 = call i32 @png_handle_as_unknown(ptr noundef %119, ptr noundef %122)
  %124 = icmp ne i32 %123, 0
  br i1 %124, label %125, label %195

125:                                              ; preds = %118
  %126 = load ptr, ptr %3, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.png_struct_def, ptr %126, i32 0, i32 86
  %128 = load i64, ptr %127, align 8, !tbaa !21
  %129 = add i64 %128, 4
  %130 = load ptr, ptr %3, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.png_struct_def, ptr %130, i32 0, i32 90
  %132 = load i64, ptr %131, align 8, !tbaa !20
  %133 = icmp ugt i64 %129, %132
  br i1 %133, label %134, label %136

134:                                              ; preds = %125
  %135 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %135)
  br label %712

136:                                              ; preds = %125
  %137 = load ptr, ptr %3, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.png_struct_def, ptr %137, i32 0, i32 43
  %139 = getelementptr inbounds [5 x i8], ptr %138, i64 0, i64 0
  %140 = call i32 @memcmp(ptr noundef %139, ptr noundef @png_IDAT, i64 noundef 4) #5
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %147, label %142

142:                                              ; preds = %136
  %143 = load ptr, ptr %3, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.png_struct_def, ptr %143, i32 0, i32 12
  %145 = load i64, ptr %144, align 8, !tbaa !9
  %146 = or i64 %145, 4
  store i64 %146, ptr %144, align 8, !tbaa !9
  br label %147

147:                                              ; preds = %142, %136
  %148 = load ptr, ptr %3, align 8, !tbaa !5
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = load ptr, ptr %3, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.png_struct_def, ptr %150, i32 0, i32 86
  %152 = load i64, ptr %151, align 8, !tbaa !21
  call void @png_handle_unknown(ptr noundef %148, ptr noundef %149, i64 noundef %152)
  %153 = load ptr, ptr %3, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.png_struct_def, ptr %153, i32 0, i32 43
  %155 = getelementptr inbounds [5 x i8], ptr %154, i64 0, i64 0
  %156 = call i32 @memcmp(ptr noundef %155, ptr noundef @png_PLTE, i64 noundef 4) #5
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %163, label %158

158:                                              ; preds = %147
  %159 = load ptr, ptr %3, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.png_struct_def, ptr %159, i32 0, i32 12
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = or i64 %161, 2
  store i64 %162, ptr %160, align 8, !tbaa !9
  br label %194

163:                                              ; preds = %147
  %164 = load ptr, ptr %3, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.png_struct_def, ptr %164, i32 0, i32 43
  %166 = getelementptr inbounds [5 x i8], ptr %165, i64 0, i64 0
  %167 = call i32 @memcmp(ptr noundef %166, ptr noundef @png_IDAT, i64 noundef 4) #5
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %193, label %169

169:                                              ; preds = %163
  %170 = load ptr, ptr %3, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.png_struct_def, ptr %170, i32 0, i32 12
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = and i64 %172, 1
  %174 = icmp ne i64 %173, 0
  br i1 %174, label %177, label %175

175:                                              ; preds = %169
  %176 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %176, ptr noundef @.str.3)
  br label %192

177:                                              ; preds = %169
  %178 = load ptr, ptr %3, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.png_struct_def, ptr %178, i32 0, i32 49
  %180 = load i8, ptr %179, align 2, !tbaa !23
  %181 = zext i8 %180 to i32
  %182 = icmp eq i32 %181, 3
  br i1 %182, label %183, label %191

183:                                              ; preds = %177
  %184 = load ptr, ptr %3, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.png_struct_def, ptr %184, i32 0, i32 12
  %186 = load i64, ptr %185, align 8, !tbaa !9
  %187 = and i64 %186, 2
  %188 = icmp ne i64 %187, 0
  br i1 %188, label %191, label %189

189:                                              ; preds = %183
  %190 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %190, ptr noundef @.str.4)
  br label %191

191:                                              ; preds = %189, %183, %177
  br label %192

192:                                              ; preds = %191, %175
  br label %193

193:                                              ; preds = %192, %163
  br label %194

194:                                              ; preds = %193, %158
  br label %705

195:                                              ; preds = %118
  %196 = load ptr, ptr %3, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.png_struct_def, ptr %196, i32 0, i32 43
  %198 = getelementptr inbounds [5 x i8], ptr %197, i64 0, i64 0
  %199 = call i32 @memcmp(ptr noundef %198, ptr noundef @png_PLTE, i64 noundef 4) #5
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %218, label %201

201:                                              ; preds = %195
  %202 = load ptr, ptr %3, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.png_struct_def, ptr %202, i32 0, i32 86
  %204 = load i64, ptr %203, align 8, !tbaa !21
  %205 = add i64 %204, 4
  %206 = load ptr, ptr %3, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.png_struct_def, ptr %206, i32 0, i32 90
  %208 = load i64, ptr %207, align 8, !tbaa !20
  %209 = icmp ugt i64 %205, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %201
  %211 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %211)
  br label %712

212:                                              ; preds = %201
  %213 = load ptr, ptr %3, align 8, !tbaa !5
  %214 = load ptr, ptr %4, align 8, !tbaa !5
  %215 = load ptr, ptr %3, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.png_struct_def, ptr %215, i32 0, i32 86
  %217 = load i64, ptr %216, align 8, !tbaa !21
  call void @png_handle_PLTE(ptr noundef %213, ptr noundef %214, i64 noundef %217)
  br label %704

218:                                              ; preds = %195
  %219 = load ptr, ptr %3, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.png_struct_def, ptr %219, i32 0, i32 43
  %221 = getelementptr inbounds [5 x i8], ptr %220, i64 0, i64 0
  %222 = call i32 @memcmp(ptr noundef %221, ptr noundef @png_IDAT, i64 noundef 4) #5
  %223 = icmp ne i32 %222, 0
  br i1 %223, label %302, label %224

224:                                              ; preds = %218
  %225 = load ptr, ptr %3, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.png_struct_def, ptr %225, i32 0, i32 12
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = and i64 %227, 1
  %229 = icmp ne i64 %228, 0
  br i1 %229, label %232, label %230

230:                                              ; preds = %224
  %231 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %231, ptr noundef @.str.3)
  br label %247

232:                                              ; preds = %224
  %233 = load ptr, ptr %3, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.png_struct_def, ptr %233, i32 0, i32 49
  %235 = load i8, ptr %234, align 2, !tbaa !23
  %236 = zext i8 %235 to i32
  %237 = icmp eq i32 %236, 3
  br i1 %237, label %238, label %246

238:                                              ; preds = %232
  %239 = load ptr, ptr %3, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.png_struct_def, ptr %239, i32 0, i32 12
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = and i64 %241, 2
  %243 = icmp ne i64 %242, 0
  br i1 %243, label %246, label %244

244:                                              ; preds = %238
  %245 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %245, ptr noundef @.str.4)
  br label %246

246:                                              ; preds = %244, %238, %232
  br label %247

247:                                              ; preds = %246, %230
  %248 = load ptr, ptr %3, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.png_struct_def, ptr %248, i32 0, i32 12
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = and i64 %250, 4
  %252 = icmp ne i64 %251, 0
  br i1 %252, label %253, label %275

253:                                              ; preds = %247
  %254 = load ptr, ptr %3, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.png_struct_def, ptr %254, i32 0, i32 12
  %256 = load i64, ptr %255, align 8, !tbaa !9
  %257 = and i64 %256, 8192
  %258 = icmp ne i64 %257, 0
  br i1 %258, label %266, label %259

259:                                              ; preds = %253
  %260 = load ptr, ptr %3, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.png_struct_def, ptr %260, i32 0, i32 86
  %262 = load i64, ptr %261, align 8, !tbaa !21
  %263 = icmp eq i64 %262, 0
  br i1 %263, label %264, label %265

264:                                              ; preds = %259
  br label %712

265:                                              ; preds = %259
  br label %266

266:                                              ; preds = %265, %253
  %267 = load ptr, ptr %3, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.png_struct_def, ptr %267, i32 0, i32 12
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = and i64 %269, 8
  %271 = icmp ne i64 %270, 0
  br i1 %271, label %272, label %274

272:                                              ; preds = %266
  %273 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %273, ptr noundef @.str.5)
  br label %274

274:                                              ; preds = %272, %266
  br label %275

275:                                              ; preds = %274, %247
  %276 = load ptr, ptr %3, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.png_struct_def, ptr %276, i32 0, i32 86
  %278 = load i64, ptr %277, align 8, !tbaa !21
  %279 = load ptr, ptr %3, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.png_struct_def, ptr %279, i32 0, i32 38
  store i64 %278, ptr %280, align 8, !tbaa !24
  %281 = load ptr, ptr %3, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.png_struct_def, ptr %281, i32 0, i32 12
  %283 = load i64, ptr %282, align 8, !tbaa !9
  %284 = or i64 %283, 4
  store i64 %284, ptr %282, align 8, !tbaa !9
  %285 = load ptr, ptr %3, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.png_struct_def, ptr %285, i32 0, i32 92
  store i32 2, ptr %286, align 8, !tbaa !22
  %287 = load ptr, ptr %3, align 8, !tbaa !5
  %288 = load ptr, ptr %4, align 8, !tbaa !5
  call void @png_push_have_info(ptr noundef %287, ptr noundef %288)
  %289 = load ptr, ptr %3, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.png_struct_def, ptr %289, i32 0, i32 28
  %291 = load i64, ptr %290, align 8, !tbaa !25
  %292 = trunc i64 %291 to i32
  %293 = load ptr, ptr %3, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.png_struct_def, ptr %293, i32 0, i32 15
  %295 = getelementptr inbounds %struct.z_stream_s, ptr %294, i32 0, i32 4
  store i32 %292, ptr %295, align 8, !tbaa !26
  %296 = load ptr, ptr %3, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.png_struct_def, ptr %296, i32 0, i32 32
  %298 = load ptr, ptr %297, align 8, !tbaa !27
  %299 = load ptr, ptr %3, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.png_struct_def, ptr %299, i32 0, i32 15
  %301 = getelementptr inbounds %struct.z_stream_s, ptr %300, i32 0, i32 3
  store ptr %298, ptr %301, align 8, !tbaa !28
  br label %712

302:                                              ; preds = %218
  %303 = load ptr, ptr %3, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.png_struct_def, ptr %303, i32 0, i32 43
  %305 = getelementptr inbounds [5 x i8], ptr %304, i64 0, i64 0
  %306 = call i32 @memcmp(ptr noundef %305, ptr noundef @png_gAMA, i64 noundef 4) #5
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %325, label %308

308:                                              ; preds = %302
  %309 = load ptr, ptr %3, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.png_struct_def, ptr %309, i32 0, i32 86
  %311 = load i64, ptr %310, align 8, !tbaa !21
  %312 = add i64 %311, 4
  %313 = load ptr, ptr %3, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.png_struct_def, ptr %313, i32 0, i32 90
  %315 = load i64, ptr %314, align 8, !tbaa !20
  %316 = icmp ugt i64 %312, %315
  br i1 %316, label %317, label %319

317:                                              ; preds = %308
  %318 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %318)
  br label %712

319:                                              ; preds = %308
  %320 = load ptr, ptr %3, align 8, !tbaa !5
  %321 = load ptr, ptr %4, align 8, !tbaa !5
  %322 = load ptr, ptr %3, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.png_struct_def, ptr %322, i32 0, i32 86
  %324 = load i64, ptr %323, align 8, !tbaa !21
  call void @png_handle_gAMA(ptr noundef %320, ptr noundef %321, i64 noundef %324)
  br label %702

325:                                              ; preds = %302
  %326 = load ptr, ptr %3, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.png_struct_def, ptr %326, i32 0, i32 43
  %328 = getelementptr inbounds [5 x i8], ptr %327, i64 0, i64 0
  %329 = call i32 @memcmp(ptr noundef %328, ptr noundef @png_sBIT, i64 noundef 4) #5
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %348, label %331

331:                                              ; preds = %325
  %332 = load ptr, ptr %3, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.png_struct_def, ptr %332, i32 0, i32 86
  %334 = load i64, ptr %333, align 8, !tbaa !21
  %335 = add i64 %334, 4
  %336 = load ptr, ptr %3, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.png_struct_def, ptr %336, i32 0, i32 90
  %338 = load i64, ptr %337, align 8, !tbaa !20
  %339 = icmp ugt i64 %335, %338
  br i1 %339, label %340, label %342

340:                                              ; preds = %331
  %341 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %341)
  br label %712

342:                                              ; preds = %331
  %343 = load ptr, ptr %3, align 8, !tbaa !5
  %344 = load ptr, ptr %4, align 8, !tbaa !5
  %345 = load ptr, ptr %3, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.png_struct_def, ptr %345, i32 0, i32 86
  %347 = load i64, ptr %346, align 8, !tbaa !21
  call void @png_handle_sBIT(ptr noundef %343, ptr noundef %344, i64 noundef %347)
  br label %701

348:                                              ; preds = %325
  %349 = load ptr, ptr %3, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.png_struct_def, ptr %349, i32 0, i32 43
  %351 = getelementptr inbounds [5 x i8], ptr %350, i64 0, i64 0
  %352 = call i32 @memcmp(ptr noundef %351, ptr noundef @png_cHRM, i64 noundef 4) #5
  %353 = icmp ne i32 %352, 0
  br i1 %353, label %371, label %354

354:                                              ; preds = %348
  %355 = load ptr, ptr %3, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.png_struct_def, ptr %355, i32 0, i32 86
  %357 = load i64, ptr %356, align 8, !tbaa !21
  %358 = add i64 %357, 4
  %359 = load ptr, ptr %3, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.png_struct_def, ptr %359, i32 0, i32 90
  %361 = load i64, ptr %360, align 8, !tbaa !20
  %362 = icmp ugt i64 %358, %361
  br i1 %362, label %363, label %365

363:                                              ; preds = %354
  %364 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %364)
  br label %712

365:                                              ; preds = %354
  %366 = load ptr, ptr %3, align 8, !tbaa !5
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = load ptr, ptr %3, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.png_struct_def, ptr %368, i32 0, i32 86
  %370 = load i64, ptr %369, align 8, !tbaa !21
  call void @png_handle_cHRM(ptr noundef %366, ptr noundef %367, i64 noundef %370)
  br label %700

371:                                              ; preds = %348
  %372 = load ptr, ptr %3, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.png_struct_def, ptr %372, i32 0, i32 43
  %374 = getelementptr inbounds [5 x i8], ptr %373, i64 0, i64 0
  %375 = call i32 @memcmp(ptr noundef %374, ptr noundef @png_sRGB, i64 noundef 4) #5
  %376 = icmp ne i32 %375, 0
  br i1 %376, label %394, label %377

377:                                              ; preds = %371
  %378 = load ptr, ptr %3, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.png_struct_def, ptr %378, i32 0, i32 86
  %380 = load i64, ptr %379, align 8, !tbaa !21
  %381 = add i64 %380, 4
  %382 = load ptr, ptr %3, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.png_struct_def, ptr %382, i32 0, i32 90
  %384 = load i64, ptr %383, align 8, !tbaa !20
  %385 = icmp ugt i64 %381, %384
  br i1 %385, label %386, label %388

386:                                              ; preds = %377
  %387 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %387)
  br label %712

388:                                              ; preds = %377
  %389 = load ptr, ptr %3, align 8, !tbaa !5
  %390 = load ptr, ptr %4, align 8, !tbaa !5
  %391 = load ptr, ptr %3, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.png_struct_def, ptr %391, i32 0, i32 86
  %393 = load i64, ptr %392, align 8, !tbaa !21
  call void @png_handle_sRGB(ptr noundef %389, ptr noundef %390, i64 noundef %393)
  br label %699

394:                                              ; preds = %371
  %395 = load ptr, ptr %3, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.png_struct_def, ptr %395, i32 0, i32 43
  %397 = getelementptr inbounds [5 x i8], ptr %396, i64 0, i64 0
  %398 = call i32 @memcmp(ptr noundef %397, ptr noundef @png_iCCP, i64 noundef 4) #5
  %399 = icmp ne i32 %398, 0
  br i1 %399, label %417, label %400

400:                                              ; preds = %394
  %401 = load ptr, ptr %3, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.png_struct_def, ptr %401, i32 0, i32 86
  %403 = load i64, ptr %402, align 8, !tbaa !21
  %404 = add i64 %403, 4
  %405 = load ptr, ptr %3, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.png_struct_def, ptr %405, i32 0, i32 90
  %407 = load i64, ptr %406, align 8, !tbaa !20
  %408 = icmp ugt i64 %404, %407
  br i1 %408, label %409, label %411

409:                                              ; preds = %400
  %410 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %410)
  br label %712

411:                                              ; preds = %400
  %412 = load ptr, ptr %3, align 8, !tbaa !5
  %413 = load ptr, ptr %4, align 8, !tbaa !5
  %414 = load ptr, ptr %3, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.png_struct_def, ptr %414, i32 0, i32 86
  %416 = load i64, ptr %415, align 8, !tbaa !21
  call void @png_handle_iCCP(ptr noundef %412, ptr noundef %413, i64 noundef %416)
  br label %698

417:                                              ; preds = %394
  %418 = load ptr, ptr %3, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.png_struct_def, ptr %418, i32 0, i32 43
  %420 = getelementptr inbounds [5 x i8], ptr %419, i64 0, i64 0
  %421 = call i32 @memcmp(ptr noundef %420, ptr noundef @png_sPLT, i64 noundef 4) #5
  %422 = icmp ne i32 %421, 0
  br i1 %422, label %440, label %423

423:                                              ; preds = %417
  %424 = load ptr, ptr %3, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.png_struct_def, ptr %424, i32 0, i32 86
  %426 = load i64, ptr %425, align 8, !tbaa !21
  %427 = add i64 %426, 4
  %428 = load ptr, ptr %3, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.png_struct_def, ptr %428, i32 0, i32 90
  %430 = load i64, ptr %429, align 8, !tbaa !20
  %431 = icmp ugt i64 %427, %430
  br i1 %431, label %432, label %434

432:                                              ; preds = %423
  %433 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %433)
  br label %712

434:                                              ; preds = %423
  %435 = load ptr, ptr %3, align 8, !tbaa !5
  %436 = load ptr, ptr %4, align 8, !tbaa !5
  %437 = load ptr, ptr %3, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.png_struct_def, ptr %437, i32 0, i32 86
  %439 = load i64, ptr %438, align 8, !tbaa !21
  call void @png_handle_sPLT(ptr noundef %435, ptr noundef %436, i64 noundef %439)
  br label %697

440:                                              ; preds = %417
  %441 = load ptr, ptr %3, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.png_struct_def, ptr %441, i32 0, i32 43
  %443 = getelementptr inbounds [5 x i8], ptr %442, i64 0, i64 0
  %444 = call i32 @memcmp(ptr noundef %443, ptr noundef @png_tRNS, i64 noundef 4) #5
  %445 = icmp ne i32 %444, 0
  br i1 %445, label %463, label %446

446:                                              ; preds = %440
  %447 = load ptr, ptr %3, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.png_struct_def, ptr %447, i32 0, i32 86
  %449 = load i64, ptr %448, align 8, !tbaa !21
  %450 = add i64 %449, 4
  %451 = load ptr, ptr %3, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.png_struct_def, ptr %451, i32 0, i32 90
  %453 = load i64, ptr %452, align 8, !tbaa !20
  %454 = icmp ugt i64 %450, %453
  br i1 %454, label %455, label %457

455:                                              ; preds = %446
  %456 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %456)
  br label %712

457:                                              ; preds = %446
  %458 = load ptr, ptr %3, align 8, !tbaa !5
  %459 = load ptr, ptr %4, align 8, !tbaa !5
  %460 = load ptr, ptr %3, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.png_struct_def, ptr %460, i32 0, i32 86
  %462 = load i64, ptr %461, align 8, !tbaa !21
  call void @png_handle_tRNS(ptr noundef %458, ptr noundef %459, i64 noundef %462)
  br label %696

463:                                              ; preds = %440
  %464 = load ptr, ptr %3, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.png_struct_def, ptr %464, i32 0, i32 43
  %466 = getelementptr inbounds [5 x i8], ptr %465, i64 0, i64 0
  %467 = call i32 @memcmp(ptr noundef %466, ptr noundef @png_bKGD, i64 noundef 4) #5
  %468 = icmp ne i32 %467, 0
  br i1 %468, label %486, label %469

469:                                              ; preds = %463
  %470 = load ptr, ptr %3, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.png_struct_def, ptr %470, i32 0, i32 86
  %472 = load i64, ptr %471, align 8, !tbaa !21
  %473 = add i64 %472, 4
  %474 = load ptr, ptr %3, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.png_struct_def, ptr %474, i32 0, i32 90
  %476 = load i64, ptr %475, align 8, !tbaa !20
  %477 = icmp ugt i64 %473, %476
  br i1 %477, label %478, label %480

478:                                              ; preds = %469
  %479 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %479)
  br label %712

480:                                              ; preds = %469
  %481 = load ptr, ptr %3, align 8, !tbaa !5
  %482 = load ptr, ptr %4, align 8, !tbaa !5
  %483 = load ptr, ptr %3, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.png_struct_def, ptr %483, i32 0, i32 86
  %485 = load i64, ptr %484, align 8, !tbaa !21
  call void @png_handle_bKGD(ptr noundef %481, ptr noundef %482, i64 noundef %485)
  br label %695

486:                                              ; preds = %463
  %487 = load ptr, ptr %3, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.png_struct_def, ptr %487, i32 0, i32 43
  %489 = getelementptr inbounds [5 x i8], ptr %488, i64 0, i64 0
  %490 = call i32 @memcmp(ptr noundef %489, ptr noundef @png_hIST, i64 noundef 4) #5
  %491 = icmp ne i32 %490, 0
  br i1 %491, label %509, label %492

492:                                              ; preds = %486
  %493 = load ptr, ptr %3, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.png_struct_def, ptr %493, i32 0, i32 86
  %495 = load i64, ptr %494, align 8, !tbaa !21
  %496 = add i64 %495, 4
  %497 = load ptr, ptr %3, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.png_struct_def, ptr %497, i32 0, i32 90
  %499 = load i64, ptr %498, align 8, !tbaa !20
  %500 = icmp ugt i64 %496, %499
  br i1 %500, label %501, label %503

501:                                              ; preds = %492
  %502 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %502)
  br label %712

503:                                              ; preds = %492
  %504 = load ptr, ptr %3, align 8, !tbaa !5
  %505 = load ptr, ptr %4, align 8, !tbaa !5
  %506 = load ptr, ptr %3, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.png_struct_def, ptr %506, i32 0, i32 86
  %508 = load i64, ptr %507, align 8, !tbaa !21
  call void @png_handle_hIST(ptr noundef %504, ptr noundef %505, i64 noundef %508)
  br label %694

509:                                              ; preds = %486
  %510 = load ptr, ptr %3, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.png_struct_def, ptr %510, i32 0, i32 43
  %512 = getelementptr inbounds [5 x i8], ptr %511, i64 0, i64 0
  %513 = call i32 @memcmp(ptr noundef %512, ptr noundef @png_pHYs, i64 noundef 4) #5
  %514 = icmp ne i32 %513, 0
  br i1 %514, label %532, label %515

515:                                              ; preds = %509
  %516 = load ptr, ptr %3, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.png_struct_def, ptr %516, i32 0, i32 86
  %518 = load i64, ptr %517, align 8, !tbaa !21
  %519 = add i64 %518, 4
  %520 = load ptr, ptr %3, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.png_struct_def, ptr %520, i32 0, i32 90
  %522 = load i64, ptr %521, align 8, !tbaa !20
  %523 = icmp ugt i64 %519, %522
  br i1 %523, label %524, label %526

524:                                              ; preds = %515
  %525 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %525)
  br label %712

526:                                              ; preds = %515
  %527 = load ptr, ptr %3, align 8, !tbaa !5
  %528 = load ptr, ptr %4, align 8, !tbaa !5
  %529 = load ptr, ptr %3, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.png_struct_def, ptr %529, i32 0, i32 86
  %531 = load i64, ptr %530, align 8, !tbaa !21
  call void @png_handle_pHYs(ptr noundef %527, ptr noundef %528, i64 noundef %531)
  br label %693

532:                                              ; preds = %509
  %533 = load ptr, ptr %3, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.png_struct_def, ptr %533, i32 0, i32 43
  %535 = getelementptr inbounds [5 x i8], ptr %534, i64 0, i64 0
  %536 = call i32 @memcmp(ptr noundef %535, ptr noundef @png_oFFs, i64 noundef 4) #5
  %537 = icmp ne i32 %536, 0
  br i1 %537, label %555, label %538

538:                                              ; preds = %532
  %539 = load ptr, ptr %3, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.png_struct_def, ptr %539, i32 0, i32 86
  %541 = load i64, ptr %540, align 8, !tbaa !21
  %542 = add i64 %541, 4
  %543 = load ptr, ptr %3, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.png_struct_def, ptr %543, i32 0, i32 90
  %545 = load i64, ptr %544, align 8, !tbaa !20
  %546 = icmp ugt i64 %542, %545
  br i1 %546, label %547, label %549

547:                                              ; preds = %538
  %548 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %548)
  br label %712

549:                                              ; preds = %538
  %550 = load ptr, ptr %3, align 8, !tbaa !5
  %551 = load ptr, ptr %4, align 8, !tbaa !5
  %552 = load ptr, ptr %3, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.png_struct_def, ptr %552, i32 0, i32 86
  %554 = load i64, ptr %553, align 8, !tbaa !21
  call void @png_handle_oFFs(ptr noundef %550, ptr noundef %551, i64 noundef %554)
  br label %692

555:                                              ; preds = %532
  %556 = load ptr, ptr %3, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.png_struct_def, ptr %556, i32 0, i32 43
  %558 = getelementptr inbounds [5 x i8], ptr %557, i64 0, i64 0
  %559 = call i32 @memcmp(ptr noundef %558, ptr noundef @png_pCAL, i64 noundef 4) #5
  %560 = icmp ne i32 %559, 0
  br i1 %560, label %578, label %561

561:                                              ; preds = %555
  %562 = load ptr, ptr %3, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.png_struct_def, ptr %562, i32 0, i32 86
  %564 = load i64, ptr %563, align 8, !tbaa !21
  %565 = add i64 %564, 4
  %566 = load ptr, ptr %3, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.png_struct_def, ptr %566, i32 0, i32 90
  %568 = load i64, ptr %567, align 8, !tbaa !20
  %569 = icmp ugt i64 %565, %568
  br i1 %569, label %570, label %572

570:                                              ; preds = %561
  %571 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %571)
  br label %712

572:                                              ; preds = %561
  %573 = load ptr, ptr %3, align 8, !tbaa !5
  %574 = load ptr, ptr %4, align 8, !tbaa !5
  %575 = load ptr, ptr %3, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.png_struct_def, ptr %575, i32 0, i32 86
  %577 = load i64, ptr %576, align 8, !tbaa !21
  call void @png_handle_pCAL(ptr noundef %573, ptr noundef %574, i64 noundef %577)
  br label %691

578:                                              ; preds = %555
  %579 = load ptr, ptr %3, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.png_struct_def, ptr %579, i32 0, i32 43
  %581 = getelementptr inbounds [5 x i8], ptr %580, i64 0, i64 0
  %582 = call i32 @memcmp(ptr noundef %581, ptr noundef @png_sCAL, i64 noundef 4) #5
  %583 = icmp ne i32 %582, 0
  br i1 %583, label %601, label %584

584:                                              ; preds = %578
  %585 = load ptr, ptr %3, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.png_struct_def, ptr %585, i32 0, i32 86
  %587 = load i64, ptr %586, align 8, !tbaa !21
  %588 = add i64 %587, 4
  %589 = load ptr, ptr %3, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.png_struct_def, ptr %589, i32 0, i32 90
  %591 = load i64, ptr %590, align 8, !tbaa !20
  %592 = icmp ugt i64 %588, %591
  br i1 %592, label %593, label %595

593:                                              ; preds = %584
  %594 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %594)
  br label %712

595:                                              ; preds = %584
  %596 = load ptr, ptr %3, align 8, !tbaa !5
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = load ptr, ptr %3, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.png_struct_def, ptr %598, i32 0, i32 86
  %600 = load i64, ptr %599, align 8, !tbaa !21
  call void @png_handle_sCAL(ptr noundef %596, ptr noundef %597, i64 noundef %600)
  br label %690

601:                                              ; preds = %578
  %602 = load ptr, ptr %3, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.png_struct_def, ptr %602, i32 0, i32 43
  %604 = getelementptr inbounds [5 x i8], ptr %603, i64 0, i64 0
  %605 = call i32 @memcmp(ptr noundef %604, ptr noundef @png_tIME, i64 noundef 4) #5
  %606 = icmp ne i32 %605, 0
  br i1 %606, label %624, label %607

607:                                              ; preds = %601
  %608 = load ptr, ptr %3, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.png_struct_def, ptr %608, i32 0, i32 86
  %610 = load i64, ptr %609, align 8, !tbaa !21
  %611 = add i64 %610, 4
  %612 = load ptr, ptr %3, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.png_struct_def, ptr %612, i32 0, i32 90
  %614 = load i64, ptr %613, align 8, !tbaa !20
  %615 = icmp ugt i64 %611, %614
  br i1 %615, label %616, label %618

616:                                              ; preds = %607
  %617 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %617)
  br label %712

618:                                              ; preds = %607
  %619 = load ptr, ptr %3, align 8, !tbaa !5
  %620 = load ptr, ptr %4, align 8, !tbaa !5
  %621 = load ptr, ptr %3, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.png_struct_def, ptr %621, i32 0, i32 86
  %623 = load i64, ptr %622, align 8, !tbaa !21
  call void @png_handle_tIME(ptr noundef %619, ptr noundef %620, i64 noundef %623)
  br label %689

624:                                              ; preds = %601
  %625 = load ptr, ptr %3, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.png_struct_def, ptr %625, i32 0, i32 43
  %627 = getelementptr inbounds [5 x i8], ptr %626, i64 0, i64 0
  %628 = call i32 @memcmp(ptr noundef %627, ptr noundef @png_tEXt, i64 noundef 4) #5
  %629 = icmp ne i32 %628, 0
  br i1 %629, label %647, label %630

630:                                              ; preds = %624
  %631 = load ptr, ptr %3, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.png_struct_def, ptr %631, i32 0, i32 86
  %633 = load i64, ptr %632, align 8, !tbaa !21
  %634 = add i64 %633, 4
  %635 = load ptr, ptr %3, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.png_struct_def, ptr %635, i32 0, i32 90
  %637 = load i64, ptr %636, align 8, !tbaa !20
  %638 = icmp ugt i64 %634, %637
  br i1 %638, label %639, label %641

639:                                              ; preds = %630
  %640 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %640)
  br label %712

641:                                              ; preds = %630
  %642 = load ptr, ptr %3, align 8, !tbaa !5
  %643 = load ptr, ptr %4, align 8, !tbaa !5
  %644 = load ptr, ptr %3, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.png_struct_def, ptr %644, i32 0, i32 86
  %646 = load i64, ptr %645, align 8, !tbaa !21
  call void @png_push_handle_tEXt(ptr noundef %642, ptr noundef %643, i64 noundef %646)
  br label %688

647:                                              ; preds = %624
  %648 = load ptr, ptr %3, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.png_struct_def, ptr %648, i32 0, i32 43
  %650 = getelementptr inbounds [5 x i8], ptr %649, i64 0, i64 0
  %651 = call i32 @memcmp(ptr noundef %650, ptr noundef @png_zTXt, i64 noundef 4) #5
  %652 = icmp ne i32 %651, 0
  br i1 %652, label %670, label %653

653:                                              ; preds = %647
  %654 = load ptr, ptr %3, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.png_struct_def, ptr %654, i32 0, i32 86
  %656 = load i64, ptr %655, align 8, !tbaa !21
  %657 = add i64 %656, 4
  %658 = load ptr, ptr %3, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.png_struct_def, ptr %658, i32 0, i32 90
  %660 = load i64, ptr %659, align 8, !tbaa !20
  %661 = icmp ugt i64 %657, %660
  br i1 %661, label %662, label %664

662:                                              ; preds = %653
  %663 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %663)
  br label %712

664:                                              ; preds = %653
  %665 = load ptr, ptr %3, align 8, !tbaa !5
  %666 = load ptr, ptr %4, align 8, !tbaa !5
  %667 = load ptr, ptr %3, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.png_struct_def, ptr %667, i32 0, i32 86
  %669 = load i64, ptr %668, align 8, !tbaa !21
  call void @png_push_handle_zTXt(ptr noundef %665, ptr noundef %666, i64 noundef %669)
  br label %687

670:                                              ; preds = %647
  %671 = load ptr, ptr %3, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.png_struct_def, ptr %671, i32 0, i32 86
  %673 = load i64, ptr %672, align 8, !tbaa !21
  %674 = add i64 %673, 4
  %675 = load ptr, ptr %3, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.png_struct_def, ptr %675, i32 0, i32 90
  %677 = load i64, ptr %676, align 8, !tbaa !20
  %678 = icmp ugt i64 %674, %677
  br i1 %678, label %679, label %681

679:                                              ; preds = %670
  %680 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %680)
  br label %712

681:                                              ; preds = %670
  %682 = load ptr, ptr %3, align 8, !tbaa !5
  %683 = load ptr, ptr %4, align 8, !tbaa !5
  %684 = load ptr, ptr %3, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.png_struct_def, ptr %684, i32 0, i32 86
  %686 = load i64, ptr %685, align 8, !tbaa !21
  call void @png_push_handle_unknown(ptr noundef %682, ptr noundef %683, i64 noundef %686)
  br label %687

687:                                              ; preds = %681, %664
  br label %688

688:                                              ; preds = %687, %641
  br label %689

689:                                              ; preds = %688, %618
  br label %690

690:                                              ; preds = %689, %595
  br label %691

691:                                              ; preds = %690, %572
  br label %692

692:                                              ; preds = %691, %549
  br label %693

693:                                              ; preds = %692, %526
  br label %694

694:                                              ; preds = %693, %503
  br label %695

695:                                              ; preds = %694, %480
  br label %696

696:                                              ; preds = %695, %457
  br label %697

697:                                              ; preds = %696, %434
  br label %698

698:                                              ; preds = %697, %411
  br label %699

699:                                              ; preds = %698, %388
  br label %700

700:                                              ; preds = %699, %365
  br label %701

701:                                              ; preds = %700, %342
  br label %702

702:                                              ; preds = %701, %319
  br label %703

703:                                              ; preds = %702
  br label %704

704:                                              ; preds = %703, %212
  br label %705

705:                                              ; preds = %704, %194
  br label %706

706:                                              ; preds = %705, %108
  br label %707

707:                                              ; preds = %706, %85
  %708 = load ptr, ptr %3, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.png_struct_def, ptr %708, i32 0, i32 12
  %710 = load i64, ptr %709, align 8, !tbaa !9
  %711 = and i64 %710, -257
  store i64 %711, ptr %709, align 8, !tbaa !9
  br label %712

712:                                              ; preds = %707, %679, %662, %639, %616, %593, %570, %547, %524, %501, %478, %455, %432, %409, %386, %363, %340, %317, %275, %264, %210, %134, %106, %83, %40
  ret void

713:                                              ; preds = %40
  unreachable
}

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

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

declare void @png_error(ptr noundef, ptr noundef) #2

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

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

declare i64 @png_get_uint_31(ptr noundef, ptr noundef) #2

declare void @png_reset_crc(ptr noundef) #2

declare void @png_crc_read(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_check_chunk_name(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @memcmp(ptr noundef, ptr noundef, i64 noundef) #3

declare void @png_handle_IHDR(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_IEND(ptr noundef, ptr noundef, i64 noundef) #2

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

declare i32 @png_handle_as_unknown(ptr noundef, ptr noundef) #2

declare void @png_handle_unknown(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_PLTE(ptr noundef, ptr noundef, i64 noundef) #2

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

declare void @png_handle_gAMA(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_sBIT(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_cHRM(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_sRGB(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_iCCP(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_sPLT(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_tRNS(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_bKGD(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_hIST(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_pHYs(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_oFFs(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_pCAL(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_sCAL(ptr noundef, ptr noundef, i64 noundef) #2

declare void @png_handle_tIME(ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

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 willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 280}
!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 = !{!10, !11, i64 904}
!21 = !{!10, !11, i64 872}
!22 = !{!10, !13, i64 920}
!23 = !{!10, !7, i64 630}
!24 = !{!10, !11, i64 592}
!25 = !{!10, !11, i64 496}
!26 = !{!10, !13, i64 336}
!27 = !{!10, !6, i64 528}
!28 = !{!10, !6, i64 328}


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

@png_IDAT = external global [5 x i8], align 1
@png_IHDR = external global [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 x i8], align 1
@png_IEND = external global [5 x i8], align 1
@png_PLTE = external global [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [22 x i8], align 1
@png_gAMA = external global [5 x i8], align 1
@png_sBIT = external global [5 x i8], align 1
@png_cHRM = external global [5 x i8], align 1
@png_sRGB = external global [5 x i8], align 1
@png_iCCP = external global [5 x i8], align 1
@png_sPLT = external global [5 x i8], align 1
@png_tRNS = external global [5 x i8], align 1
@png_bKGD = external global [5 x i8], align 1
@png_hIST = external global [5 x i8], align 1
@png_pHYs = external global [5 x i8], align 1
@png_oFFs = external global [5 x i8], align 1
@png_pCAL = external global [5 x i8], align 1
@png_sCAL = external global [5 x i8], align 1
@png_tIME = external global [5 x i8], align 1
@png_tEXt = external global [5 x i8], align 1
@png_zTXt = external global [5 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @png_push_read_chunk(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 {
  %3 = alloca [4 x i8], align 1
  %4 = getelementptr inbounds i8, ptr %0, i64 280
  %5 = load i64, ptr %4, align 8, !tbaa !5
  %6 = and i64 %5, 256
  %.not = icmp eq i64 %6, 0
  br i1 %.not, label %7, label %17

7:                                                ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #4
  %8 = getelementptr inbounds i8, ptr %0, i64 904
  %9 = load i64, ptr %8, align 8, !tbaa !19
  %10 = icmp ult i64 %9, 8
  br i1 %10, label %16, label %.thread

.thread:                                          ; preds = %7
  call void @png_push_fill_buffer(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 4)
  %11 = call i64 @png_get_uint_31(ptr noundef nonnull %0, ptr noundef nonnull %3) #4
  %12 = getelementptr inbounds i8, ptr %0, i64 872
  store i64 %11, ptr %12, align 8, !tbaa !20
  call void @png_reset_crc(ptr noundef nonnull %0) #4
  %13 = getelementptr inbounds i8, ptr %0, i64 620
  call void @png_crc_read(ptr noundef nonnull %0, ptr noundef nonnull %13, i64 noundef 4) #4
  call void @png_check_chunk_name(ptr noundef nonnull %0, ptr noundef nonnull %13) #4
  %14 = load i64, ptr %4, align 8, !tbaa !5
  %15 = or i64 %14, 256
  store i64 %15, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #4
  br label %17

16:                                               ; preds = %7
  tail call void @png_push_save_buffer(ptr noundef nonnull %0)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #4
  br label %287

17:                                               ; preds = %.thread, %2
  %18 = phi i64 [ %15, %.thread ], [ %5, %2 ]
  %19 = getelementptr inbounds i8, ptr %0, i64 620
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_IDAT, i64 4)
  %.not199 = icmp ne i32 %bcmp, 0
  %20 = and i64 %18, 8
  %.not200 = icmp eq i64 %20, 0
  %or.cond259 = select i1 %.not199, i1 true, i1 %.not200
  br i1 %or.cond259, label %23, label %21

21:                                               ; preds = %17
  %22 = or i64 %18, 8192
  store i64 %22, ptr %4, align 8, !tbaa !5
  br label %23

23:                                               ; preds = %21, %17
  %bcmp201 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_IHDR, i64 4)
  %.not202 = icmp eq i32 %bcmp201, 0
  br i1 %.not202, label %24, label %36

24:                                               ; preds = %23
  %25 = getelementptr inbounds i8, ptr %0, i64 872
  %26 = load i64, ptr %25, align 8, !tbaa !20
  %.not203 = icmp eq i64 %26, 13
  br i1 %.not203, label %28, label %27

27:                                               ; preds = %24
  call void @png_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.2) #4
  %.pre258 = load i64, ptr %25, align 8, !tbaa !20
  br label %28

28:                                               ; preds = %27, %24
  %29 = phi i64 [ %.pre258, %27 ], [ 13, %24 ]
  %30 = add i64 %29, 4
  %31 = getelementptr inbounds i8, ptr %0, i64 904
  %32 = load i64, ptr %31, align 8, !tbaa !19
  %33 = icmp ugt i64 %30, %32
  br i1 %33, label %34, label %35

34:                                               ; preds = %28
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

35:                                               ; preds = %28
  call void @png_handle_IHDR(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %29) #4
  br label %284

36:                                               ; preds = %23
  %bcmp204 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_IEND, i64 4)
  %.not205 = icmp eq i32 %bcmp204, 0
  br i1 %.not205, label %37, label %47

37:                                               ; preds = %36
  %38 = getelementptr inbounds i8, ptr %0, i64 872
  %39 = load i64, ptr %38, align 8, !tbaa !20
  %40 = add i64 %39, 4
  %41 = getelementptr inbounds i8, ptr %0, i64 904
  %42 = load i64, ptr %41, align 8, !tbaa !19
  %43 = icmp ugt i64 %40, %42
  br i1 %43, label %44, label %45

44:                                               ; preds = %37
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

45:                                               ; preds = %37
  call void @png_handle_IEND(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %39) #4
  %46 = getelementptr inbounds i8, ptr %0, i64 920
  store i32 6, ptr %46, align 8, !tbaa !21
  call void @png_push_have_end(ptr noundef nonnull %0, ptr noundef %1)
  br label %284

47:                                               ; preds = %36
  %48 = call i32 @png_handle_as_unknown(ptr noundef nonnull %0, ptr noundef nonnull %19) #4
  %.not206 = icmp eq i32 %48, 0
  br i1 %.not206, label %76, label %49

49:                                               ; preds = %47
  %50 = getelementptr inbounds i8, ptr %0, i64 872
  %51 = load i64, ptr %50, align 8, !tbaa !20
  %52 = add i64 %51, 4
  %53 = getelementptr inbounds i8, ptr %0, i64 904
  %54 = load i64, ptr %53, align 8, !tbaa !19
  %55 = icmp ugt i64 %52, %54
  br i1 %55, label %56, label %57

56:                                               ; preds = %49
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

57:                                               ; preds = %49
  %bcmp248 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_IDAT, i64 4)
  %.not249 = icmp eq i32 %bcmp248, 0
  br i1 %.not249, label %58, label %61

58:                                               ; preds = %57
  %59 = load i64, ptr %4, align 8, !tbaa !5
  %60 = or i64 %59, 4
  store i64 %60, ptr %4, align 8, !tbaa !5
  br label %61

61:                                               ; preds = %58, %57
  call void @png_handle_unknown(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %51) #4
  %bcmp250 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_PLTE, i64 4)
  %.not251 = icmp eq i32 %bcmp250, 0
  br i1 %.not251, label %62, label %65

62:                                               ; preds = %61
  %63 = load i64, ptr %4, align 8, !tbaa !5
  %64 = or i64 %63, 2
  store i64 %64, ptr %4, align 8, !tbaa !5
  br label %284

65:                                               ; preds = %61
  %bcmp252 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_IDAT, i64 4)
  %.not253 = icmp eq i32 %bcmp252, 0
  br i1 %.not253, label %66, label %284

66:                                               ; preds = %65
  %67 = load i64, ptr %4, align 8, !tbaa !5
  %68 = and i64 %67, 1
  %.not254 = icmp eq i64 %68, 0
  br i1 %.not254, label %69, label %70

69:                                               ; preds = %66
  call void @png_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.3) #4
  br label %284

70:                                               ; preds = %66
  %71 = getelementptr inbounds i8, ptr %0, i64 630
  %72 = load i8, ptr %71, align 2, !tbaa !22
  %73 = icmp eq i8 %72, 3
  %74 = and i64 %67, 2
  %.not255 = icmp eq i64 %74, 0
  %or.cond = and i1 %.not255, %73
  br i1 %or.cond, label %75, label %284

75:                                               ; preds = %70
  call void @png_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) #4
  br label %284

76:                                               ; preds = %47
  %bcmp207 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_PLTE, i64 4)
  %.not208 = icmp eq i32 %bcmp207, 0
  br i1 %.not208, label %77, label %86

77:                                               ; preds = %76
  %78 = getelementptr inbounds i8, ptr %0, i64 872
  %79 = load i64, ptr %78, align 8, !tbaa !20
  %80 = add i64 %79, 4
  %81 = getelementptr inbounds i8, ptr %0, i64 904
  %82 = load i64, ptr %81, align 8, !tbaa !19
  %83 = icmp ugt i64 %80, %82
  br i1 %83, label %84, label %85

84:                                               ; preds = %77
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

85:                                               ; preds = %77
  call void @png_handle_PLTE(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %79) #4
  br label %284

86:                                               ; preds = %76
  %bcmp209 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_IDAT, i64 4)
  %.not210 = icmp eq i32 %bcmp209, 0
  br i1 %.not210, label %87, label %121

87:                                               ; preds = %86
  %88 = load i64, ptr %4, align 8, !tbaa !5
  %89 = and i64 %88, 1
  %.not211 = icmp eq i64 %89, 0
  br i1 %.not211, label %.sink.split, label %90

90:                                               ; preds = %87
  %91 = getelementptr inbounds i8, ptr %0, i64 630
  %92 = load i8, ptr %91, align 2, !tbaa !22
  %93 = icmp eq i8 %92, 3
  %94 = and i64 %88, 2
  %.not212 = icmp eq i64 %94, 0
  %or.cond256 = and i1 %.not212, %93
  br i1 %or.cond256, label %.sink.split, label %95

.sink.split:                                      ; preds = %90, %87
  %.str.4.sink = phi ptr [ @.str.3, %87 ], [ @.str.4, %90 ]
  call void @png_error(ptr noundef nonnull %0, ptr noundef nonnull %.str.4.sink) #4
  br label %95

95:                                               ; preds = %.sink.split, %90
  %96 = load i64, ptr %4, align 8, !tbaa !5
  %97 = and i64 %96, 4
  %.not213 = icmp eq i64 %97, 0
  br i1 %.not213, label %107, label %98

98:                                               ; preds = %95
  %99 = and i64 %96, 8192
  %.not214 = icmp eq i64 %99, 0
  br i1 %.not214, label %100, label %104

100:                                              ; preds = %98
  %101 = getelementptr inbounds i8, ptr %0, i64 872
  %102 = load i64, ptr %101, align 8, !tbaa !20
  %103 = icmp eq i64 %102, 0
  br i1 %103, label %287, label %104

104:                                              ; preds = %100, %98
  %105 = and i64 %96, 8
  %.not215 = icmp eq i64 %105, 0
  br i1 %.not215, label %107, label %106

106:                                              ; preds = %104
  call void @png_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #4
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  br label %107

107:                                              ; preds = %104, %106, %95
  %108 = phi i64 [ %96, %104 ], [ %.pre, %106 ], [ %96, %95 ]
  %109 = getelementptr inbounds i8, ptr %0, i64 872
  %110 = load i64, ptr %109, align 8, !tbaa !20
  %111 = getelementptr inbounds i8, ptr %0, i64 592
  store i64 %110, ptr %111, align 8, !tbaa !23
  %112 = or i64 %108, 4
  store i64 %112, ptr %4, align 8, !tbaa !5
  %113 = getelementptr inbounds i8, ptr %0, i64 920
  store i32 2, ptr %113, align 8, !tbaa !21
  call void @png_push_have_info(ptr noundef nonnull %0, ptr noundef %1)
  %114 = getelementptr inbounds i8, ptr %0, i64 496
  %115 = load i64, ptr %114, align 8, !tbaa !24
  %116 = trunc i64 %115 to i32
  %117 = getelementptr inbounds i8, ptr %0, i64 336
  store i32 %116, ptr %117, align 8, !tbaa !25
  %118 = getelementptr inbounds i8, ptr %0, i64 528
  %119 = load ptr, ptr %118, align 8, !tbaa !26
  %120 = getelementptr inbounds i8, ptr %0, i64 328
  store ptr %119, ptr %120, align 8, !tbaa !27
  br label %287

121:                                              ; preds = %86
  %bcmp216 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_gAMA, i64 4)
  %.not217 = icmp eq i32 %bcmp216, 0
  br i1 %.not217, label %122, label %131

122:                                              ; preds = %121
  %123 = getelementptr inbounds i8, ptr %0, i64 872
  %124 = load i64, ptr %123, align 8, !tbaa !20
  %125 = add i64 %124, 4
  %126 = getelementptr inbounds i8, ptr %0, i64 904
  %127 = load i64, ptr %126, align 8, !tbaa !19
  %128 = icmp ugt i64 %125, %127
  br i1 %128, label %129, label %130

129:                                              ; preds = %122
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

130:                                              ; preds = %122
  call void @png_handle_gAMA(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %124) #4
  br label %284

131:                                              ; preds = %121
  %bcmp218 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_sBIT, i64 4)
  %.not219 = icmp eq i32 %bcmp218, 0
  br i1 %.not219, label %132, label %141

132:                                              ; preds = %131
  %133 = getelementptr inbounds i8, ptr %0, i64 872
  %134 = load i64, ptr %133, align 8, !tbaa !20
  %135 = add i64 %134, 4
  %136 = getelementptr inbounds i8, ptr %0, i64 904
  %137 = load i64, ptr %136, align 8, !tbaa !19
  %138 = icmp ugt i64 %135, %137
  br i1 %138, label %139, label %140

139:                                              ; preds = %132
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

140:                                              ; preds = %132
  call void @png_handle_sBIT(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %134) #4
  br label %284

141:                                              ; preds = %131
  %bcmp220 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_cHRM, i64 4)
  %.not221 = icmp eq i32 %bcmp220, 0
  br i1 %.not221, label %142, label %151

142:                                              ; preds = %141
  %143 = getelementptr inbounds i8, ptr %0, i64 872
  %144 = load i64, ptr %143, align 8, !tbaa !20
  %145 = add i64 %144, 4
  %146 = getelementptr inbounds i8, ptr %0, i64 904
  %147 = load i64, ptr %146, align 8, !tbaa !19
  %148 = icmp ugt i64 %145, %147
  br i1 %148, label %149, label %150

149:                                              ; preds = %142
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

150:                                              ; preds = %142
  call void @png_handle_cHRM(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %144) #4
  br label %284

151:                                              ; preds = %141
  %bcmp222 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_sRGB, i64 4)
  %.not223 = icmp eq i32 %bcmp222, 0
  br i1 %.not223, label %152, label %161

152:                                              ; preds = %151
  %153 = getelementptr inbounds i8, ptr %0, i64 872
  %154 = load i64, ptr %153, align 8, !tbaa !20
  %155 = add i64 %154, 4
  %156 = getelementptr inbounds i8, ptr %0, i64 904
  %157 = load i64, ptr %156, align 8, !tbaa !19
  %158 = icmp ugt i64 %155, %157
  br i1 %158, label %159, label %160

159:                                              ; preds = %152
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

160:                                              ; preds = %152
  call void @png_handle_sRGB(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %154) #4
  br label %284

161:                                              ; preds = %151
  %bcmp224 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_iCCP, i64 4)
  %.not225 = icmp eq i32 %bcmp224, 0
  br i1 %.not225, label %162, label %171

162:                                              ; preds = %161
  %163 = getelementptr inbounds i8, ptr %0, i64 872
  %164 = load i64, ptr %163, align 8, !tbaa !20
  %165 = add i64 %164, 4
  %166 = getelementptr inbounds i8, ptr %0, i64 904
  %167 = load i64, ptr %166, align 8, !tbaa !19
  %168 = icmp ugt i64 %165, %167
  br i1 %168, label %169, label %170

169:                                              ; preds = %162
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

170:                                              ; preds = %162
  call void @png_handle_iCCP(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %164) #4
  br label %284

171:                                              ; preds = %161
  %bcmp226 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_sPLT, i64 4)
  %.not227 = icmp eq i32 %bcmp226, 0
  br i1 %.not227, label %172, label %181

172:                                              ; preds = %171
  %173 = getelementptr inbounds i8, ptr %0, i64 872
  %174 = load i64, ptr %173, align 8, !tbaa !20
  %175 = add i64 %174, 4
  %176 = getelementptr inbounds i8, ptr %0, i64 904
  %177 = load i64, ptr %176, align 8, !tbaa !19
  %178 = icmp ugt i64 %175, %177
  br i1 %178, label %179, label %180

179:                                              ; preds = %172
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

180:                                              ; preds = %172
  call void @png_handle_sPLT(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %174) #4
  br label %284

181:                                              ; preds = %171
  %bcmp228 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_tRNS, i64 4)
  %.not229 = icmp eq i32 %bcmp228, 0
  br i1 %.not229, label %182, label %191

182:                                              ; preds = %181
  %183 = getelementptr inbounds i8, ptr %0, i64 872
  %184 = load i64, ptr %183, align 8, !tbaa !20
  %185 = add i64 %184, 4
  %186 = getelementptr inbounds i8, ptr %0, i64 904
  %187 = load i64, ptr %186, align 8, !tbaa !19
  %188 = icmp ugt i64 %185, %187
  br i1 %188, label %189, label %190

189:                                              ; preds = %182
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

190:                                              ; preds = %182
  call void @png_handle_tRNS(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %184) #4
  br label %284

191:                                              ; preds = %181
  %bcmp230 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_bKGD, i64 4)
  %.not231 = icmp eq i32 %bcmp230, 0
  br i1 %.not231, label %192, label %201

192:                                              ; preds = %191
  %193 = getelementptr inbounds i8, ptr %0, i64 872
  %194 = load i64, ptr %193, align 8, !tbaa !20
  %195 = add i64 %194, 4
  %196 = getelementptr inbounds i8, ptr %0, i64 904
  %197 = load i64, ptr %196, align 8, !tbaa !19
  %198 = icmp ugt i64 %195, %197
  br i1 %198, label %199, label %200

199:                                              ; preds = %192
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

200:                                              ; preds = %192
  call void @png_handle_bKGD(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %194) #4
  br label %284

201:                                              ; preds = %191
  %bcmp232 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_hIST, i64 4)
  %.not233 = icmp eq i32 %bcmp232, 0
  br i1 %.not233, label %202, label %211

202:                                              ; preds = %201
  %203 = getelementptr inbounds i8, ptr %0, i64 872
  %204 = load i64, ptr %203, align 8, !tbaa !20
  %205 = add i64 %204, 4
  %206 = getelementptr inbounds i8, ptr %0, i64 904
  %207 = load i64, ptr %206, align 8, !tbaa !19
  %208 = icmp ugt i64 %205, %207
  br i1 %208, label %209, label %210

209:                                              ; preds = %202
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

210:                                              ; preds = %202
  call void @png_handle_hIST(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %204) #4
  br label %284

211:                                              ; preds = %201
  %bcmp234 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_pHYs, i64 4)
  %.not235 = icmp eq i32 %bcmp234, 0
  br i1 %.not235, label %212, label %221

212:                                              ; preds = %211
  %213 = getelementptr inbounds i8, ptr %0, i64 872
  %214 = load i64, ptr %213, align 8, !tbaa !20
  %215 = add i64 %214, 4
  %216 = getelementptr inbounds i8, ptr %0, i64 904
  %217 = load i64, ptr %216, align 8, !tbaa !19
  %218 = icmp ugt i64 %215, %217
  br i1 %218, label %219, label %220

219:                                              ; preds = %212
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

220:                                              ; preds = %212
  call void @png_handle_pHYs(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %214) #4
  br label %284

221:                                              ; preds = %211
  %bcmp236 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_oFFs, i64 4)
  %.not237 = icmp eq i32 %bcmp236, 0
  br i1 %.not237, label %222, label %231

222:                                              ; preds = %221
  %223 = getelementptr inbounds i8, ptr %0, i64 872
  %224 = load i64, ptr %223, align 8, !tbaa !20
  %225 = add i64 %224, 4
  %226 = getelementptr inbounds i8, ptr %0, i64 904
  %227 = load i64, ptr %226, align 8, !tbaa !19
  %228 = icmp ugt i64 %225, %227
  br i1 %228, label %229, label %230

229:                                              ; preds = %222
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

230:                                              ; preds = %222
  call void @png_handle_oFFs(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %224) #4
  br label %284

231:                                              ; preds = %221
  %bcmp238 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_pCAL, i64 4)
  %.not239 = icmp eq i32 %bcmp238, 0
  br i1 %.not239, label %232, label %241

232:                                              ; preds = %231
  %233 = getelementptr inbounds i8, ptr %0, i64 872
  %234 = load i64, ptr %233, align 8, !tbaa !20
  %235 = add i64 %234, 4
  %236 = getelementptr inbounds i8, ptr %0, i64 904
  %237 = load i64, ptr %236, align 8, !tbaa !19
  %238 = icmp ugt i64 %235, %237
  br i1 %238, label %239, label %240

239:                                              ; preds = %232
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

240:                                              ; preds = %232
  call void @png_handle_pCAL(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %234) #4
  br label %284

241:                                              ; preds = %231
  %bcmp240 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_sCAL, i64 4)
  %.not241 = icmp eq i32 %bcmp240, 0
  br i1 %.not241, label %242, label %251

242:                                              ; preds = %241
  %243 = getelementptr inbounds i8, ptr %0, i64 872
  %244 = load i64, ptr %243, align 8, !tbaa !20
  %245 = add i64 %244, 4
  %246 = getelementptr inbounds i8, ptr %0, i64 904
  %247 = load i64, ptr %246, align 8, !tbaa !19
  %248 = icmp ugt i64 %245, %247
  br i1 %248, label %249, label %250

249:                                              ; preds = %242
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

250:                                              ; preds = %242
  call void @png_handle_sCAL(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %244) #4
  br label %284

251:                                              ; preds = %241
  %bcmp242 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_tIME, i64 4)
  %.not243 = icmp eq i32 %bcmp242, 0
  br i1 %.not243, label %252, label %261

252:                                              ; preds = %251
  %253 = getelementptr inbounds i8, ptr %0, i64 872
  %254 = load i64, ptr %253, align 8, !tbaa !20
  %255 = add i64 %254, 4
  %256 = getelementptr inbounds i8, ptr %0, i64 904
  %257 = load i64, ptr %256, align 8, !tbaa !19
  %258 = icmp ugt i64 %255, %257
  br i1 %258, label %259, label %260

259:                                              ; preds = %252
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

260:                                              ; preds = %252
  call void @png_handle_tIME(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %254) #4
  br label %284

261:                                              ; preds = %251
  %bcmp244 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_tEXt, i64 4)
  %.not245 = icmp eq i32 %bcmp244, 0
  br i1 %.not245, label %262, label %271

262:                                              ; preds = %261
  %263 = getelementptr inbounds i8, ptr %0, i64 872
  %264 = load i64, ptr %263, align 8, !tbaa !20
  %265 = add i64 %264, 4
  %266 = getelementptr inbounds i8, ptr %0, i64 904
  %267 = load i64, ptr %266, align 8, !tbaa !19
  %268 = icmp ugt i64 %265, %267
  br i1 %268, label %269, label %270

269:                                              ; preds = %262
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

270:                                              ; preds = %262
  call void @png_push_handle_tEXt(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %264)
  br label %284

271:                                              ; preds = %261
  %bcmp246 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @png_zTXt, i64 4)
  %.not247 = icmp eq i32 %bcmp246, 0
  %272 = getelementptr inbounds i8, ptr %0, i64 872
  %273 = load i64, ptr %272, align 8, !tbaa !20
  %274 = add i64 %273, 4
  %275 = getelementptr inbounds i8, ptr %0, i64 904
  %276 = load i64, ptr %275, align 8, !tbaa !19
  %277 = icmp ugt i64 %274, %276
  br i1 %.not247, label %278, label %281

278:                                              ; preds = %271
  br i1 %277, label %279, label %280

279:                                              ; preds = %278
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

280:                                              ; preds = %278
  call void @png_push_handle_zTXt(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %273)
  br label %284

281:                                              ; preds = %271
  br i1 %277, label %282, label %283

282:                                              ; preds = %281
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %287

283:                                              ; preds = %281
  call void @png_push_handle_unknown(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %273)
  br label %284

284:                                              ; preds = %45, %85, %130, %150, %170, %190, %210, %230, %250, %270, %283, %280, %260, %240, %220, %200, %180, %160, %140, %62, %69, %75, %70, %65, %35
  %285 = load i64, ptr %4, align 8, !tbaa !5
  %286 = and i64 %285, -257
  store i64 %286, ptr %4, align 8, !tbaa !5
  br label %287

287:                                              ; preds = %16, %100, %284, %282, %279, %269, %259, %249, %239, %229, %219, %209, %199, %189, %179, %169, %159, %149, %139, %129, %107, %84, %56, %44, %34
  ret void
}

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

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

declare void @png_error(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare i64 @png_get_uint_31(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @png_reset_crc(ptr noundef) local_unnamed_addr #2

declare void @png_crc_read(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_check_chunk_name(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @png_handle_IHDR(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_IEND(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

declare i32 @png_handle_as_unknown(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @png_handle_unknown(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_PLTE(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

declare void @png_handle_gAMA(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_sBIT(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_cHRM(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_sRGB(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_iCCP(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_sPLT(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_tRNS(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_bKGD(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_hIST(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_pHYs(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_oFFs(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_pCAL(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_sCAL(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare void @png_handle_tIME(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #3

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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nofree nounwind willreturn memory(argmem: read) }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 280}
!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 = !{!6, !10, i64 904}
!20 = !{!6, !10, i64 872}
!21 = !{!6, !12, i64 920}
!22 = !{!6, !7, i64 630}
!23 = !{!6, !10, i64 592}
!24 = !{!6, !10, i64 496}
!25 = !{!6, !12, i64 336}
!26 = !{!6, !9, i64 528}
!27 = !{!6, !9, i64 328}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass