; LLVM IR from ChaCheeChoo/GAAS-Engine :: source/lodepng (lodepng)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.ucvector = type { ptr, i64, i64 }
%struct.LodePNGColorMode = type { i32, i32, ptr, i64, i32, i32, i32, i32 }
%struct.LodePNGInfo = type { i32, i32, i32, %struct.LodePNGColorMode, i32, i32, i32, i32, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, i32, %struct.LodePNGTime, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, [3 x ptr], [3 x i64] }
%struct.LodePNGTime = type { i32, i32, i32, i32, i32, i32 }
%struct.LodePNGColorStats = type { i32, i32, i16, i16, i16, i32, i32, [1024 x i8], i32, i64, i32, i32 }
%struct.LodePNGState = type { %struct.LodePNGDecoderSettings, %struct.LodePNGEncoderSettings, %struct.LodePNGColorMode, %struct.LodePNGInfo, i32 }
%struct.LodePNGDecoderSettings = type { %struct.LodePNGDecompressSettings, i32, i32, i32, i32, i32, i32, i64, i64 }
%struct.LodePNGDecompressSettings = type { i32, i32, i64, ptr, ptr, ptr }
%struct.LodePNGEncoderSettings = type { %struct.LodePNGCompressSettings, i32, i32, i32, ptr, i32, i32, i32 }
%struct.LodePNGCompressSettings = type { i32, i32, i32, i32, i32, i32, ptr, ptr, ptr }

@LODEPNG_VERSION_STRING = external dso_local global ptr, align 8
@.str.16 = external hidden unnamed_addr constant [8 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: nounwind uwtable
declare hidden ptr @lodepng_malloc(i64 noundef) #1

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

; Function Attrs: nounwind uwtable
declare hidden void @lodepng_free(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden void @ucvector_init(ptr dead_on_unwind noalias writable sret(%struct.ucvector) align 8, ptr noundef, i64 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i64 @lodepng_strlen(ptr noundef) #1

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @lodepng_color_mode_make(ptr dead_on_unwind noalias writable sret(%struct.LodePNGColorMode) align 8, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @lodepng_get_bpp(ptr noundef) #1

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

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

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @lodepng_color_mode_equal(ptr noundef, ptr noundef) #1

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

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @checkColorValidity(i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @lodepng_encode(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef %5) #1 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i64, align 8
  %16 = alloca %struct.ucvector, align 8
  %17 = alloca %struct.LodePNGInfo, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %struct.LodePNGColorMode, align 8
  %20 = alloca %struct.LodePNGColorStats, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %struct.LodePNGColorMode, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store i32 %3, ptr %11, align 4, !tbaa !9
  store i32 %4, ptr %12, align 4, !tbaa !9
  store ptr %5, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #2
  store ptr null, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #2
  store i64 0, ptr %15, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #2
  call void @ucvector_init(ptr dead_on_unwind writable sret(%struct.ucvector) align 8 %16, ptr noundef null, i64 noundef 0)
  call void @llvm.lifetime.start.p0(i64 328, ptr %17) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #2
  %37 = load ptr, ptr %13, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.LodePNGState, ptr %37, i32 0, i32 3
  store ptr %38, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %19) #2
  call void @lodepng_info_init(ptr noundef %17)
  call void @lodepng_color_mode_init(ptr noundef %19)
  %39 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr null, ptr %39, align 8, !tbaa !5
  %40 = load ptr, ptr %9, align 8, !tbaa !5
  store i64 0, ptr %40, align 8, !tbaa !11
  %41 = load ptr, ptr %13, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.LodePNGState, ptr %41, i32 0, i32 4
  store i32 0, ptr %42, align 8, !tbaa !13
  %43 = load ptr, ptr %18, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.LodePNGInfo, ptr %43, i32 0, i32 3
  %45 = getelementptr inbounds %struct.LodePNGColorMode, ptr %44, i32 0, i32 0
  %46 = load i32, ptr %45, align 8, !tbaa !22
  %47 = icmp eq i32 %46, 3
  br i1 %47, label %54, label %48

48:                                               ; preds = %6
  %49 = load ptr, ptr %13, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.LodePNGState, ptr %49, i32 0, i32 1
  %51 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %50, i32 0, i32 5
  %52 = load i32, ptr %51, align 8, !tbaa !23
  %53 = icmp ne i32 %52, 0
  br i1 %53, label %54, label %69

54:                                               ; preds = %48, %6
  %55 = load ptr, ptr %18, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.LodePNGInfo, ptr %55, i32 0, i32 3
  %57 = getelementptr inbounds %struct.LodePNGColorMode, ptr %56, i32 0, i32 3
  %58 = load i64, ptr %57, align 8, !tbaa !24
  %59 = icmp eq i64 %58, 0
  br i1 %59, label %66, label %60

60:                                               ; preds = %54
  %61 = load ptr, ptr %18, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.LodePNGInfo, ptr %61, i32 0, i32 3
  %63 = getelementptr inbounds %struct.LodePNGColorMode, ptr %62, i32 0, i32 3
  %64 = load i64, ptr %63, align 8, !tbaa !24
  %65 = icmp ugt i64 %64, 256
  br i1 %65, label %66, label %69

66:                                               ; preds = %60, %54
  %67 = load ptr, ptr %13, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.LodePNGState, ptr %67, i32 0, i32 4
  store i32 68, ptr %68, align 8, !tbaa !13
  br label %1194

69:                                               ; preds = %60, %48
  %70 = load ptr, ptr %13, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.LodePNGState, ptr %70, i32 0, i32 1
  %72 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %71, i32 0, i32 0
  %73 = getelementptr inbounds %struct.LodePNGCompressSettings, ptr %72, i32 0, i32 0
  %74 = load i32, ptr %73, align 8, !tbaa !25
  %75 = icmp ugt i32 %74, 2
  br i1 %75, label %76, label %79

76:                                               ; preds = %69
  %77 = load ptr, ptr %13, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.LodePNGState, ptr %77, i32 0, i32 4
  store i32 61, ptr %78, align 8, !tbaa !13
  br label %1194

79:                                               ; preds = %69
  %80 = load ptr, ptr %18, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.LodePNGInfo, ptr %80, i32 0, i32 2
  %82 = load i32, ptr %81, align 8, !tbaa !26
  %83 = icmp ugt i32 %82, 1
  br i1 %83, label %84, label %87

84:                                               ; preds = %79
  %85 = load ptr, ptr %13, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.LodePNGState, ptr %85, i32 0, i32 4
  store i32 71, ptr %86, align 8, !tbaa !13
  br label %1194

87:                                               ; preds = %79
  %88 = load ptr, ptr %18, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.LodePNGInfo, ptr %88, i32 0, i32 3
  %90 = getelementptr inbounds %struct.LodePNGColorMode, ptr %89, i32 0, i32 0
  %91 = load i32, ptr %90, align 8, !tbaa !22
  %92 = load ptr, ptr %18, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.LodePNGInfo, ptr %92, i32 0, i32 3
  %94 = getelementptr inbounds %struct.LodePNGColorMode, ptr %93, i32 0, i32 1
  %95 = load i32, ptr %94, align 4, !tbaa !27
  %96 = call i32 @checkColorValidity(i32 noundef %91, i32 noundef %95)
  %97 = load ptr, ptr %13, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.LodePNGState, ptr %97, i32 0, i32 4
  store i32 %96, ptr %98, align 8, !tbaa !13
  %99 = load ptr, ptr %13, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.LodePNGState, ptr %99, i32 0, i32 4
  %101 = load i32, ptr %100, align 8, !tbaa !13
  %102 = icmp ne i32 %101, 0
  br i1 %102, label %103, label %104

103:                                              ; preds = %87
  br label %1194

104:                                              ; preds = %87
  %105 = load ptr, ptr %13, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.LodePNGState, ptr %105, i32 0, i32 2
  %107 = getelementptr inbounds %struct.LodePNGColorMode, ptr %106, i32 0, i32 0
  %108 = load i32, ptr %107, align 8, !tbaa !28
  %109 = load ptr, ptr %13, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.LodePNGState, ptr %109, i32 0, i32 2
  %111 = getelementptr inbounds %struct.LodePNGColorMode, ptr %110, i32 0, i32 1
  %112 = load i32, ptr %111, align 4, !tbaa !29
  %113 = call i32 @checkColorValidity(i32 noundef %108, i32 noundef %112)
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.LodePNGState, ptr %114, i32 0, i32 4
  store i32 %113, ptr %115, align 8, !tbaa !13
  %116 = load ptr, ptr %13, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.LodePNGState, ptr %116, i32 0, i32 4
  %118 = load i32, ptr %117, align 8, !tbaa !13
  %119 = icmp ne i32 %118, 0
  br i1 %119, label %120, label %121

120:                                              ; preds = %104
  br label %1194

121:                                              ; preds = %104
  %122 = load ptr, ptr %13, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.LodePNGState, ptr %122, i32 0, i32 3
  %124 = call i32 @lodepng_info_copy(ptr noundef %17, ptr noundef %123)
  %125 = load ptr, ptr %13, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.LodePNGState, ptr %125, i32 0, i32 1
  %127 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %126, i32 0, i32 1
  %128 = load i32, ptr %127, align 8, !tbaa !30
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %130, label %524

130:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 1072, ptr %20) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #2
  store i32 1, ptr %21, align 4, !tbaa !9
  call void @lodepng_color_stats_init(ptr noundef %20)
  %131 = load ptr, ptr %18, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.LodePNGInfo, ptr %131, i32 0, i32 35
  %133 = load i32, ptr %132, align 8, !tbaa !31
  %134 = icmp ne i32 %133, 0
  br i1 %134, label %135, label %146

135:                                              ; preds = %130
  %136 = load ptr, ptr %18, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.LodePNGInfo, ptr %136, i32 0, i32 37
  %138 = load ptr, ptr %137, align 8, !tbaa !32
  %139 = load ptr, ptr %18, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.LodePNGInfo, ptr %139, i32 0, i32 38
  %141 = load i32, ptr %140, align 8, !tbaa !33
  %142 = call i32 @isGrayICCProfile(ptr noundef %138, i32 noundef %141)
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %144, label %146

144:                                              ; preds = %135
  %145 = getelementptr inbounds %struct.LodePNGColorStats, ptr %20, i32 0, i32 10
  store i32 0, ptr %145, align 8, !tbaa !34
  br label %146

146:                                              ; preds = %144, %135, %130
  %147 = load ptr, ptr %18, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.LodePNGInfo, ptr %147, i32 0, i32 35
  %149 = load i32, ptr %148, align 8, !tbaa !31
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %151, label %162

151:                                              ; preds = %146
  %152 = load ptr, ptr %18, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.LodePNGInfo, ptr %152, i32 0, i32 37
  %154 = load ptr, ptr %153, align 8, !tbaa !32
  %155 = load ptr, ptr %18, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.LodePNGInfo, ptr %155, i32 0, i32 38
  %157 = load i32, ptr %156, align 8, !tbaa !33
  %158 = call i32 @isRGBICCProfile(ptr noundef %154, i32 noundef %157)
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %160, label %162

160:                                              ; preds = %151
  %161 = getelementptr inbounds %struct.LodePNGColorStats, ptr %20, i32 0, i32 11
  store i32 0, ptr %161, align 4, !tbaa !37
  br label %162

162:                                              ; preds = %160, %151, %146
  %163 = load ptr, ptr %10, align 8, !tbaa !5
  %164 = load i32, ptr %11, align 4, !tbaa !9
  %165 = load i32, ptr %12, align 4, !tbaa !9
  %166 = load ptr, ptr %13, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.LodePNGState, ptr %166, i32 0, i32 2
  %168 = call i32 @lodepng_compute_color_stats(ptr noundef %20, ptr noundef %163, i32 noundef %164, i32 noundef %165, ptr noundef %167)
  %169 = load ptr, ptr %13, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.LodePNGState, ptr %169, i32 0, i32 4
  store i32 %168, ptr %170, align 8, !tbaa !13
  %171 = load ptr, ptr %13, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.LodePNGState, ptr %171, i32 0, i32 4
  %173 = load i32, ptr %172, align 8, !tbaa !13
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %176

175:                                              ; preds = %162
  store i32 2, ptr %26, align 4
  br label %521

176:                                              ; preds = %162
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.LodePNGInfo, ptr %177, i32 0, i32 4
  %179 = load i32, ptr %178, align 8, !tbaa !38
  %180 = icmp ne i32 %179, 0
  br i1 %180, label %181, label %209

181:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #2
  store i32 0, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #2
  store i32 0, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #2
  store i32 0, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr %25) #2
  call void @lodepng_color_mode_make(ptr dead_on_unwind writable sret(%struct.LodePNGColorMode) align 8 %25, i32 noundef 2, i32 noundef 16)
  %182 = load ptr, ptr %18, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.LodePNGInfo, ptr %182, i32 0, i32 5
  %184 = load i32, ptr %183, align 4, !tbaa !39
  %185 = load ptr, ptr %18, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.LodePNGInfo, ptr %185, i32 0, i32 6
  %187 = load i32, ptr %186, align 8, !tbaa !40
  %188 = load ptr, ptr %18, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.LodePNGInfo, ptr %188, i32 0, i32 7
  %190 = load i32, ptr %189, align 4, !tbaa !41
  %191 = load ptr, ptr %18, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.LodePNGInfo, ptr %191, i32 0, i32 3
  %193 = call i32 @lodepng_convert_rgb(ptr noundef %22, ptr noundef %23, ptr noundef %24, i32 noundef %184, i32 noundef %187, i32 noundef %190, ptr noundef %25, ptr noundef %192)
  %194 = load i32, ptr %22, align 4, !tbaa !9
  %195 = load i32, ptr %23, align 4, !tbaa !9
  %196 = load i32, ptr %24, align 4, !tbaa !9
  %197 = call i32 @lodepng_color_stats_add(ptr noundef %20, i32 noundef %194, i32 noundef %195, i32 noundef %196, i32 noundef 65535)
  %198 = load ptr, ptr %13, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.LodePNGState, ptr %198, i32 0, i32 4
  store i32 %197, ptr %199, align 8, !tbaa !13
  %200 = load ptr, ptr %13, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.LodePNGState, ptr %200, i32 0, i32 4
  %202 = load i32, ptr %201, align 8, !tbaa !13
  %203 = icmp ne i32 %202, 0
  br i1 %203, label %204, label %205

204:                                              ; preds = %181
  store i32 2, ptr %26, align 4
  br label %206

205:                                              ; preds = %181
  store i32 0, ptr %26, align 4
  br label %206

206:                                              ; preds = %205, %204
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #2
  %207 = load i32, ptr %26, align 4
  switch i32 %207, label %521 [
    i32 0, label %208
  ]

208:                                              ; preds = %206
  br label %209

209:                                              ; preds = %208, %176
  %210 = load ptr, ptr %13, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.LodePNGState, ptr %210, i32 0, i32 2
  %212 = call i32 @auto_choose_color(ptr noundef %19, ptr noundef %211, ptr noundef %20)
  %213 = load ptr, ptr %13, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.LodePNGState, ptr %213, i32 0, i32 4
  store i32 %212, ptr %214, align 8, !tbaa !13
  %215 = load ptr, ptr %13, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.LodePNGState, ptr %215, i32 0, i32 4
  %217 = load i32, ptr %216, align 8, !tbaa !13
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %220

219:                                              ; preds = %209
  store i32 2, ptr %26, align 4
  br label %521

220:                                              ; preds = %209
  %221 = load ptr, ptr %18, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.LodePNGInfo, ptr %221, i32 0, i32 39
  %223 = load i32, ptr %222, align 4, !tbaa !42
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %225, label %461

225:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #2
  %226 = load ptr, ptr %18, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.LodePNGInfo, ptr %226, i32 0, i32 40
  %228 = load i32, ptr %227, align 8, !tbaa !43
  %229 = load ptr, ptr %18, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.LodePNGInfo, ptr %229, i32 0, i32 41
  %231 = load i32, ptr %230, align 4, !tbaa !44
  %232 = icmp ugt i32 %228, %231
  br i1 %232, label %233, label %237

233:                                              ; preds = %225
  %234 = load ptr, ptr %18, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.LodePNGInfo, ptr %234, i32 0, i32 40
  %236 = load i32, ptr %235, align 8, !tbaa !43
  br label %241

237:                                              ; preds = %225
  %238 = load ptr, ptr %18, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.LodePNGInfo, ptr %238, i32 0, i32 41
  %240 = load i32, ptr %239, align 4, !tbaa !44
  br label %241

241:                                              ; preds = %237, %233
  %242 = phi i32 [ %236, %233 ], [ %240, %237 ]
  %243 = load ptr, ptr %18, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.LodePNGInfo, ptr %243, i32 0, i32 42
  %245 = load i32, ptr %244, align 8, !tbaa !45
  %246 = icmp ugt i32 %242, %245
  br i1 %246, label %247, label %265

247:                                              ; preds = %241
  %248 = load ptr, ptr %18, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.LodePNGInfo, ptr %248, i32 0, i32 40
  %250 = load i32, ptr %249, align 8, !tbaa !43
  %251 = load ptr, ptr %18, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.LodePNGInfo, ptr %251, i32 0, i32 41
  %253 = load i32, ptr %252, align 4, !tbaa !44
  %254 = icmp ugt i32 %250, %253
  br i1 %254, label %255, label %259

255:                                              ; preds = %247
  %256 = load ptr, ptr %18, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.LodePNGInfo, ptr %256, i32 0, i32 40
  %258 = load i32, ptr %257, align 8, !tbaa !43
  br label %263

259:                                              ; preds = %247
  %260 = load ptr, ptr %18, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.LodePNGInfo, ptr %260, i32 0, i32 41
  %262 = load i32, ptr %261, align 4, !tbaa !44
  br label %263

263:                                              ; preds = %259, %255
  %264 = phi i32 [ %258, %255 ], [ %262, %259 ]
  br label %269

265:                                              ; preds = %241
  %266 = load ptr, ptr %18, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.LodePNGInfo, ptr %266, i32 0, i32 42
  %268 = load i32, ptr %267, align 8, !tbaa !45
  br label %269

269:                                              ; preds = %265, %263
  %270 = phi i32 [ %264, %263 ], [ %268, %265 ]
  %271 = load ptr, ptr %18, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.LodePNGInfo, ptr %271, i32 0, i32 43
  %273 = load i32, ptr %272, align 4, !tbaa !46
  %274 = icmp ugt i32 %270, %273
  br i1 %274, label %275, label %321

275:                                              ; preds = %269
  %276 = load ptr, ptr %18, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.LodePNGInfo, ptr %276, i32 0, i32 40
  %278 = load i32, ptr %277, align 8, !tbaa !43
  %279 = load ptr, ptr %18, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.LodePNGInfo, ptr %279, i32 0, i32 41
  %281 = load i32, ptr %280, align 4, !tbaa !44
  %282 = icmp ugt i32 %278, %281
  br i1 %282, label %283, label %287

283:                                              ; preds = %275
  %284 = load ptr, ptr %18, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.LodePNGInfo, ptr %284, i32 0, i32 40
  %286 = load i32, ptr %285, align 8, !tbaa !43
  br label %291

287:                                              ; preds = %275
  %288 = load ptr, ptr %18, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.LodePNGInfo, ptr %288, i32 0, i32 41
  %290 = load i32, ptr %289, align 4, !tbaa !44
  br label %291

291:                                              ; preds = %287, %283
  %292 = phi i32 [ %286, %283 ], [ %290, %287 ]
  %293 = load ptr, ptr %18, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.LodePNGInfo, ptr %293, i32 0, i32 42
  %295 = load i32, ptr %294, align 8, !tbaa !45
  %296 = icmp ugt i32 %292, %295
  br i1 %296, label %297, label %315

297:                                              ; preds = %291
  %298 = load ptr, ptr %18, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.LodePNGInfo, ptr %298, i32 0, i32 40
  %300 = load i32, ptr %299, align 8, !tbaa !43
  %301 = load ptr, ptr %18, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.LodePNGInfo, ptr %301, i32 0, i32 41
  %303 = load i32, ptr %302, align 4, !tbaa !44
  %304 = icmp ugt i32 %300, %303
  br i1 %304, label %305, label %309

305:                                              ; preds = %297
  %306 = load ptr, ptr %18, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.LodePNGInfo, ptr %306, i32 0, i32 40
  %308 = load i32, ptr %307, align 8, !tbaa !43
  br label %313

309:                                              ; preds = %297
  %310 = load ptr, ptr %18, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.LodePNGInfo, ptr %310, i32 0, i32 41
  %312 = load i32, ptr %311, align 4, !tbaa !44
  br label %313

313:                                              ; preds = %309, %305
  %314 = phi i32 [ %308, %305 ], [ %312, %309 ]
  br label %319

315:                                              ; preds = %291
  %316 = load ptr, ptr %18, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.LodePNGInfo, ptr %316, i32 0, i32 42
  %318 = load i32, ptr %317, align 8, !tbaa !45
  br label %319

319:                                              ; preds = %315, %313
  %320 = phi i32 [ %314, %313 ], [ %318, %315 ]
  br label %325

321:                                              ; preds = %269
  %322 = load ptr, ptr %18, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.LodePNGInfo, ptr %322, i32 0, i32 43
  %324 = load i32, ptr %323, align 4, !tbaa !46
  br label %325

325:                                              ; preds = %321, %319
  %326 = phi i32 [ %320, %319 ], [ %324, %321 ]
  store i32 %326, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #2
  %327 = load ptr, ptr %18, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.LodePNGInfo, ptr %327, i32 0, i32 41
  %329 = load i32, ptr %328, align 4, !tbaa !44
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %331, label %339

331:                                              ; preds = %325
  %332 = load ptr, ptr %18, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.LodePNGInfo, ptr %332, i32 0, i32 41
  %334 = load i32, ptr %333, align 4, !tbaa !44
  %335 = load ptr, ptr %18, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.LodePNGInfo, ptr %335, i32 0, i32 40
  %337 = load i32, ptr %336, align 8, !tbaa !43
  %338 = icmp eq i32 %334, %337
  br i1 %338, label %339, label %367

339:                                              ; preds = %331, %325
  %340 = load ptr, ptr %18, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.LodePNGInfo, ptr %340, i32 0, i32 42
  %342 = load i32, ptr %341, align 8, !tbaa !45
  %343 = icmp ne i32 %342, 0
  br i1 %343, label %344, label %352

344:                                              ; preds = %339
  %345 = load ptr, ptr %18, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.LodePNGInfo, ptr %345, i32 0, i32 42
  %347 = load i32, ptr %346, align 8, !tbaa !45
  %348 = load ptr, ptr %18, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.LodePNGInfo, ptr %348, i32 0, i32 40
  %350 = load i32, ptr %349, align 8, !tbaa !43
  %351 = icmp eq i32 %347, %350
  br i1 %351, label %352, label %367

352:                                              ; preds = %344, %339
  %353 = load ptr, ptr %18, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.LodePNGInfo, ptr %353, i32 0, i32 43
  %355 = load i32, ptr %354, align 4, !tbaa !46
  %356 = icmp ne i32 %355, 0
  br i1 %356, label %357, label %365

357:                                              ; preds = %352
  %358 = load ptr, ptr %18, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.LodePNGInfo, ptr %358, i32 0, i32 43
  %360 = load i32, ptr %359, align 4, !tbaa !46
  %361 = load ptr, ptr %18, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.LodePNGInfo, ptr %361, i32 0, i32 40
  %363 = load i32, ptr %362, align 8, !tbaa !43
  %364 = icmp eq i32 %360, %363
  br label %365

365:                                              ; preds = %357, %352
  %366 = phi i1 [ true, %352 ], [ %364, %357 ]
  br label %367

367:                                              ; preds = %365, %344, %331
  %368 = phi i1 [ false, %344 ], [ false, %331 ], [ %366, %365 ]
  %369 = zext i1 %368 to i32
  store i32 %369, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !9
  %370 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %371 = getelementptr inbounds %struct.LodePNGColorMode, ptr %370, i32 0, i32 0
  %372 = load i32, ptr %371, align 8, !tbaa !22
  %373 = icmp eq i32 %372, 3
  br i1 %373, label %374, label %379

374:                                              ; preds = %367
  %375 = getelementptr inbounds %struct.LodePNGColorMode, ptr %19, i32 0, i32 0
  %376 = load i32, ptr %375, align 8, !tbaa !47
  %377 = icmp eq i32 %376, 3
  br i1 %377, label %378, label %379

378:                                              ; preds = %374
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %379

379:                                              ; preds = %378, %374, %367
  %380 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %381 = getelementptr inbounds %struct.LodePNGColorMode, ptr %380, i32 0, i32 0
  %382 = load i32, ptr %381, align 8, !tbaa !22
  %383 = icmp eq i32 %382, 2
  br i1 %383, label %384, label %392

384:                                              ; preds = %379
  %385 = getelementptr inbounds %struct.LodePNGColorMode, ptr %19, i32 0, i32 0
  %386 = load i32, ptr %385, align 8, !tbaa !47
  %387 = icmp eq i32 %386, 3
  br i1 %387, label %388, label %392

388:                                              ; preds = %384
  %389 = load i32, ptr %27, align 4, !tbaa !9
  %390 = icmp ule i32 %389, 8
  br i1 %390, label %391, label %392

391:                                              ; preds = %388
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %392

392:                                              ; preds = %391, %388, %384, %379
  %393 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %394 = getelementptr inbounds %struct.LodePNGColorMode, ptr %393, i32 0, i32 0
  %395 = load i32, ptr %394, align 8, !tbaa !22
  %396 = icmp eq i32 %395, 6
  br i1 %396, label %397, label %410

397:                                              ; preds = %392
  %398 = getelementptr inbounds %struct.LodePNGColorMode, ptr %19, i32 0, i32 0
  %399 = load i32, ptr %398, align 8, !tbaa !47
  %400 = icmp eq i32 %399, 3
  br i1 %400, label %401, label %410

401:                                              ; preds = %397
  %402 = load ptr, ptr %18, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.LodePNGInfo, ptr %402, i32 0, i32 43
  %404 = load i32, ptr %403, align 4, !tbaa !46
  %405 = icmp eq i32 %404, 8
  br i1 %405, label %406, label %410

406:                                              ; preds = %401
  %407 = load i32, ptr %27, align 4, !tbaa !9
  %408 = icmp ule i32 %407, 8
  br i1 %408, label %409, label %410

409:                                              ; preds = %406
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %410

410:                                              ; preds = %409, %406, %401, %397, %392
  %411 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %412 = getelementptr inbounds %struct.LodePNGColorMode, ptr %411, i32 0, i32 0
  %413 = load i32, ptr %412, align 8, !tbaa !22
  %414 = icmp eq i32 %413, 2
  br i1 %414, label %420, label %415

415:                                              ; preds = %410
  %416 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %417 = getelementptr inbounds %struct.LodePNGColorMode, ptr %416, i32 0, i32 0
  %418 = load i32, ptr %417, align 8, !tbaa !22
  %419 = icmp eq i32 %418, 6
  br i1 %419, label %420, label %440

420:                                              ; preds = %415, %410
  %421 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %422 = getelementptr inbounds %struct.LodePNGColorMode, ptr %421, i32 0, i32 1
  %423 = load i32, ptr %422, align 4, !tbaa !27
  %424 = icmp eq i32 %423, 16
  br i1 %424, label %425, label %440

425:                                              ; preds = %420
  %426 = getelementptr inbounds %struct.LodePNGColorMode, ptr %19, i32 0, i32 0
  %427 = load i32, ptr %426, align 8, !tbaa !47
  %428 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %429 = getelementptr inbounds %struct.LodePNGColorMode, ptr %428, i32 0, i32 0
  %430 = load i32, ptr %429, align 8, !tbaa !22
  %431 = icmp eq i32 %427, %430
  br i1 %431, label %432, label %440

432:                                              ; preds = %425
  %433 = getelementptr inbounds %struct.LodePNGColorMode, ptr %19, i32 0, i32 1
  %434 = load i32, ptr %433, align 4, !tbaa !48
  %435 = icmp eq i32 %434, 8
  br i1 %435, label %436, label %440

436:                                              ; preds = %432
  %437 = load i32, ptr %27, align 4, !tbaa !9
  %438 = icmp ule i32 %437, 8
  br i1 %438, label %439, label %440

439:                                              ; preds = %436
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %440

440:                                              ; preds = %439, %436, %432, %425, %420, %415
  %441 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %442 = getelementptr inbounds %struct.LodePNGColorMode, ptr %441, i32 0, i32 0
  %443 = load i32, ptr %442, align 8, !tbaa !22
  %444 = icmp ne i32 %443, 3
  br i1 %444, label %445, label %460

445:                                              ; preds = %440
  %446 = getelementptr inbounds %struct.LodePNGColorMode, ptr %19, i32 0, i32 0
  %447 = load i32, ptr %446, align 8, !tbaa !47
  %448 = icmp ne i32 %447, 3
  br i1 %448, label %449, label %460

449:                                              ; preds = %445
  %450 = load i32, ptr %28, align 4, !tbaa !9
  %451 = icmp ne i32 %450, 0
  br i1 %451, label %452, label %460

452:                                              ; preds = %449
  %453 = load ptr, ptr %18, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.LodePNGInfo, ptr %453, i32 0, i32 40
  %455 = load i32, ptr %454, align 8, !tbaa !43
  %456 = getelementptr inbounds %struct.LodePNGColorMode, ptr %19, i32 0, i32 1
  %457 = load i32, ptr %456, align 4, !tbaa !48
  %458 = icmp eq i32 %455, %457
  br i1 %458, label %459, label %460

459:                                              ; preds = %452
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %459, %452, %449, %445, %440
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #2
  br label %461

461:                                              ; preds = %460, %220
  %462 = load ptr, ptr %13, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.LodePNGState, ptr %462, i32 0, i32 1
  %464 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %463, i32 0, i32 5
  %465 = load i32, ptr %464, align 8, !tbaa !23
  %466 = icmp ne i32 %465, 0
  br i1 %466, label %467, label %487

467:                                              ; preds = %461
  %468 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %469 = getelementptr inbounds %struct.LodePNGColorMode, ptr %468, i32 0, i32 0
  %470 = load i32, ptr %469, align 8, !tbaa !22
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %472, label %486

472:                                              ; preds = %467
  %473 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %474 = getelementptr inbounds %struct.LodePNGColorMode, ptr %473, i32 0, i32 0
  %475 = load i32, ptr %474, align 8, !tbaa !22
  %476 = icmp ne i32 %475, 4
  br i1 %476, label %477, label %486

477:                                              ; preds = %472
  %478 = getelementptr inbounds %struct.LodePNGColorMode, ptr %19, i32 0, i32 0
  %479 = load i32, ptr %478, align 8, !tbaa !47
  %480 = icmp eq i32 %479, 0
  br i1 %480, label %485, label %481

481:                                              ; preds = %477
  %482 = getelementptr inbounds %struct.LodePNGColorMode, ptr %19, i32 0, i32 0
  %483 = load i32, ptr %482, align 8, !tbaa !47
  %484 = icmp eq i32 %483, 4
  br i1 %484, label %485, label %486

485:                                              ; preds = %481, %477
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %486

486:                                              ; preds = %485, %481, %472, %467
  br label %487

487:                                              ; preds = %486, %461
  %488 = load i32, ptr %21, align 4, !tbaa !9
  %489 = icmp ne i32 %488, 0
  br i1 %489, label %490, label %520

490:                                              ; preds = %487
  %491 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %492 = call i32 @lodepng_color_mode_copy(ptr noundef %491, ptr noundef %19)
  %493 = load ptr, ptr %18, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.LodePNGInfo, ptr %493, i32 0, i32 4
  %495 = load i32, ptr %494, align 8, !tbaa !38
  %496 = icmp ne i32 %495, 0
  br i1 %496, label %497, label %519

497:                                              ; preds = %490
  %498 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 5
  %499 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 6
  %500 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 7
  %501 = load ptr, ptr %18, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.LodePNGInfo, ptr %501, i32 0, i32 5
  %503 = load i32, ptr %502, align 4, !tbaa !39
  %504 = load ptr, ptr %18, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.LodePNGInfo, ptr %504, i32 0, i32 6
  %506 = load i32, ptr %505, align 8, !tbaa !40
  %507 = load ptr, ptr %18, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.LodePNGInfo, ptr %507, i32 0, i32 7
  %509 = load i32, ptr %508, align 4, !tbaa !41
  %510 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %511 = load ptr, ptr %18, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.LodePNGInfo, ptr %511, i32 0, i32 3
  %513 = call i32 @lodepng_convert_rgb(ptr noundef %498, ptr noundef %499, ptr noundef %500, i32 noundef %503, i32 noundef %506, i32 noundef %509, ptr noundef %510, ptr noundef %512)
  %514 = icmp ne i32 %513, 0
  br i1 %514, label %515, label %518

515:                                              ; preds = %497
  %516 = load ptr, ptr %13, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.LodePNGState, ptr %516, i32 0, i32 4
  store i32 104, ptr %517, align 8, !tbaa !13
  store i32 2, ptr %26, align 4
  br label %521

518:                                              ; preds = %497
  br label %519

519:                                              ; preds = %518, %490
  br label %520

520:                                              ; preds = %519, %487
  store i32 0, ptr %26, align 4
  br label %521

521:                                              ; preds = %520, %515, %219, %206, %175
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #2
  call void @llvm.lifetime.end.p0(i64 1072, ptr %20) #2
  %522 = load i32, ptr %26, align 4
  switch i32 %522, label %1205 [
    i32 0, label %523
    i32 2, label %1194
  ]

523:                                              ; preds = %521
  br label %524

524:                                              ; preds = %523, %121
  %525 = load ptr, ptr %18, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.LodePNGInfo, ptr %525, i32 0, i32 35
  %527 = load i32, ptr %526, align 8, !tbaa !31
  %528 = icmp ne i32 %527, 0
  br i1 %528, label %529, label %582

529:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #2
  %530 = load ptr, ptr %18, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.LodePNGInfo, ptr %530, i32 0, i32 37
  %532 = load ptr, ptr %531, align 8, !tbaa !32
  %533 = load ptr, ptr %18, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.LodePNGInfo, ptr %533, i32 0, i32 38
  %535 = load i32, ptr %534, align 8, !tbaa !33
  %536 = call i32 @isGrayICCProfile(ptr noundef %532, i32 noundef %535)
  store i32 %536, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #2
  %537 = load ptr, ptr %18, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.LodePNGInfo, ptr %537, i32 0, i32 37
  %539 = load ptr, ptr %538, align 8, !tbaa !32
  %540 = load ptr, ptr %18, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.LodePNGInfo, ptr %540, i32 0, i32 38
  %542 = load i32, ptr %541, align 8, !tbaa !33
  %543 = call i32 @isRGBICCProfile(ptr noundef %539, i32 noundef %542)
  store i32 %543, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #2
  %544 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %545 = getelementptr inbounds %struct.LodePNGColorMode, ptr %544, i32 0, i32 0
  %546 = load i32, ptr %545, align 8, !tbaa !22
  %547 = icmp eq i32 %546, 0
  br i1 %547, label %553, label %548

548:                                              ; preds = %529
  %549 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %550 = getelementptr inbounds %struct.LodePNGColorMode, ptr %549, i32 0, i32 0
  %551 = load i32, ptr %550, align 8, !tbaa !22
  %552 = icmp eq i32 %551, 4
  br label %553

553:                                              ; preds = %548, %529
  %554 = phi i1 [ true, %529 ], [ %552, %548 ]
  %555 = zext i1 %554 to i32
  store i32 %555, ptr %31, align 4, !tbaa !9
  %556 = load i32, ptr %29, align 4, !tbaa !9
  %557 = icmp ne i32 %556, 0
  br i1 %557, label %564, label %558

558:                                              ; preds = %553
  %559 = load i32, ptr %30, align 4, !tbaa !9
  %560 = icmp ne i32 %559, 0
  br i1 %560, label %564, label %561

561:                                              ; preds = %558
  %562 = load ptr, ptr %13, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.LodePNGState, ptr %562, i32 0, i32 4
  store i32 100, ptr %563, align 8, !tbaa !13
  store i32 2, ptr %26, align 4
  br label %579

564:                                              ; preds = %558, %553
  %565 = load i32, ptr %29, align 4, !tbaa !9
  %566 = load i32, ptr %31, align 4, !tbaa !9
  %567 = icmp ne i32 %565, %566
  br i1 %567, label %568, label %578

568:                                              ; preds = %564
  %569 = load ptr, ptr %13, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.LodePNGState, ptr %569, i32 0, i32 1
  %571 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %570, i32 0, i32 1
  %572 = load i32, ptr %571, align 8, !tbaa !30
  %573 = icmp ne i32 %572, 0
  %574 = zext i1 %573 to i64
  %575 = select i1 %573, i32 102, i32 101
  %576 = load ptr, ptr %13, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.LodePNGState, ptr %576, i32 0, i32 4
  store i32 %575, ptr %577, align 8, !tbaa !13
  store i32 2, ptr %26, align 4
  br label %579

578:                                              ; preds = %564
  store i32 0, ptr %26, align 4
  br label %579

579:                                              ; preds = %578, %568, %561
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #2
  %580 = load i32, ptr %26, align 4
  switch i32 %580, label %1205 [
    i32 0, label %581
    i32 2, label %1194
  ]

581:                                              ; preds = %579
  br label %582

582:                                              ; preds = %581, %524
  %583 = load ptr, ptr %13, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.LodePNGState, ptr %583, i32 0, i32 2
  %585 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %586 = call i32 @lodepng_color_mode_equal(ptr noundef %584, ptr noundef %585)
  %587 = icmp ne i32 %586, 0
  br i1 %587, label %651, label %588

588:                                              ; preds = %582
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #2
  %589 = load i32, ptr %11, align 4, !tbaa !9
  %590 = zext i32 %589 to i64
  %591 = load i32, ptr %12, align 4, !tbaa !9
  %592 = zext i32 %591 to i64
  %593 = mul i64 %590, %592
  %594 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %595 = call i32 @lodepng_get_bpp(ptr noundef %594)
  %596 = zext i32 %595 to i64
  %597 = mul i64 %593, %596
  %598 = add i64 %597, 7
  %599 = udiv i64 %598, 8
  store i64 %599, ptr %33, align 8, !tbaa !11
  %600 = load i64, ptr %33, align 8, !tbaa !11
  %601 = call ptr @lodepng_malloc(i64 noundef %600)
  store ptr %601, ptr %32, align 8, !tbaa !5
  %602 = load ptr, ptr %32, align 8, !tbaa !5
  %603 = icmp ne ptr %602, null
  br i1 %603, label %610, label %604

604:                                              ; preds = %588
  %605 = load i64, ptr %33, align 8, !tbaa !11
  %606 = icmp ne i64 %605, 0
  br i1 %606, label %607, label %610

607:                                              ; preds = %604
  %608 = load ptr, ptr %13, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.LodePNGState, ptr %608, i32 0, i32 4
  store i32 83, ptr %609, align 8, !tbaa !13
  br label %610

610:                                              ; preds = %607, %604, %588
  %611 = load ptr, ptr %13, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.LodePNGState, ptr %611, i32 0, i32 4
  %613 = load i32, ptr %612, align 8, !tbaa !13
  %614 = icmp ne i32 %613, 0
  br i1 %614, label %626, label %615

615:                                              ; preds = %610
  %616 = load ptr, ptr %32, align 8, !tbaa !5
  %617 = load ptr, ptr %10, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %619 = load ptr, ptr %13, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.LodePNGState, ptr %619, i32 0, i32 2
  %621 = load i32, ptr %11, align 4, !tbaa !9
  %622 = load i32, ptr %12, align 4, !tbaa !9
  %623 = call i32 @lodepng_convert(ptr noundef %616, ptr noundef %617, ptr noundef %618, ptr noundef %620, i32 noundef %621, i32 noundef %622)
  %624 = load ptr, ptr %13, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.LodePNGState, ptr %624, i32 0, i32 4
  store i32 %623, ptr %625, align 8, !tbaa !13
  br label %626

626:                                              ; preds = %615, %610
  %627 = load ptr, ptr %13, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.LodePNGState, ptr %627, i32 0, i32 4
  %629 = load i32, ptr %628, align 8, !tbaa !13
  %630 = icmp ne i32 %629, 0
  br i1 %630, label %640, label %631

631:                                              ; preds = %626
  %632 = load ptr, ptr %32, align 8, !tbaa !5
  %633 = load i32, ptr %11, align 4, !tbaa !9
  %634 = load i32, ptr %12, align 4, !tbaa !9
  %635 = load ptr, ptr %13, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.LodePNGState, ptr %635, i32 0, i32 1
  %637 = call i32 @preProcessScanlines(ptr noundef %14, ptr noundef %15, ptr noundef %632, i32 noundef %633, i32 noundef %634, ptr noundef %17, ptr noundef %636)
  %638 = load ptr, ptr %13, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.LodePNGState, ptr %638, i32 0, i32 4
  store i32 %637, ptr %639, align 8, !tbaa !13
  br label %640

640:                                              ; preds = %631, %626
  %641 = load ptr, ptr %32, align 8, !tbaa !5
  call void @lodepng_free(ptr noundef %641)
  %642 = load ptr, ptr %13, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.LodePNGState, ptr %642, i32 0, i32 4
  %644 = load i32, ptr %643, align 8, !tbaa !13
  %645 = icmp ne i32 %644, 0
  br i1 %645, label %646, label %647

646:                                              ; preds = %640
  store i32 2, ptr %26, align 4
  br label %648

647:                                              ; preds = %640
  store i32 0, ptr %26, align 4
  br label %648

648:                                              ; preds = %647, %646
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #2
  %649 = load i32, ptr %26, align 4
  switch i32 %649, label %1205 [
    i32 0, label %650
    i32 2, label %1194
  ]

650:                                              ; preds = %648
  br label %666

651:                                              ; preds = %582
  %652 = load ptr, ptr %10, align 8, !tbaa !5
  %653 = load i32, ptr %11, align 4, !tbaa !9
  %654 = load i32, ptr %12, align 4, !tbaa !9
  %655 = load ptr, ptr %13, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.LodePNGState, ptr %655, i32 0, i32 1
  %657 = call i32 @preProcessScanlines(ptr noundef %14, ptr noundef %15, ptr noundef %652, i32 noundef %653, i32 noundef %654, ptr noundef %17, ptr noundef %656)
  %658 = load ptr, ptr %13, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.LodePNGState, ptr %658, i32 0, i32 4
  store i32 %657, ptr %659, align 8, !tbaa !13
  %660 = load ptr, ptr %13, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.LodePNGState, ptr %660, i32 0, i32 4
  %662 = load i32, ptr %661, align 8, !tbaa !13
  %663 = icmp ne i32 %662, 0
  br i1 %663, label %664, label %665

664:                                              ; preds = %651
  br label %1194

665:                                              ; preds = %651
  br label %666

666:                                              ; preds = %665, %650
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #2
  %667 = call i32 @writeSignature(ptr noundef %16)
  %668 = load ptr, ptr %13, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.LodePNGState, ptr %668, i32 0, i32 4
  store i32 %667, ptr %669, align 8, !tbaa !13
  %670 = load ptr, ptr %13, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.LodePNGState, ptr %670, i32 0, i32 4
  %672 = load i32, ptr %671, align 8, !tbaa !13
  %673 = icmp ne i32 %672, 0
  br i1 %673, label %674, label %675

674:                                              ; preds = %666
  store i32 2, ptr %26, align 4
  br label %1191

675:                                              ; preds = %666
  %676 = load i32, ptr %11, align 4, !tbaa !9
  %677 = load i32, ptr %12, align 4, !tbaa !9
  %678 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %679 = getelementptr inbounds %struct.LodePNGColorMode, ptr %678, i32 0, i32 0
  %680 = load i32, ptr %679, align 8, !tbaa !22
  %681 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %682 = getelementptr inbounds %struct.LodePNGColorMode, ptr %681, i32 0, i32 1
  %683 = load i32, ptr %682, align 4, !tbaa !27
  %684 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 2
  %685 = load i32, ptr %684, align 8, !tbaa !26
  %686 = call i32 @addChunk_IHDR(ptr noundef %16, i32 noundef %676, i32 noundef %677, i32 noundef %680, i32 noundef %683, i32 noundef %685)
  %687 = load ptr, ptr %13, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.LodePNGState, ptr %687, i32 0, i32 4
  store i32 %686, ptr %688, align 8, !tbaa !13
  %689 = load ptr, ptr %13, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.LodePNGState, ptr %689, i32 0, i32 4
  %691 = load i32, ptr %690, align 8, !tbaa !13
  %692 = icmp ne i32 %691, 0
  br i1 %692, label %693, label %694

693:                                              ; preds = %675
  store i32 2, ptr %26, align 4
  br label %1191

694:                                              ; preds = %675
  %695 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 44
  %696 = getelementptr inbounds [3 x ptr], ptr %695, i64 0, i64 0
  %697 = load ptr, ptr %696, align 8, !tbaa !5
  %698 = icmp ne ptr %697, null
  br i1 %698, label %699, label %715

699:                                              ; preds = %694
  %700 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 44
  %701 = getelementptr inbounds [3 x ptr], ptr %700, i64 0, i64 0
  %702 = load ptr, ptr %701, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 45
  %704 = getelementptr inbounds [3 x i64], ptr %703, i64 0, i64 0
  %705 = load i64, ptr %704, align 8, !tbaa !11
  %706 = call i32 @addUnknownChunks(ptr noundef %16, ptr noundef %702, i64 noundef %705)
  %707 = load ptr, ptr %13, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.LodePNGState, ptr %707, i32 0, i32 4
  store i32 %706, ptr %708, align 8, !tbaa !13
  %709 = load ptr, ptr %13, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.LodePNGState, ptr %709, i32 0, i32 4
  %711 = load i32, ptr %710, align 8, !tbaa !13
  %712 = icmp ne i32 %711, 0
  br i1 %712, label %713, label %714

713:                                              ; preds = %699
  store i32 2, ptr %26, align 4
  br label %1191

714:                                              ; preds = %699
  br label %715

715:                                              ; preds = %714, %694
  %716 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 35
  %717 = load i32, ptr %716, align 8, !tbaa !31
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %719, label %732

719:                                              ; preds = %715
  %720 = load ptr, ptr %13, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.LodePNGState, ptr %720, i32 0, i32 1
  %722 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %721, i32 0, i32 0
  %723 = call i32 @addChunk_iCCP(ptr noundef %16, ptr noundef %17, ptr noundef %722)
  %724 = load ptr, ptr %13, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.LodePNGState, ptr %724, i32 0, i32 4
  store i32 %723, ptr %725, align 8, !tbaa !13
  %726 = load ptr, ptr %13, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.LodePNGState, ptr %726, i32 0, i32 4
  %728 = load i32, ptr %727, align 8, !tbaa !13
  %729 = icmp ne i32 %728, 0
  br i1 %729, label %730, label %731

730:                                              ; preds = %719
  store i32 2, ptr %26, align 4
  br label %1191

731:                                              ; preds = %719
  br label %732

732:                                              ; preds = %731, %715
  %733 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 33
  %734 = load i32, ptr %733, align 8, !tbaa !49
  %735 = icmp ne i32 %734, 0
  br i1 %735, label %736, label %746

736:                                              ; preds = %732
  %737 = call i32 @addChunk_sRGB(ptr noundef %16, ptr noundef %17)
  %738 = load ptr, ptr %13, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.LodePNGState, ptr %738, i32 0, i32 4
  store i32 %737, ptr %739, align 8, !tbaa !13
  %740 = load ptr, ptr %13, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.LodePNGState, ptr %740, i32 0, i32 4
  %742 = load i32, ptr %741, align 8, !tbaa !13
  %743 = icmp ne i32 %742, 0
  br i1 %743, label %744, label %745

744:                                              ; preds = %736
  store i32 2, ptr %26, align 4
  br label %1191

745:                                              ; preds = %736
  br label %746

746:                                              ; preds = %745, %732
  %747 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 22
  %748 = load i32, ptr %747, align 4, !tbaa !50
  %749 = icmp ne i32 %748, 0
  br i1 %749, label %750, label %760

750:                                              ; preds = %746
  %751 = call i32 @addChunk_gAMA(ptr noundef %16, ptr noundef %17)
  %752 = load ptr, ptr %13, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.LodePNGState, ptr %752, i32 0, i32 4
  store i32 %751, ptr %753, align 8, !tbaa !13
  %754 = load ptr, ptr %13, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.LodePNGState, ptr %754, i32 0, i32 4
  %756 = load i32, ptr %755, align 8, !tbaa !13
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %758, label %759

758:                                              ; preds = %750
  store i32 2, ptr %26, align 4
  br label %1191

759:                                              ; preds = %750
  br label %760

760:                                              ; preds = %759, %746
  %761 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 24
  %762 = load i32, ptr %761, align 4, !tbaa !51
  %763 = icmp ne i32 %762, 0
  br i1 %763, label %764, label %774

764:                                              ; preds = %760
  %765 = call i32 @addChunk_cHRM(ptr noundef %16, ptr noundef %17)
  %766 = load ptr, ptr %13, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.LodePNGState, ptr %766, i32 0, i32 4
  store i32 %765, ptr %767, align 8, !tbaa !13
  %768 = load ptr, ptr %13, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.LodePNGState, ptr %768, i32 0, i32 4
  %770 = load i32, ptr %769, align 8, !tbaa !13
  %771 = icmp ne i32 %770, 0
  br i1 %771, label %772, label %773

772:                                              ; preds = %764
  store i32 2, ptr %26, align 4
  br label %1191

773:                                              ; preds = %764
  br label %774

774:                                              ; preds = %773, %760
  %775 = load ptr, ptr %18, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.LodePNGInfo, ptr %775, i32 0, i32 39
  %777 = load i32, ptr %776, align 4, !tbaa !42
  %778 = icmp ne i32 %777, 0
  br i1 %778, label %779, label %789

779:                                              ; preds = %774
  %780 = call i32 @addChunk_sBIT(ptr noundef %16, ptr noundef %17)
  %781 = load ptr, ptr %13, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.LodePNGState, ptr %781, i32 0, i32 4
  store i32 %780, ptr %782, align 8, !tbaa !13
  %783 = load ptr, ptr %13, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.LodePNGState, ptr %783, i32 0, i32 4
  %785 = load i32, ptr %784, align 8, !tbaa !13
  %786 = icmp ne i32 %785, 0
  br i1 %786, label %787, label %788

787:                                              ; preds = %779
  store i32 2, ptr %26, align 4
  br label %1191

788:                                              ; preds = %779
  br label %789

789:                                              ; preds = %788, %774
  %790 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %791 = getelementptr inbounds %struct.LodePNGColorMode, ptr %790, i32 0, i32 0
  %792 = load i32, ptr %791, align 8, !tbaa !22
  %793 = icmp eq i32 %792, 3
  br i1 %793, label %794, label %805

794:                                              ; preds = %789
  %795 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %796 = call i32 @addChunk_PLTE(ptr noundef %16, ptr noundef %795)
  %797 = load ptr, ptr %13, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.LodePNGState, ptr %797, i32 0, i32 4
  store i32 %796, ptr %798, align 8, !tbaa !13
  %799 = load ptr, ptr %13, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.LodePNGState, ptr %799, i32 0, i32 4
  %801 = load i32, ptr %800, align 8, !tbaa !13
  %802 = icmp ne i32 %801, 0
  br i1 %802, label %803, label %804

803:                                              ; preds = %794
  store i32 2, ptr %26, align 4
  br label %1191

804:                                              ; preds = %794
  br label %805

805:                                              ; preds = %804, %789
  %806 = load ptr, ptr %13, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.LodePNGState, ptr %806, i32 0, i32 1
  %808 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %807, i32 0, i32 5
  %809 = load i32, ptr %808, align 8, !tbaa !23
  %810 = icmp ne i32 %809, 0
  br i1 %810, label %811, label %832

811:                                              ; preds = %805
  %812 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %813 = getelementptr inbounds %struct.LodePNGColorMode, ptr %812, i32 0, i32 0
  %814 = load i32, ptr %813, align 8, !tbaa !22
  %815 = icmp eq i32 %814, 2
  br i1 %815, label %821, label %816

816:                                              ; preds = %811
  %817 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %818 = getelementptr inbounds %struct.LodePNGColorMode, ptr %817, i32 0, i32 0
  %819 = load i32, ptr %818, align 8, !tbaa !22
  %820 = icmp eq i32 %819, 6
  br i1 %820, label %821, label %832

821:                                              ; preds = %816, %811
  %822 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %823 = call i32 @addChunk_PLTE(ptr noundef %16, ptr noundef %822)
  %824 = load ptr, ptr %13, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.LodePNGState, ptr %824, i32 0, i32 4
  store i32 %823, ptr %825, align 8, !tbaa !13
  %826 = load ptr, ptr %13, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.LodePNGState, ptr %826, i32 0, i32 4
  %828 = load i32, ptr %827, align 8, !tbaa !13
  %829 = icmp ne i32 %828, 0
  br i1 %829, label %830, label %831

830:                                              ; preds = %821
  store i32 2, ptr %26, align 4
  br label %1191

831:                                              ; preds = %821
  br label %832

832:                                              ; preds = %831, %816, %805
  %833 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 3
  %834 = call i32 @addChunk_tRNS(ptr noundef %16, ptr noundef %833)
  %835 = load ptr, ptr %13, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.LodePNGState, ptr %835, i32 0, i32 4
  store i32 %834, ptr %836, align 8, !tbaa !13
  %837 = load ptr, ptr %13, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.LodePNGState, ptr %837, i32 0, i32 4
  %839 = load i32, ptr %838, align 8, !tbaa !13
  %840 = icmp ne i32 %839, 0
  br i1 %840, label %841, label %842

841:                                              ; preds = %832
  store i32 2, ptr %26, align 4
  br label %1191

842:                                              ; preds = %832
  %843 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 4
  %844 = load i32, ptr %843, align 8, !tbaa !38
  %845 = icmp ne i32 %844, 0
  br i1 %845, label %846, label %856

846:                                              ; preds = %842
  %847 = call i32 @addChunk_bKGD(ptr noundef %16, ptr noundef %17)
  %848 = load ptr, ptr %13, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.LodePNGState, ptr %848, i32 0, i32 4
  store i32 %847, ptr %849, align 8, !tbaa !13
  %850 = load ptr, ptr %13, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.LodePNGState, ptr %850, i32 0, i32 4
  %852 = load i32, ptr %851, align 8, !tbaa !13
  %853 = icmp ne i32 %852, 0
  br i1 %853, label %854, label %855

854:                                              ; preds = %846
  store i32 2, ptr %26, align 4
  br label %1191

855:                                              ; preds = %846
  br label %856

856:                                              ; preds = %855, %842
  %857 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 18
  %858 = load i32, ptr %857, align 4, !tbaa !52
  %859 = icmp ne i32 %858, 0
  br i1 %859, label %860, label %870

860:                                              ; preds = %856
  %861 = call i32 @addChunk_pHYs(ptr noundef %16, ptr noundef %17)
  %862 = load ptr, ptr %13, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.LodePNGState, ptr %862, i32 0, i32 4
  store i32 %861, ptr %863, align 8, !tbaa !13
  %864 = load ptr, ptr %13, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.LodePNGState, ptr %864, i32 0, i32 4
  %866 = load i32, ptr %865, align 8, !tbaa !13
  %867 = icmp ne i32 %866, 0
  br i1 %867, label %868, label %869

868:                                              ; preds = %860
  store i32 2, ptr %26, align 4
  br label %1191

869:                                              ; preds = %860
  br label %870

870:                                              ; preds = %869, %856
  %871 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 44
  %872 = getelementptr inbounds [3 x ptr], ptr %871, i64 0, i64 1
  %873 = load ptr, ptr %872, align 8, !tbaa !5
  %874 = icmp ne ptr %873, null
  br i1 %874, label %875, label %891

875:                                              ; preds = %870
  %876 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 44
  %877 = getelementptr inbounds [3 x ptr], ptr %876, i64 0, i64 1
  %878 = load ptr, ptr %877, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 45
  %880 = getelementptr inbounds [3 x i64], ptr %879, i64 0, i64 1
  %881 = load i64, ptr %880, align 8, !tbaa !11
  %882 = call i32 @addUnknownChunks(ptr noundef %16, ptr noundef %878, i64 noundef %881)
  %883 = load ptr, ptr %13, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.LodePNGState, ptr %883, i32 0, i32 4
  store i32 %882, ptr %884, align 8, !tbaa !13
  %885 = load ptr, ptr %13, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.LodePNGState, ptr %885, i32 0, i32 4
  %887 = load i32, ptr %886, align 8, !tbaa !13
  %888 = icmp ne i32 %887, 0
  br i1 %888, label %889, label %890

889:                                              ; preds = %875
  store i32 2, ptr %26, align 4
  br label %1191

890:                                              ; preds = %875
  br label %891

891:                                              ; preds = %890, %870
  %892 = load ptr, ptr %14, align 8, !tbaa !5
  %893 = load i64, ptr %15, align 8, !tbaa !11
  %894 = load ptr, ptr %13, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.LodePNGState, ptr %894, i32 0, i32 1
  %896 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %895, i32 0, i32 0
  %897 = call i32 @addChunk_IDAT(ptr noundef %16, ptr noundef %892, i64 noundef %893, ptr noundef %896)
  %898 = load ptr, ptr %13, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.LodePNGState, ptr %898, i32 0, i32 4
  store i32 %897, ptr %899, align 8, !tbaa !13
  %900 = load ptr, ptr %13, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.LodePNGState, ptr %900, i32 0, i32 4
  %902 = load i32, ptr %901, align 8, !tbaa !13
  %903 = icmp ne i32 %902, 0
  br i1 %903, label %904, label %905

904:                                              ; preds = %891
  store i32 2, ptr %26, align 4
  br label %1191

905:                                              ; preds = %891
  %906 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 16
  %907 = load i32, ptr %906, align 8, !tbaa !53
  %908 = icmp ne i32 %907, 0
  br i1 %908, label %909, label %920

909:                                              ; preds = %905
  %910 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 17
  %911 = call i32 @addChunk_tIME(ptr noundef %16, ptr noundef %910)
  %912 = load ptr, ptr %13, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.LodePNGState, ptr %912, i32 0, i32 4
  store i32 %911, ptr %913, align 8, !tbaa !13
  %914 = load ptr, ptr %13, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.LodePNGState, ptr %914, i32 0, i32 4
  %916 = load i32, ptr %915, align 8, !tbaa !13
  %917 = icmp ne i32 %916, 0
  br i1 %917, label %918, label %919

918:                                              ; preds = %909
  store i32 2, ptr %26, align 4
  br label %1191

919:                                              ; preds = %909
  br label %920

920:                                              ; preds = %919, %905
  store i64 0, ptr %34, align 8, !tbaa !11
  br label %921

921:                                              ; preds = %998, %920
  %922 = load i64, ptr %34, align 8, !tbaa !11
  %923 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 8
  %924 = load i64, ptr %923, align 8, !tbaa !54
  %925 = icmp ne i64 %922, %924
  br i1 %925, label %926, label %1001

926:                                              ; preds = %921
  %927 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 9
  %928 = load ptr, ptr %927, align 8, !tbaa !55
  %929 = load i64, ptr %34, align 8, !tbaa !11
  %930 = getelementptr inbounds ptr, ptr %928, i64 %929
  %931 = load ptr, ptr %930, align 8, !tbaa !5
  %932 = call i64 @lodepng_strlen(ptr noundef %931)
  %933 = icmp ugt i64 %932, 79
  br i1 %933, label %934, label %937

934:                                              ; preds = %926
  %935 = load ptr, ptr %13, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.LodePNGState, ptr %935, i32 0, i32 4
  store i32 66, ptr %936, align 8, !tbaa !13
  store i32 2, ptr %26, align 4
  br label %1191

937:                                              ; preds = %926
  %938 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 9
  %939 = load ptr, ptr %938, align 8, !tbaa !55
  %940 = load i64, ptr %34, align 8, !tbaa !11
  %941 = getelementptr inbounds ptr, ptr %939, i64 %940
  %942 = load ptr, ptr %941, align 8, !tbaa !5
  %943 = call i64 @lodepng_strlen(ptr noundef %942)
  %944 = icmp ult i64 %943, 1
  br i1 %944, label %945, label %948

945:                                              ; preds = %937
  %946 = load ptr, ptr %13, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.LodePNGState, ptr %946, i32 0, i32 4
  store i32 67, ptr %947, align 8, !tbaa !13
  store i32 2, ptr %26, align 4
  br label %1191

948:                                              ; preds = %937
  %949 = load ptr, ptr %13, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.LodePNGState, ptr %949, i32 0, i32 1
  %951 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %950, i32 0, i32 7
  %952 = load i32, ptr %951, align 8, !tbaa !56
  %953 = icmp ne i32 %952, 0
  br i1 %953, label %954, label %977

954:                                              ; preds = %948
  %955 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 9
  %956 = load ptr, ptr %955, align 8, !tbaa !55
  %957 = load i64, ptr %34, align 8, !tbaa !11
  %958 = getelementptr inbounds ptr, ptr %956, i64 %957
  %959 = load ptr, ptr %958, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 10
  %961 = load ptr, ptr %960, align 8, !tbaa !57
  %962 = load i64, ptr %34, align 8, !tbaa !11
  %963 = getelementptr inbounds ptr, ptr %961, i64 %962
  %964 = load ptr, ptr %963, align 8, !tbaa !5
  %965 = load ptr, ptr %13, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.LodePNGState, ptr %965, i32 0, i32 1
  %967 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %966, i32 0, i32 0
  %968 = call i32 @addChunk_zTXt(ptr noundef %16, ptr noundef %959, ptr noundef %964, ptr noundef %967)
  %969 = load ptr, ptr %13, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.LodePNGState, ptr %969, i32 0, i32 4
  store i32 %968, ptr %970, align 8, !tbaa !13
  %971 = load ptr, ptr %13, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.LodePNGState, ptr %971, i32 0, i32 4
  %973 = load i32, ptr %972, align 8, !tbaa !13
  %974 = icmp ne i32 %973, 0
  br i1 %974, label %975, label %976

975:                                              ; preds = %954
  store i32 2, ptr %26, align 4
  br label %1191

976:                                              ; preds = %954
  br label %997

977:                                              ; preds = %948
  %978 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 9
  %979 = load ptr, ptr %978, align 8, !tbaa !55
  %980 = load i64, ptr %34, align 8, !tbaa !11
  %981 = getelementptr inbounds ptr, ptr %979, i64 %980
  %982 = load ptr, ptr %981, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 10
  %984 = load ptr, ptr %983, align 8, !tbaa !57
  %985 = load i64, ptr %34, align 8, !tbaa !11
  %986 = getelementptr inbounds ptr, ptr %984, i64 %985
  %987 = load ptr, ptr %986, align 8, !tbaa !5
  %988 = call i32 @addChunk_tEXt(ptr noundef %16, ptr noundef %982, ptr noundef %987)
  %989 = load ptr, ptr %13, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.LodePNGState, ptr %989, i32 0, i32 4
  store i32 %988, ptr %990, align 8, !tbaa !13
  %991 = load ptr, ptr %13, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.LodePNGState, ptr %991, i32 0, i32 4
  %993 = load i32, ptr %992, align 8, !tbaa !13
  %994 = icmp ne i32 %993, 0
  br i1 %994, label %995, label %996

995:                                              ; preds = %977
  store i32 2, ptr %26, align 4
  br label %1191

996:                                              ; preds = %977
  br label %997

997:                                              ; preds = %996, %976
  br label %998

998:                                              ; preds = %997
  %999 = load i64, ptr %34, align 8, !tbaa !11
  %1000 = add i64 %999, 1
  store i64 %1000, ptr %34, align 8, !tbaa !11
  br label %921, !llvm.loop !58

1001:                                             ; preds = %921
  %1002 = load ptr, ptr %13, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.LodePNGState, ptr %1002, i32 0, i32 1
  %1004 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %1003, i32 0, i32 6
  %1005 = load i32, ptr %1004, align 4, !tbaa !60
  %1006 = icmp ne i32 %1005, 0
  br i1 %1006, label %1007, label %1092

1007:                                             ; preds = %1001
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #2
  store i32 0, ptr %35, align 4, !tbaa !9
  store i64 0, ptr %34, align 8, !tbaa !11
  br label %1008

1008:                                             ; preds = %1071, %1007
  %1009 = load i64, ptr %34, align 8, !tbaa !11
  %1010 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 8
  %1011 = load i64, ptr %1010, align 8, !tbaa !54
  %1012 = icmp ne i64 %1009, %1011
  br i1 %1012, label %1013, label %1074

1013:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #2
  %1014 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 9
  %1015 = load ptr, ptr %1014, align 8, !tbaa !55
  %1016 = load i64, ptr %34, align 8, !tbaa !11
  %1017 = getelementptr inbounds ptr, ptr %1015, i64 %1016
  %1018 = load ptr, ptr %1017, align 8, !tbaa !5
  store ptr %1018, ptr %36, align 8, !tbaa !5
  %1019 = load ptr, ptr %36, align 8, !tbaa !5
  %1020 = getelementptr inbounds i8, ptr %1019, i64 0
  %1021 = load i8, ptr %1020, align 1, !tbaa !61
  %1022 = sext i8 %1021 to i32
  %1023 = icmp eq i32 %1022, 76
  br i1 %1023, label %1024, label %1067

1024:                                             ; preds = %1013
  %1025 = load ptr, ptr %36, align 8, !tbaa !5
  %1026 = getelementptr inbounds i8, ptr %1025, i64 1
  %1027 = load i8, ptr %1026, align 1, !tbaa !61
  %1028 = sext i8 %1027 to i32
  %1029 = icmp eq i32 %1028, 111
  br i1 %1029, label %1030, label %1067

1030:                                             ; preds = %1024
  %1031 = load ptr, ptr %36, align 8, !tbaa !5
  %1032 = getelementptr inbounds i8, ptr %1031, i64 2
  %1033 = load i8, ptr %1032, align 1, !tbaa !61
  %1034 = sext i8 %1033 to i32
  %1035 = icmp eq i32 %1034, 100
  br i1 %1035, label %1036, label %1067

1036:                                             ; preds = %1030
  %1037 = load ptr, ptr %36, align 8, !tbaa !5
  %1038 = getelementptr inbounds i8, ptr %1037, i64 3
  %1039 = load i8, ptr %1038, align 1, !tbaa !61
  %1040 = sext i8 %1039 to i32
  %1041 = icmp eq i32 %1040, 101
  br i1 %1041, label %1042, label %1067

1042:                                             ; preds = %1036
  %1043 = load ptr, ptr %36, align 8, !tbaa !5
  %1044 = getelementptr inbounds i8, ptr %1043, i64 4
  %1045 = load i8, ptr %1044, align 1, !tbaa !61
  %1046 = sext i8 %1045 to i32
  %1047 = icmp eq i32 %1046, 80
  br i1 %1047, label %1048, label %1067

1048:                                             ; preds = %1042
  %1049 = load ptr, ptr %36, align 8, !tbaa !5
  %1050 = getelementptr inbounds i8, ptr %1049, i64 5
  %1051 = load i8, ptr %1050, align 1, !tbaa !61
  %1052 = sext i8 %1051 to i32
  %1053 = icmp eq i32 %1052, 78
  br i1 %1053, label %1054, label %1067

1054:                                             ; preds = %1048
  %1055 = load ptr, ptr %36, align 8, !tbaa !5
  %1056 = getelementptr inbounds i8, ptr %1055, i64 6
  %1057 = load i8, ptr %1056, align 1, !tbaa !61
  %1058 = sext i8 %1057 to i32
  %1059 = icmp eq i32 %1058, 71
  br i1 %1059, label %1060, label %1067

1060:                                             ; preds = %1054
  %1061 = load ptr, ptr %36, align 8, !tbaa !5
  %1062 = getelementptr inbounds i8, ptr %1061, i64 7
  %1063 = load i8, ptr %1062, align 1, !tbaa !61
  %1064 = sext i8 %1063 to i32
  %1065 = icmp eq i32 %1064, 0
  br i1 %1065, label %1066, label %1067

1066:                                             ; preds = %1060
  store i32 1, ptr %35, align 4, !tbaa !9
  store i32 6, ptr %26, align 4
  br label %1068

1067:                                             ; preds = %1060, %1054, %1048, %1042, %1036, %1030, %1024, %1013
  store i32 0, ptr %26, align 4
  br label %1068

1068:                                             ; preds = %1067, %1066
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #2
  %1069 = load i32, ptr %26, align 4
  switch i32 %1069, label %1207 [
    i32 0, label %1070
    i32 6, label %1074
  ]

1070:                                             ; preds = %1068
  br label %1071

1071:                                             ; preds = %1070
  %1072 = load i64, ptr %34, align 8, !tbaa !11
  %1073 = add i64 %1072, 1
  store i64 %1073, ptr %34, align 8, !tbaa !11
  br label %1008, !llvm.loop !62

1074:                                             ; preds = %1068, %1008
  %1075 = load i32, ptr %35, align 4, !tbaa !9
  %1076 = icmp eq i32 %1075, 0
  br i1 %1076, label %1077, label %1088

1077:                                             ; preds = %1074
  %1078 = load ptr, ptr @LODEPNG_VERSION_STRING, align 8, !tbaa !5
  %1079 = call i32 @addChunk_tEXt(ptr noundef %16, ptr noundef @.str.16, ptr noundef %1078)
  %1080 = load ptr, ptr %13, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.LodePNGState, ptr %1080, i32 0, i32 4
  store i32 %1079, ptr %1081, align 8, !tbaa !13
  %1082 = load ptr, ptr %13, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.LodePNGState, ptr %1082, i32 0, i32 4
  %1084 = load i32, ptr %1083, align 8, !tbaa !13
  %1085 = icmp ne i32 %1084, 0
  br i1 %1085, label %1086, label %1087

1086:                                             ; preds = %1077
  store i32 2, ptr %26, align 4
  br label %1089

1087:                                             ; preds = %1077
  br label %1088

1088:                                             ; preds = %1087, %1074
  store i32 0, ptr %26, align 4
  br label %1089

1089:                                             ; preds = %1088, %1086
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #2
  %1090 = load i32, ptr %26, align 4
  switch i32 %1090, label %1191 [
    i32 0, label %1091
  ]

1091:                                             ; preds = %1089
  br label %1092

1092:                                             ; preds = %1091, %1001
  store i64 0, ptr %34, align 8, !tbaa !11
  br label %1093

1093:                                             ; preds = %1157, %1092
  %1094 = load i64, ptr %34, align 8, !tbaa !11
  %1095 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 11
  %1096 = load i64, ptr %1095, align 8, !tbaa !63
  %1097 = icmp ne i64 %1094, %1096
  br i1 %1097, label %1098, label %1160

1098:                                             ; preds = %1093
  %1099 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 12
  %1100 = load ptr, ptr %1099, align 8, !tbaa !64
  %1101 = load i64, ptr %34, align 8, !tbaa !11
  %1102 = getelementptr inbounds ptr, ptr %1100, i64 %1101
  %1103 = load ptr, ptr %1102, align 8, !tbaa !5
  %1104 = call i64 @lodepng_strlen(ptr noundef %1103)
  %1105 = icmp ugt i64 %1104, 79
  br i1 %1105, label %1106, label %1109

1106:                                             ; preds = %1098
  %1107 = load ptr, ptr %13, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.LodePNGState, ptr %1107, i32 0, i32 4
  store i32 66, ptr %1108, align 8, !tbaa !13
  store i32 2, ptr %26, align 4
  br label %1191

1109:                                             ; preds = %1098
  %1110 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 12
  %1111 = load ptr, ptr %1110, align 8, !tbaa !64
  %1112 = load i64, ptr %34, align 8, !tbaa !11
  %1113 = getelementptr inbounds ptr, ptr %1111, i64 %1112
  %1114 = load ptr, ptr %1113, align 8, !tbaa !5
  %1115 = call i64 @lodepng_strlen(ptr noundef %1114)
  %1116 = icmp ult i64 %1115, 1
  br i1 %1116, label %1117, label %1120

1117:                                             ; preds = %1109
  %1118 = load ptr, ptr %13, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.LodePNGState, ptr %1118, i32 0, i32 4
  store i32 67, ptr %1119, align 8, !tbaa !13
  store i32 2, ptr %26, align 4
  br label %1191

1120:                                             ; preds = %1109
  %1121 = load ptr, ptr %13, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.LodePNGState, ptr %1121, i32 0, i32 1
  %1123 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %1122, i32 0, i32 7
  %1124 = load i32, ptr %1123, align 8, !tbaa !56
  %1125 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 12
  %1126 = load ptr, ptr %1125, align 8, !tbaa !64
  %1127 = load i64, ptr %34, align 8, !tbaa !11
  %1128 = getelementptr inbounds ptr, ptr %1126, i64 %1127
  %1129 = load ptr, ptr %1128, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 13
  %1131 = load ptr, ptr %1130, align 8, !tbaa !65
  %1132 = load i64, ptr %34, align 8, !tbaa !11
  %1133 = getelementptr inbounds ptr, ptr %1131, i64 %1132
  %1134 = load ptr, ptr %1133, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 14
  %1136 = load ptr, ptr %1135, align 8, !tbaa !66
  %1137 = load i64, ptr %34, align 8, !tbaa !11
  %1138 = getelementptr inbounds ptr, ptr %1136, i64 %1137
  %1139 = load ptr, ptr %1138, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 15
  %1141 = load ptr, ptr %1140, align 8, !tbaa !67
  %1142 = load i64, ptr %34, align 8, !tbaa !11
  %1143 = getelementptr inbounds ptr, ptr %1141, i64 %1142
  %1144 = load ptr, ptr %1143, align 8, !tbaa !5
  %1145 = load ptr, ptr %13, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.LodePNGState, ptr %1145, i32 0, i32 1
  %1147 = getelementptr inbounds %struct.LodePNGEncoderSettings, ptr %1146, i32 0, i32 0
  %1148 = call i32 @addChunk_iTXt(ptr noundef %16, i32 noundef %1124, ptr noundef %1129, ptr noundef %1134, ptr noundef %1139, ptr noundef %1144, ptr noundef %1147)
  %1149 = load ptr, ptr %13, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.LodePNGState, ptr %1149, i32 0, i32 4
  store i32 %1148, ptr %1150, align 8, !tbaa !13
  %1151 = load ptr, ptr %13, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.LodePNGState, ptr %1151, i32 0, i32 4
  %1153 = load i32, ptr %1152, align 8, !tbaa !13
  %1154 = icmp ne i32 %1153, 0
  br i1 %1154, label %1155, label %1156

1155:                                             ; preds = %1120
  store i32 2, ptr %26, align 4
  br label %1191

1156:                                             ; preds = %1120
  br label %1157

1157:                                             ; preds = %1156
  %1158 = load i64, ptr %34, align 8, !tbaa !11
  %1159 = add i64 %1158, 1
  store i64 %1159, ptr %34, align 8, !tbaa !11
  br label %1093, !llvm.loop !68

1160:                                             ; preds = %1093
  %1161 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 44
  %1162 = getelementptr inbounds [3 x ptr], ptr %1161, i64 0, i64 2
  %1163 = load ptr, ptr %1162, align 8, !tbaa !5
  %1164 = icmp ne ptr %1163, null
  br i1 %1164, label %1165, label %1181

1165:                                             ; preds = %1160
  %1166 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 44
  %1167 = getelementptr inbounds [3 x ptr], ptr %1166, i64 0, i64 2
  %1168 = load ptr, ptr %1167, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.LodePNGInfo, ptr %17, i32 0, i32 45
  %1170 = getelementptr inbounds [3 x i64], ptr %1169, i64 0, i64 2
  %1171 = load i64, ptr %1170, align 8, !tbaa !11
  %1172 = call i32 @addUnknownChunks(ptr noundef %16, ptr noundef %1168, i64 noundef %1171)
  %1173 = load ptr, ptr %13, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.LodePNGState, ptr %1173, i32 0, i32 4
  store i32 %1172, ptr %1174, align 8, !tbaa !13
  %1175 = load ptr, ptr %13, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.LodePNGState, ptr %1175, i32 0, i32 4
  %1177 = load i32, ptr %1176, align 8, !tbaa !13
  %1178 = icmp ne i32 %1177, 0
  br i1 %1178, label %1179, label %1180

1179:                                             ; preds = %1165
  store i32 2, ptr %26, align 4
  br label %1191

1180:                                             ; preds = %1165
  br label %1181

1181:                                             ; preds = %1180, %1160
  %1182 = call i32 @addChunk_IEND(ptr noundef %16)
  %1183 = load ptr, ptr %13, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.LodePNGState, ptr %1183, i32 0, i32 4
  store i32 %1182, ptr %1184, align 8, !tbaa !13
  %1185 = load ptr, ptr %13, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct.LodePNGState, ptr %1185, i32 0, i32 4
  %1187 = load i32, ptr %1186, align 8, !tbaa !13
  %1188 = icmp ne i32 %1187, 0
  br i1 %1188, label %1189, label %1190

1189:                                             ; preds = %1181
  store i32 2, ptr %26, align 4
  br label %1191

1190:                                             ; preds = %1181
  store i32 0, ptr %26, align 4
  br label %1191

1191:                                             ; preds = %1190, %1189, %1179, %1155, %1117, %1106, %1089, %995, %975, %945, %934, %918, %904, %889, %868, %854, %841, %830, %803, %787, %772, %758, %744, %730, %713, %693, %674
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #2
  %1192 = load i32, ptr %26, align 4
  switch i32 %1192, label %1205 [
    i32 0, label %1193
    i32 2, label %1194
  ]

1193:                                             ; preds = %1191
  br label %1194

1194:                                             ; preds = %1193, %1191, %664, %648, %579, %521, %120, %103, %84, %76, %66
  call void @lodepng_info_cleanup(ptr noundef %17)
  %1195 = load ptr, ptr %14, align 8, !tbaa !5
  call void @lodepng_free(ptr noundef %1195)
  call void @lodepng_color_mode_cleanup(ptr noundef %19)
  %1196 = getelementptr inbounds %struct.ucvector, ptr %16, i32 0, i32 0
  %1197 = load ptr, ptr %1196, align 8, !tbaa !69
  %1198 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1197, ptr %1198, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.ucvector, ptr %16, i32 0, i32 1
  %1200 = load i64, ptr %1199, align 8, !tbaa !71
  %1201 = load ptr, ptr %9, align 8, !tbaa !5
  store i64 %1200, ptr %1201, align 8, !tbaa !11
  %1202 = load ptr, ptr %13, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.LodePNGState, ptr %1202, i32 0, i32 4
  %1204 = load i32, ptr %1203, align 8, !tbaa !13
  store i32 %1204, ptr %7, align 4
  store i32 1, ptr %26, align 4
  br label %1205

1205:                                             ; preds = %1194, %1191, %648, %579, %521
  call void @llvm.lifetime.end.p0(i64 40, ptr %19) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #2
  call void @llvm.lifetime.end.p0(i64 328, ptr %17) #2
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #2
  %1206 = load i32, ptr %7, align 4
  ret i32 %1206

1207:                                             ; preds = %1068
  unreachable
}

; Function Attrs: nounwind uwtable
declare hidden i32 @isGrayICCProfile(ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @isRGBICCProfile(ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @lodepng_color_stats_add(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @auto_choose_color(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @preProcessScanlines(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @writeSignature(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_IHDR(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addUnknownChunks(ptr noundef, ptr noundef, i64 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_iCCP(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_sRGB(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_gAMA(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_cHRM(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_sBIT(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_PLTE(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_tRNS(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_bKGD(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_pHYs(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_IDAT(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_tIME(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_zTXt(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_tEXt(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_iTXt(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_IEND(ptr noundef) #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !10, i64 536}
!14 = !{!"LodePNGState", !15, i64 0, !17, i64 80, !19, i64 168, !20, i64 208, !10, i64 536}
!15 = !{!"LodePNGDecoderSettings", !16, i64 0, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !12, i64 64, !12, i64 72}
!16 = !{!"LodePNGDecompressSettings", !10, i64 0, !10, i64 4, !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!17 = !{!"LodePNGEncoderSettings", !18, i64 0, !10, i64 48, !10, i64 52, !10, i64 56, !6, i64 64, !10, i64 72, !10, i64 76, !10, i64 80}
!18 = !{!"LodePNGCompressSettings", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !6, i64 40}
!19 = !{!"LodePNGColorMode", !10, i64 0, !10, i64 4, !6, i64 8, !12, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36}
!20 = !{!"LodePNGInfo", !10, i64 0, !10, i64 4, !10, i64 8, !19, i64 16, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !12, i64 72, !6, i64 80, !6, i64 88, !12, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !10, i64 136, !21, i64 140, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !6, i64 240, !6, i64 248, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !7, i64 280, !7, i64 304}
!21 = !{!"LodePNGTime", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!22 = !{!20, !10, i64 16}
!23 = !{!14, !10, i64 152}
!24 = !{!20, !12, i64 32}
!25 = !{!14, !10, i64 80}
!26 = !{!20, !10, i64 8}
!27 = !{!20, !10, i64 20}
!28 = !{!14, !10, i64 168}
!29 = !{!14, !10, i64 172}
!30 = !{!14, !10, i64 128}
!31 = !{!20, !10, i64 232}
!32 = !{!20, !6, i64 248}
!33 = !{!20, !10, i64 256}
!34 = !{!35, !10, i64 1064}
!35 = !{!"LodePNGColorStats", !10, i64 0, !10, i64 4, !36, i64 8, !36, i64 10, !36, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !10, i64 1048, !12, i64 1056, !10, i64 1064, !10, i64 1068}
!36 = !{!"short", !7, i64 0}
!37 = !{!35, !10, i64 1068}
!38 = !{!20, !10, i64 56}
!39 = !{!20, !10, i64 60}
!40 = !{!20, !10, i64 64}
!41 = !{!20, !10, i64 68}
!42 = !{!20, !10, i64 260}
!43 = !{!20, !10, i64 264}
!44 = !{!20, !10, i64 268}
!45 = !{!20, !10, i64 272}
!46 = !{!20, !10, i64 276}
!47 = !{!19, !10, i64 0}
!48 = !{!19, !10, i64 4}
!49 = !{!20, !10, i64 224}
!50 = !{!20, !10, i64 180}
!51 = !{!20, !10, i64 188}
!52 = !{!20, !10, i64 164}
!53 = !{!20, !10, i64 136}
!54 = !{!20, !12, i64 72}
!55 = !{!20, !6, i64 80}
!56 = !{!14, !10, i64 160}
!57 = !{!20, !6, i64 88}
!58 = distinct !{!58, !59}
!59 = !{!"llvm.loop.mustprogress"}
!60 = !{!14, !10, i64 156}
!61 = !{!7, !7, i64 0}
!62 = distinct !{!62, !59}
!63 = !{!20, !12, i64 96}
!64 = !{!20, !6, i64 104}
!65 = !{!20, !6, i64 112}
!66 = !{!20, !6, i64 120}
!67 = !{!20, !6, i64 128}
!68 = distinct !{!68, !59}
!69 = !{!70, !6, i64 0}
!70 = !{!"ucvector", !6, i64 0, !12, i64 8, !12, i64 16}
!71 = !{!70, !12, i64 8}


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

%struct.ucvector = type { ptr, i64, i64 }
%struct.LodePNGColorMode = type { i32, i32, ptr, i64, i32, i32, i32, i32 }
%struct.LodePNGInfo = type { i32, i32, i32, %struct.LodePNGColorMode, i32, i32, i32, i32, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, i32, %struct.LodePNGTime, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, [3 x ptr], [3 x i64] }
%struct.LodePNGTime = type { i32, i32, i32, i32, i32, i32 }
%struct.LodePNGColorStats = type { i32, i32, i16, i16, i16, i32, i32, [1024 x i8], i32, i64, i32, i32 }

@LODEPNG_VERSION_STRING = external dso_local local_unnamed_addr global ptr, align 8
@.str.16 = external hidden unnamed_addr constant [8 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: nounwind uwtable
declare hidden ptr @lodepng_malloc(i64 noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare hidden void @lodepng_free(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden void @ucvector_init(ptr dead_on_unwind noalias writable sret(%struct.ucvector) align 8, ptr noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i64 @lodepng_strlen(ptr noundef) local_unnamed_addr #1

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @lodepng_color_mode_copy(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @lodepng_color_mode_make(ptr dead_on_unwind noalias writable sret(%struct.LodePNGColorMode) align 8, i32 noundef, i32 noundef) local_unnamed_addr #1

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @lodepng_info_copy(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @lodepng_convert(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @lodepng_color_mode_equal(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @lodepng_convert_rgb(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @lodepng_compute_color_stats(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @checkColorValidity(i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local i32 @lodepng_encode(ptr nocapture noundef writeonly %0, ptr nocapture noundef writeonly %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef %5) local_unnamed_addr #1 {
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca %struct.ucvector, align 8
  %10 = alloca %struct.LodePNGInfo, align 8
  %11 = alloca %struct.LodePNGColorMode, align 8
  %12 = alloca %struct.LodePNGColorStats, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.LodePNGColorMode, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #3
  store ptr null, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #3
  store i64 0, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #3
  call void @ucvector_init(ptr dead_on_unwind nonnull writable sret(%struct.ucvector) align 8 %9, ptr noundef null, i64 noundef 0)
  call void @llvm.lifetime.start.p0(i64 328, ptr nonnull %10) #3
  %17 = getelementptr inbounds i8, ptr %5, i64 208
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #3
  call void @lodepng_info_init(ptr noundef nonnull %10)
  call void @lodepng_color_mode_init(ptr noundef nonnull %11)
  store ptr null, ptr %0, align 8, !tbaa !5
  store i64 0, ptr %1, align 8, !tbaa !9
  %18 = getelementptr inbounds i8, ptr %5, i64 536
  store i32 0, ptr %18, align 8, !tbaa !11
  %19 = getelementptr inbounds i8, ptr %5, i64 224
  %20 = load i32, ptr %19, align 8, !tbaa !21
  %21 = icmp eq i32 %20, 3
  br i1 %21, label %25, label %22

22:                                               ; preds = %6
  %23 = getelementptr inbounds i8, ptr %5, i64 152
  %24 = load i32, ptr %23, align 8, !tbaa !22
  %.not = icmp eq i32 %24, 0
  br i1 %.not, label %30, label %25

25:                                               ; preds = %22, %6
  %26 = getelementptr inbounds i8, ptr %5, i64 240
  %27 = load i64, ptr %26, align 8, !tbaa !23
  %28 = add i64 %27, -257
  %or.cond372 = icmp ult i64 %28, -256
  br i1 %or.cond372, label %29, label %30

29:                                               ; preds = %25
  store i32 68, ptr %18, align 8, !tbaa !11
  br label %.thread403

30:                                               ; preds = %25, %22
  %31 = getelementptr inbounds i8, ptr %5, i64 80
  %32 = load i32, ptr %31, align 8, !tbaa !24
  %33 = icmp ugt i32 %32, 2
  br i1 %33, label %34, label %35

34:                                               ; preds = %30
  store i32 61, ptr %18, align 8, !tbaa !11
  br label %.thread403

35:                                               ; preds = %30
  %36 = getelementptr inbounds i8, ptr %5, i64 216
  %37 = load i32, ptr %36, align 8, !tbaa !25
  %38 = icmp ugt i32 %37, 1
  br i1 %38, label %39, label %40

39:                                               ; preds = %35
  store i32 71, ptr %18, align 8, !tbaa !11
  br label %.thread403

40:                                               ; preds = %35
  %41 = getelementptr inbounds i8, ptr %5, i64 228
  %42 = load i32, ptr %41, align 4, !tbaa !26
  %43 = call i32 @checkColorValidity(i32 noundef %20, i32 noundef %42)
  store i32 %43, ptr %18, align 8, !tbaa !11
  %.not306 = icmp eq i32 %43, 0
  br i1 %.not306, label %44, label %.thread403

44:                                               ; preds = %40
  %45 = getelementptr inbounds i8, ptr %5, i64 168
  %46 = load i32, ptr %45, align 8, !tbaa !27
  %47 = getelementptr inbounds i8, ptr %5, i64 172
  %48 = load i32, ptr %47, align 4, !tbaa !28
  %49 = call i32 @checkColorValidity(i32 noundef %46, i32 noundef %48)
  store i32 %49, ptr %18, align 8, !tbaa !11
  %.not307 = icmp eq i32 %49, 0
  br i1 %.not307, label %50, label %.thread403

50:                                               ; preds = %44
  %51 = call i32 @lodepng_info_copy(ptr noundef nonnull %10, ptr noundef nonnull %17)
  %52 = getelementptr inbounds i8, ptr %5, i64 128
  %53 = load i32, ptr %52, align 8, !tbaa !29
  %.not308 = icmp eq i32 %53, 0
  br i1 %.not308, label %163, label %54

54:                                               ; preds = %50
  call void @llvm.lifetime.start.p0(i64 1072, ptr nonnull %12) #3
  call void @lodepng_color_stats_init(ptr noundef nonnull %12)
  %55 = getelementptr inbounds i8, ptr %5, i64 440
  %56 = load i32, ptr %55, align 8, !tbaa !30
  %.not309 = icmp eq i32 %56, 0
  br i1 %.not309, label %.thread, label %57

57:                                               ; preds = %54
  %58 = getelementptr inbounds i8, ptr %5, i64 456
  %59 = load ptr, ptr %58, align 8, !tbaa !31
  %60 = getelementptr inbounds i8, ptr %5, i64 464
  %61 = load i32, ptr %60, align 8, !tbaa !32
  %62 = call i32 @isGrayICCProfile(ptr noundef %59, i32 noundef %61)
  %.not310 = icmp eq i32 %62, 0
  br i1 %.not310, label %65, label %63

63:                                               ; preds = %57
  %64 = getelementptr inbounds i8, ptr %12, i64 1064
  store i32 0, ptr %64, align 8, !tbaa !33
  br label %65

65:                                               ; preds = %63, %57
  %.pr = load i32, ptr %55, align 8, !tbaa !30
  %.not311 = icmp eq i32 %.pr, 0
  br i1 %.not311, label %.thread, label %66

66:                                               ; preds = %65
  %67 = load ptr, ptr %58, align 8, !tbaa !31
  %68 = load i32, ptr %60, align 8, !tbaa !32
  %69 = call i32 @isRGBICCProfile(ptr noundef %67, i32 noundef %68)
  %.not312 = icmp eq i32 %69, 0
  br i1 %.not312, label %.thread, label %70

70:                                               ; preds = %66
  %71 = getelementptr inbounds i8, ptr %12, i64 1068
  store i32 0, ptr %71, align 4, !tbaa !36
  br label %.thread

.thread:                                          ; preds = %54, %70, %66, %65
  %72 = call i32 @lodepng_compute_color_stats(ptr noundef nonnull %12, ptr noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef nonnull %45)
  store i32 %72, ptr %18, align 8, !tbaa !11
  %.not313 = icmp eq i32 %72, 0
  br i1 %.not313, label %73, label %.thread399

73:                                               ; preds = %.thread
  %74 = getelementptr inbounds i8, ptr %5, i64 264
  %75 = load i32, ptr %74, align 8, !tbaa !37
  %.not314 = icmp eq i32 %75, 0
  br i1 %.not314, label %88, label %76

76:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #3
  store i32 0, ptr %13, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #3
  store i32 0, ptr %14, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #3
  store i32 0, ptr %15, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %16) #3
  call void @lodepng_color_mode_make(ptr dead_on_unwind nonnull writable sret(%struct.LodePNGColorMode) align 8 %16, i32 noundef 2, i32 noundef 16)
  %77 = getelementptr inbounds i8, ptr %5, i64 268
  %78 = load i32, ptr %77, align 4, !tbaa !39
  %79 = getelementptr inbounds i8, ptr %5, i64 272
  %80 = load i32, ptr %79, align 8, !tbaa !40
  %81 = getelementptr inbounds i8, ptr %5, i64 276
  %82 = load i32, ptr %81, align 4, !tbaa !41
  %83 = call i32 @lodepng_convert_rgb(ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15, i32 noundef %78, i32 noundef %80, i32 noundef %82, ptr noundef nonnull %16, ptr noundef nonnull %19)
  %84 = load i32, ptr %13, align 4, !tbaa !38
  %85 = load i32, ptr %14, align 4, !tbaa !38
  %86 = load i32, ptr %15, align 4, !tbaa !38
  %87 = call i32 @lodepng_color_stats_add(ptr noundef nonnull %12, i32 noundef %84, i32 noundef %85, i32 noundef %86, i32 noundef 65535)
  store i32 %87, ptr %18, align 8, !tbaa !11
  %.not315 = icmp eq i32 %87, 0
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #3
  br i1 %.not315, label %88, label %162

88:                                               ; preds = %76, %73
  %89 = call i32 @auto_choose_color(ptr noundef nonnull %11, ptr noundef nonnull %45, ptr noundef nonnull %12)
  store i32 %89, ptr %18, align 8, !tbaa !11
  %.not316 = icmp eq i32 %89, 0
  br i1 %.not316, label %90, label %.thread399

90:                                               ; preds = %88
  %91 = getelementptr inbounds i8, ptr %5, i64 468
  %92 = load i32, ptr %91, align 4, !tbaa !42
  %.not317 = icmp eq i32 %92, 0
  br i1 %.not317, label %135, label %.thread391

.thread391:                                       ; preds = %90
  %93 = getelementptr inbounds i8, ptr %5, i64 472
  %94 = load i32, ptr %93, align 8, !tbaa !43
  %95 = getelementptr inbounds i8, ptr %5, i64 476
  %96 = load i32, ptr %95, align 4, !tbaa !44
  %.373 = call i32 @llvm.umax.i32(i32 %94, i32 %96)
  %97 = getelementptr inbounds i8, ptr %5, i64 480
  %98 = load i32, ptr %97, align 8, !tbaa !45
  %99 = getelementptr inbounds i8, ptr %5, i64 484
  %100 = load i32, ptr %99, align 4, !tbaa !46
  %.373. = call i32 @llvm.umax.i32(i32 %.373, i32 %98)
  %spec.select425 = call i32 @llvm.umax.i32(i32 %.373., i32 %100)
  %.not318 = icmp eq i32 %96, 0
  %101 = icmp eq i32 %96, %94
  %or.cond426 = or i1 %.not318, %101
  br i1 %or.cond426, label %102, label %106

102:                                              ; preds = %.thread391
  %.not319 = icmp eq i32 %98, 0
  %103 = icmp eq i32 %98, %94
  %or.cond427 = or i1 %.not319, %103
  br i1 %or.cond427, label %104, label %106

104:                                              ; preds = %102
  %.not320 = icmp eq i32 %100, 0
  %105 = icmp eq i32 %100, %94
  %spec.select428 = or i1 %.not320, %105
  br label %106

106:                                              ; preds = %104, %102, %.thread391
  %107 = phi i1 [ false, %.thread391 ], [ false, %102 ], [ %spec.select428, %104 ]
  %108 = getelementptr inbounds i8, ptr %10, i64 16
  %109 = load i32, ptr %108, align 8
  %110 = icmp eq i32 %109, 3
  %111 = load i32, ptr %11, align 8
  %112 = icmp eq i32 %111, 3
  %or.cond = select i1 %110, i1 %112, i1 false
  %113 = icmp eq i32 %109, 2
  %or.cond6 = select i1 %113, i1 %112, i1 false
  %114 = icmp ult i32 %spec.select425, 9
  %or.cond8 = and i1 %114, %or.cond6
  %115 = icmp eq i32 %109, 6
  %or.cond11 = select i1 %115, i1 %112, i1 false
  %116 = icmp eq i32 %100, 8
  %or.cond13 = and i1 %116, %114
  %117 = select i1 %or.cond11, i1 %or.cond13, i1 false
  %118 = select i1 %117, i1 true, i1 %or.cond8
  %narrow430 = select i1 %118, i1 true, i1 %or.cond
  %.2280 = zext i1 %narrow430 to i32
  %119 = and i32 %109, -5
  %or.cond17 = icmp eq i32 %119, 2
  %120 = getelementptr inbounds i8, ptr %10, i64 20
  %121 = load i32, ptr %120, align 4
  %122 = icmp eq i32 %121, 16
  %or.cond21 = select i1 %or.cond17, i1 %122, i1 false
  br i1 %or.cond21, label %123, label %128

123:                                              ; preds = %106
  %124 = icmp eq i32 %111, %109
  %125 = getelementptr inbounds i8, ptr %11, i64 4
  %126 = load i32, ptr %125, align 4
  %127 = icmp eq i32 %126, 8
  %or.cond24 = select i1 %124, i1 %127, i1 false
  %or.cond26 = and i1 %114, %or.cond24
  %spec.select378 = select i1 %or.cond26, i32 1, i32 %.2280
  br label %128

128:                                              ; preds = %123, %106
  %.3 = phi i32 [ %.2280, %106 ], [ %spec.select378, %123 ]
  %129 = icmp ne i32 %109, 3
  %130 = icmp ne i32 %111, 3
  %or.cond29 = select i1 %129, i1 %130, i1 false
  %or.cond31 = select i1 %or.cond29, i1 %107, i1 false
  br i1 %or.cond31, label %131, label %135

131:                                              ; preds = %128
  %132 = getelementptr inbounds i8, ptr %11, i64 4
  %133 = load i32, ptr %132, align 4, !tbaa !47
  %134 = icmp eq i32 %94, %133
  %spec.select379 = select i1 %134, i32 1, i32 %.3
  br label %135

135:                                              ; preds = %131, %128, %90
  %.5 = phi i32 [ 1, %90 ], [ %.3, %128 ], [ %spec.select379, %131 ]
  %136 = getelementptr inbounds i8, ptr %5, i64 152
  %137 = load i32, ptr %136, align 8, !tbaa !22
  %.not321 = icmp eq i32 %137, 0
  br i1 %.not321, label %145, label %138

138:                                              ; preds = %135
  %139 = getelementptr inbounds i8, ptr %10, i64 16
  %140 = load i32, ptr %139, align 8
  %141 = and i32 %140, -5
  %or.cond35.not = icmp eq i32 %141, 0
  br i1 %or.cond35.not, label %145, label %142

142:                                              ; preds = %138
  %143 = load i32, ptr %11, align 8
  %144 = and i32 %143, -5
  %or.cond38 = icmp eq i32 %144, 0
  %.not322 = icmp eq i32 %.5, 0
  %or.cond429 = select i1 %or.cond38, i1 true, i1 %.not322
  br i1 %or.cond429, label %.thread395, label %146

145:                                              ; preds = %138, %135
  %.not322.old = icmp eq i32 %.5, 0
  br i1 %.not322.old, label %.thread395, label %146

146:                                              ; preds = %142, %145
  %147 = getelementptr inbounds i8, ptr %10, i64 16
  %148 = call i32 @lodepng_color_mode_copy(ptr noundef nonnull %147, ptr noundef nonnull %11)
  %149 = load i32, ptr %74, align 8, !tbaa !37
  %.not323 = icmp eq i32 %149, 0
  br i1 %.not323, label %.thread395, label %150

150:                                              ; preds = %146
  %151 = getelementptr inbounds i8, ptr %10, i64 60
  %152 = getelementptr inbounds i8, ptr %10, i64 64
  %153 = getelementptr inbounds i8, ptr %10, i64 68
  %154 = getelementptr inbounds i8, ptr %5, i64 268
  %155 = load i32, ptr %154, align 4, !tbaa !39
  %156 = getelementptr inbounds i8, ptr %5, i64 272
  %157 = load i32, ptr %156, align 8, !tbaa !40
  %158 = getelementptr inbounds i8, ptr %5, i64 276
  %159 = load i32, ptr %158, align 4, !tbaa !41
  %160 = call i32 @lodepng_convert_rgb(ptr noundef nonnull %151, ptr noundef nonnull %152, ptr noundef nonnull %153, i32 noundef %155, i32 noundef %157, i32 noundef %159, ptr noundef nonnull %147, ptr noundef nonnull %19)
  %.not324 = icmp eq i32 %160, 0
  br i1 %.not324, label %.thread395, label %161

161:                                              ; preds = %150
  store i32 104, ptr %18, align 8, !tbaa !11
  br label %.thread399

.thread395:                                       ; preds = %146, %150, %145, %142
  call void @llvm.lifetime.end.p0(i64 1072, ptr nonnull %12) #3
  br label %163

.thread399:                                       ; preds = %161, %.thread, %88
  call void @llvm.lifetime.end.p0(i64 1072, ptr nonnull %12) #3
  br label %.thread403

162:                                              ; preds = %76
  call void @llvm.lifetime.end.p0(i64 1072, ptr nonnull %12) #3
  br label %.thread403

163:                                              ; preds = %.thread395, %50
  %164 = getelementptr inbounds i8, ptr %5, i64 440
  %165 = load i32, ptr %164, align 8, !tbaa !30
  %.not325 = icmp eq i32 %165, 0
  br i1 %.not325, label %187, label %166

166:                                              ; preds = %163
  %167 = getelementptr inbounds i8, ptr %5, i64 456
  %168 = load ptr, ptr %167, align 8, !tbaa !31
  %169 = getelementptr inbounds i8, ptr %5, i64 464
  %170 = load i32, ptr %169, align 8, !tbaa !32
  %171 = call i32 @isGrayICCProfile(ptr noundef %168, i32 noundef %170)
  %172 = load ptr, ptr %167, align 8, !tbaa !31
  %173 = load i32, ptr %169, align 8, !tbaa !32
  %174 = call i32 @isRGBICCProfile(ptr noundef %172, i32 noundef %173)
  %175 = icmp ne i32 %171, 0
  %176 = icmp ne i32 %174, 0
  %or.cond40 = select i1 %175, i1 true, i1 %176
  br i1 %or.cond40, label %178, label %177

177:                                              ; preds = %166
  store i32 100, ptr %18, align 8, !tbaa !11
  br label %.thread403

178:                                              ; preds = %166
  %179 = getelementptr inbounds i8, ptr %10, i64 16
  %180 = load i32, ptr %179, align 8
  %181 = and i32 %180, -5
  %182 = icmp eq i32 %181, 0
  %183 = zext i1 %182 to i32
  %.not326 = icmp eq i32 %171, %183
  br i1 %.not326, label %187, label %184

184:                                              ; preds = %178
  %185 = load i32, ptr %52, align 8, !tbaa !29
  %.not327 = icmp eq i32 %185, 0
  %186 = select i1 %.not327, i32 101, i32 102
  store i32 %186, ptr %18, align 8, !tbaa !11
  br label %.thread403

187:                                              ; preds = %178, %163
  %188 = getelementptr inbounds i8, ptr %10, i64 16
  %189 = call i32 @lodepng_color_mode_equal(ptr noundef nonnull %45, ptr noundef nonnull %188)
  %.not328 = icmp eq i32 %189, 0
  br i1 %.not328, label %190, label %208

190:                                              ; preds = %187
  %191 = zext i32 %3 to i64
  %192 = zext i32 %4 to i64
  %193 = mul nuw i64 %192, %191
  %194 = call i32 @lodepng_get_bpp(ptr noundef nonnull %188)
  %195 = zext i32 %194 to i64
  %196 = mul i64 %193, %195
  %197 = add i64 %196, 7
  %198 = lshr i64 %197, 3
  %199 = call ptr @lodepng_malloc(i64 noundef %198)
  %200 = icmp eq ptr %199, null
  %201 = icmp ugt i64 %197, 7
  %or.cond42 = and i1 %200, %201
  br i1 %or.cond42, label %.thread411.sink.split, label %202

202:                                              ; preds = %190
  %.pr407 = load i32, ptr %18, align 8, !tbaa !11
  %.not329 = icmp eq i32 %.pr407, 0
  br i1 %.not329, label %203, label %.thread411

203:                                              ; preds = %202
  %204 = call i32 @lodepng_convert(ptr noundef %199, ptr noundef %2, ptr noundef nonnull %188, ptr noundef nonnull %45, i32 noundef %3, i32 noundef %4)
  store i32 %204, ptr %18, align 8, !tbaa !11
  %.not330 = icmp eq i32 %204, 0
  br i1 %.not330, label %205, label %.thread411

205:                                              ; preds = %203
  %206 = call i32 @preProcessScanlines(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef %199, i32 noundef %3, i32 noundef %4, ptr noundef nonnull %10, ptr noundef nonnull %31)
  br label %.thread411.sink.split

.thread411.sink.split:                            ; preds = %190, %205
  %.sink453 = phi i32 [ %206, %205 ], [ 83, %190 ]
  store i32 %.sink453, ptr %18, align 8, !tbaa !11
  br label %.thread411

.thread411:                                       ; preds = %.thread411.sink.split, %202, %203
  call void @lodepng_free(ptr noundef %199)
  %207 = load i32, ptr %18, align 8, !tbaa !11
  %.not331 = icmp eq i32 %207, 0
  br i1 %.not331, label %210, label %.thread403

208:                                              ; preds = %187
  %209 = call i32 @preProcessScanlines(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef nonnull %10, ptr noundef nonnull %31)
  store i32 %209, ptr %18, align 8, !tbaa !11
  %.not332 = icmp eq i32 %209, 0
  br i1 %.not332, label %210, label %.thread403

210:                                              ; preds = %.thread411, %208
  %211 = call i32 @writeSignature(ptr noundef nonnull %9)
  store i32 %211, ptr %18, align 8, !tbaa !11
  %.not333 = icmp eq i32 %211, 0
  br i1 %.not333, label %212, label %.thread403

212:                                              ; preds = %210
  %213 = load i32, ptr %188, align 8, !tbaa !21
  %214 = getelementptr inbounds i8, ptr %10, i64 20
  %215 = load i32, ptr %214, align 4, !tbaa !26
  %216 = getelementptr inbounds i8, ptr %10, i64 8
  %217 = load i32, ptr %216, align 8, !tbaa !25
  %218 = call i32 @addChunk_IHDR(ptr noundef nonnull %9, i32 noundef %3, i32 noundef %4, i32 noundef %213, i32 noundef %215, i32 noundef %217)
  store i32 %218, ptr %18, align 8, !tbaa !11
  %.not334 = icmp eq i32 %218, 0
  br i1 %.not334, label %219, label %.thread403

219:                                              ; preds = %212
  %220 = getelementptr inbounds i8, ptr %10, i64 280
  %221 = load ptr, ptr %220, align 8, !tbaa !5
  %.not335 = icmp eq ptr %221, null
  br i1 %.not335, label %226, label %222

222:                                              ; preds = %219
  %223 = getelementptr inbounds i8, ptr %10, i64 304
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = call i32 @addUnknownChunks(ptr noundef nonnull %9, ptr noundef nonnull %221, i64 noundef %224)
  store i32 %225, ptr %18, align 8, !tbaa !11
  %.not336 = icmp eq i32 %225, 0
  br i1 %.not336, label %226, label %.thread403

226:                                              ; preds = %222, %219
  %227 = getelementptr inbounds i8, ptr %10, i64 232
  %228 = load i32, ptr %227, align 8, !tbaa !30
  %.not337 = icmp eq i32 %228, 0
  br i1 %.not337, label %231, label %229

229:                                              ; preds = %226
  %230 = call i32 @addChunk_iCCP(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %31)
  store i32 %230, ptr %18, align 8, !tbaa !11
  %.not338 = icmp eq i32 %230, 0
  br i1 %.not338, label %231, label %.thread403

231:                                              ; preds = %229, %226
  %232 = getelementptr inbounds i8, ptr %10, i64 224
  %233 = load i32, ptr %232, align 8, !tbaa !48
  %.not339 = icmp eq i32 %233, 0
  br i1 %.not339, label %236, label %234

234:                                              ; preds = %231
  %235 = call i32 @addChunk_sRGB(ptr noundef nonnull %9, ptr noundef nonnull %10)
  store i32 %235, ptr %18, align 8, !tbaa !11
  %.not340 = icmp eq i32 %235, 0
  br i1 %.not340, label %236, label %.thread403

236:                                              ; preds = %234, %231
  %237 = getelementptr inbounds i8, ptr %10, i64 180
  %238 = load i32, ptr %237, align 4, !tbaa !49
  %.not341 = icmp eq i32 %238, 0
  br i1 %.not341, label %241, label %239

239:                                              ; preds = %236
  %240 = call i32 @addChunk_gAMA(ptr noundef nonnull %9, ptr noundef nonnull %10)
  store i32 %240, ptr %18, align 8, !tbaa !11
  %.not342 = icmp eq i32 %240, 0
  br i1 %.not342, label %241, label %.thread403

241:                                              ; preds = %239, %236
  %242 = getelementptr inbounds i8, ptr %10, i64 188
  %243 = load i32, ptr %242, align 4, !tbaa !50
  %.not343 = icmp eq i32 %243, 0
  br i1 %.not343, label %246, label %244

244:                                              ; preds = %241
  %245 = call i32 @addChunk_cHRM(ptr noundef nonnull %9, ptr noundef nonnull %10)
  store i32 %245, ptr %18, align 8, !tbaa !11
  %.not344 = icmp eq i32 %245, 0
  br i1 %.not344, label %246, label %.thread403

246:                                              ; preds = %244, %241
  %247 = getelementptr inbounds i8, ptr %5, i64 468
  %248 = load i32, ptr %247, align 4, !tbaa !42
  %.not345 = icmp eq i32 %248, 0
  br i1 %.not345, label %251, label %249

249:                                              ; preds = %246
  %250 = call i32 @addChunk_sBIT(ptr noundef nonnull %9, ptr noundef nonnull %10)
  store i32 %250, ptr %18, align 8, !tbaa !11
  %.not346 = icmp eq i32 %250, 0
  br i1 %.not346, label %251, label %.thread403

251:                                              ; preds = %249, %246
  %252 = load i32, ptr %188, align 8, !tbaa !21
  %253 = icmp eq i32 %252, 3
  br i1 %253, label %254, label %256

254:                                              ; preds = %251
  %255 = call i32 @addChunk_PLTE(ptr noundef nonnull %9, ptr noundef nonnull %188)
  store i32 %255, ptr %18, align 8, !tbaa !11
  %.not347 = icmp eq i32 %255, 0
  br i1 %.not347, label %256, label %.thread403

256:                                              ; preds = %254, %251
  %257 = getelementptr inbounds i8, ptr %5, i64 152
  %258 = load i32, ptr %257, align 8, !tbaa !22
  %.not348 = icmp eq i32 %258, 0
  br i1 %.not348, label %264, label %259

259:                                              ; preds = %256
  %260 = load i32, ptr %188, align 8
  %261 = and i32 %260, -5
  %or.cond46 = icmp eq i32 %261, 2
  br i1 %or.cond46, label %262, label %264

262:                                              ; preds = %259
  %263 = call i32 @addChunk_PLTE(ptr noundef nonnull %9, ptr noundef nonnull %188)
  store i32 %263, ptr %18, align 8, !tbaa !11
  %.not349 = icmp eq i32 %263, 0
  br i1 %.not349, label %264, label %.thread403

264:                                              ; preds = %262, %259, %256
  %265 = call i32 @addChunk_tRNS(ptr noundef nonnull %9, ptr noundef nonnull %188)
  store i32 %265, ptr %18, align 8, !tbaa !11
  %.not350 = icmp eq i32 %265, 0
  br i1 %.not350, label %266, label %.thread403

266:                                              ; preds = %264
  %267 = getelementptr inbounds i8, ptr %10, i64 56
  %268 = load i32, ptr %267, align 8, !tbaa !37
  %.not351 = icmp eq i32 %268, 0
  br i1 %.not351, label %271, label %269

269:                                              ; preds = %266
  %270 = call i32 @addChunk_bKGD(ptr noundef nonnull %9, ptr noundef nonnull %10)
  store i32 %270, ptr %18, align 8, !tbaa !11
  %.not352 = icmp eq i32 %270, 0
  br i1 %.not352, label %271, label %.thread403

271:                                              ; preds = %269, %266
  %272 = getelementptr inbounds i8, ptr %10, i64 164
  %273 = load i32, ptr %272, align 4, !tbaa !51
  %.not353 = icmp eq i32 %273, 0
  br i1 %.not353, label %276, label %274

274:                                              ; preds = %271
  %275 = call i32 @addChunk_pHYs(ptr noundef nonnull %9, ptr noundef nonnull %10)
  store i32 %275, ptr %18, align 8, !tbaa !11
  %.not354 = icmp eq i32 %275, 0
  br i1 %.not354, label %276, label %.thread403

276:                                              ; preds = %274, %271
  %277 = getelementptr inbounds i8, ptr %10, i64 288
  %278 = load ptr, ptr %277, align 8, !tbaa !5
  %.not355 = icmp eq ptr %278, null
  br i1 %.not355, label %283, label %279

279:                                              ; preds = %276
  %280 = getelementptr inbounds i8, ptr %10, i64 312
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = call i32 @addUnknownChunks(ptr noundef nonnull %9, ptr noundef nonnull %278, i64 noundef %281)
  store i32 %282, ptr %18, align 8, !tbaa !11
  %.not356 = icmp eq i32 %282, 0
  br i1 %.not356, label %283, label %.thread403

283:                                              ; preds = %279, %276
  %284 = load ptr, ptr %7, align 8, !tbaa !5
  %285 = load i64, ptr %8, align 8, !tbaa !9
  %286 = call i32 @addChunk_IDAT(ptr noundef nonnull %9, ptr noundef %284, i64 noundef %285, ptr noundef nonnull %31)
  store i32 %286, ptr %18, align 8, !tbaa !11
  %.not357 = icmp eq i32 %286, 0
  br i1 %.not357, label %287, label %.thread403

287:                                              ; preds = %283
  %288 = getelementptr inbounds i8, ptr %10, i64 136
  %289 = load i32, ptr %288, align 8, !tbaa !52
  %.not358 = icmp eq i32 %289, 0
  br i1 %.not358, label %293, label %290

290:                                              ; preds = %287
  %291 = getelementptr inbounds i8, ptr %10, i64 140
  %292 = call i32 @addChunk_tIME(ptr noundef nonnull %9, ptr noundef nonnull %291)
  store i32 %292, ptr %18, align 8, !tbaa !11
  %.not359 = icmp eq i32 %292, 0
  br i1 %.not359, label %293, label %.thread403

293:                                              ; preds = %290, %287
  %294 = getelementptr inbounds i8, ptr %10, i64 72
  %295 = load i64, ptr %294, align 8, !tbaa !53
  %.not360435 = icmp eq i64 %295, 0
  br i1 %.not360435, label %._crit_edge.thread, label %.lr.ph

.lr.ph:                                           ; preds = %293
  %296 = getelementptr inbounds i8, ptr %10, i64 80
  %297 = getelementptr inbounds i8, ptr %5, i64 160
  %298 = getelementptr inbounds i8, ptr %10, i64 88
  br label %299

299:                                              ; preds = %.lr.ph, %325
  %.0275436 = phi i64 [ 0, %.lr.ph ], [ %326, %325 ]
  %300 = load ptr, ptr %296, align 8, !tbaa !54
  %301 = getelementptr inbounds ptr, ptr %300, i64 %.0275436
  %302 = load ptr, ptr %301, align 8, !tbaa !5
  %303 = call i64 @lodepng_strlen(ptr noundef %302)
  %304 = icmp ugt i64 %303, 79
  br i1 %304, label %305, label %306

305:                                              ; preds = %299
  store i32 66, ptr %18, align 8, !tbaa !11
  br label %.thread403

306:                                              ; preds = %299
  %307 = load ptr, ptr %296, align 8, !tbaa !54
  %308 = getelementptr inbounds ptr, ptr %307, i64 %.0275436
  %309 = load ptr, ptr %308, align 8, !tbaa !5
  %310 = call i64 @lodepng_strlen(ptr noundef %309)
  %311 = icmp eq i64 %310, 0
  br i1 %311, label %312, label %313

312:                                              ; preds = %306
  store i32 67, ptr %18, align 8, !tbaa !11
  br label %.thread403

313:                                              ; preds = %306
  %314 = load i32, ptr %297, align 8, !tbaa !55
  %.not369 = icmp eq i32 %314, 0
  %315 = load ptr, ptr %296, align 8, !tbaa !54
  %316 = getelementptr inbounds ptr, ptr %315, i64 %.0275436
  %317 = load ptr, ptr %316, align 8, !tbaa !5
  %318 = load ptr, ptr %298, align 8, !tbaa !56
  %319 = getelementptr inbounds ptr, ptr %318, i64 %.0275436
  %320 = load ptr, ptr %319, align 8, !tbaa !5
  br i1 %.not369, label %323, label %321

321:                                              ; preds = %313
  %322 = call i32 @addChunk_zTXt(ptr noundef nonnull %9, ptr noundef %317, ptr noundef %320, ptr noundef nonnull %31)
  store i32 %322, ptr %18, align 8, !tbaa !11
  %.not371 = icmp eq i32 %322, 0
  br i1 %.not371, label %325, label %.thread403

323:                                              ; preds = %313
  %324 = call i32 @addChunk_tEXt(ptr noundef nonnull %9, ptr noundef %317, ptr noundef %320)
  store i32 %324, ptr %18, align 8, !tbaa !11
  %.not370 = icmp eq i32 %324, 0
  br i1 %.not370, label %325, label %.thread403

325:                                              ; preds = %321, %323
  %326 = add i64 %.0275436, 1
  %327 = load i64, ptr %294, align 8, !tbaa !53
  %.not360 = icmp eq i64 %326, %327
  br i1 %.not360, label %._crit_edge, label %299, !llvm.loop !57

._crit_edge:                                      ; preds = %325
  %328 = getelementptr inbounds i8, ptr %5, i64 156
  %329 = load i32, ptr %328, align 4, !tbaa !59
  %.not361 = icmp eq i32 %329, 0
  br i1 %.not361, label %.thread420, label %.preheader

._crit_edge.thread:                               ; preds = %293
  %330 = getelementptr inbounds i8, ptr %5, i64 156
  %331 = load i32, ptr %330, align 4, !tbaa !59
  %.not361448 = icmp eq i32 %331, 0
  br i1 %.not361448, label %.thread420, label %._crit_edge440

.preheader:                                       ; preds = %._crit_edge
  %.not362437 = icmp eq i64 %326, 0
  br i1 %.not362437, label %._crit_edge440, label %.lr.ph439

.lr.ph439:                                        ; preds = %.preheader
  %332 = getelementptr inbounds i8, ptr %10, i64 80
  %333 = load ptr, ptr %332, align 8, !tbaa !54
  br label %334

334:                                              ; preds = %.lr.ph439, %367
  %.1276438 = phi i64 [ 0, %.lr.ph439 ], [ %368, %367 ]
  %335 = getelementptr inbounds ptr, ptr %333, i64 %.1276438
  %336 = load ptr, ptr %335, align 8, !tbaa !5
  %337 = load i8, ptr %336, align 1, !tbaa !60
  %338 = icmp eq i8 %337, 76
  br i1 %338, label %339, label %367

339:                                              ; preds = %334
  %340 = getelementptr inbounds i8, ptr %336, i64 1
  %341 = load i8, ptr %340, align 1, !tbaa !60
  %342 = icmp eq i8 %341, 111
  br i1 %342, label %343, label %367

343:                                              ; preds = %339
  %344 = getelementptr inbounds i8, ptr %336, i64 2
  %345 = load i8, ptr %344, align 1, !tbaa !60
  %346 = icmp eq i8 %345, 100
  br i1 %346, label %347, label %367

347:                                              ; preds = %343
  %348 = getelementptr inbounds i8, ptr %336, i64 3
  %349 = load i8, ptr %348, align 1, !tbaa !60
  %350 = icmp eq i8 %349, 101
  br i1 %350, label %351, label %367

351:                                              ; preds = %347
  %352 = getelementptr inbounds i8, ptr %336, i64 4
  %353 = load i8, ptr %352, align 1, !tbaa !60
  %354 = icmp eq i8 %353, 80
  br i1 %354, label %355, label %367

355:                                              ; preds = %351
  %356 = getelementptr inbounds i8, ptr %336, i64 5
  %357 = load i8, ptr %356, align 1, !tbaa !60
  %358 = icmp eq i8 %357, 78
  br i1 %358, label %359, label %367

359:                                              ; preds = %355
  %360 = getelementptr inbounds i8, ptr %336, i64 6
  %361 = load i8, ptr %360, align 1, !tbaa !60
  %362 = icmp eq i8 %361, 71
  br i1 %362, label %363, label %367

363:                                              ; preds = %359
  %364 = getelementptr inbounds i8, ptr %336, i64 7
  %365 = load i8, ptr %364, align 1, !tbaa !60
  %366 = icmp eq i8 %365, 0
  br i1 %366, label %.thread420, label %367

367:                                              ; preds = %334, %339, %343, %347, %351, %355, %359, %363
  %368 = add nuw i64 %.1276438, 1
  %.not362 = icmp eq i64 %.1276438, %.0275436
  br i1 %.not362, label %._crit_edge440, label %334, !llvm.loop !61

._crit_edge440:                                   ; preds = %367, %._crit_edge.thread, %.preheader
  %369 = load ptr, ptr @LODEPNG_VERSION_STRING, align 8, !tbaa !5
  %370 = call i32 @addChunk_tEXt(ptr noundef nonnull %9, ptr noundef nonnull @.str.16, ptr noundef %369)
  store i32 %370, ptr %18, align 8, !tbaa !11
  %.not363 = icmp eq i32 %370, 0
  br i1 %.not363, label %.thread420, label %.thread403

.thread420:                                       ; preds = %363, %._crit_edge.thread, %._crit_edge440, %._crit_edge
  %371 = getelementptr inbounds i8, ptr %10, i64 96
  %372 = load i64, ptr %371, align 8, !tbaa !62
  %.not364441 = icmp eq i64 %372, 0
  br i1 %.not364441, label %._crit_edge444, label %.lr.ph443

.lr.ph443:                                        ; preds = %.thread420
  %373 = getelementptr inbounds i8, ptr %10, i64 104
  %374 = getelementptr inbounds i8, ptr %5, i64 160
  %375 = getelementptr inbounds i8, ptr %10, i64 112
  %376 = getelementptr inbounds i8, ptr %10, i64 120
  %377 = getelementptr inbounds i8, ptr %10, i64 128
  br label %381

378:                                              ; preds = %395
  %379 = add i64 %.2277442, 1
  %380 = load i64, ptr %371, align 8, !tbaa !62
  %.not364 = icmp eq i64 %379, %380
  br i1 %.not364, label %._crit_edge444, label %381, !llvm.loop !63

381:                                              ; preds = %.lr.ph443, %378
  %.2277442 = phi i64 [ 0, %.lr.ph443 ], [ %379, %378 ]
  %382 = load ptr, ptr %373, align 8, !tbaa !64
  %383 = getelementptr inbounds ptr, ptr %382, i64 %.2277442
  %384 = load ptr, ptr %383, align 8, !tbaa !5
  %385 = call i64 @lodepng_strlen(ptr noundef %384)
  %386 = icmp ugt i64 %385, 79
  br i1 %386, label %387, label %388

387:                                              ; preds = %381
  store i32 66, ptr %18, align 8, !tbaa !11
  br label %.thread403

388:                                              ; preds = %381
  %389 = load ptr, ptr %373, align 8, !tbaa !64
  %390 = getelementptr inbounds ptr, ptr %389, i64 %.2277442
  %391 = load ptr, ptr %390, align 8, !tbaa !5
  %392 = call i64 @lodepng_strlen(ptr noundef %391)
  %393 = icmp eq i64 %392, 0
  br i1 %393, label %394, label %395

394:                                              ; preds = %388
  store i32 67, ptr %18, align 8, !tbaa !11
  br label %.thread403

395:                                              ; preds = %388
  %396 = load i32, ptr %374, align 8, !tbaa !55
  %397 = load ptr, ptr %373, align 8, !tbaa !64
  %398 = getelementptr inbounds ptr, ptr %397, i64 %.2277442
  %399 = load ptr, ptr %398, align 8, !tbaa !5
  %400 = load ptr, ptr %375, align 8, !tbaa !65
  %401 = getelementptr inbounds ptr, ptr %400, i64 %.2277442
  %402 = load ptr, ptr %401, align 8, !tbaa !5
  %403 = load ptr, ptr %376, align 8, !tbaa !66
  %404 = getelementptr inbounds ptr, ptr %403, i64 %.2277442
  %405 = load ptr, ptr %404, align 8, !tbaa !5
  %406 = load ptr, ptr %377, align 8, !tbaa !67
  %407 = getelementptr inbounds ptr, ptr %406, i64 %.2277442
  %408 = load ptr, ptr %407, align 8, !tbaa !5
  %409 = call i32 @addChunk_iTXt(ptr noundef nonnull %9, i32 noundef %396, ptr noundef %399, ptr noundef %402, ptr noundef %405, ptr noundef %408, ptr noundef nonnull %31)
  store i32 %409, ptr %18, align 8, !tbaa !11
  %.not368 = icmp eq i32 %409, 0
  br i1 %.not368, label %378, label %.thread403

._crit_edge444:                                   ; preds = %378, %.thread420
  %410 = getelementptr inbounds i8, ptr %10, i64 296
  %411 = load ptr, ptr %410, align 8, !tbaa !5
  %.not365 = icmp eq ptr %411, null
  br i1 %.not365, label %416, label %412

412:                                              ; preds = %._crit_edge444
  %413 = getelementptr inbounds i8, ptr %10, i64 320
  %414 = load i64, ptr %413, align 8, !tbaa !9
  %415 = call i32 @addUnknownChunks(ptr noundef nonnull %9, ptr noundef nonnull %411, i64 noundef %414)
  store i32 %415, ptr %18, align 8, !tbaa !11
  %.not366 = icmp eq i32 %415, 0
  br i1 %.not366, label %416, label %.thread403

416:                                              ; preds = %412, %._crit_edge444
  %417 = call i32 @addChunk_IEND(ptr noundef nonnull %9)
  store i32 %417, ptr %18, align 8, !tbaa !11
  br label %.thread403

.thread403:                                       ; preds = %323, %321, %395, %416, %162, %177, %184, %29, %34, %39, %40, %44, %208, %.thread411, %.thread399, %._crit_edge440, %412, %290, %283, %279, %274, %269, %264, %262, %254, %249, %244, %239, %234, %229, %222, %212, %210, %394, %387, %312, %305
  call void @lodepng_info_cleanup(ptr noundef nonnull %10)
  %418 = load ptr, ptr %7, align 8, !tbaa !5
  call void @lodepng_free(ptr noundef %418)
  call void @lodepng_color_mode_cleanup(ptr noundef nonnull %11)
  %419 = load ptr, ptr %9, align 8, !tbaa !68
  store ptr %419, ptr %0, align 8, !tbaa !5
  %420 = getelementptr inbounds i8, ptr %9, i64 8
  %421 = load i64, ptr %420, align 8, !tbaa !70
  store i64 %421, ptr %1, align 8, !tbaa !9
  %422 = load i32, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #3
  call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %10) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #3
  ret i32 %422
}

; Function Attrs: nounwind uwtable
declare hidden i32 @isGrayICCProfile(ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @isRGBICCProfile(ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @lodepng_color_stats_add(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @auto_choose_color(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @preProcessScanlines(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @writeSignature(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_IHDR(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addUnknownChunks(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_iCCP(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_sRGB(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_gAMA(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_cHRM(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_sBIT(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_PLTE(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_tRNS(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_bKGD(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_pHYs(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_IDAT(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_tIME(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_zTXt(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_tEXt(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_iTXt(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @addChunk_IEND(ptr noundef) local_unnamed_addr #1

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !15, i64 536}
!12 = !{!"LodePNGState", !13, i64 0, !16, i64 80, !18, i64 168, !19, i64 208, !15, i64 536}
!13 = !{!"LodePNGDecoderSettings", !14, i64 0, !15, i64 40, !15, i64 44, !15, i64 48, !15, i64 52, !15, i64 56, !15, i64 60, !10, i64 64, !10, i64 72}
!14 = !{!"LodePNGDecompressSettings", !15, i64 0, !15, i64 4, !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!15 = !{!"int", !7, i64 0}
!16 = !{!"LodePNGEncoderSettings", !17, i64 0, !15, i64 48, !15, i64 52, !15, i64 56, !6, i64 64, !15, i64 72, !15, i64 76, !15, i64 80}
!17 = !{!"LodePNGCompressSettings", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !15, i64 16, !15, i64 20, !6, i64 24, !6, i64 32, !6, i64 40}
!18 = !{!"LodePNGColorMode", !15, i64 0, !15, i64 4, !6, i64 8, !10, i64 16, !15, i64 24, !15, i64 28, !15, i64 32, !15, i64 36}
!19 = !{!"LodePNGInfo", !15, i64 0, !15, i64 4, !15, i64 8, !18, i64 16, !15, i64 56, !15, i64 60, !15, i64 64, !15, i64 68, !10, i64 72, !6, i64 80, !6, i64 88, !10, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !15, i64 136, !20, i64 140, !15, i64 164, !15, i64 168, !15, i64 172, !15, i64 176, !15, i64 180, !15, i64 184, !15, i64 188, !15, i64 192, !15, i64 196, !15, i64 200, !15, i64 204, !15, i64 208, !15, i64 212, !15, i64 216, !15, i64 220, !15, i64 224, !15, i64 228, !15, i64 232, !6, i64 240, !6, i64 248, !15, i64 256, !15, i64 260, !15, i64 264, !15, i64 268, !15, i64 272, !15, i64 276, !7, i64 280, !7, i64 304}
!20 = !{!"LodePNGTime", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !15, i64 16, !15, i64 20}
!21 = !{!19, !15, i64 16}
!22 = !{!12, !15, i64 152}
!23 = !{!19, !10, i64 32}
!24 = !{!12, !15, i64 80}
!25 = !{!19, !15, i64 8}
!26 = !{!19, !15, i64 20}
!27 = !{!12, !15, i64 168}
!28 = !{!12, !15, i64 172}
!29 = !{!12, !15, i64 128}
!30 = !{!19, !15, i64 232}
!31 = !{!19, !6, i64 248}
!32 = !{!19, !15, i64 256}
!33 = !{!34, !15, i64 1064}
!34 = !{!"LodePNGColorStats", !15, i64 0, !15, i64 4, !35, i64 8, !35, i64 10, !35, i64 12, !15, i64 16, !15, i64 20, !7, i64 24, !15, i64 1048, !10, i64 1056, !15, i64 1064, !15, i64 1068}
!35 = !{!"short", !7, i64 0}
!36 = !{!34, !15, i64 1068}
!37 = !{!19, !15, i64 56}
!38 = !{!15, !15, i64 0}
!39 = !{!19, !15, i64 60}
!40 = !{!19, !15, i64 64}
!41 = !{!19, !15, i64 68}
!42 = !{!19, !15, i64 260}
!43 = !{!19, !15, i64 264}
!44 = !{!19, !15, i64 268}
!45 = !{!19, !15, i64 272}
!46 = !{!19, !15, i64 276}
!47 = !{!18, !15, i64 4}
!48 = !{!19, !15, i64 224}
!49 = !{!19, !15, i64 180}
!50 = !{!19, !15, i64 188}
!51 = !{!19, !15, i64 164}
!52 = !{!19, !15, i64 136}
!53 = !{!19, !10, i64 72}
!54 = !{!19, !6, i64 80}
!55 = !{!12, !15, i64 160}
!56 = !{!19, !6, i64 88}
!57 = distinct !{!57, !58}
!58 = !{!"llvm.loop.mustprogress"}
!59 = !{!12, !15, i64 156}
!60 = !{!7, !7, i64 0}
!61 = distinct !{!61, !58}
!62 = !{!19, !10, i64 96}
!63 = distinct !{!63, !58}
!64 = !{!19, !6, i64 104}
!65 = !{!19, !6, i64 112}
!66 = !{!19, !6, i64 120}
!67 = !{!19, !6, i64 128}
!68 = !{!69, !6, i64 0}
!69 = !{!"ucvector", !6, i64 0, !10, i64 8, !10, i64 16}
!70 = !{!69, !10, i64 8}


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