; LLVM IR from fhanau/Efficient-Compression-Tool :: src/leanify/zip.ll (ZN3Zip7LeanifyERK10ECTOptionsPm)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"struct.(anonymous namespace)::EOCD" = type <{ [4 x i8], i16, i16, i16, i16, i32, i32, i16 }>
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<(anonymous namespace)::CDHeader, std::allocator<(anonymous namespace)::CDHeader>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::CDHeader, std::allocator<(anonymous namespace)::CDHeader>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::CDHeader, std::allocator<(anonymous namespace)::CDHeader>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::CDHeader, std::allocator<(anonymous namespace)::CDHeader>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"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] }
%"class.std::allocator" = type { i8 }
%class.Zip = type { ptr, i64 }
%"struct.(anonymous namespace)::CDHeader" = type <{ [4 x i8], i16, i16, i16, i16, i16, i16, i32, i32, i32, i16, i16, i16, i16, i16, i32, i32 }>
%"struct.(anonymous namespace)::LocalHeader" = type <{ [4 x i8], i16, i16, i16, i16, i16, i32, i32, i32, i16, i16 }>
%struct.ECTOptions = type { i32, i32, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i8 }

@_ZN3Zip12header_magicE = external dso_local constant [4 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.11 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [60 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3Zip14RecompressFileEPhjjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK10ECTOptions(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(40)) #0 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #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 nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_ZN3Zip7LeanifyERK10ECTOptionsPm(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(40) %1, ptr noundef %2) #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i64, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i64, align 8
  %10 = alloca i32, align 4
  %11 = alloca i64, align 8
  %12 = alloca %"struct.(anonymous namespace)::EOCD", align 1
  %13 = alloca %"class.std::vector.3", align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i64, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca i32, align 4
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i1, align 1
  %36 = alloca i64, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca i1, align 1
  %42 = alloca ptr, align 8
  %43 = alloca i64, align 8
  %44 = alloca ptr, align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %47 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %48 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  %49 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %50 = load ptr, ptr %49, align 8, !tbaa !9
  %51 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %52 = load ptr, ptr %51, align 8, !tbaa !9
  %53 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 1
  %54 = load i64, ptr %53, align 8, !tbaa !12
  %55 = getelementptr inbounds i8, ptr %52, i64 %54
  %56 = call noundef ptr @_ZSt3endIKhLm4EEPT_RAT0__S1_(ptr noundef nonnull align 1 dereferenceable(4) @_ZN3Zip12header_magicE) #10
  %57 = call noundef ptr @_ZSt6searchIPhPKhET_S3_S3_T0_S4_(ptr noundef %50, ptr noundef %55, ptr noundef @_ZN3Zip12header_magicE, ptr noundef %56)
  store ptr %57, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  %58 = load ptr, ptr %8, align 8, !tbaa !5
  %59 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %60 = load ptr, ptr %59, align 8, !tbaa !9
  %61 = ptrtoint ptr %58 to i64
  %62 = ptrtoint ptr %60 to i64
  %63 = sub i64 %61, %62
  store i64 %63, ptr %9, align 8, !tbaa !13
  %64 = load i64, ptr %9, align 8, !tbaa !13
  %65 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 1
  %66 = load i64, ptr %65, align 8, !tbaa !12
  %67 = icmp eq i64 %64, %66
  br i1 %67, label %68, label %73

68:                                               ; preds = %3
  %69 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.11)
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %71 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 1
  %72 = load i64, ptr %71, align 8, !tbaa !12
  store i64 %72, ptr %4, align 8
  store i32 1, ptr %10, align 4
  br label %733

73:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #10
  store i64 0, ptr %11, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 22, ptr %12) #10
  call void @_ZN12_GLOBAL__N_14EOCDC2Ev(ptr noundef nonnull align 1 dereferenceable(22) %12) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #10
  call void @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  %74 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %75 = load ptr, ptr %74, align 8, !tbaa !9
  %76 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 1
  %77 = load i64, ptr %76, align 8, !tbaa !12
  %78 = getelementptr inbounds i8, ptr %75, i64 %77
  store ptr %78, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %79 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %80 = load ptr, ptr %14, align 8, !tbaa !5
  %81 = getelementptr inbounds i8, ptr %80, i64 -65535
  %82 = getelementptr inbounds i8, ptr %81, i64 -4
  store ptr %82, ptr %16, align 8, !tbaa !5
  %83 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIPhERKT_S3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %84 unwind label %110

84:                                               ; preds = %73
  %85 = load ptr, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  store ptr %85, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  store ptr null, ptr %19, align 8, !tbaa !5
  br label %86

86:                                               ; preds = %175, %173, %142, %84
  br label %87

87:                                               ; preds = %86
  %88 = load ptr, ptr %19, align 8, !tbaa !5
  %89 = icmp ne ptr %88, null
  br i1 %89, label %90, label %118

90:                                               ; preds = %87
  %91 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.12)
          to label %92 unwind label %114

92:                                               ; preds = %90
  %93 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef @_ZSt3hexRSt8ios_base)
          to label %94 unwind label %114

94:                                               ; preds = %92
  %95 = load ptr, ptr %19, align 8, !tbaa !5
  %96 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %97 = load ptr, ptr %96, align 8, !tbaa !9
  %98 = ptrtoint ptr %95 to i64
  %99 = ptrtoint ptr %97 to i64
  %100 = sub i64 %98, %99
  %101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %93, i64 noundef %100)
          to label %102 unwind label %114

102:                                              ; preds = %94
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef @_ZSt3decRSt8ios_base)
          to label %104 unwind label %114

104:                                              ; preds = %102
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef @.str.13)
          to label %106 unwind label %114

106:                                              ; preds = %104
  %107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %108 unwind label %114

108:                                              ; preds = %106
  %109 = load ptr, ptr %19, align 8, !tbaa !5
  store ptr %109, ptr %14, align 8, !tbaa !5
  br label %118

110:                                              ; preds = %73
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %17, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %732

114:                                              ; preds = %132, %130, %118, %106, %104, %102, %94, %92, %90
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %17, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %18, align 4
  br label %731

118:                                              ; preds = %108, %87
  %119 = load ptr, ptr %15, align 8, !tbaa !5
  %120 = load ptr, ptr %14, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.(anonymous namespace)::EOCD", ptr %12, i32 0, i32 0
  %122 = getelementptr inbounds [4 x i8], ptr %121, i64 0, i64 0
  %123 = getelementptr inbounds %"struct.(anonymous namespace)::EOCD", ptr %12, i32 0, i32 0
  %124 = call noundef ptr @_ZSt3endIhLm4EEPT_RAT0__S0_(ptr noundef nonnull align 1 dereferenceable(4) %123) #10
  %125 = invoke noundef ptr @_ZSt8find_endIPhS0_ET_S1_S1_T0_S2_(ptr noundef %119, ptr noundef %120, ptr noundef %122, ptr noundef %124)
          to label %126 unwind label %114

126:                                              ; preds = %118
  store ptr %125, ptr %19, align 8, !tbaa !5
  %127 = load ptr, ptr %19, align 8, !tbaa !5
  %128 = load ptr, ptr %14, align 8, !tbaa !5
  %129 = icmp eq ptr %127, %128
  br i1 %129, label %130, label %137

130:                                              ; preds = %126
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.14)
          to label %132 unwind label %114

132:                                              ; preds = %130
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %134 unwind label %114

134:                                              ; preds = %132
  %135 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 1
  %136 = load i64, ptr %135, align 8, !tbaa !12
  store i64 %136, ptr %4, align 8
  store i32 1, ptr %10, align 4
  br label %730

137:                                              ; preds = %126
  %138 = load ptr, ptr %19, align 8, !tbaa !5
  %139 = getelementptr inbounds i8, ptr %138, i64 22
  %140 = load ptr, ptr %14, align 8, !tbaa !5
  %141 = icmp ugt ptr %139, %140
  br i1 %141, label %142, label %143

142:                                              ; preds = %137
  br label %86, !llvm.loop !14

143:                                              ; preds = %137
  %144 = load ptr, ptr %19, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %12, ptr align 1 %144, i64 22, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %145 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %146 = load ptr, ptr %145, align 8, !tbaa !9
  %147 = getelementptr inbounds %"struct.(anonymous namespace)::EOCD", ptr %12, i32 0, i32 6
  %148 = load i32, ptr %147, align 1, !tbaa !16
  %149 = zext i32 %148 to i64
  %150 = getelementptr inbounds i8, ptr %146, i64 %149
  %151 = getelementptr inbounds %"struct.(anonymous namespace)::EOCD", ptr %12, i32 0, i32 5
  %152 = load i32, ptr %151, align 1, !tbaa !20
  %153 = zext i32 %152 to i64
  %154 = getelementptr inbounds i8, ptr %150, i64 %153
  store ptr %154, ptr %20, align 8, !tbaa !5
  %155 = load ptr, ptr %20, align 8, !tbaa !5
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = icmp ugt ptr %155, %156
  br i1 %157, label %158, label %159

158:                                              ; preds = %143
  store i32 2, ptr %10, align 4
  br label %173, !llvm.loop !14

159:                                              ; preds = %143
  %160 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %161 = load ptr, ptr %160, align 8, !tbaa !9
  %162 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 1
  %163 = load i64, ptr %162, align 8, !tbaa !12
  %164 = load i64, ptr %9, align 8, !tbaa !13
  %165 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_112GetCDHeadersEPKhmRKNS_4EOCDEmPSt6vectorINS_8CDHeaderESaIS6_EEPm(ptr noundef %161, i64 noundef %163, ptr noundef nonnull align 1 dereferenceable(22) %12, i64 noundef %164, ptr noundef %13, ptr noundef %11)
          to label %166 unwind label %168

166:                                              ; preds = %159
  br i1 %165, label %167, label %172

167:                                              ; preds = %166
  store i32 3, ptr %10, align 4
  br label %173

168:                                              ; preds = %159
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %17, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %731

172:                                              ; preds = %166
  store i32 0, ptr %10, align 4
  br label %173

173:                                              ; preds = %172, %167, %158
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  %174 = load i32, ptr %10, align 4
  switch i32 %174, label %740 [
    i32 0, label %175
    i32 2, label %86
    i32 3, label %176
  ]

175:                                              ; preds = %173
  br label %86, !llvm.loop !14

176:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %177 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %178 = load ptr, ptr %177, align 8, !tbaa !9
  store ptr %178, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %179 = load ptr, ptr %21, align 8, !tbaa !5
  %180 = load i64, ptr %11, align 8, !tbaa !13
  %181 = getelementptr inbounds i8, ptr %179, i64 %180
  store ptr %181, ptr %22, align 8, !tbaa !5
  %182 = load ptr, ptr %21, align 8, !tbaa !5
  %183 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %184 = load ptr, ptr %183, align 8, !tbaa !9
  %185 = load i64, ptr %9, align 8, !tbaa !13
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %182, ptr align 1 %184, i64 %185, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %186 = load ptr, ptr %21, align 8, !tbaa !5
  %187 = load i64, ptr %9, align 8, !tbaa !13
  %188 = getelementptr inbounds i8, ptr %186, i64 %187
  store ptr %188, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  store ptr %13, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  %189 = load ptr, ptr %24, align 8, !tbaa !5
  %190 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %189) #10
  %191 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %25, i32 0, i32 0
  store ptr %190, ptr %191, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %192 = load ptr, ptr %24, align 8, !tbaa !5
  %193 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %192) #10
  %194 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  store ptr %193, ptr %194, align 8
  br label %195

195:                                              ; preds = %647, %176
  %196 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  br i1 %196, label %198, label %197

197:                                              ; preds = %195
  store i32 4, ptr %10, align 4
  br label %653

198:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %199 = call noundef nonnull align 1 dereferenceable(46) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  store ptr %199, ptr %27, align 8, !tbaa !5
  %200 = load ptr, ptr %7, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !13
  %202 = add i64 %201, 1
  store i64 %202, ptr %200, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %203 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %204 = load ptr, ptr %203, align 8, !tbaa !9
  %205 = load i64, ptr %11, align 8, !tbaa !13
  %206 = getelementptr inbounds i8, ptr %204, i64 %205
  %207 = load ptr, ptr %27, align 8, !tbaa !5
  %208 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %207, i32 0, i32 16
  %209 = load i32, ptr %208, align 1, !tbaa !21
  %210 = zext i32 %209 to i64
  %211 = getelementptr inbounds i8, ptr %206, i64 %210
  store ptr %211, ptr %28, align 8, !tbaa !5
  %212 = load ptr, ptr %23, align 8, !tbaa !5
  %213 = load ptr, ptr %22, align 8, !tbaa !5
  %214 = ptrtoint ptr %212 to i64
  %215 = ptrtoint ptr %213 to i64
  %216 = sub i64 %214, %215
  %217 = trunc i64 %216 to i32
  %218 = load ptr, ptr %27, align 8, !tbaa !5
  %219 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %218, i32 0, i32 16
  store i32 %217, ptr %219, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %220 = load ptr, ptr %27, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %220, i32 0, i32 10
  %222 = load i16, ptr %221, align 1, !tbaa !23
  %223 = zext i16 %222 to i64
  %224 = add i64 30, %223
  store i64 %224, ptr %29, align 8, !tbaa !13
  %225 = load ptr, ptr %23, align 8, !tbaa !5
  %226 = load ptr, ptr %28, align 8, !tbaa !5
  %227 = load i64, ptr %29, align 8, !tbaa !13
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %225, ptr align 1 %226, i64 %227, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %228 = load ptr, ptr %23, align 8, !tbaa !5
  store ptr %228, ptr %30, align 8, !tbaa !5
  %229 = load ptr, ptr %30, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %229, i32 0, i32 10
  %231 = load i16, ptr %230, align 1, !tbaa !24
  %232 = icmp ne i16 %231, 0
  br i1 %232, label %233, label %243

233:                                              ; preds = %198
  %234 = load ptr, ptr %30, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %234, i32 0, i32 10
  %236 = load i16, ptr %235, align 1, !tbaa !24
  %237 = zext i16 %236 to i32
  %238 = load ptr, ptr %28, align 8, !tbaa !5
  %239 = sext i32 %237 to i64
  %240 = getelementptr inbounds i8, ptr %238, i64 %239
  store ptr %240, ptr %28, align 8, !tbaa !5
  %241 = load ptr, ptr %30, align 8, !tbaa !5
  %242 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %241, i32 0, i32 10
  store i16 0, ptr %242, align 1, !tbaa !24
  br label %243

243:                                              ; preds = %233, %198
  %244 = load ptr, ptr %30, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %244, i32 0, i32 2
  %246 = load i16, ptr %245, align 1, !tbaa !26
  %247 = zext i16 %246 to i32
  %248 = and i32 %247, 8
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %250, label %278

250:                                              ; preds = %243
  %251 = load ptr, ptr %30, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %251, i32 0, i32 2
  %253 = load i16, ptr %252, align 1, !tbaa !26
  %254 = zext i16 %253 to i32
  %255 = and i32 %254, -9
  %256 = trunc i32 %255 to i16
  store i16 %256, ptr %252, align 1, !tbaa !26
  %257 = load ptr, ptr %27, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %257, i32 0, i32 3
  %259 = load i16, ptr %258, align 1, !tbaa !27
  %260 = zext i16 %259 to i32
  %261 = and i32 %260, -9
  %262 = trunc i32 %261 to i16
  store i16 %262, ptr %258, align 1, !tbaa !27
  %263 = load ptr, ptr %27, align 8, !tbaa !5
  %264 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %263, i32 0, i32 7
  %265 = load i32, ptr %264, align 1, !tbaa !28
  %266 = load ptr, ptr %30, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %266, i32 0, i32 6
  store i32 %265, ptr %267, align 1, !tbaa !29
  %268 = load ptr, ptr %27, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %268, i32 0, i32 8
  %270 = load i32, ptr %269, align 1, !tbaa !30
  %271 = load ptr, ptr %30, align 8, !tbaa !5
  %272 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %271, i32 0, i32 7
  store i32 %270, ptr %272, align 1, !tbaa !31
  %273 = load ptr, ptr %27, align 8, !tbaa !5
  %274 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %273, i32 0, i32 9
  %275 = load i32, ptr %274, align 1, !tbaa !32
  %276 = load ptr, ptr %30, align 8, !tbaa !5
  %277 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %276, i32 0, i32 8
  store i32 %275, ptr %277, align 1, !tbaa !33
  br label %278

278:                                              ; preds = %250, %243
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #10
  %279 = load ptr, ptr %30, align 8, !tbaa !5
  %280 = getelementptr inbounds i8, ptr %279, i64 30
  %281 = load ptr, ptr %30, align 8, !tbaa !5
  %282 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %281, i32 0, i32 9
  %283 = load i16, ptr %282, align 1, !tbaa !34
  %284 = zext i16 %283 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcmRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef %280, i64 noundef %284, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %285 unwind label %310

285:                                              ; preds = %278
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #10
  %286 = load i64, ptr %29, align 8, !tbaa !13
  %287 = load ptr, ptr %28, align 8, !tbaa !5
  %288 = getelementptr inbounds i8, ptr %287, i64 %286
  store ptr %288, ptr %28, align 8, !tbaa !5
  %289 = load i64, ptr %29, align 8, !tbaa !13
  %290 = load ptr, ptr %23, align 8, !tbaa !5
  %291 = getelementptr inbounds i8, ptr %290, i64 %289
  store ptr %291, ptr %23, align 8, !tbaa !5
  %292 = load ptr, ptr %28, align 8, !tbaa !5
  %293 = load ptr, ptr %30, align 8, !tbaa !5
  %294 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %293, i32 0, i32 7
  %295 = load i32, ptr %294, align 1, !tbaa !31
  %296 = zext i32 %295 to i64
  %297 = getelementptr inbounds i8, ptr %292, i64 %296
  %298 = load ptr, ptr %14, align 8, !tbaa !5
  %299 = icmp ugt ptr %297, %298
  br i1 %299, label %300, label %318

300:                                              ; preds = %285
  %301 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.15)
          to label %302 unwind label %314

302:                                              ; preds = %300
  %303 = load ptr, ptr %30, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %303, i32 0, i32 7
  %305 = load i32, ptr %304, align 1, !tbaa !31
  %306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %301, i32 noundef %305)
          to label %307 unwind label %314

307:                                              ; preds = %302
  %308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %309 unwind label %314

309:                                              ; preds = %307
  store i32 4, ptr %10, align 4
  br label %641

310:                                              ; preds = %278
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %17, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #10
  br label %652

314:                                              ; preds = %307, %302, %300
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %17, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %18, align 4
  br label %651

318:                                              ; preds = %285
  %319 = load ptr, ptr %30, align 8, !tbaa !5
  %320 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %319, i32 0, i32 3
  %321 = load i16, ptr %320, align 1, !tbaa !35
  %322 = zext i16 %321 to i32
  %323 = icmp eq i32 %322, 0
  br i1 %323, label %324, label %409

324:                                              ; preds = %318
  %325 = load ptr, ptr %30, align 8, !tbaa !5
  %326 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %325, i32 0, i32 7
  %327 = load i32, ptr %326, align 1, !tbaa !31
  %328 = icmp ne i32 %327, 0
  br i1 %328, label %329, label %408

329:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  %330 = load ptr, ptr %6, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.ECTOptions, ptr %330, i32 0, i32 8
  %332 = load i8, ptr %331, align 1, !tbaa !36, !range !39, !noundef !40
  %333 = trunc i8 %332 to i1
  store i1 false, ptr %35, align 1
  br i1 %333, label %334, label %338

334:                                              ; preds = %329
  %335 = load ptr, ptr %30, align 8, !tbaa !5
  %336 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %335, i32 0, i32 7
  %337 = load i32, ptr %336, align 1, !tbaa !31
  br label %353

338:                                              ; preds = %329
  %339 = load ptr, ptr %28, align 8, !tbaa !5
  %340 = load ptr, ptr %30, align 8, !tbaa !5
  %341 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %340, i32 0, i32 7
  %342 = load i32, ptr %341, align 1, !tbaa !31
  %343 = load ptr, ptr %28, align 8, !tbaa !5
  %344 = load ptr, ptr %23, align 8, !tbaa !5
  %345 = ptrtoint ptr %343 to i64
  %346 = ptrtoint ptr %344 to i64
  %347 = sub i64 %345, %346
  %348 = trunc i64 %347 to i32
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %349 unwind label %370

349:                                              ; preds = %338
  store i1 true, ptr %35, align 1
  %350 = load ptr, ptr %6, align 8, !tbaa !5
  %351 = invoke noundef i32 @_ZN3Zip14RecompressFileEPhjjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK10ECTOptions(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef %339, i32 noundef %342, i32 noundef %348, ptr noundef %34, ptr noundef nonnull align 4 dereferenceable(40) %350)
          to label %352 unwind label %374

352:                                              ; preds = %349
  br label %353

353:                                              ; preds = %352, %334
  %354 = phi i32 [ %337, %334 ], [ %351, %352 ]
  %355 = load i1, ptr %35, align 1
  br i1 %355, label %356, label %357

356:                                              ; preds = %353
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  br label %357

357:                                              ; preds = %356, %353
  store i32 %354, ptr %33, align 4, !tbaa !41
  %358 = load i32, ptr %33, align 4, !tbaa !41
  %359 = load ptr, ptr %30, align 8, !tbaa !5
  %360 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %359, i32 0, i32 7
  %361 = load i32, ptr %360, align 1, !tbaa !31
  %362 = icmp eq i32 %358, %361
  br i1 %362, label %363, label %381

363:                                              ; preds = %357
  %364 = load ptr, ptr %23, align 8, !tbaa !5
  %365 = load ptr, ptr %28, align 8, !tbaa !5
  %366 = load ptr, ptr %30, align 8, !tbaa !5
  %367 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %366, i32 0, i32 7
  %368 = load i32, ptr %367, align 1, !tbaa !31
  %369 = zext i32 %368 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %364, ptr align 1 %365, i64 %369, i1 false)
  br label %381

370:                                              ; preds = %381, %338
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %17, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %18, align 4
  br label %407

374:                                              ; preds = %349
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %17, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %18, align 4
  %378 = load i1, ptr %35, align 1
  br i1 %378, label %379, label %380

379:                                              ; preds = %374
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  br label %380

380:                                              ; preds = %379, %374
  br label %407

381:                                              ; preds = %363, %357
  %382 = load ptr, ptr %23, align 8, !tbaa !5
  %383 = load i32, ptr %33, align 4, !tbaa !41
  %384 = invoke i64 @crc32(i64 noundef 0, ptr noundef %382, i32 noundef %383)
          to label %385 unwind label %370

385:                                              ; preds = %381
  %386 = trunc i64 %384 to i32
  %387 = load ptr, ptr %30, align 8, !tbaa !5
  %388 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %387, i32 0, i32 6
  store i32 %386, ptr %388, align 1, !tbaa !29
  %389 = load ptr, ptr %27, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %389, i32 0, i32 7
  store i32 %386, ptr %390, align 1, !tbaa !28
  %391 = load i32, ptr %33, align 4, !tbaa !41
  %392 = load ptr, ptr %30, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %392, i32 0, i32 7
  store i32 %391, ptr %393, align 1, !tbaa !31
  %394 = load ptr, ptr %27, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %394, i32 0, i32 8
  store i32 %391, ptr %395, align 1, !tbaa !30
  %396 = load i32, ptr %33, align 4, !tbaa !41
  %397 = load ptr, ptr %30, align 8, !tbaa !5
  %398 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %397, i32 0, i32 8
  store i32 %396, ptr %398, align 1, !tbaa !33
  %399 = load ptr, ptr %27, align 8, !tbaa !5
  %400 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %399, i32 0, i32 9
  store i32 %396, ptr %400, align 1, !tbaa !32
  %401 = load ptr, ptr %30, align 8, !tbaa !5
  %402 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %401, i32 0, i32 7
  %403 = load i32, ptr %402, align 1, !tbaa !31
  %404 = load ptr, ptr %23, align 8, !tbaa !5
  %405 = zext i32 %403 to i64
  %406 = getelementptr inbounds i8, ptr %404, i64 %405
  store ptr %406, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %408

407:                                              ; preds = %380, %370
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %651

408:                                              ; preds = %385, %324
  store i32 5, ptr %10, align 4
  br label %641

409:                                              ; preds = %318
  %410 = load ptr, ptr %30, align 8, !tbaa !5
  %411 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %410, i32 0, i32 3
  %412 = load i16, ptr %411, align 1, !tbaa !35
  %413 = zext i16 %412 to i32
  %414 = icmp ne i32 %413, 8
  br i1 %414, label %422, label %415

415:                                              ; preds = %409
  %416 = load ptr, ptr %30, align 8, !tbaa !5
  %417 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %416, i32 0, i32 2
  %418 = load i16, ptr %417, align 1, !tbaa !26
  %419 = zext i16 %418 to i32
  %420 = and i32 %419, 1
  %421 = icmp ne i32 %420, 0
  br i1 %421, label %422, label %435

422:                                              ; preds = %415, %409
  %423 = load ptr, ptr %23, align 8, !tbaa !5
  %424 = load ptr, ptr %28, align 8, !tbaa !5
  %425 = load ptr, ptr %30, align 8, !tbaa !5
  %426 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %425, i32 0, i32 7
  %427 = load i32, ptr %426, align 1, !tbaa !31
  %428 = zext i32 %427 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %423, ptr align 1 %424, i64 %428, i1 false)
  %429 = load ptr, ptr %30, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %429, i32 0, i32 7
  %431 = load i32, ptr %430, align 1, !tbaa !31
  %432 = load ptr, ptr %23, align 8, !tbaa !5
  %433 = zext i32 %431 to i64
  %434 = getelementptr inbounds i8, ptr %432, i64 %433
  store ptr %434, ptr %23, align 8, !tbaa !5
  store i32 5, ptr %10, align 4
  br label %641

435:                                              ; preds = %415
  %436 = load ptr, ptr %30, align 8, !tbaa !5
  %437 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %436, i32 0, i32 8
  %438 = load i32, ptr %437, align 1, !tbaa !33
  %439 = icmp eq i32 %438, 0
  br i1 %439, label %440, label %449

440:                                              ; preds = %435
  %441 = load ptr, ptr %30, align 8, !tbaa !5
  %442 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %441, i32 0, i32 3
  store i16 0, ptr %442, align 1, !tbaa !35
  %443 = load ptr, ptr %27, align 8, !tbaa !5
  %444 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %443, i32 0, i32 4
  store i16 0, ptr %444, align 1, !tbaa !42
  %445 = load ptr, ptr %30, align 8, !tbaa !5
  %446 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %445, i32 0, i32 7
  store i32 0, ptr %446, align 1, !tbaa !31
  %447 = load ptr, ptr %27, align 8, !tbaa !5
  %448 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %447, i32 0, i32 8
  store i32 0, ptr %448, align 1, !tbaa !30
  store i32 5, ptr %10, align 4
  br label %641

449:                                              ; preds = %435
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  store i64 0, ptr %36, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #10
  store ptr null, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  %450 = load ptr, ptr %28, align 8, !tbaa !5
  %451 = load ptr, ptr %30, align 8, !tbaa !5
  %452 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %451, i32 0, i32 7
  %453 = load i32, ptr %452, align 1, !tbaa !31
  %454 = zext i32 %453 to i64
  %455 = invoke noundef i32 @_Z15lodepng_inflatePPhPmPKhm(ptr noundef %37, ptr noundef %36, ptr noundef %450, i64 noundef %454)
          to label %456 unwind label %496

456:                                              ; preds = %449
  store i32 %455, ptr %38, align 4, !tbaa !41
  %457 = load i32, ptr %38, align 4, !tbaa !41
  %458 = icmp ne i32 %457, 0
  br i1 %458, label %478, label %459

459:                                              ; preds = %456
  %460 = load i64, ptr %36, align 8, !tbaa !13
  %461 = load ptr, ptr %30, align 8, !tbaa !5
  %462 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %461, i32 0, i32 8
  %463 = load i32, ptr %462, align 1, !tbaa !33
  %464 = zext i32 %463 to i64
  %465 = icmp ne i64 %460, %464
  br i1 %465, label %478, label %466

466:                                              ; preds = %459
  %467 = load ptr, ptr %30, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %467, i32 0, i32 6
  %469 = load i32, ptr %468, align 1, !tbaa !29
  %470 = zext i32 %469 to i64
  %471 = load ptr, ptr %37, align 8, !tbaa !5
  %472 = load ptr, ptr %30, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %472, i32 0, i32 8
  %474 = load i32, ptr %473, align 1, !tbaa !33
  %475 = invoke i64 @crc32(i64 noundef 0, ptr noundef %471, i32 noundef %474)
          to label %476 unwind label %496

476:                                              ; preds = %466
  %477 = icmp ne i64 %470, %475
  br i1 %477, label %478, label %500

478:                                              ; preds = %476, %459, %456
  %479 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.16)
          to label %480 unwind label %496

480:                                              ; preds = %478
  %481 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %479, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %482 unwind label %496

482:                                              ; preds = %480
  %483 = load ptr, ptr %37, align 8, !tbaa !5
  call void @free(ptr noundef %483) #10
  %484 = load ptr, ptr %23, align 8, !tbaa !5
  %485 = load ptr, ptr %28, align 8, !tbaa !5
  %486 = load ptr, ptr %30, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %486, i32 0, i32 7
  %488 = load i32, ptr %487, align 1, !tbaa !31
  %489 = zext i32 %488 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %484, ptr align 1 %485, i64 %489, i1 false)
  %490 = load ptr, ptr %30, align 8, !tbaa !5
  %491 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %490, i32 0, i32 7
  %492 = load i32, ptr %491, align 1, !tbaa !31
  %493 = load ptr, ptr %23, align 8, !tbaa !5
  %494 = zext i32 %492 to i64
  %495 = getelementptr inbounds i8, ptr %493, i64 %494
  store ptr %495, ptr %23, align 8, !tbaa !5
  store i32 5, ptr %10, align 4
  br label %640

496:                                              ; preds = %480, %478, %466, %449
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %17, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %18, align 4
  br label %650

500:                                              ; preds = %476
  %501 = load ptr, ptr %37, align 8, !tbaa !5
  %502 = load i64, ptr %36, align 8, !tbaa !13
  %503 = add i64 %502, 16
  %504 = call ptr @realloc(ptr noundef %501, i64 noundef %503) #11
  store ptr %504, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  %505 = load ptr, ptr %6, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.ECTOptions, ptr %505, i32 0, i32 8
  %507 = load i8, ptr %506, align 1, !tbaa !36, !range !39, !noundef !40
  %508 = trunc i8 %507 to i1
  store i1 false, ptr %41, align 1
  br i1 %508, label %509, label %513

509:                                              ; preds = %500
  %510 = load ptr, ptr %30, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %510, i32 0, i32 8
  %512 = load i32, ptr %511, align 1, !tbaa !33
  br label %521

513:                                              ; preds = %500
  %514 = load ptr, ptr %37, align 8, !tbaa !5
  %515 = load i64, ptr %36, align 8, !tbaa !13
  %516 = trunc i64 %515 to i32
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %517 unwind label %574

517:                                              ; preds = %513
  store i1 true, ptr %41, align 1
  %518 = load ptr, ptr %6, align 8, !tbaa !5
  %519 = invoke noundef i32 @_ZN3Zip14RecompressFileEPhjjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK10ECTOptions(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef %514, i32 noundef %516, i32 noundef 0, ptr noundef %40, ptr noundef nonnull align 4 dereferenceable(40) %518)
          to label %520 unwind label %578

520:                                              ; preds = %517
  br label %521

521:                                              ; preds = %520, %509
  %522 = phi i32 [ %512, %509 ], [ %519, %520 ]
  %523 = load i1, ptr %41, align 1
  br i1 %523, label %524, label %525

524:                                              ; preds = %521
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #10
  br label %525

525:                                              ; preds = %524, %521
  store i32 %522, ptr %39, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  store ptr null, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  store i64 0, ptr %43, align 8, !tbaa !13
  %526 = load ptr, ptr %6, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.ECTOptions, ptr %526, i32 0, i32 0
  %528 = load i32, ptr %527, align 4, !tbaa !43
  %529 = load ptr, ptr %6, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.ECTOptions, ptr %529, i32 0, i32 17
  %531 = load i32, ptr %530, align 4, !tbaa !44
  %532 = load ptr, ptr %37, align 8, !tbaa !5
  %533 = load i32, ptr %39, align 4, !tbaa !41
  %534 = zext i32 %533 to i64
  invoke void @_Z12ZopfliBufferjjPKhmPPhPm(i32 noundef %528, i32 noundef %531, ptr noundef %532, i64 noundef %534, ptr noundef %42, ptr noundef %43)
          to label %535 unwind label %585

535:                                              ; preds = %525
  %536 = load i32, ptr %39, align 4, !tbaa !41
  %537 = zext i32 %536 to i64
  %538 = load i64, ptr %43, align 8, !tbaa !13
  %539 = icmp ule i64 %537, %538
  br i1 %539, label %540, label %589

540:                                              ; preds = %535
  %541 = load i32, ptr %39, align 4, !tbaa !41
  %542 = load ptr, ptr %30, align 8, !tbaa !5
  %543 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %542, i32 0, i32 7
  %544 = load i32, ptr %543, align 1, !tbaa !31
  %545 = icmp ule i32 %541, %544
  br i1 %545, label %546, label %589

546:                                              ; preds = %540
  %547 = load ptr, ptr %30, align 8, !tbaa !5
  %548 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %547, i32 0, i32 3
  store i16 0, ptr %548, align 1, !tbaa !35
  %549 = load ptr, ptr %27, align 8, !tbaa !5
  %550 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %549, i32 0, i32 4
  store i16 0, ptr %550, align 1, !tbaa !42
  %551 = load ptr, ptr %37, align 8, !tbaa !5
  %552 = load i32, ptr %39, align 4, !tbaa !41
  %553 = invoke i64 @crc32(i64 noundef 0, ptr noundef %551, i32 noundef %552)
          to label %554 unwind label %585

554:                                              ; preds = %546
  %555 = trunc i64 %553 to i32
  %556 = load ptr, ptr %30, align 8, !tbaa !5
  %557 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %556, i32 0, i32 6
  store i32 %555, ptr %557, align 1, !tbaa !29
  %558 = load ptr, ptr %27, align 8, !tbaa !5
  %559 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %558, i32 0, i32 7
  store i32 %555, ptr %559, align 1, !tbaa !28
  %560 = load i32, ptr %39, align 4, !tbaa !41
  %561 = load ptr, ptr %30, align 8, !tbaa !5
  %562 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %561, i32 0, i32 7
  store i32 %560, ptr %562, align 1, !tbaa !31
  %563 = load ptr, ptr %27, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %563, i32 0, i32 8
  store i32 %560, ptr %564, align 1, !tbaa !30
  %565 = load i32, ptr %39, align 4, !tbaa !41
  %566 = load ptr, ptr %30, align 8, !tbaa !5
  %567 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %566, i32 0, i32 8
  store i32 %565, ptr %567, align 1, !tbaa !33
  %568 = load ptr, ptr %27, align 8, !tbaa !5
  %569 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %568, i32 0, i32 9
  store i32 %565, ptr %569, align 1, !tbaa !32
  %570 = load ptr, ptr %23, align 8, !tbaa !5
  %571 = load ptr, ptr %37, align 8, !tbaa !5
  %572 = load i32, ptr %39, align 4, !tbaa !41
  %573 = zext i32 %572 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %570, ptr align 1 %571, i64 %573, i1 false)
  br label %628

574:                                              ; preds = %513
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %17, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %18, align 4
  br label %649

578:                                              ; preds = %517
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %17, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %18, align 4
  %582 = load i1, ptr %41, align 1
  br i1 %582, label %583, label %584

583:                                              ; preds = %578
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #10
  br label %584

584:                                              ; preds = %583, %578
  br label %649

585:                                              ; preds = %596, %546, %525
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %17, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  br label %649

589:                                              ; preds = %540, %535
  %590 = load i64, ptr %43, align 8, !tbaa !13
  %591 = load ptr, ptr %30, align 8, !tbaa !5
  %592 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %591, i32 0, i32 7
  %593 = load i32, ptr %592, align 1, !tbaa !31
  %594 = zext i32 %593 to i64
  %595 = icmp ult i64 %590, %594
  br i1 %595, label %596, label %620

596:                                              ; preds = %589
  %597 = load ptr, ptr %37, align 8, !tbaa !5
  %598 = load i32, ptr %39, align 4, !tbaa !41
  %599 = invoke i64 @crc32(i64 noundef 0, ptr noundef %597, i32 noundef %598)
          to label %600 unwind label %585

600:                                              ; preds = %596
  %601 = trunc i64 %599 to i32
  %602 = load ptr, ptr %30, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %602, i32 0, i32 6
  store i32 %601, ptr %603, align 1, !tbaa !29
  %604 = load ptr, ptr %27, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %604, i32 0, i32 7
  store i32 %601, ptr %605, align 1, !tbaa !28
  %606 = load i64, ptr %43, align 8, !tbaa !13
  %607 = trunc i64 %606 to i32
  %608 = load ptr, ptr %30, align 8, !tbaa !5
  %609 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %608, i32 0, i32 7
  store i32 %607, ptr %609, align 1, !tbaa !31
  %610 = load ptr, ptr %27, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %610, i32 0, i32 8
  store i32 %607, ptr %611, align 1, !tbaa !30
  %612 = load i32, ptr %39, align 4, !tbaa !41
  %613 = load ptr, ptr %30, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %613, i32 0, i32 8
  store i32 %612, ptr %614, align 1, !tbaa !33
  %615 = load ptr, ptr %27, align 8, !tbaa !5
  %616 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %615, i32 0, i32 9
  store i32 %612, ptr %616, align 1, !tbaa !32
  %617 = load ptr, ptr %23, align 8, !tbaa !5
  %618 = load ptr, ptr %42, align 8, !tbaa !5
  %619 = load i64, ptr %43, align 8, !tbaa !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %617, ptr align 1 %618, i64 %619, i1 false)
  br label %627

620:                                              ; preds = %589
  %621 = load ptr, ptr %23, align 8, !tbaa !5
  %622 = load ptr, ptr %28, align 8, !tbaa !5
  %623 = load ptr, ptr %30, align 8, !tbaa !5
  %624 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %623, i32 0, i32 7
  %625 = load i32, ptr %624, align 1, !tbaa !31
  %626 = zext i32 %625 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %621, ptr align 1 %622, i64 %626, i1 false)
  br label %627

627:                                              ; preds = %620, %600
  br label %628

628:                                              ; preds = %627, %554
  %629 = load ptr, ptr %30, align 8, !tbaa !5
  %630 = getelementptr inbounds %"struct.(anonymous namespace)::LocalHeader", ptr %629, i32 0, i32 7
  %631 = load i32, ptr %630, align 1, !tbaa !31
  %632 = load ptr, ptr %23, align 8, !tbaa !5
  %633 = zext i32 %631 to i64
  %634 = getelementptr inbounds i8, ptr %632, i64 %633
  store ptr %634, ptr %23, align 8, !tbaa !5
  %635 = load ptr, ptr %37, align 8, !tbaa !5
  call void @free(ptr noundef %635) #10
  %636 = load ptr, ptr %42, align 8, !tbaa !5
  %637 = icmp eq ptr %636, null
  br i1 %637, label %639, label %638

638:                                              ; preds = %628
  call void @_ZdaPv(ptr noundef %636) #12
  br label %639

639:                                              ; preds = %638, %628
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  store i32 0, ptr %10, align 4
  br label %640

640:                                              ; preds = %639, %482
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %641

641:                                              ; preds = %640, %440, %422, %408, %309
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  %642 = load i32, ptr %10, align 4
  switch i32 %642, label %644 [
    i32 0, label %643
  ]

643:                                              ; preds = %641
  store i32 0, ptr %10, align 4
  br label %644

644:                                              ; preds = %643, %641
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  %645 = load i32, ptr %10, align 4
  switch i32 %645, label %653 [
    i32 0, label %646
    i32 5, label %647
  ]

646:                                              ; preds = %644
  br label %647

647:                                              ; preds = %646, %644
  %648 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  br label %195

649:                                              ; preds = %585, %584, %574
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %650

650:                                              ; preds = %649, %496
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %651

651:                                              ; preds = %650, %407, %314
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  br label %652

652:                                              ; preds = %651, %310
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %731

653:                                              ; preds = %644, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  br label %654

654:                                              ; preds = %653
  %655 = load ptr, ptr %23, align 8, !tbaa !5
  %656 = load ptr, ptr %22, align 8, !tbaa !5
  %657 = ptrtoint ptr %655 to i64
  %658 = ptrtoint ptr %656 to i64
  %659 = sub i64 %657, %658
  %660 = trunc i64 %659 to i32
  %661 = getelementptr inbounds %"struct.(anonymous namespace)::EOCD", ptr %12, i32 0, i32 6
  store i32 %660, ptr %661, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  store ptr %13, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  %662 = load ptr, ptr %44, align 8, !tbaa !5
  %663 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %662) #10
  %664 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %45, i32 0, i32 0
  store ptr %663, ptr %664, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %665 = load ptr, ptr %44, align 8, !tbaa !5
  %666 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %665) #10
  %667 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %46, i32 0, i32 0
  store ptr %666, ptr %667, align 8
  br label %668

668:                                              ; preds = %700, %654
  %669 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  br i1 %669, label %671, label %670

670:                                              ; preds = %668
  store i32 6, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %702

671:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  %672 = call noundef nonnull align 1 dereferenceable(46) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #10
  store ptr %672, ptr %47, align 8, !tbaa !5
  %673 = load ptr, ptr %47, align 8, !tbaa !5
  %674 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %673, i32 0, i32 12
  store i16 0, ptr %674, align 1, !tbaa !45
  %675 = load ptr, ptr %47, align 8, !tbaa !5
  %676 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %675, i32 0, i32 11
  store i16 0, ptr %676, align 1, !tbaa !46
  %677 = load ptr, ptr %23, align 8, !tbaa !5
  %678 = load ptr, ptr %47, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %677, ptr align 1 %678, i64 46, i1 false)
  %679 = load ptr, ptr %23, align 8, !tbaa !5
  %680 = getelementptr inbounds i8, ptr %679, i64 46
  store ptr %680, ptr %23, align 8, !tbaa !5
  %681 = load ptr, ptr %23, align 8, !tbaa !5
  %682 = load ptr, ptr %22, align 8, !tbaa !5
  %683 = load ptr, ptr %47, align 8, !tbaa !5
  %684 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %683, i32 0, i32 16
  %685 = load i32, ptr %684, align 1, !tbaa !21
  %686 = zext i32 %685 to i64
  %687 = getelementptr inbounds i8, ptr %682, i64 %686
  %688 = getelementptr inbounds i8, ptr %687, i64 30
  %689 = load ptr, ptr %47, align 8, !tbaa !5
  %690 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %689, i32 0, i32 10
  %691 = load i16, ptr %690, align 1, !tbaa !23
  %692 = zext i16 %691 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %681, ptr align 1 %688, i64 %692, i1 false)
  %693 = load ptr, ptr %47, align 8, !tbaa !5
  %694 = getelementptr inbounds %"struct.(anonymous namespace)::CDHeader", ptr %693, i32 0, i32 10
  %695 = load i16, ptr %694, align 1, !tbaa !23
  %696 = zext i16 %695 to i32
  %697 = load ptr, ptr %23, align 8, !tbaa !5
  %698 = sext i32 %696 to i64
  %699 = getelementptr inbounds i8, ptr %697, i64 %698
  store ptr %699, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  br label %700

700:                                              ; preds = %671
  %701 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #10
  br label %668

702:                                              ; preds = %670
  %703 = call noundef i64 @_ZNKSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  %704 = trunc i64 %703 to i16
  %705 = getelementptr inbounds %"struct.(anonymous namespace)::EOCD", ptr %12, i32 0, i32 4
  store i16 %704, ptr %705, align 1, !tbaa !47
  %706 = getelementptr inbounds %"struct.(anonymous namespace)::EOCD", ptr %12, i32 0, i32 3
  store i16 %704, ptr %706, align 1, !tbaa !48
  %707 = load ptr, ptr %23, align 8, !tbaa !5
  %708 = load ptr, ptr %22, align 8, !tbaa !5
  %709 = ptrtoint ptr %707 to i64
  %710 = ptrtoint ptr %708 to i64
  %711 = sub i64 %709, %710
  %712 = getelementptr inbounds %"struct.(anonymous namespace)::EOCD", ptr %12, i32 0, i32 6
  %713 = load i32, ptr %712, align 1, !tbaa !16
  %714 = zext i32 %713 to i64
  %715 = sub nsw i64 %711, %714
  %716 = trunc i64 %715 to i32
  %717 = getelementptr inbounds %"struct.(anonymous namespace)::EOCD", ptr %12, i32 0, i32 5
  store i32 %716, ptr %717, align 1, !tbaa !20
  %718 = getelementptr inbounds %"struct.(anonymous namespace)::EOCD", ptr %12, i32 0, i32 7
  store i16 0, ptr %718, align 1, !tbaa !49
  %719 = load ptr, ptr %23, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %719, ptr align 1 %12, i64 22, i1 false)
  %720 = load ptr, ptr %23, align 8, !tbaa !5
  %721 = getelementptr inbounds i8, ptr %720, i64 22
  %722 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 0
  %723 = load ptr, ptr %722, align 8, !tbaa !9
  %724 = ptrtoint ptr %721 to i64
  %725 = ptrtoint ptr %723 to i64
  %726 = sub i64 %724, %725
  %727 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 1
  store i64 %726, ptr %727, align 8, !tbaa !12
  %728 = getelementptr inbounds %class.Zip, ptr %48, i32 0, i32 1
  %729 = load i64, ptr %728, align 8, !tbaa !12
  store i64 %729, ptr %4, align 8
  store i32 1, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %730

730:                                              ; preds = %702, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  call void @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 22, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  br label %733

731:                                              ; preds = %652, %168, %114
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %732

732:                                              ; preds = %731, %110
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  call void @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 22, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %735

733:                                              ; preds = %730, %68
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  %734 = load i64, ptr %4, align 8
  ret i64 %734

735:                                              ; preds = %732
  %736 = load ptr, ptr %17, align 8
  %737 = load i32, ptr %18, align 4
  %738 = insertvalue { ptr, i32 } poison, ptr %736, 0
  %739 = insertvalue { ptr, i32 } %738, i32 %737, 1
  resume { ptr, i32 } %739

740:                                              ; preds = %173
  unreachable
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZSt3endIKhLm4EEPT_RAT0__S1_(ptr noundef nonnull align 1 dereferenceable(4)) #5

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_14EOCDC2Ev(ptr noundef nonnull align 1 dereferenceable(22)) unnamed_addr #5 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIPhERKT_S3_S3_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3hexRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #4

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZSt3endIhLm4EEPT_RAT0__S0_(ptr noundef nonnull align 1 dereferenceable(4)) #5

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_112GetCDHeadersEPKhmRKNS_4EOCDEmPSt6vectorINS_8CDHeaderESaIS6_EEPm(ptr noundef, i64 noundef, ptr noundef nonnull align 1 dereferenceable(22), i64 noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN9__gnu_cxxneIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 1 dereferenceable(46) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #0 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

declare i64 @crc32(i64 noundef, ptr noundef, i32 noundef) #6

declare noundef i32 @_Z15lodepng_inflatePPhPmPKhm(ptr noundef, ptr noundef, ptr noundef, i64 noundef) #6

; Function Attrs: nounwind
declare void @free(ptr noundef) #7

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #8

declare void @_Z12ZopfliBufferjjPKhmPPhPm(i32 noundef, i32 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #6

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { 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 #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind allocsize(1) "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 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind }
attributes #11 = { nounwind allocsize(1) }
attributes #12 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTS3Zip", !6, i64 0, !11, i64 8}
!11 = !{!"long", !7, i64 0}
!12 = !{!10, !11, i64 8}
!13 = !{!11, !11, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !19, i64 16}
!17 = !{!"_ZTSN12_GLOBAL__N_14EOCDE", !7, i64 0, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !19, i64 12, !19, i64 16, !18, i64 20}
!18 = !{!"short", !7, i64 0}
!19 = !{!"int", !7, i64 0}
!20 = !{!17, !19, i64 12}
!21 = !{!22, !19, i64 42}
!22 = !{!"_ZTSN12_GLOBAL__N_18CDHeaderE", !7, i64 0, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !19, i64 16, !19, i64 20, !19, i64 24, !18, i64 28, !18, i64 30, !18, i64 32, !18, i64 34, !18, i64 36, !19, i64 38, !19, i64 42}
!23 = !{!22, !18, i64 28}
!24 = !{!25, !18, i64 28}
!25 = !{!"_ZTSN12_GLOBAL__N_111LocalHeaderE", !7, i64 0, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !18, i64 12, !19, i64 14, !19, i64 18, !19, i64 22, !18, i64 26, !18, i64 28}
!26 = !{!25, !18, i64 6}
!27 = !{!22, !18, i64 8}
!28 = !{!22, !19, i64 16}
!29 = !{!25, !19, i64 14}
!30 = !{!22, !19, i64 20}
!31 = !{!25, !19, i64 18}
!32 = !{!22, !19, i64 24}
!33 = !{!25, !19, i64 22}
!34 = !{!25, !18, i64 26}
!35 = !{!25, !18, i64 8}
!36 = !{!37, !38, i64 19}
!37 = !{!"_ZTS10ECTOptions", !19, i64 0, !19, i64 4, !38, i64 8, !38, i64 9, !19, i64 12, !38, i64 16, !38, i64 17, !38, i64 18, !38, i64 19, !38, i64 20, !38, i64 21, !38, i64 22, !38, i64 23, !38, i64 24, !38, i64 25, !38, i64 26, !38, i64 27, !19, i64 28, !19, i64 32, !38, i64 36}
!38 = !{!"bool", !7, i64 0}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!19, !19, i64 0}
!42 = !{!22, !18, i64 10}
!43 = !{!37, !19, i64 0}
!44 = !{!37, !19, i64 28}
!45 = !{!22, !18, i64 32}
!46 = !{!22, !18, i64 30}
!47 = !{!17, !18, i64 10}
!48 = !{!17, !18, i64 8}
!49 = !{!17, !18, i64 20}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"struct.(anonymous namespace)::EOCD" = type <{ [4 x i8], i16, i16, i16, i16, i32, i32, i16 }>
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<(anonymous namespace)::CDHeader, std::allocator<(anonymous namespace)::CDHeader>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::CDHeader, std::allocator<(anonymous namespace)::CDHeader>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::CDHeader, std::allocator<(anonymous namespace)::CDHeader>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::CDHeader, std::allocator<(anonymous namespace)::CDHeader>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"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] }
%"class.std::allocator" = type { i8 }

@_ZN3Zip12header_magicE = external dso_local constant [4 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.11 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [60 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3Zip14RecompressFileEPhjjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK10ECTOptions(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(40)) local_unnamed_addr #0 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #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 nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_ZN3Zip7LeanifyERK10ECTOptionsPm(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(40) %1, ptr nocapture noundef %2) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i64, align 8
  %5 = alloca %"struct.(anonymous namespace)::EOCD", align 1
  %6 = alloca %"class.std::vector.3", align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca ptr, align 8
  %17 = alloca i64, align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %20 = load ptr, ptr %0, align 8, !tbaa !5
  %21 = getelementptr inbounds i8, ptr %0, i64 8
  %22 = load i64, ptr %21, align 8, !tbaa !11
  %23 = getelementptr inbounds i8, ptr %20, i64 %22
  %24 = tail call noundef ptr @_ZSt3endIKhLm4EEPT_RAT0__S1_(ptr noundef nonnull align 1 dereferenceable(4) @_ZN3Zip12header_magicE) #10
  %25 = tail call noundef ptr @_ZSt6searchIPhPKhET_S3_S3_T0_S4_(ptr noundef %20, ptr noundef %23, ptr noundef nonnull @_ZN3Zip12header_magicE, ptr noundef %24)
  %26 = load ptr, ptr %0, align 8, !tbaa !5
  %27 = ptrtoint ptr %25 to i64
  %28 = ptrtoint ptr %26 to i64
  %29 = sub i64 %27, %28
  %30 = load i64, ptr %21, align 8, !tbaa !11
  %31 = icmp eq i64 %29, %30
  br i1 %31, label %32, label %36

32:                                               ; preds = %3
  %33 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.11)
  %34 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %35 = load i64, ptr %21, align 8, !tbaa !11
  br label %341

36:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  store i64 0, ptr %4, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 22, ptr nonnull %5) #10
  call void @_ZN12_GLOBAL__N_14EOCDC2Ev(ptr noundef nonnull align 1 dereferenceable(22) %5) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #10
  call void @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %37 = load ptr, ptr %0, align 8, !tbaa !5
  %38 = load i64, ptr %21, align 8, !tbaa !11
  %39 = getelementptr inbounds i8, ptr %37, i64 %38
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  %40 = getelementptr inbounds i8, ptr %39, i64 -65539
  store ptr %40, ptr %7, align 8, !tbaa !13
  %41 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIPhERKT_S3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %7)
  %42 = load ptr, ptr %41, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  %43 = getelementptr inbounds i8, ptr %5, i64 16
  %44 = getelementptr inbounds i8, ptr %5, i64 12
  br label %.critedge

.critedge:                                        ; preds = %.critedge.backedge, %36
  %.0186 = phi ptr [ null, %36 ], [ %63, %.critedge.backedge ]
  %.0174 = phi ptr [ %39, %36 ], [ %.1175, %.critedge.backedge ]
  %.not = icmp eq ptr %.0186, null
  br i1 %.not, label %61, label %45

45:                                               ; preds = %.critedge
  %46 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.12)
          to label %47 unwind label %.loopexit235

47:                                               ; preds = %45
  %48 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull @_ZSt3hexRSt8ios_base)
          to label %49 unwind label %.loopexit235

49:                                               ; preds = %47
  %50 = load ptr, ptr %0, align 8, !tbaa !5
  %51 = ptrtoint ptr %.0186 to i64
  %52 = ptrtoint ptr %50 to i64
  %53 = sub i64 %51, %52
  %54 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %48, i64 noundef %53)
          to label %55 unwind label %.loopexit235

55:                                               ; preds = %49
  %56 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %57 unwind label %.loopexit235

57:                                               ; preds = %55
  %58 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull @.str.13)
          to label %59 unwind label %.loopexit235

59:                                               ; preds = %57
  %60 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %61 unwind label %.loopexit235

.loopexit235:                                     ; preds = %45, %47, %49, %55, %57, %59, %61
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %340

.loopexit.split-lp:                               ; preds = %66, %68
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %340

61:                                               ; preds = %59, %.critedge
  %.1175 = phi ptr [ %.0174, %.critedge ], [ %.0186, %59 ]
  %62 = call noundef ptr @_ZSt3endIhLm4EEPT_RAT0__S0_(ptr noundef nonnull align 1 dereferenceable(4) %5) #10
  %63 = invoke noundef ptr @_ZSt8find_endIPhS0_ET_S1_S1_T0_S2_(ptr noundef %42, ptr noundef %.1175, ptr noundef nonnull %5, ptr noundef %62)
          to label %64 unwind label %.loopexit235

64:                                               ; preds = %61
  %65 = icmp eq ptr %63, %.1175
  br i1 %65, label %66, label %72

66:                                               ; preds = %64
  %67 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.14)
          to label %68 unwind label %.loopexit.split-lp

68:                                               ; preds = %66
  %69 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %70 unwind label %.loopexit.split-lp

70:                                               ; preds = %68
  %71 = load i64, ptr %21, align 8, !tbaa !11
  br label %339

72:                                               ; preds = %64
  %73 = getelementptr inbounds i8, ptr %63, i64 22
  %74 = icmp ugt ptr %73, %.1175
  br i1 %74, label %.critedge.backedge, label %75

.critedge.backedge:                               ; preds = %72, %89, %75
  br label %.critedge, !llvm.loop !14

75:                                               ; preds = %72
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(22) %5, ptr noundef nonnull align 1 dereferenceable(22) %63, i64 22, i1 false)
  %76 = load ptr, ptr %0, align 8, !tbaa !5
  %77 = load i32, ptr %43, align 1, !tbaa !16
  %78 = zext i32 %77 to i64
  %79 = getelementptr inbounds i8, ptr %76, i64 %78
  %80 = load i32, ptr %44, align 1, !tbaa !20
  %81 = zext i32 %80 to i64
  %82 = getelementptr inbounds i8, ptr %79, i64 %81
  %83 = icmp ugt ptr %82, %63
  br i1 %83, label %.critedge.backedge, label %84

84:                                               ; preds = %75
  %85 = load i64, ptr %21, align 8, !tbaa !11
  %86 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_112GetCDHeadersEPKhmRKNS_4EOCDEmPSt6vectorINS_8CDHeaderESaIS6_EEPm(ptr noundef %76, i64 noundef %85, ptr noundef nonnull align 1 dereferenceable(22) %5, i64 noundef %29, ptr noundef nonnull %6, ptr noundef nonnull %4)
          to label %89 unwind label %87

87:                                               ; preds = %84
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %340

89:                                               ; preds = %84
  br i1 %86, label %90, label %.critedge.backedge

90:                                               ; preds = %89
  %91 = load ptr, ptr %0, align 8, !tbaa !5
  %92 = load i64, ptr %4, align 8, !tbaa !12
  %93 = getelementptr inbounds i8, ptr %91, i64 %92
  %94 = getelementptr inbounds i8, ptr %91, i64 %29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  %95 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  store ptr %95, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #10
  %96 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  store ptr %96, ptr %9, align 8
  %97 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  %98 = ptrtoint ptr %93 to i64
  br i1 %97, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %90
  %99 = getelementptr inbounds i8, ptr %1, i64 19
  %100 = getelementptr inbounds i8, ptr %1, i64 28
  br label %101

101:                                              ; preds = %.lr.ph, %297
  %.0187263 = phi ptr [ %94, %.lr.ph ], [ %.3190229, %297 ]
  %102 = call noundef nonnull align 1 dereferenceable(46) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  %103 = load i64, ptr %2, align 8, !tbaa !12
  %104 = add i64 %103, 1
  store i64 %104, ptr %2, align 8, !tbaa !12
  %105 = load ptr, ptr %0, align 8, !tbaa !5
  %106 = load i64, ptr %4, align 8, !tbaa !12
  %107 = getelementptr inbounds i8, ptr %105, i64 %106
  %108 = getelementptr inbounds i8, ptr %102, i64 42
  %109 = load i32, ptr %108, align 1, !tbaa !21
  %110 = zext i32 %109 to i64
  %111 = getelementptr inbounds i8, ptr %107, i64 %110
  %112 = ptrtoint ptr %.0187263 to i64
  %113 = sub i64 %112, %98
  %114 = trunc i64 %113 to i32
  store i32 %114, ptr %108, align 1, !tbaa !21
  %115 = getelementptr inbounds i8, ptr %102, i64 28
  %116 = load i16, ptr %115, align 1, !tbaa !23
  %117 = zext i16 %116 to i64
  %118 = add nuw nsw i64 %117, 30
  call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0187263, ptr noundef nonnull align 1 dereferenceable(1) %111, i64 %118, i1 false)
  %119 = getelementptr inbounds i8, ptr %.0187263, i64 28
  %120 = load i16, ptr %119, align 1, !tbaa !24
  %.not204 = icmp eq i16 %120, 0
  br i1 %.not204, label %124, label %121

121:                                              ; preds = %101
  %122 = zext i16 %120 to i64
  %123 = getelementptr inbounds i8, ptr %111, i64 %122
  store i16 0, ptr %119, align 1, !tbaa !24
  br label %124

124:                                              ; preds = %121, %101
  %.0193 = phi ptr [ %123, %121 ], [ %111, %101 ]
  %125 = getelementptr inbounds i8, ptr %.0187263, i64 6
  %126 = load i16, ptr %125, align 1, !tbaa !26
  %127 = and i16 %126, 8
  %.not205 = icmp eq i16 %127, 0
  br i1 %.not205, label %139, label %128

128:                                              ; preds = %124
  %129 = and i16 %126, -9
  store i16 %129, ptr %125, align 1, !tbaa !26
  %130 = getelementptr inbounds i8, ptr %102, i64 8
  %131 = load i16, ptr %130, align 1, !tbaa !27
  %132 = and i16 %131, -9
  store i16 %132, ptr %130, align 1, !tbaa !27
  %133 = getelementptr inbounds i8, ptr %102, i64 16
  %134 = getelementptr inbounds i8, ptr %.0187263, i64 14
  %135 = load <2 x i32>, ptr %133, align 1, !tbaa !28
  store <2 x i32> %135, ptr %134, align 1, !tbaa !28
  %136 = getelementptr inbounds i8, ptr %102, i64 24
  %137 = load i32, ptr %136, align 1, !tbaa !29
  %138 = getelementptr inbounds i8, ptr %.0187263, i64 22
  store i32 %137, ptr %138, align 1, !tbaa !30
  br label %139

139:                                              ; preds = %128, %124
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #10
  %140 = getelementptr inbounds i8, ptr %.0187263, i64 30
  %141 = getelementptr inbounds i8, ptr %.0187263, i64 26
  %142 = load i16, ptr %141, align 1, !tbaa !31
  %143 = zext i16 %142 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcmRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %140, i64 noundef %143, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %144 unwind label %159

144:                                              ; preds = %139
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  %145 = getelementptr inbounds i8, ptr %.0193, i64 %118
  %146 = getelementptr inbounds i8, ptr %.0187263, i64 %118
  %147 = getelementptr inbounds i8, ptr %.0187263, i64 18
  %148 = load i32, ptr %147, align 1, !tbaa !32
  %149 = zext i32 %148 to i64
  %150 = getelementptr inbounds i8, ptr %145, i64 %149
  %151 = icmp ugt ptr %150, %.1175
  br i1 %151, label %152, label %163

152:                                              ; preds = %144
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.15)
          to label %154 unwind label %161

154:                                              ; preds = %152
  %155 = load i32, ptr %147, align 1, !tbaa !32
  %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %153, i32 noundef %155)
          to label %157 unwind label %161

157:                                              ; preds = %154
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread230 unwind label %161

.thread230:                                       ; preds = %157
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  br label %.loopexit

159:                                              ; preds = %139
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  br label %302

161:                                              ; preds = %157, %154, %152
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %301

163:                                              ; preds = %144
  %164 = getelementptr inbounds i8, ptr %.0187263, i64 8
  %165 = load i16, ptr %164, align 1, !tbaa !33
  switch i16 %165, label %200 [
    i16 0, label %166
    i16 8, label %197
  ]

166:                                              ; preds = %163
  %.not217 = icmp eq i32 %148, 0
  br i1 %.not217, label %.thread226, label %167

167:                                              ; preds = %166
  %168 = load i8, ptr %99, align 1, !tbaa !34, !range !37, !noundef !38
  %169 = trunc nuw i8 %168 to i1
  br i1 %169, label %.thread.thread, label %170

170:                                              ; preds = %167
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %171 unwind label %181

171:                                              ; preds = %170
  %172 = ptrtoint ptr %145 to i64
  %173 = ptrtoint ptr %146 to i64
  %174 = sub i64 %172, %173
  %175 = trunc i64 %174 to i32
  %176 = invoke noundef i32 @_ZN3Zip14RecompressFileEPhjjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK10ECTOptions(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull %145, i32 noundef %148, i32 noundef %175, ptr noundef nonnull %12, ptr noundef nonnull align 4 dereferenceable(40) %1)
          to label %.thread unwind label %183

.thread:                                          ; preds = %171
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  %.pre286 = load i32, ptr %147, align 1, !tbaa !32
  %177 = icmp eq i32 %176, %.pre286
  br i1 %177, label %.thread.thread, label %185

.thread.thread:                                   ; preds = %167, %.thread
  %178 = phi i32 [ %176, %.thread ], [ %148, %167 ]
  %179 = phi i32 [ %.pre286, %.thread ], [ %148, %167 ]
  %180 = zext i32 %179 to i64
  call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %146, ptr nonnull align 1 %145, i64 %180, i1 false)
  br label %185

181:                                              ; preds = %185, %170
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %301

183:                                              ; preds = %171
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  br label %301

185:                                              ; preds = %.thread.thread, %.thread
  %186 = phi i32 [ %178, %.thread.thread ], [ %176, %.thread ]
  %187 = invoke i64 @crc32(i64 noundef 0, ptr noundef nonnull %146, i32 noundef %186)
          to label %188 unwind label %181

188:                                              ; preds = %185
  %189 = trunc i64 %187 to i32
  %190 = getelementptr inbounds i8, ptr %.0187263, i64 14
  store i32 %189, ptr %190, align 1, !tbaa !39
  %191 = getelementptr inbounds i8, ptr %102, i64 16
  store i32 %189, ptr %191, align 1, !tbaa !40
  store i32 %186, ptr %147, align 1, !tbaa !32
  %192 = getelementptr inbounds i8, ptr %102, i64 20
  store i32 %186, ptr %192, align 1, !tbaa !41
  %193 = getelementptr inbounds i8, ptr %.0187263, i64 22
  store i32 %186, ptr %193, align 1, !tbaa !30
  %194 = getelementptr inbounds i8, ptr %102, i64 24
  store i32 %186, ptr %194, align 1, !tbaa !29
  %195 = zext i32 %186 to i64
  %196 = getelementptr inbounds i8, ptr %146, i64 %195
  br label %.thread226

197:                                              ; preds = %163
  %198 = load i16, ptr %125, align 1, !tbaa !26
  %199 = and i16 %198, 1
  %.not207 = icmp eq i16 %199, 0
  br i1 %.not207, label %204, label %200

200:                                              ; preds = %163, %197
  call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %146, ptr nonnull align 1 %145, i64 %149, i1 false)
  %201 = load i32, ptr %147, align 1, !tbaa !32
  %202 = zext i32 %201 to i64
  %203 = getelementptr inbounds i8, ptr %146, i64 %202
  br label %.thread226

204:                                              ; preds = %197
  %205 = getelementptr inbounds i8, ptr %.0187263, i64 22
  %206 = load i32, ptr %205, align 1, !tbaa !30
  %207 = icmp eq i32 %206, 0
  br i1 %207, label %208, label %211

208:                                              ; preds = %204
  store i16 0, ptr %164, align 1, !tbaa !33
  %209 = getelementptr inbounds i8, ptr %102, i64 10
  store i16 0, ptr %209, align 1, !tbaa !42
  store i32 0, ptr %147, align 1, !tbaa !32
  %210 = getelementptr inbounds i8, ptr %102, i64 20
  store i32 0, ptr %210, align 1, !tbaa !41
  br label %.thread226

211:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  store i64 0, ptr %13, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  store ptr null, ptr %14, align 8, !tbaa !13
  %212 = invoke noundef i32 @_Z15lodepng_inflatePPhPmPKhm(ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef nonnull %145, i64 noundef %149)
          to label %213 unwind label %234

213:                                              ; preds = %211
  %.not208 = icmp eq i32 %212, 0
  br i1 %.not208, label %214, label %225

214:                                              ; preds = %213
  %215 = load i64, ptr %13, align 8, !tbaa !12
  %216 = load i32, ptr %205, align 1, !tbaa !30
  %217 = zext i32 %216 to i64
  %.not209 = icmp eq i64 %215, %217
  br i1 %.not209, label %218, label %225

218:                                              ; preds = %214
  %219 = getelementptr inbounds i8, ptr %.0187263, i64 14
  %220 = load i32, ptr %219, align 1, !tbaa !39
  %221 = load ptr, ptr %14, align 8, !tbaa !13
  %222 = invoke i64 @crc32(i64 noundef 0, ptr noundef %221, i32 noundef %216)
          to label %223 unwind label %234

223:                                              ; preds = %218
  %224 = zext i32 %220 to i64
  %.not210 = icmp eq i64 %222, %224
  br i1 %.not210, label %236, label %225

225:                                              ; preds = %223, %214, %213
  %226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.16)
          to label %227 unwind label %234

227:                                              ; preds = %225
  %228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %229 unwind label %234

229:                                              ; preds = %227
  %230 = load ptr, ptr %14, align 8, !tbaa !13
  call void @free(ptr noundef %230) #10
  %231 = load i32, ptr %147, align 1, !tbaa !32
  %232 = zext i32 %231 to i64
  call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %146, ptr nonnull align 1 %145, i64 %232, i1 false)
  %233 = load i32, ptr %147, align 1, !tbaa !32
  br label %296

234:                                              ; preds = %227, %225, %218, %211
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %300

236:                                              ; preds = %223
  %237 = load ptr, ptr %14, align 8, !tbaa !13
  %238 = load i64, ptr %13, align 8, !tbaa !12
  %239 = add i64 %238, 16
  %240 = call ptr @realloc(ptr noundef %237, i64 noundef %239) #11
  store ptr %240, ptr %14, align 8, !tbaa !13
  %241 = load i8, ptr %99, align 1, !tbaa !34, !range !37, !noundef !38
  %242 = trunc nuw i8 %241 to i1
  br i1 %242, label %.thread225, label %244

.thread225:                                       ; preds = %236
  %243 = load i32, ptr %205, align 1, !tbaa !30
  br label %250

244:                                              ; preds = %236
  %245 = load i64, ptr %13, align 8, !tbaa !12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %246 unwind label %268

246:                                              ; preds = %244
  %247 = trunc i64 %245 to i32
  %248 = invoke noundef i32 @_ZN3Zip14RecompressFileEPhjjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK10ECTOptions(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %240, i32 noundef %247, i32 noundef 0, ptr noundef nonnull %15, ptr noundef nonnull align 4 dereferenceable(40) %1)
          to label %249 unwind label %270

249:                                              ; preds = %246
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  %.pre = load ptr, ptr %14, align 8, !tbaa !13
  br label %250

250:                                              ; preds = %.thread225, %249
  %251 = phi ptr [ %240, %.thread225 ], [ %.pre, %249 ]
  %252 = phi i32 [ %243, %.thread225 ], [ %248, %249 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  store ptr null, ptr %16, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  store i64 0, ptr %17, align 8, !tbaa !12
  %253 = load i32, ptr %1, align 4, !tbaa !43
  %254 = load i32, ptr %100, align 4, !tbaa !44
  %255 = zext i32 %252 to i64
  invoke void @_Z12ZopfliBufferjjPKhmPPhPm(i32 noundef %253, i32 noundef %254, ptr noundef %251, i64 noundef %255, ptr noundef nonnull %16, ptr noundef nonnull %17)
          to label %256 unwind label %272

256:                                              ; preds = %250
  %257 = load i64, ptr %17, align 8, !tbaa !12
  %.not211 = icmp ult i64 %257, %255
  %.pre285 = load i32, ptr %147, align 1, !tbaa !32
  %.not212 = icmp ugt i32 %252, %.pre285
  %or.cond = select i1 %.not211, i1 true, i1 %.not212
  br i1 %or.cond, label %274, label %258

258:                                              ; preds = %256
  store i16 0, ptr %164, align 1, !tbaa !33
  %259 = getelementptr inbounds i8, ptr %102, i64 10
  store i16 0, ptr %259, align 1, !tbaa !42
  %260 = load ptr, ptr %14, align 8, !tbaa !13
  %261 = invoke i64 @crc32(i64 noundef 0, ptr noundef %260, i32 noundef %252)
          to label %262 unwind label %272

262:                                              ; preds = %258
  %263 = trunc i64 %261 to i32
  store i32 %263, ptr %219, align 1, !tbaa !39
  %264 = getelementptr inbounds i8, ptr %102, i64 16
  store i32 %263, ptr %264, align 1, !tbaa !40
  store i32 %252, ptr %147, align 1, !tbaa !32
  %265 = getelementptr inbounds i8, ptr %102, i64 20
  store i32 %252, ptr %265, align 1, !tbaa !41
  store i32 %252, ptr %205, align 1, !tbaa !30
  %266 = getelementptr inbounds i8, ptr %102, i64 24
  store i32 %252, ptr %266, align 1, !tbaa !29
  %267 = load ptr, ptr %14, align 8, !tbaa !13
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %146, ptr align 1 %267, i64 %255, i1 false)
  br label %289

268:                                              ; preds = %244
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %300

270:                                              ; preds = %246
  %271 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  br label %300

272:                                              ; preds = %277, %258, %250
  %273 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %300

274:                                              ; preds = %256
  %275 = zext i32 %.pre285 to i64
  %276 = icmp ult i64 %257, %275
  br i1 %276, label %277, label %288

277:                                              ; preds = %274
  %278 = load ptr, ptr %14, align 8, !tbaa !13
  %279 = invoke i64 @crc32(i64 noundef 0, ptr noundef %278, i32 noundef %252)
          to label %280 unwind label %272

280:                                              ; preds = %277
  %281 = trunc i64 %279 to i32
  store i32 %281, ptr %219, align 1, !tbaa !39
  %282 = getelementptr inbounds i8, ptr %102, i64 16
  store i32 %281, ptr %282, align 1, !tbaa !40
  %283 = load i64, ptr %17, align 8, !tbaa !12
  %284 = trunc i64 %283 to i32
  store i32 %284, ptr %147, align 1, !tbaa !32
  %285 = getelementptr inbounds i8, ptr %102, i64 20
  store i32 %284, ptr %285, align 1, !tbaa !41
  store i32 %252, ptr %205, align 1, !tbaa !30
  %286 = getelementptr inbounds i8, ptr %102, i64 24
  store i32 %252, ptr %286, align 1, !tbaa !29
  %287 = load ptr, ptr %16, align 8, !tbaa !13
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %146, ptr align 1 %287, i64 %283, i1 false)
  br label %289

288:                                              ; preds = %274
  call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %146, ptr nonnull align 1 %145, i64 %275, i1 false)
  br label %289

289:                                              ; preds = %280, %288, %262
  %290 = load i32, ptr %147, align 1, !tbaa !32
  %291 = load ptr, ptr %14, align 8, !tbaa !13
  call void @free(ptr noundef %291) #10
  %292 = load ptr, ptr %16, align 8, !tbaa !13
  %293 = icmp eq ptr %292, null
  br i1 %293, label %295, label %294

294:                                              ; preds = %289
  call void @_ZdaPv(ptr noundef nonnull %292) #12
  br label %295

295:                                              ; preds = %294, %289
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %296

.thread226:                                       ; preds = %200, %208, %188, %166
  %.3190.ph = phi ptr [ %146, %166 ], [ %196, %188 ], [ %146, %208 ], [ %203, %200 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  br label %297

296:                                              ; preds = %229, %295
  %.pn216.in = phi i32 [ %233, %229 ], [ %290, %295 ]
  %.pn216 = zext i32 %.pn216.in to i64
  %.2189 = getelementptr inbounds i8, ptr %146, i64 %.pn216
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  br label %297

297:                                              ; preds = %296, %.thread226
  %.3190229 = phi ptr [ %.3190.ph, %.thread226 ], [ %.2189, %296 ]
  %298 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  %299 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  br i1 %299, label %101, label %.loopexit

300:                                              ; preds = %268, %272, %270, %234
  %.pn214 = phi { ptr, i32 } [ %235, %234 ], [ %273, %272 ], [ %271, %270 ], [ %269, %268 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  br label %301

301:                                              ; preds = %181, %183, %300, %161
  %.pn220 = phi { ptr, i32 } [ %162, %161 ], [ %.pn214, %300 ], [ %182, %181 ], [ %184, %183 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  br label %302

302:                                              ; preds = %301, %159
  %.pn220.pn = phi { ptr, i32 } [ %.pn220, %301 ], [ %160, %159 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  br label %340

.loopexit:                                        ; preds = %297, %90, %.thread230
  %.4191 = phi ptr [ %146, %.thread230 ], [ %94, %90 ], [ %.3190229, %297 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  %303 = ptrtoint ptr %.4191 to i64
  %304 = sub i64 %303, %98
  %305 = trunc i64 %304 to i32
  store i32 %305, ptr %43, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  %306 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  store ptr %306, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  %307 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  store ptr %307, ptr %19, align 8
  %invariant.gep = getelementptr inbounds i8, ptr %93, i64 30
  %308 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  br i1 %308, label %.lr.ph265, label %._crit_edge

._crit_edge.loopexit:                             ; preds = %.lr.ph265
  %.pre287 = ptrtoint ptr %336 to i64
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.loopexit
  %.pre-phi = phi i64 [ %.pre287, %._crit_edge.loopexit ], [ %303, %.loopexit ]
  %.5192.lcssa = phi ptr [ %336, %._crit_edge.loopexit ], [ %.4191, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  %309 = call noundef i64 @_ZNKSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %310 = trunc i64 %309 to i16
  %311 = getelementptr inbounds i8, ptr %5, i64 10
  store i16 %310, ptr %311, align 1, !tbaa !45
  %312 = getelementptr inbounds i8, ptr %5, i64 8
  store i16 %310, ptr %312, align 1, !tbaa !46
  %313 = load i32, ptr %43, align 1, !tbaa !16
  %314 = zext i32 %313 to i64
  %315 = add i64 %98, %314
  %316 = sub i64 %.pre-phi, %315
  %317 = trunc i64 %316 to i32
  store i32 %317, ptr %44, align 1, !tbaa !20
  %318 = getelementptr inbounds i8, ptr %5, i64 20
  store i16 0, ptr %318, align 1, !tbaa !47
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(22) %.5192.lcssa, ptr noundef nonnull align 1 dereferenceable(22) %5, i64 22, i1 false)
  %319 = getelementptr inbounds i8, ptr %.5192.lcssa, i64 22
  %320 = load ptr, ptr %0, align 8, !tbaa !5
  %321 = ptrtoint ptr %319 to i64
  %322 = ptrtoint ptr %320 to i64
  %323 = sub i64 %321, %322
  store i64 %323, ptr %21, align 8, !tbaa !11
  br label %339

.lr.ph265:                                        ; preds = %.loopexit, %.lr.ph265
  %.5192264 = phi ptr [ %336, %.lr.ph265 ], [ %.4191, %.loopexit ]
  %324 = call noundef nonnull align 1 dereferenceable(46) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  %325 = getelementptr inbounds i8, ptr %324, i64 32
  store i16 0, ptr %325, align 1, !tbaa !48
  %326 = getelementptr inbounds i8, ptr %324, i64 30
  store i16 0, ptr %326, align 1, !tbaa !49
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(46) %.5192264, ptr noundef nonnull align 1 dereferenceable(46) %324, i64 46, i1 false)
  %327 = getelementptr inbounds i8, ptr %.5192264, i64 46
  %328 = getelementptr inbounds i8, ptr %324, i64 42
  %329 = load i32, ptr %328, align 1, !tbaa !21
  %330 = zext i32 %329 to i64
  %gep = getelementptr inbounds i8, ptr %invariant.gep, i64 %330
  %331 = getelementptr inbounds i8, ptr %324, i64 28
  %332 = load i16, ptr %331, align 1, !tbaa !23
  %333 = zext i16 %332 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %327, ptr nonnull align 1 %gep, i64 %333, i1 false)
  %334 = load i16, ptr %331, align 1, !tbaa !23
  %335 = zext i16 %334 to i64
  %336 = getelementptr inbounds i8, ptr %327, i64 %335
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  %338 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  br i1 %338, label %.lr.ph265, label %._crit_edge.loopexit

339:                                              ; preds = %._crit_edge, %70
  %.0 = phi i64 [ %71, %70 ], [ %323, %._crit_edge ]
  call void @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 22, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  br label %341

340:                                              ; preds = %.loopexit235, %.loopexit.split-lp, %302, %87
  %.pn223 = phi { ptr, i32 } [ %.pn220.pn, %302 ], [ %88, %87 ], [ %lpad.loopexit, %.loopexit235 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 22, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  resume { ptr, i32 } %.pn223

341:                                              ; preds = %339, %32
  %.1 = phi i64 [ %35, %32 ], [ %.0, %339 ]
  ret i64 %.1
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZSt3endIKhLm4EEPT_RAT0__S1_(ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #5

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_14EOCDC2Ev(ptr noundef nonnull align 1 dereferenceable(22)) unnamed_addr #5 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIPhERKT_S3_S3_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3hexRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #4

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZSt3endIhLm4EEPT_RAT0__S0_(ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_112GetCDHeadersEPKhmRKNS_4EOCDEmPSt6vectorINS_8CDHeaderESaIS6_EEPm(ptr noundef, i64 noundef, ptr noundef nonnull align 1 dereferenceable(22), i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIN12_GLOBAL__N_18CDHeaderESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN9__gnu_cxxneIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 1 dereferenceable(46) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18CDHeaderESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #0 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

declare i64 @crc32(i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #6

declare noundef i32 @_Z15lodepng_inflatePPhPmPKhm(ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #8

declare void @_Z12ZopfliBufferjjPKhmPPhPm(i32 noundef, i32 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { 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 #6 = { "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 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind }
attributes #11 = { nounwind allocsize(1) }
attributes #12 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTS3Zip", !7, i64 0, !10, i64 8}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!6, !10, i64 8}
!12 = !{!10, !10, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !19, i64 16}
!17 = !{!"_ZTSN12_GLOBAL__N_14EOCDE", !8, i64 0, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !19, i64 12, !19, i64 16, !18, i64 20}
!18 = !{!"short", !8, i64 0}
!19 = !{!"int", !8, i64 0}
!20 = !{!17, !19, i64 12}
!21 = !{!22, !19, i64 42}
!22 = !{!"_ZTSN12_GLOBAL__N_18CDHeaderE", !8, i64 0, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !19, i64 16, !19, i64 20, !19, i64 24, !18, i64 28, !18, i64 30, !18, i64 32, !18, i64 34, !18, i64 36, !19, i64 38, !19, i64 42}
!23 = !{!22, !18, i64 28}
!24 = !{!25, !18, i64 28}
!25 = !{!"_ZTSN12_GLOBAL__N_111LocalHeaderE", !8, i64 0, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !18, i64 12, !19, i64 14, !19, i64 18, !19, i64 22, !18, i64 26, !18, i64 28}
!26 = !{!25, !18, i64 6}
!27 = !{!22, !18, i64 8}
!28 = !{!19, !19, i64 0}
!29 = !{!22, !19, i64 24}
!30 = !{!25, !19, i64 22}
!31 = !{!25, !18, i64 26}
!32 = !{!25, !19, i64 18}
!33 = !{!25, !18, i64 8}
!34 = !{!35, !36, i64 19}
!35 = !{!"_ZTS10ECTOptions", !19, i64 0, !19, i64 4, !36, i64 8, !36, i64 9, !19, i64 12, !36, i64 16, !36, i64 17, !36, i64 18, !36, i64 19, !36, i64 20, !36, i64 21, !36, i64 22, !36, i64 23, !36, i64 24, !36, i64 25, !36, i64 26, !36, i64 27, !19, i64 28, !19, i64 32, !36, i64 36}
!36 = !{!"bool", !8, i64 0}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = !{!25, !19, i64 14}
!40 = !{!22, !19, i64 16}
!41 = !{!22, !19, i64 20}
!42 = !{!22, !18, i64 10}
!43 = !{!35, !19, i64 0}
!44 = !{!35, !19, i64 28}
!45 = !{!17, !18, i64 10}
!46 = !{!17, !18, i64 8}
!47 = !{!17, !18, i64 20}
!48 = !{!22, !18, i64 32}
!49 = !{!22, !18, i64 30}


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