; LLVM IR from niessner/Matterport :: code/gaps/pkgs/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, ptr, i8, i8, i32, i32, i32, %struct.z_stream_s, ptr, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, %struct.png_row_info_struct, i32, i32, 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, i32, i32, 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, i32, i32, i64, i64, i64, i64, i32, i32, i64, i64, ptr, ptr, ptr, ptr, ptr, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, i32, ptr, i8, i16, i16, i16, i32, i32, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i32, i32, i32, %struct.png_unknown_chunk_t, i32, i32, ptr, i32 }
%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 { i32, 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 }

@__const.png_push_read_chunk.png_IHDR = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_IDAT = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_IEND = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_PLTE = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_bKGD = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_cHRM = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_gAMA = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_hIST = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_iCCP = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_iTXt = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_oFFs = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_pCAL = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_pHYs = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_sBIT = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_sCAL = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_sRGB = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_sPLT = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_tEXt = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_tIME = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_tRNS = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_zTXt = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 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 [21 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 [5 x i8], align 1
  %6 = alloca [5 x i8], align 1
  %7 = alloca [5 x i8], align 1
  %8 = alloca [5 x i8], align 1
  %9 = alloca [5 x i8], align 1
  %10 = alloca [5 x i8], align 1
  %11 = alloca [5 x i8], align 1
  %12 = alloca [5 x i8], align 1
  %13 = alloca [5 x i8], align 1
  %14 = alloca [5 x i8], align 1
  %15 = alloca [5 x i8], align 1
  %16 = alloca [5 x i8], align 1
  %17 = alloca [5 x i8], align 1
  %18 = alloca [5 x i8], align 1
  %19 = alloca [5 x i8], align 1
  %20 = alloca [5 x i8], align 1
  %21 = alloca [5 x i8], align 1
  %22 = alloca [5 x i8], align 1
  %23 = alloca [5 x i8], align 1
  %24 = alloca [5 x i8], align 1
  %25 = alloca [5 x i8], align 1
  %26 = alloca [4 x i8], align 1
  %27 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 5, ptr %5) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %5, ptr align 1 @__const.png_push_read_chunk.png_IHDR, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %6) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %6, ptr align 1 @__const.png_push_read_chunk.png_IDAT, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %7) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %7, ptr align 1 @__const.png_push_read_chunk.png_IEND, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %8) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %8, ptr align 1 @__const.png_push_read_chunk.png_PLTE, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %9) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %9, ptr align 1 @__const.png_push_read_chunk.png_bKGD, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %10) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %10, ptr align 1 @__const.png_push_read_chunk.png_cHRM, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %11) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %11, ptr align 1 @__const.png_push_read_chunk.png_gAMA, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %12) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %12, ptr align 1 @__const.png_push_read_chunk.png_hIST, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %13) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %13, ptr align 1 @__const.png_push_read_chunk.png_iCCP, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %14) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %14, ptr align 1 @__const.png_push_read_chunk.png_iTXt, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %15) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %15, ptr align 1 @__const.png_push_read_chunk.png_oFFs, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %16) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %16, ptr align 1 @__const.png_push_read_chunk.png_pCAL, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %17) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %17, ptr align 1 @__const.png_push_read_chunk.png_pHYs, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %18) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %18, ptr align 1 @__const.png_push_read_chunk.png_sBIT, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %19) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %19, ptr align 1 @__const.png_push_read_chunk.png_sCAL, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %20) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %20, ptr align 1 @__const.png_push_read_chunk.png_sRGB, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %21) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %21, ptr align 1 @__const.png_push_read_chunk.png_sPLT, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %22) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %22, ptr align 1 @__const.png_push_read_chunk.png_tEXt, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %23) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %23, ptr align 1 @__const.png_push_read_chunk.png_tIME, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %24) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %24, ptr align 1 @__const.png_push_read_chunk.png_tRNS, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %25) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %25, ptr align 1 @__const.png_push_read_chunk.png_zTXt, i64 5, i1 false)
  %28 = load ptr, ptr %3, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.png_struct_def, ptr %28, i32 0, i32 13
  %30 = load i32, ptr %29, align 4, !tbaa !9
  %31 = and i32 %30, 256
  %32 = icmp ne i32 %31, 0
  br i1 %32, label %64, label %33

33:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  %34 = load ptr, ptr %3, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.png_struct_def, ptr %34, i32 0, i32 91
  %36 = load i64, ptr %35, align 8, !tbaa !20
  %37 = icmp ult i64 %36, 8
  br i1 %37, label %38, label %40

38:                                               ; preds = %33
  %39 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %39)
  store i32 1, ptr %27, align 4
  br label %61

40:                                               ; preds = %33
  %41 = load ptr, ptr %3, align 8, !tbaa !5
  %42 = getelementptr inbounds [4 x i8], ptr %26, i64 0, i64 0
  call void @png_push_fill_buffer(ptr noundef %41, ptr noundef %42, i64 noundef 4)
  %43 = load ptr, ptr %3, align 8, !tbaa !5
  %44 = getelementptr inbounds [4 x i8], ptr %26, i64 0, i64 0
  %45 = call i32 @png_get_uint_31(ptr noundef %43, ptr noundef %44)
  %46 = load ptr, ptr %3, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.png_struct_def, ptr %46, i32 0, i32 87
  store i32 %45, ptr %47, align 8, !tbaa !21
  %48 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_reset_crc(ptr noundef %48)
  %49 = load ptr, ptr %3, align 8, !tbaa !5
  %50 = load ptr, ptr %3, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.png_struct_def, ptr %50, i32 0, i32 44
  %52 = getelementptr inbounds [5 x i8], ptr %51, i64 0, i64 0
  call void @png_crc_read(ptr noundef %49, ptr noundef %52, i64 noundef 4)
  %53 = load ptr, ptr %3, align 8, !tbaa !5
  %54 = load ptr, ptr %3, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.png_struct_def, ptr %54, i32 0, i32 44
  %56 = getelementptr inbounds [5 x i8], ptr %55, i64 0, i64 0
  call void @png_check_chunk_name(ptr noundef %53, ptr noundef %56)
  %57 = load ptr, ptr %3, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.png_struct_def, ptr %57, i32 0, i32 13
  %59 = load i32, ptr %58, align 4, !tbaa !9
  %60 = or i32 %59, 256
  store i32 %60, ptr %58, align 4, !tbaa !9
  store i32 0, ptr %27, align 4
  br label %61

61:                                               ; preds = %40, %38
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  %62 = load i32, ptr %27, align 4
  switch i32 %62, label %832 [
    i32 0, label %63
  ]

63:                                               ; preds = %61
  br label %64

64:                                               ; preds = %63, %2
  %65 = load ptr, ptr %3, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.png_struct_def, ptr %65, i32 0, i32 44
  %67 = getelementptr inbounds [5 x i8], ptr %66, i64 0, i64 0
  %68 = getelementptr inbounds [5 x i8], ptr %6, i64 0, i64 0
  %69 = call i32 @memcmp(ptr noundef %67, ptr noundef %68, i64 noundef 4) #6
  %70 = icmp ne i32 %69, 0
  br i1 %70, label %83, label %71

71:                                               ; preds = %64
  %72 = load ptr, ptr %3, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.png_struct_def, ptr %72, i32 0, i32 13
  %74 = load i32, ptr %73, align 4, !tbaa !9
  %75 = and i32 %74, 8
  %76 = icmp ne i32 %75, 0
  br i1 %76, label %77, label %82

77:                                               ; preds = %71
  %78 = load ptr, ptr %3, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.png_struct_def, ptr %78, i32 0, i32 13
  %80 = load i32, ptr %79, align 4, !tbaa !9
  %81 = or i32 %80, 8192
  store i32 %81, ptr %79, align 4, !tbaa !9
  br label %82

82:                                               ; preds = %77, %71
  br label %83

83:                                               ; preds = %82, %64
  %84 = load ptr, ptr %3, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.png_struct_def, ptr %84, i32 0, i32 44
  %86 = getelementptr inbounds [5 x i8], ptr %85, i64 0, i64 0
  %87 = getelementptr inbounds [5 x i8], ptr %5, i64 0, i64 0
  %88 = call i32 @memcmp(ptr noundef %86, ptr noundef %87, i64 noundef 4) #6
  %89 = icmp ne i32 %88, 0
  br i1 %89, label %115, label %90

90:                                               ; preds = %83
  %91 = load ptr, ptr %3, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.png_struct_def, ptr %91, i32 0, i32 87
  %93 = load i32, ptr %92, align 8, !tbaa !21
  %94 = icmp ne i32 %93, 13
  br i1 %94, label %95, label %97

95:                                               ; preds = %90
  %96 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %96, ptr noundef @.str.2)
  br label %97

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

107:                                              ; preds = %97
  %108 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %108)
  store i32 1, ptr %27, align 4
  br label %832

109:                                              ; preds = %97
  %110 = load ptr, ptr %3, align 8, !tbaa !5
  %111 = load ptr, ptr %4, align 8, !tbaa !5
  %112 = load ptr, ptr %3, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.png_struct_def, ptr %112, i32 0, i32 87
  %114 = load i32, ptr %113, align 8, !tbaa !21
  call void @png_handle_IHDR(ptr noundef %110, ptr noundef %111, i32 noundef %114)
  br label %827

115:                                              ; preds = %83
  %116 = load ptr, ptr %3, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.png_struct_def, ptr %116, i32 0, i32 44
  %118 = getelementptr inbounds [5 x i8], ptr %117, i64 0, i64 0
  %119 = getelementptr inbounds [5 x i8], ptr %7, i64 0, i64 0
  %120 = call i32 @memcmp(ptr noundef %118, ptr noundef %119, i64 noundef 4) #6
  %121 = icmp ne i32 %120, 0
  br i1 %121, label %144, label %122

122:                                              ; preds = %115
  %123 = load ptr, ptr %3, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.png_struct_def, ptr %123, i32 0, i32 87
  %125 = load i32, ptr %124, align 8, !tbaa !21
  %126 = add i32 %125, 4
  %127 = zext i32 %126 to i64
  %128 = load ptr, ptr %3, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.png_struct_def, ptr %128, i32 0, i32 91
  %130 = load i64, ptr %129, align 8, !tbaa !20
  %131 = icmp ugt i64 %127, %130
  br i1 %131, label %132, label %134

132:                                              ; preds = %122
  %133 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %133)
  store i32 1, ptr %27, align 4
  br label %832

134:                                              ; preds = %122
  %135 = load ptr, ptr %3, align 8, !tbaa !5
  %136 = load ptr, ptr %4, align 8, !tbaa !5
  %137 = load ptr, ptr %3, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.png_struct_def, ptr %137, i32 0, i32 87
  %139 = load i32, ptr %138, align 8, !tbaa !21
  call void @png_handle_IEND(ptr noundef %135, ptr noundef %136, i32 noundef %139)
  %140 = load ptr, ptr %3, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.png_struct_def, ptr %140, i32 0, i32 93
  store i32 6, ptr %141, align 8, !tbaa !22
  %142 = load ptr, ptr %3, align 8, !tbaa !5
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  call void @png_push_have_end(ptr noundef %142, ptr noundef %143)
  br label %826

144:                                              ; preds = %115
  %145 = load ptr, ptr %3, align 8, !tbaa !5
  %146 = load ptr, ptr %3, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.png_struct_def, ptr %146, i32 0, i32 44
  %148 = getelementptr inbounds [5 x i8], ptr %147, i64 0, i64 0
  %149 = call i32 @png_handle_as_unknown(ptr noundef %145, ptr noundef %148)
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %151, label %225

151:                                              ; preds = %144
  %152 = load ptr, ptr %3, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.png_struct_def, ptr %152, i32 0, i32 87
  %154 = load i32, ptr %153, align 8, !tbaa !21
  %155 = add i32 %154, 4
  %156 = zext i32 %155 to i64
  %157 = load ptr, ptr %3, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.png_struct_def, ptr %157, i32 0, i32 91
  %159 = load i64, ptr %158, align 8, !tbaa !20
  %160 = icmp ugt i64 %156, %159
  br i1 %160, label %161, label %163

161:                                              ; preds = %151
  %162 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %162)
  store i32 1, ptr %27, align 4
  br label %832

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

170:                                              ; preds = %163
  %171 = load ptr, ptr %3, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.png_struct_def, ptr %171, i32 0, i32 13
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = or i32 %173, 4
  store i32 %174, ptr %172, align 4, !tbaa !9
  br label %175

175:                                              ; preds = %170, %163
  %176 = load ptr, ptr %3, align 8, !tbaa !5
  %177 = load ptr, ptr %4, align 8, !tbaa !5
  %178 = load ptr, ptr %3, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.png_struct_def, ptr %178, i32 0, i32 87
  %180 = load i32, ptr %179, align 8, !tbaa !21
  call void @png_handle_unknown(ptr noundef %176, ptr noundef %177, i32 noundef %180)
  %181 = load ptr, ptr %3, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.png_struct_def, ptr %181, i32 0, i32 44
  %183 = getelementptr inbounds [5 x i8], ptr %182, i64 0, i64 0
  %184 = getelementptr inbounds [5 x i8], ptr %8, i64 0, i64 0
  %185 = call i32 @memcmp(ptr noundef %183, ptr noundef %184, i64 noundef 4) #6
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %192, label %187

187:                                              ; preds = %175
  %188 = load ptr, ptr %3, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.png_struct_def, ptr %188, i32 0, i32 13
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = or i32 %190, 2
  store i32 %191, ptr %189, align 4, !tbaa !9
  br label %224

192:                                              ; preds = %175
  %193 = load ptr, ptr %3, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.png_struct_def, ptr %193, i32 0, i32 44
  %195 = getelementptr inbounds [5 x i8], ptr %194, i64 0, i64 0
  %196 = getelementptr inbounds [5 x i8], ptr %6, i64 0, i64 0
  %197 = call i32 @memcmp(ptr noundef %195, ptr noundef %196, i64 noundef 4) #6
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %223, label %199

199:                                              ; preds = %192
  %200 = load ptr, ptr %3, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.png_struct_def, ptr %200, i32 0, i32 13
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = and i32 %202, 1
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %207, label %205

205:                                              ; preds = %199
  %206 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %206, ptr noundef @.str.3)
  br label %222

207:                                              ; preds = %199
  %208 = load ptr, ptr %3, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.png_struct_def, ptr %208, i32 0, i32 50
  %210 = load i8, ptr %209, align 2, !tbaa !23
  %211 = zext i8 %210 to i32
  %212 = icmp eq i32 %211, 3
  br i1 %212, label %213, label %221

213:                                              ; preds = %207
  %214 = load ptr, ptr %3, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.png_struct_def, ptr %214, i32 0, i32 13
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = and i32 %216, 2
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %221, label %219

219:                                              ; preds = %213
  %220 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %220, ptr noundef @.str.4)
  br label %221

221:                                              ; preds = %219, %213, %207
  br label %222

222:                                              ; preds = %221, %205
  br label %223

223:                                              ; preds = %222, %192
  br label %224

224:                                              ; preds = %223, %187
  br label %825

225:                                              ; preds = %144
  %226 = load ptr, ptr %3, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.png_struct_def, ptr %226, i32 0, i32 44
  %228 = getelementptr inbounds [5 x i8], ptr %227, i64 0, i64 0
  %229 = getelementptr inbounds [5 x i8], ptr %8, i64 0, i64 0
  %230 = call i32 @memcmp(ptr noundef %228, ptr noundef %229, i64 noundef 4) #6
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %250, label %232

232:                                              ; preds = %225
  %233 = load ptr, ptr %3, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.png_struct_def, ptr %233, i32 0, i32 87
  %235 = load i32, ptr %234, align 8, !tbaa !21
  %236 = add i32 %235, 4
  %237 = zext i32 %236 to i64
  %238 = load ptr, ptr %3, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.png_struct_def, ptr %238, i32 0, i32 91
  %240 = load i64, ptr %239, align 8, !tbaa !20
  %241 = icmp ugt i64 %237, %240
  br i1 %241, label %242, label %244

242:                                              ; preds = %232
  %243 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %243)
  store i32 1, ptr %27, align 4
  br label %832

244:                                              ; preds = %232
  %245 = load ptr, ptr %3, align 8, !tbaa !5
  %246 = load ptr, ptr %4, align 8, !tbaa !5
  %247 = load ptr, ptr %3, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.png_struct_def, ptr %247, i32 0, i32 87
  %249 = load i32, ptr %248, align 8, !tbaa !21
  call void @png_handle_PLTE(ptr noundef %245, ptr noundef %246, i32 noundef %249)
  br label %824

250:                                              ; preds = %225
  %251 = load ptr, ptr %3, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.png_struct_def, ptr %251, i32 0, i32 44
  %253 = getelementptr inbounds [5 x i8], ptr %252, i64 0, i64 0
  %254 = getelementptr inbounds [5 x i8], ptr %6, i64 0, i64 0
  %255 = call i32 @memcmp(ptr noundef %253, ptr noundef %254, i64 noundef 4) #6
  %256 = icmp ne i32 %255, 0
  br i1 %256, label %363, label %257

257:                                              ; preds = %250
  %258 = load ptr, ptr %3, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.png_struct_def, ptr %258, i32 0, i32 13
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = and i32 %260, 1
  %262 = icmp ne i32 %261, 0
  br i1 %262, label %265, label %263

263:                                              ; preds = %257
  %264 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %264, ptr noundef @.str.3)
  br label %280

265:                                              ; preds = %257
  %266 = load ptr, ptr %3, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.png_struct_def, ptr %266, i32 0, i32 50
  %268 = load i8, ptr %267, align 2, !tbaa !23
  %269 = zext i8 %268 to i32
  %270 = icmp eq i32 %269, 3
  br i1 %270, label %271, label %279

271:                                              ; preds = %265
  %272 = load ptr, ptr %3, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.png_struct_def, ptr %272, i32 0, i32 13
  %274 = load i32, ptr %273, align 4, !tbaa !9
  %275 = and i32 %274, 2
  %276 = icmp ne i32 %275, 0
  br i1 %276, label %279, label %277

277:                                              ; preds = %271
  %278 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %278, ptr noundef @.str.4)
  br label %279

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

280:                                              ; preds = %279, %263
  %281 = load ptr, ptr %3, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.png_struct_def, ptr %281, i32 0, i32 13
  %283 = load i32, ptr %282, align 4, !tbaa !9
  %284 = and i32 %283, 4
  %285 = icmp ne i32 %284, 0
  br i1 %285, label %286, label %308

286:                                              ; preds = %280
  %287 = load ptr, ptr %3, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.png_struct_def, ptr %287, i32 0, i32 13
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = and i32 %289, 8192
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %299, label %292

292:                                              ; preds = %286
  %293 = load ptr, ptr %3, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.png_struct_def, ptr %293, i32 0, i32 87
  %295 = load i32, ptr %294, align 8, !tbaa !21
  %296 = icmp eq i32 %295, 0
  br i1 %296, label %297, label %298

297:                                              ; preds = %292
  store i32 1, ptr %27, align 4
  br label %832

298:                                              ; preds = %292
  br label %299

299:                                              ; preds = %298, %286
  %300 = load ptr, ptr %3, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.png_struct_def, ptr %300, i32 0, i32 13
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = and i32 %302, 8
  %304 = icmp ne i32 %303, 0
  br i1 %304, label %305, label %307

305:                                              ; preds = %299
  %306 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_error(ptr noundef %306, ptr noundef @.str.5)
  br label %307

307:                                              ; preds = %305, %299
  br label %308

308:                                              ; preds = %307, %280
  %309 = load ptr, ptr %3, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.png_struct_def, ptr %309, i32 0, i32 87
  %311 = load i32, ptr %310, align 8, !tbaa !21
  %312 = load ptr, ptr %3, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.png_struct_def, ptr %312, i32 0, i32 39
  store i32 %311, ptr %313, align 8, !tbaa !24
  %314 = load ptr, ptr %3, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.png_struct_def, ptr %314, i32 0, i32 13
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = or i32 %316, 4
  store i32 %317, ptr %315, align 4, !tbaa !9
  %318 = load ptr, ptr %3, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.png_struct_def, ptr %318, i32 0, i32 93
  store i32 2, ptr %319, align 8, !tbaa !22
  %320 = load ptr, ptr %3, align 8, !tbaa !5
  %321 = load ptr, ptr %4, align 8, !tbaa !5
  call void @png_push_have_info(ptr noundef %320, ptr noundef %321)
  %322 = load ptr, ptr %3, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.png_struct_def, ptr %322, i32 0, i32 53
  %324 = load i8, ptr %323, align 1, !tbaa !25
  %325 = zext i8 %324 to i32
  %326 = icmp sge i32 %325, 8
  br i1 %326, label %327, label %338

327:                                              ; preds = %308
  %328 = load ptr, ptr %3, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.png_struct_def, ptr %328, i32 0, i32 30
  %330 = load i32, ptr %329, align 8, !tbaa !26
  %331 = zext i32 %330 to i64
  %332 = load ptr, ptr %3, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.png_struct_def, ptr %332, i32 0, i32 53
  %334 = load i8, ptr %333, align 1, !tbaa !25
  %335 = zext i8 %334 to i64
  %336 = lshr i64 %335, 3
  %337 = mul i64 %331, %336
  br label %350

338:                                              ; preds = %308
  %339 = load ptr, ptr %3, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.png_struct_def, ptr %339, i32 0, i32 30
  %341 = load i32, ptr %340, align 8, !tbaa !26
  %342 = zext i32 %341 to i64
  %343 = load ptr, ptr %3, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.png_struct_def, ptr %343, i32 0, i32 53
  %345 = load i8, ptr %344, align 1, !tbaa !25
  %346 = zext i8 %345 to i64
  %347 = mul i64 %342, %346
  %348 = add i64 %347, 7
  %349 = lshr i64 %348, 3
  br label %350

350:                                              ; preds = %338, %327
  %351 = phi i64 [ %337, %327 ], [ %349, %338 ]
  %352 = trunc i64 %351 to i32
  %353 = add i32 %352, 1
  %354 = load ptr, ptr %3, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.png_struct_def, ptr %354, i32 0, i32 16
  %356 = getelementptr inbounds %struct.z_stream_s, ptr %355, i32 0, i32 4
  store i32 %353, ptr %356, align 8, !tbaa !27
  %357 = load ptr, ptr %3, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.png_struct_def, ptr %357, i32 0, i32 33
  %359 = load ptr, ptr %358, align 8, !tbaa !28
  %360 = load ptr, ptr %3, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.png_struct_def, ptr %360, i32 0, i32 16
  %362 = getelementptr inbounds %struct.z_stream_s, ptr %361, i32 0, i32 3
  store ptr %359, ptr %362, align 8, !tbaa !29
  store i32 1, ptr %27, align 4
  br label %832

363:                                              ; preds = %250
  %364 = load ptr, ptr %3, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.png_struct_def, ptr %364, i32 0, i32 44
  %366 = getelementptr inbounds [5 x i8], ptr %365, i64 0, i64 0
  %367 = getelementptr inbounds [5 x i8], ptr %11, i64 0, i64 0
  %368 = call i32 @memcmp(ptr noundef %366, ptr noundef %367, i64 noundef 4) #6
  %369 = icmp ne i32 %368, 0
  br i1 %369, label %388, label %370

370:                                              ; preds = %363
  %371 = load ptr, ptr %3, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.png_struct_def, ptr %371, i32 0, i32 87
  %373 = load i32, ptr %372, align 8, !tbaa !21
  %374 = add i32 %373, 4
  %375 = zext i32 %374 to i64
  %376 = load ptr, ptr %3, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.png_struct_def, ptr %376, i32 0, i32 91
  %378 = load i64, ptr %377, align 8, !tbaa !20
  %379 = icmp ugt i64 %375, %378
  br i1 %379, label %380, label %382

380:                                              ; preds = %370
  %381 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %381)
  store i32 1, ptr %27, align 4
  br label %832

382:                                              ; preds = %370
  %383 = load ptr, ptr %3, align 8, !tbaa !5
  %384 = load ptr, ptr %4, align 8, !tbaa !5
  %385 = load ptr, ptr %3, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.png_struct_def, ptr %385, i32 0, i32 87
  %387 = load i32, ptr %386, align 8, !tbaa !21
  call void @png_handle_gAMA(ptr noundef %383, ptr noundef %384, i32 noundef %387)
  br label %822

388:                                              ; preds = %363
  %389 = load ptr, ptr %3, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.png_struct_def, ptr %389, i32 0, i32 44
  %391 = getelementptr inbounds [5 x i8], ptr %390, i64 0, i64 0
  %392 = getelementptr inbounds [5 x i8], ptr %18, i64 0, i64 0
  %393 = call i32 @memcmp(ptr noundef %391, ptr noundef %392, i64 noundef 4) #6
  %394 = icmp ne i32 %393, 0
  br i1 %394, label %413, label %395

395:                                              ; preds = %388
  %396 = load ptr, ptr %3, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.png_struct_def, ptr %396, i32 0, i32 87
  %398 = load i32, ptr %397, align 8, !tbaa !21
  %399 = add i32 %398, 4
  %400 = zext i32 %399 to i64
  %401 = load ptr, ptr %3, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.png_struct_def, ptr %401, i32 0, i32 91
  %403 = load i64, ptr %402, align 8, !tbaa !20
  %404 = icmp ugt i64 %400, %403
  br i1 %404, label %405, label %407

405:                                              ; preds = %395
  %406 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %406)
  store i32 1, ptr %27, align 4
  br label %832

407:                                              ; preds = %395
  %408 = load ptr, ptr %3, align 8, !tbaa !5
  %409 = load ptr, ptr %4, align 8, !tbaa !5
  %410 = load ptr, ptr %3, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.png_struct_def, ptr %410, i32 0, i32 87
  %412 = load i32, ptr %411, align 8, !tbaa !21
  call void @png_handle_sBIT(ptr noundef %408, ptr noundef %409, i32 noundef %412)
  br label %821

413:                                              ; preds = %388
  %414 = load ptr, ptr %3, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.png_struct_def, ptr %414, i32 0, i32 44
  %416 = getelementptr inbounds [5 x i8], ptr %415, i64 0, i64 0
  %417 = getelementptr inbounds [5 x i8], ptr %10, i64 0, i64 0
  %418 = call i32 @memcmp(ptr noundef %416, ptr noundef %417, i64 noundef 4) #6
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %438, label %420

420:                                              ; preds = %413
  %421 = load ptr, ptr %3, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.png_struct_def, ptr %421, i32 0, i32 87
  %423 = load i32, ptr %422, align 8, !tbaa !21
  %424 = add i32 %423, 4
  %425 = zext i32 %424 to i64
  %426 = load ptr, ptr %3, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.png_struct_def, ptr %426, i32 0, i32 91
  %428 = load i64, ptr %427, align 8, !tbaa !20
  %429 = icmp ugt i64 %425, %428
  br i1 %429, label %430, label %432

430:                                              ; preds = %420
  %431 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %431)
  store i32 1, ptr %27, align 4
  br label %832

432:                                              ; preds = %420
  %433 = load ptr, ptr %3, align 8, !tbaa !5
  %434 = load ptr, ptr %4, align 8, !tbaa !5
  %435 = load ptr, ptr %3, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.png_struct_def, ptr %435, i32 0, i32 87
  %437 = load i32, ptr %436, align 8, !tbaa !21
  call void @png_handle_cHRM(ptr noundef %433, ptr noundef %434, i32 noundef %437)
  br label %820

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

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

455:                                              ; preds = %445
  %456 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %456)
  store i32 1, ptr %27, align 4
  br label %832

457:                                              ; preds = %445
  %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 87
  %462 = load i32, ptr %461, align 8, !tbaa !21
  call void @png_handle_sRGB(ptr noundef %458, ptr noundef %459, i32 noundef %462)
  br label %819

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

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

480:                                              ; preds = %470
  %481 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %481)
  store i32 1, ptr %27, align 4
  br label %832

482:                                              ; preds = %470
  %483 = load ptr, ptr %3, align 8, !tbaa !5
  %484 = load ptr, ptr %4, align 8, !tbaa !5
  %485 = load ptr, ptr %3, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.png_struct_def, ptr %485, i32 0, i32 87
  %487 = load i32, ptr %486, align 8, !tbaa !21
  call void @png_handle_iCCP(ptr noundef %483, ptr noundef %484, i32 noundef %487)
  br label %818

488:                                              ; preds = %463
  %489 = load ptr, ptr %3, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.png_struct_def, ptr %489, i32 0, i32 44
  %491 = getelementptr inbounds [5 x i8], ptr %490, i64 0, i64 0
  %492 = getelementptr inbounds [5 x i8], ptr %21, i64 0, i64 0
  %493 = call i32 @memcmp(ptr noundef %491, ptr noundef %492, i64 noundef 4) #6
  %494 = icmp ne i32 %493, 0
  br i1 %494, label %513, label %495

495:                                              ; preds = %488
  %496 = load ptr, ptr %3, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.png_struct_def, ptr %496, i32 0, i32 87
  %498 = load i32, ptr %497, align 8, !tbaa !21
  %499 = add i32 %498, 4
  %500 = zext i32 %499 to i64
  %501 = load ptr, ptr %3, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.png_struct_def, ptr %501, i32 0, i32 91
  %503 = load i64, ptr %502, align 8, !tbaa !20
  %504 = icmp ugt i64 %500, %503
  br i1 %504, label %505, label %507

505:                                              ; preds = %495
  %506 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %506)
  store i32 1, ptr %27, align 4
  br label %832

507:                                              ; preds = %495
  %508 = load ptr, ptr %3, align 8, !tbaa !5
  %509 = load ptr, ptr %4, align 8, !tbaa !5
  %510 = load ptr, ptr %3, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.png_struct_def, ptr %510, i32 0, i32 87
  %512 = load i32, ptr %511, align 8, !tbaa !21
  call void @png_handle_sPLT(ptr noundef %508, ptr noundef %509, i32 noundef %512)
  br label %817

513:                                              ; preds = %488
  %514 = load ptr, ptr %3, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.png_struct_def, ptr %514, i32 0, i32 44
  %516 = getelementptr inbounds [5 x i8], ptr %515, i64 0, i64 0
  %517 = getelementptr inbounds [5 x i8], ptr %24, i64 0, i64 0
  %518 = call i32 @memcmp(ptr noundef %516, ptr noundef %517, i64 noundef 4) #6
  %519 = icmp ne i32 %518, 0
  br i1 %519, label %538, label %520

520:                                              ; preds = %513
  %521 = load ptr, ptr %3, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.png_struct_def, ptr %521, i32 0, i32 87
  %523 = load i32, ptr %522, align 8, !tbaa !21
  %524 = add i32 %523, 4
  %525 = zext i32 %524 to i64
  %526 = load ptr, ptr %3, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.png_struct_def, ptr %526, i32 0, i32 91
  %528 = load i64, ptr %527, align 8, !tbaa !20
  %529 = icmp ugt i64 %525, %528
  br i1 %529, label %530, label %532

530:                                              ; preds = %520
  %531 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %531)
  store i32 1, ptr %27, align 4
  br label %832

532:                                              ; preds = %520
  %533 = load ptr, ptr %3, align 8, !tbaa !5
  %534 = load ptr, ptr %4, align 8, !tbaa !5
  %535 = load ptr, ptr %3, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.png_struct_def, ptr %535, i32 0, i32 87
  %537 = load i32, ptr %536, align 8, !tbaa !21
  call void @png_handle_tRNS(ptr noundef %533, ptr noundef %534, i32 noundef %537)
  br label %816

538:                                              ; preds = %513
  %539 = load ptr, ptr %3, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.png_struct_def, ptr %539, i32 0, i32 44
  %541 = getelementptr inbounds [5 x i8], ptr %540, i64 0, i64 0
  %542 = getelementptr inbounds [5 x i8], ptr %9, i64 0, i64 0
  %543 = call i32 @memcmp(ptr noundef %541, ptr noundef %542, i64 noundef 4) #6
  %544 = icmp ne i32 %543, 0
  br i1 %544, label %563, label %545

545:                                              ; preds = %538
  %546 = load ptr, ptr %3, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.png_struct_def, ptr %546, i32 0, i32 87
  %548 = load i32, ptr %547, align 8, !tbaa !21
  %549 = add i32 %548, 4
  %550 = zext i32 %549 to i64
  %551 = load ptr, ptr %3, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.png_struct_def, ptr %551, i32 0, i32 91
  %553 = load i64, ptr %552, align 8, !tbaa !20
  %554 = icmp ugt i64 %550, %553
  br i1 %554, label %555, label %557

555:                                              ; preds = %545
  %556 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %556)
  store i32 1, ptr %27, align 4
  br label %832

557:                                              ; preds = %545
  %558 = load ptr, ptr %3, align 8, !tbaa !5
  %559 = load ptr, ptr %4, align 8, !tbaa !5
  %560 = load ptr, ptr %3, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.png_struct_def, ptr %560, i32 0, i32 87
  %562 = load i32, ptr %561, align 8, !tbaa !21
  call void @png_handle_bKGD(ptr noundef %558, ptr noundef %559, i32 noundef %562)
  br label %815

563:                                              ; preds = %538
  %564 = load ptr, ptr %3, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.png_struct_def, ptr %564, i32 0, i32 44
  %566 = getelementptr inbounds [5 x i8], ptr %565, i64 0, i64 0
  %567 = getelementptr inbounds [5 x i8], ptr %12, i64 0, i64 0
  %568 = call i32 @memcmp(ptr noundef %566, ptr noundef %567, i64 noundef 4) #6
  %569 = icmp ne i32 %568, 0
  br i1 %569, label %588, label %570

570:                                              ; preds = %563
  %571 = load ptr, ptr %3, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.png_struct_def, ptr %571, i32 0, i32 87
  %573 = load i32, ptr %572, align 8, !tbaa !21
  %574 = add i32 %573, 4
  %575 = zext i32 %574 to i64
  %576 = load ptr, ptr %3, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.png_struct_def, ptr %576, i32 0, i32 91
  %578 = load i64, ptr %577, align 8, !tbaa !20
  %579 = icmp ugt i64 %575, %578
  br i1 %579, label %580, label %582

580:                                              ; preds = %570
  %581 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %581)
  store i32 1, ptr %27, align 4
  br label %832

582:                                              ; preds = %570
  %583 = load ptr, ptr %3, align 8, !tbaa !5
  %584 = load ptr, ptr %4, align 8, !tbaa !5
  %585 = load ptr, ptr %3, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.png_struct_def, ptr %585, i32 0, i32 87
  %587 = load i32, ptr %586, align 8, !tbaa !21
  call void @png_handle_hIST(ptr noundef %583, ptr noundef %584, i32 noundef %587)
  br label %814

588:                                              ; preds = %563
  %589 = load ptr, ptr %3, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.png_struct_def, ptr %589, i32 0, i32 44
  %591 = getelementptr inbounds [5 x i8], ptr %590, i64 0, i64 0
  %592 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %593 = call i32 @memcmp(ptr noundef %591, ptr noundef %592, i64 noundef 4) #6
  %594 = icmp ne i32 %593, 0
  br i1 %594, label %613, label %595

595:                                              ; preds = %588
  %596 = load ptr, ptr %3, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.png_struct_def, ptr %596, i32 0, i32 87
  %598 = load i32, ptr %597, align 8, !tbaa !21
  %599 = add i32 %598, 4
  %600 = zext i32 %599 to i64
  %601 = load ptr, ptr %3, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.png_struct_def, ptr %601, i32 0, i32 91
  %603 = load i64, ptr %602, align 8, !tbaa !20
  %604 = icmp ugt i64 %600, %603
  br i1 %604, label %605, label %607

605:                                              ; preds = %595
  %606 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %606)
  store i32 1, ptr %27, align 4
  br label %832

607:                                              ; preds = %595
  %608 = load ptr, ptr %3, align 8, !tbaa !5
  %609 = load ptr, ptr %4, align 8, !tbaa !5
  %610 = load ptr, ptr %3, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.png_struct_def, ptr %610, i32 0, i32 87
  %612 = load i32, ptr %611, align 8, !tbaa !21
  call void @png_handle_pHYs(ptr noundef %608, ptr noundef %609, i32 noundef %612)
  br label %813

613:                                              ; preds = %588
  %614 = load ptr, ptr %3, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.png_struct_def, ptr %614, i32 0, i32 44
  %616 = getelementptr inbounds [5 x i8], ptr %615, i64 0, i64 0
  %617 = getelementptr inbounds [5 x i8], ptr %15, i64 0, i64 0
  %618 = call i32 @memcmp(ptr noundef %616, ptr noundef %617, i64 noundef 4) #6
  %619 = icmp ne i32 %618, 0
  br i1 %619, label %638, label %620

620:                                              ; preds = %613
  %621 = load ptr, ptr %3, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.png_struct_def, ptr %621, i32 0, i32 87
  %623 = load i32, ptr %622, align 8, !tbaa !21
  %624 = add i32 %623, 4
  %625 = zext i32 %624 to i64
  %626 = load ptr, ptr %3, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.png_struct_def, ptr %626, i32 0, i32 91
  %628 = load i64, ptr %627, align 8, !tbaa !20
  %629 = icmp ugt i64 %625, %628
  br i1 %629, label %630, label %632

630:                                              ; preds = %620
  %631 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %631)
  store i32 1, ptr %27, align 4
  br label %832

632:                                              ; preds = %620
  %633 = load ptr, ptr %3, align 8, !tbaa !5
  %634 = load ptr, ptr %4, align 8, !tbaa !5
  %635 = load ptr, ptr %3, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.png_struct_def, ptr %635, i32 0, i32 87
  %637 = load i32, ptr %636, align 8, !tbaa !21
  call void @png_handle_oFFs(ptr noundef %633, ptr noundef %634, i32 noundef %637)
  br label %812

638:                                              ; preds = %613
  %639 = load ptr, ptr %3, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.png_struct_def, ptr %639, i32 0, i32 44
  %641 = getelementptr inbounds [5 x i8], ptr %640, i64 0, i64 0
  %642 = getelementptr inbounds [5 x i8], ptr %16, i64 0, i64 0
  %643 = call i32 @memcmp(ptr noundef %641, ptr noundef %642, i64 noundef 4) #6
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %663, label %645

645:                                              ; preds = %638
  %646 = load ptr, ptr %3, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.png_struct_def, ptr %646, i32 0, i32 87
  %648 = load i32, ptr %647, align 8, !tbaa !21
  %649 = add i32 %648, 4
  %650 = zext i32 %649 to i64
  %651 = load ptr, ptr %3, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.png_struct_def, ptr %651, i32 0, i32 91
  %653 = load i64, ptr %652, align 8, !tbaa !20
  %654 = icmp ugt i64 %650, %653
  br i1 %654, label %655, label %657

655:                                              ; preds = %645
  %656 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %656)
  store i32 1, ptr %27, align 4
  br label %832

657:                                              ; preds = %645
  %658 = load ptr, ptr %3, align 8, !tbaa !5
  %659 = load ptr, ptr %4, align 8, !tbaa !5
  %660 = load ptr, ptr %3, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.png_struct_def, ptr %660, i32 0, i32 87
  %662 = load i32, ptr %661, align 8, !tbaa !21
  call void @png_handle_pCAL(ptr noundef %658, ptr noundef %659, i32 noundef %662)
  br label %811

663:                                              ; preds = %638
  %664 = load ptr, ptr %3, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.png_struct_def, ptr %664, i32 0, i32 44
  %666 = getelementptr inbounds [5 x i8], ptr %665, i64 0, i64 0
  %667 = getelementptr inbounds [5 x i8], ptr %19, i64 0, i64 0
  %668 = call i32 @memcmp(ptr noundef %666, ptr noundef %667, i64 noundef 4) #6
  %669 = icmp ne i32 %668, 0
  br i1 %669, label %688, label %670

670:                                              ; preds = %663
  %671 = load ptr, ptr %3, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.png_struct_def, ptr %671, i32 0, i32 87
  %673 = load i32, ptr %672, align 8, !tbaa !21
  %674 = add i32 %673, 4
  %675 = zext i32 %674 to i64
  %676 = load ptr, ptr %3, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.png_struct_def, ptr %676, i32 0, i32 91
  %678 = load i64, ptr %677, align 8, !tbaa !20
  %679 = icmp ugt i64 %675, %678
  br i1 %679, label %680, label %682

680:                                              ; preds = %670
  %681 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %681)
  store i32 1, ptr %27, align 4
  br label %832

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

688:                                              ; preds = %663
  %689 = load ptr, ptr %3, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.png_struct_def, ptr %689, i32 0, i32 44
  %691 = getelementptr inbounds [5 x i8], ptr %690, i64 0, i64 0
  %692 = getelementptr inbounds [5 x i8], ptr %23, i64 0, i64 0
  %693 = call i32 @memcmp(ptr noundef %691, ptr noundef %692, i64 noundef 4) #6
  %694 = icmp ne i32 %693, 0
  br i1 %694, label %713, label %695

695:                                              ; preds = %688
  %696 = load ptr, ptr %3, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.png_struct_def, ptr %696, i32 0, i32 87
  %698 = load i32, ptr %697, align 8, !tbaa !21
  %699 = add i32 %698, 4
  %700 = zext i32 %699 to i64
  %701 = load ptr, ptr %3, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.png_struct_def, ptr %701, i32 0, i32 91
  %703 = load i64, ptr %702, align 8, !tbaa !20
  %704 = icmp ugt i64 %700, %703
  br i1 %704, label %705, label %707

705:                                              ; preds = %695
  %706 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %706)
  store i32 1, ptr %27, align 4
  br label %832

707:                                              ; preds = %695
  %708 = load ptr, ptr %3, align 8, !tbaa !5
  %709 = load ptr, ptr %4, align 8, !tbaa !5
  %710 = load ptr, ptr %3, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.png_struct_def, ptr %710, i32 0, i32 87
  %712 = load i32, ptr %711, align 8, !tbaa !21
  call void @png_handle_tIME(ptr noundef %708, ptr noundef %709, i32 noundef %712)
  br label %809

713:                                              ; preds = %688
  %714 = load ptr, ptr %3, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.png_struct_def, ptr %714, i32 0, i32 44
  %716 = getelementptr inbounds [5 x i8], ptr %715, i64 0, i64 0
  %717 = getelementptr inbounds [5 x i8], ptr %22, i64 0, i64 0
  %718 = call i32 @memcmp(ptr noundef %716, ptr noundef %717, i64 noundef 4) #6
  %719 = icmp ne i32 %718, 0
  br i1 %719, label %738, label %720

720:                                              ; preds = %713
  %721 = load ptr, ptr %3, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.png_struct_def, ptr %721, i32 0, i32 87
  %723 = load i32, ptr %722, align 8, !tbaa !21
  %724 = add i32 %723, 4
  %725 = zext i32 %724 to i64
  %726 = load ptr, ptr %3, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.png_struct_def, ptr %726, i32 0, i32 91
  %728 = load i64, ptr %727, align 8, !tbaa !20
  %729 = icmp ugt i64 %725, %728
  br i1 %729, label %730, label %732

730:                                              ; preds = %720
  %731 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %731)
  store i32 1, ptr %27, align 4
  br label %832

732:                                              ; preds = %720
  %733 = load ptr, ptr %3, align 8, !tbaa !5
  %734 = load ptr, ptr %4, align 8, !tbaa !5
  %735 = load ptr, ptr %3, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.png_struct_def, ptr %735, i32 0, i32 87
  %737 = load i32, ptr %736, align 8, !tbaa !21
  call void @png_push_handle_tEXt(ptr noundef %733, ptr noundef %734, i32 noundef %737)
  br label %808

738:                                              ; preds = %713
  %739 = load ptr, ptr %3, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.png_struct_def, ptr %739, i32 0, i32 44
  %741 = getelementptr inbounds [5 x i8], ptr %740, i64 0, i64 0
  %742 = getelementptr inbounds [5 x i8], ptr %25, i64 0, i64 0
  %743 = call i32 @memcmp(ptr noundef %741, ptr noundef %742, i64 noundef 4) #6
  %744 = icmp ne i32 %743, 0
  br i1 %744, label %763, label %745

745:                                              ; preds = %738
  %746 = load ptr, ptr %3, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.png_struct_def, ptr %746, i32 0, i32 87
  %748 = load i32, ptr %747, align 8, !tbaa !21
  %749 = add i32 %748, 4
  %750 = zext i32 %749 to i64
  %751 = load ptr, ptr %3, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.png_struct_def, ptr %751, i32 0, i32 91
  %753 = load i64, ptr %752, align 8, !tbaa !20
  %754 = icmp ugt i64 %750, %753
  br i1 %754, label %755, label %757

755:                                              ; preds = %745
  %756 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %756)
  store i32 1, ptr %27, align 4
  br label %832

757:                                              ; preds = %745
  %758 = load ptr, ptr %3, align 8, !tbaa !5
  %759 = load ptr, ptr %4, align 8, !tbaa !5
  %760 = load ptr, ptr %3, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.png_struct_def, ptr %760, i32 0, i32 87
  %762 = load i32, ptr %761, align 8, !tbaa !21
  call void @png_push_handle_zTXt(ptr noundef %758, ptr noundef %759, i32 noundef %762)
  br label %807

763:                                              ; preds = %738
  %764 = load ptr, ptr %3, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.png_struct_def, ptr %764, i32 0, i32 44
  %766 = getelementptr inbounds [5 x i8], ptr %765, i64 0, i64 0
  %767 = getelementptr inbounds [5 x i8], ptr %14, i64 0, i64 0
  %768 = call i32 @memcmp(ptr noundef %766, ptr noundef %767, i64 noundef 4) #6
  %769 = icmp ne i32 %768, 0
  br i1 %769, label %788, label %770

770:                                              ; preds = %763
  %771 = load ptr, ptr %3, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.png_struct_def, ptr %771, i32 0, i32 87
  %773 = load i32, ptr %772, align 8, !tbaa !21
  %774 = add i32 %773, 4
  %775 = zext i32 %774 to i64
  %776 = load ptr, ptr %3, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.png_struct_def, ptr %776, i32 0, i32 91
  %778 = load i64, ptr %777, align 8, !tbaa !20
  %779 = icmp ugt i64 %775, %778
  br i1 %779, label %780, label %782

780:                                              ; preds = %770
  %781 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %781)
  store i32 1, ptr %27, align 4
  br label %832

782:                                              ; preds = %770
  %783 = load ptr, ptr %3, align 8, !tbaa !5
  %784 = load ptr, ptr %4, align 8, !tbaa !5
  %785 = load ptr, ptr %3, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.png_struct_def, ptr %785, i32 0, i32 87
  %787 = load i32, ptr %786, align 8, !tbaa !21
  call void @png_push_handle_iTXt(ptr noundef %783, ptr noundef %784, i32 noundef %787)
  br label %806

788:                                              ; preds = %763
  %789 = load ptr, ptr %3, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.png_struct_def, ptr %789, i32 0, i32 87
  %791 = load i32, ptr %790, align 8, !tbaa !21
  %792 = add i32 %791, 4
  %793 = zext i32 %792 to i64
  %794 = load ptr, ptr %3, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.png_struct_def, ptr %794, i32 0, i32 91
  %796 = load i64, ptr %795, align 8, !tbaa !20
  %797 = icmp ugt i64 %793, %796
  br i1 %797, label %798, label %800

798:                                              ; preds = %788
  %799 = load ptr, ptr %3, align 8, !tbaa !5
  call void @png_push_save_buffer(ptr noundef %799)
  store i32 1, ptr %27, align 4
  br label %832

800:                                              ; preds = %788
  %801 = load ptr, ptr %3, align 8, !tbaa !5
  %802 = load ptr, ptr %4, align 8, !tbaa !5
  %803 = load ptr, ptr %3, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.png_struct_def, ptr %803, i32 0, i32 87
  %805 = load i32, ptr %804, align 8, !tbaa !21
  call void @png_push_handle_unknown(ptr noundef %801, ptr noundef %802, i32 noundef %805)
  br label %806

806:                                              ; preds = %800, %782
  br label %807

807:                                              ; preds = %806, %757
  br label %808

808:                                              ; preds = %807, %732
  br label %809

809:                                              ; preds = %808, %707
  br label %810

810:                                              ; preds = %809, %682
  br label %811

811:                                              ; preds = %810, %657
  br label %812

812:                                              ; preds = %811, %632
  br label %813

813:                                              ; preds = %812, %607
  br label %814

814:                                              ; preds = %813, %582
  br label %815

815:                                              ; preds = %814, %557
  br label %816

816:                                              ; preds = %815, %532
  br label %817

817:                                              ; preds = %816, %507
  br label %818

818:                                              ; preds = %817, %482
  br label %819

819:                                              ; preds = %818, %457
  br label %820

820:                                              ; preds = %819, %432
  br label %821

821:                                              ; preds = %820, %407
  br label %822

822:                                              ; preds = %821, %382
  br label %823

823:                                              ; preds = %822
  br label %824

824:                                              ; preds = %823, %244
  br label %825

825:                                              ; preds = %824, %224
  br label %826

826:                                              ; preds = %825, %134
  br label %827

827:                                              ; preds = %826, %109
  %828 = load ptr, ptr %3, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.png_struct_def, ptr %828, i32 0, i32 13
  %830 = load i32, ptr %829, align 4, !tbaa !9
  %831 = and i32 %830, -257
  store i32 %831, ptr %829, align 4, !tbaa !9
  store i32 0, ptr %27, align 4
  br label %832

832:                                              ; preds = %827, %798, %780, %755, %730, %705, %680, %655, %630, %605, %580, %555, %530, %505, %480, %455, %430, %405, %380, %350, %297, %242, %161, %132, %107, %61
  call void @llvm.lifetime.end.p0(i64 5, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %5) #5
  %833 = load i32, ptr %27, align 4
  switch i32 %833, label %835 [
    i32 0, label %834
    i32 1, label %834
  ]

834:                                              ; preds = %832, %832
  ret void

835:                                              ; preds = %832
  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: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

declare i32 @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) #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @png_push_handle_unknown(ptr noundef, ptr noundef, i32 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { nounwind }
attributes #6 = { 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 284}
!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, !6, i64 272, !7, i64 280, !7, i64 281, !11, i64 284, !11, i64 288, !11, i64 292, !12, i64 296, !6, i64 408, !13, i64 416, !11, i64 424, !11, i64 428, !11, i64 432, !11, i64 436, !11, i64 440, !11, i64 444, !11, i64 448, !11, i64 452, !11, i64 456, !13, i64 464, !13, i64 472, !11, i64 480, !11, i64 484, !6, i64 488, !6, i64 496, !6, i64 504, !6, i64 512, !6, i64 520, !6, i64 528, !14, i64 536, !11, i64 560, !11, i64 564, !6, i64 568, !15, i64 576, !15, i64 578, !7, i64 580, !7, i64 585, !7, i64 586, !7, i64 587, !7, i64 588, !7, i64 589, !7, i64 590, !7, i64 591, !7, i64 592, !7, i64 593, !7, i64 594, !7, i64 595, !7, i64 596, !15, i64 598, !7, i64 600, !16, i64 604, !17, i64 608, !17, i64 618, !6, i64 632, !11, i64 640, !11, i64 644, !11, i64 648, !16, i64 652, !16, i64 656, !6, i64 664, !6, i64 672, !6, i64 680, !6, i64 688, !6, i64 696, !6, i64 704, !18, i64 712, !18, i64 717, !6, i64 728, !17, i64 736, !6, i64 752, !6, i64 760, !6, i64 768, !6, i64 776, !6, i64 784, !6, i64 792, !6, i64 800, !6, i64 808, !6, i64 816, !11, i64 824, !11, i64 828, !13, i64 832, !13, i64 840, !13, i64 848, !13, i64 856, !11, i64 864, !11, i64 868, !13, i64 872, !13, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !7, i64 928, !7, i64 929, !6, i64 936, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !6, i64 976, !11, i64 984, !6, i64 992, !6, i64 1000, !11, i64 1008, !6, i64 1016, !7, i64 1024, !15, i64 1026, !15, i64 1028, !15, i64 1030, !11, i64 1032, !11, i64 1036, !7, i64 1040, !6, i64 1048, !6, i64 1056, !6, i64 1064, !6, i64 1072, !6, i64 1080, !6, i64 1088, !6, i64 1096, !7, i64 1104, !11, i64 1108, !11, i64 1112, !11, i64 1116, !19, i64 1120, !11, i64 1152, !11, i64 1156, !6, i64 1160, !11, i64 1168}
!11 = !{!"int", !7, i64 0}
!12 = !{!"z_stream_s", !6, i64 0, !11, i64 8, !13, i64 16, !6, i64 24, !11, i64 32, !13, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !11, i64 88, !13, i64 96, !13, i64 104}
!13 = !{!"long", !7, i64 0}
!14 = !{!"png_row_info_struct", !11, i64 0, !13, 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, !13, i64 16, !7, i64 24}
!20 = !{!10, !13, i64 848}
!21 = !{!10, !11, i64 824}
!22 = !{!10, !11, i64 864}
!23 = !{!10, !7, i64 590}
!24 = !{!10, !11, i64 560}
!25 = !{!10, !7, i64 593}
!26 = !{!10, !11, i64 480}
!27 = !{!10, !11, i64 328}
!28 = !{!10, !6, i64 496}
!29 = !{!10, !6, i64 320}


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

@__const.png_push_read_chunk.png_IHDR = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_IDAT = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_IEND = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_PLTE = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_bKGD = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_cHRM = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_gAMA = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_hIST = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_iCCP = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_iTXt = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_oFFs = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_pCAL = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_pHYs = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_sBIT = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_sCAL = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_sRGB = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_sPLT = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_tEXt = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_tIME = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_tRNS = external hidden unnamed_addr constant [5 x i8], align 1
@__const.png_push_read_chunk.png_zTXt = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 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 [21 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 284
  %5 = load i32, ptr %4, align 4, !tbaa !5
  %6 = and i32 %5, 256
  %.not = icmp eq i32 %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 848
  %9 = load i64, ptr %8, align 8, !tbaa !19
  %10 = icmp ugt i64 %9, 7
  br i1 %10, label %.thread, label %16

.thread:                                          ; preds = %7
  call void @png_push_fill_buffer(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 4)
  %11 = call i32 @png_get_uint_31(ptr noundef nonnull %0, ptr noundef nonnull %3) #4
  %12 = getelementptr inbounds i8, ptr %0, i64 824
  store i32 %11, ptr %12, align 8, !tbaa !20
  call void @png_reset_crc(ptr noundef nonnull %0) #4
  %13 = getelementptr inbounds i8, ptr %0, i64 580
  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 i32, ptr %4, align 4, !tbaa !5
  %15 = or i32 %14, 256
  store i32 %15, ptr %4, align 4, !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 %334

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

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

23:                                               ; preds = %21, %17
  %bcmp212 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_IHDR, i64 4)
  %.not213 = icmp eq i32 %bcmp212, 0
  br i1 %.not213, label %24, label %37

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

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

28:                                               ; preds = %27, %24
  %29 = phi i32 [ %.pre270, %27 ], [ 13, %24 ]
  %30 = add i32 %29, 4
  %31 = zext i32 %30 to i64
  %32 = getelementptr inbounds i8, ptr %0, i64 848
  %33 = load i64, ptr %32, align 8, !tbaa !19
  %34 = icmp ult i64 %33, %31
  br i1 %34, label %35, label %36

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

36:                                               ; preds = %28
  call void @png_handle_IHDR(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %29) #4
  br label %331

37:                                               ; preds = %23
  %bcmp215 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_IEND, i64 4)
  %.not216 = icmp eq i32 %bcmp215, 0
  br i1 %.not216, label %38, label %49

38:                                               ; preds = %37
  %39 = getelementptr inbounds i8, ptr %0, i64 824
  %40 = load i32, ptr %39, align 8, !tbaa !20
  %41 = add i32 %40, 4
  %42 = zext i32 %41 to i64
  %43 = getelementptr inbounds i8, ptr %0, i64 848
  %44 = load i64, ptr %43, align 8, !tbaa !19
  %45 = icmp ult i64 %44, %42
  br i1 %45, label %46, label %47

46:                                               ; preds = %38
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

47:                                               ; preds = %38
  call void @png_handle_IEND(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %40) #4
  %48 = getelementptr inbounds i8, ptr %0, i64 864
  store i32 6, ptr %48, align 8, !tbaa !21
  call void @png_push_have_end(ptr noundef nonnull %0, ptr noundef %1)
  br label %331

49:                                               ; preds = %37
  %50 = call i32 @png_handle_as_unknown(ptr noundef nonnull %0, ptr noundef nonnull %19) #4
  %.not217 = icmp eq i32 %50, 0
  br i1 %.not217, label %79, label %51

51:                                               ; preds = %49
  %52 = getelementptr inbounds i8, ptr %0, i64 824
  %53 = load i32, ptr %52, align 8, !tbaa !20
  %54 = add i32 %53, 4
  %55 = zext i32 %54 to i64
  %56 = getelementptr inbounds i8, ptr %0, i64 848
  %57 = load i64, ptr %56, align 8, !tbaa !19
  %58 = icmp ult i64 %57, %55
  br i1 %58, label %59, label %60

59:                                               ; preds = %51
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

60:                                               ; preds = %51
  %bcmp261 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_IDAT, i64 4)
  %.not262 = icmp eq i32 %bcmp261, 0
  br i1 %.not262, label %61, label %64

61:                                               ; preds = %60
  %62 = load i32, ptr %4, align 4, !tbaa !5
  %63 = or i32 %62, 4
  store i32 %63, ptr %4, align 4, !tbaa !5
  br label %64

64:                                               ; preds = %61, %60
  call void @png_handle_unknown(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %53) #4
  %bcmp263 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_PLTE, i64 4)
  %.not264 = icmp eq i32 %bcmp263, 0
  br i1 %.not264, label %65, label %68

65:                                               ; preds = %64
  %66 = load i32, ptr %4, align 4, !tbaa !5
  %67 = or i32 %66, 2
  store i32 %67, ptr %4, align 4, !tbaa !5
  br label %331

68:                                               ; preds = %64
  %bcmp265 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_IDAT, i64 4)
  %.not266 = icmp eq i32 %bcmp265, 0
  br i1 %.not266, label %69, label %331

69:                                               ; preds = %68
  %70 = load i32, ptr %4, align 4, !tbaa !5
  %71 = and i32 %70, 1
  %.not267 = icmp eq i32 %71, 0
  br i1 %.not267, label %72, label %73

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

73:                                               ; preds = %69
  %74 = getelementptr inbounds i8, ptr %0, i64 590
  %75 = load i8, ptr %74, align 2, !tbaa !22
  %76 = icmp eq i8 %75, 3
  %77 = and i32 %70, 2
  %.not268 = icmp eq i32 %77, 0
  %or.cond = and i1 %.not268, %76
  br i1 %or.cond, label %78, label %331

78:                                               ; preds = %73
  call void @png_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) #4
  br label %331

79:                                               ; preds = %49
  %bcmp218 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_PLTE, i64 4)
  %.not219 = icmp eq i32 %bcmp218, 0
  br i1 %.not219, label %80, label %90

80:                                               ; preds = %79
  %81 = getelementptr inbounds i8, ptr %0, i64 824
  %82 = load i32, ptr %81, align 8, !tbaa !20
  %83 = add i32 %82, 4
  %84 = zext i32 %83 to i64
  %85 = getelementptr inbounds i8, ptr %0, i64 848
  %86 = load i64, ptr %85, align 8, !tbaa !19
  %87 = icmp ult i64 %86, %84
  br i1 %87, label %88, label %89

88:                                               ; preds = %80
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

89:                                               ; preds = %80
  call void @png_handle_PLTE(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %82) #4
  br label %331

90:                                               ; preds = %79
  %bcmp220 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_IDAT, i64 4)
  %.not221 = icmp eq i32 %bcmp220, 0
  br i1 %.not221, label %91, label %141

91:                                               ; preds = %90
  %92 = load i32, ptr %4, align 4, !tbaa !5
  %93 = and i32 %92, 1
  %.not222 = icmp eq i32 %93, 0
  br i1 %.not222, label %.sink.split, label %94

94:                                               ; preds = %91
  %95 = getelementptr inbounds i8, ptr %0, i64 590
  %96 = load i8, ptr %95, align 2, !tbaa !22
  %97 = icmp eq i8 %96, 3
  %98 = and i32 %92, 2
  %.not223 = icmp eq i32 %98, 0
  %or.cond269 = and i1 %.not223, %97
  br i1 %or.cond269, label %.sink.split, label %99

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

99:                                               ; preds = %.sink.split, %94
  %100 = load i32, ptr %4, align 4, !tbaa !5
  %101 = and i32 %100, 4
  %.not224 = icmp eq i32 %101, 0
  br i1 %.not224, label %111, label %102

102:                                              ; preds = %99
  %103 = and i32 %100, 8192
  %.not225 = icmp eq i32 %103, 0
  br i1 %.not225, label %104, label %108

104:                                              ; preds = %102
  %105 = getelementptr inbounds i8, ptr %0, i64 824
  %106 = load i32, ptr %105, align 8, !tbaa !20
  %107 = icmp eq i32 %106, 0
  br i1 %107, label %334, label %108

108:                                              ; preds = %104, %102
  %109 = and i32 %100, 8
  %.not226 = icmp eq i32 %109, 0
  br i1 %.not226, label %111, label %110

110:                                              ; preds = %108
  call void @png_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #4
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  br label %111

111:                                              ; preds = %108, %110, %99
  %112 = phi i32 [ %100, %108 ], [ %.pre, %110 ], [ %100, %99 ]
  %113 = getelementptr inbounds i8, ptr %0, i64 824
  %114 = load i32, ptr %113, align 8, !tbaa !20
  %115 = getelementptr inbounds i8, ptr %0, i64 560
  store i32 %114, ptr %115, align 8, !tbaa !23
  %116 = or i32 %112, 4
  store i32 %116, ptr %4, align 4, !tbaa !5
  %117 = getelementptr inbounds i8, ptr %0, i64 864
  store i32 2, ptr %117, align 8, !tbaa !21
  call void @png_push_have_info(ptr noundef nonnull %0, ptr noundef %1)
  %118 = getelementptr inbounds i8, ptr %0, i64 593
  %119 = load i8, ptr %118, align 1, !tbaa !24
  %120 = icmp ugt i8 %119, 7
  %121 = getelementptr inbounds i8, ptr %0, i64 480
  %122 = load i32, ptr %121, align 8, !tbaa !25
  %123 = zext i32 %122 to i64
  br i1 %120, label %124, label %128

124:                                              ; preds = %111
  %125 = lshr i8 %119, 3
  %126 = zext nneg i8 %125 to i64
  %127 = mul nuw nsw i64 %123, %126
  br label %133

128:                                              ; preds = %111
  %129 = zext nneg i8 %119 to i64
  %130 = mul nuw nsw i64 %123, %129
  %131 = add nuw nsw i64 %130, 7
  %132 = lshr i64 %131, 3
  br label %133

133:                                              ; preds = %128, %124
  %134 = phi i64 [ %127, %124 ], [ %132, %128 ]
  %135 = trunc i64 %134 to i32
  %136 = add i32 %135, 1
  %137 = getelementptr inbounds i8, ptr %0, i64 328
  store i32 %136, ptr %137, align 8, !tbaa !26
  %138 = getelementptr inbounds i8, ptr %0, i64 496
  %139 = load ptr, ptr %138, align 8, !tbaa !27
  %140 = getelementptr inbounds i8, ptr %0, i64 320
  store ptr %139, ptr %140, align 8, !tbaa !28
  br label %334

141:                                              ; preds = %90
  %bcmp227 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_gAMA, i64 4)
  %.not228 = icmp eq i32 %bcmp227, 0
  br i1 %.not228, label %142, label %152

142:                                              ; preds = %141
  %143 = getelementptr inbounds i8, ptr %0, i64 824
  %144 = load i32, ptr %143, align 8, !tbaa !20
  %145 = add i32 %144, 4
  %146 = zext i32 %145 to i64
  %147 = getelementptr inbounds i8, ptr %0, i64 848
  %148 = load i64, ptr %147, align 8, !tbaa !19
  %149 = icmp ult i64 %148, %146
  br i1 %149, label %150, label %151

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

151:                                              ; preds = %142
  call void @png_handle_gAMA(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %144) #4
  br label %331

152:                                              ; preds = %141
  %bcmp229 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_sBIT, i64 4)
  %.not230 = icmp eq i32 %bcmp229, 0
  br i1 %.not230, label %153, label %163

153:                                              ; preds = %152
  %154 = getelementptr inbounds i8, ptr %0, i64 824
  %155 = load i32, ptr %154, align 8, !tbaa !20
  %156 = add i32 %155, 4
  %157 = zext i32 %156 to i64
  %158 = getelementptr inbounds i8, ptr %0, i64 848
  %159 = load i64, ptr %158, align 8, !tbaa !19
  %160 = icmp ult i64 %159, %157
  br i1 %160, label %161, label %162

161:                                              ; preds = %153
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

162:                                              ; preds = %153
  call void @png_handle_sBIT(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %155) #4
  br label %331

163:                                              ; preds = %152
  %bcmp231 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_cHRM, i64 4)
  %.not232 = icmp eq i32 %bcmp231, 0
  br i1 %.not232, label %164, label %174

164:                                              ; preds = %163
  %165 = getelementptr inbounds i8, ptr %0, i64 824
  %166 = load i32, ptr %165, align 8, !tbaa !20
  %167 = add i32 %166, 4
  %168 = zext i32 %167 to i64
  %169 = getelementptr inbounds i8, ptr %0, i64 848
  %170 = load i64, ptr %169, align 8, !tbaa !19
  %171 = icmp ult i64 %170, %168
  br i1 %171, label %172, label %173

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

173:                                              ; preds = %164
  call void @png_handle_cHRM(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %166) #4
  br label %331

174:                                              ; preds = %163
  %bcmp233 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_sRGB, i64 4)
  %.not234 = icmp eq i32 %bcmp233, 0
  br i1 %.not234, label %175, label %185

175:                                              ; preds = %174
  %176 = getelementptr inbounds i8, ptr %0, i64 824
  %177 = load i32, ptr %176, align 8, !tbaa !20
  %178 = add i32 %177, 4
  %179 = zext i32 %178 to i64
  %180 = getelementptr inbounds i8, ptr %0, i64 848
  %181 = load i64, ptr %180, align 8, !tbaa !19
  %182 = icmp ult i64 %181, %179
  br i1 %182, label %183, label %184

183:                                              ; preds = %175
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

184:                                              ; preds = %175
  call void @png_handle_sRGB(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %177) #4
  br label %331

185:                                              ; preds = %174
  %bcmp235 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_iCCP, i64 4)
  %.not236 = icmp eq i32 %bcmp235, 0
  br i1 %.not236, label %186, label %196

186:                                              ; preds = %185
  %187 = getelementptr inbounds i8, ptr %0, i64 824
  %188 = load i32, ptr %187, align 8, !tbaa !20
  %189 = add i32 %188, 4
  %190 = zext i32 %189 to i64
  %191 = getelementptr inbounds i8, ptr %0, i64 848
  %192 = load i64, ptr %191, align 8, !tbaa !19
  %193 = icmp ult i64 %192, %190
  br i1 %193, label %194, label %195

194:                                              ; preds = %186
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

195:                                              ; preds = %186
  call void @png_handle_iCCP(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %188) #4
  br label %331

196:                                              ; preds = %185
  %bcmp237 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_sPLT, i64 4)
  %.not238 = icmp eq i32 %bcmp237, 0
  br i1 %.not238, label %197, label %207

197:                                              ; preds = %196
  %198 = getelementptr inbounds i8, ptr %0, i64 824
  %199 = load i32, ptr %198, align 8, !tbaa !20
  %200 = add i32 %199, 4
  %201 = zext i32 %200 to i64
  %202 = getelementptr inbounds i8, ptr %0, i64 848
  %203 = load i64, ptr %202, align 8, !tbaa !19
  %204 = icmp ult i64 %203, %201
  br i1 %204, label %205, label %206

205:                                              ; preds = %197
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

206:                                              ; preds = %197
  call void @png_handle_sPLT(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %199) #4
  br label %331

207:                                              ; preds = %196
  %bcmp239 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_tRNS, i64 4)
  %.not240 = icmp eq i32 %bcmp239, 0
  br i1 %.not240, label %208, label %218

208:                                              ; preds = %207
  %209 = getelementptr inbounds i8, ptr %0, i64 824
  %210 = load i32, ptr %209, align 8, !tbaa !20
  %211 = add i32 %210, 4
  %212 = zext i32 %211 to i64
  %213 = getelementptr inbounds i8, ptr %0, i64 848
  %214 = load i64, ptr %213, align 8, !tbaa !19
  %215 = icmp ult i64 %214, %212
  br i1 %215, label %216, label %217

216:                                              ; preds = %208
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

217:                                              ; preds = %208
  call void @png_handle_tRNS(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %210) #4
  br label %331

218:                                              ; preds = %207
  %bcmp241 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_bKGD, i64 4)
  %.not242 = icmp eq i32 %bcmp241, 0
  br i1 %.not242, label %219, label %229

219:                                              ; preds = %218
  %220 = getelementptr inbounds i8, ptr %0, i64 824
  %221 = load i32, ptr %220, align 8, !tbaa !20
  %222 = add i32 %221, 4
  %223 = zext i32 %222 to i64
  %224 = getelementptr inbounds i8, ptr %0, i64 848
  %225 = load i64, ptr %224, align 8, !tbaa !19
  %226 = icmp ult i64 %225, %223
  br i1 %226, label %227, label %228

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

228:                                              ; preds = %219
  call void @png_handle_bKGD(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %221) #4
  br label %331

229:                                              ; preds = %218
  %bcmp243 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_hIST, i64 4)
  %.not244 = icmp eq i32 %bcmp243, 0
  br i1 %.not244, label %230, label %240

230:                                              ; preds = %229
  %231 = getelementptr inbounds i8, ptr %0, i64 824
  %232 = load i32, ptr %231, align 8, !tbaa !20
  %233 = add i32 %232, 4
  %234 = zext i32 %233 to i64
  %235 = getelementptr inbounds i8, ptr %0, i64 848
  %236 = load i64, ptr %235, align 8, !tbaa !19
  %237 = icmp ult i64 %236, %234
  br i1 %237, label %238, label %239

238:                                              ; preds = %230
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

239:                                              ; preds = %230
  call void @png_handle_hIST(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %232) #4
  br label %331

240:                                              ; preds = %229
  %bcmp245 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_pHYs, i64 4)
  %.not246 = icmp eq i32 %bcmp245, 0
  br i1 %.not246, label %241, label %251

241:                                              ; preds = %240
  %242 = getelementptr inbounds i8, ptr %0, i64 824
  %243 = load i32, ptr %242, align 8, !tbaa !20
  %244 = add i32 %243, 4
  %245 = zext i32 %244 to i64
  %246 = getelementptr inbounds i8, ptr %0, i64 848
  %247 = load i64, ptr %246, align 8, !tbaa !19
  %248 = icmp ult i64 %247, %245
  br i1 %248, label %249, label %250

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

250:                                              ; preds = %241
  call void @png_handle_pHYs(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %243) #4
  br label %331

251:                                              ; preds = %240
  %bcmp247 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_oFFs, i64 4)
  %.not248 = icmp eq i32 %bcmp247, 0
  br i1 %.not248, label %252, label %262

252:                                              ; preds = %251
  %253 = getelementptr inbounds i8, ptr %0, i64 824
  %254 = load i32, ptr %253, align 8, !tbaa !20
  %255 = add i32 %254, 4
  %256 = zext i32 %255 to i64
  %257 = getelementptr inbounds i8, ptr %0, i64 848
  %258 = load i64, ptr %257, align 8, !tbaa !19
  %259 = icmp ult i64 %258, %256
  br i1 %259, label %260, label %261

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

261:                                              ; preds = %252
  call void @png_handle_oFFs(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %254) #4
  br label %331

262:                                              ; preds = %251
  %bcmp249 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_pCAL, i64 4)
  %.not250 = icmp eq i32 %bcmp249, 0
  br i1 %.not250, label %263, label %273

263:                                              ; preds = %262
  %264 = getelementptr inbounds i8, ptr %0, i64 824
  %265 = load i32, ptr %264, align 8, !tbaa !20
  %266 = add i32 %265, 4
  %267 = zext i32 %266 to i64
  %268 = getelementptr inbounds i8, ptr %0, i64 848
  %269 = load i64, ptr %268, align 8, !tbaa !19
  %270 = icmp ult i64 %269, %267
  br i1 %270, label %271, label %272

271:                                              ; preds = %263
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

272:                                              ; preds = %263
  call void @png_handle_pCAL(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %265) #4
  br label %331

273:                                              ; preds = %262
  %bcmp251 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_sCAL, i64 4)
  %.not252 = icmp eq i32 %bcmp251, 0
  br i1 %.not252, label %274, label %284

274:                                              ; preds = %273
  %275 = getelementptr inbounds i8, ptr %0, i64 824
  %276 = load i32, ptr %275, align 8, !tbaa !20
  %277 = add i32 %276, 4
  %278 = zext i32 %277 to i64
  %279 = getelementptr inbounds i8, ptr %0, i64 848
  %280 = load i64, ptr %279, align 8, !tbaa !19
  %281 = icmp ult i64 %280, %278
  br i1 %281, label %282, label %283

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

283:                                              ; preds = %274
  call void @png_handle_sCAL(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %276) #4
  br label %331

284:                                              ; preds = %273
  %bcmp253 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_tIME, i64 4)
  %.not254 = icmp eq i32 %bcmp253, 0
  br i1 %.not254, label %285, label %295

285:                                              ; preds = %284
  %286 = getelementptr inbounds i8, ptr %0, i64 824
  %287 = load i32, ptr %286, align 8, !tbaa !20
  %288 = add i32 %287, 4
  %289 = zext i32 %288 to i64
  %290 = getelementptr inbounds i8, ptr %0, i64 848
  %291 = load i64, ptr %290, align 8, !tbaa !19
  %292 = icmp ult i64 %291, %289
  br i1 %292, label %293, label %294

293:                                              ; preds = %285
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

294:                                              ; preds = %285
  call void @png_handle_tIME(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %287) #4
  br label %331

295:                                              ; preds = %284
  %bcmp255 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_tEXt, i64 4)
  %.not256 = icmp eq i32 %bcmp255, 0
  br i1 %.not256, label %296, label %306

296:                                              ; preds = %295
  %297 = getelementptr inbounds i8, ptr %0, i64 824
  %298 = load i32, ptr %297, align 8, !tbaa !20
  %299 = add i32 %298, 4
  %300 = zext i32 %299 to i64
  %301 = getelementptr inbounds i8, ptr %0, i64 848
  %302 = load i64, ptr %301, align 8, !tbaa !19
  %303 = icmp ult i64 %302, %300
  br i1 %303, label %304, label %305

304:                                              ; preds = %296
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

305:                                              ; preds = %296
  call void @png_push_handle_tEXt(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %298)
  br label %331

306:                                              ; preds = %295
  %bcmp257 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_zTXt, i64 4)
  %.not258 = icmp eq i32 %bcmp257, 0
  br i1 %.not258, label %307, label %317

307:                                              ; preds = %306
  %308 = getelementptr inbounds i8, ptr %0, i64 824
  %309 = load i32, ptr %308, align 8, !tbaa !20
  %310 = add i32 %309, 4
  %311 = zext i32 %310 to i64
  %312 = getelementptr inbounds i8, ptr %0, i64 848
  %313 = load i64, ptr %312, align 8, !tbaa !19
  %314 = icmp ult i64 %313, %311
  br i1 %314, label %315, label %316

315:                                              ; preds = %307
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

316:                                              ; preds = %307
  call void @png_push_handle_zTXt(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %309)
  br label %331

317:                                              ; preds = %306
  %bcmp259 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) @__const.png_push_read_chunk.png_iTXt, i64 4)
  %.not260 = icmp eq i32 %bcmp259, 0
  %318 = getelementptr inbounds i8, ptr %0, i64 824
  %319 = load i32, ptr %318, align 8, !tbaa !20
  %320 = add i32 %319, 4
  %321 = zext i32 %320 to i64
  %322 = getelementptr inbounds i8, ptr %0, i64 848
  %323 = load i64, ptr %322, align 8, !tbaa !19
  %324 = icmp ult i64 %323, %321
  br i1 %.not260, label %325, label %328

325:                                              ; preds = %317
  br i1 %324, label %326, label %327

326:                                              ; preds = %325
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

327:                                              ; preds = %325
  call void @png_push_handle_iTXt(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %319)
  br label %331

328:                                              ; preds = %317
  br i1 %324, label %329, label %330

329:                                              ; preds = %328
  call void @png_push_save_buffer(ptr noundef nonnull %0)
  br label %334

330:                                              ; preds = %328
  call void @png_push_handle_unknown(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %319)
  br label %331

331:                                              ; preds = %47, %89, %151, %173, %195, %217, %239, %261, %283, %305, %327, %330, %316, %294, %272, %250, %228, %206, %184, %162, %65, %72, %78, %73, %68, %36
  %332 = load i32, ptr %4, align 4, !tbaa !5
  %333 = and i32 %332, -257
  store i32 %333, ptr %4, align 4, !tbaa !5
  br label %334

334:                                              ; preds = %16, %104, %331, %329, %326, %315, %304, %293, %282, %271, %260, %249, %238, %227, %216, %205, %194, %183, %172, %161, %150, %133, %88, %59, %46, %35
  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 i32 @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, i32 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @png_push_handle_unknown(ptr noundef, ptr noundef, i32 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 284}
!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, !9, i64 272, !7, i64 280, !7, i64 281, !10, i64 284, !10, i64 288, !10, i64 292, !11, i64 296, !9, i64 408, !12, i64 416, !10, i64 424, !10, i64 428, !10, i64 432, !10, i64 436, !10, i64 440, !10, i64 444, !10, i64 448, !10, i64 452, !10, i64 456, !12, i64 464, !12, i64 472, !10, i64 480, !10, i64 484, !9, i64 488, !9, i64 496, !9, i64 504, !9, i64 512, !9, i64 520, !9, i64 528, !13, i64 536, !10, i64 560, !10, i64 564, !9, i64 568, !14, i64 576, !14, i64 578, !7, i64 580, !7, i64 585, !7, i64 586, !7, i64 587, !7, i64 588, !7, i64 589, !7, i64 590, !7, i64 591, !7, i64 592, !7, i64 593, !7, i64 594, !7, i64 595, !7, i64 596, !14, i64 598, !7, i64 600, !15, i64 604, !16, i64 608, !16, i64 618, !9, i64 632, !10, i64 640, !10, i64 644, !10, i64 648, !15, i64 652, !15, i64 656, !9, i64 664, !9, i64 672, !9, i64 680, !9, i64 688, !9, i64 696, !9, i64 704, !17, i64 712, !17, i64 717, !9, i64 728, !16, i64 736, !9, i64 752, !9, i64 760, !9, i64 768, !9, i64 776, !9, i64 784, !9, i64 792, !9, i64 800, !9, i64 808, !9, i64 816, !10, i64 824, !10, i64 828, !12, i64 832, !12, i64 840, !12, i64 848, !12, i64 856, !10, i64 864, !10, i64 868, !12, i64 872, !12, i64 880, !9, i64 888, !9, i64 896, !9, i64 904, !9, i64 912, !9, i64 920, !7, i64 928, !7, i64 929, !9, i64 936, !9, i64 944, !9, i64 952, !9, i64 960, !9, i64 968, !9, i64 976, !10, i64 984, !9, i64 992, !9, i64 1000, !10, i64 1008, !9, i64 1016, !7, i64 1024, !14, i64 1026, !14, i64 1028, !14, i64 1030, !10, i64 1032, !10, i64 1036, !7, i64 1040, !9, i64 1048, !9, i64 1056, !9, i64 1064, !9, i64 1072, !9, i64 1080, !9, i64 1088, !9, i64 1096, !7, i64 1104, !10, i64 1108, !10, i64 1112, !10, i64 1116, !18, i64 1120, !10, i64 1152, !10, i64 1156, !9, i64 1160, !10, i64 1168}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!"any pointer", !7, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!"z_stream_s", !9, i64 0, !10, i64 8, !12, i64 16, !9, i64 24, !10, i64 32, !12, i64 40, !9, i64 48, !9, i64 56, !9, i64 64, !9, i64 72, !9, i64 80, !10, i64 88, !12, i64 96, !12, i64 104}
!12 = !{!"long", !7, i64 0}
!13 = !{!"png_row_info_struct", !10, i64 0, !12, 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, !12, i64 16, !7, i64 24}
!19 = !{!6, !12, i64 848}
!20 = !{!6, !10, i64 824}
!21 = !{!6, !10, i64 864}
!22 = !{!6, !7, i64 590}
!23 = !{!6, !10, i64 560}
!24 = !{!6, !7, i64 593}
!25 = !{!6, !10, i64 480}
!26 = !{!6, !10, i64 328}
!27 = !{!6, !9, i64 496}
!28 = !{!6, !9, i64 320}


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