; LLVM IR from SSBMTonberry/pocketlzma :: ref_spec/lzma1900/CPP/7zip/Archive (LzmaHandler)

; 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.CMyComPtr = type { ptr }
%class.CMyComPtr.12 = type { ptr }
%"class.NArchive::NLzma::CDecoder" = type { %class.CMyComPtr, ptr, %class.CMyComPtr.0, ptr }
%class.CMyComPtr.0 = type { ptr }
%"struct.NArchive::NLzma::CHeader" = type { i64, i8, [5 x i8] }
%"class.NArchive::NLzma::CHandler" = type { %struct.IInArchive, %struct.IArchiveOpenSeq, %class.CMyUnknownImp, %"struct.NArchive::NLzma::CHeader", i8, %class.CMyComPtr.9, %class.CMyComPtr.1, i8, i8, i8, i8, i8, i8, i8, i8, i8, i64, i64, i64 }
%struct.IInArchive = type { %struct.IUnknown }
%struct.IUnknown = type { ptr }
%struct.IArchiveOpenSeq = type { %struct.IUnknown }
%class.CMyUnknownImp = type { i32 }
%class.CMyComPtr.9 = type { ptr }
%class.CMyComPtr.1 = type { ptr }
%class.CLocalProgress = type <{ %struct.ICompressProgressInfo, %class.CMyUnknownImp, [4 x i8], %class.CMyComPtr.11, %class.CMyComPtr.12, i8, [7 x i8], i64, i64, i64, i8, i8, [6 x i8] }>
%struct.ICompressProgressInfo = type { %struct.IUnknown }
%class.CMyComPtr.11 = type { ptr }

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN8NArchive5NLzma7CHeader5ParseEPKhb(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i1 noundef zeroext) #0 align 2

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #3

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

declare ptr @__cxa_begin_catch(ptr)

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK8NArchive5NLzma8CHandler13GetHeaderSizeEv(ptr noundef nonnull align 8 dereferenceable(104)) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8NArchive5NLzma8CDecoderC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8NArchive5NLzma8CHandler7ExtractEPKjjiP23IArchiveExtractCallback(ptr noundef nonnull align 8 dereferenceable(104) %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca %class.CMyComPtr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca %class.CMyComPtr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %class.CMyComPtr.12, align 8
  %22 = alloca i32, align 4
  %23 = alloca %"class.NArchive::NLzma::CDecoder", align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i8, align 1
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i8, align 1
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca [14 x i8], align 1
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca %"struct.NArchive::NLzma::CHeader", align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store i32 %2, ptr %9, align 4, !tbaa !9
  store i32 %3, ptr %10, align 4, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !5
  %40 = load ptr, ptr %7, align 8
  %41 = load i32, ptr %9, align 4, !tbaa !9
  %42 = icmp eq i32 %41, 0
  br i1 %42, label %43, label %44

43:                                               ; preds = %5
  store i32 0, ptr %6, align 4
  br label %429

44:                                               ; preds = %5
  %45 = load i32, ptr %9, align 4, !tbaa !9
  %46 = icmp ne i32 %45, -1
  br i1 %46, label %47, label %56

47:                                               ; preds = %44
  %48 = load i32, ptr %9, align 4, !tbaa !9
  %49 = icmp ne i32 %48, 1
  br i1 %49, label %55, label %50

50:                                               ; preds = %47
  %51 = load ptr, ptr %8, align 8, !tbaa !5
  %52 = getelementptr inbounds i32, ptr %51, i64 0
  %53 = load i32, ptr %52, align 4, !tbaa !9
  %54 = icmp ne i32 %53, 0
  br i1 %54, label %55, label %56

55:                                               ; preds = %50, %47
  store i32 -2147024809, ptr %6, align 4
  br label %429

56:                                               ; preds = %50, %44
  %57 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 11
  %58 = load i8, ptr %57, align 4, !tbaa !11, !range !22, !noundef !23
  %59 = trunc i8 %58 to i1
  br i1 %59, label %60, label %73

60:                                               ; preds = %56
  %61 = load ptr, ptr %11, align 8, !tbaa !5
  %62 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 16
  %63 = load i64, ptr %62, align 8, !tbaa !24
  %64 = load ptr, ptr %61, align 8, !tbaa !25
  %65 = getelementptr inbounds ptr, ptr %64, i64 5
  %66 = load ptr, ptr %65, align 8
  %67 = invoke noundef i32 %66(ptr noundef nonnull align 8 dereferenceable(8) %61, i64 noundef %63)
          to label %68 unwind label %69

68:                                               ; preds = %60
  br label %73

69:                                               ; preds = %60
  %70 = landingpad { ptr, i32 }
          catch ptr null
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %12, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %13, align 4
  br label %425

73:                                               ; preds = %68, %56
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  invoke void @_ZN9CMyComPtrI20ISequentialOutStreamEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %74 unwind label %92

74:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %75 = load i32, ptr %10, align 4, !tbaa !9
  %76 = icmp ne i32 %75, 0
  %77 = zext i1 %76 to i64
  %78 = select i1 %76, i32 1, i32 0
  store i32 %78, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %79 = load ptr, ptr %11, align 8, !tbaa !5
  %80 = invoke noundef ptr @_ZN9CMyComPtrI20ISequentialOutStreamEadEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %81 unwind label %96

81:                                               ; preds = %74
  %82 = load i32, ptr %15, align 4, !tbaa !9
  %83 = load ptr, ptr %79, align 8, !tbaa !25
  %84 = getelementptr inbounds ptr, ptr %83, i64 7
  %85 = load ptr, ptr %84, align 8
  %86 = invoke noundef i32 %85(ptr noundef nonnull align 8 dereferenceable(8) %79, i32 noundef 0, ptr noundef %80, i32 noundef %82)
          to label %87 unwind label %96

87:                                               ; preds = %81
  store i32 %86, ptr %16, align 4, !tbaa !9
  %88 = load i32, ptr %16, align 4, !tbaa !9
  %89 = icmp ne i32 %88, 0
  br i1 %89, label %90, label %100

90:                                               ; preds = %87
  %91 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %91, ptr %6, align 4
  store i32 1, ptr %17, align 4
  br label %101

92:                                               ; preds = %73
  %93 = landingpad { ptr, i32 }
          catch ptr null
  %94 = extractvalue { ptr, i32 } %93, 0
  store ptr %94, ptr %12, align 8
  %95 = extractvalue { ptr, i32 } %93, 1
  store i32 %95, ptr %13, align 4
  br label %424

96:                                               ; preds = %81, %74
  %97 = landingpad { ptr, i32 }
          catch ptr null
  %98 = extractvalue { ptr, i32 } %97, 0
  store ptr %98, ptr %12, align 8
  %99 = extractvalue { ptr, i32 } %97, 1
  store i32 %99, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %423

100:                                              ; preds = %87
  store i32 0, ptr %17, align 4
  br label %101

101:                                              ; preds = %100, %90
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  %102 = load i32, ptr %17, align 4
  switch i32 %102, label %422 [
    i32 0, label %103
  ]

103:                                              ; preds = %101
  %104 = load i32, ptr %10, align 4, !tbaa !9
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %114, label %106

106:                                              ; preds = %103
  %107 = invoke noundef zeroext i1 @_ZNK9CMyComPtrI20ISequentialOutStreamEntEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %108 unwind label %110

108:                                              ; preds = %106
  br i1 %107, label %109, label %114

109:                                              ; preds = %108
  store i32 0, ptr %6, align 4
  store i32 1, ptr %17, align 4
  br label %422

110:                                              ; preds = %114, %106
  %111 = landingpad { ptr, i32 }
          catch ptr null
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %12, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %13, align 4
  br label %423

114:                                              ; preds = %108, %103
  %115 = load ptr, ptr %11, align 8, !tbaa !5
  %116 = load i32, ptr %15, align 4, !tbaa !9
  %117 = load ptr, ptr %115, align 8, !tbaa !25
  %118 = getelementptr inbounds ptr, ptr %117, i64 8
  %119 = load ptr, ptr %118, align 8
  %120 = invoke noundef i32 %119(ptr noundef nonnull align 8 dereferenceable(8) %115, i32 noundef %116)
          to label %121 unwind label %110

121:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %122 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #8
          to label %123 unwind label %148

123:                                              ; preds = %121
  invoke void @_ZN15CDummyOutStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %124 unwind label %152

124:                                              ; preds = %123
  store ptr %122, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %125 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN9CMyComPtrI20ISequentialOutStreamEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef %125) #7
  %126 = load ptr, ptr %18, align 8, !tbaa !5
  %127 = invoke noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %128 unwind label %156

128:                                              ; preds = %124
  invoke void @_ZN15CDummyOutStream9SetStreamEP20ISequentialOutStream(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef %127)
          to label %129 unwind label %156

129:                                              ; preds = %128
  %130 = load ptr, ptr %18, align 8, !tbaa !5
  invoke void @_ZN15CDummyOutStream4InitEv(ptr noundef nonnull align 8 dereferenceable(32) %130)
          to label %131 unwind label %156

131:                                              ; preds = %129
  invoke void @_ZN9CMyComPtrI20ISequentialOutStreamE7ReleaseEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %132 unwind label %156

132:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %133 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #8
          to label %134 unwind label %160

134:                                              ; preds = %132
  invoke void @_ZN14CLocalProgressC1Ev(ptr noundef nonnull align 8 dereferenceable(66) %133)
          to label %135 unwind label %164

135:                                              ; preds = %134
  store ptr %133, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %136 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN9CMyComPtrI21ICompressProgressInfoEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %136) #7
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN14CLocalProgress4InitEP9IProgressb(ptr noundef nonnull align 8 dereferenceable(66) %137, ptr noundef %138, i1 noundef zeroext true)
          to label %139 unwind label %168

139:                                              ; preds = %135
  %140 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 8
  %141 = load i8, ptr %140, align 1, !tbaa !27, !range !22, !noundef !23
  %142 = trunc i8 %141 to i1
  br i1 %142, label %143, label %193

143:                                              ; preds = %139
  %144 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 5
  %145 = invoke noundef zeroext i1 @_ZNK9CMyComPtrI9IInStreamEntEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %146 unwind label %168

146:                                              ; preds = %143
  br i1 %145, label %147, label %172

147:                                              ; preds = %146
  store i32 -2147467259, ptr %6, align 4
  store i32 1, ptr %17, align 4
  br label %417

148:                                              ; preds = %121
  %149 = landingpad { ptr, i32 }
          catch ptr null
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %12, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %13, align 4
  br label %421

152:                                              ; preds = %123
  %153 = landingpad { ptr, i32 }
          catch ptr null
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %12, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %122, i64 noundef 32) #9
  br label %421

156:                                              ; preds = %131, %129, %128, %124
  %157 = landingpad { ptr, i32 }
          catch ptr null
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %12, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %13, align 4
  br label %420

160:                                              ; preds = %132
  %161 = landingpad { ptr, i32 }
          catch ptr null
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %12, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %13, align 4
  br label %419

164:                                              ; preds = %134
  %165 = landingpad { ptr, i32 }
          catch ptr null
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %12, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %133, i64 noundef 72) #9
  br label %419

168:                                              ; preds = %143, %135
  %169 = landingpad { ptr, i32 }
          catch ptr null
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %12, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %13, align 4
  br label %418

172:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  %173 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 5
  %174 = invoke noundef ptr @_ZNK9CMyComPtrI9IInStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %173)
          to label %175 unwind label %185

175:                                              ; preds = %172
  %176 = load ptr, ptr %174, align 8, !tbaa !25
  %177 = getelementptr inbounds ptr, ptr %176, i64 6
  %178 = load ptr, ptr %177, align 8
  %179 = invoke noundef i32 %178(ptr noundef nonnull align 8 dereferenceable(8) %174, i64 noundef 0, i32 noundef 0, ptr noundef null)
          to label %180 unwind label %185

180:                                              ; preds = %175
  store i32 %179, ptr %22, align 4, !tbaa !9
  %181 = load i32, ptr %22, align 4, !tbaa !9
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %183, label %189

183:                                              ; preds = %180
  %184 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %184, ptr %6, align 4
  store i32 1, ptr %17, align 4
  br label %190

185:                                              ; preds = %175, %172
  %186 = landingpad { ptr, i32 }
          catch ptr null
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %12, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %418

189:                                              ; preds = %180
  store i32 0, ptr %17, align 4
  br label %190

190:                                              ; preds = %189, %183
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  %191 = load i32, ptr %17, align 4
  switch i32 %191, label %417 [
    i32 0, label %192
  ]

192:                                              ; preds = %190
  br label %195

193:                                              ; preds = %139
  %194 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 8
  store i8 1, ptr %194, align 1, !tbaa !27
  br label %195

195:                                              ; preds = %193, %192
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  invoke void @_ZN8NArchive5NLzma8CDecoderC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %196 unwind label %210

196:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %197 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 4
  %198 = load i8, ptr %197, align 8, !tbaa !28, !range !22, !noundef !23
  %199 = trunc i8 %198 to i1
  %200 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 6
  %201 = invoke noundef ptr @_ZNK9CMyComPtrI19ISequentialInStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %200)
          to label %202 unwind label %214

202:                                              ; preds = %196
  %203 = invoke noundef i32 @_ZN8NArchive5NLzma8CDecoder6CreateEbP19ISequentialInStream(ptr noundef nonnull align 8 dereferenceable(32) %23, i1 noundef zeroext %199, ptr noundef %201)
          to label %204 unwind label %214

204:                                              ; preds = %202
  store i32 %203, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  %205 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %205, ptr %25, align 4, !tbaa !9
  %206 = load i32, ptr %25, align 4, !tbaa !9
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %218

208:                                              ; preds = %204
  %209 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %209, ptr %6, align 4
  store i32 1, ptr %17, align 4
  br label %219

210:                                              ; preds = %195
  %211 = landingpad { ptr, i32 }
          catch ptr null
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %12, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %13, align 4
  br label %416

214:                                              ; preds = %202, %196
  %215 = landingpad { ptr, i32 }
          catch ptr null
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %12, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %13, align 4
  br label %415

218:                                              ; preds = %204
  store i32 0, ptr %17, align 4
  br label %219

219:                                              ; preds = %218, %208
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  %220 = load i32, ptr %17, align 4
  switch i32 %220, label %414 [
    i32 0, label %221
  ]

221:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #7
  store i8 1, ptr %26, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  store i64 0, ptr %27, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  store i64 0, ptr %28, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  store i64 0, ptr %29, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #7
  store i8 0, ptr %30, align 1, !tbaa !29
  br label %222

222:                                              ; preds = %321, %221
  %223 = load i64, ptr %27, align 8, !tbaa !30
  %224 = load ptr, ptr %20, align 8, !tbaa !5
  %225 = getelementptr inbounds %class.CLocalProgress, ptr %224, i32 0, i32 8
  store i64 %223, ptr %225, align 8, !tbaa !31
  %226 = load i64, ptr %28, align 8, !tbaa !30
  %227 = load ptr, ptr %20, align 8, !tbaa !5
  %228 = getelementptr inbounds %class.CLocalProgress, ptr %227, i32 0, i32 9
  store i64 %226, ptr %228, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  %229 = load ptr, ptr %20, align 8, !tbaa !5
  %230 = invoke noundef i32 @_ZN14CLocalProgress6SetCurEv(ptr noundef nonnull align 8 dereferenceable(66) %229)
          to label %231 unwind label %236

231:                                              ; preds = %222
  store i32 %230, ptr %31, align 4, !tbaa !9
  %232 = load i32, ptr %31, align 4, !tbaa !9
  %233 = icmp ne i32 %232, 0
  br i1 %233, label %234, label %240

234:                                              ; preds = %231
  %235 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %235, ptr %6, align 4
  store i32 1, ptr %17, align 4
  br label %241

236:                                              ; preds = %222
  %237 = landingpad { ptr, i32 }
          catch ptr null
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %12, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %413

240:                                              ; preds = %231
  store i32 0, ptr %17, align 4
  br label %241

241:                                              ; preds = %240, %234
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  %242 = load i32, ptr %17, align 4
  switch i32 %242, label %412 [
    i32 0, label %243
  ]

243:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  store i32 14, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 14, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %244 = invoke noundef i32 @_ZNK8NArchive5NLzma8CHandler13GetHeaderSizeEv(ptr noundef nonnull align 8 dereferenceable(104) %40)
          to label %245 unwind label %254

245:                                              ; preds = %243
  store i32 %244, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  %246 = getelementptr inbounds [14 x i8], ptr %33, i64 0, i64 0
  %247 = load i32, ptr %34, align 4, !tbaa !9
  %248 = invoke noundef i32 @_ZN8NArchive5NLzma8CDecoder9ReadInputEPhjPj(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %246, i32 noundef %247, ptr noundef %35)
          to label %249 unwind label %258

249:                                              ; preds = %245
  store i32 %248, ptr %36, align 4, !tbaa !9
  %250 = load i32, ptr %36, align 4, !tbaa !9
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %262

252:                                              ; preds = %249
  %253 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %253, ptr %6, align 4
  store i32 1, ptr %17, align 4
  br label %263

254:                                              ; preds = %243
  %255 = landingpad { ptr, i32 }
          catch ptr null
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %12, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %13, align 4
  br label %323

258:                                              ; preds = %245
  %259 = landingpad { ptr, i32 }
          catch ptr null
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %12, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %322

262:                                              ; preds = %249
  store i32 0, ptr %17, align 4
  br label %263

263:                                              ; preds = %262, %252
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  %264 = load i32, ptr %17, align 4
  switch i32 %264, label %319 [
    i32 0, label %265
  ]

265:                                              ; preds = %263
  %266 = load i32, ptr %35, align 4, !tbaa !9
  %267 = load i32, ptr %34, align 4, !tbaa !9
  %268 = icmp ne i32 %266, %267
  br i1 %268, label %269, label %274

269:                                              ; preds = %265
  %270 = load i32, ptr %35, align 4, !tbaa !9
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %272, label %273

272:                                              ; preds = %269
  store i8 1, ptr %30, align 1, !tbaa !29
  br label %273

273:                                              ; preds = %272, %269
  store i32 2, ptr %17, align 4
  br label %319

274:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #7
  %275 = getelementptr inbounds [14 x i8], ptr %33, i64 0, i64 0
  %276 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 4
  %277 = load i8, ptr %276, align 8, !tbaa !28, !range !22, !noundef !23
  %278 = trunc i8 %277 to i1
  %279 = invoke noundef zeroext i1 @_ZN8NArchive5NLzma7CHeader5ParseEPKhb(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef %275, i1 noundef zeroext %278)
          to label %280 unwind label %282

280:                                              ; preds = %274
  br i1 %279, label %286, label %281

281:                                              ; preds = %280
  store i8 1, ptr %30, align 1, !tbaa !29
  store i32 2, ptr %17, align 4
  br label %318

282:                                              ; preds = %296, %294, %292, %290, %286, %274
  %283 = landingpad { ptr, i32 }
          catch ptr null
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %12, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  br label %322

286:                                              ; preds = %280
  %287 = load i64, ptr %29, align 8, !tbaa !30
  %288 = add i64 %287, 1
  store i64 %288, ptr %29, align 8, !tbaa !30
  store i8 0, ptr %26, align 1, !tbaa !29
  %289 = invoke noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %290 unwind label %282

290:                                              ; preds = %286
  %291 = invoke noundef ptr @_ZNK9CMyComPtrI21ICompressProgressInfoEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %292 unwind label %282

292:                                              ; preds = %290
  %293 = invoke noundef i32 @_ZN8NArchive5NLzma8CDecoder4CodeERKNS0_7CHeaderEP20ISequentialOutStreamP21ICompressProgressInfo(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef %289, ptr noundef %291)
          to label %294 unwind label %282

294:                                              ; preds = %292
  store i32 %293, ptr %24, align 4, !tbaa !9
  %295 = invoke noundef i64 @_ZNK8NArchive5NLzma8CDecoder21GetInputProcessedSizeEv(ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %296 unwind label %282

296:                                              ; preds = %294
  store i64 %295, ptr %27, align 8, !tbaa !30
  %297 = load ptr, ptr %18, align 8, !tbaa !5
  %298 = invoke noundef i64 @_ZNK15CDummyOutStream7GetSizeEv(ptr noundef nonnull align 8 dereferenceable(32) %297)
          to label %299 unwind label %282

299:                                              ; preds = %296
  store i64 %298, ptr %28, align 8, !tbaa !30
  %300 = load i32, ptr %24, align 4, !tbaa !9
  %301 = icmp eq i32 %300, -2147467263
  br i1 %301, label %302, label %304

302:                                              ; preds = %299
  %303 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 14
  store i8 1, ptr %303, align 1, !tbaa !37
  store i32 1, ptr %24, align 4, !tbaa !9
  store i32 2, ptr %17, align 4
  br label %318

304:                                              ; preds = %299
  %305 = load i32, ptr %24, align 4, !tbaa !9
  %306 = icmp eq i32 %305, 1
  br i1 %306, label %307, label %308

307:                                              ; preds = %304
  store i32 2, ptr %17, align 4
  br label %318

308:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  %309 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %309, ptr %38, align 4, !tbaa !9
  %310 = load i32, ptr %38, align 4, !tbaa !9
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %314

312:                                              ; preds = %308
  %313 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %313, ptr %6, align 4
  store i32 1, ptr %17, align 4
  br label %315

314:                                              ; preds = %308
  store i32 0, ptr %17, align 4
  br label %315

315:                                              ; preds = %314, %312
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  %316 = load i32, ptr %17, align 4
  switch i32 %316, label %318 [
    i32 0, label %317
  ]

317:                                              ; preds = %315
  store i32 0, ptr %17, align 4
  br label %318

318:                                              ; preds = %317, %315, %307, %302, %281
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  br label %319

319:                                              ; preds = %318, %273, %263
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 14, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  %320 = load i32, ptr %17, align 4
  switch i32 %320, label %412 [
    i32 0, label %321
    i32 2, label %324
  ]

321:                                              ; preds = %319
  br label %222, !llvm.loop !38

322:                                              ; preds = %282, %258
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  br label %323

323:                                              ; preds = %322, %254
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 14, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %413

324:                                              ; preds = %319
  %325 = load i8, ptr %26, align 1, !tbaa !29, !range !22, !noundef !23
  %326 = trunc i8 %325 to i1
  br i1 %326, label %327, label %329

327:                                              ; preds = %324
  %328 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 7
  store i8 0, ptr %328, align 8, !tbaa !40
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %363

329:                                              ; preds = %324
  %330 = load i32, ptr %24, align 4, !tbaa !9
  %331 = icmp eq i32 %330, 0
  br i1 %331, label %335, label %332

332:                                              ; preds = %329
  %333 = load i32, ptr %24, align 4, !tbaa !9
  %334 = icmp eq i32 %333, 1
  br i1 %334, label %335, label %362

335:                                              ; preds = %332, %329
  %336 = load i8, ptr %30, align 1, !tbaa !29, !range !22, !noundef !23
  %337 = trunc i8 %336 to i1
  br i1 %337, label %338, label %340

338:                                              ; preds = %335
  %339 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 9
  store i8 1, ptr %339, align 2, !tbaa !41
  br label %352

340:                                              ; preds = %335
  %341 = getelementptr inbounds %"class.NArchive::NLzma::CDecoder", ptr %23, i32 0, i32 3
  %342 = load ptr, ptr %341, align 8, !tbaa !42
  %343 = invoke noundef zeroext i1 @_ZNK9NCompress5NLzma8CDecoder14NeedsMoreInputEv(ptr noundef nonnull align 8 dereferenceable(272) %342)
          to label %344 unwind label %347

344:                                              ; preds = %340
  br i1 %343, label %345, label %351

345:                                              ; preds = %344
  %346 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 10
  store i8 1, ptr %346, align 1, !tbaa !46
  br label %351

347:                                              ; preds = %340
  %348 = landingpad { ptr, i32 }
          catch ptr null
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %12, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %13, align 4
  br label %413

351:                                              ; preds = %345, %344
  br label %352

352:                                              ; preds = %351, %338
  %353 = load i64, ptr %27, align 8, !tbaa !30
  %354 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 16
  store i64 %353, ptr %354, align 8, !tbaa !24
  %355 = load i64, ptr %28, align 8, !tbaa !30
  %356 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 17
  store i64 %355, ptr %356, align 8, !tbaa !47
  %357 = load i64, ptr %29, align 8, !tbaa !30
  %358 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 18
  store i64 %357, ptr %358, align 8, !tbaa !48
  %359 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 11
  store i8 1, ptr %359, align 4, !tbaa !11
  %360 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 12
  store i8 1, ptr %360, align 1, !tbaa !49
  %361 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 13
  store i8 1, ptr %361, align 2, !tbaa !50
  br label %362

362:                                              ; preds = %352, %332
  br label %363

363:                                              ; preds = %362, %327
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  store i32 0, ptr %39, align 4, !tbaa !9
  %364 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 7
  %365 = load i8, ptr %364, align 8, !tbaa !40, !range !22, !noundef !23
  %366 = trunc i8 %365 to i1
  br i1 %366, label %368, label %367

367:                                              ; preds = %363
  store i32 7, ptr %39, align 4, !tbaa !9
  br label %398

368:                                              ; preds = %363
  %369 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 10
  %370 = load i8, ptr %369, align 1, !tbaa !46, !range !22, !noundef !23
  %371 = trunc i8 %370 to i1
  br i1 %371, label %372, label %373

372:                                              ; preds = %368
  store i32 5, ptr %39, align 4, !tbaa !9
  br label %397

373:                                              ; preds = %368
  %374 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 14
  %375 = load i8, ptr %374, align 1, !tbaa !37, !range !22, !noundef !23
  %376 = trunc i8 %375 to i1
  br i1 %376, label %377, label %378

377:                                              ; preds = %373
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %396

378:                                              ; preds = %373
  %379 = getelementptr inbounds %"class.NArchive::NLzma::CHandler", ptr %40, i32 0, i32 9
  %380 = load i8, ptr %379, align 2, !tbaa !41, !range !22, !noundef !23
  %381 = trunc i8 %380 to i1
  br i1 %381, label %382, label %383

382:                                              ; preds = %378
  store i32 6, ptr %39, align 4, !tbaa !9
  br label %395

383:                                              ; preds = %378
  %384 = load i32, ptr %24, align 4, !tbaa !9
  %385 = icmp eq i32 %384, 1
  br i1 %385, label %386, label %387

386:                                              ; preds = %383
  store i32 2, ptr %39, align 4, !tbaa !9
  br label %394

387:                                              ; preds = %383
  %388 = load i32, ptr %24, align 4, !tbaa !9
  %389 = icmp eq i32 %388, 0
  br i1 %389, label %390, label %391

390:                                              ; preds = %387
  store i32 0, ptr %39, align 4, !tbaa !9
  br label %393

391:                                              ; preds = %387
  %392 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %392, ptr %6, align 4
  store i32 1, ptr %17, align 4
  br label %411

393:                                              ; preds = %390
  br label %394

394:                                              ; preds = %393, %386
  br label %395

395:                                              ; preds = %394, %382
  br label %396

396:                                              ; preds = %395, %377
  br label %397

397:                                              ; preds = %396, %372
  br label %398

398:                                              ; preds = %397, %367
  invoke void @_ZN9CMyComPtrI20ISequentialOutStreamE7ReleaseEv(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %399 unwind label %407

399:                                              ; preds = %398
  %400 = load ptr, ptr %11, align 8, !tbaa !5
  %401 = load i32, ptr %39, align 4, !tbaa !9
  %402 = load ptr, ptr %400, align 8, !tbaa !25
  %403 = getelementptr inbounds ptr, ptr %402, i64 9
  %404 = load ptr, ptr %403, align 8
  %405 = invoke noundef i32 %404(ptr noundef nonnull align 8 dereferenceable(8) %400, i32 noundef %401)
          to label %406 unwind label %407

406:                                              ; preds = %399
  store i32 %405, ptr %6, align 4
  store i32 1, ptr %17, align 4
  br label %411

407:                                              ; preds = %399, %398
  %408 = landingpad { ptr, i32 }
          catch ptr null
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %12, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %413

411:                                              ; preds = %406, %391
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %412

412:                                              ; preds = %411, %319, %241
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #7
  br label %414

413:                                              ; preds = %407, %347, %323, %236
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #7
  br label %415

414:                                              ; preds = %412, %219
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @_ZN8NArchive5NLzma8CDecoderD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  br label %417

415:                                              ; preds = %413, %214
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @_ZN8NArchive5NLzma8CDecoderD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %416

416:                                              ; preds = %415, %210
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  br label %418

417:                                              ; preds = %414, %190, %147
  call void @_ZN9CMyComPtrI21ICompressProgressInfoED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %422

418:                                              ; preds = %416, %185, %168
  call void @_ZN9CMyComPtrI21ICompressProgressInfoED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %419

419:                                              ; preds = %418, %164, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %420

420:                                              ; preds = %419, %156
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  br label %421

421:                                              ; preds = %420, %152, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %423

422:                                              ; preds = %417, %109, %101
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %429

423:                                              ; preds = %421, %110, %96
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  br label %424

424:                                              ; preds = %423, %92
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %425

425:                                              ; preds = %424, %69
  %426 = load ptr, ptr %12, align 8
  %427 = call ptr @__cxa_begin_catch(ptr %426) #7
  store i32 -2147024882, ptr %6, align 4
  store i32 1, ptr %17, align 4
  call void @__cxa_end_catch()
  br label %429

428:                                              ; No predecessors!
  unreachable

429:                                              ; preds = %425, %422, %55, %43
  %430 = load i32, ptr %6, align 4
  ret i32 %430
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN15CDummyOutStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

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

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

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

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

declare void @_ZN14CLocalProgressC1Ev(ptr noundef nonnull align 8 dereferenceable(66)) unnamed_addr #6

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

declare void @_ZN14CLocalProgress4InitEP9IProgressb(ptr noundef nonnull align 8 dereferenceable(66), ptr noundef, i1 noundef zeroext) #6

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

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

declare noundef i32 @_ZN14CLocalProgress6SetCurEv(ptr noundef nonnull align 8 dereferenceable(66)) #6

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

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

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

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

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

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

declare void @__cxa_end_catch()

declare void @_ZN8NArchive5NLzma8CDecoderD1Ev(ptr)

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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { 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 #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 }
attributes #8 = { builtin allocsize(0) }
attributes #9 = { 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !19, i64 68}
!12 = !{!"_ZTSN8NArchive5NLzma8CHandlerE", !13, i64 0, !15, i64 8, !16, i64 16, !17, i64 24, !19, i64 40, !20, i64 48, !21, i64 56, !19, i64 64, !19, i64 65, !19, i64 66, !19, i64 67, !19, i64 68, !19, i64 69, !19, i64 70, !19, i64 71, !19, i64 72, !18, i64 80, !18, i64 88, !18, i64 96}
!13 = !{!"_ZTS10IInArchive", !14, i64 0}
!14 = !{!"_ZTS8IUnknown"}
!15 = !{!"_ZTS15IArchiveOpenSeq", !14, i64 0}
!16 = !{!"_ZTS13CMyUnknownImp", !10, i64 0}
!17 = !{!"_ZTSN8NArchive5NLzma7CHeaderE", !18, i64 0, !7, i64 8, !7, i64 9}
!18 = !{!"long long", !7, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"_ZTS9CMyComPtrI9IInStreamE", !6, i64 0}
!21 = !{!"_ZTS9CMyComPtrI19ISequentialInStreamE", !6, i64 0}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = !{!12, !18, i64 80}
!25 = !{!26, !26, i64 0}
!26 = !{!"vtable pointer", !8, i64 0}
!27 = !{!12, !19, i64 65}
!28 = !{!12, !19, i64 40}
!29 = !{!19, !19, i64 0}
!30 = !{!18, !18, i64 0}
!31 = !{!32, !18, i64 48}
!32 = !{!"_ZTS14CLocalProgress", !33, i64 0, !16, i64 8, !34, i64 16, !35, i64 24, !19, i64 32, !18, i64 40, !18, i64 48, !18, i64 56, !19, i64 64, !19, i64 65}
!33 = !{!"_ZTS21ICompressProgressInfo", !14, i64 0}
!34 = !{!"_ZTS9CMyComPtrI9IProgressE", !6, i64 0}
!35 = !{!"_ZTS9CMyComPtrI21ICompressProgressInfoE", !6, i64 0}
!36 = !{!32, !18, i64 56}
!37 = !{!12, !19, i64 71}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.mustprogress"}
!40 = !{!12, !19, i64 64}
!41 = !{!12, !19, i64 66}
!42 = !{!43, !6, i64 24}
!43 = !{!"_ZTSN8NArchive5NLzma8CDecoderE", !44, i64 0, !6, i64 8, !45, i64 16, !6, i64 24}
!44 = !{!"_ZTS9CMyComPtrI20ISequentialOutStreamE", !6, i64 0}
!45 = !{!"_ZTS9CMyComPtrI14ICompressCoderE", !6, i64 0}
!46 = !{!12, !19, i64 67}
!47 = !{!12, !18, i64 88}
!48 = !{!12, !18, i64 96}
!49 = !{!12, !19, i64 69}
!50 = !{!12, !19, i64 70}


; 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.CMyComPtr = type { ptr }
%class.CMyComPtr.12 = type { ptr }
%"class.NArchive::NLzma::CDecoder" = type { %class.CMyComPtr, ptr, %class.CMyComPtr.0, ptr }
%class.CMyComPtr.0 = type { ptr }
%"struct.NArchive::NLzma::CHeader" = type { i64, i8, [5 x i8] }

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN8NArchive5NLzma7CHeader5ParseEPKhb(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i1 noundef zeroext) 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

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #3

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

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK8NArchive5NLzma8CHandler13GetHeaderSizeEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8NArchive5NLzma8CDecoderC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN8NArchive5NLzma8CHandler7ExtractEPKjjiP23IArchiveExtractCallback(ptr noundef nonnull align 8 dereferenceable(104) %0, ptr nocapture noundef readonly %1, i32 noundef %2, i32 noundef %3, ptr noundef %4) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %class.CMyComPtr, align 8
  %7 = alloca %class.CMyComPtr, align 8
  %8 = alloca %class.CMyComPtr.12, align 8
  %9 = alloca %"class.NArchive::NLzma::CDecoder", align 8
  %10 = alloca [14 x i8], align 1
  %11 = alloca i32, align 4
  %12 = alloca %"struct.NArchive::NLzma::CHeader", align 8
  switch i32 %2, label %15 [
    i32 0, label %198
    i32 -1, label %16
    i32 1, label %13
  ]

13:                                               ; preds = %5
  %14 = load i32, ptr %1, align 4, !tbaa !5
  %.not116 = icmp eq i32 %14, 0
  br i1 %.not116, label %16, label %15

15:                                               ; preds = %5, %13
  br label %198

16:                                               ; preds = %5, %13
  %17 = getelementptr inbounds i8, ptr %0, i64 68
  %18 = load i8, ptr %17, align 4, !tbaa !9, !range !21, !noundef !22
  %19 = trunc nuw i8 %18 to i1
  br i1 %19, label %20, label %29

20:                                               ; preds = %16
  %21 = getelementptr inbounds i8, ptr %0, i64 80
  %22 = load i64, ptr %21, align 8, !tbaa !23
  %23 = load ptr, ptr %4, align 8, !tbaa !24
  %24 = getelementptr inbounds i8, ptr %23, i64 40
  %25 = load ptr, ptr %24, align 8
  %26 = invoke noundef i32 %25(ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef %22)
          to label %29 unwind label %27

27:                                               ; preds = %20
  %28 = landingpad { ptr, i32 }
          catch ptr null
  br label %196

29:                                               ; preds = %20, %16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  call void @_ZN9CMyComPtrI20ISequentialOutStreamEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6)
  %.not117 = icmp ne i32 %3, 0
  %30 = zext i1 %.not117 to i32
  %31 = call noundef ptr @_ZN9CMyComPtrI20ISequentialOutStreamEadEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
  %32 = load ptr, ptr %4, align 8, !tbaa !24
  %33 = getelementptr inbounds i8, ptr %32, i64 56
  %34 = load ptr, ptr %33, align 8
  %35 = invoke noundef i32 %34(ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef 0, ptr noundef %31, i32 noundef %30)
          to label %36 unwind label %37

36:                                               ; preds = %29
  %.not118 = icmp eq i32 %35, 0
  br i1 %.not118, label %39, label %194

37:                                               ; preds = %29
  %38 = landingpad { ptr, i32 }
          catch ptr null
  br label %195

39:                                               ; preds = %36
  br i1 %.not117, label %44, label %40

40:                                               ; preds = %39
  %41 = call noundef zeroext i1 @_ZNK9CMyComPtrI20ISequentialOutStreamEntEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
  br i1 %41, label %194, label %44

42:                                               ; preds = %44
  %43 = landingpad { ptr, i32 }
          catch ptr null
  br label %195

44:                                               ; preds = %40, %39
  %45 = load ptr, ptr %4, align 8, !tbaa !24
  %46 = getelementptr inbounds i8, ptr %45, i64 64
  %47 = load ptr, ptr %46, align 8
  %48 = invoke noundef i32 %47(ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef %30)
          to label %49 unwind label %42

49:                                               ; preds = %44
  %50 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #9
          to label %51 unwind label %66

51:                                               ; preds = %49
  invoke void @_ZN15CDummyOutStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %52 unwind label %68

52:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  call void @_ZN9CMyComPtrI20ISequentialOutStreamEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull %50) #8
  %53 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %6)
  invoke void @_ZN15CDummyOutStream9SetStreamEP20ISequentialOutStream(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef %53)
          to label %54 unwind label %70

54:                                               ; preds = %52
  call void @_ZN15CDummyOutStream4InitEv(ptr noundef nonnull align 8 dereferenceable(32) %50)
  invoke void @_ZN9CMyComPtrI20ISequentialOutStreamE7ReleaseEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %55 unwind label %70

55:                                               ; preds = %54
  %56 = invoke noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #9
          to label %57 unwind label %72

57:                                               ; preds = %55
  invoke void @_ZN14CLocalProgressC1Ev(ptr noundef nonnull align 8 dereferenceable(66) %56)
          to label %58 unwind label %74

58:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  call void @_ZN9CMyComPtrI21ICompressProgressInfoEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull %56) #8
  invoke void @_ZN14CLocalProgress4InitEP9IProgressb(ptr noundef nonnull align 8 dereferenceable(66) %56, ptr noundef nonnull %4, i1 noundef zeroext true)
          to label %59 unwind label %76

59:                                               ; preds = %58
  %60 = getelementptr inbounds i8, ptr %0, i64 65
  %61 = load i8, ptr %60, align 1, !tbaa !26, !range !21, !noundef !22
  %62 = trunc nuw i8 %61 to i1
  br i1 %62, label %63, label %87

63:                                               ; preds = %59
  %64 = getelementptr inbounds i8, ptr %0, i64 48
  %65 = call noundef zeroext i1 @_ZNK9CMyComPtrI9IInStreamEntEv(ptr noundef nonnull align 8 dereferenceable(8) %64)
  br i1 %65, label %191, label %78

66:                                               ; preds = %49
  %67 = landingpad { ptr, i32 }
          catch ptr null
  br label %195

68:                                               ; preds = %51
  %69 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZdlPvm(ptr noundef nonnull %50, i64 noundef 32) #10
  br label %195

70:                                               ; preds = %54, %52
  %71 = landingpad { ptr, i32 }
          catch ptr null
  br label %193

72:                                               ; preds = %55
  %73 = landingpad { ptr, i32 }
          catch ptr null
  br label %193

74:                                               ; preds = %57
  %75 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZdlPvm(ptr noundef nonnull %56, i64 noundef 72) #10
  br label %193

76:                                               ; preds = %58
  %77 = landingpad { ptr, i32 }
          catch ptr null
  br label %192

78:                                               ; preds = %63
  %79 = call noundef ptr @_ZNK9CMyComPtrI9IInStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %64)
  %80 = load ptr, ptr %79, align 8, !tbaa !24
  %81 = getelementptr inbounds i8, ptr %80, i64 48
  %82 = load ptr, ptr %81, align 8
  %83 = invoke noundef i32 %82(ptr noundef nonnull align 8 dereferenceable(8) %79, i64 noundef 0, i32 noundef 0, ptr noundef null)
          to label %84 unwind label %85

84:                                               ; preds = %78
  %.not119 = icmp eq i32 %83, 0
  br i1 %.not119, label %88, label %191

85:                                               ; preds = %78
  %86 = landingpad { ptr, i32 }
          catch ptr null
  br label %192

87:                                               ; preds = %59
  store i8 1, ptr %60, align 1, !tbaa !26
  br label %88

88:                                               ; preds = %84, %87
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  invoke void @_ZN8NArchive5NLzma8CDecoderC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %89 unwind label %120

89:                                               ; preds = %88
  %90 = getelementptr inbounds i8, ptr %0, i64 40
  %91 = load i8, ptr %90, align 8, !tbaa !27, !range !21, !noundef !22
  %92 = trunc nuw i8 %91 to i1
  %93 = getelementptr inbounds i8, ptr %0, i64 56
  %94 = call noundef ptr @_ZNK9CMyComPtrI19ISequentialInStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %93)
  %95 = invoke noundef i32 @_ZN8NArchive5NLzma8CDecoder6CreateEbP19ISequentialInStream(ptr noundef nonnull align 8 dereferenceable(32) %9, i1 noundef zeroext %92, ptr noundef %94)
          to label %96 unwind label %122

96:                                               ; preds = %89
  %.not120 = icmp eq i32 %95, 0
  br i1 %.not120, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %96
  %97 = getelementptr inbounds i8, ptr %56, i64 48
  %98 = getelementptr inbounds i8, ptr %56, i64 56
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %97, i8 0, i64 16, i1 false)
  %99 = invoke noundef i32 @_ZN14CLocalProgress6SetCurEv(ptr noundef nonnull align 8 dereferenceable(66) %56)
          to label %100 unwind label %.loopexit.split-lp

100:                                              ; preds = %.preheader
  %.not121.peel = icmp eq i32 %99, 0
  br i1 %.not121.peel, label %101, label %.loopexit

101:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 14, ptr nonnull %10) #8
  %102 = call noundef i32 @_ZNK8NArchive5NLzma8CHandler13GetHeaderSizeEv(ptr noundef nonnull align 8 dereferenceable(104) %0)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  %103 = invoke noundef i32 @_ZN8NArchive5NLzma8CDecoder9ReadInputEPhjPj(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull %10, i32 noundef %102, ptr noundef nonnull %11)
          to label %104 unwind label %.loopexit.split-lp294

104:                                              ; preds = %101
  %.not122.peel = icmp eq i32 %103, 0
  br i1 %.not122.peel, label %105, label %.thread

105:                                              ; preds = %104
  %106 = load i32, ptr %11, align 4, !tbaa !5
  %.not123.peel.not = icmp eq i32 %106, %102
  br i1 %.not123.peel.not, label %107, label %.thread135.thread

.thread135.thread:                                ; preds = %105
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br label %.thread343

107:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  %108 = load i8, ptr %90, align 8, !tbaa !27, !range !21, !noundef !22
  %109 = trunc nuw i8 %108 to i1
  %110 = invoke noundef zeroext i1 @_ZN8NArchive5NLzma7CHeader5ParseEPKhb(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %10, i1 noundef zeroext %109)
          to label %111 unwind label %.loopexit.split-lp299

111:                                              ; preds = %107
  br i1 %110, label %112, label %.thread315

.thread315:                                       ; preds = %111
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br label %.thread343

112:                                              ; preds = %111
  %113 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %7)
  %114 = call noundef ptr @_ZNK9CMyComPtrI21ICompressProgressInfoEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %115 = invoke noundef i32 @_ZN8NArchive5NLzma8CDecoder4CodeERKNS0_7CHeaderEP20ISequentialOutStreamP21ICompressProgressInfo(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef %113, ptr noundef %114)
          to label %116 unwind label %.loopexit.split-lp299

116:                                              ; preds = %112
  %117 = invoke noundef i64 @_ZNK8NArchive5NLzma8CDecoder21GetInputProcessedSizeEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %118 unwind label %.loopexit.split-lp299

118:                                              ; preds = %116
  %119 = call noundef i64 @_ZNK15CDummyOutStream7GetSizeEv(ptr noundef nonnull align 8 dereferenceable(32) %50)
  switch i32 %115, label %.thread159 [
    i32 -2147467263, label %.thread309
    i32 1, label %.thread322
    i32 0, label %.peel.next
  ]

.thread322:                                       ; preds = %118
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br label %.thread329

.peel.next:                                       ; preds = %118
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br label %124

120:                                              ; preds = %88
  %121 = landingpad { ptr, i32 }
          catch ptr null
  br label %190

122:                                              ; preds = %89
  %123 = landingpad { ptr, i32 }
          catch ptr null
  br label %189

124:                                              ; preds = %.peel.next, %149
  %.0102 = phi i64 [ %145, %149 ], [ %117, %.peel.next ]
  %.099 = phi i64 [ %147, %149 ], [ %119, %.peel.next ]
  %.096 = phi i64 [ %140, %149 ], [ 1, %.peel.next ]
  store i64 %.0102, ptr %97, align 8, !tbaa !28
  store i64 %.099, ptr %98, align 8, !tbaa !33
  %125 = invoke noundef i32 @_ZN14CLocalProgress6SetCurEv(ptr noundef nonnull align 8 dereferenceable(66) %56)
          to label %126 unwind label %.loopexit292

126:                                              ; preds = %124
  %.not121 = icmp eq i32 %125, 0
  br i1 %.not121, label %127, label %.loopexit

.loopexit292:                                     ; preds = %124
  %lpad.loopexit = landingpad { ptr, i32 }
          catch ptr null
  br label %189

.loopexit.split-lp:                               ; preds = %.preheader
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          catch ptr null
  br label %189

127:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 14, ptr nonnull %10) #8
  %128 = call noundef i32 @_ZNK8NArchive5NLzma8CHandler13GetHeaderSizeEv(ptr noundef nonnull align 8 dereferenceable(104) %0)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  %129 = invoke noundef i32 @_ZN8NArchive5NLzma8CDecoder9ReadInputEPhjPj(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull %10, i32 noundef %128, ptr noundef nonnull %11)
          to label %130 unwind label %.loopexit293

130:                                              ; preds = %127
  %.not122 = icmp eq i32 %129, 0
  br i1 %.not122, label %131, label %.thread

.thread:                                          ; preds = %130, %104
  %.lcssa277 = phi i32 [ %103, %104 ], [ %129, %130 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br label %.loopexit

.loopexit293:                                     ; preds = %127
  %lpad.loopexit295 = landingpad { ptr, i32 }
          catch ptr null
  br label %150

.loopexit.split-lp294:                            ; preds = %101
  %lpad.loopexit.split-lp296 = landingpad { ptr, i32 }
          catch ptr null
  br label %150

131:                                              ; preds = %130
  %132 = load i32, ptr %11, align 4, !tbaa !5
  %.not123 = icmp eq i32 %132, %128
  br i1 %.not123, label %133, label %.thread135

.thread135:                                       ; preds = %131
  %.not125 = icmp ne i32 %132, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br i1 %.not123.peel.not, label %154, label %.thread343

133:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  %134 = load i8, ptr %90, align 8, !tbaa !27, !range !21, !noundef !22
  %135 = trunc nuw i8 %134 to i1
  %136 = invoke noundef zeroext i1 @_ZN8NArchive5NLzma7CHeader5ParseEPKhb(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %10, i1 noundef zeroext %135)
          to label %137 unwind label %.loopexit298

137:                                              ; preds = %133
  br i1 %136, label %139, label %151

.loopexit298:                                     ; preds = %133, %139, %144
  %lpad.loopexit300 = landingpad { ptr, i32 }
          catch ptr null
  br label %138

.loopexit.split-lp299:                            ; preds = %107, %112, %116
  %lpad.loopexit.split-lp301 = landingpad { ptr, i32 }
          catch ptr null
  br label %138

138:                                              ; preds = %.loopexit.split-lp299, %.loopexit298
  %lpad.phi302 = phi { ptr, i32 } [ %lpad.loopexit300, %.loopexit298 ], [ %lpad.loopexit.split-lp301, %.loopexit.split-lp299 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  br label %150

139:                                              ; preds = %137
  %140 = add i64 %.096, 1
  %141 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %7)
  %142 = call noundef ptr @_ZNK9CMyComPtrI21ICompressProgressInfoEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %143 = invoke noundef i32 @_ZN8NArchive5NLzma8CDecoder4CodeERKNS0_7CHeaderEP20ISequentialOutStreamP21ICompressProgressInfo(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef %141, ptr noundef %142)
          to label %144 unwind label %.loopexit298

144:                                              ; preds = %139
  %145 = invoke noundef i64 @_ZNK8NArchive5NLzma8CDecoder21GetInputProcessedSizeEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %146 unwind label %.loopexit298

146:                                              ; preds = %144
  %147 = call noundef i64 @_ZNK15CDummyOutStream7GetSizeEv(ptr noundef nonnull align 8 dereferenceable(32) %50)
  switch i32 %143, label %.thread159 [
    i32 -2147467263, label %.thread309
    i32 1, label %151
    i32 0, label %149
  ]

.thread309:                                       ; preds = %146, %118
  %.lcssa236 = phi i64 [ %119, %118 ], [ %147, %146 ]
  %.lcssa234 = phi i64 [ %117, %118 ], [ %145, %146 ]
  %.lcssa232 = phi i64 [ 1, %118 ], [ %140, %146 ]
  %148 = getelementptr inbounds i8, ptr %0, i64 71
  store i8 1, ptr %148, align 1, !tbaa !34
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br label %.thread329

.thread159:                                       ; preds = %146, %118
  %.lcssa = phi i32 [ %115, %118 ], [ %143, %146 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br label %.loopexit

149:                                              ; preds = %146
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br label %124, !llvm.loop !35

150:                                              ; preds = %.loopexit293, %.loopexit.split-lp294, %138
  %.pn = phi { ptr, i32 } [ %lpad.phi302, %138 ], [ %lpad.loopexit295, %.loopexit293 ], [ %lpad.loopexit.split-lp296, %.loopexit.split-lp294 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br label %189

151:                                              ; preds = %146, %137
  %.ph.ph = phi i32 [ 0, %137 ], [ 2, %146 ]
  %.1103.ph.ph.ph = phi i64 [ %.0102, %137 ], [ %145, %146 ]
  %.1100.ph.ph.ph = phi i64 [ %.099, %137 ], [ %147, %146 ]
  %.197.ph.ph.ph = phi i64 [ %.096, %137 ], [ %140, %146 ]
  %152 = xor i1 %136, true
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 14, ptr nonnull %10) #8
  br i1 %110, label %154, label %.thread343

.thread343:                                       ; preds = %151, %.thread135, %.thread315, %.thread135.thread
  %153 = getelementptr inbounds i8, ptr %0, i64 64
  store i8 0, ptr %153, align 8, !tbaa !37
  br label %181

154:                                              ; preds = %.thread135, %151
  %.2104145308 = phi i64 [ %.0102, %.thread135 ], [ %.1103.ph.ph.ph, %151 ]
  %.2101146307 = phi i64 [ %.099, %.thread135 ], [ %.1100.ph.ph.ph, %151 ]
  %.298147306 = phi i64 [ %.096, %.thread135 ], [ %.197.ph.ph.ph, %151 ]
  %.395148305 = phi i1 [ %.not125, %.thread135 ], [ %152, %151 ]
  %.290149304 = phi i32 [ 0, %.thread135 ], [ %.ph.ph, %151 ]
  br i1 %.395148305, label %155, label %.thread329

155:                                              ; preds = %154
  %156 = getelementptr inbounds i8, ptr %0, i64 66
  store i8 1, ptr %156, align 2, !tbaa !38
  br label %162

.thread329:                                       ; preds = %.thread322, %.thread309, %154
  %.290149304342 = phi i32 [ %.290149304, %154 ], [ 2, %.thread309 ], [ 2, %.thread322 ]
  %.298147306340 = phi i64 [ %.298147306, %154 ], [ %.lcssa232, %.thread309 ], [ 1, %.thread322 ]
  %.2101146307338 = phi i64 [ %.2101146307, %154 ], [ %.lcssa236, %.thread309 ], [ %119, %.thread322 ]
  %.2104145308336 = phi i64 [ %.2104145308, %154 ], [ %.lcssa234, %.thread309 ], [ %117, %.thread322 ]
  %157 = getelementptr inbounds i8, ptr %9, i64 24
  %158 = load ptr, ptr %157, align 8, !tbaa !39
  %159 = call noundef zeroext i1 @_ZNK9NCompress5NLzma8CDecoder14NeedsMoreInputEv(ptr noundef nonnull align 8 dereferenceable(272) %158)
  br i1 %159, label %160, label %162

160:                                              ; preds = %.thread329
  %161 = getelementptr inbounds i8, ptr %0, i64 67
  store i8 1, ptr %161, align 1, !tbaa !43
  br label %162

162:                                              ; preds = %155, %160, %.thread329
  %.290149304341 = phi i32 [ %.290149304342, %.thread329 ], [ %.290149304342, %160 ], [ %.290149304, %155 ]
  %.298147306339 = phi i64 [ %.298147306340, %.thread329 ], [ %.298147306340, %160 ], [ %.298147306, %155 ]
  %.2101146307337 = phi i64 [ %.2101146307338, %.thread329 ], [ %.2101146307338, %160 ], [ %.2101146307, %155 ]
  %.2104145308335 = phi i64 [ %.2104145308336, %.thread329 ], [ %.2104145308336, %160 ], [ %.2104145308, %155 ]
  %163 = getelementptr inbounds i8, ptr %0, i64 80
  store i64 %.2104145308335, ptr %163, align 8, !tbaa !23
  %164 = getelementptr inbounds i8, ptr %0, i64 88
  store i64 %.2101146307337, ptr %164, align 8, !tbaa !44
  %165 = getelementptr inbounds i8, ptr %0, i64 96
  store i64 %.298147306339, ptr %165, align 8, !tbaa !45
  store i8 1, ptr %17, align 4, !tbaa !9
  %166 = getelementptr inbounds i8, ptr %0, i64 69
  store i8 1, ptr %166, align 1, !tbaa !46
  %167 = getelementptr inbounds i8, ptr %0, i64 70
  store i8 1, ptr %167, align 2, !tbaa !47
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 64
  %.pre = load i8, ptr %.phi.trans.insert, align 8, !tbaa !37, !range !21
  %168 = trunc nuw i8 %.pre to i1
  br i1 %168, label %169, label %181

169:                                              ; preds = %162
  %170 = getelementptr inbounds i8, ptr %0, i64 67
  %171 = load i8, ptr %170, align 1, !tbaa !43, !range !21, !noundef !22
  %172 = trunc nuw i8 %171 to i1
  br i1 %172, label %181, label %173

173:                                              ; preds = %169
  %174 = getelementptr inbounds i8, ptr %0, i64 71
  %175 = load i8, ptr %174, align 1, !tbaa !34, !range !21, !noundef !22
  %176 = trunc nuw i8 %175 to i1
  br i1 %176, label %181, label %177

177:                                              ; preds = %173
  %178 = getelementptr inbounds i8, ptr %0, i64 66
  %179 = load i8, ptr %178, align 2, !tbaa !38, !range !21, !noundef !22
  %180 = trunc nuw i8 %179 to i1
  %spec.select = select i1 %180, i32 6, i32 %.290149304341
  br label %181

181:                                              ; preds = %.thread343, %177, %173, %169, %162
  %.0 = phi i32 [ 7, %162 ], [ 5, %169 ], [ 1, %173 ], [ %spec.select, %177 ], [ 7, %.thread343 ]
  invoke void @_ZN9CMyComPtrI20ISequentialOutStreamE7ReleaseEv(ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %182 unwind label %187

182:                                              ; preds = %181
  %183 = load ptr, ptr %4, align 8, !tbaa !24
  %184 = getelementptr inbounds i8, ptr %183, i64 72
  %185 = load ptr, ptr %184, align 8
  %186 = invoke noundef i32 %185(ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef %.0)
          to label %.loopexit unwind label %187

187:                                              ; preds = %182, %181
  %188 = landingpad { ptr, i32 }
          catch ptr null
  br label %189

.loopexit:                                        ; preds = %126, %100, %.thread159, %.thread, %182, %96
  %.12 = phi i32 [ %95, %96 ], [ %186, %182 ], [ %.lcssa277, %.thread ], [ %.lcssa, %.thread159 ], [ %99, %100 ], [ %125, %126 ]
  call void @_ZN8NArchive5NLzma8CDecoderD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %191

189:                                              ; preds = %.loopexit292, %.loopexit.split-lp, %150, %187, %122
  %.pn126.pn = phi { ptr, i32 } [ %123, %122 ], [ %188, %187 ], [ %.pn, %150 ], [ %lpad.loopexit, %.loopexit292 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN8NArchive5NLzma8CDecoderD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %190

190:                                              ; preds = %189, %120
  %.pn126.pn.pn = phi { ptr, i32 } [ %.pn126.pn, %189 ], [ %121, %120 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %192

191:                                              ; preds = %63, %84, %.loopexit
  %.13 = phi i32 [ %.12, %.loopexit ], [ %83, %84 ], [ -2147467259, %63 ]
  call void @_ZN9CMyComPtrI21ICompressProgressInfoED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br label %194

192:                                              ; preds = %190, %85, %76
  %.pn126.pn.pn.pn = phi { ptr, i32 } [ %.pn126.pn.pn, %190 ], [ %86, %85 ], [ %77, %76 ]
  call void @_ZN9CMyComPtrI21ICompressProgressInfoED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %193

193:                                              ; preds = %72, %74, %192, %70
  %.pn126.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %71, %70 ], [ %.pn126.pn.pn.pn, %192 ], [ %75, %74 ], [ %73, %72 ]
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br label %195

194:                                              ; preds = %40, %36, %191
  %.14 = phi i32 [ %.13, %191 ], [ %35, %36 ], [ 0, %40 ]
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  br label %198

195:                                              ; preds = %66, %68, %193, %42, %37
  %.pn126.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %43, %42 ], [ %38, %37 ], [ %.pn126.pn.pn.pn.pn.pn, %193 ], [ %69, %68 ], [ %67, %66 ]
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  br label %196

196:                                              ; preds = %195, %27
  %.pn126.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn126.pn.pn.pn.pn.pn.pn.pn, %195 ], [ %28, %27 ]
  %.979 = extractvalue { ptr, i32 } %.pn126.pn.pn.pn.pn.pn.pn.pn.pn, 0
  %197 = call ptr @__cxa_begin_catch(ptr %.979) #8
  call void @__cxa_end_catch()
  br label %198

198:                                              ; preds = %5, %196, %194, %15
  %.15 = phi i32 [ -2147024809, %15 ], [ %.14, %194 ], [ -2147024882, %196 ], [ %2, %5 ]
  ret i32 %.15
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN15CDummyOutStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

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

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

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

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

declare void @_ZN14CLocalProgressC1Ev(ptr noundef nonnull align 8 dereferenceable(66)) unnamed_addr #6

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

declare void @_ZN14CLocalProgress4InitEP9IProgressb(ptr noundef nonnull align 8 dereferenceable(66), ptr noundef, i1 noundef zeroext) local_unnamed_addr #6

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

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

declare noundef i32 @_ZN14CLocalProgress6SetCurEv(ptr noundef nonnull align 8 dereferenceable(66)) local_unnamed_addr #6

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

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

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

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

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

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

declare void @__cxa_end_catch() local_unnamed_addr

declare void @_ZN8NArchive5NLzma8CDecoderD1Ev(ptr) local_unnamed_addr

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { 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 #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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !17, i64 68}
!10 = !{!"_ZTSN8NArchive5NLzma8CHandlerE", !11, i64 0, !13, i64 8, !14, i64 16, !15, i64 24, !17, i64 40, !18, i64 48, !20, i64 56, !17, i64 64, !17, i64 65, !17, i64 66, !17, i64 67, !17, i64 68, !17, i64 69, !17, i64 70, !17, i64 71, !17, i64 72, !16, i64 80, !16, i64 88, !16, i64 96}
!11 = !{!"_ZTS10IInArchive", !12, i64 0}
!12 = !{!"_ZTS8IUnknown"}
!13 = !{!"_ZTS15IArchiveOpenSeq", !12, i64 0}
!14 = !{!"_ZTS13CMyUnknownImp", !6, i64 0}
!15 = !{!"_ZTSN8NArchive5NLzma7CHeaderE", !16, i64 0, !7, i64 8, !7, i64 9}
!16 = !{!"long long", !7, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!"_ZTS9CMyComPtrI9IInStreamE", !19, i64 0}
!19 = !{!"any pointer", !7, i64 0}
!20 = !{!"_ZTS9CMyComPtrI19ISequentialInStreamE", !19, i64 0}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = !{!10, !16, i64 80}
!24 = !{!25, !25, i64 0}
!25 = !{!"vtable pointer", !8, i64 0}
!26 = !{!10, !17, i64 65}
!27 = !{!10, !17, i64 40}
!28 = !{!29, !16, i64 48}
!29 = !{!"_ZTS14CLocalProgress", !30, i64 0, !14, i64 8, !31, i64 16, !32, i64 24, !17, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !17, i64 64, !17, i64 65}
!30 = !{!"_ZTS21ICompressProgressInfo", !12, i64 0}
!31 = !{!"_ZTS9CMyComPtrI9IProgressE", !19, i64 0}
!32 = !{!"_ZTS9CMyComPtrI21ICompressProgressInfoE", !19, i64 0}
!33 = !{!29, !16, i64 56}
!34 = !{!10, !17, i64 71}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.peeled.count", i32 1}
!37 = !{!10, !17, i64 64}
!38 = !{!10, !17, i64 66}
!39 = !{!40, !19, i64 24}
!40 = !{!"_ZTSN8NArchive5NLzma8CDecoderE", !41, i64 0, !19, i64 8, !42, i64 16, !19, i64 24}
!41 = !{!"_ZTS9CMyComPtrI20ISequentialOutStreamE", !19, i64 0}
!42 = !{!"_ZTS9CMyComPtrI14ICompressCoderE", !19, i64 0}
!43 = !{!10, !17, i64 67}
!44 = !{!10, !16, i64 88}
!45 = !{!10, !16, i64 96}
!46 = !{!10, !17, i64 69}
!47 = !{!10, !17, i64 70}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass