; LLVM IR from ox-vgg/vise :: src/search_engine/relja_retrival/external/KMCode_relja/ImageContent/ImageConten_bf5f0dd7 (ZN12ImageContentC2EPKc)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::basic_ifstream" = type { %"class.std::basic_istream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon }
%union.anon = type { i32 }
%class.ImageContent = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [6 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.11 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [31 x i8], align 1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z12verif_formatPKc(ptr noundef) #1

declare noalias ptr @fopen(ptr noundef, ptr noundef) #2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #3

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

declare i32 @fclose(ptr noundef) #2

declare i32 @png_sig_cmp(ptr noundef, i64 noundef, i64 noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ImageContent9initUCharEjj(ptr noundef nonnull align 8 dereferenceable(80), i32 noundef, i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ImageContent10init3UCharEjj(ptr noundef nonnull align 8 dereferenceable(80), i32 noundef, i32 noundef) #1 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #4

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN12ImageContentC2EPKc(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef %1) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca [4 x i8], align 1
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::basic_ifstream", align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %33 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #11
  %34 = load ptr, ptr %4, align 8, !tbaa !5
  %35 = call noundef ptr @strstr(ptr noundef %34, ptr noundef @.str.7) #12
  %36 = icmp ne ptr %35, null
  br i1 %36, label %49, label %37

37:                                               ; preds = %2
  %38 = load ptr, ptr %4, align 8, !tbaa !5
  %39 = call noundef ptr @strstr(ptr noundef %38, ptr noundef @.str.8) #12
  %40 = icmp ne ptr %39, null
  br i1 %40, label %49, label %41

41:                                               ; preds = %37
  %42 = load ptr, ptr %4, align 8, !tbaa !5
  %43 = call noundef ptr @strstr(ptr noundef %42, ptr noundef @.str.9) #12
  %44 = icmp ne ptr %43, null
  br i1 %44, label %49, label %45

45:                                               ; preds = %41
  %46 = load ptr, ptr %4, align 8, !tbaa !5
  %47 = call noundef ptr @strstr(ptr noundef %46, ptr noundef @.str.10) #12
  %48 = icmp ne ptr %47, null
  br i1 %48, label %49, label %115

49:                                               ; preds = %45, %41, %37, %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #11
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = call noundef ptr @_Z14read_jpeg_filePKcPiS1_(ptr noundef %50, ptr noundef %6, ptr noundef %7)
  store ptr %51, ptr %8, align 8, !tbaa !5
  %52 = load i32, ptr %6, align 4, !tbaa !9
  %53 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 0
  store i32 %52, ptr %53, align 8, !tbaa !11
  %54 = load i32, ptr %7, align 4, !tbaa !9
  %55 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 1
  store i32 %54, ptr %55, align 4, !tbaa !13
  %56 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 1
  %57 = load i32, ptr %56, align 4, !tbaa !13
  %58 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 0
  %59 = load i32, ptr %58, align 8, !tbaa !11
  call void @_ZN12ImageContent10init3UCharEjj(ptr noundef nonnull align 8 dereferenceable(80) %33, i32 noundef %57, i32 noundef %59)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #11
  store i32 0, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #11
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %60

60:                                               ; preds = %106, %49
  %61 = load i32, ptr %10, align 4, !tbaa !9
  %62 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 2
  %63 = load i32, ptr %62, align 8, !tbaa !14
  %64 = icmp ult i32 %61, %63
  br i1 %64, label %66, label %65

65:                                               ; preds = %60
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  br label %109

66:                                               ; preds = %60
  %67 = load ptr, ptr %8, align 8, !tbaa !5
  %68 = load i32, ptr %9, align 4, !tbaa !9
  %69 = add i32 %68, 1
  store i32 %69, ptr %9, align 4, !tbaa !9
  %70 = zext i32 %68 to i64
  %71 = getelementptr inbounds i8, ptr %67, i64 %70
  %72 = load i8, ptr %71, align 1, !tbaa !15
  %73 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 9
  %74 = load ptr, ptr %73, align 8, !tbaa !16
  %75 = getelementptr inbounds ptr, ptr %74, i64 0
  %76 = load ptr, ptr %75, align 8, !tbaa !5
  %77 = load i32, ptr %10, align 4, !tbaa !9
  %78 = zext i32 %77 to i64
  %79 = getelementptr inbounds i8, ptr %76, i64 %78
  store i8 %72, ptr %79, align 1, !tbaa !15
  %80 = load ptr, ptr %8, align 8, !tbaa !5
  %81 = load i32, ptr %9, align 4, !tbaa !9
  %82 = add i32 %81, 1
  store i32 %82, ptr %9, align 4, !tbaa !9
  %83 = zext i32 %81 to i64
  %84 = getelementptr inbounds i8, ptr %80, i64 %83
  %85 = load i8, ptr %84, align 1, !tbaa !15
  %86 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 10
  %87 = load ptr, ptr %86, align 8, !tbaa !17
  %88 = getelementptr inbounds ptr, ptr %87, i64 0
  %89 = load ptr, ptr %88, align 8, !tbaa !5
  %90 = load i32, ptr %10, align 4, !tbaa !9
  %91 = zext i32 %90 to i64
  %92 = getelementptr inbounds i8, ptr %89, i64 %91
  store i8 %85, ptr %92, align 1, !tbaa !15
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = load i32, ptr %9, align 4, !tbaa !9
  %95 = add i32 %94, 1
  store i32 %95, ptr %9, align 4, !tbaa !9
  %96 = zext i32 %94 to i64
  %97 = getelementptr inbounds i8, ptr %93, i64 %96
  %98 = load i8, ptr %97, align 1, !tbaa !15
  %99 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 11
  %100 = load ptr, ptr %99, align 8, !tbaa !18
  %101 = getelementptr inbounds ptr, ptr %100, i64 0
  %102 = load ptr, ptr %101, align 8, !tbaa !5
  %103 = load i32, ptr %10, align 4, !tbaa !9
  %104 = zext i32 %103 to i64
  %105 = getelementptr inbounds i8, ptr %102, i64 %104
  store i8 %98, ptr %105, align 1, !tbaa !15
  br label %106

106:                                              ; preds = %66
  %107 = load i32, ptr %10, align 4, !tbaa !9
  %108 = add i32 %107, 1
  store i32 %108, ptr %10, align 4, !tbaa !9
  br label %60, !llvm.loop !19

109:                                              ; preds = %65
  %110 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 3
  store i32 5, ptr %110, align 4, !tbaa !21
  %111 = load ptr, ptr %8, align 8, !tbaa !5
  %112 = icmp eq ptr %111, null
  br i1 %112, label %114, label %113

113:                                              ; preds = %109
  call void @_ZdaPv(ptr noundef %111) #13
  br label %114

114:                                              ; preds = %113, %109
  store i32 1, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  br label %535

115:                                              ; preds = %45
  %116 = load ptr, ptr %4, align 8, !tbaa !5
  %117 = call noundef i32 @_Z12verif_formatPKc(ptr noundef %116)
  store i32 %117, ptr %5, align 4, !tbaa !9
  %118 = load i32, ptr %5, align 4, !tbaa !9
  %119 = icmp eq i32 %118, 0
  br i1 %119, label %120, label %125

120:                                              ; preds = %115
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.11)
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef %122)
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %534

125:                                              ; preds = %115
  %126 = load i32, ptr %5, align 4, !tbaa !9
  %127 = icmp eq i32 %126, 4
  br i1 %127, label %128, label %374

128:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #11
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  %130 = call noalias ptr @fopen(ptr noundef %129, ptr noundef @.str.12)
  store ptr %130, ptr %14, align 8, !tbaa !5
  %131 = load ptr, ptr %14, align 8, !tbaa !5
  %132 = icmp eq ptr %131, null
  br i1 %132, label %133, label %134

133:                                              ; preds = %128
  store i32 1, ptr %11, align 4
  br label %371

134:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #11
  %135 = getelementptr inbounds [4 x i8], ptr %15, i64 0, i64 0
  %136 = load ptr, ptr %14, align 8, !tbaa !5
  %137 = call i64 @fread(ptr noundef %135, i64 noundef 1, i64 noundef 4, ptr noundef %136)
  %138 = trunc i64 %137 to i32
  %139 = icmp ne i32 %138, 4
  br i1 %139, label %140, label %141

140:                                              ; preds = %134
  store i32 1, ptr %11, align 4
  br label %370

141:                                              ; preds = %134
  %142 = getelementptr inbounds [4 x i8], ptr %15, i64 0, i64 0
  %143 = call i32 @png_sig_cmp(ptr noundef %142, i64 noundef 0, i64 noundef 4)
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %146

145:                                              ; preds = %141
  store i32 1, ptr %11, align 4
  br label %370

146:                                              ; preds = %141
  %147 = call noalias ptr @png_create_read_struct(ptr noundef @.str.13, ptr noundef null, ptr noundef null, ptr noundef null)
  store ptr %147, ptr %12, align 8, !tbaa !5
  %148 = load ptr, ptr %12, align 8, !tbaa !5
  %149 = icmp eq ptr %148, null
  br i1 %149, label %150, label %153

150:                                              ; preds = %146
  %151 = load ptr, ptr %14, align 8, !tbaa !5
  %152 = call i32 @fclose(ptr noundef %151)
  store i32 1, ptr %11, align 4
  br label %370

153:                                              ; preds = %146
  %154 = load ptr, ptr %12, align 8, !tbaa !5
  %155 = call noalias ptr @png_create_info_struct(ptr noundef %154)
  store ptr %155, ptr %13, align 8, !tbaa !5
  %156 = load ptr, ptr %13, align 8, !tbaa !5
  %157 = icmp eq ptr %156, null
  br i1 %157, label %158, label %161

158:                                              ; preds = %153
  %159 = load ptr, ptr %14, align 8, !tbaa !5
  %160 = call i32 @fclose(ptr noundef %159)
  call void @png_destroy_read_struct(ptr noundef %12, ptr noundef null, ptr noundef null)
  store i32 1, ptr %11, align 4
  br label %370

161:                                              ; preds = %153
  %162 = load ptr, ptr %12, align 8, !tbaa !5
  %163 = call ptr @png_set_longjmp_fn(ptr noundef %162, ptr noundef @longjmp, i64 noundef 200)
  %164 = getelementptr inbounds [1 x %struct.__jmp_buf_tag], ptr %163, i64 0, i64 0
  %165 = call i32 @_setjmp(ptr noundef %164) #14
  %166 = icmp ne i32 %165, 0
  br i1 %166, label %167, label %170

167:                                              ; preds = %161
  call void @png_destroy_read_struct(ptr noundef %12, ptr noundef %13, ptr noundef null)
  %168 = load ptr, ptr %14, align 8, !tbaa !5
  %169 = call i32 @fclose(ptr noundef %168)
  store i32 1, ptr %11, align 4
  br label %370

170:                                              ; preds = %161
  %171 = load ptr, ptr %12, align 8, !tbaa !5
  %172 = load ptr, ptr %14, align 8, !tbaa !5
  call void @png_init_io(ptr noundef %171, ptr noundef %172)
  %173 = load ptr, ptr %12, align 8, !tbaa !5
  call void @png_set_sig_bytes(ptr noundef %173, i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #11
  %174 = load ptr, ptr %12, align 8, !tbaa !5
  %175 = load ptr, ptr %13, align 8, !tbaa !5
  call void @png_read_png(ptr noundef %174, ptr noundef %175, i32 noundef 0, ptr noundef null)
  %176 = load ptr, ptr %12, align 8, !tbaa !5
  %177 = load ptr, ptr %13, align 8, !tbaa !5
  %178 = call i32 @png_get_image_width(ptr noundef %176, ptr noundef %177)
  %179 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 0
  store i32 %178, ptr %179, align 8, !tbaa !11
  %180 = load ptr, ptr %12, align 8, !tbaa !5
  %181 = load ptr, ptr %13, align 8, !tbaa !5
  %182 = call i32 @png_get_image_height(ptr noundef %180, ptr noundef %181)
  %183 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 1
  store i32 %182, ptr %183, align 4, !tbaa !13
  %184 = load ptr, ptr %12, align 8, !tbaa !5
  %185 = load ptr, ptr %13, align 8, !tbaa !5
  %186 = call zeroext i8 @png_get_bit_depth(ptr noundef %184, ptr noundef %185)
  %187 = zext i8 %186 to i32
  store i32 %187, ptr %16, align 4, !tbaa !9
  %188 = load ptr, ptr %12, align 8, !tbaa !5
  %189 = load ptr, ptr %13, align 8, !tbaa !5
  %190 = call zeroext i8 @png_get_channels(ptr noundef %188, ptr noundef %189)
  %191 = zext i8 %190 to i32
  store i32 %191, ptr %17, align 4, !tbaa !9
  %192 = load ptr, ptr %12, align 8, !tbaa !5
  %193 = load ptr, ptr %13, align 8, !tbaa !5
  %194 = call zeroext i8 @png_get_color_type(ptr noundef %192, ptr noundef %193)
  %195 = zext i8 %194 to i32
  store i32 %195, ptr %18, align 4, !tbaa !9
  %196 = load i32, ptr %18, align 4, !tbaa !9
  %197 = icmp eq i32 %196, 3
  br i1 %197, label %198, label %200

198:                                              ; preds = %170
  %199 = load ptr, ptr %12, align 8, !tbaa !5
  call void @png_set_palette_to_rgb(ptr noundef %199)
  br label %200

200:                                              ; preds = %198, %170
  %201 = load i32, ptr %18, align 4, !tbaa !9
  %202 = icmp eq i32 %201, 0
  br i1 %202, label %203, label %208

203:                                              ; preds = %200
  %204 = load i32, ptr %16, align 4, !tbaa !9
  %205 = icmp slt i32 %204, 8
  br i1 %205, label %206, label %208

206:                                              ; preds = %203
  %207 = load ptr, ptr %12, align 8, !tbaa !5
  call void @png_set_expand_gray_1_2_4_to_8(ptr noundef %207)
  br label %208

208:                                              ; preds = %206, %203, %200
  %209 = load ptr, ptr %12, align 8, !tbaa !5
  %210 = load ptr, ptr %13, align 8, !tbaa !5
  %211 = call i32 @png_get_valid(ptr noundef %209, ptr noundef %210, i32 noundef 16)
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %213, label %215

213:                                              ; preds = %208
  %214 = load ptr, ptr %12, align 8, !tbaa !5
  call void @png_set_tRNS_to_alpha(ptr noundef %214)
  br label %215

215:                                              ; preds = %213, %208
  %216 = load ptr, ptr %14, align 8, !tbaa !5
  %217 = call i32 @fclose(ptr noundef %216)
  %218 = load i32, ptr %18, align 4, !tbaa !9
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %228

220:                                              ; preds = %215
  %221 = load i32, ptr %18, align 4, !tbaa !9
  %222 = icmp ne i32 %221, 2
  br i1 %222, label %223, label %228

223:                                              ; preds = %220
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.14)
  %225 = load i32, ptr %18, align 4, !tbaa !9
  %226 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %224, i32 noundef %225)
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %228

228:                                              ; preds = %223, %220, %215
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  %229 = load ptr, ptr %12, align 8, !tbaa !5
  %230 = load ptr, ptr %13, align 8, !tbaa !5
  %231 = call ptr @png_get_rows(ptr noundef %229, ptr noundef %230)
  store ptr %231, ptr %19, align 8, !tbaa !5
  %232 = load i32, ptr %17, align 4, !tbaa !9
  %233 = icmp eq i32 %232, 1
  br i1 %233, label %234, label %280

234:                                              ; preds = %228
  %235 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 1
  %236 = load i32, ptr %235, align 4, !tbaa !13
  %237 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 0
  %238 = load i32, ptr %237, align 8, !tbaa !11
  call void @_ZN12ImageContent9initUCharEjj(ptr noundef nonnull align 8 dereferenceable(80) %33, i32 noundef %236, i32 noundef %238)
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %275, %234
  %240 = load i32, ptr %20, align 4, !tbaa !9
  %241 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 1
  %242 = load i32, ptr %241, align 4, !tbaa !13
  %243 = icmp ult i32 %240, %242
  br i1 %243, label %245, label %244

244:                                              ; preds = %239
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  br label %278

245:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #11
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %246

246:                                              ; preds = %271, %245
  %247 = load i32, ptr %21, align 4, !tbaa !9
  %248 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 0
  %249 = load i32, ptr %248, align 8, !tbaa !11
  %250 = icmp ult i32 %247, %249
  br i1 %250, label %252, label %251

251:                                              ; preds = %246
  store i32 8, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  br label %274

252:                                              ; preds = %246
  %253 = load ptr, ptr %19, align 8, !tbaa !5
  %254 = load i32, ptr %20, align 4, !tbaa !9
  %255 = zext i32 %254 to i64
  %256 = getelementptr inbounds ptr, ptr %253, i64 %255
  %257 = load ptr, ptr %256, align 8, !tbaa !5
  %258 = load i32, ptr %21, align 4, !tbaa !9
  %259 = zext i32 %258 to i64
  %260 = getelementptr inbounds i8, ptr %257, i64 %259
  %261 = load i8, ptr %260, align 1, !tbaa !15
  %262 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 8
  %263 = load ptr, ptr %262, align 8, !tbaa !22
  %264 = load i32, ptr %20, align 4, !tbaa !9
  %265 = zext i32 %264 to i64
  %266 = getelementptr inbounds ptr, ptr %263, i64 %265
  %267 = load ptr, ptr %266, align 8, !tbaa !5
  %268 = load i32, ptr %21, align 4, !tbaa !9
  %269 = zext i32 %268 to i64
  %270 = getelementptr inbounds i8, ptr %267, i64 %269
  store i8 %261, ptr %270, align 1, !tbaa !15
  br label %271

271:                                              ; preds = %252
  %272 = load i32, ptr %21, align 4, !tbaa !9
  %273 = add i32 %272, 1
  store i32 %273, ptr %21, align 4, !tbaa !9
  br label %246, !llvm.loop !23

274:                                              ; preds = %251
  br label %275

275:                                              ; preds = %274
  %276 = load i32, ptr %20, align 4, !tbaa !9
  %277 = add i32 %276, 1
  store i32 %277, ptr %20, align 4, !tbaa !9
  br label %239, !llvm.loop !24

278:                                              ; preds = %244
  %279 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 3
  store i32 1, ptr %279, align 4, !tbaa !21
  br label %369

280:                                              ; preds = %228
  %281 = load i32, ptr %17, align 4, !tbaa !9
  %282 = icmp eq i32 %281, 3
  br i1 %282, label %283, label %368

283:                                              ; preds = %280
  %284 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 1
  %285 = load i32, ptr %284, align 4, !tbaa !13
  %286 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 0
  %287 = load i32, ptr %286, align 8, !tbaa !11
  call void @_ZN12ImageContent10init3UCharEjj(ptr noundef nonnull align 8 dereferenceable(80) %33, i32 noundef %285, i32 noundef %287)
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #11
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %288

288:                                              ; preds = %363, %283
  %289 = load i32, ptr %22, align 4, !tbaa !9
  %290 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 1
  %291 = load i32, ptr %290, align 4, !tbaa !13
  %292 = icmp ult i32 %289, %291
  br i1 %292, label %294, label %293

293:                                              ; preds = %288
  store i32 11, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  br label %366

294:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  store i32 0, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #11
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %295

295:                                              ; preds = %359, %294
  %296 = load i32, ptr %23, align 4, !tbaa !9
  %297 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 0
  %298 = load i32, ptr %297, align 8, !tbaa !11
  %299 = icmp ult i32 %296, %298
  br i1 %299, label %301, label %300

300:                                              ; preds = %295
  store i32 14, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %362

301:                                              ; preds = %295
  %302 = load ptr, ptr %19, align 8, !tbaa !5
  %303 = load i32, ptr %22, align 4, !tbaa !9
  %304 = zext i32 %303 to i64
  %305 = getelementptr inbounds ptr, ptr %302, i64 %304
  %306 = load ptr, ptr %305, align 8, !tbaa !5
  %307 = load i32, ptr %24, align 4, !tbaa !9
  %308 = add i32 %307, 1
  store i32 %308, ptr %24, align 4, !tbaa !9
  %309 = zext i32 %307 to i64
  %310 = getelementptr inbounds i8, ptr %306, i64 %309
  %311 = load i8, ptr %310, align 1, !tbaa !15
  %312 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 9
  %313 = load ptr, ptr %312, align 8, !tbaa !16
  %314 = load i32, ptr %22, align 4, !tbaa !9
  %315 = zext i32 %314 to i64
  %316 = getelementptr inbounds ptr, ptr %313, i64 %315
  %317 = load ptr, ptr %316, align 8, !tbaa !5
  %318 = load i32, ptr %23, align 4, !tbaa !9
  %319 = zext i32 %318 to i64
  %320 = getelementptr inbounds i8, ptr %317, i64 %319
  store i8 %311, ptr %320, align 1, !tbaa !15
  %321 = load ptr, ptr %19, align 8, !tbaa !5
  %322 = load i32, ptr %22, align 4, !tbaa !9
  %323 = zext i32 %322 to i64
  %324 = getelementptr inbounds ptr, ptr %321, i64 %323
  %325 = load ptr, ptr %324, align 8, !tbaa !5
  %326 = load i32, ptr %24, align 4, !tbaa !9
  %327 = add i32 %326, 1
  store i32 %327, ptr %24, align 4, !tbaa !9
  %328 = zext i32 %326 to i64
  %329 = getelementptr inbounds i8, ptr %325, i64 %328
  %330 = load i8, ptr %329, align 1, !tbaa !15
  %331 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 10
  %332 = load ptr, ptr %331, align 8, !tbaa !17
  %333 = load i32, ptr %22, align 4, !tbaa !9
  %334 = zext i32 %333 to i64
  %335 = getelementptr inbounds ptr, ptr %332, i64 %334
  %336 = load ptr, ptr %335, align 8, !tbaa !5
  %337 = load i32, ptr %23, align 4, !tbaa !9
  %338 = zext i32 %337 to i64
  %339 = getelementptr inbounds i8, ptr %336, i64 %338
  store i8 %330, ptr %339, align 1, !tbaa !15
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = load i32, ptr %22, align 4, !tbaa !9
  %342 = zext i32 %341 to i64
  %343 = getelementptr inbounds ptr, ptr %340, i64 %342
  %344 = load ptr, ptr %343, align 8, !tbaa !5
  %345 = load i32, ptr %24, align 4, !tbaa !9
  %346 = add i32 %345, 1
  store i32 %346, ptr %24, align 4, !tbaa !9
  %347 = zext i32 %345 to i64
  %348 = getelementptr inbounds i8, ptr %344, i64 %347
  %349 = load i8, ptr %348, align 1, !tbaa !15
  %350 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 11
  %351 = load ptr, ptr %350, align 8, !tbaa !18
  %352 = load i32, ptr %22, align 4, !tbaa !9
  %353 = zext i32 %352 to i64
  %354 = getelementptr inbounds ptr, ptr %351, i64 %353
  %355 = load ptr, ptr %354, align 8, !tbaa !5
  %356 = load i32, ptr %23, align 4, !tbaa !9
  %357 = zext i32 %356 to i64
  %358 = getelementptr inbounds i8, ptr %355, i64 %357
  store i8 %349, ptr %358, align 1, !tbaa !15
  br label %359

359:                                              ; preds = %301
  %360 = load i32, ptr %23, align 4, !tbaa !9
  %361 = add i32 %360, 1
  store i32 %361, ptr %23, align 4, !tbaa !9
  br label %295, !llvm.loop !25

362:                                              ; preds = %300
  br label %363

363:                                              ; preds = %362
  %364 = load i32, ptr %22, align 4, !tbaa !9
  %365 = add i32 %364, 1
  store i32 %365, ptr %22, align 4, !tbaa !9
  br label %288, !llvm.loop !26

366:                                              ; preds = %293
  %367 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 3
  store i32 5, ptr %367, align 4, !tbaa !21
  br label %368

368:                                              ; preds = %366, %280
  br label %369

369:                                              ; preds = %368, %278
  call void @png_destroy_read_struct(ptr noundef %12, ptr noundef %13, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  store i32 0, ptr %11, align 4
  br label %370

370:                                              ; preds = %369, %167, %158, %150, %145, %140
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  br label %371

371:                                              ; preds = %370, %133
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  %372 = load i32, ptr %11, align 4
  switch i32 %372, label %535 [
    i32 0, label %373
  ]

373:                                              ; preds = %371
  br label %533

374:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 520, ptr %25) #11
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %25, ptr noundef %375, i32 noundef 8)
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #11
  %376 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 4) #15
          to label %377 unwind label %399

377:                                              ; preds = %374
  store ptr %376, ptr %26, align 8, !tbaa !5
  %378 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 512) #15
          to label %379 unwind label %399

379:                                              ; preds = %377
  store ptr %378, ptr %27, align 8, !tbaa !5
  %380 = load ptr, ptr %26, align 8, !tbaa !5
  %381 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef %380)
          to label %382 unwind label %399

382:                                              ; preds = %379
  %383 = load ptr, ptr %26, align 8, !tbaa !5
  %384 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef %383)
          to label %385 unwind label %399

385:                                              ; preds = %382
  br label %386

386:                                              ; preds = %398, %385
  %387 = load ptr, ptr %26, align 8, !tbaa !5
  %388 = getelementptr inbounds i8, ptr %387, i64 0
  %389 = load i8, ptr %388, align 1, !tbaa !15
  %390 = sext i8 %389 to i32
  %391 = icmp eq i32 %390, 35
  br i1 %391, label %392, label %403

392:                                              ; preds = %386
  %393 = load ptr, ptr %27, align 8, !tbaa !5
  %394 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef %393, i64 noundef 512)
          to label %395 unwind label %399

395:                                              ; preds = %392
  %396 = load ptr, ptr %26, align 8, !tbaa !5
  %397 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef %396)
          to label %398 unwind label %399

398:                                              ; preds = %395
  br label %386, !llvm.loop !27

399:                                              ; preds = %530, %443, %429, %424, %415, %409, %403, %395, %392, %382, %379, %377, %374
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %28, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %29, align 4
  br label %532

403:                                              ; preds = %386
  %404 = load ptr, ptr %26, align 8, !tbaa !5
  %405 = call i32 @atoi(ptr noundef %404) #12
  %406 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 0
  store i32 %405, ptr %406, align 8, !tbaa !11
  %407 = load ptr, ptr %26, align 8, !tbaa !5
  %408 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef %407)
          to label %409 unwind label %399

409:                                              ; preds = %403
  %410 = load ptr, ptr %26, align 8, !tbaa !5
  %411 = call i32 @atoi(ptr noundef %410) #12
  %412 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 1
  store i32 %411, ptr %412, align 4, !tbaa !13
  %413 = load ptr, ptr %26, align 8, !tbaa !5
  %414 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef %413)
          to label %415 unwind label %399

415:                                              ; preds = %409
  %416 = load ptr, ptr %27, align 8, !tbaa !5
  %417 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef %416, i64 noundef 512)
          to label %418 unwind label %399

418:                                              ; preds = %415
  %419 = load i32, ptr %5, align 4, !tbaa !9
  %420 = icmp eq i32 %419, 1
  br i1 %420, label %424, label %421

421:                                              ; preds = %418
  %422 = load i32, ptr %5, align 4, !tbaa !9
  %423 = icmp eq i32 %422, 2
  br i1 %423, label %424, label %440

424:                                              ; preds = %421, %418
  %425 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 1
  %426 = load i32, ptr %425, align 4, !tbaa !13
  %427 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 0
  %428 = load i32, ptr %427, align 8, !tbaa !11
  invoke void @_ZN12ImageContent9initUCharEjj(ptr noundef nonnull align 8 dereferenceable(80) %33, i32 noundef %426, i32 noundef %428)
          to label %429 unwind label %399

429:                                              ; preds = %424
  %430 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 8
  %431 = load ptr, ptr %430, align 8, !tbaa !22
  %432 = getelementptr inbounds ptr, ptr %431, i64 0
  %433 = load ptr, ptr %432, align 8, !tbaa !5
  %434 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 2
  %435 = load i32, ptr %434, align 8, !tbaa !14
  %436 = zext i32 %435 to i64
  %437 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef %433, i64 noundef %436)
          to label %438 unwind label %399

438:                                              ; preds = %429
  %439 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 3
  store i32 1, ptr %439, align 4, !tbaa !21
  br label %522

440:                                              ; preds = %421
  %441 = load i32, ptr %5, align 4, !tbaa !9
  %442 = icmp eq i32 %441, 3
  br i1 %442, label %443, label %521

443:                                              ; preds = %440
  %444 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 1
  %445 = load i32, ptr %444, align 4, !tbaa !13
  %446 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 0
  %447 = load i32, ptr %446, align 8, !tbaa !11
  invoke void @_ZN12ImageContent10init3UCharEjj(ptr noundef nonnull align 8 dereferenceable(80) %33, i32 noundef %445, i32 noundef %447)
          to label %448 unwind label %399

448:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  %449 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 2
  %450 = load i32, ptr %449, align 8, !tbaa !14
  %451 = mul i32 3, %450
  %452 = zext i32 %451 to i64
  %453 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %452) #15
          to label %454 unwind label %468

454:                                              ; preds = %448
  store ptr %453, ptr %30, align 8, !tbaa !5
  %455 = load ptr, ptr %30, align 8, !tbaa !5
  %456 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 2
  %457 = load i32, ptr %456, align 8, !tbaa !14
  %458 = mul i32 3, %457
  %459 = zext i32 %458 to i64
  %460 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef %455, i64 noundef %459)
          to label %461 unwind label %468

461:                                              ; preds = %454
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #11
  store i32 0, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %462

462:                                              ; preds = %512, %461
  %463 = load i32, ptr %32, align 4, !tbaa !9
  %464 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 2
  %465 = load i32, ptr %464, align 8, !tbaa !14
  %466 = icmp ult i32 %463, %465
  br i1 %466, label %472, label %467

467:                                              ; preds = %462
  store i32 19, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  br label %515

468:                                              ; preds = %454, %448
  %469 = landingpad { ptr, i32 }
          cleanup
  %470 = extractvalue { ptr, i32 } %469, 0
  store ptr %470, ptr %28, align 8
  %471 = extractvalue { ptr, i32 } %469, 1
  store i32 %471, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  br label %532

472:                                              ; preds = %462
  %473 = load ptr, ptr %30, align 8, !tbaa !5
  %474 = load i32, ptr %31, align 4, !tbaa !9
  %475 = add i32 %474, 1
  store i32 %475, ptr %31, align 4, !tbaa !9
  %476 = zext i32 %474 to i64
  %477 = getelementptr inbounds i8, ptr %473, i64 %476
  %478 = load i8, ptr %477, align 1, !tbaa !15
  %479 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 9
  %480 = load ptr, ptr %479, align 8, !tbaa !16
  %481 = getelementptr inbounds ptr, ptr %480, i64 0
  %482 = load ptr, ptr %481, align 8, !tbaa !5
  %483 = load i32, ptr %32, align 4, !tbaa !9
  %484 = zext i32 %483 to i64
  %485 = getelementptr inbounds i8, ptr %482, i64 %484
  store i8 %478, ptr %485, align 1, !tbaa !15
  %486 = load ptr, ptr %30, align 8, !tbaa !5
  %487 = load i32, ptr %31, align 4, !tbaa !9
  %488 = add i32 %487, 1
  store i32 %488, ptr %31, align 4, !tbaa !9
  %489 = zext i32 %487 to i64
  %490 = getelementptr inbounds i8, ptr %486, i64 %489
  %491 = load i8, ptr %490, align 1, !tbaa !15
  %492 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 10
  %493 = load ptr, ptr %492, align 8, !tbaa !17
  %494 = getelementptr inbounds ptr, ptr %493, i64 0
  %495 = load ptr, ptr %494, align 8, !tbaa !5
  %496 = load i32, ptr %32, align 4, !tbaa !9
  %497 = zext i32 %496 to i64
  %498 = getelementptr inbounds i8, ptr %495, i64 %497
  store i8 %491, ptr %498, align 1, !tbaa !15
  %499 = load ptr, ptr %30, align 8, !tbaa !5
  %500 = load i32, ptr %31, align 4, !tbaa !9
  %501 = add i32 %500, 1
  store i32 %501, ptr %31, align 4, !tbaa !9
  %502 = zext i32 %500 to i64
  %503 = getelementptr inbounds i8, ptr %499, i64 %502
  %504 = load i8, ptr %503, align 1, !tbaa !15
  %505 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 11
  %506 = load ptr, ptr %505, align 8, !tbaa !18
  %507 = getelementptr inbounds ptr, ptr %506, i64 0
  %508 = load ptr, ptr %507, align 8, !tbaa !5
  %509 = load i32, ptr %32, align 4, !tbaa !9
  %510 = zext i32 %509 to i64
  %511 = getelementptr inbounds i8, ptr %508, i64 %510
  store i8 %504, ptr %511, align 1, !tbaa !15
  br label %512

512:                                              ; preds = %472
  %513 = load i32, ptr %32, align 4, !tbaa !9
  %514 = add i32 %513, 1
  store i32 %514, ptr %32, align 4, !tbaa !9
  br label %462, !llvm.loop !28

515:                                              ; preds = %467
  %516 = getelementptr inbounds %class.ImageContent, ptr %33, i32 0, i32 3
  store i32 5, ptr %516, align 4, !tbaa !21
  %517 = load ptr, ptr %30, align 8, !tbaa !5
  %518 = icmp eq ptr %517, null
  br i1 %518, label %520, label %519

519:                                              ; preds = %515
  call void @_ZdaPv(ptr noundef %517) #13
  br label %520

520:                                              ; preds = %519, %515
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  br label %521

521:                                              ; preds = %520, %440
  br label %522

522:                                              ; preds = %521, %438
  %523 = load ptr, ptr %26, align 8, !tbaa !5
  %524 = icmp eq ptr %523, null
  br i1 %524, label %526, label %525

525:                                              ; preds = %522
  call void @_ZdaPv(ptr noundef %523) #13
  br label %526

526:                                              ; preds = %525, %522
  %527 = load ptr, ptr %27, align 8, !tbaa !5
  %528 = icmp eq ptr %527, null
  br i1 %528, label %530, label %529

529:                                              ; preds = %526
  call void @_ZdaPv(ptr noundef %527) #13
  br label %530

530:                                              ; preds = %529, %526
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256) %25)
          to label %531 unwind label %399

531:                                              ; preds = %530
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %25) #11
  call void @llvm.lifetime.end.p0(i64 520, ptr %25) #11
  br label %533

532:                                              ; preds = %468, %399
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %25) #11
  call void @llvm.lifetime.end.p0(i64 520, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  br label %538

533:                                              ; preds = %531, %373
  br label %534

534:                                              ; preds = %533, %120
  store i32 0, ptr %11, align 4
  br label %535

535:                                              ; preds = %534, %371, %114
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  %536 = load i32, ptr %11, align 4
  switch i32 %536, label %543 [
    i32 0, label %537
    i32 1, label %537
  ]

537:                                              ; preds = %535, %535
  ret void

538:                                              ; preds = %532
  %539 = load ptr, ptr %28, align 8
  %540 = load i32, ptr %29, align 4
  %541 = insertvalue { ptr, i32 } poison, ptr %539, 0
  %542 = insertvalue { ptr, i32 } %541, i32 %540, 1
  resume { ptr, i32 } %542

543:                                              ; preds = %535
  unreachable
}

; Function Attrs: nounwind willreturn memory(read)
declare noundef ptr @strstr(ptr noundef, ptr noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z14read_jpeg_filePKcPiS1_(ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #6

declare noalias ptr @png_create_read_struct(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare noalias ptr @png_create_info_struct(ptr noundef) #2

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

; Function Attrs: nounwind returns_twice
declare i32 @_setjmp(ptr noundef) #7

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

; Function Attrs: noreturn nounwind
declare void @longjmp(ptr noundef, i32 noundef) #8

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

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

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

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

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

declare zeroext i8 @png_get_bit_depth(ptr noundef, ptr noundef) #2

declare zeroext i8 @png_get_channels(ptr noundef, ptr noundef) #2

declare zeroext i8 @png_get_color_type(ptr noundef, ptr noundef) #2

declare void @png_set_palette_to_rgb(ptr noundef) #2

declare void @png_set_expand_gray_1_2_4_to_8(ptr noundef) #2

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

declare void @png_set_tRNS_to_alpha(ptr noundef) #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #2

declare ptr @png_get_rows(ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef, i32 noundef) unnamed_addr #1 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull) #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i64 noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #9

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i64 noundef) #2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #10 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind 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 #6 = { nobuiltin nounwind "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 #7 = { nounwind returns_twice "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 #8 = { noreturn nounwind "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 #9 = { inlinehint mustprogress nounwind willreturn memory(read) 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 #10 = { mustprogress 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 #11 = { nounwind }
attributes #12 = { nounwind willreturn memory(read) }
attributes #13 = { builtin nounwind }
attributes #14 = { nounwind returns_twice }
attributes #15 = { builtin allocsize(0) }

!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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"_ZTS12ImageContent", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72}
!13 = !{!12, !10, i64 4}
!14 = !{!12, !10, i64 8}
!15 = !{!7, !7, i64 0}
!16 = !{!12, !6, i64 56}
!17 = !{!12, !6, i64 64}
!18 = !{!12, !6, i64 72}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!12, !10, i64 12}
!22 = !{!12, !6, i64 48}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::basic_ifstream" = type { %"class.std::basic_istream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon }
%union.anon = type { i32 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [6 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.11 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [31 x i8], align 1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z12verif_formatPKc(ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: nofree nounwind
declare noundef i64 @fread(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #2

declare i32 @png_sig_cmp(ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ImageContent9initUCharEjj(ptr noundef nonnull align 8 dereferenceable(80), i32 noundef, i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ImageContent10init3UCharEjj(ptr noundef nonnull align 8 dereferenceable(80), i32 noundef, i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN12ImageContentC2EPKc(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef %1) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca [4 x i8], align 1
  %8 = alloca %"class.std::basic_ifstream", align 8
  %9 = call noundef ptr @strstr(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(1) @.str.7) #12
  %.not = icmp eq ptr %9, null
  br i1 %.not, label %10, label %16

10:                                               ; preds = %2
  %11 = call noundef ptr @strstr(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(1) @.str.8) #12
  %.not119 = icmp eq ptr %11, null
  br i1 %.not119, label %12, label %16

12:                                               ; preds = %10
  %13 = call noundef ptr @strstr(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(1) @.str.9) #12
  %.not120 = icmp eq ptr %13, null
  br i1 %.not120, label %14, label %16

14:                                               ; preds = %12
  %15 = call noundef ptr @strstr(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(1) @.str.10) #12
  %.not121 = icmp eq ptr %15, null
  br i1 %.not121, label %56, label %16

16:                                               ; preds = %14, %12, %10, %2
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #13
  %17 = call noundef ptr @_Z14read_jpeg_filePKcPiS1_(ptr noundef %1, ptr noundef nonnull %3, ptr noundef nonnull %4)
  %18 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %18, ptr %0, align 8, !tbaa !9
  %19 = load i32, ptr %4, align 4, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %0, i64 4
  store i32 %19, ptr %20, align 4, !tbaa !12
  call void @_ZN12ImageContent10init3UCharEjj(ptr noundef nonnull align 8 dereferenceable(80) %0, i32 noundef %19, i32 noundef %18)
  %21 = getelementptr inbounds i8, ptr %0, i64 8
  %22 = load i32, ptr %21, align 8, !tbaa !13
  %.not148 = icmp eq i32 %22, 0
  br i1 %.not148, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %16
  %23 = getelementptr inbounds i8, ptr %0, i64 56
  %24 = getelementptr inbounds i8, ptr %0, i64 64
  %25 = getelementptr inbounds i8, ptr %0, i64 72
  br label %28

._crit_edge:                                      ; preds = %16
  %26 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 5, ptr %26, align 4, !tbaa !14
  %27 = icmp eq ptr %17, null
  br i1 %27, label %55, label %54

28:                                               ; preds = %.lr.ph, %28
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %28 ]
  %.0103132 = phi i32 [ 0, %.lr.ph ], [ %43, %28 ]
  %29 = add i32 %.0103132, 1
  %30 = zext i32 %.0103132 to i64
  %31 = getelementptr inbounds i8, ptr %17, i64 %30
  %32 = load i8, ptr %31, align 1, !tbaa !15
  %33 = load ptr, ptr %23, align 8, !tbaa !16
  %34 = load ptr, ptr %33, align 8, !tbaa !17
  %35 = getelementptr inbounds i8, ptr %34, i64 %indvars.iv
  store i8 %32, ptr %35, align 1, !tbaa !15
  %36 = add i32 %.0103132, 2
  %37 = zext i32 %29 to i64
  %38 = getelementptr inbounds i8, ptr %17, i64 %37
  %39 = load i8, ptr %38, align 1, !tbaa !15
  %40 = load ptr, ptr %24, align 8, !tbaa !18
  %41 = load ptr, ptr %40, align 8, !tbaa !17
  %42 = getelementptr inbounds i8, ptr %41, i64 %indvars.iv
  store i8 %39, ptr %42, align 1, !tbaa !15
  %43 = add i32 %.0103132, 3
  %44 = zext i32 %36 to i64
  %45 = getelementptr inbounds i8, ptr %17, i64 %44
  %46 = load i8, ptr %45, align 1, !tbaa !15
  %47 = load ptr, ptr %25, align 8, !tbaa !19
  %48 = load ptr, ptr %47, align 8, !tbaa !17
  %49 = getelementptr inbounds i8, ptr %48, i64 %indvars.iv
  store i8 %46, ptr %49, align 1, !tbaa !15
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %50 = load i32, ptr %21, align 8, !tbaa !13
  %51 = zext i32 %50 to i64
  %52 = icmp ult i64 %indvars.iv.next, %51
  br i1 %52, label %28, label %._crit_edge.thread, !llvm.loop !20

._crit_edge.thread:                               ; preds = %28
  %53 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 5, ptr %53, align 4, !tbaa !14
  br label %54

54:                                               ; preds = %._crit_edge.thread, %._crit_edge
  call void @_ZdaPv(ptr noundef nonnull %17) #14
  br label %55

55:                                               ; preds = %54, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #13
  br label %290

56:                                               ; preds = %14
  %57 = call noundef i32 @_Z12verif_formatPKc(ptr noundef %1)
  switch i32 %57, label %205 [
    i32 0, label %58
    i32 4, label %62
  ]

58:                                               ; preds = %56
  %59 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.11)
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef %1)
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %290

62:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #13
  %63 = call noalias ptr @fopen(ptr noundef %1, ptr noundef nonnull @.str.12)
  %64 = icmp eq ptr %63, null
  br i1 %64, label %.critedge, label %65

65:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #13
  %66 = call i64 @fread(ptr noundef nonnull %7, i64 noundef 1, i64 noundef 4, ptr noundef nonnull %63)
  %67 = and i64 %66, 4294967295
  %.not123 = icmp eq i64 %67, 4
  br i1 %.not123, label %68, label %204

68:                                               ; preds = %65
  %69 = call i32 @png_sig_cmp(ptr noundef nonnull %7, i64 noundef 0, i64 noundef 4)
  %.not124 = icmp eq i32 %69, 0
  br i1 %.not124, label %70, label %204

70:                                               ; preds = %68
  %71 = call noalias ptr @png_create_read_struct(ptr noundef nonnull @.str.13, ptr noundef null, ptr noundef null, ptr noundef null)
  store ptr %71, ptr %5, align 8, !tbaa !17
  %72 = icmp eq ptr %71, null
  br i1 %72, label %73, label %75

73:                                               ; preds = %70
  %74 = call i32 @fclose(ptr noundef nonnull %63)
  br label %204

75:                                               ; preds = %70
  %76 = call noalias ptr @png_create_info_struct(ptr noundef nonnull %71)
  store ptr %76, ptr %6, align 8, !tbaa !17
  %77 = icmp eq ptr %76, null
  br i1 %77, label %78, label %80

78:                                               ; preds = %75
  %79 = call i32 @fclose(ptr noundef nonnull %63)
  call void @png_destroy_read_struct(ptr noundef nonnull %5, ptr noundef null, ptr noundef null)
  br label %204

80:                                               ; preds = %75
  %81 = load ptr, ptr %5, align 8, !tbaa !17
  %82 = call ptr @png_set_longjmp_fn(ptr noundef %81, ptr noundef nonnull @longjmp, i64 noundef 200)
  %83 = call i32 @_setjmp(ptr noundef %82) #15
  %.not125 = icmp eq i32 %83, 0
  br i1 %.not125, label %86, label %84

84:                                               ; preds = %80
  call void @png_destroy_read_struct(ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef null)
  %85 = call i32 @fclose(ptr noundef nonnull %63)
  br label %204

86:                                               ; preds = %80
  %87 = load ptr, ptr %5, align 8, !tbaa !17
  call void @png_init_io(ptr noundef %87, ptr noundef nonnull %63)
  %88 = load ptr, ptr %5, align 8, !tbaa !17
  call void @png_set_sig_bytes(ptr noundef %88, i32 noundef 4)
  %89 = load ptr, ptr %5, align 8, !tbaa !17
  %90 = load ptr, ptr %6, align 8, !tbaa !17
  call void @png_read_png(ptr noundef %89, ptr noundef %90, i32 noundef 0, ptr noundef null)
  %91 = load ptr, ptr %5, align 8, !tbaa !17
  %92 = load ptr, ptr %6, align 8, !tbaa !17
  %93 = call i32 @png_get_image_width(ptr noundef %91, ptr noundef %92)
  store i32 %93, ptr %0, align 8, !tbaa !9
  %94 = load ptr, ptr %5, align 8, !tbaa !17
  %95 = load ptr, ptr %6, align 8, !tbaa !17
  %96 = call i32 @png_get_image_height(ptr noundef %94, ptr noundef %95)
  %97 = getelementptr inbounds i8, ptr %0, i64 4
  store i32 %96, ptr %97, align 4, !tbaa !12
  %98 = load ptr, ptr %5, align 8, !tbaa !17
  %99 = load ptr, ptr %6, align 8, !tbaa !17
  %100 = call zeroext i8 @png_get_bit_depth(ptr noundef %98, ptr noundef %99)
  %101 = load ptr, ptr %5, align 8, !tbaa !17
  %102 = load ptr, ptr %6, align 8, !tbaa !17
  %103 = call zeroext i8 @png_get_channels(ptr noundef %101, ptr noundef %102)
  %104 = load ptr, ptr %5, align 8, !tbaa !17
  %105 = load ptr, ptr %6, align 8, !tbaa !17
  %106 = call zeroext i8 @png_get_color_type(ptr noundef %104, ptr noundef %105)
  %107 = zext i8 %106 to i32
  %108 = icmp eq i8 %106, 3
  br i1 %108, label %.thread, label %110

.thread:                                          ; preds = %86
  %109 = load ptr, ptr %5, align 8, !tbaa !17
  call void @png_set_palette_to_rgb(ptr noundef %109)
  br label %115

110:                                              ; preds = %86
  %111 = icmp eq i8 %106, 0
  %112 = icmp ult i8 %100, 8
  %or.cond = select i1 %111, i1 %112, i1 false
  br i1 %or.cond, label %113, label %115

113:                                              ; preds = %110
  %114 = load ptr, ptr %5, align 8, !tbaa !17
  call void @png_set_expand_gray_1_2_4_to_8(ptr noundef %114)
  br label %115

115:                                              ; preds = %.thread, %113, %110
  %116 = load ptr, ptr %5, align 8, !tbaa !17
  %117 = load ptr, ptr %6, align 8, !tbaa !17
  %118 = call i32 @png_get_valid(ptr noundef %116, ptr noundef %117, i32 noundef 16)
  %.not126 = icmp eq i32 %118, 0
  br i1 %.not126, label %121, label %119

119:                                              ; preds = %115
  %120 = load ptr, ptr %5, align 8, !tbaa !17
  call void @png_set_tRNS_to_alpha(ptr noundef %120)
  br label %121

121:                                              ; preds = %119, %115
  %122 = call i32 @fclose(ptr noundef nonnull %63)
  %123 = and i8 %106, -3
  %or.cond3.not = icmp eq i8 %123, 0
  br i1 %or.cond3.not, label %128, label %124

124:                                              ; preds = %121
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.14)
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %125, i32 noundef %107)
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %128

128:                                              ; preds = %124, %121
  %129 = load ptr, ptr %5, align 8, !tbaa !17
  %130 = load ptr, ptr %6, align 8, !tbaa !17
  %131 = call ptr @png_get_rows(ptr noundef %129, ptr noundef %130)
  switch i8 %103, label %203 [
    i8 1, label %132
    i8 3, label %156
  ]

132:                                              ; preds = %128
  %133 = load i32, ptr %97, align 4, !tbaa !12
  %134 = load i32, ptr %0, align 8, !tbaa !9
  call void @_ZN12ImageContent9initUCharEjj(ptr noundef nonnull align 8 dereferenceable(80) %0, i32 noundef %133, i32 noundef %134)
  %135 = load i32, ptr %97, align 4, !tbaa !12
  %.not152 = icmp eq i32 %135, 0
  br i1 %.not152, label %.sink.split, label %.preheader129.lr.ph

.preheader129.lr.ph:                              ; preds = %132
  %136 = getelementptr inbounds i8, ptr %0, i64 48
  %137 = load i32, ptr %0, align 8, !tbaa !9
  %.not153 = icmp eq i32 %137, 0
  br i1 %.not153, label %.sink.split, label %.preheader129

.preheader129:                                    ; preds = %.preheader129.lr.ph, %._crit_edge141
  %138 = phi i32 [ %141, %._crit_edge141 ], [ %135, %.preheader129.lr.ph ]
  %139 = phi i32 [ %142, %._crit_edge141 ], [ 1, %.preheader129.lr.ph ]
  %indvars.iv168 = phi i64 [ %indvars.iv.next169, %._crit_edge141 ], [ 0, %.preheader129.lr.ph ]
  %.not154 = icmp eq i32 %139, 0
  br i1 %.not154, label %._crit_edge141, label %.lr.ph140

.lr.ph140:                                        ; preds = %.preheader129
  %140 = getelementptr inbounds ptr, ptr %131, i64 %indvars.iv168
  br label %145

._crit_edge141.loopexit:                          ; preds = %145
  %.pre174 = load i32, ptr %97, align 4, !tbaa !12
  br label %._crit_edge141

._crit_edge141:                                   ; preds = %._crit_edge141.loopexit, %.preheader129
  %141 = phi i32 [ %.pre174, %._crit_edge141.loopexit ], [ %138, %.preheader129 ]
  %142 = phi i32 [ %153, %._crit_edge141.loopexit ], [ 0, %.preheader129 ]
  %indvars.iv.next169 = add nuw nsw i64 %indvars.iv168, 1
  %143 = zext i32 %141 to i64
  %144 = icmp ult i64 %indvars.iv.next169, %143
  br i1 %144, label %.preheader129, label %.sink.split, !llvm.loop !22

145:                                              ; preds = %.lr.ph140, %145
  %indvars.iv165 = phi i64 [ 0, %.lr.ph140 ], [ %indvars.iv.next166, %145 ]
  %146 = load ptr, ptr %140, align 8, !tbaa !17
  %147 = getelementptr inbounds i8, ptr %146, i64 %indvars.iv165
  %148 = load i8, ptr %147, align 1, !tbaa !15
  %149 = load ptr, ptr %136, align 8, !tbaa !24
  %150 = getelementptr inbounds ptr, ptr %149, i64 %indvars.iv168
  %151 = load ptr, ptr %150, align 8, !tbaa !17
  %152 = getelementptr inbounds i8, ptr %151, i64 %indvars.iv165
  store i8 %148, ptr %152, align 1, !tbaa !15
  %indvars.iv.next166 = add nuw nsw i64 %indvars.iv165, 1
  %153 = load i32, ptr %0, align 8, !tbaa !9
  %154 = zext i32 %153 to i64
  %155 = icmp ult i64 %indvars.iv.next166, %154
  br i1 %155, label %145, label %._crit_edge141.loopexit, !llvm.loop !25

156:                                              ; preds = %128
  %157 = load i32, ptr %97, align 4, !tbaa !12
  %158 = load i32, ptr %0, align 8, !tbaa !9
  call void @_ZN12ImageContent10init3UCharEjj(ptr noundef nonnull align 8 dereferenceable(80) %0, i32 noundef %157, i32 noundef %158)
  %159 = load i32, ptr %97, align 4, !tbaa !12
  %.not149 = icmp eq i32 %159, 0
  br i1 %.not149, label %.sink.split, label %.preheader130.lr.ph

.preheader130.lr.ph:                              ; preds = %156
  %160 = getelementptr inbounds i8, ptr %0, i64 56
  %161 = getelementptr inbounds i8, ptr %0, i64 64
  %162 = getelementptr inbounds i8, ptr %0, i64 72
  %163 = load i32, ptr %0, align 8, !tbaa !9
  %.not150 = icmp eq i32 %163, 0
  br i1 %.not150, label %.sink.split, label %.preheader130

.preheader130:                                    ; preds = %.preheader130.lr.ph, %._crit_edge136
  %164 = phi i32 [ %167, %._crit_edge136 ], [ %159, %.preheader130.lr.ph ]
  %165 = phi i32 [ %168, %._crit_edge136 ], [ 1, %.preheader130.lr.ph ]
  %indvars.iv162 = phi i64 [ %indvars.iv.next163, %._crit_edge136 ], [ 0, %.preheader130.lr.ph ]
  %.not151 = icmp eq i32 %165, 0
  br i1 %.not151, label %._crit_edge136, label %.lr.ph135

.lr.ph135:                                        ; preds = %.preheader130
  %166 = getelementptr inbounds ptr, ptr %131, i64 %indvars.iv162
  br label %171

._crit_edge136.loopexit:                          ; preds = %171
  %.pre = load i32, ptr %97, align 4, !tbaa !12
  br label %._crit_edge136

._crit_edge136:                                   ; preds = %._crit_edge136.loopexit, %.preheader130
  %167 = phi i32 [ %.pre, %._crit_edge136.loopexit ], [ %164, %.preheader130 ]
  %168 = phi i32 [ %199, %._crit_edge136.loopexit ], [ 0, %.preheader130 ]
  %indvars.iv.next163 = add nuw nsw i64 %indvars.iv162, 1
  %169 = zext i32 %167 to i64
  %170 = icmp ult i64 %indvars.iv.next163, %169
  br i1 %170, label %.preheader130, label %.sink.split, !llvm.loop !26

171:                                              ; preds = %.lr.ph135, %171
  %indvars.iv159 = phi i64 [ 0, %.lr.ph135 ], [ %indvars.iv.next160, %171 ]
  %.0108134 = phi i32 [ 0, %.lr.ph135 ], [ %191, %171 ]
  %172 = load ptr, ptr %166, align 8, !tbaa !17
  %173 = add i32 %.0108134, 1
  %174 = zext i32 %.0108134 to i64
  %175 = getelementptr inbounds i8, ptr %172, i64 %174
  %176 = load i8, ptr %175, align 1, !tbaa !15
  %177 = load ptr, ptr %160, align 8, !tbaa !16
  %178 = getelementptr inbounds ptr, ptr %177, i64 %indvars.iv162
  %179 = load ptr, ptr %178, align 8, !tbaa !17
  %180 = getelementptr inbounds i8, ptr %179, i64 %indvars.iv159
  store i8 %176, ptr %180, align 1, !tbaa !15
  %181 = load ptr, ptr %166, align 8, !tbaa !17
  %182 = add i32 %.0108134, 2
  %183 = zext i32 %173 to i64
  %184 = getelementptr inbounds i8, ptr %181, i64 %183
  %185 = load i8, ptr %184, align 1, !tbaa !15
  %186 = load ptr, ptr %161, align 8, !tbaa !18
  %187 = getelementptr inbounds ptr, ptr %186, i64 %indvars.iv162
  %188 = load ptr, ptr %187, align 8, !tbaa !17
  %189 = getelementptr inbounds i8, ptr %188, i64 %indvars.iv159
  store i8 %185, ptr %189, align 1, !tbaa !15
  %190 = load ptr, ptr %166, align 8, !tbaa !17
  %191 = add i32 %.0108134, 3
  %192 = zext i32 %182 to i64
  %193 = getelementptr inbounds i8, ptr %190, i64 %192
  %194 = load i8, ptr %193, align 1, !tbaa !15
  %195 = load ptr, ptr %162, align 8, !tbaa !19
  %196 = getelementptr inbounds ptr, ptr %195, i64 %indvars.iv162
  %197 = load ptr, ptr %196, align 8, !tbaa !17
  %198 = getelementptr inbounds i8, ptr %197, i64 %indvars.iv159
  store i8 %194, ptr %198, align 1, !tbaa !15
  %indvars.iv.next160 = add nuw nsw i64 %indvars.iv159, 1
  %199 = load i32, ptr %0, align 8, !tbaa !9
  %200 = zext i32 %199 to i64
  %201 = icmp ult i64 %indvars.iv.next160, %200
  br i1 %201, label %171, label %._crit_edge136.loopexit, !llvm.loop !27

.sink.split:                                      ; preds = %._crit_edge136, %._crit_edge141, %156, %.preheader130.lr.ph, %132, %.preheader129.lr.ph
  %.sink = phi i32 [ 1, %.preheader129.lr.ph ], [ 1, %132 ], [ 5, %.preheader130.lr.ph ], [ 5, %156 ], [ 1, %._crit_edge141 ], [ 5, %._crit_edge136 ]
  %202 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 %.sink, ptr %202, align 4, !tbaa !14
  br label %203

203:                                              ; preds = %.sink.split, %128
  call void @png_destroy_read_struct(ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef null)
  br label %204

204:                                              ; preds = %68, %65, %203, %84, %78, %73
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #13
  br label %290

205:                                              ; preds = %56
  call void @llvm.lifetime.start.p0(i64 520, ptr nonnull %8) #13
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %8, ptr noundef %1, i32 noundef 8)
  %206 = invoke noalias noundef nonnull dereferenceable(4) ptr @_Znam(i64 noundef 4) #16
          to label %207 unwind label %.loopexit.split-lp

207:                                              ; preds = %205
  %208 = invoke noalias noundef nonnull dereferenceable(512) ptr @_Znam(i64 noundef 512) #16
          to label %209 unwind label %.loopexit.split-lp

209:                                              ; preds = %207
  %210 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef %206)
          to label %211 unwind label %.loopexit.split-lp

211:                                              ; preds = %209
  %212 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef %206)
          to label %.preheader128 unwind label %.loopexit.split-lp

.preheader128:                                    ; preds = %211, %217
  %213 = load i8, ptr %206, align 1, !tbaa !15
  %214 = icmp eq i8 %213, 35
  br i1 %214, label %215, label %219

215:                                              ; preds = %.preheader128
  %216 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull %208, i64 noundef 512)
          to label %217 unwind label %.loopexit

217:                                              ; preds = %215
  %218 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef %206)
          to label %.preheader128 unwind label %.loopexit, !llvm.loop !28

.loopexit:                                        ; preds = %215, %217
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %289

.loopexit.split-lp:                               ; preds = %205, %207, %209, %211, %219, %222, %226, %229, %232, %244, %287
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %289

219:                                              ; preds = %.preheader128
  %220 = call i32 @atoi(ptr nocapture noundef %206) #12
  store i32 %220, ptr %0, align 8, !tbaa !9
  %221 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef %206)
          to label %222 unwind label %.loopexit.split-lp

222:                                              ; preds = %219
  %223 = call i32 @atoi(ptr nocapture noundef %206) #12
  %224 = getelementptr inbounds i8, ptr %0, i64 4
  store i32 %223, ptr %224, align 4, !tbaa !12
  %225 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef %206)
          to label %226 unwind label %.loopexit.split-lp

226:                                              ; preds = %222
  %227 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull %208, i64 noundef 512)
          to label %228 unwind label %.loopexit.split-lp

228:                                              ; preds = %226
  %or.cond5 = icmp ult i32 %57, 3
  br i1 %or.cond5, label %229, label %242

229:                                              ; preds = %228
  %230 = load i32, ptr %224, align 4, !tbaa !12
  %231 = load i32, ptr %0, align 8, !tbaa !9
  invoke void @_ZN12ImageContent9initUCharEjj(ptr noundef nonnull align 8 dereferenceable(80) %0, i32 noundef %230, i32 noundef %231)
          to label %232 unwind label %.loopexit.split-lp

232:                                              ; preds = %229
  %233 = getelementptr inbounds i8, ptr %0, i64 48
  %234 = load ptr, ptr %233, align 8, !tbaa !24
  %235 = load ptr, ptr %234, align 8, !tbaa !17
  %236 = getelementptr inbounds i8, ptr %0, i64 8
  %237 = load i32, ptr %236, align 8, !tbaa !13
  %238 = zext i32 %237 to i64
  %239 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef %235, i64 noundef %238)
          to label %240 unwind label %.loopexit.split-lp

240:                                              ; preds = %232
  %241 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 1, ptr %241, align 4, !tbaa !14
  br label %287

242:                                              ; preds = %228
  %243 = icmp eq i32 %57, 3
  br i1 %243, label %244, label %287

244:                                              ; preds = %242
  %245 = load i32, ptr %224, align 4, !tbaa !12
  %246 = load i32, ptr %0, align 8, !tbaa !9
  invoke void @_ZN12ImageContent10init3UCharEjj(ptr noundef nonnull align 8 dereferenceable(80) %0, i32 noundef %245, i32 noundef %246)
          to label %247 unwind label %.loopexit.split-lp

247:                                              ; preds = %244
  %248 = getelementptr inbounds i8, ptr %0, i64 8
  %249 = load i32, ptr %248, align 8, !tbaa !13
  %250 = mul i32 %249, 3
  %251 = zext i32 %250 to i64
  %252 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %251) #16
          to label %253 unwind label %260

253:                                              ; preds = %247
  %254 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull %252, i64 noundef %251)
          to label %.preheader unwind label %260

.preheader:                                       ; preds = %253
  %255 = load i32, ptr %248, align 8, !tbaa !13
  %.not155 = icmp eq i32 %255, 0
  br i1 %.not155, label %._crit_edge147, label %.lr.ph146

.lr.ph146:                                        ; preds = %.preheader
  %256 = getelementptr inbounds i8, ptr %0, i64 56
  %257 = getelementptr inbounds i8, ptr %0, i64 64
  %258 = getelementptr inbounds i8, ptr %0, i64 72
  br label %262

._crit_edge147:                                   ; preds = %262, %.preheader
  %259 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 5, ptr %259, align 4, !tbaa !14
  call void @_ZdaPv(ptr noundef nonnull %252) #14
  br label %287

260:                                              ; preds = %253, %247
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %289

262:                                              ; preds = %.lr.ph146, %262
  %indvars.iv171 = phi i64 [ 0, %.lr.ph146 ], [ %indvars.iv.next172, %262 ]
  %.0102144 = phi i32 [ 0, %.lr.ph146 ], [ %277, %262 ]
  %263 = add i32 %.0102144, 1
  %264 = zext i32 %.0102144 to i64
  %265 = getelementptr inbounds i8, ptr %252, i64 %264
  %266 = load i8, ptr %265, align 1, !tbaa !15
  %267 = load ptr, ptr %256, align 8, !tbaa !16
  %268 = load ptr, ptr %267, align 8, !tbaa !17
  %269 = getelementptr inbounds i8, ptr %268, i64 %indvars.iv171
  store i8 %266, ptr %269, align 1, !tbaa !15
  %270 = add i32 %.0102144, 2
  %271 = zext i32 %263 to i64
  %272 = getelementptr inbounds i8, ptr %252, i64 %271
  %273 = load i8, ptr %272, align 1, !tbaa !15
  %274 = load ptr, ptr %257, align 8, !tbaa !18
  %275 = load ptr, ptr %274, align 8, !tbaa !17
  %276 = getelementptr inbounds i8, ptr %275, i64 %indvars.iv171
  store i8 %273, ptr %276, align 1, !tbaa !15
  %277 = add i32 %.0102144, 3
  %278 = zext i32 %270 to i64
  %279 = getelementptr inbounds i8, ptr %252, i64 %278
  %280 = load i8, ptr %279, align 1, !tbaa !15
  %281 = load ptr, ptr %258, align 8, !tbaa !19
  %282 = load ptr, ptr %281, align 8, !tbaa !17
  %283 = getelementptr inbounds i8, ptr %282, i64 %indvars.iv171
  store i8 %280, ptr %283, align 1, !tbaa !15
  %indvars.iv.next172 = add nuw nsw i64 %indvars.iv171, 1
  %284 = load i32, ptr %248, align 8, !tbaa !13
  %285 = zext i32 %284 to i64
  %286 = icmp ult i64 %indvars.iv.next172, %285
  br i1 %286, label %262, label %._crit_edge147, !llvm.loop !29

287:                                              ; preds = %240, %._crit_edge147, %242
  call void @_ZdaPv(ptr noundef nonnull %206) #14
  call void @_ZdaPv(ptr noundef nonnull %208) #14
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256) %8)
          to label %288 unwind label %.loopexit.split-lp

288:                                              ; preds = %287
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %8) #13
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %8) #13
  br label %290

289:                                              ; preds = %.loopexit, %.loopexit.split-lp, %260
  %.pn = phi { ptr, i32 } [ %261, %260 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %8) #13
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %8) #13
  resume { ptr, i32 } %.pn

.critedge:                                        ; preds = %62
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #13
  br label %290

290:                                              ; preds = %204, %58, %288, %.critedge, %55
  ret void
}

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare noundef ptr @strstr(ptr noundef, ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z14read_jpeg_filePKcPiS1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #7

declare noalias ptr @png_create_read_struct(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare noalias ptr @png_create_info_struct(ptr noundef) local_unnamed_addr #4

declare void @png_destroy_read_struct(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind returns_twice
declare i32 @_setjmp(ptr noundef) local_unnamed_addr #8

declare ptr @png_set_longjmp_fn(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: noreturn nounwind
declare void @longjmp(ptr noundef, i32 noundef) #9

declare void @png_init_io(ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @png_set_sig_bytes(ptr noundef, i32 noundef) local_unnamed_addr #4

declare void @png_read_png(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

declare i32 @png_get_image_width(ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @png_get_image_height(ptr noundef, ptr noundef) local_unnamed_addr #4

declare zeroext i8 @png_get_bit_depth(ptr noundef, ptr noundef) local_unnamed_addr #4

declare zeroext i8 @png_get_channels(ptr noundef, ptr noundef) local_unnamed_addr #4

declare zeroext i8 @png_get_color_type(ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @png_set_palette_to_rgb(ptr noundef) local_unnamed_addr #4

declare void @png_set_expand_gray_1_2_4_to_8(ptr noundef) local_unnamed_addr #4

declare i32 @png_get_valid(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

declare void @png_set_tRNS_to_alpha(ptr noundef) local_unnamed_addr #4

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #4

declare ptr @png_get_rows(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef, i32 noundef) unnamed_addr #1 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #10

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #11 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nofree nounwind "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 = { nobuiltin allocsize(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 #6 = { mustprogress nofree nounwind willreturn memory(argmem: 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 #7 = { nobuiltin nounwind "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 #8 = { nounwind returns_twice "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 #9 = { noreturn nounwind "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 #10 = { inlinehint mustprogress nofree nounwind willreturn memory(read) 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 #11 = { mustprogress 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 #12 = { nounwind willreturn memory(read) }
attributes #13 = { nounwind }
attributes #14 = { builtin nounwind }
attributes #15 = { nounwind returns_twice }
attributes #16 = { builtin allocsize(0) }

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

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


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