; LLVM IR from google/zopfli :: src/zopflipng (zopflipng_bin)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.ZopfliPNGOptions = type { i8, i8, i8, %"class.std::vector", i8, i8, %"class.std::vector.3", i8, i32, i32, i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ZopfliPNGFilterStrategy, std::allocator<ZopfliPNGFilterStrategy>>::_Vector_impl" }
%"struct.std::_Vector_base<ZopfliPNGFilterStrategy, std::allocator<ZopfliPNGFilterStrategy>>::_Vector_impl" = type { %"struct.std::_Vector_base<ZopfliPNGFilterStrategy, std::allocator<ZopfliPNGFilterStrategy>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ZopfliPNGFilterStrategy, std::allocator<ZopfliPNGFilterStrategy>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.lodepng::State" = type { %struct.LodePNGState }
%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 }
%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, [3 x ptr], [3 x i64] }
%struct.LodePNGTime = type { i32, i32, i32, i32, i32, i32 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [53 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z16GetFileNamePartsRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS4_S7_S7_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef) #0

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z10FileExistsRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #0

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_Z11GetFileSizeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8ShowHelpv() #0

declare i32 @printf(ptr noundef, ...) #3

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

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #4 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca %struct.ZopfliPNGOptions, align 8
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca i8, align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::vector.3", align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca i64, align 8
  %22 = alloca i8, align 1
  %23 = alloca i64, align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca i1, align 1
  %28 = alloca i1, align 1
  %29 = alloca i32, align 4
  %30 = alloca i64, align 8
  %31 = alloca i32, align 4
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca i64, align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator", align 1
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::vector.8", align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca %"class.std::vector.8", align 8
  %54 = alloca i32, align 4
  %55 = alloca %"class.lodepng::State", align 8
  %56 = alloca %"class.std::vector.8", align 8
  %57 = alloca %"class.std::vector.8", align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i64, align 8
  %61 = alloca i8, align 1
  %62 = alloca i8, align 1
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca %"class.std::vector.3", align 8
  %66 = alloca %"class.std::vector.13", align 8
  %67 = alloca i64, align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca i8, align 1
  %76 = alloca i8, align 1
  %77 = alloca i64, align 8
  %78 = alloca i8, align 1
  %79 = alloca i8, align 1
  %80 = alloca i8, align 1
  %81 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  %82 = load i32, ptr %4, align 4, !tbaa !5
  %83 = icmp slt i32 %82, 2
  br i1 %83, label %84, label %85

84:                                               ; preds = %2
  call void @_Z8ShowHelpv()
  store i32 0, ptr %3, align 4
  br label %1053

85:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 80, ptr %6) #9
  call void @_ZN16ZopfliPNGOptionsC1Ev(ptr noundef nonnull align 8 dereferenceable(80) %6)
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #9
  store i8 0, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #9
  store i8 0, ptr %8, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #9
  store i8 0, ptr %9, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #9
  store i8 0, ptr %11, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %86 unwind label %92

86:                                               ; preds = %85
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  store i32 1, ptr %17, align 4, !tbaa !5
  br label %87

87:                                               ; preds = %458, %86
  %88 = load i32, ptr %17, align 4, !tbaa !5
  %89 = load i32, ptr %4, align 4, !tbaa !5
  %90 = icmp slt i32 %88, %89
  br i1 %90, label %96, label %91

91:                                               ; preds = %87
  store i32 2, ptr %18, align 4
  br label %463

92:                                               ; preds = %85
  %93 = landingpad { ptr, i32 }
          cleanup
  %94 = extractvalue { ptr, i32 } %93, 0
  store ptr %94, ptr %14, align 8
  %95 = extractvalue { ptr, i32 } %93, 1
  store i32 %95, ptr %15, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #9
  br label %1052

96:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #9
  %97 = load ptr, ptr %5, align 8, !tbaa !9
  %98 = load i32, ptr %17, align 4, !tbaa !5
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds ptr, ptr %97, i64 %99
  %101 = load ptr, ptr %100, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %101, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %102 unwind label %123

102:                                              ; preds = %96
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  %103 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %19, i64 noundef 0)
          to label %104 unwind label %127

104:                                              ; preds = %102
  %105 = load i8, ptr %103, align 1, !tbaa !13
  %106 = sext i8 %105 to i32
  %107 = icmp eq i32 %106, 45
  br i1 %107, label %108, label %190

108:                                              ; preds = %104
  %109 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  %110 = icmp ugt i64 %109, 1
  br i1 %110, label %111, label %190

111:                                              ; preds = %108
  %112 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %19, i64 noundef 1)
          to label %113 unwind label %127

113:                                              ; preds = %111
  %114 = load i8, ptr %112, align 1, !tbaa !13
  %115 = sext i8 %114 to i32
  %116 = icmp ne i32 %115, 45
  br i1 %116, label %117, label %190

117:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  store i64 1, ptr %21, align 8, !tbaa !14
  br label %118

118:                                              ; preds = %184, %117
  %119 = load i64, ptr %21, align 8, !tbaa !14
  %120 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  %121 = icmp ult i64 %119, %120
  br i1 %121, label %131, label %122

122:                                              ; preds = %118
  store i32 5, ptr %18, align 4
  br label %187

123:                                              ; preds = %96
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %14, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %15, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  br label %462

127:                                              ; preds = %199, %190, %111, %102
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %14, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %15, align 4
  br label %461

131:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #9
  %132 = load i64, ptr %21, align 8, !tbaa !14
  %133 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %19, i64 noundef %132)
          to label %134 unwind label %140

134:                                              ; preds = %131
  %135 = load i8, ptr %133, align 1, !tbaa !13
  store i8 %135, ptr %22, align 1, !tbaa !13
  %136 = load i8, ptr %22, align 1, !tbaa !13
  %137 = sext i8 %136 to i32
  %138 = icmp eq i32 %137, 121
  br i1 %138, label %139, label %144

139:                                              ; preds = %134
  store i8 1, ptr %8, align 1, !tbaa !11
  br label %180

140:                                              ; preds = %172, %170, %131
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %14, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %461

144:                                              ; preds = %134
  %145 = load i8, ptr %22, align 1, !tbaa !13
  %146 = sext i8 %145 to i32
  %147 = icmp eq i32 %146, 100
  br i1 %147, label %148, label %149

148:                                              ; preds = %144
  store i8 1, ptr %9, align 1, !tbaa !11
  br label %179

149:                                              ; preds = %144
  %150 = load i8, ptr %22, align 1, !tbaa !13
  %151 = sext i8 %150 to i32
  %152 = icmp eq i32 %151, 109
  br i1 %152, label %153, label %160

153:                                              ; preds = %149
  %154 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 8
  %155 = load i32, ptr %154, align 4, !tbaa !16
  %156 = mul nsw i32 %155, 4
  store i32 %156, ptr %154, align 4, !tbaa !16
  %157 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 9
  %158 = load i32, ptr %157, align 8, !tbaa !26
  %159 = mul nsw i32 %158, 4
  store i32 %159, ptr %157, align 8, !tbaa !26
  br label %178

160:                                              ; preds = %149
  %161 = load i8, ptr %22, align 1, !tbaa !13
  %162 = sext i8 %161 to i32
  %163 = icmp eq i32 %162, 113
  br i1 %163, label %164, label %166

164:                                              ; preds = %160
  %165 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 7
  store i8 0, ptr %165, align 8, !tbaa !27
  br label %177

166:                                              ; preds = %160
  %167 = load i8, ptr %22, align 1, !tbaa !13
  %168 = sext i8 %167 to i32
  %169 = icmp eq i32 %168, 104
  br i1 %169, label %170, label %172

170:                                              ; preds = %166
  invoke void @_Z8ShowHelpv()
          to label %171 unwind label %140

171:                                              ; preds = %170
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %181

172:                                              ; preds = %166
  %173 = load i8, ptr %22, align 1, !tbaa !13
  %174 = sext i8 %173 to i32
  %175 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.7, i32 noundef %174)
          to label %176 unwind label %140

176:                                              ; preds = %172
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %181

177:                                              ; preds = %164
  br label %178

178:                                              ; preds = %177, %153
  br label %179

179:                                              ; preds = %178, %148
  br label %180

180:                                              ; preds = %179, %139
  store i32 0, ptr %18, align 4
  br label %181

181:                                              ; preds = %180, %176, %171
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  %182 = load i32, ptr %18, align 4
  switch i32 %182, label %187 [
    i32 0, label %183
  ]

183:                                              ; preds = %181
  br label %184

184:                                              ; preds = %183
  %185 = load i64, ptr %21, align 8, !tbaa !14
  %186 = add i64 %185, 1
  store i64 %186, ptr %21, align 8, !tbaa !14
  br label %118, !llvm.loop !28

187:                                              ; preds = %181, %122
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  %188 = load i32, ptr %18, align 4
  switch i32 %188, label %455 [
    i32 5, label %189
  ]

189:                                              ; preds = %187
  br label %454

190:                                              ; preds = %113, %108, %104
  %191 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %19, i64 noundef 0)
          to label %192 unwind label %127

192:                                              ; preds = %190
  %193 = load i8, ptr %191, align 1, !tbaa !13
  %194 = sext i8 %193 to i32
  %195 = icmp eq i32 %194, 45
  br i1 %195, label %196, label %436

196:                                              ; preds = %192
  %197 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  %198 = icmp ugt i64 %197, 1
  br i1 %198, label %199, label %436

199:                                              ; preds = %196
  %200 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %19, i64 noundef 1)
          to label %201 unwind label %127

201:                                              ; preds = %199
  %202 = load i8, ptr %200, align 1, !tbaa !13
  %203 = sext i8 %202 to i32
  %204 = icmp eq i32 %203, 45
  br i1 %204, label %205, label %436

205:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %206 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32) %19, i8 noundef signext 61, i64 noundef 0) #9
  store i64 %206, ptr %23, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #9
  %207 = load i64, ptr %23, align 8, !tbaa !14
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %19, i64 noundef 0, i64 noundef %207)
          to label %208 unwind label %231

208:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #9
  %209 = load i64, ptr %23, align 8, !tbaa !14
  %210 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  %211 = sub i64 %210, 1
  %212 = icmp uge i64 %209, %211
  store i1 false, ptr %27, align 1
  store i1 false, ptr %28, align 1
  br i1 %212, label %213, label %215

213:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #9
  store i1 true, ptr %27, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  store i1 true, ptr %28, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %214 unwind label %235

214:                                              ; preds = %213
  br label %219

215:                                              ; preds = %208
  %216 = load i64, ptr %23, align 8, !tbaa !14
  %217 = add i64 %216, 1
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %19, i64 noundef %217, i64 noundef -1)
          to label %218 unwind label %235

218:                                              ; preds = %215
  br label %219

219:                                              ; preds = %218, %214
  %220 = load i1, ptr %28, align 1
  br i1 %220, label %221, label %222

221:                                              ; preds = %219
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  br label %222

222:                                              ; preds = %221, %219
  %223 = load i1, ptr %27, align 1
  br i1 %223, label %224, label %225

224:                                              ; preds = %222
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  br label %225

225:                                              ; preds = %224, %222
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  %226 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  %227 = call i32 @atoi(ptr noundef %226) #10
  store i32 %227, ptr %29, align 4, !tbaa !5
  %228 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.8)
          to label %229 unwind label %245

229:                                              ; preds = %225
  br i1 %228, label %230, label %249

230:                                              ; preds = %229
  store i8 1, ptr %7, align 1, !tbaa !11
  br label %429

231:                                              ; preds = %205
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %14, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %15, align 4
  br label %435

235:                                              ; preds = %215, %213
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %14, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %15, align 4
  %239 = load i1, ptr %28, align 1
  br i1 %239, label %240, label %241

240:                                              ; preds = %235
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  br label %241

241:                                              ; preds = %240, %235
  %242 = load i1, ptr %27, align 1
  br i1 %242, label %243, label %244

243:                                              ; preds = %241
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  br label %244

244:                                              ; preds = %243, %241
  br label %434

245:                                              ; preds = %416, %414, %411, %407, %402, %397, %327, %280, %276, %264, %259, %254, %249, %225
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %14, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %15, align 4
  br label %433

249:                                              ; preds = %229
  %250 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.9)
          to label %251 unwind label %245

251:                                              ; preds = %249
  br i1 %250, label %252, label %254

252:                                              ; preds = %251
  %253 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 0
  store i8 1, ptr %253, align 8, !tbaa !30
  br label %428

254:                                              ; preds = %251
  %255 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.10)
          to label %256 unwind label %245

256:                                              ; preds = %254
  br i1 %255, label %257, label %259

257:                                              ; preds = %256
  %258 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 1
  store i8 1, ptr %258, align 1, !tbaa !31
  br label %427

259:                                              ; preds = %256
  %260 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.11)
          to label %261 unwind label %245

261:                                              ; preds = %259
  br i1 %260, label %262, label %264

262:                                              ; preds = %261
  %263 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 2
  store i8 1, ptr %263, align 2, !tbaa !32
  br label %426

264:                                              ; preds = %261
  %265 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.12)
          to label %266 unwind label %245

266:                                              ; preds = %264
  br i1 %265, label %267, label %276

267:                                              ; preds = %266
  %268 = load i32, ptr %29, align 4, !tbaa !5
  %269 = icmp slt i32 %268, 1
  br i1 %269, label %270, label %271

270:                                              ; preds = %267
  store i32 1, ptr %29, align 4, !tbaa !5
  br label %271

271:                                              ; preds = %270, %267
  %272 = load i32, ptr %29, align 4, !tbaa !5
  %273 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 8
  store i32 %272, ptr %273, align 4, !tbaa !16
  %274 = load i32, ptr %29, align 4, !tbaa !5
  %275 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 9
  store i32 %274, ptr %275, align 8, !tbaa !26
  br label %425

276:                                              ; preds = %266
  %277 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.13)
          to label %278 unwind label %245

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

279:                                              ; preds = %278
  br label %424

280:                                              ; preds = %278
  %281 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.14)
          to label %282 unwind label %245

282:                                              ; preds = %280
  br i1 %281, label %283, label %327

283:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  store i64 0, ptr %30, align 8, !tbaa !14
  br label %284

284:                                              ; preds = %321, %283
  %285 = load i64, ptr %30, align 8, !tbaa !14
  %286 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  %287 = icmp ult i64 %285, %286
  br i1 %287, label %289, label %288

288:                                              ; preds = %284
  store i32 8, ptr %18, align 4
  br label %324

289:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  store i32 0, ptr %31, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #9
  %290 = load i64, ptr %30, align 8, !tbaa !14
  %291 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %25, i64 noundef %290)
          to label %292 unwind label %296

292:                                              ; preds = %289
  %293 = load i8, ptr %291, align 1, !tbaa !13
  store i8 %293, ptr %32, align 1, !tbaa !13
  %294 = load i8, ptr %32, align 1, !tbaa !13
  %295 = sext i8 %294 to i32
  switch i32 %295, label %309 [
    i32 48, label %300
    i32 49, label %301
    i32 50, label %302
    i32 51, label %303
    i32 52, label %304
    i32 109, label %305
    i32 101, label %306
    i32 112, label %307
    i32 98, label %308
  ]

296:                                              ; preds = %314, %309, %289
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %14, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  br label %433

300:                                              ; preds = %292
  store i32 0, ptr %31, align 4, !tbaa !33
  br label %314

301:                                              ; preds = %292
  store i32 1, ptr %31, align 4, !tbaa !33
  br label %314

302:                                              ; preds = %292
  store i32 2, ptr %31, align 4, !tbaa !33
  br label %314

303:                                              ; preds = %292
  store i32 3, ptr %31, align 4, !tbaa !33
  br label %314

304:                                              ; preds = %292
  store i32 4, ptr %31, align 4, !tbaa !33
  br label %314

305:                                              ; preds = %292
  store i32 5, ptr %31, align 4, !tbaa !33
  br label %314

306:                                              ; preds = %292
  store i32 6, ptr %31, align 4, !tbaa !33
  br label %314

307:                                              ; preds = %292
  store i32 7, ptr %31, align 4, !tbaa !33
  br label %314

308:                                              ; preds = %292
  store i32 8, ptr %31, align 4, !tbaa !33
  br label %314

309:                                              ; preds = %292
  %310 = load i8, ptr %32, align 1, !tbaa !13
  %311 = sext i8 %310 to i32
  %312 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.15, i32 noundef %311)
          to label %313 unwind label %296

313:                                              ; preds = %309
  store i32 1, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %318

314:                                              ; preds = %308, %307, %306, %305, %304, %303, %302, %301, %300
  %315 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 3
  invoke void @_ZNSt6vectorI23ZopfliPNGFilterStrategySaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %315, ptr noundef nonnull align 4 dereferenceable(4) %31)
          to label %316 unwind label %296

316:                                              ; preds = %314
  %317 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 4
  store i8 0, ptr %317, align 8, !tbaa !35
  store i32 0, ptr %18, align 4
  br label %318

318:                                              ; preds = %316, %313
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  %319 = load i32, ptr %18, align 4
  switch i32 %319, label %324 [
    i32 0, label %320
  ]

320:                                              ; preds = %318
  br label %321

321:                                              ; preds = %320
  %322 = load i64, ptr %30, align 8, !tbaa !14
  %323 = add i64 %322, 1
  store i64 %323, ptr %30, align 8, !tbaa !14
  br label %284, !llvm.loop !36

324:                                              ; preds = %318, %288
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  %325 = load i32, ptr %18, align 4
  switch i32 %325, label %430 [
    i32 8, label %326
  ]

326:                                              ; preds = %324
  br label %423

327:                                              ; preds = %282
  %328 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.16)
          to label %329 unwind label %245

329:                                              ; preds = %327
  br i1 %328, label %330, label %397

330:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #9
  store i8 1, ptr %33, align 1, !tbaa !11
  %331 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  %332 = add i64 %331, 1
  %333 = urem i64 %332, 5
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %336

335:                                              ; preds = %330
  store i8 0, ptr %33, align 1, !tbaa !11
  br label %336

336:                                              ; preds = %335, %330
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  store i64 0, ptr %34, align 8, !tbaa !14
  br label %337

337:                                              ; preds = %378, %336
  %338 = load i64, ptr %34, align 8, !tbaa !14
  %339 = add i64 %338, 4
  %340 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  %341 = icmp ule i64 %339, %340
  br i1 %341, label %342, label %345

342:                                              ; preds = %337
  %343 = load i8, ptr %33, align 1, !tbaa !11, !range !37, !noundef !38
  %344 = trunc i8 %343 to i1
  br label %345

345:                                              ; preds = %342, %337
  %346 = phi i1 [ false, %337 ], [ %344, %342 ]
  br i1 %346, label %348, label %347

347:                                              ; preds = %345
  store i32 12, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %382

348:                                              ; preds = %345
  %349 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #9
  %350 = load i64, ptr %34, align 8, !tbaa !14
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %25, i64 noundef %350, i64 noundef 4)
          to label %351 unwind label %364

351:                                              ; preds = %348
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %349, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %352 unwind label %368

352:                                              ; preds = %351
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  %353 = load i64, ptr %34, align 8, !tbaa !14
  %354 = icmp ugt i64 %353, 4
  br i1 %354, label %355, label %377

355:                                              ; preds = %352
  %356 = load i64, ptr %34, align 8, !tbaa !14
  %357 = sub i64 %356, 1
  %358 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %25, i64 noundef %357)
          to label %359 unwind label %373

359:                                              ; preds = %355
  %360 = load i8, ptr %358, align 1, !tbaa !13
  %361 = sext i8 %360 to i32
  %362 = icmp ne i32 %361, 44
  br i1 %362, label %363, label %377

363:                                              ; preds = %359
  store i8 0, ptr %33, align 1, !tbaa !11
  br label %377

364:                                              ; preds = %348
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %14, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %15, align 4
  br label %372

368:                                              ; preds = %351
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %14, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  br label %372

372:                                              ; preds = %368, %364
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  br label %381

373:                                              ; preds = %355
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %14, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %15, align 4
  br label %381

377:                                              ; preds = %363, %359, %352
  br label %378

378:                                              ; preds = %377
  %379 = load i64, ptr %34, align 8, !tbaa !14
  %380 = add i64 %379, 5
  store i64 %380, ptr %34, align 8, !tbaa !14
  br label %337, !llvm.loop !39

381:                                              ; preds = %373, %372
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %396

382:                                              ; preds = %347
  %383 = load i8, ptr %33, align 1, !tbaa !11, !range !37, !noundef !38
  %384 = trunc i8 %383 to i1
  br i1 %384, label %392, label %385

385:                                              ; preds = %382
  %386 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.17)
          to label %387 unwind label %388

387:                                              ; preds = %385
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %393

388:                                              ; preds = %385
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %14, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %15, align 4
  br label %396

392:                                              ; preds = %382
  store i32 0, ptr %18, align 4
  br label %393

393:                                              ; preds = %392, %387
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #9
  %394 = load i32, ptr %18, align 4
  switch i32 %394, label %430 [
    i32 0, label %395
  ]

395:                                              ; preds = %393
  br label %422

396:                                              ; preds = %388, %381
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #9
  br label %433

397:                                              ; preds = %329
  %398 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.18)
          to label %399 unwind label %245

399:                                              ; preds = %397
  br i1 %398, label %400, label %402

400:                                              ; preds = %399
  %401 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 5
  store i8 1, ptr %401, align 1, !tbaa !40
  br label %421

402:                                              ; preds = %399
  %403 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.19)
          to label %404 unwind label %245

404:                                              ; preds = %402
  br i1 %403, label %405, label %411

405:                                              ; preds = %404
  store i8 1, ptr %11, align 1, !tbaa !11
  %406 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br i1 %406, label %410, label %407

407:                                              ; preds = %405
  %408 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %409 unwind label %245

409:                                              ; preds = %407
  br label %410

410:                                              ; preds = %409, %405
  br label %420

411:                                              ; preds = %404
  %412 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.20)
          to label %413 unwind label %245

413:                                              ; preds = %411
  br i1 %412, label %414, label %416

414:                                              ; preds = %413
  invoke void @_Z8ShowHelpv()
          to label %415 unwind label %245

415:                                              ; preds = %414
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %430

416:                                              ; preds = %413
  %417 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  %418 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.21, ptr noundef %417)
          to label %419 unwind label %245

419:                                              ; preds = %416
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %430

420:                                              ; preds = %410
  br label %421

421:                                              ; preds = %420, %400
  br label %422

422:                                              ; preds = %421, %395
  br label %423

423:                                              ; preds = %422, %326
  br label %424

424:                                              ; preds = %423, %279
  br label %425

425:                                              ; preds = %424, %271
  br label %426

426:                                              ; preds = %425, %262
  br label %427

427:                                              ; preds = %426, %257
  br label %428

428:                                              ; preds = %427, %252
  br label %429

429:                                              ; preds = %428, %230
  store i32 0, ptr %18, align 4
  br label %430

430:                                              ; preds = %429, %419, %415, %393, %324
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  %431 = load i32, ptr %18, align 4
  switch i32 %431, label %455 [
    i32 0, label %432
  ]

432:                                              ; preds = %430
  br label %453

433:                                              ; preds = %396, %296, %245
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %434

434:                                              ; preds = %433, %244
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %435

435:                                              ; preds = %434, %231
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  br label %461

436:                                              ; preds = %201, %196, %192
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #9
  %437 = load ptr, ptr %5, align 8, !tbaa !9
  %438 = load i32, ptr %17, align 4, !tbaa !5
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds ptr, ptr %437, i64 %439
  %441 = load ptr, ptr %440, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef %441, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %442 unwind label %444

442:                                              ; preds = %436
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %443 unwind label %448

443:                                              ; preds = %442
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #9
  br label %453

444:                                              ; preds = %436
  %445 = landingpad { ptr, i32 }
          cleanup
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %14, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %15, align 4
  br label %452

448:                                              ; preds = %442
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %14, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %452

452:                                              ; preds = %448, %444
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #9
  br label %461

453:                                              ; preds = %443, %432
  br label %454

454:                                              ; preds = %453, %189
  store i32 0, ptr %18, align 4
  br label %455

455:                                              ; preds = %454, %430, %187
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  %456 = load i32, ptr %18, align 4
  switch i32 %456, label %463 [
    i32 0, label %457
  ]

457:                                              ; preds = %455
  br label %458

458:                                              ; preds = %457
  %459 = load i32, ptr %17, align 4, !tbaa !5
  %460 = add nsw i32 %459, 1
  store i32 %460, ptr %17, align 4, !tbaa !5
  br label %87, !llvm.loop !41

461:                                              ; preds = %452, %435, %140, %127
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %462

462:                                              ; preds = %461, %123
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  br label %1051

463:                                              ; preds = %455, %91
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  %464 = load i32, ptr %18, align 4
  switch i32 %464, label %1050 [
    i32 2, label %465
  ]

465:                                              ; preds = %463
  %466 = load i8, ptr %11, align 1, !tbaa !11, !range !37, !noundef !38
  %467 = trunc i8 %466 to i1
  br i1 %467, label %485, label %468

468:                                              ; preds = %465
  %469 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  %470 = icmp eq i64 %469, 2
  br i1 %470, label %471, label %480

471:                                              ; preds = %468
  %472 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 1) #9
  %473 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %472)
          to label %474 unwind label %476

474:                                              ; preds = %471
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 1)
          to label %475 unwind label %476

475:                                              ; preds = %474
  br label %484

476:                                              ; preds = %482, %480, %474, %471
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %14, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %15, align 4
  br label %1051

480:                                              ; preds = %468
  %481 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.22)
          to label %482 unwind label %476

482:                                              ; preds = %480
  invoke void @_Z8ShowHelpv()
          to label %483 unwind label %476

483:                                              ; preds = %482
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %1050

484:                                              ; preds = %475
  br label %485

485:                                              ; preds = %484, %465
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  store i64 0, ptr %38, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  store i64 0, ptr %39, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  store i64 0, ptr %40, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  store i64 0, ptr %41, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  store i64 0, ptr %42, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  store i64 0, ptr %43, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  store i64 0, ptr %44, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  store i64 0, ptr %45, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  store i64 0, ptr %46, align 8, !tbaa !14
  br label %486

486:                                              ; preds = %988, %485
  %487 = load i64, ptr %46, align 8, !tbaa !14
  %488 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  %489 = icmp ult i64 %487, %488
  br i1 %489, label %491, label %490

490:                                              ; preds = %486
  store i32 15, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %994

491:                                              ; preds = %486
  %492 = load i8, ptr %11, align 1, !tbaa !11, !range !37, !noundef !38
  %493 = trunc i8 %492 to i1
  br i1 %493, label %494, label %512

494:                                              ; preds = %491
  %495 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  %496 = icmp ugt i64 %495, 1
  br i1 %496, label %497, label %512

497:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  %498 = load i64, ptr %46, align 8, !tbaa !14
  %499 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %498) #9
  invoke void @_Z16GetFileNamePartsRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS4_S7_S7_(ptr noundef nonnull align 8 dereferenceable(32) %499, ptr noundef %47, ptr noundef %48, ptr noundef %49)
          to label %500 unwind label %504

500:                                              ; preds = %497
  %501 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_m(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %12, i64 noundef 0) #9
  %502 = icmp eq i64 %501, 0
  br i1 %502, label %503, label %508

503:                                              ; preds = %500
  store i32 17, ptr %18, align 4
  br label %509

504:                                              ; preds = %497
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %14, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  br label %993

508:                                              ; preds = %500
  store i32 0, ptr %18, align 4
  br label %509

509:                                              ; preds = %508, %503
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  %510 = load i32, ptr %18, align 4
  switch i32 %510, label %1060 [
    i32 0, label %511
    i32 17, label %988
  ]

511:                                              ; preds = %509
  br label %512

512:                                              ; preds = %511, %494, %491
  %513 = load i64, ptr %42, align 8, !tbaa !14
  %514 = add i64 %513, 1
  store i64 %514, ptr %42, align 8, !tbaa !14
  %515 = load i64, ptr %46, align 8, !tbaa !14
  %516 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %515) #9
  %517 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %516) #9
  %518 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.23, ptr noundef %517)
          to label %519 unwind label %533

519:                                              ; preds = %512
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #9
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #9
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  call void @llvm.lifetime.start.p0(i64 528, ptr %55) #9
  invoke void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(528) %55)
          to label %520 unwind label %537

520:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 24, ptr %56) #9
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %521 = load i64, ptr %46, align 8, !tbaa !14
  %522 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %521) #9
  %523 = invoke noundef i32 @_ZN7lodepng9load_fileERSt6vectorIhSaIhEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(32) %522)
          to label %524 unwind label %541

524:                                              ; preds = %520
  store i32 %523, ptr %54, align 4, !tbaa !5
  %525 = load i32, ptr %54, align 4, !tbaa !5
  %526 = icmp ne i32 %525, 0
  br i1 %526, label %545, label %527

527:                                              ; preds = %524
  %528 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 0
  %529 = load i8, ptr %528, align 8, !tbaa !30, !range !37, !noundef !38
  %530 = trunc i8 %529 to i1
  %531 = invoke noundef i32 @_Z17ZopfliPNGOptimizeRKSt6vectorIhSaIhEERK16ZopfliPNGOptionsbPS1_(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(80) %6, i1 noundef zeroext %530, ptr noundef %56)
          to label %532 unwind label %541

532:                                              ; preds = %527
  store i32 %531, ptr %54, align 4, !tbaa !5
  br label %545

533:                                              ; preds = %512
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %14, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %15, align 4
  br label %993

537:                                              ; preds = %519
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %14, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %15, align 4
  br label %992

541:                                              ; preds = %985, %681, %678, %565, %558, %554, %551, %527, %520
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %14, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %15, align 4
  br label %991

545:                                              ; preds = %532, %524
  %546 = load i32, ptr %54, align 4, !tbaa !5
  %547 = icmp ne i32 %546, 0
  br i1 %547, label %548, label %562

548:                                              ; preds = %545
  %549 = load i32, ptr %54, align 4, !tbaa !5
  %550 = icmp eq i32 %549, 1
  br i1 %550, label %551, label %554

551:                                              ; preds = %548
  %552 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.24)
          to label %553 unwind label %541

553:                                              ; preds = %551
  br label %561

554:                                              ; preds = %548
  %555 = load i32, ptr %54, align 4, !tbaa !5
  %556 = load i32, ptr %54, align 4, !tbaa !5
  %557 = invoke noundef ptr @_Z18lodepng_error_textj(i32 noundef %556)
          to label %558 unwind label %541

558:                                              ; preds = %554
  %559 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.25, i32 noundef %555, ptr noundef %557)
          to label %560 unwind label %541

560:                                              ; preds = %558
  br label %561

561:                                              ; preds = %560, %553
  br label %562

562:                                              ; preds = %561, %545
  %563 = load i32, ptr %54, align 4, !tbaa !5
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %685, label %565

565:                                              ; preds = %562
  %566 = invoke noundef i32 @_ZN7lodepng6decodeERSt6vectorIhSaIhEERjS4_RKS2_16LodePNGColorTypej(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 4 dereferenceable(4) %51, ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef nonnull align 8 dereferenceable(24) %56, i32 noundef 6, i32 noundef 8)
          to label %567 unwind label %541

567:                                              ; preds = %565
  store i32 %566, ptr %54, align 4, !tbaa !5
  %568 = load i32, ptr %54, align 4, !tbaa !5
  %569 = icmp ne i32 %568, 0
  br i1 %569, label %675, label %570

570:                                              ; preds = %567
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #9
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #9
  %571 = invoke noundef i32 @_ZN7lodepng6decodeERSt6vectorIhSaIhEERjS4_RKS2_16LodePNGColorTypej(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 4 dereferenceable(4) %58, ptr noundef nonnull align 4 dereferenceable(4) %59, ptr noundef nonnull align 8 dereferenceable(24) %53, i32 noundef 6, i32 noundef 8)
          to label %572 unwind label %585

572:                                              ; preds = %570
  %573 = load i32, ptr %58, align 4, !tbaa !5
  %574 = load i32, ptr %51, align 4, !tbaa !5
  %575 = icmp ne i32 %573, %574
  br i1 %575, label %584, label %576

576:                                              ; preds = %572
  %577 = load i32, ptr %59, align 4, !tbaa !5
  %578 = load i32, ptr %52, align 4, !tbaa !5
  %579 = icmp ne i32 %577, %578
  br i1 %579, label %584, label %580

580:                                              ; preds = %576
  %581 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  %582 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  %583 = icmp ne i64 %581, %582
  br i1 %583, label %584, label %589

584:                                              ; preds = %580, %576, %572
  store i32 1, ptr %54, align 4, !tbaa !5
  br label %674

585:                                              ; preds = %570
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %14, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #9
  br label %991

589:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #9
  store i64 0, ptr %60, align 8, !tbaa !14
  br label %590

590:                                              ; preds = %669, %589
  %591 = load i64, ptr %60, align 8, !tbaa !14
  %592 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  %593 = icmp ult i64 %591, %592
  br i1 %593, label %595, label %594

594:                                              ; preds = %590
  store i32 18, ptr %18, align 4
  br label %672

595:                                              ; preds = %590
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #9
  %596 = load i64, ptr %60, align 8, !tbaa !14
  %597 = add i64 %596, 3
  %598 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %597) #9
  %599 = load i8, ptr %598, align 1, !tbaa !13
  %600 = zext i8 %599 to i32
  %601 = load i64, ptr %60, align 8, !tbaa !14
  %602 = add i64 %601, 3
  %603 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %602) #9
  %604 = load i8, ptr %603, align 1, !tbaa !13
  %605 = zext i8 %604 to i32
  %606 = icmp eq i32 %600, %605
  %607 = zext i1 %606 to i8
  store i8 %607, ptr %61, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #9
  %608 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 1
  %609 = load i8, ptr %608, align 1, !tbaa !31, !range !37, !noundef !38
  %610 = trunc i8 %609 to i1
  br i1 %610, label %611, label %618

611:                                              ; preds = %595
  %612 = load i64, ptr %60, align 8, !tbaa !14
  %613 = add i64 %612, 3
  %614 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %613) #9
  %615 = load i8, ptr %614, align 1, !tbaa !13
  %616 = zext i8 %615 to i32
  %617 = icmp eq i32 %616, 0
  br i1 %617, label %656, label %618

618:                                              ; preds = %611, %595
  %619 = load i64, ptr %60, align 8, !tbaa !14
  %620 = add i64 %619, 0
  %621 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %620) #9
  %622 = load i8, ptr %621, align 1, !tbaa !13
  %623 = zext i8 %622 to i32
  %624 = load i64, ptr %60, align 8, !tbaa !14
  %625 = add i64 %624, 0
  %626 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %625) #9
  %627 = load i8, ptr %626, align 1, !tbaa !13
  %628 = zext i8 %627 to i32
  %629 = icmp eq i32 %623, %628
  br i1 %629, label %630, label %654

630:                                              ; preds = %618
  %631 = load i64, ptr %60, align 8, !tbaa !14
  %632 = add i64 %631, 1
  %633 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %632) #9
  %634 = load i8, ptr %633, align 1, !tbaa !13
  %635 = zext i8 %634 to i32
  %636 = load i64, ptr %60, align 8, !tbaa !14
  %637 = add i64 %636, 1
  %638 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %637) #9
  %639 = load i8, ptr %638, align 1, !tbaa !13
  %640 = zext i8 %639 to i32
  %641 = icmp eq i32 %635, %640
  br i1 %641, label %642, label %654

642:                                              ; preds = %630
  %643 = load i64, ptr %60, align 8, !tbaa !14
  %644 = add i64 %643, 2
  %645 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %644) #9
  %646 = load i8, ptr %645, align 1, !tbaa !13
  %647 = zext i8 %646 to i32
  %648 = load i64, ptr %60, align 8, !tbaa !14
  %649 = add i64 %648, 2
  %650 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %649) #9
  %651 = load i8, ptr %650, align 1, !tbaa !13
  %652 = zext i8 %651 to i32
  %653 = icmp eq i32 %647, %652
  br label %654

654:                                              ; preds = %642, %630, %618
  %655 = phi i1 [ false, %630 ], [ false, %618 ], [ %653, %642 ]
  br label %656

656:                                              ; preds = %654, %611
  %657 = phi i1 [ true, %611 ], [ %655, %654 ]
  %658 = zext i1 %657 to i8
  store i8 %658, ptr %62, align 1, !tbaa !11
  %659 = load i8, ptr %61, align 1, !tbaa !11, !range !37, !noundef !38
  %660 = trunc i8 %659 to i1
  br i1 %660, label %661, label %664

661:                                              ; preds = %656
  %662 = load i8, ptr %62, align 1, !tbaa !11, !range !37, !noundef !38
  %663 = trunc i8 %662 to i1
  br i1 %663, label %665, label %664

664:                                              ; preds = %661, %656
  store i32 1, ptr %54, align 4, !tbaa !5
  store i32 18, ptr %18, align 4
  br label %666

665:                                              ; preds = %661
  store i32 0, ptr %18, align 4
  br label %666

666:                                              ; preds = %665, %664
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #9
  %667 = load i32, ptr %18, align 4
  switch i32 %667, label %672 [
    i32 0, label %668
  ]

668:                                              ; preds = %666
  br label %669

669:                                              ; preds = %668
  %670 = load i64, ptr %60, align 8, !tbaa !14
  %671 = add i64 %670, 4
  store i64 %671, ptr %60, align 8, !tbaa !14
  br label %590, !llvm.loop !42

672:                                              ; preds = %666, %594
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  br label %673

673:                                              ; preds = %672
  br label %674

674:                                              ; preds = %673, %584
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #9
  br label %675

675:                                              ; preds = %674, %567
  %676 = load i32, ptr %54, align 4, !tbaa !5
  %677 = icmp ne i32 %676, 0
  br i1 %677, label %678, label %684

678:                                              ; preds = %675
  %679 = load i32, ptr %54, align 4, !tbaa !5
  %680 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.26, i32 noundef %679)
          to label %681 unwind label %541

681:                                              ; preds = %678
  store i32 0, ptr %54, align 4, !tbaa !5
  %682 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIhSaIhEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(24) %53)
          to label %683 unwind label %541

683:                                              ; preds = %681
  br label %684

684:                                              ; preds = %683, %675
  br label %685

685:                                              ; preds = %684, %562
  %686 = load i32, ptr %54, align 4, !tbaa !5
  %687 = icmp ne i32 %686, 0
  br i1 %687, label %688, label %691

688:                                              ; preds = %685
  %689 = load i64, ptr %41, align 8, !tbaa !14
  %690 = add i64 %689, 1
  store i64 %690, ptr %41, align 8, !tbaa !14
  br label %985

691:                                              ; preds = %685
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #9
  %692 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  store i64 %692, ptr %63, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %693 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  store i64 %693, ptr %64, align 8, !tbaa !14
  %694 = getelementptr inbounds %struct.ZopfliPNGOptions, ptr %6, i32 0, i32 6
  %695 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %694) #9
  br i1 %695, label %732, label %696

696:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 24, ptr %65) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %66) #9
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #9
  %697 = invoke noundef i32 @_ZN7lodepng12getChunkInfoERSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EERS0_ImSaImEERKS0_IhSaIhEE(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(24) %56)
          to label %698 unwind label %704

698:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #9
  store i64 0, ptr %67, align 8, !tbaa !14
  br label %699

699:                                              ; preds = %726, %698
  %700 = load i64, ptr %67, align 8, !tbaa !14
  %701 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #9
  %702 = icmp ult i64 %700, %701
  br i1 %702, label %708, label %703

703:                                              ; preds = %699
  store i32 21, ptr %18, align 4
  br label %729

704:                                              ; preds = %696
  %705 = landingpad { ptr, i32 }
          cleanup
  %706 = extractvalue { ptr, i32 } %705, 0
  store ptr %706, ptr %14, align 8
  %707 = extractvalue { ptr, i32 } %705, 1
  store i32 %707, ptr %15, align 4
  br label %731

708:                                              ; preds = %699
  %709 = load i64, ptr %67, align 8, !tbaa !14
  %710 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %709) #9
  %711 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %710, ptr noundef @.str.27)
          to label %712 unwind label %721

712:                                              ; preds = %708
  br i1 %711, label %718, label %713

713:                                              ; preds = %712
  %714 = load i64, ptr %67, align 8, !tbaa !14
  %715 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %714) #9
  %716 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %715, ptr noundef @.str.28)
          to label %717 unwind label %721

717:                                              ; preds = %713
  br i1 %716, label %718, label %725

718:                                              ; preds = %717, %712
  %719 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.29)
          to label %720 unwind label %721

720:                                              ; preds = %718
  store i32 21, ptr %18, align 4
  br label %729

721:                                              ; preds = %718, %713, %708
  %722 = landingpad { ptr, i32 }
          cleanup
  %723 = extractvalue { ptr, i32 } %722, 0
  store ptr %723, ptr %14, align 8
  %724 = extractvalue { ptr, i32 } %722, 1
  store i32 %724, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %731

725:                                              ; preds = %717
  br label %726

726:                                              ; preds = %725
  %727 = load i64, ptr %67, align 8, !tbaa !14
  %728 = add i64 %727, 1
  store i64 %728, ptr %67, align 8, !tbaa !14
  br label %699, !llvm.loop !43

729:                                              ; preds = %720, %703
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %730

730:                                              ; preds = %729
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %66) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #9
  br label %732

731:                                              ; preds = %721, %704
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %66) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #9
  br label %984

732:                                              ; preds = %730, %691
  %733 = load i64, ptr %63, align 8, !tbaa !14
  invoke void @_Z9PrintSizePKcm(ptr noundef @.str.30, i64 noundef %733)
          to label %734 unwind label %744

734:                                              ; preds = %732
  %735 = load i64, ptr %63, align 8, !tbaa !14
  %736 = load i64, ptr %64, align 8, !tbaa !14
  invoke void @_Z15PrintResultSizePKcmm(ptr noundef @.str.31, i64 noundef %735, i64 noundef %736)
          to label %737 unwind label %744

737:                                              ; preds = %734
  %738 = load i64, ptr %64, align 8, !tbaa !14
  %739 = load i64, ptr %63, align 8, !tbaa !14
  %740 = icmp ult i64 %738, %739
  br i1 %740, label %741, label %748

741:                                              ; preds = %737
  %742 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.32)
          to label %743 unwind label %744

743:                                              ; preds = %741
  br label %763

744:                                              ; preds = %755, %752, %741, %734, %732
  %745 = landingpad { ptr, i32 }
          cleanup
  %746 = extractvalue { ptr, i32 } %745, 0
  store ptr %746, ptr %14, align 8
  %747 = extractvalue { ptr, i32 } %745, 1
  store i32 %747, ptr %15, align 4
  br label %984

748:                                              ; preds = %737
  %749 = load i64, ptr %64, align 8, !tbaa !14
  %750 = load i64, ptr %63, align 8, !tbaa !14
  %751 = icmp eq i64 %749, %750
  br i1 %751, label %752, label %755

752:                                              ; preds = %748
  %753 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.33)
          to label %754 unwind label %744

754:                                              ; preds = %752
  br label %762

755:                                              ; preds = %748
  %756 = load i8, ptr %7, align 1, !tbaa !11, !range !37, !noundef !38
  %757 = trunc i8 %756 to i1
  %758 = zext i1 %757 to i64
  %759 = select i1 %757, ptr @.str.34, ptr @.str.35
  %760 = invoke i32 (ptr, ...) @printf(ptr noundef %759)
          to label %761 unwind label %744

761:                                              ; preds = %755
  br label %762

762:                                              ; preds = %761, %754
  br label %763

763:                                              ; preds = %762, %743
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %764 unwind label %775

764:                                              ; preds = %763
  %765 = load i8, ptr %11, align 1, !tbaa !11, !range !37, !noundef !38
  %766 = trunc i8 %765 to i1
  br i1 %766, label %767, label %798

767:                                              ; preds = %764
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #9
  %768 = load i64, ptr %46, align 8, !tbaa !14
  %769 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %768) #9
  invoke void @_Z16GetFileNamePartsRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS4_S7_S7_(ptr noundef nonnull align 8 dereferenceable(32) %769, ptr noundef %69, ptr noundef %70, ptr noundef %71)
          to label %770 unwind label %779

770:                                              ; preds = %767
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %73) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %74, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %771 unwind label %783

771:                                              ; preds = %770
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %73, ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %772 unwind label %787

772:                                              ; preds = %771
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %72, ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull align 8 dereferenceable(32) %71)
          to label %773 unwind label %791

773:                                              ; preds = %772
  %774 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #9
  br label %798

775:                                              ; preds = %763
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %14, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %15, align 4
  br label %983

779:                                              ; preds = %767
  %780 = landingpad { ptr, i32 }
          cleanup
  %781 = extractvalue { ptr, i32 } %780, 0
  store ptr %781, ptr %14, align 8
  %782 = extractvalue { ptr, i32 } %780, 1
  store i32 %782, ptr %15, align 4
  br label %797

783:                                              ; preds = %770
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %14, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %15, align 4
  br label %796

787:                                              ; preds = %771
  %788 = landingpad { ptr, i32 }
          cleanup
  %789 = extractvalue { ptr, i32 } %788, 0
  store ptr %789, ptr %14, align 8
  %790 = extractvalue { ptr, i32 } %788, 1
  store i32 %790, ptr %15, align 4
  br label %795

791:                                              ; preds = %772
  %792 = landingpad { ptr, i32 }
          cleanup
  %793 = extractvalue { ptr, i32 } %792, 0
  store ptr %793, ptr %14, align 8
  %794 = extractvalue { ptr, i32 } %792, 1
  store i32 %794, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #9
  br label %795

795:                                              ; preds = %791, %787
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  br label %796

796:                                              ; preds = %795, %783
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #9
  br label %797

797:                                              ; preds = %796, %779
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #9
  br label %982

798:                                              ; preds = %773, %764
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #9
  %799 = load i64, ptr %46, align 8, !tbaa !14
  %800 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %799) #9
  %801 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(32) %800) #9
  %802 = zext i1 %801 to i8
  store i8 %802, ptr %75, align 1, !tbaa !11
  %803 = load i64, ptr %63, align 8, !tbaa !14
  %804 = load i64, ptr %38, align 8, !tbaa !14
  %805 = add i64 %804, %803
  store i64 %805, ptr %38, align 8, !tbaa !14
  %806 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %807 = load i64, ptr %40, align 8, !tbaa !14
  %808 = add i64 %807, %806
  store i64 %808, ptr %40, align 8, !tbaa !14
  %809 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %810 = load i64, ptr %63, align 8, !tbaa !14
  %811 = icmp ult i64 %809, %810
  br i1 %811, label %812, label %815

812:                                              ; preds = %798
  %813 = load i64, ptr %43, align 8, !tbaa !14
  %814 = add i64 %813, 1
  store i64 %814, ptr %43, align 8, !tbaa !14
  br label %823

815:                                              ; preds = %798
  %816 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %817 = load i64, ptr %63, align 8, !tbaa !14
  %818 = icmp eq i64 %816, %817
  br i1 %818, label %819, label %822

819:                                              ; preds = %815
  %820 = load i64, ptr %45, align 8, !tbaa !14
  %821 = add i64 %820, 1
  store i64 %821, ptr %45, align 8, !tbaa !14
  br label %822

822:                                              ; preds = %819, %815
  br label %823

823:                                              ; preds = %822, %812
  %824 = load i8, ptr %7, align 1, !tbaa !11, !range !37, !noundef !38
  %825 = trunc i8 %824 to i1
  br i1 %825, label %837, label %826

826:                                              ; preds = %823
  %827 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %828 = load i64, ptr %63, align 8, !tbaa !14
  %829 = icmp uge i64 %827, %828
  br i1 %829, label %830, label %837

830:                                              ; preds = %826
  %831 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIhSaIhEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(24) %53)
          to label %832 unwind label %833

832:                                              ; preds = %830
  br label %837

833:                                              ; preds = %830
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %14, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %15, align 4
  br label %981

837:                                              ; preds = %832, %826, %823
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #9
  %838 = invoke noundef zeroext i1 @_Z10FileExistsRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %839 unwind label %880

839:                                              ; preds = %837
  %840 = zext i1 %838 to i8
  store i8 %840, ptr %76, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #9
  %841 = invoke noundef i64 @_Z11GetFileSizeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %842 unwind label %884

842:                                              ; preds = %839
  store i64 %841, ptr %77, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #9
  %843 = load i8, ptr %76, align 1, !tbaa !11, !range !37, !noundef !38
  %844 = trunc i8 %843 to i1
  br i1 %844, label %845, label %861

845:                                              ; preds = %842
  %846 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %847 = load i64, ptr %77, align 8, !tbaa !14
  %848 = icmp uge i64 %846, %847
  br i1 %848, label %849, label %861

849:                                              ; preds = %845
  %850 = load i8, ptr %7, align 1, !tbaa !11, !range !37, !noundef !38
  %851 = trunc i8 %850 to i1
  br i1 %851, label %861, label %852

852:                                              ; preds = %849
  %853 = load i8, ptr %11, align 1, !tbaa !11, !range !37, !noundef !38
  %854 = trunc i8 %853 to i1
  br i1 %854, label %859, label %855

855:                                              ; preds = %852
  %856 = load i8, ptr %75, align 1, !tbaa !11, !range !37, !noundef !38
  %857 = trunc i8 %856 to i1
  %858 = xor i1 %857, true
  br label %859

859:                                              ; preds = %855, %852
  %860 = phi i1 [ true, %852 ], [ %858, %855 ]
  br label %861

861:                                              ; preds = %859, %849, %845, %842
  %862 = phi i1 [ false, %849 ], [ false, %845 ], [ false, %842 ], [ %860, %859 ]
  %863 = zext i1 %862 to i8
  store i8 %863, ptr %78, align 1, !tbaa !11
  %864 = load i8, ptr %78, align 1, !tbaa !11, !range !37, !noundef !38
  %865 = trunc i8 %864 to i1
  br i1 %865, label %866, label %893

866:                                              ; preds = %861
  %867 = load i64, ptr %77, align 8, !tbaa !14
  %868 = load i64, ptr %39, align 8, !tbaa !14
  %869 = add i64 %868, %867
  store i64 %869, ptr %39, align 8, !tbaa !14
  %870 = load i8, ptr %11, align 1, !tbaa !11, !range !37, !noundef !38
  %871 = trunc i8 %870 to i1
  br i1 %871, label %872, label %892

872:                                              ; preds = %866
  %873 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %874 = load i64, ptr %77, align 8, !tbaa !14
  %875 = icmp eq i64 %873, %874
  %876 = zext i1 %875 to i64
  %877 = select i1 %875, ptr @.str.36, ptr @.str.37
  %878 = invoke i32 (ptr, ...) @printf(ptr noundef %877)
          to label %879 unwind label %888

879:                                              ; preds = %872
  br label %892

880:                                              ; preds = %837
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %14, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %15, align 4
  br label %980

884:                                              ; preds = %839
  %885 = landingpad { ptr, i32 }
          cleanup
  %886 = extractvalue { ptr, i32 } %885, 0
  store ptr %886, ptr %14, align 8
  %887 = extractvalue { ptr, i32 } %885, 1
  store i32 %887, ptr %15, align 4
  br label %979

888:                                              ; preds = %872
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %14, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %15, align 4
  br label %978

892:                                              ; preds = %879, %866
  br label %977

893:                                              ; preds = %861
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #9
  store i8 1, ptr %79, align 1, !tbaa !11
  %894 = load i8, ptr %8, align 1, !tbaa !11, !range !37, !noundef !38
  %895 = trunc i8 %894 to i1
  br i1 %895, label %949, label %896

896:                                              ; preds = %893
  %897 = load i8, ptr %9, align 1, !tbaa !11, !range !37, !noundef !38
  %898 = trunc i8 %897 to i1
  br i1 %898, label %949, label %899

899:                                              ; preds = %896
  %900 = load i8, ptr %76, align 1, !tbaa !11, !range !37, !noundef !38
  %901 = trunc i8 %900 to i1
  br i1 %901, label %902, label %949

902:                                              ; preds = %899
  %903 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  %904 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.38, ptr noundef %903)
          to label %905 unwind label %912

905:                                              ; preds = %902
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #9
  store i8 0, ptr %80, align 1, !tbaa !13
  br label %906

906:                                              ; preds = %937, %905
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #9
  %907 = invoke i32 @getchar()
          to label %908 unwind label %916

908:                                              ; preds = %906
  store i32 %907, ptr %81, align 4, !tbaa !5
  %909 = load i32, ptr %81, align 4, !tbaa !5
  %910 = icmp ne i32 %909, 0
  br i1 %910, label %920, label %911

911:                                              ; preds = %908
  store i32 25, ptr %18, align 4
  br label %935

912:                                              ; preds = %959, %955, %902
  %913 = landingpad { ptr, i32 }
          cleanup
  %914 = extractvalue { ptr, i32 } %913, 0
  store ptr %914, ptr %14, align 8
  %915 = extractvalue { ptr, i32 } %913, 1
  store i32 %915, ptr %15, align 4
  br label %976

916:                                              ; preds = %906
  %917 = landingpad { ptr, i32 }
          cleanup
  %918 = extractvalue { ptr, i32 } %917, 0
  store ptr %918, ptr %14, align 8
  %919 = extractvalue { ptr, i32 } %917, 1
  store i32 %919, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #9
  br label %976

920:                                              ; preds = %908
  %921 = load i32, ptr %81, align 4, !tbaa !5
  %922 = icmp eq i32 %921, 10
  br i1 %922, label %926, label %923

923:                                              ; preds = %920
  %924 = load i32, ptr %81, align 4, !tbaa !5
  %925 = icmp eq i32 %924, -1
  br i1 %925, label %926, label %927

926:                                              ; preds = %923, %920
  store i32 25, ptr %18, align 4
  br label %935

927:                                              ; preds = %923
  %928 = load i8, ptr %80, align 1, !tbaa !13
  %929 = icmp ne i8 %928, 0
  br i1 %929, label %933, label %930

930:                                              ; preds = %927
  %931 = load i32, ptr %81, align 4, !tbaa !5
  %932 = trunc i32 %931 to i8
  store i8 %932, ptr %80, align 1, !tbaa !13
  br label %933

933:                                              ; preds = %930, %927
  br label %934

934:                                              ; preds = %933
  store i32 0, ptr %18, align 4
  br label %935

935:                                              ; preds = %934, %926, %911
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #9
  %936 = load i32, ptr %18, align 4
  switch i32 %936, label %1060 [
    i32 0, label %937
    i32 25, label %938
  ]

937:                                              ; preds = %935
  br label %906, !llvm.loop !44

938:                                              ; preds = %935
  %939 = load i8, ptr %80, align 1, !tbaa !13
  %940 = sext i8 %939 to i32
  %941 = icmp eq i32 %940, 121
  br i1 %941, label %946, label %942

942:                                              ; preds = %938
  %943 = load i8, ptr %80, align 1, !tbaa !13
  %944 = sext i8 %943 to i32
  %945 = icmp eq i32 %944, 89
  br label %946

946:                                              ; preds = %942, %938
  %947 = phi i1 [ true, %938 ], [ %945, %942 ]
  %948 = zext i1 %947 to i8
  store i8 %948, ptr %79, align 1, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #9
  br label %949

949:                                              ; preds = %946, %899, %896, %893
  %950 = load i8, ptr %79, align 1, !tbaa !11, !range !37, !noundef !38
  %951 = trunc i8 %950 to i1
  br i1 %951, label %952, label %971

952:                                              ; preds = %949
  %953 = load i8, ptr %9, align 1, !tbaa !11, !range !37, !noundef !38
  %954 = trunc i8 %953 to i1
  br i1 %954, label %967, label %955

955:                                              ; preds = %952
  %956 = invoke noundef i32 @_ZN7lodepng9save_fileERKSt6vectorIhSaIhEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %957 unwind label %912

957:                                              ; preds = %955
  %958 = icmp ne i32 %956, 0
  br i1 %958, label %959, label %963

959:                                              ; preds = %957
  %960 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  %961 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.39, ptr noundef %960)
          to label %962 unwind label %912

962:                                              ; preds = %959
  br label %966

963:                                              ; preds = %957
  %964 = load i64, ptr %44, align 8, !tbaa !14
  %965 = add i64 %964, 1
  store i64 %965, ptr %44, align 8, !tbaa !14
  br label %966

966:                                              ; preds = %963, %962
  br label %967

967:                                              ; preds = %966, %952
  %968 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %969 = load i64, ptr %39, align 8, !tbaa !14
  %970 = add i64 %969, %968
  store i64 %970, ptr %39, align 8, !tbaa !14
  br label %975

971:                                              ; preds = %949
  %972 = load i64, ptr %77, align 8, !tbaa !14
  %973 = load i64, ptr %39, align 8, !tbaa !14
  %974 = add i64 %973, %972
  store i64 %974, ptr %39, align 8, !tbaa !14
  br label %975

975:                                              ; preds = %971, %967
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #9
  br label %977

976:                                              ; preds = %916, %912
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #9
  br label %978

977:                                              ; preds = %975, %892
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  br label %985

978:                                              ; preds = %976, %888
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  br label %979

979:                                              ; preds = %978, %884
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #9
  br label %980

980:                                              ; preds = %979, %880
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #9
  br label %981

981:                                              ; preds = %980, %833
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #9
  br label %982

982:                                              ; preds = %981, %797
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  br label %983

983:                                              ; preds = %982, %775
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #9
  br label %984

984:                                              ; preds = %983, %744, %731
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  br label %991

985:                                              ; preds = %977, %688
  %986 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.40)
          to label %987 unwind label %541

987:                                              ; preds = %985
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #9
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(528) %55) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #9
  br label %988

988:                                              ; preds = %987, %509
  %989 = load i64, ptr %46, align 8, !tbaa !14
  %990 = add i64 %989, 1
  store i64 %990, ptr %46, align 8, !tbaa !14
  br label %486, !llvm.loop !45

991:                                              ; preds = %984, %585, %541
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #9
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(528) %55) #9
  br label %992

992:                                              ; preds = %991, %537
  call void @llvm.lifetime.end.p0(i64 528, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #9
  br label %993

993:                                              ; preds = %992, %533, %504
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %1049

994:                                              ; preds = %490
  %995 = load i64, ptr %42, align 8, !tbaa !14
  %996 = icmp ugt i64 %995, 1
  br i1 %996, label %997, label %1040

997:                                              ; preds = %994
  %998 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.41)
          to label %999 unwind label %1015

999:                                              ; preds = %997
  %1000 = load i64, ptr %42, align 8, !tbaa !14
  %1001 = trunc i64 %1000 to i32
  %1002 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.42, i32 noundef %1001)
          to label %1003 unwind label %1015

1003:                                             ; preds = %999
  %1004 = load i64, ptr %43, align 8, !tbaa !14
  %1005 = trunc i64 %1004 to i32
  %1006 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.43, i32 noundef %1005)
          to label %1007 unwind label %1015

1007:                                             ; preds = %1003
  %1008 = load i64, ptr %45, align 8, !tbaa !14
  %1009 = icmp ne i64 %1008, 0
  br i1 %1009, label %1010, label %1019

1010:                                             ; preds = %1007
  %1011 = load i64, ptr %45, align 8, !tbaa !14
  %1012 = trunc i64 %1011 to i32
  %1013 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.44, i32 noundef %1012)
          to label %1014 unwind label %1015

1014:                                             ; preds = %1010
  br label %1019

1015:                                             ; preds = %1043, %1036, %1033, %1031, %1026, %1019, %1010, %1003, %999, %997
  %1016 = landingpad { ptr, i32 }
          cleanup
  %1017 = extractvalue { ptr, i32 } %1016, 0
  store ptr %1017, ptr %14, align 8
  %1018 = extractvalue { ptr, i32 } %1016, 1
  store i32 %1018, ptr %15, align 4
  br label %1049

1019:                                             ; preds = %1014, %1007
  %1020 = load i64, ptr %44, align 8, !tbaa !14
  %1021 = trunc i64 %1020 to i32
  %1022 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.45, i32 noundef %1021)
          to label %1023 unwind label %1015

1023:                                             ; preds = %1019
  %1024 = load i64, ptr %41, align 8, !tbaa !14
  %1025 = icmp ne i64 %1024, 0
  br i1 %1025, label %1026, label %1031

1026:                                             ; preds = %1023
  %1027 = load i64, ptr %41, align 8, !tbaa !14
  %1028 = trunc i64 %1027 to i32
  %1029 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.46, i32 noundef %1028)
          to label %1030 unwind label %1015

1030:                                             ; preds = %1026
  br label %1031

1031:                                             ; preds = %1030, %1023
  %1032 = load i64, ptr %38, align 8, !tbaa !14
  invoke void @_Z9PrintSizePKcm(ptr noundef @.str.47, i64 noundef %1032)
          to label %1033 unwind label %1015

1033:                                             ; preds = %1031
  %1034 = load i64, ptr %38, align 8, !tbaa !14
  %1035 = load i64, ptr %39, align 8, !tbaa !14
  invoke void @_Z15PrintResultSizePKcmm(ptr noundef @.str.48, i64 noundef %1034, i64 noundef %1035)
          to label %1036 unwind label %1015

1036:                                             ; preds = %1033
  %1037 = load i64, ptr %38, align 8, !tbaa !14
  %1038 = load i64, ptr %40, align 8, !tbaa !14
  invoke void @_Z15PrintResultSizePKcmm(ptr noundef @.str.49, i64 noundef %1037, i64 noundef %1038)
          to label %1039 unwind label %1015

1039:                                             ; preds = %1036
  br label %1040

1040:                                             ; preds = %1039, %994
  %1041 = load i8, ptr %9, align 1, !tbaa !11, !range !37, !noundef !38
  %1042 = trunc i8 %1041 to i1
  br i1 %1042, label %1043, label %1046

1043:                                             ; preds = %1040
  %1044 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.50)
          to label %1045 unwind label %1015

1045:                                             ; preds = %1043
  br label %1046

1046:                                             ; preds = %1045, %1040
  %1047 = load i64, ptr %41, align 8, !tbaa !14
  %1048 = trunc i64 %1047 to i32
  store i32 %1048, ptr %3, align 4
  store i32 1, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %1050

1049:                                             ; preds = %1015, %993
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %1051

1050:                                             ; preds = %1046, %483, %463
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  call void @_ZN16ZopfliPNGOptionsD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %6) #9
  call void @llvm.lifetime.end.p0(i64 80, ptr %6) #9
  br label %1053

1051:                                             ; preds = %1049, %476, %462
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %1052

1052:                                             ; preds = %1051, %92
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  call void @_ZN16ZopfliPNGOptionsD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %6) #9
  call void @llvm.lifetime.end.p0(i64 80, ptr %6) #9
  br label %1055

1053:                                             ; preds = %1050, %84
  %1054 = load i32, ptr %3, align 4
  ret i32 %1054

1055:                                             ; preds = %1052
  %1056 = load ptr, ptr %14, align 8
  %1057 = load i32, ptr %15, align 4
  %1058 = insertvalue { ptr, i32 } poison, ptr %1056, 0
  %1059 = insertvalue { ptr, i32 } %1058, i32 %1057, 1
  resume { ptr, i32 } %1059

1060:                                             ; preds = %935, %509
  unreachable
}

declare void @_ZN16ZopfliPNGOptionsC1Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: nounwind
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext, i64 noundef) #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI23ZopfliPNGFilterStrategySaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_m(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

declare void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(528)) unnamed_addr #3

declare noundef i32 @_ZN7lodepng9load_fileERSt6vectorIhSaIhEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) #3

declare noundef i32 @_Z17ZopfliPNGOptimizeRKSt6vectorIhSaIhEERK16ZopfliPNGOptionsbPS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(80), i1 noundef zeroext, ptr noundef) #3

declare noundef ptr @_Z18lodepng_error_textj(i32 noundef) #3

declare noundef i32 @_ZN7lodepng6decodeERSt6vectorIhSaIhEERjS4_RKS2_16LodePNGColorTypej(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIhSaIhEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

declare noundef i32 @_ZN7lodepng12getChunkInfoERSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EERS0_ImSaImEERKS0_IhSaIhEE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #7

; Function Attrs: inlinehint mustprogress uwtable
declare i32 @getchar() #8

declare noundef i32 @_ZN7lodepng9save_fileERKSt6vectorIhSaIhEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) #3

; Function Attrs: nounwind
declare void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(528)) unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN16ZopfliPNGOptionsD2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!17, !6, i64 68}
!17 = !{!"_ZTS16ZopfliPNGOptions", !12, i64 0, !12, i64 1, !12, i64 2, !18, i64 8, !12, i64 32, !12, i64 33, !22, i64 40, !12, i64 64, !6, i64 68, !6, i64 72, !6, i64 76}
!18 = !{!"_ZTSSt6vectorI23ZopfliPNGFilterStrategySaIS0_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseI23ZopfliPNGFilterStrategySaIS0_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseI23ZopfliPNGFilterStrategySaIS0_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseI23ZopfliPNGFilterStrategySaIS0_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!22 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!26 = !{!17, !6, i64 72}
!27 = !{!17, !12, i64 64}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!17, !12, i64 0}
!31 = !{!17, !12, i64 1}
!32 = !{!17, !12, i64 2}
!33 = !{!34, !34, i64 0}
!34 = !{!"_ZTS23ZopfliPNGFilterStrategy", !7, i64 0}
!35 = !{!17, !12, i64 32}
!36 = distinct !{!36, !29}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = distinct !{!39, !29}
!40 = !{!17, !12, i64 33}
!41 = distinct !{!41, !29}
!42 = distinct !{!42, !29}
!43 = distinct !{!43, !29}
!44 = distinct !{!44, !29}
!45 = distinct !{!45, !29}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.ZopfliPNGOptions = type { i8, i8, i8, %"class.std::vector", i8, i8, %"class.std::vector.3", i8, i32, i32, i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ZopfliPNGFilterStrategy, std::allocator<ZopfliPNGFilterStrategy>>::_Vector_impl" }
%"struct.std::_Vector_base<ZopfliPNGFilterStrategy, std::allocator<ZopfliPNGFilterStrategy>>::_Vector_impl" = type { %"struct.std::_Vector_base<ZopfliPNGFilterStrategy, std::allocator<ZopfliPNGFilterStrategy>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ZopfliPNGFilterStrategy, std::allocator<ZopfliPNGFilterStrategy>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.lodepng::State" = type { %struct.LodePNGState }
%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 }
%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, [3 x ptr], [3 x i64] }
%struct.LodePNGTime = type { i32, i32, i32, i32, i32, i32 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [53 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z16GetFileNamePartsRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS4_S7_S7_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef) local_unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z10FileExistsRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_Z11GetFileSizeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8ShowHelpv() local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #4 personality ptr @__gxx_personality_v0 {
  %3 = alloca %struct.ZopfliPNGOptions, align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca %"class.std::vector.3", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::vector.8", align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::vector.8", align 8
  %24 = alloca %"class.lodepng::State", align 8
  %25 = alloca %"class.std::vector.8", align 8
  %26 = alloca %"class.std::vector.8", align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca %"class.std::vector.3", align 8
  %30 = alloca %"class.std::vector.13", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = icmp slt i32 %0, 2
  br i1 %38, label %39, label %40

39:                                               ; preds = %2
  tail call void @_Z8ShowHelpv()
  br label %467

40:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %3) #12
  call void @_ZN16ZopfliPNGOptionsC1Ev(ptr noundef nonnull align 8 dereferenceable(80) %3)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %.lr.ph651 unwind label %50

.lr.ph651:                                        ; preds = %40
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #12
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  %41 = getelementptr inbounds i8, ptr %3, i64 64
  %42 = getelementptr inbounds i8, ptr %3, i64 68
  %43 = getelementptr inbounds i8, ptr %3, i64 72
  %44 = getelementptr inbounds i8, ptr %3, i64 33
  %45 = getelementptr inbounds i8, ptr %3, i64 40
  %46 = getelementptr inbounds i8, ptr %3, i64 8
  %47 = getelementptr inbounds i8, ptr %3, i64 32
  %48 = getelementptr inbounds i8, ptr %3, i64 2
  %49 = getelementptr inbounds i8, ptr %3, i64 1
  %wide.trip.count = zext nneg i32 %0 to i64
  br label %52

50:                                               ; preds = %40
  %51 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #12
  br label %466

52:                                               ; preds = %.lr.ph651, %.loopexit448
  %indvars.iv = phi i64 [ 1, %.lr.ph651 ], [ %indvars.iv.next, %.loopexit448 ]
  %.0649 = phi i32 [ 0, %.lr.ph651 ], [ %.11.ph, %.loopexit448 ]
  %.0162648 = phi i8 [ 0, %.lr.ph651 ], [ %.4166.ph, %.loopexit448 ]
  %.0168647 = phi i1 [ false, %.lr.ph651 ], [ %.6174.ph, %.loopexit448 ]
  %.0176646 = phi i8 [ 0, %.lr.ph651 ], [ %.6182.ph, %.loopexit448 ]
  %.0184645 = phi i1 [ false, %.lr.ph651 ], [ %.4188.ph, %.loopexit448 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #12
  %53 = getelementptr inbounds ptr, ptr %1, i64 %indvars.iv
  %54 = load ptr, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef %54, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %55 unwind label %66

55:                                               ; preds = %52
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #12
  %56 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0)
  %57 = load i8, ptr %56, align 1, !tbaa !9
  %58 = icmp eq i8 %57, 45
  br i1 %58, label %59, label %84

59:                                               ; preds = %55
  %60 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  %61 = icmp ugt i64 %60, 1
  br i1 %61, label %62, label %84

62:                                               ; preds = %59
  %63 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1)
  %64 = load i8, ptr %63, align 1, !tbaa !9
  %.not = icmp eq i8 %64, 45
  br i1 %.not, label %84, label %.preheader447

.preheader447:                                    ; preds = %62
  %65 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  %.not313631 = icmp ugt i64 %65, 1
  br i1 %.not313631, label %.lr.ph, label %.loopexit448

66:                                               ; preds = %52
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #12
  br label %206

.lr.ph:                                           ; preds = %.preheader447, %81
  %.1169634 = phi i1 [ %.3171.ph, %81 ], [ %.0168647, %.preheader447 ]
  %.1177633 = phi i8 [ %.3179.ph, %81 ], [ %.0176646, %.preheader447 ]
  %.0283632 = phi i64 [ %82, %81 ], [ 1, %.preheader447 ]
  %68 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %.0283632)
  %69 = load i8, ptr %68, align 1, !tbaa !9
  switch i8 %69, label %78 [
    i8 121, label %81
    i8 100, label %72
    i8 109, label %73
    i8 113, label %76
    i8 104, label %77
  ]

70:                                               ; preds = %77
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %205

72:                                               ; preds = %.lr.ph
  br label %81

73:                                               ; preds = %.lr.ph
  %74 = load <2 x i32>, ptr %42, align 4, !tbaa !10
  %75 = shl nsw <2 x i32> %74, <i32 2, i32 2>
  store <2 x i32> %75, ptr %42, align 4, !tbaa !10
  br label %81

76:                                               ; preds = %.lr.ph
  store i8 0, ptr %41, align 8, !tbaa !12
  br label %81

77:                                               ; preds = %.lr.ph
  invoke void @_Z8ShowHelpv()
          to label %.thread377 unwind label %70

78:                                               ; preds = %.lr.ph
  %79 = sext i8 %69 to i32
  %80 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7, i32 noundef %79)
  br label %.thread377

81:                                               ; preds = %.lr.ph, %72, %76, %73
  %.3179.ph = phi i8 [ %.1177633, %.lr.ph ], [ %.1177633, %76 ], [ %.1177633, %73 ], [ 1, %72 ]
  %.3171.ph = phi i1 [ true, %.lr.ph ], [ %.1169634, %76 ], [ %.1169634, %73 ], [ %.1169634, %72 ]
  %82 = add nuw i64 %.0283632, 1
  %83 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  %.not313 = icmp ult i64 %82, %83
  br i1 %.not313, label %.lr.ph, label %.loopexit448, !llvm.loop !23

84:                                               ; preds = %62, %59, %55
  %85 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0)
  %86 = load i8, ptr %85, align 1, !tbaa !9
  %87 = icmp eq i8 %86, 45
  br i1 %87, label %88, label %196

88:                                               ; preds = %84
  %89 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  %90 = icmp ugt i64 %89, 1
  br i1 %90, label %91, label %196

91:                                               ; preds = %88
  %92 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1)
  %93 = load i8, ptr %92, align 1, !tbaa !9
  %94 = icmp eq i8 %93, 45
  br i1 %94, label %95, label %196

95:                                               ; preds = %91
  %96 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32) %8, i8 noundef signext 61, i64 noundef 0) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #12
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0, i64 noundef %96)
          to label %97 unwind label %108

97:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #12
  %98 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  %99 = add i64 %98, -1
  %.not300.not.not = icmp ult i64 %96, %99
  br i1 %.not300.not.not, label %101, label %100

100:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %104 unwind label %110

101:                                              ; preds = %97
  %102 = add nuw i64 %96, 1
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %102, i64 noundef -1)
          to label %.critedge unwind label %.thread382

.thread382:                                       ; preds = %101
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %.critedge350

104:                                              ; preds = %100
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #12
  br label %.critedge

.critedge:                                        ; preds = %101, %104
  %105 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  %106 = call i32 @atoi(ptr nocapture noundef %105) #13
  %107 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.8)
  br i1 %107, label %.thread389, label %114

108:                                              ; preds = %95
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %195

110:                                              ; preds = %100
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #12
  br label %.critedge350

112:                                              ; preds = %190, %186
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %194

114:                                              ; preds = %.critedge
  %115 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.9)
  br i1 %115, label %116, label %117

116:                                              ; preds = %114
  store i8 1, ptr %3, align 8, !tbaa !25
  br label %.thread389

117:                                              ; preds = %114
  %118 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.10)
  br i1 %118, label %119, label %120

119:                                              ; preds = %117
  store i8 1, ptr %49, align 1, !tbaa !26
  br label %.thread389

120:                                              ; preds = %117
  %121 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.11)
  br i1 %121, label %122, label %123

122:                                              ; preds = %120
  store i8 1, ptr %48, align 2, !tbaa !27
  br label %.thread389

123:                                              ; preds = %120
  %124 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.12)
  br i1 %124, label %125, label %126

125:                                              ; preds = %123
  %spec.store.select = call i32 @llvm.smax.i32(i32 %106, i32 1)
  store i32 %spec.store.select, ptr %42, align 4, !tbaa !28
  store i32 %spec.store.select, ptr %43, align 8, !tbaa !29
  br label %.thread389

126:                                              ; preds = %123
  %127 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.13)
  br i1 %127, label %.thread389, label %128

128:                                              ; preds = %126
  %129 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.14)
  br i1 %129, label %.preheader446, label %150

.preheader446:                                    ; preds = %128
  %130 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  %.not309640.not = icmp eq i64 %130, 0
  br i1 %.not309640.not, label %.thread389, label %.lr.ph642

.lr.ph642:                                        ; preds = %.preheader446, %147
  %.0284641 = phi i64 [ %148, %147 ], [ 0, %.preheader446 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #12
  store i32 0, ptr %13, align 4, !tbaa !30
  %131 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %.0284641)
  %132 = load i8, ptr %131, align 1, !tbaa !9
  switch i8 %132, label %.thread387 [
    i8 48, label %135
    i8 49, label %136
    i8 50, label %137
    i8 51, label %138
    i8 52, label %139
    i8 109, label %140
    i8 101, label %141
    i8 112, label %142
    i8 98, label %143
  ]

133:                                              ; preds = %144
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #12
  br label %194

135:                                              ; preds = %.lr.ph642
  store i32 0, ptr %13, align 4, !tbaa !30
  br label %144

136:                                              ; preds = %.lr.ph642
  store i32 1, ptr %13, align 4, !tbaa !30
  br label %144

137:                                              ; preds = %.lr.ph642
  store i32 2, ptr %13, align 4, !tbaa !30
  br label %144

138:                                              ; preds = %.lr.ph642
  store i32 3, ptr %13, align 4, !tbaa !30
  br label %144

139:                                              ; preds = %.lr.ph642
  store i32 4, ptr %13, align 4, !tbaa !30
  br label %144

140:                                              ; preds = %.lr.ph642
  store i32 5, ptr %13, align 4, !tbaa !30
  br label %144

141:                                              ; preds = %.lr.ph642
  store i32 6, ptr %13, align 4, !tbaa !30
  br label %144

142:                                              ; preds = %.lr.ph642
  store i32 7, ptr %13, align 4, !tbaa !30
  br label %144

143:                                              ; preds = %.lr.ph642
  store i32 8, ptr %13, align 4, !tbaa !30
  br label %144

144:                                              ; preds = %143, %142, %141, %140, %139, %138, %137, %136, %135
  invoke void @_ZNSt6vectorI23ZopfliPNGFilterStrategySaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %147 unwind label %133

.thread387:                                       ; preds = %.lr.ph642
  %145 = sext i8 %132 to i32
  %146 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.15, i32 noundef %145)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #12
  br label %.thread389

147:                                              ; preds = %144
  store i8 0, ptr %47, align 8, !tbaa !32
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #12
  %148 = add nuw i64 %.0284641, 1
  %149 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  %.not309 = icmp ult i64 %148, %149
  br i1 %.not309, label %.lr.ph642, label %.thread389, !llvm.loop !33

150:                                              ; preds = %128
  %151 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.16)
  br i1 %151, label %152, label %179

152:                                              ; preds = %150
  %153 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  %154 = add i64 %153, 1
  %155 = urem i64 %154, 5
  %.not301 = icmp eq i64 %155, 0
  %156 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  %157 = icmp ugt i64 %156, 3
  %158 = and i1 %157, %.not301
  br i1 %158, label %.lr.ph638, label %._crit_edge

._crit_edge:                                      ; preds = %171, %152
  %.1281.lcssa = phi i1 [ %.not301, %152 ], [ %.2282, %171 ]
  br i1 %.1281.lcssa, label %.thread389, label %177

.lr.ph638:                                        ; preds = %152, %171
  %.0279637 = phi i64 [ %172, %171 ], [ 0, %152 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #12
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %.0279637, i64 noundef 4)
          to label %159 unwind label %166

159:                                              ; preds = %.lr.ph638
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %160 unwind label %168

160:                                              ; preds = %159
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #12
  %161 = icmp ugt i64 %.0279637, 4
  br i1 %161, label %162, label %171

162:                                              ; preds = %160
  %163 = add i64 %.0279637, -1
  %164 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %163)
  %165 = load i8, ptr %164, align 1, !tbaa !9
  %.not304 = icmp eq i8 %165, 44
  br label %171

166:                                              ; preds = %.lr.ph638
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %170

168:                                              ; preds = %159
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  br label %170

170:                                              ; preds = %168, %166
  %.pn302 = phi { ptr, i32 } [ %169, %168 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #12
  br label %194

171:                                              ; preds = %162, %160
  %.2282 = phi i1 [ true, %160 ], [ %.not304, %162 ]
  %172 = add i64 %.0279637, 5
  %173 = add i64 %.0279637, 9
  %174 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  %175 = icmp ule i64 %173, %174
  %176 = select i1 %175, i1 %.2282, i1 false
  br i1 %176, label %.lr.ph638, label %._crit_edge, !llvm.loop !34

177:                                              ; preds = %._crit_edge
  %178 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %.thread389

179:                                              ; preds = %150
  %180 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.18)
  br i1 %180, label %181, label %182

181:                                              ; preds = %179
  store i8 1, ptr %44, align 1, !tbaa !35
  br label %.thread389

182:                                              ; preds = %179
  %183 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.19)
  br i1 %183, label %184, label %188

184:                                              ; preds = %182
  %185 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  br i1 %185, label %.thread389, label %186

186:                                              ; preds = %184
  %187 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %.thread389 unwind label %112

188:                                              ; preds = %182
  %189 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.20)
  br i1 %189, label %190, label %191

190:                                              ; preds = %188
  invoke void @_Z8ShowHelpv()
          to label %.thread389 unwind label %112

191:                                              ; preds = %188
  %192 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  %193 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.21, ptr noundef %192)
  br label %.thread389

.thread389:                                       ; preds = %147, %.preheader446, %._crit_edge, %119, %125, %181, %184, %186, %126, %122, %116, %.critedge, %177, %.thread387, %190, %191
  %cond3 = phi i1 [ false, %177 ], [ false, %191 ], [ false, %190 ], [ false, %.thread387 ], [ true, %.critedge ], [ true, %116 ], [ true, %122 ], [ true, %126 ], [ true, %186 ], [ true, %184 ], [ true, %181 ], [ true, %125 ], [ true, %119 ], [ true, %._crit_edge ], [ true, %.preheader446 ], [ true, %147 ]
  %.2186 = phi i1 [ %.0184645, %177 ], [ %.0184645, %191 ], [ %.0184645, %190 ], [ %.0184645, %.thread387 ], [ %.0184645, %.critedge ], [ %.0184645, %116 ], [ %.0184645, %122 ], [ %.0184645, %126 ], [ true, %186 ], [ true, %184 ], [ %.0184645, %181 ], [ %.0184645, %125 ], [ %.0184645, %119 ], [ %.0184645, %._crit_edge ], [ %.0184645, %.preheader446 ], [ %.0184645, %147 ]
  %.2164 = phi i8 [ %.0162648, %177 ], [ %.0162648, %191 ], [ %.0162648, %190 ], [ %.0162648, %.thread387 ], [ 1, %.critedge ], [ %.0162648, %116 ], [ %.0162648, %122 ], [ %.0162648, %126 ], [ %.0162648, %186 ], [ %.0162648, %184 ], [ %.0162648, %181 ], [ %.0162648, %125 ], [ %.0162648, %119 ], [ %.0162648, %._crit_edge ], [ %.0162648, %.preheader446 ], [ %.0162648, %147 ]
  %.9 = phi i32 [ 0, %177 ], [ 0, %191 ], [ 0, %190 ], [ 1, %.thread387 ], [ %.0649, %.critedge ], [ %.0649, %116 ], [ %.0649, %122 ], [ %.0649, %126 ], [ %.0649, %186 ], [ %.0649, %184 ], [ %.0649, %181 ], [ %.0649, %125 ], [ %.0649, %119 ], [ %.0649, %._crit_edge ], [ %.0649, %.preheader446 ], [ %.0649, %147 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #12
  br i1 %cond3, label %.loopexit448, label %.thread377

194:                                              ; preds = %170, %133, %112
  %.pn305 = phi { ptr, i32 } [ %134, %133 ], [ %.pn302, %170 ], [ %113, %112 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  br label %.critedge350

.critedge350:                                     ; preds = %.thread382, %110, %194
  %.pn305.pn = phi { ptr, i32 } [ %.pn305, %194 ], [ %111, %110 ], [ %103, %.thread382 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  br label %195

195:                                              ; preds = %.critedge350, %108
  %.pn305.pn.pn = phi { ptr, i32 } [ %.pn305.pn, %.critedge350 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #12
  br label %205

196:                                              ; preds = %91, %88, %84
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #12
  %197 = load ptr, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %197, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %198 unwind label %200

198:                                              ; preds = %196
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %199 unwind label %202

199:                                              ; preds = %198
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #12
  br label %.loopexit448

200:                                              ; preds = %196
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %204

202:                                              ; preds = %198
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #12
  br label %204

204:                                              ; preds = %202, %200
  %.pn = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #12
  br label %205

.loopexit448:                                     ; preds = %81, %.preheader447, %.thread389, %199
  %.4188.ph = phi i1 [ %.0184645, %199 ], [ %.2186, %.thread389 ], [ %.0184645, %.preheader447 ], [ %.0184645, %81 ]
  %.6182.ph = phi i8 [ %.0176646, %199 ], [ %.0176646, %.thread389 ], [ %.0176646, %.preheader447 ], [ %.3179.ph, %81 ]
  %.6174.ph = phi i1 [ %.0168647, %199 ], [ %.0168647, %.thread389 ], [ %.0168647, %.preheader447 ], [ %.3171.ph, %81 ]
  %.4166.ph = phi i8 [ %.0162648, %199 ], [ %.2164, %.thread389 ], [ %.0162648, %.preheader447 ], [ %.0162648, %81 ]
  %.11.ph = phi i32 [ %.0649, %199 ], [ %.9, %.thread389 ], [ %.0649, %.preheader447 ], [ %.0649, %81 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.thread404, label %52, !llvm.loop !36

205:                                              ; preds = %204, %195, %70
  %.pn310 = phi { ptr, i32 } [ %71, %70 ], [ %.pn305.pn.pn, %195 ], [ %.pn, %204 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  br label %206

206:                                              ; preds = %205, %66
  %.pn310.pn = phi { ptr, i32 } [ %.pn310, %205 ], [ %67, %66 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  br label %465

.thread377:                                       ; preds = %.thread389, %77, %78
  %.11 = phi i32 [ 0, %78 ], [ 0, %77 ], [ %.9, %.thread389 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  br label %464

.thread404:                                       ; preds = %.loopexit448
  br i1 %.4188.ph, label %218, label %207

207:                                              ; preds = %.thread404
  %208 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  %209 = icmp eq i64 %208, 2
  br i1 %209, label %210, label %216

210:                                              ; preds = %207
  %211 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 1) #12
  %212 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %211)
          to label %213 unwind label %214

213:                                              ; preds = %210
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 1)
          to label %218 unwind label %214

214:                                              ; preds = %216, %213, %210
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %465

216:                                              ; preds = %207
  %217 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22)
  invoke void @_Z8ShowHelpv()
          to label %464 unwind label %214

218:                                              ; preds = %213, %.thread404
  %219 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  %.not694 = icmp eq i64 %219, 0
  br i1 %.not694, label %._crit_edge685.thread, label %.lr.ph684

.lr.ph684:                                        ; preds = %218
  %220 = getelementptr inbounds i8, ptr %3, i64 1
  %221 = getelementptr inbounds i8, ptr %3, i64 40
  %222 = trunc nuw i8 %.4166.ph to i1
  %223 = select i1 %222, ptr @.str.34, ptr @.str.35
  %224 = trunc nuw i8 %.6182.ph to i1
  %or.cond368 = select i1 %.6174.ph, i1 true, i1 %224
  br label %226

._crit_edge685:                                   ; preds = %435
  %225 = icmp ugt i64 %.1264, 1
  br i1 %225, label %441, label %._crit_edge685.thread

226:                                              ; preds = %.lr.ph684, %435
  %.0248679 = phi i64 [ 0, %.lr.ph684 ], [ %436, %435 ]
  %.0249677 = phi i64 [ 0, %.lr.ph684 ], [ %.3252, %435 ]
  %.0253675 = phi i32 [ 0, %.lr.ph684 ], [ %.5258, %435 ]
  %.0259674 = phi i32 [ 0, %.lr.ph684 ], [ %.3262, %435 ]
  %.0263673 = phi i64 [ 0, %.lr.ph684 ], [ %.1264, %435 ]
  %.0265671 = phi i64 [ 0, %.lr.ph684 ], [ %.2267, %435 ]
  %.0268669 = phi i64 [ 0, %.lr.ph684 ], [ %.2270, %435 ]
  %.0271667 = phi i64 [ 0, %.lr.ph684 ], [ %.4275, %435 ]
  %.0276665 = phi i64 [ 0, %.lr.ph684 ], [ %.2278, %435 ]
  br i1 %.4188.ph, label %227, label %237

227:                                              ; preds = %226
  %228 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  %229 = icmp ugt i64 %228, 1
  br i1 %229, label %230, label %237

230:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12
  %231 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.0248679) #12
  invoke void @_Z16GetFileNamePartsRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS4_S7_S7_(ptr noundef nonnull align 8 dereferenceable(32) %231, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19)
          to label %232 unwind label %235

232:                                              ; preds = %230
  %233 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_m(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0) #12
  %234 = icmp eq i64 %233, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #12
  br i1 %234, label %435, label %237

235:                                              ; preds = %230
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #12
  br label %465

237:                                              ; preds = %232, %227, %226
  %238 = add i64 %.0263673, 1
  %239 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.0248679) #12
  %240 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %239) #12
  %241 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.23, ptr noundef %240)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #12
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #12
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  call void @llvm.lifetime.start.p0(i64 528, ptr nonnull %24) #12
  invoke void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(528) %24)
          to label %242 unwind label %250

242:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #12
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  %243 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.0248679) #12
  %244 = invoke noundef i32 @_ZN7lodepng9load_fileERSt6vectorIhSaIhEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(32) %243)
          to label %245 unwind label %252

245:                                              ; preds = %242
  %.not317 = icmp eq i32 %244, 0
  br i1 %.not317, label %246, label %.thread414

246:                                              ; preds = %245
  %247 = load i8, ptr %3, align 8, !tbaa !25, !range !37, !noundef !38
  %248 = trunc nuw i8 %247 to i1
  %249 = invoke noundef i32 @_Z17ZopfliPNGOptimizeRKSt6vectorIhSaIhEERK16ZopfliPNGOptionsbPS1_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(80) %3, i1 noundef zeroext %248, ptr noundef nonnull %25)
          to label %254 unwind label %252

250:                                              ; preds = %237
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %440

252:                                              ; preds = %.thread427, %.critedge353, %258, %246, %242
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %439

254:                                              ; preds = %246
  %.not318 = icmp eq i32 %249, 0
  br i1 %.not318, label %.critedge353, label %.thread414

.thread414:                                       ; preds = %245, %254
  %.0241417 = phi i32 [ %249, %254 ], [ %244, %245 ]
  %255 = icmp eq i32 %.0241417, 1
  br i1 %255, label %256, label %258

256:                                              ; preds = %.thread414
  %257 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24)
  br label %.critedge357

258:                                              ; preds = %.thread414
  %259 = invoke noundef ptr @_Z18lodepng_error_textj(i32 noundef %.0241417)
          to label %260 unwind label %252

260:                                              ; preds = %258
  %261 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.25, i32 noundef %.0241417, ptr noundef %259)
  br label %.critedge357

.critedge353:                                     ; preds = %254
  %262 = invoke noundef i32 @_ZN7lodepng6decodeERSt6vectorIhSaIhEERjS4_RKS2_16LodePNGColorTypej(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 6, i32 noundef 8)
          to label %263 unwind label %252

263:                                              ; preds = %.critedge353
  %.not319 = icmp eq i32 %262, 0
  br i1 %.not319, label %264, label %.thread427

264:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #12
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #12
  %265 = invoke noundef i32 @_ZN7lodepng6decodeERSt6vectorIhSaIhEERjS4_RKS2_16LodePNGColorTypej(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef 6, i32 noundef 8)
          to label %266 unwind label %276

266:                                              ; preds = %264
  %267 = load i32, ptr %27, align 4, !tbaa !10
  %268 = load i32, ptr %21, align 4, !tbaa !10
  %.not320 = icmp eq i32 %267, %268
  br i1 %.not320, label %269, label %.thread432

269:                                              ; preds = %266
  %270 = load i32, ptr %28, align 4, !tbaa !10
  %271 = load i32, ptr %22, align 4, !tbaa !10
  %.not321 = icmp eq i32 %270, %271
  br i1 %.not321, label %272, label %.thread432

272:                                              ; preds = %269
  %273 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #12
  %274 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %.not322 = icmp eq i64 %273, %274
  br i1 %.not322, label %.preheader445, label %.thread432

.preheader445:                                    ; preds = %272
  %275 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %.not695 = icmp eq i64 %275, 0
  br i1 %.not695, label %._crit_edge659.thread, label %.lr.ph658

._crit_edge659.thread:                            ; preds = %.preheader445
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #12
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #12
  br label %319

276:                                              ; preds = %264
  %277 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #12
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #12
  br label %439

278:                                              ; preds = %314
  %279 = add i64 %.0240657, 4
  %280 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %281 = icmp ult i64 %279, %280
  br i1 %281, label %.lr.ph658, label %._crit_edge659, !llvm.loop !39

.lr.ph658:                                        ; preds = %.preheader445, %278
  %.0240657 = phi i64 [ %279, %278 ], [ 0, %.preheader445 ]
  %282 = or disjoint i64 %.0240657, 3
  %283 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %282) #12
  %284 = load i8, ptr %283, align 1, !tbaa !9
  %285 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %282) #12
  %286 = load i8, ptr %285, align 1, !tbaa !9
  %287 = icmp eq i8 %284, %286
  %288 = load i8, ptr %220, align 1, !tbaa !26, !range !37, !noundef !38
  %289 = trunc nuw i8 %288 to i1
  br i1 %289, label %290, label %294

290:                                              ; preds = %.lr.ph658
  %291 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %282) #12
  %292 = load i8, ptr %291, align 1, !tbaa !9
  %293 = icmp eq i8 %292, 0
  br i1 %293, label %314, label %294

294:                                              ; preds = %290, %.lr.ph658
  %295 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %.0240657) #12
  %296 = load i8, ptr %295, align 1, !tbaa !9
  %297 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %.0240657) #12
  %298 = load i8, ptr %297, align 1, !tbaa !9
  %299 = icmp eq i8 %296, %298
  br i1 %299, label %300, label %.thread432

300:                                              ; preds = %294
  %301 = or disjoint i64 %.0240657, 1
  %302 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %301) #12
  %303 = load i8, ptr %302, align 1, !tbaa !9
  %304 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %301) #12
  %305 = load i8, ptr %304, align 1, !tbaa !9
  %306 = icmp eq i8 %303, %305
  br i1 %306, label %307, label %.thread432

307:                                              ; preds = %300
  %308 = or disjoint i64 %.0240657, 2
  %309 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %308) #12
  %310 = load i8, ptr %309, align 1, !tbaa !9
  %311 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %308) #12
  %312 = load i8, ptr %311, align 1, !tbaa !9
  %313 = icmp eq i8 %310, %312
  br label %314

314:                                              ; preds = %307, %290
  %315 = phi i1 [ true, %290 ], [ %313, %307 ]
  %brmerge.not = select i1 %287, i1 %315, i1 false
  br i1 %brmerge.not, label %278, label %.thread427.critedge

.thread432:                                       ; preds = %294, %300, %272, %269, %266
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #12
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #12
  br label %.thread427

._crit_edge659:                                   ; preds = %278
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #12
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #12
  br i1 %brmerge.not, label %319, label %.thread427

.thread427.critedge:                              ; preds = %314
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #12
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #12
  br label %.thread427

.thread427:                                       ; preds = %.thread427.critedge, %263, %.thread432, %._crit_edge659
  %.5246430 = phi i32 [ 1, %._crit_edge659 ], [ 1, %.thread432 ], [ %262, %263 ], [ 1, %.thread427.critedge ]
  %316 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26, i32 noundef %.5246430)
  %317 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIhSaIhEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %319 unwind label %252

.critedge357:                                     ; preds = %260, %256
  %318 = add i64 %.0265671, 1
  br label %433

319:                                              ; preds = %._crit_edge659.thread, %.thread427, %._crit_edge659
  %320 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %321 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  %322 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %221) #12
  br i1 %322, label %339, label %323

323:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #12
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #12
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #12
  %324 = invoke noundef i32 @_ZN7lodepng12getChunkInfoERSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EERS0_ImSaImEERKS0_IhSaIhEE(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %.preheader unwind label %330

.preheader:                                       ; preds = %323
  %325 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  %.not696 = icmp eq i64 %325, 0
  br i1 %.not696, label %.loopexit, label %.lr.ph664

326:                                              ; preds = %334
  %327 = add nuw i64 %.0190663, 1
  %328 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  %329 = icmp ult i64 %327, %328
  br i1 %329, label %.lr.ph664, label %.loopexit, !llvm.loop !40

330:                                              ; preds = %323
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #12
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #12
  br label %439

.lr.ph664:                                        ; preds = %.preheader, %326
  %.0190663 = phi i64 [ %327, %326 ], [ 0, %.preheader ]
  %332 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %.0190663) #12
  %333 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %332, ptr noundef nonnull @.str.27)
  br i1 %333, label %337, label %334

334:                                              ; preds = %.lr.ph664
  %335 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %.0190663) #12
  %336 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %335, ptr noundef nonnull @.str.28)
  br i1 %336, label %337, label %326

337:                                              ; preds = %334, %.lr.ph664
  %338 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.29)
  br label %.loopexit

.loopexit:                                        ; preds = %326, %.preheader, %337
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #12
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #12
  br label %339

339:                                              ; preds = %.loopexit, %319
  invoke void @_Z9PrintSizePKcm(ptr noundef nonnull @.str.30, i64 noundef %320)
          to label %340 unwind label %345

340:                                              ; preds = %339
  invoke void @_Z15PrintResultSizePKcmm(ptr noundef nonnull @.str.31, i64 noundef %320, i64 noundef %321)
          to label %341 unwind label %345

341:                                              ; preds = %340
  %342 = icmp ult i64 %321, %320
  %343 = icmp eq i64 %321, %320
  %.str.33. = select i1 %343, ptr @.str.33, ptr %223
  %.str.33.sink = select i1 %342, ptr @.str.32, ptr %.str.33.
  %344 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.33.sink)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %347 unwind label %355

345:                                              ; preds = %340, %339
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %439

347:                                              ; preds = %341
  br i1 %.4188.ph, label %348, label %368

348:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #12
  %349 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.0248679) #12
  invoke void @_Z16GetFileNamePartsRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS4_S7_S7_(ptr noundef nonnull align 8 dereferenceable(32) %349, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %34)
          to label %350 unwind label %357

350:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #12
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %351 unwind label %359

351:                                              ; preds = %350
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %352 unwind label %361

352:                                              ; preds = %351
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %353 unwind label %363

353:                                              ; preds = %352
  %354 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %35) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #12
  br label %368

355:                                              ; preds = %341
  %356 = landingpad { ptr, i32 }
          cleanup
  br label %432

357:                                              ; preds = %348
  %358 = landingpad { ptr, i32 }
          cleanup
  br label %367

359:                                              ; preds = %350
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %366

361:                                              ; preds = %351
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %365

363:                                              ; preds = %352
  %364 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #12
  br label %365

365:                                              ; preds = %363, %361
  %.pn325 = phi { ptr, i32 } [ %364, %363 ], [ %362, %361 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #12
  br label %366

366:                                              ; preds = %365, %359
  %.pn325.pn = phi { ptr, i32 } [ %.pn325, %365 ], [ %360, %359 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #12
  br label %367

367:                                              ; preds = %366, %357
  %.pn325.pn.pn = phi { ptr, i32 } [ %.pn325.pn, %366 ], [ %358, %357 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #12
  br label %431

368:                                              ; preds = %353, %347
  %369 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.0248679) #12
  %370 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %369) #12
  %371 = add i64 %320, %.0276665
  %372 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  %373 = add i64 %372, %.0268669
  %374 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  %375 = icmp ult i64 %374, %320
  br i1 %375, label %376, label %378

376:                                              ; preds = %368
  %377 = add i32 %.0259674, 1
  br label %382

378:                                              ; preds = %368
  %379 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  %380 = icmp eq i64 %379, %320
  %381 = zext i1 %380 to i64
  %spec.select358 = add i64 %.0249677, %381
  br label %382

382:                                              ; preds = %378, %376
  %.1260 = phi i32 [ %377, %376 ], [ %.0259674, %378 ]
  %.1250 = phi i64 [ %.0249677, %376 ], [ %spec.select358, %378 ]
  br i1 %222, label %389, label %383

383:                                              ; preds = %382
  %384 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  %.not329 = icmp ult i64 %384, %320
  br i1 %.not329, label %389, label %385

385:                                              ; preds = %383
  %386 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIhSaIhEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %389 unwind label %387

387:                                              ; preds = %385
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %431

389:                                              ; preds = %385, %383, %382
  %390 = invoke noundef zeroext i1 @_Z10FileExistsRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %391 unwind label %404

391:                                              ; preds = %389
  %392 = invoke noundef i64 @_Z11GetFileSizeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %393 unwind label %406

393:                                              ; preds = %391
  br i1 %390, label %394, label %.critedge361.thread

.critedge361.thread:                              ; preds = %393
  br i1 %224, label %428, label %420

394:                                              ; preds = %393
  %395 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  %.not330 = icmp ult i64 %395, %392
  %brmerge359 = or i1 %.not330, %222
  %brmerge359.not = xor i1 %brmerge359, true
  %396 = xor i1 %370, true
  %397 = or i1 %.4188.ph, %396
  %or.cond = and i1 %397, %brmerge359.not
  br i1 %or.cond, label %398, label %.critedge361

398:                                              ; preds = %394
  br i1 %.4188.ph, label %399, label %430

399:                                              ; preds = %398
  %400 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  %401 = icmp eq i64 %400, %392
  %402 = select i1 %401, ptr @.str.36, ptr @.str.37
  %403 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %402)
  br label %430

404:                                              ; preds = %389
  %405 = landingpad { ptr, i32 }
          cleanup
  br label %431

406:                                              ; preds = %391
  %407 = landingpad { ptr, i32 }
          cleanup
  br label %431

.critedge361:                                     ; preds = %394
  br i1 %or.cond368, label %.critedge366, label %408

408:                                              ; preds = %.critedge361
  %409 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  %410 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.38, ptr noundef %409)
  br label %411

411:                                              ; preds = %415, %408
  %.0158 = phi i8 [ 0, %408 ], [ %spec.select364, %415 ]
  %412 = call i32 @getchar()
  switch i32 %412, label %415 [
    i32 0, label %417
    i32 -1, label %417
    i32 10, label %417
  ]

413:                                              ; preds = %420
  %414 = landingpad { ptr, i32 }
          cleanup
  br label %431

415:                                              ; preds = %411
  %.not332 = icmp eq i8 %.0158, 0
  %416 = trunc i32 %412 to i8
  %spec.select364 = select i1 %.not332, i8 %416, i8 %.0158
  br label %411

417:                                              ; preds = %411, %411, %411
  %418 = and i8 %.0158, -33
  %419 = icmp eq i8 %418, 89
  br i1 %419, label %.critedge366, label %430

.critedge366:                                     ; preds = %.critedge361, %417
  br i1 %224, label %428, label %420

420:                                              ; preds = %.critedge361.thread, %.critedge366
  %421 = invoke noundef i32 @_ZN7lodepng9save_fileERKSt6vectorIhSaIhEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %422 unwind label %413

422:                                              ; preds = %420
  %.not346 = icmp eq i32 %421, 0
  br i1 %.not346, label %426, label %423

423:                                              ; preds = %422
  %424 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  %425 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.39, ptr noundef %424)
  br label %428

426:                                              ; preds = %422
  %427 = add i32 %.0253675, 1
  br label %428

428:                                              ; preds = %.critedge361.thread, %423, %426, %.critedge366
  %.1254 = phi i32 [ %.0253675, %.critedge366 ], [ %.0253675, %423 ], [ %427, %426 ], [ %.0253675, %.critedge361.thread ]
  %429 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  br label %430

430:                                              ; preds = %428, %417, %398, %399
  %.pn348 = phi i64 [ %392, %399 ], [ %392, %398 ], [ %429, %428 ], [ %392, %417 ]
  %.3256 = phi i32 [ %.0253675, %399 ], [ %.0253675, %398 ], [ %.1254, %428 ], [ %.0253675, %417 ]
  %.2273 = add i64 %.pn348, %.0271667
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #12
  br label %433

431:                                              ; preds = %387, %406, %413, %404, %367
  %.pn333.pn.pn.pn = phi { ptr, i32 } [ %.pn325.pn.pn, %367 ], [ %388, %387 ], [ %405, %404 ], [ %414, %413 ], [ %407, %406 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  br label %432

432:                                              ; preds = %431, %355
  %.pn333.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn333.pn.pn.pn, %431 ], [ %356, %355 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #12
  br label %439

433:                                              ; preds = %430, %.critedge357
  %.1277 = phi i64 [ %.0276665, %.critedge357 ], [ %371, %430 ]
  %.3274 = phi i64 [ %.0271667, %.critedge357 ], [ %.2273, %430 ]
  %.1269 = phi i64 [ %.0268669, %.critedge357 ], [ %373, %430 ]
  %.1266 = phi i64 [ %318, %.critedge357 ], [ %.0265671, %430 ]
  %.2261 = phi i32 [ %.0259674, %.critedge357 ], [ %.1260, %430 ]
  %.4257 = phi i32 [ %.0253675, %.critedge357 ], [ %.3256, %430 ]
  %.2251 = phi i64 [ %.0249677, %.critedge357 ], [ %.1250, %430 ]
  %434 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.40)
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #12
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(528) %24) #12
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %24) #12
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #12
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #12
  br label %435

435:                                              ; preds = %232, %433
  %.2278 = phi i64 [ %.0276665, %232 ], [ %.1277, %433 ]
  %.4275 = phi i64 [ %.0271667, %232 ], [ %.3274, %433 ]
  %.2270 = phi i64 [ %.0268669, %232 ], [ %.1269, %433 ]
  %.2267 = phi i64 [ %.0265671, %232 ], [ %.1266, %433 ]
  %.1264 = phi i64 [ %.0263673, %232 ], [ %238, %433 ]
  %.3262 = phi i32 [ %.0259674, %232 ], [ %.2261, %433 ]
  %.5258 = phi i32 [ %.0253675, %232 ], [ %.4257, %433 ]
  %.3252 = phi i64 [ %.0249677, %232 ], [ %.2251, %433 ]
  %436 = add nuw i64 %.0248679, 1
  %437 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  %438 = icmp ult i64 %436, %437
  br i1 %438, label %226, label %._crit_edge685, !llvm.loop !41

439:                                              ; preds = %330, %345, %432, %276, %252
  %.pn333.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %253, %252 ], [ %277, %276 ], [ %.pn333.pn.pn.pn.pn, %432 ], [ %346, %345 ], [ %331, %330 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #12
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(528) %24) #12
  br label %440

440:                                              ; preds = %439, %250
  %.pn333.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn333.pn.pn.pn.pn.pn.pn, %439 ], [ %251, %250 ]
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %24) #12
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #12
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #12
  br label %465

441:                                              ; preds = %._crit_edge685
  %442 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41)
  %443 = trunc i64 %.1264 to i32
  %444 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.42, i32 noundef %443)
  %445 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.43, i32 noundef %.3262)
  %.not315 = icmp eq i64 %.3252, 0
  br i1 %.not315, label %451, label %446

446:                                              ; preds = %441
  %447 = trunc i64 %.3252 to i32
  %448 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.44, i32 noundef %447)
  br label %451

449:                                              ; preds = %458, %457, %456
  %450 = landingpad { ptr, i32 }
          cleanup
  br label %465

451:                                              ; preds = %446, %441
  %452 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.45, i32 noundef %.5258)
  %.not316 = icmp eq i64 %.2267, 0
  br i1 %.not316, label %456, label %453

453:                                              ; preds = %451
  %454 = trunc i64 %.2267 to i32
  %455 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.46, i32 noundef %454)
  br label %456

456:                                              ; preds = %453, %451
  invoke void @_Z9PrintSizePKcm(ptr noundef nonnull @.str.47, i64 noundef %.2278)
          to label %457 unwind label %449

457:                                              ; preds = %456
  invoke void @_Z15PrintResultSizePKcmm(ptr noundef nonnull @.str.48, i64 noundef %.2278, i64 noundef %.4275)
          to label %458 unwind label %449

458:                                              ; preds = %457
  invoke void @_Z15PrintResultSizePKcmm(ptr noundef nonnull @.str.49, i64 noundef %.2278, i64 noundef %.2270)
          to label %._crit_edge685.thread unwind label %449

._crit_edge685.thread:                            ; preds = %218, %458, %._crit_edge685
  %.0265.lcssa710 = phi i64 [ %.2267, %458 ], [ %.2267, %._crit_edge685 ], [ 0, %218 ]
  %459 = trunc nuw i8 %.6182.ph to i1
  br i1 %459, label %460, label %462

460:                                              ; preds = %._crit_edge685.thread
  %461 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.50)
  br label %462

462:                                              ; preds = %460, %._crit_edge685.thread
  %463 = trunc i64 %.0265.lcssa710 to i32
  br label %464

464:                                              ; preds = %.thread377, %216, %462
  %.13 = phi i32 [ %463, %462 ], [ %.11, %.thread377 ], [ 0, %216 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #12
  call void @_ZN16ZopfliPNGOptionsD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %3) #12
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %3) #12
  br label %467

465:                                              ; preds = %449, %440, %235, %214, %206
  %.pn333.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %215, %214 ], [ %.pn310.pn, %206 ], [ %450, %449 ], [ %.pn333.pn.pn.pn.pn.pn.pn.pn, %440 ], [ %236, %235 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #12
  br label %466

466:                                              ; preds = %465, %50
  %.pn333.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn333.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %465 ], [ %51, %50 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #12
  call void @_ZN16ZopfliPNGOptionsD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %3) #12
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %3) #12
  resume { ptr, i32 } %.pn333.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

467:                                              ; preds = %464, %39
  %.14 = phi i32 [ 0, %39 ], [ %.13, %464 ]
  ret i32 %.14
}

declare void @_ZN16ZopfliPNGOptionsC1Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: nounwind
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext, i64 noundef) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI23ZopfliPNGFilterStrategySaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_m(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

declare void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(528)) unnamed_addr #5

declare noundef i32 @_ZN7lodepng9load_fileERSt6vectorIhSaIhEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

declare noundef i32 @_Z17ZopfliPNGOptimizeRKSt6vectorIhSaIhEERK16ZopfliPNGOptionsbPS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(80), i1 noundef zeroext, ptr noundef) local_unnamed_addr #5

declare noundef ptr @_Z18lodepng_error_textj(i32 noundef) local_unnamed_addr #5

declare noundef i32 @_ZN7lodepng6decodeERSt6vectorIhSaIhEERjS4_RKS2_16LodePNGColorTypej(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIhSaIhEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

declare noundef i32 @_ZN7lodepng12getChunkInfoERSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EERS0_ImSaImEERKS0_IhSaIhEE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress nofree nounwind uwtable
declare noundef i32 @getchar() local_unnamed_addr #10

declare noundef i32 @_ZN7lodepng9save_fileERKSt6vectorIhSaIhEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(528)) unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN16ZopfliPNGOptionsD2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !14, i64 64}
!13 = !{!"_ZTS16ZopfliPNGOptions", !14, i64 0, !14, i64 1, !14, i64 2, !15, i64 8, !14, i64 32, !14, i64 33, !19, i64 40, !14, i64 64, !11, i64 68, !11, i64 72, !11, i64 76}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTSSt6vectorI23ZopfliPNGFilterStrategySaIS0_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseI23ZopfliPNGFilterStrategySaIS0_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseI23ZopfliPNGFilterStrategySaIS0_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseI23ZopfliPNGFilterStrategySaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!13, !14, i64 0}
!26 = !{!13, !14, i64 1}
!27 = !{!13, !14, i64 2}
!28 = !{!13, !11, i64 68}
!29 = !{!13, !11, i64 72}
!30 = !{!31, !31, i64 0}
!31 = !{!"_ZTS23ZopfliPNGFilterStrategy", !7, i64 0}
!32 = !{!13, !14, i64 32}
!33 = distinct !{!33, !24}
!34 = distinct !{!34, !24}
!35 = !{!13, !14, i64 33}
!36 = distinct !{!36, !24}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = distinct !{!39, !24}
!40 = distinct !{!40, !24}
!41 = distinct !{!41, !24}


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