; LLVM IR from mncoppola/rpef :: utilities_src/squashfs4.2/lzma465/CPP/7zip/Compress/LZMA_Alone (LzmaAlone)

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

%"struct.NCommandLineParser::CSwitchForm" = type { ptr, i32, i8, i32, i32, ptr }
%class.CObjectVector = type { %class.CRecordVector }
%class.CRecordVector = type { %class.CBaseRecordVector }
%class.CBaseRecordVector = type { ptr, i32, i32, ptr, i64 }
%"class.NCommandLineParser::CParser" = type { i32, ptr, %class.CObjectVector }
%class.CStringBase = type { ptr, i32, i32 }
%class.CMyComPtr = type { ptr }
%class.CStringBase.0 = type { ptr, i32, i32 }
%class.CMyComPtr.1 = type { ptr }
%class.CMyComPtr.2 = type { ptr }
%struct.tagPROPVARIANT = type { i16, i16, i16, i16, %union.anon }
%union.anon = type { %struct.LARGE_INTEGER }
%struct.LARGE_INTEGER = type { i64 }
%"struct.NCommandLineParser::CSwitchResult" = type <{ i8, i8, [6 x i8], %class.CObjectVector, i32, [4 x i8] }>
%class.CInFileStream = type { %struct.IInStream, %struct.IStreamGetSize, %class.CMyUnknownImp, %"class.NC::NFile::NIO::CInFile" }
%struct.IInStream = type { %struct.ISequentialInStream }
%struct.ISequentialInStream = type { %struct.IUnknown }
%struct.IUnknown = type { ptr }
%struct.IStreamGetSize = type { %struct.IUnknown }
%class.CMyUnknownImp = type { i32 }
%"class.NC::NFile::NIO::CInFile" = type { %"class.NC::NFile::NIO::CFileBase" }
%"class.NC::NFile::NIO::CFileBase" = type { i32 }
%"class.NCompress::NLzma::CDecoder" = type <{ %struct.ICompressCoder, %struct.ICompressSetDecoderProperties2, %struct.ICompressGetInStreamProcessedSize, %struct.ICompressSetInStream, %struct.ICompressSetOutStreamSize, %struct.ISequentialInStream, %class.CMyUnknownImp, [4 x i8], %class.CMyComPtr, ptr, i32, i32, %struct.CLzmaDec, i8, [7 x i8], i64, i64, i64, i8, [7 x i8] }>
%struct.ICompressCoder = type { %struct.IUnknown }
%struct.ICompressSetDecoderProperties2 = type { %struct.IUnknown }
%struct.ICompressGetInStreamProcessedSize = type { %struct.IUnknown }
%struct.ICompressSetInStream = type { %struct.IUnknown }
%struct.ICompressSetOutStreamSize = type { %struct.IUnknown }
%struct.CLzmaDec = type { %struct._CLzmaProps, ptr, ptr, ptr, i32, i32, i64, i64, i32, i32, i32, [4 x i32], i32, i32, i32, i32, i32, [20 x i8] }
%struct._CLzmaProps = type { i32, i32, i32, i32 }

@stderr = external global ptr, align 8
@.str = external hidden unnamed_addr constant [55 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [58 x i8], align 1
@_ZL12kSwitchForms = external hidden constant [15 x %"struct.NCommandLineParser::CSwitchForm"], align 16
@.str.2 = external hidden unnamed_addr constant [4 x i32], align 4
@.str.3 = external hidden unnamed_addr constant [2 x i32], align 4
@.str.4 = external hidden unnamed_addr constant [2 x i32], align 4
@.str.5 = external hidden unnamed_addr constant [2 x i32], align 4
@.str.6 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [31 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.9 = external hidden unnamed_addr constant [16 x i8], align 1
@_ZL13kCantAllocate = external hidden global ptr, align 8
@.str.10 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZL11kWriteError = external hidden global ptr, align 8
@__const._Z5main2iPPKc.propIDs = external hidden unnamed_addr constant [10 x i32], align 16
@.str.16 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [21 x i8], align 1
@_ZL10kReadError = external hidden global ptr, align 8
@.str.18 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z5main2iPPKc(i32 noundef %0, ptr noundef %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca i32, align 4
  %8 = alloca %class.CObjectVector, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.NCommandLineParser::CParser", align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i8, align 1
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %class.CStringBase, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca %class.CMyComPtr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca %class.CStringBase.0, align 8
  %29 = alloca %class.CStringBase.0, align 8
  %30 = alloca %class.CMyComPtr.1, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %class.CStringBase.0, align 8
  %34 = alloca %class.CStringBase.0, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca i64, align 8
  %40 = alloca i32, align 4
  %41 = alloca i64, align 8
  %42 = alloca i32, align 4
  %43 = alloca i64, align 8
  %44 = alloca ptr, align 8
  %45 = alloca %class.CMyComPtr.2, align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i8, align 1
  %53 = alloca i8, align 1
  %54 = alloca [10 x i32], align 16
  %55 = alloca i32, align 4
  %56 = alloca [10 x %struct.tagPROPVARIANT], align 16
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i8, align 1
  %61 = alloca i32, align 4
  %62 = alloca ptr, align 8
  %63 = alloca %class.CMyComPtr.2, align 8
  %64 = alloca i32, align 4
  %65 = alloca [13 x i8], align 1
  %66 = alloca i32, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  %67 = load ptr, ptr @stderr, align 8, !tbaa !9
  %68 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %67, ptr noundef @.str) #11
  %69 = load i32, ptr %4, align 4, !tbaa !5
  %70 = icmp eq i32 %69, 1
  br i1 %70, label %71, label %72

71:                                               ; preds = %2
  call void @_ZL9PrintHelpv()
  store i32 0, ptr %3, align 4
  br label %1024

72:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #11
  store i8 0, ptr %6, align 1, !tbaa !11
  %73 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %74 = trunc i8 %73 to i1
  br i1 %74, label %75, label %78

75:                                               ; preds = %72
  %76 = load ptr, ptr @stderr, align 8, !tbaa !9
  %77 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %76, ptr noundef @.str.1) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %1023

78:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #11
  call void @_ZN13CObjectVectorI11CStringBaseIwEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8)
  %79 = load i32, ptr %4, align 4, !tbaa !5
  %80 = load ptr, ptr %5, align 8, !tbaa !9
  invoke void @_ZL26WriteArgumentsToStringListiPPKcR13CObjectVectorI11CStringBaseIwEE(i32 noundef %79, ptr noundef %80, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %81 unwind label %84

81:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 48, ptr %11) #11
  invoke void @_ZN18NCommandLineParser7CParserC1Ei(ptr noundef nonnull align 8 dereferenceable(48) %11, i32 noundef 15)
          to label %82 unwind label %88

82:                                               ; preds = %81
  invoke void @_ZN18NCommandLineParser7CParser12ParseStringsEPKNS_11CSwitchFormERK13CObjectVectorI11CStringBaseIwEE(ptr noundef nonnull align 8 dereferenceable(48) %11, ptr noundef @_ZL12kSwitchForms, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %83 unwind label %92

83:                                               ; preds = %82
  br label %101

84:                                               ; preds = %78
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %9, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %10, align 4
  br label %1022

88:                                               ; preds = %81
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %9, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %10, align 4
  br label %1021

92:                                               ; preds = %82
  %93 = landingpad { ptr, i32 }
          catch ptr null
  %94 = extractvalue { ptr, i32 } %93, 0
  store ptr %94, ptr %9, align 8
  %95 = extractvalue { ptr, i32 } %93, 1
  store i32 %95, ptr %10, align 4
  br label %96

96:                                               ; preds = %92
  %97 = load ptr, ptr %9, align 8
  %98 = call ptr @__cxa_begin_catch(ptr %97) #11
  invoke void @_ZL16IncorrectCommandv()
          to label %99 unwind label %115

99:                                               ; preds = %96
  invoke void @__cxa_end_catch()
          to label %100 unwind label %119

100:                                              ; preds = %99
  br label %101

101:                                              ; preds = %100, %83
  %102 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 0)
          to label %103 unwind label %119

103:                                              ; preds = %101
  %104 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %102, i32 0, i32 0
  %105 = load i8, ptr %104, align 8, !tbaa !15, !range !13, !noundef !14
  %106 = trunc i8 %105 to i1
  br i1 %106, label %113, label %107

107:                                              ; preds = %103
  %108 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 1)
          to label %109 unwind label %119

109:                                              ; preds = %107
  %110 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %108, i32 0, i32 0
  %111 = load i8, ptr %110, align 8, !tbaa !15, !range !13, !noundef !14
  %112 = trunc i8 %111 to i1
  br i1 %112, label %113, label %124

113:                                              ; preds = %109, %103
  invoke void @_ZL9PrintHelpv()
          to label %114 unwind label %119

114:                                              ; preds = %113
  store i32 0, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %1019

115:                                              ; preds = %96
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %9, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %10, align 4
  invoke void @__cxa_end_catch()
          to label %123 unwind label %1031

119:                                              ; preds = %113, %107, %101, %99
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %9, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %10, align 4
  br label %1020

123:                                              ; preds = %115
  br label %1020

124:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  %125 = getelementptr inbounds %"class.NCommandLineParser::CParser", ptr %11, i32 0, i32 2
  store ptr %125, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #11
  store i32 0, ptr %13, align 4, !tbaa !5
  %126 = load i32, ptr %13, align 4, !tbaa !5
  %127 = load ptr, ptr %12, align 8, !tbaa !9
  %128 = invoke noundef i32 @_ZNK17CBaseRecordVector4SizeEv(ptr noundef nonnull align 8 dereferenceable(32) %127)
          to label %129 unwind label %133

129:                                              ; preds = %124
  %130 = icmp sge i32 %126, %128
  br i1 %130, label %131, label %137

131:                                              ; preds = %129
  invoke void @_ZL16IncorrectCommandv()
          to label %132 unwind label %133

132:                                              ; preds = %131
  br label %137

133:                                              ; preds = %131, %124
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %9, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %10, align 4
  br label %1018

137:                                              ; preds = %132, %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #11
  %138 = load ptr, ptr %12, align 8, !tbaa !9
  %139 = load i32, ptr %13, align 4, !tbaa !5
  %140 = add nsw i32 %139, 1
  store i32 %140, ptr %13, align 4, !tbaa !5
  %141 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %138, i32 noundef %139)
          to label %142 unwind label %160

142:                                              ; preds = %137
  store ptr %141, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #11
  store i8 0, ptr %15, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #11
  store i32 -1, ptr %16, align 4, !tbaa !5
  %143 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 3)
          to label %144 unwind label %164

144:                                              ; preds = %142
  %145 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %143, i32 0, i32 0
  %146 = load i8, ptr %145, align 8, !tbaa !15, !range !13, !noundef !14
  %147 = trunc i8 %146 to i1
  br i1 %147, label %148, label %175

148:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #11
  %149 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 3)
          to label %150 unwind label %168

150:                                              ; preds = %148
  %151 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %149, i32 0, i32 3
  %152 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %151, i32 noundef 0)
          to label %153 unwind label %168

153:                                              ; preds = %150
  %154 = invoke noundef ptr @_ZNK11CStringBaseIwEcvPKwEv(ptr noundef nonnull align 8 dereferenceable(16) %152)
          to label %155 unwind label %168

155:                                              ; preds = %153
  %156 = invoke noundef zeroext i1 @_ZL9GetNumberPKwRj(ptr noundef %154, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %157 unwind label %168

157:                                              ; preds = %155
  br i1 %156, label %172, label %158

158:                                              ; preds = %157
  invoke void @_ZL16IncorrectCommandv()
          to label %159 unwind label %168

159:                                              ; preds = %158
  br label %172

160:                                              ; preds = %137
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %9, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %10, align 4
  br label %1017

164:                                              ; preds = %142
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %9, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %10, align 4
  br label %1016

168:                                              ; preds = %158, %155, %153, %150, %148
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %9, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  br label %1016

172:                                              ; preds = %159, %157
  %173 = load i32, ptr %17, align 4, !tbaa !5
  %174 = shl i32 1, %173
  store i32 %174, ptr %16, align 4, !tbaa !5
  store i8 1, ptr %15, align 1, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  br label %175

175:                                              ; preds = %172, %144
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #11
  invoke void @_ZN11CStringBaseIwEC2EPKw(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef @.str.2)
          to label %176 unwind label %190

176:                                              ; preds = %175
  %177 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 9)
          to label %178 unwind label %194

178:                                              ; preds = %176
  %179 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %177, i32 0, i32 0
  %180 = load i8, ptr %179, align 8, !tbaa !15, !range !13, !noundef !14
  %181 = trunc i8 %180 to i1
  br i1 %181, label %182, label %198

182:                                              ; preds = %178
  %183 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 9)
          to label %184 unwind label %194

184:                                              ; preds = %182
  %185 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %183, i32 0, i32 3
  %186 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %185, i32 noundef 0)
          to label %187 unwind label %194

187:                                              ; preds = %184
  %188 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN11CStringBaseIwEaSERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %186)
          to label %189 unwind label %194

189:                                              ; preds = %187
  br label %198

190:                                              ; preds = %175
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %9, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %10, align 4
  br label %1015

194:                                              ; preds = %187, %184, %182, %176
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %9, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %10, align 4
  br label %1014

198:                                              ; preds = %189, %178
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  store i32 -1, ptr %19, align 4, !tbaa !5
  %199 = load ptr, ptr %14, align 8, !tbaa !9
  %200 = invoke noundef i32 @_ZNK11CStringBaseIwE13CompareNoCaseEPKw(ptr noundef nonnull align 8 dereferenceable(16) %199, ptr noundef @.str.3)
          to label %201 unwind label %220

201:                                              ; preds = %198
  %202 = icmp eq i32 %200, 0
  br i1 %202, label %203, label %236

203:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  store i32 1, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #11
  store i32 1, ptr %21, align 4, !tbaa !5
  %204 = load i32, ptr %13, align 4, !tbaa !5
  %205 = load ptr, ptr %12, align 8, !tbaa !9
  %206 = invoke noundef i32 @_ZNK17CBaseRecordVector4SizeEv(ptr noundef nonnull align 8 dereferenceable(32) %205)
          to label %207 unwind label %224

207:                                              ; preds = %203
  %208 = icmp slt i32 %204, %206
  br i1 %208, label %209, label %229

209:                                              ; preds = %207
  %210 = load ptr, ptr %12, align 8, !tbaa !9
  %211 = load i32, ptr %13, align 4, !tbaa !5
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr %13, align 4, !tbaa !5
  %213 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %210, i32 noundef %211)
          to label %214 unwind label %224

214:                                              ; preds = %209
  %215 = invoke noundef ptr @_ZNK11CStringBaseIwEcvPKwEv(ptr noundef nonnull align 8 dereferenceable(16) %213)
          to label %216 unwind label %224

216:                                              ; preds = %214
  %217 = invoke noundef zeroext i1 @_ZL9GetNumberPKwRj(ptr noundef %215, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %218 unwind label %224

218:                                              ; preds = %216
  br i1 %217, label %228, label %219

219:                                              ; preds = %218
  store i32 1, ptr %21, align 4, !tbaa !5
  br label %228

220:                                              ; preds = %198
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %9, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %10, align 4
  br label %1013

224:                                              ; preds = %229, %216, %214, %209, %203
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %9, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  br label %1013

228:                                              ; preds = %219, %218
  br label %229

229:                                              ; preds = %228, %207
  %230 = load ptr, ptr @stderr, align 8, !tbaa !9
  %231 = load i32, ptr %21, align 4, !tbaa !5
  %232 = load i32, ptr %19, align 4, !tbaa !5
  %233 = load i32, ptr %16, align 4, !tbaa !5
  %234 = invoke noundef i32 @_Z12LzmaBenchConP8_IO_FILEjjj(ptr noundef %230, i32 noundef %231, i32 noundef %232, i32 noundef %233)
          to label %235 unwind label %224

235:                                              ; preds = %229
  store i32 %234, ptr %3, align 4
  store i32 1, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  br label %1012

236:                                              ; preds = %201
  %237 = load i32, ptr %19, align 4, !tbaa !5
  %238 = icmp eq i32 %237, -1
  br i1 %238, label %239, label %240

239:                                              ; preds = %236
  store i32 1, ptr %19, align 4, !tbaa !5
  br label %240

240:                                              ; preds = %239, %236
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #11
  store i8 0, ptr %22, align 1, !tbaa !11
  %241 = load ptr, ptr %14, align 8, !tbaa !9
  %242 = invoke noundef i32 @_ZNK11CStringBaseIwE13CompareNoCaseEPKw(ptr noundef nonnull align 8 dereferenceable(16) %241, ptr noundef @.str.4)
          to label %243 unwind label %246

243:                                              ; preds = %240
  %244 = icmp eq i32 %242, 0
  br i1 %244, label %245, label %250

245:                                              ; preds = %243
  store i8 1, ptr %22, align 1, !tbaa !11
  br label %259

246:                                              ; preds = %256, %250, %240
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %9, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %10, align 4
  br label %1011

250:                                              ; preds = %243
  %251 = load ptr, ptr %14, align 8, !tbaa !9
  %252 = invoke noundef i32 @_ZNK11CStringBaseIwE13CompareNoCaseEPKw(ptr noundef nonnull align 8 dereferenceable(16) %251, ptr noundef @.str.5)
          to label %253 unwind label %246

253:                                              ; preds = %250
  %254 = icmp eq i32 %252, 0
  br i1 %254, label %255, label %256

255:                                              ; preds = %253
  store i8 0, ptr %22, align 1, !tbaa !11
  br label %258

256:                                              ; preds = %253
  invoke void @_ZL16IncorrectCommandv()
          to label %257 unwind label %246

257:                                              ; preds = %256
  br label %258

258:                                              ; preds = %257, %255
  br label %259

259:                                              ; preds = %258, %245
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #11
  %260 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 12)
          to label %261 unwind label %281

261:                                              ; preds = %259
  %262 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %260, i32 0, i32 0
  %263 = load i8, ptr %262, align 8, !tbaa !15, !range !13, !noundef !14
  %264 = trunc i8 %263 to i1
  %265 = zext i1 %264 to i8
  store i8 %265, ptr %23, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #11
  %266 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 13)
          to label %267 unwind label %285

267:                                              ; preds = %261
  %268 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %266, i32 0, i32 0
  %269 = load i8, ptr %268, align 8, !tbaa !15, !range !13, !noundef !14
  %270 = trunc i8 %269 to i1
  %271 = zext i1 %270 to i8
  store i8 %271, ptr %24, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  invoke void @_ZN9CMyComPtrI19ISequentialInStreamEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %272 unwind label %289

272:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  store ptr null, ptr %26, align 8, !tbaa !9
  %273 = load i8, ptr %23, align 1, !tbaa !11, !range !13, !noundef !14
  %274 = trunc i8 %273 to i1
  br i1 %274, label %275, label %301

275:                                              ; preds = %272
  %276 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #12
          to label %277 unwind label %293

277:                                              ; preds = %275
  invoke void @_ZN16CStdInFileStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %276)
          to label %278 unwind label %297

278:                                              ; preds = %277
  %279 = invoke noundef ptr @_ZN9CMyComPtrI19ISequentialInStreamEaSEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef %276)
          to label %280 unwind label %293

280:                                              ; preds = %278
  br label %367

281:                                              ; preds = %259
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %9, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %10, align 4
  br label %1010

285:                                              ; preds = %261
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %9, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %10, align 4
  br label %1009

289:                                              ; preds = %267
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %9, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %10, align 4
  br label %1008

293:                                              ; preds = %307, %301, %278, %275
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %9, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %10, align 4
  br label %1007

297:                                              ; preds = %277
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %9, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %10, align 4
  call void @_ZdlPvm(ptr noundef %276, i64 noundef 16) #13
  br label %1007

301:                                              ; preds = %272
  %302 = load i32, ptr %13, align 4, !tbaa !5
  %303 = load ptr, ptr %12, align 8, !tbaa !9
  %304 = invoke noundef i32 @_ZNK17CBaseRecordVector4SizeEv(ptr noundef nonnull align 8 dereferenceable(32) %303)
          to label %305 unwind label %293

305:                                              ; preds = %301
  %306 = icmp sge i32 %302, %304
  br i1 %306, label %307, label %309

307:                                              ; preds = %305
  invoke void @_ZL16IncorrectCommandv()
          to label %308 unwind label %293

308:                                              ; preds = %307
  br label %309

309:                                              ; preds = %308, %305
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #11
  %310 = load ptr, ptr %12, align 8, !tbaa !9
  %311 = load i32, ptr %13, align 4, !tbaa !5
  %312 = add nsw i32 %311, 1
  store i32 %312, ptr %13, align 4, !tbaa !5
  %313 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %310, i32 noundef %311)
          to label %314 unwind label %336

314:                                              ; preds = %309
  store ptr %313, ptr %27, align 8, !tbaa !9
  %315 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #12
          to label %316 unwind label %336

316:                                              ; preds = %314
  invoke void @_ZN13CInFileStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %315)
          to label %317 unwind label %340

317:                                              ; preds = %316
  store ptr %315, ptr %26, align 8, !tbaa !9
  %318 = load ptr, ptr %26, align 8, !tbaa !9
  %319 = invoke noundef ptr @_ZN9CMyComPtrI19ISequentialInStreamEaSEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef %318)
          to label %320 unwind label %336

320:                                              ; preds = %317
  %321 = load ptr, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #11
  %322 = load ptr, ptr %27, align 8, !tbaa !9
  invoke void @_Z15GetSystemStringRK11CStringBaseIwE(ptr dead_on_unwind writable sret(%class.CStringBase.0) align 8 %28, ptr noundef nonnull align 8 dereferenceable(16) %322)
          to label %323 unwind label %344

323:                                              ; preds = %320
  %324 = invoke noundef ptr @_ZNK11CStringBaseIcEcvPKcEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %325 unwind label %348

325:                                              ; preds = %323
  %326 = invoke noundef zeroext i1 @_ZN13CInFileStream4OpenEPKc(ptr noundef nonnull align 8 dereferenceable(24) %321, ptr noundef %324)
          to label %327 unwind label %348

327:                                              ; preds = %325
  %328 = xor i1 %326, true
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #11
  br i1 %328, label %329, label %362

329:                                              ; preds = %327
  %330 = load ptr, ptr @stderr, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #11
  %331 = load ptr, ptr %27, align 8, !tbaa !9
  invoke void @_Z12GetOemStringRK11CStringBaseIwE(ptr dead_on_unwind writable sret(%class.CStringBase.0) align 8 %29, ptr noundef nonnull align 8 dereferenceable(16) %331)
          to label %332 unwind label %353

332:                                              ; preds = %329
  %333 = invoke noundef ptr @_ZNK11CStringBaseIcEcvPKcEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %334 unwind label %357

334:                                              ; preds = %332
  %335 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %330, ptr noundef @.str.6, ptr noundef %333) #11
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %363

336:                                              ; preds = %317, %314, %309
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %9, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %10, align 4
  br label %366

340:                                              ; preds = %316
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %9, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %10, align 4
  call void @_ZdlPvm(ptr noundef %315, i64 noundef 24) #13
  br label %366

344:                                              ; preds = %320
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %9, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %10, align 4
  br label %352

348:                                              ; preds = %325, %323
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %9, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %10, align 4
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #11
  br label %352

352:                                              ; preds = %348, %344
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #11
  br label %366

353:                                              ; preds = %329
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %9, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %10, align 4
  br label %361

357:                                              ; preds = %332
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %9, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %10, align 4
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #11
  br label %361

361:                                              ; preds = %357, %353
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #11
  br label %366

362:                                              ; preds = %327
  store i32 0, ptr %7, align 4
  br label %363

363:                                              ; preds = %362, %334
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  %364 = load i32, ptr %7, align 4
  switch i32 %364, label %1006 [
    i32 0, label %365
  ]

365:                                              ; preds = %363
  br label %367

366:                                              ; preds = %361, %352, %340, %336
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  br label %1007

367:                                              ; preds = %365, %280
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  invoke void @_ZN9CMyComPtrI20ISequentialOutStreamEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %368 unwind label %377

368:                                              ; preds = %367
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  store ptr null, ptr %31, align 8, !tbaa !9
  %369 = load i8, ptr %24, align 1, !tbaa !11, !range !13, !noundef !14
  %370 = trunc i8 %369 to i1
  br i1 %370, label %371, label %389

371:                                              ; preds = %368
  %372 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #12
          to label %373 unwind label %381

373:                                              ; preds = %371
  invoke void @_ZN17CStdOutFileStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %372)
          to label %374 unwind label %385

374:                                              ; preds = %373
  %375 = invoke noundef ptr @_ZN9CMyComPtrI20ISequentialOutStreamEaSEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef %372)
          to label %376 unwind label %381

376:                                              ; preds = %374
  br label %455

377:                                              ; preds = %367
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %9, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %10, align 4
  br label %1005

381:                                              ; preds = %470, %461, %455, %395, %389, %374, %371
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %9, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %10, align 4
  br label %1004

385:                                              ; preds = %373
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %9, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %10, align 4
  call void @_ZdlPvm(ptr noundef %372, i64 noundef 16) #13
  br label %1004

389:                                              ; preds = %368
  %390 = load i32, ptr %13, align 4, !tbaa !5
  %391 = load ptr, ptr %12, align 8, !tbaa !9
  %392 = invoke noundef i32 @_ZNK17CBaseRecordVector4SizeEv(ptr noundef nonnull align 8 dereferenceable(32) %391)
          to label %393 unwind label %381

393:                                              ; preds = %389
  %394 = icmp sge i32 %390, %392
  br i1 %394, label %395, label %397

395:                                              ; preds = %393
  invoke void @_ZL16IncorrectCommandv()
          to label %396 unwind label %381

396:                                              ; preds = %395
  br label %397

397:                                              ; preds = %396, %393
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  %398 = load ptr, ptr %12, align 8, !tbaa !9
  %399 = load i32, ptr %13, align 4, !tbaa !5
  %400 = add nsw i32 %399, 1
  store i32 %400, ptr %13, align 4, !tbaa !5
  %401 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %398, i32 noundef %399)
          to label %402 unwind label %424

402:                                              ; preds = %397
  store ptr %401, ptr %32, align 8, !tbaa !9
  %403 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #12
          to label %404 unwind label %424

404:                                              ; preds = %402
  invoke void @_ZN14COutFileStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %403)
          to label %405 unwind label %428

405:                                              ; preds = %404
  store ptr %403, ptr %31, align 8, !tbaa !9
  %406 = load ptr, ptr %31, align 8, !tbaa !9
  %407 = invoke noundef ptr @_ZN9CMyComPtrI20ISequentialOutStreamEaSEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef %406)
          to label %408 unwind label %424

408:                                              ; preds = %405
  %409 = load ptr, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #11
  %410 = load ptr, ptr %32, align 8, !tbaa !9
  invoke void @_Z15GetSystemStringRK11CStringBaseIwE(ptr dead_on_unwind writable sret(%class.CStringBase.0) align 8 %33, ptr noundef nonnull align 8 dereferenceable(16) %410)
          to label %411 unwind label %432

411:                                              ; preds = %408
  %412 = invoke noundef ptr @_ZNK11CStringBaseIcEcvPKcEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %413 unwind label %436

413:                                              ; preds = %411
  %414 = invoke noundef zeroext i1 @_ZN14COutFileStream6CreateEPKcb(ptr noundef nonnull align 8 dereferenceable(24) %409, ptr noundef %412, i1 noundef zeroext true)
          to label %415 unwind label %436

415:                                              ; preds = %413
  %416 = xor i1 %414, true
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #11
  br i1 %416, label %417, label %450

417:                                              ; preds = %415
  %418 = load ptr, ptr @stderr, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #11
  %419 = load ptr, ptr %32, align 8, !tbaa !9
  invoke void @_Z12GetOemStringRK11CStringBaseIwE(ptr dead_on_unwind writable sret(%class.CStringBase.0) align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %419)
          to label %420 unwind label %441

420:                                              ; preds = %417
  %421 = invoke noundef ptr @_ZNK11CStringBaseIcEcvPKcEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %422 unwind label %445

422:                                              ; preds = %420
  %423 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %418, ptr noundef @.str.7, ptr noundef %421) #11
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %451

424:                                              ; preds = %405, %402, %397
  %425 = landingpad { ptr, i32 }
          cleanup
  %426 = extractvalue { ptr, i32 } %425, 0
  store ptr %426, ptr %9, align 8
  %427 = extractvalue { ptr, i32 } %425, 1
  store i32 %427, ptr %10, align 4
  br label %454

428:                                              ; preds = %404
  %429 = landingpad { ptr, i32 }
          cleanup
  %430 = extractvalue { ptr, i32 } %429, 0
  store ptr %430, ptr %9, align 8
  %431 = extractvalue { ptr, i32 } %429, 1
  store i32 %431, ptr %10, align 4
  call void @_ZdlPvm(ptr noundef %403, i64 noundef 24) #13
  br label %454

432:                                              ; preds = %408
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %9, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %10, align 4
  br label %440

436:                                              ; preds = %413, %411
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %9, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %10, align 4
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #11
  br label %440

440:                                              ; preds = %436, %432
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #11
  br label %454

441:                                              ; preds = %417
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %9, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %10, align 4
  br label %449

445:                                              ; preds = %420
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %9, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %10, align 4
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #11
  br label %449

449:                                              ; preds = %445, %441
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #11
  br label %454

450:                                              ; preds = %415
  store i32 0, ptr %7, align 4
  br label %451

451:                                              ; preds = %450, %422
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  %452 = load i32, ptr %7, align 4
  switch i32 %452, label %1003 [
    i32 0, label %453
  ]

453:                                              ; preds = %451
  br label %455

454:                                              ; preds = %449, %440, %428, %424
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  br label %1004

455:                                              ; preds = %453, %376
  %456 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 14)
          to label %457 unwind label %381

457:                                              ; preds = %455
  %458 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %456, i32 0, i32 0
  %459 = load i8, ptr %458, align 8, !tbaa !15, !range !13, !noundef !14
  %460 = trunc i8 %459 to i1
  br i1 %460, label %461, label %642

461:                                              ; preds = %457
  %462 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 11)
          to label %463 unwind label %381

463:                                              ; preds = %461
  %464 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %462, i32 0, i32 0
  %465 = load i8, ptr %464, align 8, !tbaa !15, !range !13, !noundef !14
  %466 = trunc i8 %465 to i1
  br i1 %466, label %470, label %467

467:                                              ; preds = %463
  %468 = load i8, ptr %23, align 1, !tbaa !11, !range !13, !noundef !14
  %469 = trunc i8 %468 to i1
  br i1 %469, label %470, label %472

470:                                              ; preds = %467, %463
  %471 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.8, ptr %471, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %471, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %381

472:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %473 = load ptr, ptr %26, align 8, !tbaa !9
  %474 = getelementptr inbounds %class.CInFileStream, ptr %473, i32 0, i32 3
  %475 = invoke noundef zeroext i1 @_ZNK2NC5NFile3NIO9CFileBase9GetLengthERy(ptr noundef nonnull align 4 dereferenceable(4) %474, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %476 unwind label %481

476:                                              ; preds = %472
  %477 = load i64, ptr %35, align 8, !tbaa !21
  %478 = icmp ugt i64 %477, 4026531840
  br i1 %478, label %479, label %485

479:                                              ; preds = %476
  %480 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.9, ptr %480, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %480, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %481

481:                                              ; preds = %479, %472
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %9, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %10, align 4
  br label %641

485:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #11
  %486 = load i64, ptr %35, align 8, !tbaa !21
  store i64 %486, ptr %36, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #11
  store ptr null, ptr %37, align 8, !tbaa !9
  %487 = load i64, ptr %36, align 8, !tbaa !23
  %488 = icmp ne i64 %487, 0
  br i1 %488, label %489, label %503

489:                                              ; preds = %485
  %490 = load i64, ptr %36, align 8, !tbaa !23
  %491 = invoke ptr @MyAlloc(i64 noundef %490)
          to label %492 unwind label %498

492:                                              ; preds = %489
  store ptr %491, ptr %37, align 8, !tbaa !9
  %493 = load ptr, ptr %37, align 8, !tbaa !9
  %494 = icmp eq ptr %493, null
  br i1 %494, label %495, label %502

495:                                              ; preds = %492
  %496 = call ptr @__cxa_allocate_exception(i64 8) #11
  %497 = load ptr, ptr @_ZL13kCantAllocate, align 8, !tbaa !9
  store ptr %497, ptr %496, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %496, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %498

498:                                              ; preds = %511, %505, %503, %495, %489
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %9, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %10, align 4
  br label %640

502:                                              ; preds = %492
  br label %503

503:                                              ; preds = %502, %485
  %504 = invoke noundef ptr @_ZNK9CMyComPtrI19ISequentialInStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %505 unwind label %498

505:                                              ; preds = %503
  %506 = load ptr, ptr %37, align 8, !tbaa !9
  %507 = load i64, ptr %36, align 8, !tbaa !23
  %508 = invoke noundef i32 @_Z15ReadStream_FAILP19ISequentialInStreamPvm(ptr noundef %504, ptr noundef %506, i64 noundef %507)
          to label %509 unwind label %498

509:                                              ; preds = %505
  %510 = icmp ne i32 %508, 0
  br i1 %510, label %511, label %513

511:                                              ; preds = %509
  %512 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.10, ptr %512, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %512, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %498

513:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  store ptr null, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  %514 = load i8, ptr %22, align 1, !tbaa !11, !range !13, !noundef !14
  %515 = trunc i8 %514 to i1
  br i1 %515, label %516, label %569

516:                                              ; preds = %513
  %517 = load i64, ptr %35, align 8, !tbaa !21
  %518 = udiv i64 %517, 20
  %519 = mul i64 %518, 21
  %520 = add i64 %519, 65536
  store i64 %520, ptr %39, align 8, !tbaa !23
  %521 = load i64, ptr %39, align 8, !tbaa !23
  %522 = icmp ne i64 %521, 0
  br i1 %522, label %523, label %537

523:                                              ; preds = %516
  %524 = load i64, ptr %39, align 8, !tbaa !23
  %525 = invoke ptr @MyAlloc(i64 noundef %524)
          to label %526 unwind label %532

526:                                              ; preds = %523
  store ptr %525, ptr %38, align 8, !tbaa !9
  %527 = load ptr, ptr %38, align 8, !tbaa !9
  %528 = icmp eq ptr %527, null
  br i1 %528, label %529, label %536

529:                                              ; preds = %526
  %530 = call ptr @__cxa_allocate_exception(i64 8) #11
  %531 = load ptr, ptr @_ZL13kCantAllocate, align 8, !tbaa !9
  store ptr %531, ptr %530, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %530, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %532

532:                                              ; preds = %635, %633, %630, %624, %622, %529, %523
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %9, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %10, align 4
  br label %639

536:                                              ; preds = %526
  br label %537

537:                                              ; preds = %536, %516
  %538 = load i8, ptr %15, align 1, !tbaa !11, !range !13, !noundef !14
  %539 = trunc i8 %538 to i1
  br i1 %539, label %541, label %540

540:                                              ; preds = %537
  store i32 8388608, ptr %16, align 4, !tbaa !5
  br label %541

541:                                              ; preds = %540, %537
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #11
  %542 = load ptr, ptr %38, align 8, !tbaa !9
  %543 = load ptr, ptr %37, align 8, !tbaa !9
  %544 = load i64, ptr %36, align 8, !tbaa !23
  %545 = load i32, ptr %16, align 4, !tbaa !5
  %546 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 14)
          to label %547 unwind label %561

547:                                              ; preds = %541
  %548 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %546, i32 0, i32 4
  %549 = load i32, ptr %548, align 8, !tbaa !24
  %550 = icmp eq i32 %549, 0
  %551 = zext i1 %550 to i64
  %552 = select i1 %550, i32 1, i32 2
  %553 = invoke i32 @Lzma86_Encode(ptr noundef %542, ptr noundef %39, ptr noundef %543, i64 noundef %544, i32 noundef 5, i32 noundef %545, i32 noundef %552)
          to label %554 unwind label %561

554:                                              ; preds = %547
  store i32 %553, ptr %40, align 4, !tbaa !5
  %555 = load i32, ptr %40, align 4, !tbaa !5
  %556 = icmp ne i32 %555, 0
  br i1 %556, label %557, label %565

557:                                              ; preds = %554
  %558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %559 = load i32, ptr %40, align 4, !tbaa !5
  %560 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %558, ptr noundef @.str.11, i32 noundef %559) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %566

561:                                              ; preds = %547, %541
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %9, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  br label %639

565:                                              ; preds = %554
  store i32 0, ptr %7, align 4
  br label %566

566:                                              ; preds = %565, %557
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  %567 = load i32, ptr %7, align 4
  switch i32 %567, label %638 [
    i32 0, label %568
  ]

568:                                              ; preds = %566
  br label %622

569:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #11
  %570 = load ptr, ptr %37, align 8, !tbaa !9
  %571 = load i64, ptr %36, align 8, !tbaa !23
  %572 = invoke i32 @Lzma86_GetUnpackSize(ptr noundef %570, i64 noundef %571, ptr noundef %41)
          to label %573 unwind label %577

573:                                              ; preds = %569
  %574 = icmp ne i32 %572, 0
  br i1 %574, label %575, label %581

575:                                              ; preds = %573
  %576 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.12, ptr %576, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %576, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %577

577:                                              ; preds = %597, %591, %586, %575, %569
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %9, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %10, align 4
  br label %621

581:                                              ; preds = %573
  %582 = load i64, ptr %41, align 8, !tbaa !21
  store i64 %582, ptr %39, align 8, !tbaa !23
  %583 = load i64, ptr %39, align 8, !tbaa !23
  %584 = load i64, ptr %41, align 8, !tbaa !21
  %585 = icmp ne i64 %583, %584
  br i1 %585, label %586, label %588

586:                                              ; preds = %581
  %587 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.13, ptr %587, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %587, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %577

588:                                              ; preds = %581
  %589 = load i64, ptr %39, align 8, !tbaa !23
  %590 = icmp ne i64 %589, 0
  br i1 %590, label %591, label %601

591:                                              ; preds = %588
  %592 = load i64, ptr %39, align 8, !tbaa !23
  %593 = invoke ptr @MyAlloc(i64 noundef %592)
          to label %594 unwind label %577

594:                                              ; preds = %591
  store ptr %593, ptr %38, align 8, !tbaa !9
  %595 = load ptr, ptr %38, align 8, !tbaa !9
  %596 = icmp eq ptr %595, null
  br i1 %596, label %597, label %600

597:                                              ; preds = %594
  %598 = call ptr @__cxa_allocate_exception(i64 8) #11
  %599 = load ptr, ptr @_ZL13kCantAllocate, align 8, !tbaa !9
  store ptr %599, ptr %598, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %598, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %577

600:                                              ; preds = %594
  br label %601

601:                                              ; preds = %600, %588
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #11
  %602 = load ptr, ptr %38, align 8, !tbaa !9
  %603 = load ptr, ptr %37, align 8, !tbaa !9
  %604 = invoke i32 @Lzma86_Decode(ptr noundef %602, ptr noundef %39, ptr noundef %603, ptr noundef %36)
          to label %605 unwind label %611

605:                                              ; preds = %601
  store i32 %604, ptr %42, align 4, !tbaa !5
  %606 = load i64, ptr %36, align 8, !tbaa !23
  %607 = load i64, ptr %35, align 8, !tbaa !21
  %608 = icmp ne i64 %606, %607
  br i1 %608, label %609, label %615

609:                                              ; preds = %605
  %610 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.14, ptr %610, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %610, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %611

611:                                              ; preds = %618, %609, %601
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %9, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #11
  br label %621

615:                                              ; preds = %605
  %616 = load i32, ptr %42, align 4, !tbaa !5
  %617 = icmp ne i32 %616, 0
  br i1 %617, label %618, label %620

618:                                              ; preds = %615
  %619 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.15, ptr %619, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %619, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %611

620:                                              ; preds = %615
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  br label %622

621:                                              ; preds = %611, %577
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  br label %639

622:                                              ; preds = %620, %568
  %623 = invoke noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %624 unwind label %532

624:                                              ; preds = %622
  %625 = load ptr, ptr %38, align 8, !tbaa !9
  %626 = load i64, ptr %39, align 8, !tbaa !23
  %627 = invoke noundef i32 @_Z11WriteStreamP20ISequentialOutStreamPKvm(ptr noundef %623, ptr noundef %625, i64 noundef %626)
          to label %628 unwind label %532

628:                                              ; preds = %624
  %629 = icmp ne i32 %627, 0
  br i1 %629, label %630, label %633

630:                                              ; preds = %628
  %631 = call ptr @__cxa_allocate_exception(i64 8) #11
  %632 = load ptr, ptr @_ZL11kWriteError, align 8, !tbaa !9
  store ptr %632, ptr %631, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr %631, ptr @_ZTIPKc, ptr null) #14
          to label %1034 unwind label %532

633:                                              ; preds = %628
  %634 = load ptr, ptr %38, align 8, !tbaa !9
  invoke void @MyFree(ptr noundef %634)
          to label %635 unwind label %532

635:                                              ; preds = %633
  %636 = load ptr, ptr %37, align 8, !tbaa !9
  invoke void @MyFree(ptr noundef %636)
          to label %637 unwind label %532

637:                                              ; preds = %635
  store i32 0, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %638

638:                                              ; preds = %637, %566
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  br label %1003

639:                                              ; preds = %621, %561, %532
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  br label %640

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

641:                                              ; preds = %640, %481
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  br label %1004

642:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #11
  %643 = load i8, ptr %22, align 1, !tbaa !11, !range !13, !noundef !14
  %644 = trunc i8 %643 to i1
  br i1 %644, label %645, label %889

645:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #11
  %646 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 88) #12
          to label %647 unwind label %654

647:                                              ; preds = %645
  invoke void @_ZN9NCompress5NLzma8CEncoderC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %646)
          to label %648 unwind label %658

648:                                              ; preds = %647
  store ptr %646, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #11
  %649 = load ptr, ptr %44, align 8, !tbaa !9
  invoke void @_ZN9CMyComPtrI14ICompressCoderEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef %649)
          to label %650 unwind label %662

650:                                              ; preds = %648
  %651 = load i8, ptr %15, align 1, !tbaa !11, !range !13, !noundef !14
  %652 = trunc i8 %651 to i1
  br i1 %652, label %666, label %653

653:                                              ; preds = %650
  store i32 8388608, ptr %16, align 4, !tbaa !5
  br label %666

654:                                              ; preds = %645
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %9, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %10, align 4
  br label %888

658:                                              ; preds = %647
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %9, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %10, align 4
  call void @_ZdlPvm(ptr noundef %646, i64 noundef 88) #13
  br label %888

662:                                              ; preds = %648
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %9, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %10, align 4
  br label %887

666:                                              ; preds = %653, %650
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #11
  store i32 2, ptr %46, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #11
  store i32 3, ptr %47, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #11
  store i32 0, ptr %48, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #11
  store i32 1, ptr %49, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  store i32 128, ptr %50, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #11
  %667 = load i32, ptr %50, align 4, !tbaa !5
  %668 = udiv i32 %667, 2
  %669 = add i32 16, %668
  store i32 %669, ptr %51, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #11
  store i8 0, ptr %52, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #11
  %670 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 11)
          to label %671 unwind label %706

671:                                              ; preds = %666
  %672 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %670, i32 0, i32 0
  %673 = load i8, ptr %672, align 8, !tbaa !15, !range !13, !noundef !14
  %674 = trunc i8 %673 to i1
  br i1 %674, label %678, label %675

675:                                              ; preds = %671
  %676 = load i8, ptr %23, align 1, !tbaa !11, !range !13, !noundef !14
  %677 = trunc i8 %676 to i1
  br label %678

678:                                              ; preds = %675, %671
  %679 = phi i1 [ true, %671 ], [ %677, %675 ]
  %680 = zext i1 %679 to i8
  store i8 %680, ptr %53, align 1, !tbaa !11
  invoke void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48) %11, i32 noundef 2, ptr noundef nonnull align 4 dereferenceable(4) %49)
          to label %681 unwind label %706

681:                                              ; preds = %678
  invoke void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48) %11, i32 noundef 4, ptr noundef nonnull align 4 dereferenceable(4) %50)
          to label %682 unwind label %706

682:                                              ; preds = %681
  invoke void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48) %11, i32 noundef 6, ptr noundef nonnull align 4 dereferenceable(4) %47)
          to label %683 unwind label %706

683:                                              ; preds = %682
  invoke void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48) %11, i32 noundef 7, ptr noundef nonnull align 4 dereferenceable(4) %48)
          to label %684 unwind label %706

684:                                              ; preds = %683
  invoke void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48) %11, i32 noundef 8, ptr noundef nonnull align 4 dereferenceable(4) %46)
          to label %685 unwind label %706

685:                                              ; preds = %684
  %686 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 5)
          to label %687 unwind label %706

687:                                              ; preds = %685
  %688 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %686, i32 0, i32 0
  %689 = load i8, ptr %688, align 8, !tbaa !15, !range !13, !noundef !14
  %690 = trunc i8 %689 to i1
  %691 = zext i1 %690 to i8
  store i8 %691, ptr %52, align 1, !tbaa !11
  %692 = load i8, ptr %52, align 1, !tbaa !11, !range !13, !noundef !14
  %693 = trunc i8 %692 to i1
  br i1 %693, label %694, label %711

694:                                              ; preds = %687
  %695 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 5)
          to label %696 unwind label %706

696:                                              ; preds = %694
  %697 = getelementptr inbounds %"struct.NCommandLineParser::CSwitchResult", ptr %695, i32 0, i32 3
  %698 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %697, i32 noundef 0)
          to label %699 unwind label %706

699:                                              ; preds = %696
  %700 = invoke noundef ptr @_ZNK11CStringBaseIwEcvPKwEv(ptr noundef nonnull align 8 dereferenceable(16) %698)
          to label %701 unwind label %706

701:                                              ; preds = %699
  %702 = invoke noundef zeroext i1 @_ZL9GetNumberPKwRj(ptr noundef %700, ptr noundef nonnull align 4 dereferenceable(4) %51)
          to label %703 unwind label %706

703:                                              ; preds = %701
  br i1 %702, label %710, label %704

704:                                              ; preds = %703
  invoke void @_ZL16IncorrectCommandv()
          to label %705 unwind label %706

705:                                              ; preds = %704
  br label %710

706:                                              ; preds = %704, %701, %699, %696, %694, %685, %684, %683, %682, %681, %678, %666
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %9, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %10, align 4
  br label %886

710:                                              ; preds = %705, %703
  br label %711

711:                                              ; preds = %710, %687
  call void @llvm.lifetime.start.p0(i64 40, ptr %54) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %54, ptr align 16 @__const._Z5main2iPPKc.propIDs, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #11
  store i32 10, ptr %55, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 160, ptr %56) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #11
  store i32 0, ptr %57, align 4, !tbaa !5
  br label %712

712:                                              ; preds = %721, %711
  %713 = load i32, ptr %57, align 4, !tbaa !5
  %714 = icmp slt i32 %713, 6
  br i1 %714, label %716, label %715

715:                                              ; preds = %712
  store i32 2, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  br label %724

716:                                              ; preds = %712
  %717 = load i32, ptr %57, align 4, !tbaa !5
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 %718
  %720 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %719, i32 0, i32 0
  store i16 19, ptr %720, align 16, !tbaa !25
  br label %721

721:                                              ; preds = %716
  %722 = load i32, ptr %57, align 4, !tbaa !5
  %723 = add nsw i32 %722, 1
  store i32 %723, ptr %57, align 4, !tbaa !5
  br label %712, !llvm.loop !28

724:                                              ; preds = %715
  %725 = load i32, ptr %16, align 4, !tbaa !5
  %726 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 0
  %727 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %726, i32 0, i32 4
  store i32 %725, ptr %727, align 8, !tbaa !30
  %728 = load i32, ptr %46, align 4, !tbaa !5
  %729 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 1
  %730 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %729, i32 0, i32 4
  store i32 %728, ptr %730, align 8, !tbaa !30
  %731 = load i32, ptr %47, align 4, !tbaa !5
  %732 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 2
  %733 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %732, i32 0, i32 4
  store i32 %731, ptr %733, align 8, !tbaa !30
  %734 = load i32, ptr %48, align 4, !tbaa !5
  %735 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 3
  %736 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %735, i32 0, i32 4
  store i32 %734, ptr %736, align 8, !tbaa !30
  %737 = load i32, ptr %49, align 4, !tbaa !5
  %738 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 4
  %739 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %738, i32 0, i32 4
  store i32 %737, ptr %739, align 8, !tbaa !30
  %740 = load i32, ptr %50, align 4, !tbaa !5
  %741 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 5
  %742 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %741, i32 0, i32 4
  store i32 %740, ptr %742, align 8, !tbaa !30
  %743 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 6
  %744 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %743, i32 0, i32 0
  store i16 8, ptr %744, align 16, !tbaa !25
  %745 = invoke noundef ptr @_ZNK11CStringBaseIwEcvPKwEv(ptr noundef nonnull align 8 dereferenceable(16) %18)
          to label %746 unwind label %772

746:                                              ; preds = %724
  %747 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 6
  %748 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %747, i32 0, i32 4
  store ptr %745, ptr %748, align 8, !tbaa !30
  %749 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 7
  %750 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %749, i32 0, i32 0
  store i16 11, ptr %750, align 16, !tbaa !25
  %751 = load i8, ptr %53, align 1, !tbaa !11, !range !13, !noundef !14
  %752 = trunc i8 %751 to i1
  %753 = zext i1 %752 to i64
  %754 = select i1 %752, i16 -1, i16 0
  %755 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 7
  %756 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %755, i32 0, i32 4
  store i16 %754, ptr %756, align 8, !tbaa !30
  %757 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 8
  %758 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %757, i32 0, i32 0
  store i16 19, ptr %758, align 16, !tbaa !25
  %759 = load i32, ptr %19, align 4, !tbaa !5
  %760 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 8
  %761 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %760, i32 0, i32 4
  store i32 %759, ptr %761, align 8, !tbaa !30
  %762 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 9
  %763 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %762, i32 0, i32 0
  store i16 19, ptr %763, align 16, !tbaa !25
  %764 = load i32, ptr %51, align 4, !tbaa !5
  %765 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 9
  %766 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %765, i32 0, i32 4
  store i32 %764, ptr %766, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #11
  store i32 10, ptr %58, align 4, !tbaa !5
  %767 = load i8, ptr %52, align 1, !tbaa !11, !range !13, !noundef !14
  %768 = trunc i8 %767 to i1
  br i1 %768, label %776, label %769

769:                                              ; preds = %746
  %770 = load i32, ptr %58, align 4, !tbaa !5
  %771 = add nsw i32 %770, -1
  store i32 %771, ptr %58, align 4, !tbaa !5
  br label %776

772:                                              ; preds = %724
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %9, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %10, align 4
  br label %885

776:                                              ; preds = %769, %746
  %777 = load ptr, ptr %44, align 8, !tbaa !9
  %778 = getelementptr inbounds [10 x i32], ptr %54, i64 0, i64 0
  %779 = getelementptr inbounds [10 x %struct.tagPROPVARIANT], ptr %56, i64 0, i64 0
  %780 = load i32, ptr %58, align 4, !tbaa !5
  %781 = load ptr, ptr %777, align 8, !tbaa !31
  %782 = getelementptr inbounds ptr, ptr %781, i64 6
  %783 = load ptr, ptr %782, align 8
  %784 = invoke noundef i32 %783(ptr noundef nonnull align 8 dereferenceable(88) %777, ptr noundef %778, ptr noundef %779, i32 noundef %780)
          to label %785 unwind label %789

785:                                              ; preds = %776
  %786 = icmp ne i32 %784, 0
  br i1 %786, label %787, label %793

787:                                              ; preds = %785
  invoke void @_ZL16IncorrectCommandv()
          to label %788 unwind label %789

788:                                              ; preds = %787
  br label %793

789:                                              ; preds = %808, %796, %793, %787, %776
  %790 = landingpad { ptr, i32 }
          cleanup
  %791 = extractvalue { ptr, i32 } %790, 0
  store ptr %791, ptr %9, align 8
  %792 = extractvalue { ptr, i32 } %790, 1
  store i32 %792, ptr %10, align 4
  br label %884

793:                                              ; preds = %788, %785
  %794 = load ptr, ptr %44, align 8, !tbaa !9
  %795 = invoke noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %796 unwind label %789

796:                                              ; preds = %793
  %797 = load ptr, ptr %794, align 8, !tbaa !31
  %798 = getelementptr inbounds ptr, ptr %797, i64 7
  %799 = load ptr, ptr %798, align 8
  %800 = invoke noundef i32 %799(ptr noundef nonnull align 8 dereferenceable(88) %794, ptr noundef %795)
          to label %801 unwind label %789

801:                                              ; preds = %796
  %802 = load i8, ptr %53, align 1, !tbaa !11, !range !13, !noundef !14
  %803 = trunc i8 %802 to i1
  br i1 %803, label %807, label %804

804:                                              ; preds = %801
  %805 = load i8, ptr %23, align 1, !tbaa !11, !range !13, !noundef !14
  %806 = trunc i8 %805 to i1
  br i1 %806, label %807, label %808

807:                                              ; preds = %804, %801
  store i64 -1, ptr %43, align 8, !tbaa !21
  br label %813

808:                                              ; preds = %804
  %809 = load ptr, ptr %26, align 8, !tbaa !9
  %810 = getelementptr inbounds %class.CInFileStream, ptr %809, i32 0, i32 3
  %811 = invoke noundef zeroext i1 @_ZNK2NC5NFile3NIO9CFileBase9GetLengthERy(ptr noundef nonnull align 4 dereferenceable(4) %810, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %812 unwind label %789

812:                                              ; preds = %808
  br label %813

813:                                              ; preds = %812, %807
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #11
  store i32 0, ptr %59, align 4, !tbaa !5
  br label %814

814:                                              ; preds = %845, %813
  %815 = load i32, ptr %59, align 4, !tbaa !5
  %816 = icmp slt i32 %815, 8
  br i1 %816, label %818, label %817

817:                                              ; preds = %814
  store i32 5, ptr %7, align 4
  br label %848

818:                                              ; preds = %814
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #11
  %819 = load i64, ptr %43, align 8, !tbaa !21
  %820 = load i32, ptr %59, align 4, !tbaa !5
  %821 = mul nsw i32 8, %820
  %822 = zext i32 %821 to i64
  %823 = lshr i64 %819, %822
  %824 = trunc i64 %823 to i8
  store i8 %824, ptr %60, align 1, !tbaa !30
  %825 = invoke noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %826 unwind label %837

826:                                              ; preds = %818
  %827 = load ptr, ptr %825, align 8, !tbaa !31
  %828 = getelementptr inbounds ptr, ptr %827, i64 5
  %829 = load ptr, ptr %828, align 8
  %830 = invoke noundef i32 %829(ptr noundef nonnull align 8 dereferenceable(8) %825, ptr noundef %60, i32 noundef 1, ptr noundef null)
          to label %831 unwind label %837

831:                                              ; preds = %826
  %832 = icmp ne i32 %830, 0
  br i1 %832, label %833, label %841

833:                                              ; preds = %831
  %834 = load ptr, ptr @stderr, align 8, !tbaa !9
  %835 = load ptr, ptr @_ZL11kWriteError, align 8, !tbaa !9
  %836 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %834, ptr noundef %835) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %842

837:                                              ; preds = %826, %818
  %838 = landingpad { ptr, i32 }
          cleanup
  %839 = extractvalue { ptr, i32 } %838, 0
  store ptr %839, ptr %9, align 8
  %840 = extractvalue { ptr, i32 } %838, 1
  store i32 %840, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #11
  br label %884

841:                                              ; preds = %831
  store i32 0, ptr %7, align 4
  br label %842

842:                                              ; preds = %841, %833
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #11
  %843 = load i32, ptr %7, align 4
  switch i32 %843, label %848 [
    i32 0, label %844
  ]

844:                                              ; preds = %842
  br label %845

845:                                              ; preds = %844
  %846 = load i32, ptr %59, align 4, !tbaa !5
  %847 = add nsw i32 %846, 1
  store i32 %847, ptr %59, align 4, !tbaa !5
  br label %814, !llvm.loop !33

848:                                              ; preds = %842, %817
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #11
  %849 = load i32, ptr %7, align 4
  switch i32 %849, label %881 [
    i32 5, label %850
  ]

850:                                              ; preds = %848
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #11
  %851 = invoke noundef ptr @_ZNK9CMyComPtrI14ICompressCoderEptEv(ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %852 unwind label %867

852:                                              ; preds = %850
  %853 = invoke noundef ptr @_ZNK9CMyComPtrI19ISequentialInStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %854 unwind label %867

854:                                              ; preds = %852
  %855 = invoke noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %856 unwind label %867

856:                                              ; preds = %854
  %857 = load ptr, ptr %851, align 8, !tbaa !31
  %858 = getelementptr inbounds ptr, ptr %857, i64 5
  %859 = load ptr, ptr %858, align 8
  %860 = invoke noundef i32 %859(ptr noundef nonnull align 8 dereferenceable(8) %851, ptr noundef %853, ptr noundef %855, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %861 unwind label %867

861:                                              ; preds = %856
  store i32 %860, ptr %61, align 4, !tbaa !5
  %862 = load i32, ptr %61, align 4, !tbaa !5
  %863 = icmp eq i32 %862, -2147024882
  br i1 %863, label %864, label %871

864:                                              ; preds = %861
  %865 = load ptr, ptr @stderr, align 8, !tbaa !9
  %866 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %865, ptr noundef @.str.16) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %880

867:                                              ; preds = %856, %854, %852, %850
  %868 = landingpad { ptr, i32 }
          cleanup
  %869 = extractvalue { ptr, i32 } %868, 0
  store ptr %869, ptr %9, align 8
  %870 = extractvalue { ptr, i32 } %868, 1
  store i32 %870, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #11
  br label %884

871:                                              ; preds = %861
  %872 = load i32, ptr %61, align 4, !tbaa !5
  %873 = icmp ne i32 %872, 0
  br i1 %873, label %874, label %878

874:                                              ; preds = %871
  %875 = load ptr, ptr @stderr, align 8, !tbaa !9
  %876 = load i32, ptr %61, align 4, !tbaa !5
  %877 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %875, ptr noundef @.str.17, i32 noundef %876) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %880

878:                                              ; preds = %871
  br label %879

879:                                              ; preds = %878
  store i32 0, ptr %7, align 4
  br label %880

880:                                              ; preds = %879, %874, %864
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #11
  br label %881

881:                                              ; preds = %880, %848
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #11
  call void @llvm.lifetime.end.p0(i64 160, ptr %56) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %54) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  call void @_ZN9CMyComPtrI14ICompressCoderED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  %882 = load i32, ptr %7, align 4
  switch i32 %882, label %1001 [
    i32 0, label %883
  ]

883:                                              ; preds = %881
  br label %984

884:                                              ; preds = %867, %837, %789
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #11
  br label %885

885:                                              ; preds = %884, %772
  call void @llvm.lifetime.end.p0(i64 160, ptr %56) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %54) #11
  br label %886

886:                                              ; preds = %885, %706
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  call void @_ZN9CMyComPtrI14ICompressCoderED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #11
  br label %887

887:                                              ; preds = %886, %662
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  br label %888

888:                                              ; preds = %887, %658, %654
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  br label %1002

889:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #11
  %890 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 256) #12
          to label %891 unwind label %907

891:                                              ; preds = %889
  invoke void @_ZN9NCompress5NLzma8CDecoderC1Ev(ptr noundef nonnull align 8 dereferenceable(249) %890)
          to label %892 unwind label %911

892:                                              ; preds = %891
  store ptr %890, ptr %62, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #11
  %893 = load ptr, ptr %62, align 8, !tbaa !9
  invoke void @_ZN9CMyComPtrI14ICompressCoderEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef %893)
          to label %894 unwind label %915

894:                                              ; preds = %892
  %895 = load ptr, ptr %62, align 8, !tbaa !9
  %896 = getelementptr inbounds %"class.NCompress::NLzma::CDecoder", ptr %895, i32 0, i32 18
  store i8 1, ptr %896, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #11
  store i32 5, ptr %64, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 13, ptr %65) #11
  %897 = invoke noundef ptr @_ZNK9CMyComPtrI19ISequentialInStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %898 unwind label %919

898:                                              ; preds = %894
  %899 = getelementptr inbounds [13 x i8], ptr %65, i64 0, i64 0
  %900 = invoke noundef i32 @_Z16ReadStream_FALSEP19ISequentialInStreamPvm(ptr noundef %897, ptr noundef %899, i64 noundef 13)
          to label %901 unwind label %919

901:                                              ; preds = %898
  %902 = icmp ne i32 %900, 0
  br i1 %902, label %903, label %923

903:                                              ; preds = %901
  %904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %905 = load ptr, ptr @_ZL10kReadError, align 8, !tbaa !9
  %906 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %904, ptr noundef %905) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %979

907:                                              ; preds = %889
  %908 = landingpad { ptr, i32 }
          cleanup
  %909 = extractvalue { ptr, i32 } %908, 0
  store ptr %909, ptr %9, align 8
  %910 = extractvalue { ptr, i32 } %908, 1
  store i32 %910, ptr %10, align 4
  br label %983

911:                                              ; preds = %891
  %912 = landingpad { ptr, i32 }
          cleanup
  %913 = extractvalue { ptr, i32 } %912, 0
  store ptr %913, ptr %9, align 8
  %914 = extractvalue { ptr, i32 } %912, 1
  store i32 %914, ptr %10, align 4
  call void @_ZdlPvm(ptr noundef %890, i64 noundef 256) #13
  br label %983

915:                                              ; preds = %892
  %916 = landingpad { ptr, i32 }
          cleanup
  %917 = extractvalue { ptr, i32 } %916, 0
  store ptr %917, ptr %9, align 8
  %918 = extractvalue { ptr, i32 } %916, 1
  store i32 %918, ptr %10, align 4
  br label %982

919:                                              ; preds = %967, %960, %958, %956, %923, %898, %894
  %920 = landingpad { ptr, i32 }
          cleanup
  %921 = extractvalue { ptr, i32 } %920, 0
  store ptr %921, ptr %9, align 8
  %922 = extractvalue { ptr, i32 } %920, 1
  store i32 %922, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 13, ptr %65) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  call void @_ZN9CMyComPtrI14ICompressCoderED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #11
  br label %982

923:                                              ; preds = %901
  %924 = load ptr, ptr %62, align 8, !tbaa !9
  %925 = getelementptr inbounds [13 x i8], ptr %65, i64 0, i64 0
  %926 = load ptr, ptr %924, align 8, !tbaa !31
  %927 = getelementptr inbounds ptr, ptr %926, i64 6
  %928 = load ptr, ptr %927, align 8
  %929 = invoke noundef i32 %928(ptr noundef nonnull align 8 dereferenceable(249) %924, ptr noundef %925, i32 noundef 5)
          to label %930 unwind label %919

930:                                              ; preds = %923
  %931 = icmp ne i32 %929, 0
  br i1 %931, label %932, label %935

932:                                              ; preds = %930
  %933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %934 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %933, ptr noundef @.str.18) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %979

935:                                              ; preds = %930
  store i64 0, ptr %43, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #11
  store i32 0, ptr %66, align 4, !tbaa !5
  br label %936

936:                                              ; preds = %953, %935
  %937 = load i32, ptr %66, align 4, !tbaa !5
  %938 = icmp slt i32 %937, 8
  br i1 %938, label %940, label %939

939:                                              ; preds = %936
  store i32 8, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #11
  br label %956

940:                                              ; preds = %936
  %941 = load i32, ptr %66, align 4, !tbaa !5
  %942 = add i32 5, %941
  %943 = zext i32 %942 to i64
  %944 = getelementptr inbounds [13 x i8], ptr %65, i64 0, i64 %943
  %945 = load i8, ptr %944, align 1, !tbaa !30
  %946 = zext i8 %945 to i64
  %947 = load i32, ptr %66, align 4, !tbaa !5
  %948 = mul nsw i32 8, %947
  %949 = zext i32 %948 to i64
  %950 = shl i64 %946, %949
  %951 = load i64, ptr %43, align 8, !tbaa !21
  %952 = or i64 %951, %950
  store i64 %952, ptr %43, align 8, !tbaa !21
  br label %953

953:                                              ; preds = %940
  %954 = load i32, ptr %66, align 4, !tbaa !5
  %955 = add nsw i32 %954, 1
  store i32 %955, ptr %66, align 4, !tbaa !5
  br label %936, !llvm.loop !47

956:                                              ; preds = %939
  %957 = invoke noundef ptr @_ZNK9CMyComPtrI14ICompressCoderEptEv(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %958 unwind label %919

958:                                              ; preds = %956
  %959 = invoke noundef ptr @_ZNK9CMyComPtrI19ISequentialInStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %960 unwind label %919

960:                                              ; preds = %958
  %961 = invoke noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %962 unwind label %919

962:                                              ; preds = %960
  %963 = load i64, ptr %43, align 8, !tbaa !21
  %964 = icmp eq i64 %963, -1
  br i1 %964, label %965, label %966

965:                                              ; preds = %962
  br label %967

966:                                              ; preds = %962
  br label %967

967:                                              ; preds = %966, %965
  %968 = phi ptr [ null, %965 ], [ %43, %966 ]
  %969 = load ptr, ptr %957, align 8, !tbaa !31
  %970 = getelementptr inbounds ptr, ptr %969, i64 5
  %971 = load ptr, ptr %970, align 8
  %972 = invoke noundef i32 %971(ptr noundef nonnull align 8 dereferenceable(8) %957, ptr noundef %959, ptr noundef %961, ptr noundef null, ptr noundef %968, ptr noundef null)
          to label %973 unwind label %919

973:                                              ; preds = %967
  %974 = icmp ne i32 %972, 0
  br i1 %974, label %975, label %978

975:                                              ; preds = %973
  %976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %977 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %976, ptr noundef @.str.19) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %979

978:                                              ; preds = %973
  store i32 0, ptr %7, align 4
  br label %979

979:                                              ; preds = %978, %975, %932, %903
  call void @llvm.lifetime.end.p0(i64 13, ptr %65) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  call void @_ZN9CMyComPtrI14ICompressCoderED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #11
  %980 = load i32, ptr %7, align 4
  switch i32 %980, label %1001 [
    i32 0, label %981
  ]

981:                                              ; preds = %979
  br label %984

982:                                              ; preds = %919, %915
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  br label %983

983:                                              ; preds = %982, %911, %907
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #11
  br label %1002

984:                                              ; preds = %981, %883
  %985 = load ptr, ptr %31, align 8, !tbaa !9
  %986 = icmp ne ptr %985, null
  br i1 %986, label %987, label %1000

987:                                              ; preds = %984
  %988 = load ptr, ptr %31, align 8, !tbaa !9
  %989 = invoke noundef i32 @_ZN14COutFileStream5CloseEv(ptr noundef nonnull align 8 dereferenceable(24) %988)
          to label %990 unwind label %995

990:                                              ; preds = %987
  %991 = icmp ne i32 %989, 0
  br i1 %991, label %992, label %999

992:                                              ; preds = %990
  %993 = load ptr, ptr @stderr, align 8, !tbaa !9
  %994 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %993, ptr noundef @.str.20) #11
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %1001

995:                                              ; preds = %987
  %996 = landingpad { ptr, i32 }
          cleanup
  %997 = extractvalue { ptr, i32 } %996, 0
  store ptr %997, ptr %9, align 8
  %998 = extractvalue { ptr, i32 } %996, 1
  store i32 %998, ptr %10, align 4
  br label %1002

999:                                              ; preds = %990
  br label %1000

1000:                                             ; preds = %999, %984
  store i32 0, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %1001

1001:                                             ; preds = %1000, %992, %979, %881
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #11
  br label %1003

1002:                                             ; preds = %995, %983, %888
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #11
  br label %1004

1003:                                             ; preds = %1001, %638, %451
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  br label %1006

1004:                                             ; preds = %1002, %641, %454, %385, %381
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #11
  br label %1005

1005:                                             ; preds = %1004, %377
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  br label %1007

1006:                                             ; preds = %1003, %363
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @_ZN9CMyComPtrI19ISequentialInStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #11
  br label %1012

1007:                                             ; preds = %1005, %366, %297, %293
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @_ZN9CMyComPtrI19ISequentialInStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  br label %1008

1008:                                             ; preds = %1007, %289
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  br label %1009

1009:                                             ; preds = %1008, %285
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #11
  br label %1010

1010:                                             ; preds = %1009, %281
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #11
  br label %1011

1011:                                             ; preds = %1010, %246
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #11
  br label %1013

1012:                                             ; preds = %1006, %235
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  call void @_ZN11CStringBaseIwED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  br label %1019

1013:                                             ; preds = %1011, %224, %220
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %1014

1014:                                             ; preds = %1013, %194
  call void @_ZN11CStringBaseIwED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #11
  br label %1015

1015:                                             ; preds = %1014, %190
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #11
  br label %1016

1016:                                             ; preds = %1015, %168, %164
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #11
  br label %1017

1017:                                             ; preds = %1016, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  br label %1018

1018:                                             ; preds = %1017, %133
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  br label %1020

1019:                                             ; preds = %1012, %114
  call void @_ZN18NCommandLineParser7CParserD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr %11) #11
  call void @_ZN13CObjectVectorI11CStringBaseIwEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #11
  br label %1023

1020:                                             ; preds = %1018, %123, %119
  call void @_ZN18NCommandLineParser7CParserD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #11
  br label %1021

1021:                                             ; preds = %1020, %88
  call void @llvm.lifetime.end.p0(i64 48, ptr %11) #11
  br label %1022

1022:                                             ; preds = %1021, %84
  call void @_ZN13CObjectVectorI11CStringBaseIwEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #11
  br label %1026

1023:                                             ; preds = %1019, %75
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #11
  br label %1024

1024:                                             ; preds = %1023, %71
  %1025 = load i32, ptr %3, align 4
  ret i32 %1025

1026:                                             ; preds = %1022
  %1027 = load ptr, ptr %9, align 8
  %1028 = load i32, ptr %10, align 4
  %1029 = insertvalue { ptr, i32 } poison, ptr %1027, 0
  %1030 = insertvalue { ptr, i32 } %1029, i32 %1028, 1
  resume { ptr, i32 } %1030

1031:                                             ; preds = %115
  %1032 = landingpad { ptr, i32 }
          catch ptr null
  %1033 = extractvalue { ptr, i32 } %1032, 0
  call void @__clang_call_terminate(ptr %1033) #15
  unreachable

1034:                                             ; preds = %630, %618, %609, %597, %586, %575, %529, %511, %495, %479, %470
  unreachable
}

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL9PrintHelpv() #2

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

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

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

declare i32 @__gxx_personality_v0(...)

declare void @_ZN18NCommandLineParser7CParserC1Ei(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) unnamed_addr #4

declare void @_ZN18NCommandLineParser7CParser12ParseStringsEPKNS_11CSwitchFormERK13CObjectVectorI11CStringBaseIwEE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4

declare ptr @__cxa_begin_catch(ptr)

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL16IncorrectCommandv() #0

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #5

declare noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) #4

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL9GetNumberPKwRj(ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) #0

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

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

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

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

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

declare noundef i32 @_Z12LzmaBenchConP8_IO_FILEjjj(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #4

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN13CInFileStream4OpenEPKc(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15GetSystemStringRK11CStringBaseIwE(ptr dead_on_unwind noalias writable sret(%class.CStringBase.0) align 8, ptr noundef nonnull align 8 dereferenceable(16)) #7

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z12GetOemStringRK11CStringBaseIwE(ptr dead_on_unwind noalias writable sret(%class.CStringBase.0) align 8, ptr noundef nonnull align 8 dereferenceable(16)) #7

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_throw(ptr, ptr, ptr)

declare noundef zeroext i1 @_ZNK2NC5NFile3NIO9CFileBase9GetLengthERy(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8)) #4

declare ptr @MyAlloc(i64 noundef) #4

declare noundef i32 @_Z15ReadStream_FAILP19ISequentialInStreamPvm(ptr noundef, ptr noundef, i64 noundef) #4

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

declare i32 @Lzma86_Encode(ptr noundef, ptr noundef, ptr noundef, i64 noundef, i32 noundef, i32 noundef, i32 noundef) #4

declare i32 @Lzma86_GetUnpackSize(ptr noundef, i64 noundef, ptr noundef) #4

declare i32 @Lzma86_Decode(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare noundef i32 @_Z11WriteStreamP20ISequentialOutStreamPKvm(ptr noundef, ptr noundef, i64 noundef) #4

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

declare void @MyFree(ptr noundef) #4

declare void @_ZN9NCompress5NLzma8CEncoderC1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) #0

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

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

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

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

declare void @_ZN9NCompress5NLzma8CDecoderC1Ev(ptr noundef nonnull align 8 dereferenceable(249)) unnamed_addr #4

declare noundef i32 @_Z16ReadStream_FALSEP19ISequentialInStreamPvm(ptr noundef, ptr noundef, i64 noundef) #4

declare noundef i32 @_ZN14COutFileStream5CloseEv(ptr noundef nonnull align 8 dereferenceable(24)) #4

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

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

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

; Function Attrs: nounwind
declare void @_ZN18NCommandLineParser7CParserD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nobuiltin 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 #7 = { 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 #8 = { 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 #9 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #11 = { nounwind }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { builtin nounwind }
attributes #14 = { noreturn }
attributes #15 = { noreturn 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, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !12, i64 0}
!16 = !{!"_ZTSN18NCommandLineParser13CSwitchResultE", !12, i64 0, !12, i64 1, !17, i64 8, !6, i64 40}
!17 = !{!"_ZTS13CObjectVectorI11CStringBaseIwEE", !18, i64 0}
!18 = !{!"_ZTS13CRecordVectorIPvE", !19, i64 0}
!19 = !{!"_ZTS17CBaseRecordVector", !6, i64 8, !6, i64 12, !10, i64 16, !20, i64 24}
!20 = !{!"long", !7, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"long long", !7, i64 0}
!23 = !{!20, !20, i64 0}
!24 = !{!16, !6, i64 40}
!25 = !{!26, !27, i64 0}
!26 = !{!"_ZTS14tagPROPVARIANT", !27, i64 0, !27, i64 2, !27, i64 4, !27, i64 6, !7, i64 8}
!27 = !{!"short", !7, i64 0}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!7, !7, i64 0}
!31 = !{!32, !32, i64 0}
!32 = !{!"vtable pointer", !8, i64 0}
!33 = distinct !{!33, !29}
!34 = !{!35, !12, i64 248}
!35 = !{!"_ZTSN9NCompress5NLzma8CDecoderE", !36, i64 0, !38, i64 8, !39, i64 16, !40, i64 24, !41, i64 32, !42, i64 40, !43, i64 48, !44, i64 56, !10, i64 64, !6, i64 72, !6, i64 76, !45, i64 80, !12, i64 216, !22, i64 224, !22, i64 232, !22, i64 240, !12, i64 248}
!36 = !{!"_ZTS14ICompressCoder", !37, i64 0}
!37 = !{!"_ZTS8IUnknown"}
!38 = !{!"_ZTS30ICompressSetDecoderProperties2", !37, i64 0}
!39 = !{!"_ZTS33ICompressGetInStreamProcessedSize", !37, i64 0}
!40 = !{!"_ZTS20ICompressSetInStream", !37, i64 0}
!41 = !{!"_ZTS25ICompressSetOutStreamSize", !37, i64 0}
!42 = !{!"_ZTS19ISequentialInStream", !37, i64 0}
!43 = !{!"_ZTS13CMyUnknownImp", !6, i64 0}
!44 = !{!"_ZTS9CMyComPtrI19ISequentialInStreamE", !10, i64 0}
!45 = !{!"_ZTS8CLzmaDec", !46, i64 0, !10, i64 16, !10, i64 24, !10, i64 32, !6, i64 40, !6, i64 44, !20, i64 48, !20, i64 56, !6, i64 64, !6, i64 68, !6, i64 72, !7, i64 76, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !7, i64 112}
!46 = !{!"_ZTS11_CLzmaProps", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12}
!47 = distinct !{!47, !29}


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

%"struct.NCommandLineParser::CSwitchForm" = type { ptr, i32, i8, i32, i32, ptr }
%class.CObjectVector = type { %class.CRecordVector }
%class.CRecordVector = type { %class.CBaseRecordVector }
%class.CBaseRecordVector = type { ptr, i32, i32, ptr, i64 }
%"class.NCommandLineParser::CParser" = type { i32, ptr, %class.CObjectVector }
%class.CStringBase = type { ptr, i32, i32 }
%class.CMyComPtr = type { ptr }
%class.CStringBase.0 = type { ptr, i32, i32 }
%class.CMyComPtr.1 = type { ptr }
%class.CMyComPtr.2 = type { ptr }
%struct.tagPROPVARIANT = type { i16, i16, i16, i16, %union.anon }
%union.anon = type { %struct.LARGE_INTEGER }
%struct.LARGE_INTEGER = type { i64 }

@stderr = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [55 x i8], align 1
@_ZL12kSwitchForms = external hidden constant [15 x %"struct.NCommandLineParser::CSwitchForm"], align 16
@.str.2 = external hidden unnamed_addr constant [4 x i32], align 4
@.str.3 = external hidden unnamed_addr constant [2 x i32], align 4
@.str.4 = external hidden unnamed_addr constant [2 x i32], align 4
@.str.5 = external hidden unnamed_addr constant [2 x i32], align 4
@.str.6 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [31 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.9 = external hidden unnamed_addr constant [16 x i8], align 1
@_ZL13kCantAllocate = external hidden local_unnamed_addr global ptr, align 8
@.str.10 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZL11kWriteError = external hidden local_unnamed_addr global ptr, align 8
@__const._Z5main2iPPKc.propIDs = external hidden unnamed_addr constant [10 x i32], align 16
@.str.16 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [21 x i8], align 1
@_ZL10kReadError = external hidden local_unnamed_addr global ptr, align 8
@.str.18 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z5main2iPPKc(i32 noundef %0, ptr noundef %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.CObjectVector, align 8
  %4 = alloca %"class.NCommandLineParser::CParser", align 8
  %5 = alloca i32, align 4
  %6 = alloca %class.CStringBase, align 8
  %7 = alloca i32, align 4
  %8 = alloca %class.CMyComPtr, align 8
  %9 = alloca %class.CStringBase.0, align 8
  %10 = alloca %class.CStringBase.0, align 8
  %11 = alloca %class.CMyComPtr.1, align 8
  %12 = alloca %class.CStringBase.0, align 8
  %13 = alloca %class.CStringBase.0, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca %class.CMyComPtr.2, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca [10 x i32], align 16
  %27 = alloca [10 x %struct.tagPROPVARIANT], align 16
  %28 = alloca i8, align 1
  %29 = alloca %class.CMyComPtr.2, align 8
  %30 = alloca [13 x i8], align 1
  %31 = load ptr, ptr @stderr, align 8, !tbaa !5
  %32 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %31, ptr noundef nonnull @.str) #12
  %33 = icmp eq i32 %0, 1
  br i1 %33, label %34, label %35

34:                                               ; preds = %2
  tail call void @_ZL9PrintHelpv()
  br label %631

35:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #13
  call void @_ZN13CObjectVectorI11CStringBaseIwEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
  invoke void @_ZL26WriteArgumentsToStringListiPPKcR13CObjectVectorI11CStringBaseIwEE(i32 noundef %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %36 unwind label %38

36:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) #13
  invoke void @_ZN18NCommandLineParser7CParserC1Ei(ptr noundef nonnull align 8 dereferenceable(48) %4, i32 noundef 15)
          to label %37 unwind label %40

37:                                               ; preds = %36
  invoke void @_ZN18NCommandLineParser7CParser12ParseStringsEPKNS_11CSwitchFormERK13CObjectVectorI11CStringBaseIwEE(ptr noundef nonnull align 8 dereferenceable(48) %4, ptr noundef nonnull @_ZL12kSwitchForms, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %47 unwind label %42

38:                                               ; preds = %35
  %39 = landingpad { ptr, i32 }
          cleanup
  br label %630

40:                                               ; preds = %36
  %41 = landingpad { ptr, i32 }
          cleanup
  br label %629

42:                                               ; preds = %37
  %43 = landingpad { ptr, i32 }
          catch ptr null
  %44 = extractvalue { ptr, i32 } %43, 0
  %45 = call ptr @__cxa_begin_catch(ptr %44) #13
  invoke void @_ZL16IncorrectCommandv()
          to label %46 unwind label %58

46:                                               ; preds = %42
  invoke void @__cxa_end_catch()
          to label %47 unwind label %60

47:                                               ; preds = %46, %37
  %48 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 0)
          to label %49 unwind label %60

49:                                               ; preds = %47
  %50 = load i8, ptr %48, align 8, !tbaa !9, !range !17, !noundef !18
  %51 = trunc nuw i8 %50 to i1
  br i1 %51, label %57, label %52

52:                                               ; preds = %49
  %53 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 1)
          to label %54 unwind label %60

54:                                               ; preds = %52
  %55 = load i8, ptr %53, align 8, !tbaa !9, !range !17, !noundef !18
  %56 = trunc nuw i8 %55 to i1
  br i1 %56, label %57, label %62

57:                                               ; preds = %54, %49
  call void @_ZL9PrintHelpv()
  br label %627

58:                                               ; preds = %42
  %59 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %628 unwind label %632

60:                                               ; preds = %52, %47, %46
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %628

62:                                               ; preds = %54
  %63 = getelementptr inbounds i8, ptr %4, i64 16
  %64 = call noundef i32 @_ZNK17CBaseRecordVector4SizeEv(ptr noundef nonnull align 8 dereferenceable(32) %63)
  %65 = icmp slt i32 %64, 1
  br i1 %65, label %66, label %69

66:                                               ; preds = %62
  invoke void @_ZL16IncorrectCommandv()
          to label %69 unwind label %67

67:                                               ; preds = %66
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %628

69:                                               ; preds = %66, %62
  %70 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %63, i32 noundef 0)
          to label %71 unwind label %86

71:                                               ; preds = %69
  %72 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 3)
          to label %73 unwind label %88

73:                                               ; preds = %71
  %74 = load i8, ptr %72, align 8, !tbaa !9, !range !17, !noundef !18
  %75 = trunc nuw i8 %74 to i1
  br i1 %75, label %76, label %95

76:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #13
  %77 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 3)
          to label %78 unwind label %90

78:                                               ; preds = %76
  %79 = getelementptr inbounds i8, ptr %77, i64 8
  %80 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %79, i32 noundef 0)
          to label %81 unwind label %90

81:                                               ; preds = %78
  %82 = call noundef ptr @_ZNK11CStringBaseIwEcvPKwEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
  %83 = invoke noundef zeroext i1 @_ZL9GetNumberPKwRj(ptr noundef %82, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %84 unwind label %90

84:                                               ; preds = %81
  br i1 %83, label %92, label %85

85:                                               ; preds = %84
  invoke void @_ZL16IncorrectCommandv()
          to label %92 unwind label %90

86:                                               ; preds = %69
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %628

88:                                               ; preds = %71
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %628

90:                                               ; preds = %85, %81, %78, %76
  %91 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #13
  br label %628

92:                                               ; preds = %85, %84
  %93 = load i32, ptr %5, align 4, !tbaa !19
  %94 = shl nuw i32 1, %93
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #13
  br label %95

95:                                               ; preds = %92, %73
  %spec.select250 = phi i32 [ %94, %92 ], [ 8388608, %73 ]
  %.0168 = phi i32 [ %94, %92 ], [ -1, %73 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #13
  invoke void @_ZN11CStringBaseIwEC2EPKw(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull @.str.2)
          to label %96 unwind label %108

96:                                               ; preds = %95
  %97 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 9)
          to label %98 unwind label %110

98:                                               ; preds = %96
  %99 = load i8, ptr %97, align 8, !tbaa !9, !range !17, !noundef !18
  %100 = trunc nuw i8 %99 to i1
  br i1 %100, label %101, label %112

101:                                              ; preds = %98
  %102 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 9)
          to label %103 unwind label %110

103:                                              ; preds = %101
  %104 = getelementptr inbounds i8, ptr %102, i64 8
  %105 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %104, i32 noundef 0)
          to label %106 unwind label %110

106:                                              ; preds = %103
  %107 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN11CStringBaseIwEaSERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %105)
          to label %112 unwind label %110

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

110:                                              ; preds = %106, %103, %101, %96
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %625

112:                                              ; preds = %106, %98
  %113 = invoke noundef i32 @_ZNK11CStringBaseIwE13CompareNoCaseEPKw(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull @.str.3)
          to label %114 unwind label %126

114:                                              ; preds = %112
  %115 = icmp eq i32 %113, 0
  br i1 %115, label %116, label %135

116:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #13
  store i32 1, ptr %7, align 4, !tbaa !19
  %117 = call noundef i32 @_ZNK17CBaseRecordVector4SizeEv(ptr noundef nonnull align 8 dereferenceable(32) %63)
  %118 = icmp sgt i32 %117, 1
  br i1 %118, label %119, label %130

119:                                              ; preds = %116
  %120 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %63, i32 noundef 1)
          to label %121 unwind label %128

121:                                              ; preds = %119
  %122 = call noundef ptr @_ZNK11CStringBaseIwEcvPKwEv(ptr noundef nonnull align 8 dereferenceable(16) %120)
  %123 = invoke noundef zeroext i1 @_ZL9GetNumberPKwRj(ptr noundef %122, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %124 unwind label %128

124:                                              ; preds = %121
  br i1 %123, label %._crit_edge266, label %125

._crit_edge266:                                   ; preds = %124
  %.pre267 = load i32, ptr %7, align 4, !tbaa !19
  br label %130

125:                                              ; preds = %124
  store i32 1, ptr %7, align 4, !tbaa !19
  br label %130

126:                                              ; preds = %112
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %625

128:                                              ; preds = %130, %121, %119
  %129 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #13
  br label %625

130:                                              ; preds = %._crit_edge266, %125, %116
  %131 = phi i32 [ %.pre267, %._crit_edge266 ], [ 1, %125 ], [ 1, %116 ]
  %132 = load ptr, ptr @stderr, align 8, !tbaa !5
  %133 = invoke noundef i32 @_Z12LzmaBenchConP8_IO_FILEjjj(ptr noundef %132, i32 noundef %131, i32 noundef -1, i32 noundef %.0168)
          to label %134 unwind label %128

134:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #13
  br label %624

135:                                              ; preds = %114
  %136 = invoke noundef i32 @_ZNK11CStringBaseIwE13CompareNoCaseEPKw(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull @.str.4)
          to label %137 unwind label %139

137:                                              ; preds = %135
  %138 = icmp eq i32 %136, 0
  br i1 %138, label %146, label %141

139:                                              ; preds = %145, %141, %135
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %625

141:                                              ; preds = %137
  %142 = invoke noundef i32 @_ZNK11CStringBaseIwE13CompareNoCaseEPKw(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull @.str.5)
          to label %143 unwind label %139

143:                                              ; preds = %141
  %144 = icmp eq i32 %142, 0
  br i1 %144, label %146, label %145

145:                                              ; preds = %143
  invoke void @_ZL16IncorrectCommandv()
          to label %146 unwind label %139

146:                                              ; preds = %143, %137, %145
  %147 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 12)
          to label %148 unwind label %160

148:                                              ; preds = %146
  %149 = load i8, ptr %147, align 8, !tbaa !9, !range !17, !noundef !18
  %150 = trunc nuw i8 %149 to i1
  %151 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 13)
          to label %152 unwind label %162

152:                                              ; preds = %148
  %153 = load i8, ptr %151, align 8, !tbaa !9, !range !17, !noundef !18
  %154 = trunc nuw i8 %153 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #13
  call void @_ZN9CMyComPtrI19ISequentialInStreamEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  br i1 %150, label %155, label %168

155:                                              ; preds = %152
  %156 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #14
          to label %157 unwind label %164

157:                                              ; preds = %155
  invoke void @_ZN16CStdInFileStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %156)
          to label %158 unwind label %166

158:                                              ; preds = %157
  %159 = invoke noundef ptr @_ZN9CMyComPtrI19ISequentialInStreamEaSEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull %156)
          to label %.critedge unwind label %164

160:                                              ; preds = %146
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %625

162:                                              ; preds = %148
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %625

164:                                              ; preds = %171, %158, %155
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %623

166:                                              ; preds = %157
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %156, i64 noundef 16) #15
  br label %623

168:                                              ; preds = %152
  %169 = call noundef i32 @_ZNK17CBaseRecordVector4SizeEv(ptr noundef nonnull align 8 dereferenceable(32) %63)
  %170 = icmp slt i32 %169, 2
  br i1 %170, label %171, label %172

171:                                              ; preds = %168
  invoke void @_ZL16IncorrectCommandv()
          to label %172 unwind label %164

172:                                              ; preds = %171, %168
  %173 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %63, i32 noundef 1)
          to label %174 unwind label %189

174:                                              ; preds = %172
  %175 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #14
          to label %176 unwind label %189

176:                                              ; preds = %174
  invoke void @_ZN13CInFileStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %175)
          to label %177 unwind label %191

177:                                              ; preds = %176
  %178 = invoke noundef ptr @_ZN9CMyComPtrI19ISequentialInStreamEaSEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull %175)
          to label %179 unwind label %189

179:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #13
  invoke void @_Z15GetSystemStringRK11CStringBaseIwE(ptr dead_on_unwind nonnull writable sret(%class.CStringBase.0) align 8 %9, ptr noundef nonnull align 8 dereferenceable(16) %173)
          to label %180 unwind label %193

180:                                              ; preds = %179
  %181 = call noundef ptr @_ZNK11CStringBaseIcEcvPKcEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %182 = invoke noundef zeroext i1 @_ZN13CInFileStream4OpenEPKc(ptr noundef nonnull align 8 dereferenceable(24) %175, ptr noundef %181)
          to label %183 unwind label %195

183:                                              ; preds = %180
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #13
  br i1 %182, label %.critedge, label %184

184:                                              ; preds = %183
  %185 = load ptr, ptr @stderr, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #13
  invoke void @_Z12GetOemStringRK11CStringBaseIwE(ptr dead_on_unwind nonnull writable sret(%class.CStringBase.0) align 8 %10, ptr noundef nonnull align 8 dereferenceable(16) %173)
          to label %186 unwind label %198

186:                                              ; preds = %184
  %187 = call noundef ptr @_ZNK11CStringBaseIcEcvPKcEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
  %188 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %185, ptr noundef nonnull @.str.6, ptr noundef %187) #12
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #13
  br label %622

189:                                              ; preds = %177, %174, %172
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %623

191:                                              ; preds = %176
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %175, i64 noundef 24) #15
  br label %623

193:                                              ; preds = %179
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %197

195:                                              ; preds = %180
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #13
  br label %197

197:                                              ; preds = %195, %193
  %.pn = phi { ptr, i32 } [ %196, %195 ], [ %194, %193 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #13
  br label %623

198:                                              ; preds = %184
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #13
  br label %623

.critedge:                                        ; preds = %183, %158
  %.0177 = phi ptr [ null, %158 ], [ %175, %183 ]
  %.0166 = phi i32 [ 1, %158 ], [ 2, %183 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #13
  call void @_ZN9CMyComPtrI20ISequentialOutStreamEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  br i1 %154, label %200, label %206

200:                                              ; preds = %.critedge
  %201 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #14
          to label %202 unwind label %204

202:                                              ; preds = %200
  call void @_ZN17CStdOutFileStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %201)
  %203 = invoke noundef ptr @_ZN9CMyComPtrI20ISequentialOutStreamEaSEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %201)
          to label %.critedge247 unwind label %204

204:                                              ; preds = %246, %241, %.critedge247, %208, %202, %200
  %205 = landingpad { ptr, i32 }
          cleanup
  br label %621

206:                                              ; preds = %.critedge
  %207 = call noundef i32 @_ZNK17CBaseRecordVector4SizeEv(ptr noundef nonnull align 8 dereferenceable(32) %63)
  %.not = icmp slt i32 %.0166, %207
  br i1 %.not, label %209, label %208

208:                                              ; preds = %206
  invoke void @_ZL16IncorrectCommandv()
          to label %209 unwind label %204

209:                                              ; preds = %208, %206
  %210 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %63, i32 noundef %.0166)
          to label %211 unwind label %226

211:                                              ; preds = %209
  %212 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #14
          to label %213 unwind label %226

213:                                              ; preds = %211
  invoke void @_ZN14COutFileStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %212)
          to label %214 unwind label %228

214:                                              ; preds = %213
  %215 = invoke noundef ptr @_ZN9CMyComPtrI20ISequentialOutStreamEaSEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %212)
          to label %216 unwind label %226

216:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #13
  invoke void @_Z15GetSystemStringRK11CStringBaseIwE(ptr dead_on_unwind nonnull writable sret(%class.CStringBase.0) align 8 %12, ptr noundef nonnull align 8 dereferenceable(16) %210)
          to label %217 unwind label %230

217:                                              ; preds = %216
  %218 = call noundef ptr @_ZNK11CStringBaseIcEcvPKcEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
  %219 = invoke noundef zeroext i1 @_ZN14COutFileStream6CreateEPKcb(ptr noundef nonnull align 8 dereferenceable(24) %212, ptr noundef %218, i1 noundef zeroext true)
          to label %220 unwind label %232

220:                                              ; preds = %217
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #13
  br i1 %219, label %.critedge247, label %221

221:                                              ; preds = %220
  %222 = load ptr, ptr @stderr, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #13
  invoke void @_Z12GetOemStringRK11CStringBaseIwE(ptr dead_on_unwind nonnull writable sret(%class.CStringBase.0) align 8 %13, ptr noundef nonnull align 8 dereferenceable(16) %210)
          to label %223 unwind label %235

223:                                              ; preds = %221
  %224 = call noundef ptr @_ZNK11CStringBaseIcEcvPKcEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
  %225 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %222, ptr noundef nonnull @.str.7, ptr noundef %224) #12
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #13
  br label %620

226:                                              ; preds = %214, %211, %209
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %621

228:                                              ; preds = %213
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %212, i64 noundef 24) #15
  br label %621

230:                                              ; preds = %216
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %234

232:                                              ; preds = %217
  %233 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11CStringBaseIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #13
  br label %234

234:                                              ; preds = %232, %230
  %.pn191 = phi { ptr, i32 } [ %233, %232 ], [ %231, %230 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #13
  br label %621

235:                                              ; preds = %221
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #13
  br label %621

.critedge247:                                     ; preds = %220, %202
  %.0176 = phi ptr [ null, %202 ], [ %212, %220 ]
  %237 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 14)
          to label %238 unwind label %204

238:                                              ; preds = %.critedge247
  %239 = load i8, ptr %237, align 8, !tbaa !9, !range !17, !noundef !18
  %240 = trunc nuw i8 %239 to i1
  br i1 %240, label %241, label %341

241:                                              ; preds = %238
  %242 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 11)
          to label %243 unwind label %204

243:                                              ; preds = %241
  %244 = load i8, ptr %242, align 8, !tbaa !9, !range !17, !noundef !18
  %245 = trunc nuw i8 %244 to i1
  %brmerge = select i1 %245, i1 true, i1 %150
  br i1 %brmerge, label %246, label %248

246:                                              ; preds = %243
  %247 = call ptr @__cxa_allocate_exception(i64 8) #13
  store ptr @.str.8, ptr %247, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %247, ptr nonnull @_ZTIPKc, ptr null) #16
          to label %635 unwind label %204

248:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #13
  %249 = getelementptr inbounds i8, ptr %.0177, i64 20
  %250 = invoke noundef zeroext i1 @_ZNK2NC5NFile3NIO9CFileBase9GetLengthERy(ptr noundef nonnull align 4 dereferenceable(4) %249, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %251 unwind label %256

251:                                              ; preds = %248
  %252 = load i64, ptr %14, align 8, !tbaa !20
  %253 = icmp ugt i64 %252, 4026531840
  br i1 %253, label %254, label %258

254:                                              ; preds = %251
  %255 = call ptr @__cxa_allocate_exception(i64 8) #13
  store ptr @.str.9, ptr %255, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %255, ptr nonnull @_ZTIPKc, ptr null) #16
          to label %635 unwind label %256

256:                                              ; preds = %254, %248
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %340

258:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #13
  store i64 %252, ptr %15, align 8, !tbaa !22
  %.not213 = icmp eq i64 %252, 0
  br i1 %.not213, label %268, label %259

259:                                              ; preds = %258
  %260 = invoke ptr @MyAlloc(i64 noundef %252)
          to label %261 unwind label %266

261:                                              ; preds = %259
  %262 = icmp eq ptr %260, null
  br i1 %262, label %263, label %268

263:                                              ; preds = %261
  %264 = call ptr @__cxa_allocate_exception(i64 8) #13
  %265 = load ptr, ptr @_ZL13kCantAllocate, align 8, !tbaa !5
  store ptr %265, ptr %264, align 16, !tbaa !5
  br label %.invoke

266:                                              ; preds = %.invoke, %268, %259
  %267 = landingpad { ptr, i32 }
          cleanup
  br label %339

268:                                              ; preds = %261, %258
  %.0174 = phi ptr [ %260, %261 ], [ null, %258 ]
  %269 = call noundef ptr @_ZNK9CMyComPtrI19ISequentialInStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %270 = invoke noundef i32 @_Z15ReadStream_FAILP19ISequentialInStreamPvm(ptr noundef %269, ptr noundef %.0174, i64 noundef %252)
          to label %271 unwind label %266

271:                                              ; preds = %268
  %.not214 = icmp eq i32 %270, 0
  br i1 %.not214, label %275, label %272

272:                                              ; preds = %271
  %273 = call ptr @__cxa_allocate_exception(i64 8) #13
  store ptr @.str.10, ptr %273, align 16, !tbaa !5
  br label %.invoke

.invoke:                                          ; preds = %263, %272
  %274 = phi ptr [ %273, %272 ], [ %264, %263 ]
  invoke void @__cxa_throw(ptr nonnull %274, ptr nonnull @_ZTIPKc, ptr null) #16
          to label %.cont unwind label %266

.cont:                                            ; preds = %.invoke
  unreachable

275:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #13
  br i1 %138, label %276, label %301

276:                                              ; preds = %275
  %277 = load i64, ptr %14, align 8, !tbaa !20
  %278 = udiv i64 %277, 20
  %279 = mul i64 %278, 21
  %280 = add i64 %279, 65536
  store i64 %280, ptr %16, align 8, !tbaa !22
  %.not221 = icmp eq i64 %280, 0
  br i1 %.not221, label %287, label %281

281:                                              ; preds = %276
  %282 = invoke ptr @MyAlloc(i64 noundef %280)
          to label %283 unwind label %285

283:                                              ; preds = %281
  %284 = icmp eq ptr %282, null
  br i1 %284, label %.invoke268, label %287

285:                                              ; preds = %.invoke268, %336, %335, %.critedge249, %281
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %338

287:                                              ; preds = %283, %276
  %.0171 = phi ptr [ %282, %283 ], [ null, %276 ]
  %288 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 14)
          to label %289 unwind label %299

289:                                              ; preds = %287
  %290 = getelementptr inbounds i8, ptr %288, i64 40
  %291 = load i32, ptr %290, align 8, !tbaa !23
  %292 = icmp eq i32 %291, 0
  %293 = select i1 %292, i32 1, i32 2
  %294 = invoke i32 @Lzma86_Encode(ptr noundef %.0171, ptr noundef nonnull %16, ptr noundef %.0174, i64 noundef %252, i32 noundef 5, i32 noundef %spec.select250, i32 noundef %293)
          to label %295 unwind label %299

295:                                              ; preds = %289
  %.not222 = icmp eq i32 %294, 0
  br i1 %.not222, label %.critedge249, label %296

296:                                              ; preds = %295
  %297 = load ptr, ptr @stderr, align 8, !tbaa !5
  %298 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %297, ptr noundef nonnull @.str.11, i32 noundef %294) #12
  br label %337

299:                                              ; preds = %289, %287
  %300 = landingpad { ptr, i32 }
          cleanup
  br label %338

301:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #13
  %302 = invoke i32 @Lzma86_GetUnpackSize(ptr noundef %.0174, i64 noundef %252, ptr noundef nonnull %17)
          to label %303 unwind label %306

303:                                              ; preds = %301
  %.not215 = icmp eq i32 %302, 0
  br i1 %.not215, label %308, label %304

304:                                              ; preds = %303
  %305 = call ptr @__cxa_allocate_exception(i64 8) #13
  store ptr @.str.12, ptr %305, align 16, !tbaa !5
  br label %.invoke270

306:                                              ; preds = %.invoke270, %310, %301
  %307 = landingpad { ptr, i32 }
          cleanup
  br label %328

308:                                              ; preds = %303
  %309 = load i64, ptr %17, align 8, !tbaa !20
  store i64 %309, ptr %16, align 8, !tbaa !22
  %.not216 = icmp eq i64 %309, 0
  br i1 %.not216, label %318, label %310

310:                                              ; preds = %308
  %311 = invoke ptr @MyAlloc(i64 noundef %309)
          to label %312 unwind label %306

312:                                              ; preds = %310
  %313 = icmp eq ptr %311, null
  br i1 %313, label %314, label %318

314:                                              ; preds = %312
  %315 = call ptr @__cxa_allocate_exception(i64 8) #13
  %316 = load ptr, ptr @_ZL13kCantAllocate, align 8, !tbaa !5
  store ptr %316, ptr %315, align 16, !tbaa !5
  br label %.invoke270

.invoke270:                                       ; preds = %304, %314
  %317 = phi ptr [ %315, %314 ], [ %305, %304 ]
  invoke void @__cxa_throw(ptr nonnull %317, ptr nonnull @_ZTIPKc, ptr null) #16
          to label %.cont271 unwind label %306

.cont271:                                         ; preds = %.invoke270
  unreachable

318:                                              ; preds = %312, %308
  %.1172 = phi ptr [ %311, %312 ], [ null, %308 ]
  %319 = invoke i32 @Lzma86_Decode(ptr noundef %.1172, ptr noundef nonnull %16, ptr noundef %.0174, ptr noundef nonnull %15)
          to label %320 unwind label %323

320:                                              ; preds = %318
  %321 = load i64, ptr %15, align 8, !tbaa !22
  %322 = load i64, ptr %14, align 8, !tbaa !20
  %.not217 = icmp eq i64 %321, %322
  br i1 %.not217, label %325, label %.invoke272

323:                                              ; preds = %.invoke272, %318
  %324 = landingpad { ptr, i32 }
          cleanup
  br label %328

325:                                              ; preds = %320
  %.not218 = icmp eq i32 %319, 0
  br i1 %.not218, label %327, label %.invoke272

.invoke272:                                       ; preds = %325, %320
  %.str.14.sink = phi ptr [ @.str.14, %320 ], [ @.str.15, %325 ]
  %326 = call ptr @__cxa_allocate_exception(i64 8) #13
  store ptr %.str.14.sink, ptr %326, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %326, ptr nonnull @_ZTIPKc, ptr null) #16
          to label %.cont273 unwind label %323

.cont273:                                         ; preds = %.invoke272
  unreachable

327:                                              ; preds = %325
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #13
  br label %.critedge249

328:                                              ; preds = %323, %306
  %.pn219 = phi { ptr, i32 } [ %307, %306 ], [ %324, %323 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #13
  br label %338

.critedge249:                                     ; preds = %295, %327
  %.2173 = phi ptr [ %.1172, %327 ], [ %.0171, %295 ]
  %329 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %330 = load i64, ptr %16, align 8, !tbaa !22
  %331 = invoke noundef i32 @_Z11WriteStreamP20ISequentialOutStreamPKvm(ptr noundef %329, ptr noundef %.2173, i64 noundef %330)
          to label %332 unwind label %285

332:                                              ; preds = %.critedge249
  %.not223 = icmp eq i32 %331, 0
  br i1 %.not223, label %335, label %.invoke268

.invoke268:                                       ; preds = %332, %283
  %_ZL13kCantAllocate.sink = phi ptr [ @_ZL13kCantAllocate, %283 ], [ @_ZL11kWriteError, %332 ]
  %333 = call ptr @__cxa_allocate_exception(i64 8) #13
  %334 = load ptr, ptr %_ZL13kCantAllocate.sink, align 8, !tbaa !5
  store ptr %334, ptr %333, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %333, ptr nonnull @_ZTIPKc, ptr null) #16
          to label %.cont269 unwind label %285

.cont269:                                         ; preds = %.invoke268
  unreachable

335:                                              ; preds = %332
  invoke void @MyFree(ptr noundef %.2173)
          to label %336 unwind label %285

336:                                              ; preds = %335
  invoke void @MyFree(ptr noundef %.0174)
          to label %337 unwind label %285

337:                                              ; preds = %296, %336
  %.5 = phi i32 [ 1, %296 ], [ 0, %336 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #13
  br label %620

338:                                              ; preds = %328, %299, %285
  %.pn224 = phi { ptr, i32 } [ %286, %285 ], [ %300, %299 ], [ %.pn219, %328 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #13
  br label %339

339:                                              ; preds = %338, %266
  %.pn226 = phi { ptr, i32 } [ %267, %266 ], [ %.pn224, %338 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #13
  br label %340

340:                                              ; preds = %339, %256
  %.pn228 = phi { ptr, i32 } [ %257, %256 ], [ %.pn226, %339 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #13
  br label %621

341:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #13
  br i1 %138, label %342, label %524

342:                                              ; preds = %341
  %343 = invoke noalias noundef nonnull dereferenceable(88) ptr @_Znwm(i64 noundef 88) #14
          to label %344 unwind label %348

344:                                              ; preds = %342
  invoke void @_ZN9NCompress5NLzma8CEncoderC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %343)
          to label %345 unwind label %350

345:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #13
  invoke void @_ZN9CMyComPtrI14ICompressCoderEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull %343)
          to label %346 unwind label %352

346:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #13
  store i32 2, ptr %20, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #13
  store i32 3, ptr %21, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #13
  store i32 0, ptr %22, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #13
  store i32 1, ptr %23, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #13
  store i32 128, ptr %24, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #13
  store i32 80, ptr %25, align 4, !tbaa !19
  %347 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 11)
          to label %354 unwind label %377

348:                                              ; preds = %342
  %349 = landingpad { ptr, i32 }
          cleanup
  br label %619

350:                                              ; preds = %344
  %351 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %343, i64 noundef 88) #15
  br label %619

352:                                              ; preds = %345
  %353 = landingpad { ptr, i32 }
          cleanup
  br label %523

354:                                              ; preds = %346
  %355 = load i8, ptr %347, align 8, !tbaa !9, !range !17, !noundef !18
  %356 = trunc nuw i8 %355 to i1
  %357 = select i1 %356, i1 true, i1 %150
  invoke void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48) %4, i32 noundef 2, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %358 unwind label %377

358:                                              ; preds = %354
  invoke void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48) %4, i32 noundef 4, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %359 unwind label %377

359:                                              ; preds = %358
  invoke void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48) %4, i32 noundef 6, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %360 unwind label %377

360:                                              ; preds = %359
  invoke void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48) %4, i32 noundef 7, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %361 unwind label %377

361:                                              ; preds = %360
  invoke void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48) %4, i32 noundef 8, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %362 unwind label %377

362:                                              ; preds = %361
  %363 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 5)
          to label %364 unwind label %377

364:                                              ; preds = %362
  %365 = load i8, ptr %363, align 8, !tbaa !9, !range !17, !noundef !18
  %366 = trunc nuw i8 %365 to i1
  br i1 %366, label %367, label %379

367:                                              ; preds = %364
  %368 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48) %4, i64 noundef 5)
          to label %369 unwind label %377

369:                                              ; preds = %367
  %370 = getelementptr inbounds i8, ptr %368, i64 8
  %371 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13CObjectVectorI11CStringBaseIwEEixEi(ptr noundef nonnull align 8 dereferenceable(32) %370, i32 noundef 0)
          to label %372 unwind label %377

372:                                              ; preds = %369
  %373 = call noundef ptr @_ZNK11CStringBaseIwEcvPKwEv(ptr noundef nonnull align 8 dereferenceable(16) %371)
  %374 = invoke noundef zeroext i1 @_ZL9GetNumberPKwRj(ptr noundef %373, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %375 unwind label %377

375:                                              ; preds = %372
  br i1 %374, label %379, label %376

376:                                              ; preds = %375
  invoke void @_ZL16IncorrectCommandv()
          to label %379 unwind label %377

377:                                              ; preds = %376, %372, %369, %367, %362, %361, %360, %359, %358, %354, %346
  %378 = landingpad { ptr, i32 }
          cleanup
  br label %522

379:                                              ; preds = %375, %376, %364
  %spec.select251 = phi i32 [ 10, %375 ], [ 10, %376 ], [ 9, %364 ]
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %26) #13
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %26, ptr noundef nonnull align 16 dereferenceable(40) @__const._Z5main2iPPKc.propIDs, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %27) #13
  store i16 19, ptr %27, align 16, !tbaa !24
  %380 = getelementptr inbounds i8, ptr %27, i64 16
  store i16 19, ptr %380, align 16, !tbaa !24
  %381 = getelementptr inbounds i8, ptr %27, i64 32
  store i16 19, ptr %381, align 16, !tbaa !24
  %382 = getelementptr inbounds i8, ptr %27, i64 48
  store i16 19, ptr %382, align 16, !tbaa !24
  %383 = getelementptr inbounds i8, ptr %27, i64 64
  store i16 19, ptr %383, align 16, !tbaa !24
  %384 = getelementptr inbounds i8, ptr %27, i64 80
  store i16 19, ptr %384, align 16, !tbaa !24
  %385 = getelementptr inbounds i8, ptr %27, i64 8
  store i32 %spec.select250, ptr %385, align 8, !tbaa !27
  %386 = load i32, ptr %20, align 4, !tbaa !19
  %387 = getelementptr inbounds i8, ptr %27, i64 24
  store i32 %386, ptr %387, align 8, !tbaa !27
  %388 = load i32, ptr %21, align 4, !tbaa !19
  %389 = getelementptr inbounds i8, ptr %27, i64 40
  store i32 %388, ptr %389, align 8, !tbaa !27
  %390 = load i32, ptr %22, align 4, !tbaa !19
  %391 = getelementptr inbounds i8, ptr %27, i64 56
  store i32 %390, ptr %391, align 8, !tbaa !27
  %392 = load i32, ptr %23, align 4, !tbaa !19
  %393 = getelementptr inbounds i8, ptr %27, i64 72
  store i32 %392, ptr %393, align 8, !tbaa !27
  %394 = load i32, ptr %24, align 4, !tbaa !19
  %395 = getelementptr inbounds i8, ptr %27, i64 88
  store i32 %394, ptr %395, align 8, !tbaa !27
  %396 = getelementptr inbounds i8, ptr %27, i64 96
  store i16 8, ptr %396, align 16, !tbaa !24
  %397 = call noundef ptr @_ZNK11CStringBaseIwEcvPKwEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %398 = getelementptr inbounds i8, ptr %27, i64 104
  store ptr %397, ptr %398, align 8, !tbaa !27
  %399 = getelementptr inbounds i8, ptr %27, i64 112
  store i16 11, ptr %399, align 16, !tbaa !24
  %400 = sext i1 %357 to i16
  %401 = getelementptr inbounds i8, ptr %27, i64 120
  store i16 %400, ptr %401, align 8, !tbaa !27
  %402 = getelementptr inbounds i8, ptr %27, i64 128
  store i16 19, ptr %402, align 16, !tbaa !24
  %403 = getelementptr inbounds i8, ptr %27, i64 136
  store i32 1, ptr %403, align 8, !tbaa !27
  %404 = getelementptr inbounds i8, ptr %27, i64 144
  store i16 19, ptr %404, align 16, !tbaa !24
  %405 = load i32, ptr %25, align 4, !tbaa !19
  %406 = getelementptr inbounds i8, ptr %27, i64 152
  store i32 %405, ptr %406, align 8, !tbaa !27
  %407 = load ptr, ptr %343, align 8, !tbaa !28
  %408 = getelementptr inbounds i8, ptr %407, i64 48
  %409 = load ptr, ptr %408, align 8
  %410 = invoke noundef i32 %409(ptr noundef nonnull align 8 dereferenceable(88) %343, ptr noundef nonnull %26, ptr noundef nonnull %27, i32 noundef %spec.select251)
          to label %411 unwind label %413

411:                                              ; preds = %379
  %.not201 = icmp eq i32 %410, 0
  br i1 %.not201, label %415, label %412

412:                                              ; preds = %411
  invoke void @_ZL16IncorrectCommandv()
          to label %415 unwind label %413

413:                                              ; preds = %423, %415, %412, %379
  %414 = landingpad { ptr, i32 }
          cleanup
  br label %521

415:                                              ; preds = %412, %411
  %416 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %417 = load ptr, ptr %343, align 8, !tbaa !28
  %418 = getelementptr inbounds i8, ptr %417, i64 56
  %419 = load ptr, ptr %418, align 8
  %420 = invoke noundef i32 %419(ptr noundef nonnull align 8 dereferenceable(88) %343, ptr noundef %416)
          to label %421 unwind label %413

421:                                              ; preds = %415
  br i1 %357, label %422, label %423

422:                                              ; preds = %421
  store i64 -1, ptr %18, align 8, !tbaa !20
  br label %426

423:                                              ; preds = %421
  %424 = getelementptr inbounds i8, ptr %.0177, i64 20
  %425 = invoke noundef zeroext i1 @_ZNK2NC5NFile3NIO9CFileBase9GetLengthERy(ptr noundef nonnull align 4 dereferenceable(4) %424, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %._crit_edge unwind label %413

._crit_edge:                                      ; preds = %423
  %.pre = load i64, ptr %18, align 8, !tbaa !20
  br label %426

426:                                              ; preds = %._crit_edge, %422
  %427 = phi i64 [ %.pre, %._crit_edge ], [ -1, %422 ]
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #13
  %428 = trunc i64 %427 to i8
  store i8 %428, ptr %28, align 1, !tbaa !27
  %429 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %430 = load ptr, ptr %429, align 8, !tbaa !28
  %431 = getelementptr inbounds i8, ptr %430, i64 40
  %432 = load ptr, ptr %431, align 8
  %433 = invoke noundef i32 %432(ptr noundef nonnull align 8 dereferenceable(8) %429, ptr noundef nonnull %28, i32 noundef 1, ptr noundef null)
          to label %434 unwind label %439

434:                                              ; preds = %426
  %.not202 = icmp eq i32 %433, 0
  br i1 %.not202, label %.critedge253, label %435

435:                                              ; preds = %503, %494, %485, %476, %467, %458, %449, %434
  %436 = load ptr, ptr @stderr, align 8, !tbaa !5
  %437 = load ptr, ptr @_ZL11kWriteError, align 8, !tbaa !5
  %438 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %436, ptr noundef %437) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  br label %.critedge257

439:                                              ; preds = %.critedge253.6, %.critedge253.5, %.critedge253.4, %.critedge253.3, %.critedge253.2, %.critedge253.1, %.critedge253, %426
  %440 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  br label %521

.critedge253:                                     ; preds = %434
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #13
  %441 = load i64, ptr %18, align 8, !tbaa !20
  %442 = lshr i64 %441, 8
  %443 = trunc i64 %442 to i8
  store i8 %443, ptr %28, align 1, !tbaa !27
  %444 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %445 = load ptr, ptr %444, align 8, !tbaa !28
  %446 = getelementptr inbounds i8, ptr %445, i64 40
  %447 = load ptr, ptr %446, align 8
  %448 = invoke noundef i32 %447(ptr noundef nonnull align 8 dereferenceable(8) %444, ptr noundef nonnull %28, i32 noundef 1, ptr noundef null)
          to label %449 unwind label %439

449:                                              ; preds = %.critedge253
  %.not202.1 = icmp eq i32 %448, 0
  br i1 %.not202.1, label %.critedge253.1, label %435

.critedge253.1:                                   ; preds = %449
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #13
  %450 = load i64, ptr %18, align 8, !tbaa !20
  %451 = lshr i64 %450, 16
  %452 = trunc i64 %451 to i8
  store i8 %452, ptr %28, align 1, !tbaa !27
  %453 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %454 = load ptr, ptr %453, align 8, !tbaa !28
  %455 = getelementptr inbounds i8, ptr %454, i64 40
  %456 = load ptr, ptr %455, align 8
  %457 = invoke noundef i32 %456(ptr noundef nonnull align 8 dereferenceable(8) %453, ptr noundef nonnull %28, i32 noundef 1, ptr noundef null)
          to label %458 unwind label %439

458:                                              ; preds = %.critedge253.1
  %.not202.2 = icmp eq i32 %457, 0
  br i1 %.not202.2, label %.critedge253.2, label %435

.critedge253.2:                                   ; preds = %458
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #13
  %459 = load i64, ptr %18, align 8, !tbaa !20
  %460 = lshr i64 %459, 24
  %461 = trunc i64 %460 to i8
  store i8 %461, ptr %28, align 1, !tbaa !27
  %462 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %463 = load ptr, ptr %462, align 8, !tbaa !28
  %464 = getelementptr inbounds i8, ptr %463, i64 40
  %465 = load ptr, ptr %464, align 8
  %466 = invoke noundef i32 %465(ptr noundef nonnull align 8 dereferenceable(8) %462, ptr noundef nonnull %28, i32 noundef 1, ptr noundef null)
          to label %467 unwind label %439

467:                                              ; preds = %.critedge253.2
  %.not202.3 = icmp eq i32 %466, 0
  br i1 %.not202.3, label %.critedge253.3, label %435

.critedge253.3:                                   ; preds = %467
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #13
  %468 = load i64, ptr %18, align 8, !tbaa !20
  %469 = lshr i64 %468, 32
  %470 = trunc i64 %469 to i8
  store i8 %470, ptr %28, align 1, !tbaa !27
  %471 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %472 = load ptr, ptr %471, align 8, !tbaa !28
  %473 = getelementptr inbounds i8, ptr %472, i64 40
  %474 = load ptr, ptr %473, align 8
  %475 = invoke noundef i32 %474(ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef nonnull %28, i32 noundef 1, ptr noundef null)
          to label %476 unwind label %439

476:                                              ; preds = %.critedge253.3
  %.not202.4 = icmp eq i32 %475, 0
  br i1 %.not202.4, label %.critedge253.4, label %435

.critedge253.4:                                   ; preds = %476
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #13
  %477 = load i64, ptr %18, align 8, !tbaa !20
  %478 = lshr i64 %477, 40
  %479 = trunc i64 %478 to i8
  store i8 %479, ptr %28, align 1, !tbaa !27
  %480 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %481 = load ptr, ptr %480, align 8, !tbaa !28
  %482 = getelementptr inbounds i8, ptr %481, i64 40
  %483 = load ptr, ptr %482, align 8
  %484 = invoke noundef i32 %483(ptr noundef nonnull align 8 dereferenceable(8) %480, ptr noundef nonnull %28, i32 noundef 1, ptr noundef null)
          to label %485 unwind label %439

485:                                              ; preds = %.critedge253.4
  %.not202.5 = icmp eq i32 %484, 0
  br i1 %.not202.5, label %.critedge253.5, label %435

.critedge253.5:                                   ; preds = %485
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #13
  %486 = load i64, ptr %18, align 8, !tbaa !20
  %487 = lshr i64 %486, 48
  %488 = trunc i64 %487 to i8
  store i8 %488, ptr %28, align 1, !tbaa !27
  %489 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %490 = load ptr, ptr %489, align 8, !tbaa !28
  %491 = getelementptr inbounds i8, ptr %490, i64 40
  %492 = load ptr, ptr %491, align 8
  %493 = invoke noundef i32 %492(ptr noundef nonnull align 8 dereferenceable(8) %489, ptr noundef nonnull %28, i32 noundef 1, ptr noundef null)
          to label %494 unwind label %439

494:                                              ; preds = %.critedge253.5
  %.not202.6 = icmp eq i32 %493, 0
  br i1 %.not202.6, label %.critedge253.6, label %435

.critedge253.6:                                   ; preds = %494
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #13
  %495 = load i64, ptr %18, align 8, !tbaa !20
  %496 = lshr i64 %495, 56
  %497 = trunc nuw i64 %496 to i8
  store i8 %497, ptr %28, align 1, !tbaa !27
  %498 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %499 = load ptr, ptr %498, align 8, !tbaa !28
  %500 = getelementptr inbounds i8, ptr %499, i64 40
  %501 = load ptr, ptr %500, align 8
  %502 = invoke noundef i32 %501(ptr noundef nonnull align 8 dereferenceable(8) %498, ptr noundef nonnull %28, i32 noundef 1, ptr noundef null)
          to label %503 unwind label %439

503:                                              ; preds = %.critedge253.6
  %.not202.7 = icmp eq i32 %502, 0
  br i1 %.not202.7, label %.critedge253.7, label %435

.critedge253.7:                                   ; preds = %503
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #13
  %504 = call noundef ptr @_ZNK9CMyComPtrI14ICompressCoderEptEv(ptr noundef nonnull align 8 dereferenceable(8) %19)
  %505 = call noundef ptr @_ZNK9CMyComPtrI19ISequentialInStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %506 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %507 = load ptr, ptr %504, align 8, !tbaa !28
  %508 = getelementptr inbounds i8, ptr %507, i64 40
  %509 = load ptr, ptr %508, align 8
  %510 = invoke noundef i32 %509(ptr noundef nonnull align 8 dereferenceable(8) %504, ptr noundef %505, ptr noundef %506, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %511 unwind label %515

511:                                              ; preds = %.critedge253.7
  switch i32 %510, label %517 [
    i32 -2147024882, label %512
    i32 0, label %520
  ]

512:                                              ; preds = %511
  %513 = load ptr, ptr @stderr, align 8, !tbaa !5
  %514 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %513, ptr noundef nonnull @.str.16) #12
  br label %.critedge257

515:                                              ; preds = %.critedge253.7
  %516 = landingpad { ptr, i32 }
          cleanup
  br label %521

517:                                              ; preds = %511
  %518 = load ptr, ptr @stderr, align 8, !tbaa !5
  %519 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %518, ptr noundef nonnull @.str.17, i32 noundef %510) #12
  br label %.critedge257

520:                                              ; preds = %511
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %27) #13
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %26) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #13
  call void @_ZN9CMyComPtrI14ICompressCoderED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #13
  br label %609

521:                                              ; preds = %515, %439, %413
  %.pn203 = phi { ptr, i32 } [ %516, %515 ], [ %440, %439 ], [ %414, %413 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %27) #13
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %26) #13
  br label %522

522:                                              ; preds = %521, %377
  %.pn203.pn = phi { ptr, i32 } [ %.pn203, %521 ], [ %378, %377 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #13
  call void @_ZN9CMyComPtrI14ICompressCoderED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #13
  br label %523

523:                                              ; preds = %522, %352
  %.pn203.pn.pn = phi { ptr, i32 } [ %.pn203.pn, %522 ], [ %353, %352 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #13
  br label %619

524:                                              ; preds = %341
  %525 = invoke noalias noundef nonnull dereferenceable(256) ptr @_Znwm(i64 noundef 256) #14
          to label %526 unwind label %537

526:                                              ; preds = %524
  invoke void @_ZN9NCompress5NLzma8CDecoderC1Ev(ptr noundef nonnull align 8 dereferenceable(249) %525)
          to label %527 unwind label %539

527:                                              ; preds = %526
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #13
  invoke void @_ZN9CMyComPtrI14ICompressCoderEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull %525)
          to label %528 unwind label %541

528:                                              ; preds = %527
  %529 = getelementptr inbounds i8, ptr %525, i64 248
  store i8 1, ptr %529, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 13, ptr nonnull %30) #13
  %530 = call noundef ptr @_ZNK9CMyComPtrI19ISequentialInStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %531 = invoke noundef i32 @_Z16ReadStream_FALSEP19ISequentialInStreamPvm(ptr noundef %530, ptr noundef nonnull %30, i64 noundef 13)
          to label %532 unwind label %543

532:                                              ; preds = %528
  %.not195 = icmp eq i32 %531, 0
  br i1 %.not195, label %545, label %533

533:                                              ; preds = %532
  %534 = load ptr, ptr @stderr, align 8, !tbaa !5
  %535 = load ptr, ptr @_ZL10kReadError, align 8, !tbaa !5
  %536 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %534, ptr noundef %535) #12
  br label %.critedge259

537:                                              ; preds = %524
  %538 = landingpad { ptr, i32 }
          cleanup
  br label %619

539:                                              ; preds = %526
  %540 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %525, i64 noundef 256) #15
  br label %619

541:                                              ; preds = %527
  %542 = landingpad { ptr, i32 }
          cleanup
  br label %608

543:                                              ; preds = %554, %545, %528
  %544 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 13, ptr nonnull %30) #13
  call void @_ZN9CMyComPtrI14ICompressCoderED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #13
  br label %608

545:                                              ; preds = %532
  %546 = load ptr, ptr %525, align 8, !tbaa !28
  %547 = getelementptr inbounds i8, ptr %546, i64 48
  %548 = load ptr, ptr %547, align 8
  %549 = invoke noundef i32 %548(ptr noundef nonnull align 8 dereferenceable(249) %525, ptr noundef nonnull %30, i32 noundef 5)
          to label %550 unwind label %543

550:                                              ; preds = %545
  %.not196 = icmp eq i32 %549, 0
  br i1 %.not196, label %554, label %551

551:                                              ; preds = %550
  %552 = load ptr, ptr @stderr, align 8, !tbaa !5
  %553 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %552, ptr noundef nonnull @.str.18) #12
  br label %.critedge259

554:                                              ; preds = %550
  %555 = getelementptr inbounds i8, ptr %30, i64 5
  %556 = load i8, ptr %555, align 1, !tbaa !27
  %557 = zext i8 %556 to i64
  %558 = getelementptr inbounds i8, ptr %30, i64 6
  %559 = load i8, ptr %558, align 1, !tbaa !27
  %560 = zext i8 %559 to i64
  %561 = shl nuw nsw i64 %560, 8
  %562 = or disjoint i64 %561, %557
  %563 = getelementptr inbounds i8, ptr %30, i64 7
  %564 = load i8, ptr %563, align 1, !tbaa !27
  %565 = zext i8 %564 to i64
  %566 = shl nuw nsw i64 %565, 16
  %567 = or disjoint i64 %566, %562
  %568 = getelementptr inbounds i8, ptr %30, i64 8
  %569 = load i8, ptr %568, align 1, !tbaa !27
  %570 = zext i8 %569 to i64
  %571 = shl nuw nsw i64 %570, 24
  %572 = or disjoint i64 %571, %567
  %573 = getelementptr inbounds i8, ptr %30, i64 9
  %574 = load i8, ptr %573, align 1, !tbaa !27
  %575 = zext i8 %574 to i64
  %576 = shl nuw nsw i64 %575, 32
  %577 = or disjoint i64 %576, %572
  %578 = getelementptr inbounds i8, ptr %30, i64 10
  %579 = load i8, ptr %578, align 1, !tbaa !27
  %580 = zext i8 %579 to i64
  %581 = shl nuw nsw i64 %580, 40
  %582 = or i64 %581, %577
  %583 = getelementptr inbounds i8, ptr %30, i64 11
  %584 = load i8, ptr %583, align 1, !tbaa !27
  %585 = zext i8 %584 to i64
  %586 = shl nuw nsw i64 %585, 48
  %587 = or i64 %586, %582
  %588 = getelementptr inbounds i8, ptr %30, i64 12
  %589 = load i8, ptr %588, align 1, !tbaa !27
  %590 = zext i8 %589 to i64
  %591 = shl nuw i64 %590, 56
  %592 = or i64 %591, %587
  store i64 %592, ptr %18, align 8, !tbaa !20
  %593 = call noundef ptr @_ZNK9CMyComPtrI14ICompressCoderEptEv(ptr noundef nonnull align 8 dereferenceable(8) %29)
  %594 = call noundef ptr @_ZNK9CMyComPtrI19ISequentialInStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %595 = call noundef ptr @_ZNK9CMyComPtrI20ISequentialOutStreamEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %596 = load i64, ptr %18, align 8, !tbaa !20
  %597 = icmp eq i64 %596, -1
  %598 = select i1 %597, ptr null, ptr %18
  %599 = load ptr, ptr %593, align 8, !tbaa !28
  %600 = getelementptr inbounds i8, ptr %599, i64 40
  %601 = load ptr, ptr %600, align 8
  %602 = invoke noundef i32 %601(ptr noundef nonnull align 8 dereferenceable(8) %593, ptr noundef %594, ptr noundef %595, ptr noundef null, ptr noundef %598, ptr noundef null)
          to label %603 unwind label %543

603:                                              ; preds = %554
  %.not200 = icmp eq i32 %602, 0
  br i1 %.not200, label %607, label %604

604:                                              ; preds = %603
  %605 = load ptr, ptr @stderr, align 8, !tbaa !5
  %606 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %605, ptr noundef nonnull @.str.19) #12
  br label %.critedge259

607:                                              ; preds = %603
  call void @llvm.lifetime.end.p0(i64 13, ptr nonnull %30) #13
  call void @_ZN9CMyComPtrI14ICompressCoderED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #13
  br label %609

608:                                              ; preds = %543, %541
  %.pn197 = phi { ptr, i32 } [ %544, %543 ], [ %542, %541 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #13
  br label %619

609:                                              ; preds = %607, %520
  %.not209 = icmp eq ptr %.0176, null
  br i1 %.not209, label %618, label %610

610:                                              ; preds = %609
  %611 = invoke noundef i32 @_ZN14COutFileStream5CloseEv(ptr noundef nonnull align 8 dereferenceable(24) %.0176)
          to label %612 unwind label %616

612:                                              ; preds = %610
  %.not212 = icmp eq i32 %611, 0
  br i1 %.not212, label %618, label %613

613:                                              ; preds = %612
  %614 = load ptr, ptr @stderr, align 8, !tbaa !5
  %615 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %614, ptr noundef nonnull @.str.20) #12
  br label %618

616:                                              ; preds = %610
  %617 = landingpad { ptr, i32 }
          cleanup
  br label %619

.critedge257:                                     ; preds = %435, %517, %512
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %27) #13
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %26) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #13
  call void @_ZN9CMyComPtrI14ICompressCoderED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #13
  br label %618

.critedge259:                                     ; preds = %604, %551, %533
  call void @llvm.lifetime.end.p0(i64 13, ptr nonnull %30) #13
  call void @_ZN9CMyComPtrI14ICompressCoderED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #13
  br label %618

618:                                              ; preds = %609, %612, %.critedge259, %.critedge257, %613
  %.12 = phi i32 [ 1, %613 ], [ 1, %.critedge257 ], [ 1, %.critedge259 ], [ 0, %612 ], [ 0, %609 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #13
  br label %620

619:                                              ; preds = %537, %539, %608, %348, %350, %523, %616
  %.pn210 = phi { ptr, i32 } [ %617, %616 ], [ %.pn203.pn.pn, %523 ], [ %351, %350 ], [ %349, %348 ], [ %.pn197, %608 ], [ %540, %539 ], [ %538, %537 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #13
  br label %621

620:                                              ; preds = %223, %618, %337
  %.13 = phi i32 [ %.5, %337 ], [ %.12, %618 ], [ 1, %223 ]
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #13
  br label %622

621:                                              ; preds = %226, %228, %234, %235, %619, %340, %204
  %.pn230 = phi { ptr, i32 } [ %205, %204 ], [ %.pn228, %340 ], [ %.pn210, %619 ], [ %236, %235 ], [ %.pn191, %234 ], [ %227, %226 ], [ %229, %228 ]
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #13
  br label %623

622:                                              ; preds = %186, %620
  %.14 = phi i32 [ %.13, %620 ], [ 1, %186 ]
  call void @_ZN9CMyComPtrI19ISequentialInStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #13
  br label %624

623:                                              ; preds = %189, %191, %197, %198, %621, %166, %164
  %.pn230.pn = phi { ptr, i32 } [ %.pn230, %621 ], [ %165, %164 ], [ %167, %166 ], [ %199, %198 ], [ %.pn, %197 ], [ %190, %189 ], [ %192, %191 ]
  call void @_ZN9CMyComPtrI19ISequentialInStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #13
  br label %625

624:                                              ; preds = %622, %134
  %.15 = phi i32 [ %133, %134 ], [ %.14, %622 ]
  call void @_ZN11CStringBaseIwED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #13
  br label %627

625:                                              ; preds = %126, %128, %160, %623, %162, %139, %110
  %.pn236.pn = phi { ptr, i32 } [ %111, %110 ], [ %129, %128 ], [ %127, %126 ], [ %140, %139 ], [ %161, %160 ], [ %.pn230.pn, %623 ], [ %163, %162 ]
  call void @_ZN11CStringBaseIwED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #13
  br label %626

626:                                              ; preds = %625, %108
  %.pn236.pn.pn = phi { ptr, i32 } [ %.pn236.pn, %625 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #13
  br label %628

627:                                              ; preds = %624, %57
  %.16 = phi i32 [ 0, %57 ], [ %.15, %624 ]
  call void @_ZN18NCommandLineParser7CParserD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %4) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #13
  call void @_ZN13CObjectVectorI11CStringBaseIwEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #13
  br label %631

628:                                              ; preds = %67, %88, %90, %626, %86, %58, %60
  %.pn236.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %61, %60 ], [ %59, %58 ], [ %68, %67 ], [ %87, %86 ], [ %.pn236.pn.pn, %626 ], [ %91, %90 ], [ %89, %88 ]
  call void @_ZN18NCommandLineParser7CParserD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %4) #13
  br label %629

629:                                              ; preds = %628, %40
  %.pn236.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn236.pn.pn.pn.pn.pn.pn, %628 ], [ %41, %40 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #13
  br label %630

630:                                              ; preds = %629, %38
  %.pn236.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn236.pn.pn.pn.pn.pn.pn.pn, %629 ], [ %39, %38 ]
  call void @_ZN13CObjectVectorI11CStringBaseIwEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #13
  resume { ptr, i32 } %.pn236.pn.pn.pn.pn.pn.pn.pn.pn

631:                                              ; preds = %627, %34
  %.18 = phi i32 [ 0, %34 ], [ %.16, %627 ]
  ret i32 %.18

632:                                              ; preds = %58
  %633 = landingpad { ptr, i32 }
          catch ptr null
  %634 = extractvalue { ptr, i32 } %633, 0
  call void @__clang_call_terminate(ptr %634) #17
  unreachable

635:                                              ; preds = %254, %246
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL9PrintHelpv() local_unnamed_addr #2

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

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

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

declare i32 @__gxx_personality_v0(...)

declare void @_ZN18NCommandLineParser7CParserC1Ei(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) unnamed_addr #4

declare void @_ZN18NCommandLineParser7CParser12ParseStringsEPKNS_11CSwitchFormERK13CObjectVectorI11CStringBaseIwEE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL16IncorrectCommandv() local_unnamed_addr #0

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #5

declare noundef nonnull align 8 dereferenceable(44) ptr @_ZNK18NCommandLineParser7CParserixEm(ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL9GetNumberPKwRj(ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN13CInFileStream4OpenEPKc(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15GetSystemStringRK11CStringBaseIwE(ptr dead_on_unwind noalias writable sret(%class.CStringBase.0) align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #7

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z12GetOemStringRK11CStringBaseIwE(ptr dead_on_unwind noalias writable sret(%class.CStringBase.0) align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #7

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

declare noundef zeroext i1 @_ZNK2NC5NFile3NIO9CFileBase9GetLengthERy(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

declare ptr @MyAlloc(i64 noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

declare void @MyFree(ptr noundef) local_unnamed_addr #4

declare void @_ZN9NCompress5NLzma8CEncoderC1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL11ParseUInt32RKN18NCommandLineParser7CParserEiRj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

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

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

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

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

declare void @_ZN9NCompress5NLzma8CDecoderC1Ev(ptr noundef nonnull align 8 dereferenceable(249)) unnamed_addr #4

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

declare noundef i32 @_ZN14COutFileStream5CloseEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

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

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

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

; Function Attrs: nounwind
declare void @_ZN18NCommandLineParser7CParserD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #11

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nobuiltin 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 #7 = { 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 #8 = { 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 #9 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #11 = { 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 #12 = { cold nounwind }
attributes #13 = { nounwind }
attributes #14 = { builtin allocsize(0) }
attributes #15 = { builtin nounwind }
attributes #16 = { noreturn }
attributes #17 = { noreturn 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, !11, i64 0}
!10 = !{!"_ZTSN18NCommandLineParser13CSwitchResultE", !11, i64 0, !11, i64 1, !12, i64 8, !15, i64 40}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTS13CObjectVectorI11CStringBaseIwEE", !13, i64 0}
!13 = !{!"_ZTS13CRecordVectorIPvE", !14, i64 0}
!14 = !{!"_ZTS17CBaseRecordVector", !15, i64 8, !15, i64 12, !6, i64 16, !16, i64 24}
!15 = !{!"int", !7, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!15, !15, i64 0}
!20 = !{!21, !21, i64 0}
!21 = !{!"long long", !7, i64 0}
!22 = !{!16, !16, i64 0}
!23 = !{!10, !15, i64 40}
!24 = !{!25, !26, i64 0}
!25 = !{!"_ZTS14tagPROPVARIANT", !26, i64 0, !26, i64 2, !26, i64 4, !26, i64 6, !7, i64 8}
!26 = !{!"short", !7, i64 0}
!27 = !{!7, !7, i64 0}
!28 = !{!29, !29, i64 0}
!29 = !{!"vtable pointer", !8, i64 0}
!30 = !{!31, !11, i64 248}
!31 = !{!"_ZTSN9NCompress5NLzma8CDecoderE", !32, i64 0, !34, i64 8, !35, i64 16, !36, i64 24, !37, i64 32, !38, i64 40, !39, i64 48, !40, i64 56, !6, i64 64, !15, i64 72, !15, i64 76, !41, i64 80, !11, i64 216, !21, i64 224, !21, i64 232, !21, i64 240, !11, i64 248}
!32 = !{!"_ZTS14ICompressCoder", !33, i64 0}
!33 = !{!"_ZTS8IUnknown"}
!34 = !{!"_ZTS30ICompressSetDecoderProperties2", !33, i64 0}
!35 = !{!"_ZTS33ICompressGetInStreamProcessedSize", !33, i64 0}
!36 = !{!"_ZTS20ICompressSetInStream", !33, i64 0}
!37 = !{!"_ZTS25ICompressSetOutStreamSize", !33, i64 0}
!38 = !{!"_ZTS19ISequentialInStream", !33, i64 0}
!39 = !{!"_ZTS13CMyUnknownImp", !15, i64 0}
!40 = !{!"_ZTS9CMyComPtrI19ISequentialInStreamE", !6, i64 0}
!41 = !{!"_ZTS8CLzmaDec", !42, i64 0, !6, i64 16, !6, i64 24, !6, i64 32, !15, i64 40, !15, i64 44, !16, i64 48, !16, i64 56, !15, i64 64, !15, i64 68, !15, i64 72, !7, i64 76, !15, i64 92, !15, i64 96, !15, i64 100, !15, i64 104, !15, i64 108, !7, i64 112}
!42 = !{!"_ZTS11_CLzmaProps", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass