; LLVM IR from mncoppola/rpef :: utilities_src/squashfs2.1/lzma/C/7zip/Compress/LZMA (LZMAEncoder)

; 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.tagPROPVARIANT = type { i16, i16, i16, i16, %union.anon.9 }
%union.anon.9 = type { %struct.LARGE_INTEGER }
%struct.LARGE_INTEGER = type { i64 }
%"class.NCompress::NLZMA::CEncoder" = type <{ %struct.ICompressCoder, %struct.ICompressSetOutStream, %struct.ICompressSetCoderProperties, %struct.ICompressWriteCoderProperties, %"class.NCompress::NLZMA::CBaseState", %class.CMyUnknownImp, [4096 x %"struct.NCompress::NLZMA::COptimal"], %class.CMyComPtr.5, %"class.NCompress::NRangeCoder::CEncoder", [12 x [16 x %"class.NCompress::NRangeCoder::CBitEncoder"]], [12 x %"class.NCompress::NRangeCoder::CBitEncoder"], [12 x %"class.NCompress::NRangeCoder::CBitEncoder"], [12 x %"class.NCompress::NRangeCoder::CBitEncoder"], [12 x %"class.NCompress::NRangeCoder::CBitEncoder"], [12 x [16 x %"class.NCompress::NRangeCoder::CBitEncoder"]], [4 x %"class.NCompress::NRangeCoder::CBitTreeEncoder.7"], [114 x %"class.NCompress::NRangeCoder::CBitEncoder"], %"class.NCompress::NRangeCoder::CBitTreeEncoder.8", %"class.NCompress::NLZMA::NLength::CPriceTableEncoder", %"class.NCompress::NLZMA::NLength::CPriceTableEncoder", %"class.NCompress::NLZMA::CLiteralEncoder", [274 x i32], i8, i8, [2 x i8], i32, i32, i32, i32, i32, i8, [3 x i8], [4 x [64 x i32]], [4 x [128 x i32]], [16 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, i8, [7 x i8], ptr, i32, i8, i8, [2 x i8] }>
%struct.ICompressCoder = type { %struct.IUnknown }
%struct.IUnknown = type { ptr }
%struct.ICompressSetOutStream = type { %struct.IUnknown }
%struct.ICompressSetCoderProperties = type { %struct.IUnknown }
%struct.ICompressWriteCoderProperties = type { %struct.IUnknown }
%"class.NCompress::NLZMA::CBaseState" = type { %"class.NCompress::NLZMA::CState", i8, [4 x i32] }
%"class.NCompress::NLZMA::CState" = type { i8 }
%class.CMyUnknownImp = type { i32 }
%"struct.NCompress::NLZMA::COptimal" = type { %"class.NCompress::NLZMA::CState", i8, i8, i32, i32, i32, i32, i32, [4 x i32] }
%class.CMyComPtr.5 = type { ptr }
%"class.NCompress::NRangeCoder::CEncoder" = type { i32, i8, i64, i32, [4 x i8], %class.COutBuffer }
%class.COutBuffer = type <{ ptr, i32, i32, i32, i32, %class.CMyComPtr.6, i64, ptr, i8, [7 x i8] }>
%class.CMyComPtr.6 = type { ptr }
%"class.NCompress::NRangeCoder::CBitEncoder" = type { %"class.NCompress::NRangeCoder::CBitModel" }
%"class.NCompress::NRangeCoder::CBitModel" = type { i32 }
%"class.NCompress::NRangeCoder::CBitTreeEncoder.7" = type { [64 x %"class.NCompress::NRangeCoder::CBitEncoder"] }
%"class.NCompress::NRangeCoder::CBitTreeEncoder.8" = type { [16 x %"class.NCompress::NRangeCoder::CBitEncoder"] }
%"class.NCompress::NLZMA::NLength::CPriceTableEncoder" = type { %"class.NCompress::NLZMA::NLength::CEncoder", [272 x [16 x i32]], i32, [16 x i32] }
%"class.NCompress::NLZMA::NLength::CEncoder" = type { %"class.NCompress::NRangeCoder::CBitEncoder", %"class.NCompress::NRangeCoder::CBitEncoder", [16 x %"class.NCompress::NRangeCoder::CBitTreeEncoder"], [16 x %"class.NCompress::NRangeCoder::CBitTreeEncoder"], %"class.NCompress::NRangeCoder::CBitTreeEncoder.4" }
%"class.NCompress::NRangeCoder::CBitTreeEncoder" = type { [8 x %"class.NCompress::NRangeCoder::CBitEncoder"] }
%"class.NCompress::NRangeCoder::CBitTreeEncoder.4" = type { [256 x %"class.NCompress::NRangeCoder::CBitEncoder"] }
%"class.NCompress::NLZMA::CLiteralEncoder" = type <{ ptr, i32, i32, i32, [4 x i8] }>

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN9NCompress5NLZMA8CEncoder18SetCoderPropertiesEPKjPK14tagPROPVARIANTj(ptr noundef nonnull align 8 dereferenceable(210678) %0, ptr noundef %1, ptr noundef %2, i32 noundef %3) unnamed_addr #2 align 2 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store i32 %3, ptr %9, align 4, !tbaa !9
  %23 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %24

24:                                               ; preds = %234, %4
  %25 = load i32, ptr %10, align 4, !tbaa !9
  %26 = load i32, ptr %9, align 4, !tbaa !9
  %27 = icmp ult i32 %25, %26
  br i1 %27, label %29, label %28

28:                                               ; preds = %24
  store i32 2, ptr %11, align 4
  br label %237

29:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  %30 = load ptr, ptr %8, align 8, !tbaa !5
  %31 = load i32, ptr %10, align 4, !tbaa !9
  %32 = zext i32 %31 to i64
  %33 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %30, i64 %32
  store ptr %33, ptr %12, align 8, !tbaa !5
  %34 = load ptr, ptr %7, align 8, !tbaa !5
  %35 = load i32, ptr %10, align 4, !tbaa !9
  %36 = zext i32 %35 to i64
  %37 = getelementptr inbounds i32, ptr %34, i64 %36
  %38 = load i32, ptr %37, align 4, !tbaa !9
  switch i32 %38, label %229 [
    i32 1104, label %39
    i32 1136, label %61
    i32 1105, label %80
    i32 1024, label %114
    i32 1088, label %154
    i32 1090, label %178
    i32 1089, label %197
    i32 1168, label %216
  ]

39:                                               ; preds = %29
  %40 = load ptr, ptr %12, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %40, i32 0, i32 0
  %42 = load i16, ptr %41, align 8, !tbaa !11
  %43 = zext i16 %42 to i32
  %44 = icmp ne i32 %43, 19
  br i1 %44, label %45, label %46

45:                                               ; preds = %39
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %231

46:                                               ; preds = %39
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  %47 = load ptr, ptr %12, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %47, i32 0, i32 4
  %49 = load i32, ptr %48, align 8, !tbaa !14
  store i32 %49, ptr %13, align 4, !tbaa !9
  %50 = load i32, ptr %13, align 4, !tbaa !9
  %51 = icmp ult i32 %50, 5
  br i1 %51, label %55, label %52

52:                                               ; preds = %46
  %53 = load i32, ptr %13, align 4, !tbaa !9
  %54 = icmp ugt i32 %53, 273
  br i1 %54, label %55, label %56

55:                                               ; preds = %52, %46
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %59

56:                                               ; preds = %52
  %57 = load i32, ptr %13, align 4, !tbaa !9
  %58 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 25
  store i32 %57, ptr %58, align 4, !tbaa !15
  store i32 5, ptr %11, align 4
  br label %59

59:                                               ; preds = %56, %55
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  %60 = load i32, ptr %11, align 4
  switch i32 %60, label %231 [
    i32 5, label %230
  ]

61:                                               ; preds = %29
  %62 = load ptr, ptr %12, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %62, i32 0, i32 0
  %64 = load i16, ptr %63, align 8, !tbaa !11
  %65 = zext i16 %64 to i32
  %66 = icmp ne i32 %65, 19
  br i1 %66, label %67, label %68

67:                                               ; preds = %61
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %231

68:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %69, i32 0, i32 4
  %71 = load i32, ptr %70, align 8, !tbaa !14
  store i32 %71, ptr %14, align 4, !tbaa !9
  %72 = load i32, ptr %14, align 4, !tbaa !9
  %73 = icmp eq i32 %72, 0
  %74 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 22
  %75 = zext i1 %73 to i8
  store i8 %75, ptr %74, align 8, !tbaa !38
  %76 = load i32, ptr %14, align 4, !tbaa !9
  %77 = icmp uge i32 %76, 2
  %78 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 23
  %79 = zext i1 %77 to i8
  store i8 %79, ptr %78, align 1, !tbaa !39
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  br label %230

80:                                               ; preds = %29
  %81 = load ptr, ptr %12, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %81, i32 0, i32 0
  %83 = load i16, ptr %82, align 8, !tbaa !11
  %84 = zext i16 %83 to i32
  %85 = icmp ne i32 %84, 8
  br i1 %85, label %86, label %87

86:                                               ; preds = %80
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %231

87:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  %88 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 49
  %89 = load i32, ptr %88, align 8, !tbaa !40
  store i32 %89, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  %90 = load ptr, ptr %12, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %90, i32 0, i32 4
  %92 = load ptr, ptr %91, align 8, !tbaa !14
  %93 = call noundef i32 @_ZN9NCompress5NLZMAL15FindMatchFinderEPKw(ptr noundef %92)
  store i32 %93, ptr %16, align 4, !tbaa !9
  %94 = load i32, ptr %16, align 4, !tbaa !9
  %95 = icmp slt i32 %94, 0
  br i1 %95, label %96, label %97

96:                                               ; preds = %87
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %112

97:                                               ; preds = %87
  %98 = load i32, ptr %16, align 4, !tbaa !9
  %99 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 49
  store i32 %98, ptr %99, align 8, !tbaa !40
  %100 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 7
  %101 = call noundef ptr @_ZNK9CMyComPtrI12IMatchFinderEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %102 = icmp ne ptr %101, null
  br i1 %102, label %103, label %111

103:                                              ; preds = %97
  %104 = load i32, ptr %15, align 4, !tbaa !9
  %105 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 49
  %106 = load i32, ptr %105, align 8, !tbaa !40
  %107 = icmp ne i32 %104, %106
  br i1 %107, label %108, label %111

108:                                              ; preds = %103
  %109 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 42
  store i32 -1, ptr %109, align 8, !tbaa !41
  %110 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 7
  call void @_ZN9CMyComPtrI12IMatchFinderE7ReleaseEv(ptr noundef nonnull align 8 dereferenceable(8) %110)
  br label %111

111:                                              ; preds = %108, %103, %97
  store i32 5, ptr %11, align 4
  br label %112

112:                                              ; preds = %111, %96
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  %113 = load i32, ptr %11, align 4
  switch i32 %113, label %231 [
    i32 5, label %230
  ]

114:                                              ; preds = %29
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  store i32 28, ptr %17, align 4, !tbaa !9
  %115 = load ptr, ptr %12, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %115, i32 0, i32 0
  %117 = load i16, ptr %116, align 8, !tbaa !11
  %118 = zext i16 %117 to i32
  %119 = icmp ne i32 %118, 19
  br i1 %119, label %120, label %121

120:                                              ; preds = %114
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %152

121:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  %122 = load ptr, ptr %12, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %122, i32 0, i32 4
  %124 = load i32, ptr %123, align 8, !tbaa !14
  store i32 %124, ptr %18, align 4, !tbaa !9
  %125 = load i32, ptr %18, align 4, !tbaa !9
  %126 = icmp ult i32 %125, 1
  br i1 %126, label %130, label %127

127:                                              ; preds = %121
  %128 = load i32, ptr %18, align 4, !tbaa !9
  %129 = icmp ugt i32 %128, 268435456
  br i1 %129, label %130, label %131

130:                                              ; preds = %127, %121
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %151

131:                                              ; preds = %127
  %132 = load i32, ptr %18, align 4, !tbaa !9
  %133 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 41
  store i32 %132, ptr %133, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %144, %131
  %135 = load i32, ptr %19, align 4, !tbaa !9
  %136 = icmp ult i32 %135, 28
  br i1 %136, label %137, label %147

137:                                              ; preds = %134
  %138 = load i32, ptr %18, align 4, !tbaa !9
  %139 = load i32, ptr %19, align 4, !tbaa !9
  %140 = shl i32 1, %139
  %141 = icmp ule i32 %138, %140
  br i1 %141, label %142, label %143

142:                                              ; preds = %137
  br label %147

143:                                              ; preds = %137
  br label %144

144:                                              ; preds = %143
  %145 = load i32, ptr %19, align 4, !tbaa !9
  %146 = add i32 %145, 1
  store i32 %146, ptr %19, align 4, !tbaa !9
  br label %134, !llvm.loop !43

147:                                              ; preds = %142, %134
  %148 = load i32, ptr %19, align 4, !tbaa !9
  %149 = mul i32 %148, 2
  %150 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 36
  store i32 %149, ptr %150, align 8, !tbaa !45
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  br label %151

151:                                              ; preds = %147, %130
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  br label %152

152:                                              ; preds = %151, %120
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  %153 = load i32, ptr %11, align 4
  switch i32 %153, label %231 [
    i32 5, label %230
  ]

154:                                              ; preds = %29
  %155 = load ptr, ptr %12, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %155, i32 0, i32 0
  %157 = load i16, ptr %156, align 8, !tbaa !11
  %158 = zext i16 %157 to i32
  %159 = icmp ne i32 %158, 19
  br i1 %159, label %160, label %161

160:                                              ; preds = %154
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %231

161:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  %162 = load ptr, ptr %12, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %162, i32 0, i32 4
  %164 = load i32, ptr %163, align 8, !tbaa !14
  store i32 %164, ptr %20, align 4, !tbaa !9
  %165 = load i32, ptr %20, align 4, !tbaa !9
  %166 = icmp ugt i32 %165, 4
  br i1 %166, label %167, label %168

167:                                              ; preds = %161
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %176

168:                                              ; preds = %161
  %169 = load i32, ptr %20, align 4, !tbaa !9
  %170 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 37
  store i32 %169, ptr %170, align 4, !tbaa !46
  %171 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 37
  %172 = load i32, ptr %171, align 4, !tbaa !46
  %173 = shl i32 1, %172
  %174 = sub nsw i32 %173, 1
  %175 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 38
  store i32 %174, ptr %175, align 8, !tbaa !47
  store i32 5, ptr %11, align 4
  br label %176

176:                                              ; preds = %168, %167
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  %177 = load i32, ptr %11, align 4
  switch i32 %177, label %231 [
    i32 5, label %230
  ]

178:                                              ; preds = %29
  %179 = load ptr, ptr %12, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %179, i32 0, i32 0
  %181 = load i16, ptr %180, align 8, !tbaa !11
  %182 = zext i16 %181 to i32
  %183 = icmp ne i32 %182, 19
  br i1 %183, label %184, label %185

184:                                              ; preds = %178
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %231

185:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  %186 = load ptr, ptr %12, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %186, i32 0, i32 4
  %188 = load i32, ptr %187, align 8, !tbaa !14
  store i32 %188, ptr %21, align 4, !tbaa !9
  %189 = load i32, ptr %21, align 4, !tbaa !9
  %190 = icmp ugt i32 %189, 4
  br i1 %190, label %191, label %192

191:                                              ; preds = %185
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %195

192:                                              ; preds = %185
  %193 = load i32, ptr %21, align 4, !tbaa !9
  %194 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 39
  store i32 %193, ptr %194, align 4, !tbaa !48
  store i32 5, ptr %11, align 4
  br label %195

195:                                              ; preds = %192, %191
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  %196 = load i32, ptr %11, align 4
  switch i32 %196, label %231 [
    i32 5, label %230
  ]

197:                                              ; preds = %29
  %198 = load ptr, ptr %12, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %198, i32 0, i32 0
  %200 = load i16, ptr %199, align 8, !tbaa !11
  %201 = zext i16 %200 to i32
  %202 = icmp ne i32 %201, 19
  br i1 %202, label %203, label %204

203:                                              ; preds = %197
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %231

204:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  %205 = load ptr, ptr %12, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %205, i32 0, i32 4
  %207 = load i32, ptr %206, align 8, !tbaa !14
  store i32 %207, ptr %22, align 4, !tbaa !9
  %208 = load i32, ptr %22, align 4, !tbaa !9
  %209 = icmp ugt i32 %208, 8
  br i1 %209, label %210, label %211

210:                                              ; preds = %204
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %214

211:                                              ; preds = %204
  %212 = load i32, ptr %22, align 4, !tbaa !9
  %213 = getelementptr inbounds %"class.NCompress::NLZMA::CEncoder", ptr %23, i32 0, i32 40
  store i32 %212, ptr %213, align 8, !tbaa !49
  store i32 5, ptr %11, align 4
  br label %214

214:                                              ; preds = %211, %210
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  %215 = load i32, ptr %11, align 4
  switch i32 %215, label %231 [
    i32 5, label %230
  ]

216:                                              ; preds = %29
  %217 = load ptr, ptr %12, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %217, i32 0, i32 0
  %219 = load i16, ptr %218, align 8, !tbaa !11
  %220 = zext i16 %219 to i32
  %221 = icmp ne i32 %220, 11
  br i1 %221, label %222, label %223

222:                                              ; preds = %216
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %231

223:                                              ; preds = %216
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %224, i32 0, i32 4
  %226 = load i16, ptr %225, align 8, !tbaa !14
  %227 = sext i16 %226 to i32
  %228 = icmp eq i32 %227, -1
  call void @_ZN9NCompress5NLZMA8CEncoder21SetWriteEndMarkerModeEb(ptr noundef nonnull align 8 dereferenceable(210678) %23, i1 noundef zeroext %228)
  br label %230

229:                                              ; preds = %29
  store i32 -2147024809, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %231

230:                                              ; preds = %223, %214, %195, %176, %152, %112, %68, %59
  store i32 0, ptr %11, align 4
  br label %231

231:                                              ; preds = %230, %229, %222, %214, %203, %195, %184, %176, %160, %152, %112, %86, %67, %59, %45
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  %232 = load i32, ptr %11, align 4
  switch i32 %232, label %237 [
    i32 0, label %233
  ]

233:                                              ; preds = %231
  br label %234

234:                                              ; preds = %233
  %235 = load i32, ptr %10, align 4, !tbaa !9
  %236 = add i32 %235, 1
  store i32 %236, ptr %10, align 4, !tbaa !9
  br label %24, !llvm.loop !50

237:                                              ; preds = %231, %28
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  %238 = load i32, ptr %11, align 4
  switch i32 %238, label %242 [
    i32 2, label %239
    i32 1, label %240
  ]

239:                                              ; preds = %237
  store i32 0, ptr %5, align 4
  br label %240

240:                                              ; preds = %239, %237
  %241 = load i32, ptr %5, align 4
  ret i32 %241

242:                                              ; preds = %237
  unreachable
}

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN9NCompress5NLZMAL15FindMatchFinderEPKw(ptr noundef) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9NCompress5NLZMA8CEncoder21SetWriteEndMarkerModeEb(ptr noundef nonnull align 8 dereferenceable(210678), i1 noundef zeroext) #1 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"_ZTS14tagPROPVARIANT", !13, i64 0, !13, i64 2, !13, i64 4, !13, i64 6, !7, i64 8}
!13 = !{!"short", !7, i64 0}
!14 = !{!7, !7, i64 0}
!15 = !{!16, !10, i64 207444}
!16 = !{!"_ZTSN9NCompress5NLZMA8CEncoderE", !17, i64 0, !19, i64 8, !20, i64 16, !21, i64 24, !22, i64 32, !24, i64 52, !7, i64 56, !25, i64 163896, !26, i64 163904, !7, i64 163984, !7, i64 164752, !7, i64 164800, !7, i64 164848, !7, i64 164896, !7, i64 164944, !7, i64 165712, !7, i64 166736, !31, i64 167192, !32, i64 167256, !32, i64 186788, !37, i64 206320, !7, i64 206344, !30, i64 207440, !30, i64 207441, !10, i64 207444, !10, i64 207448, !10, i64 207452, !10, i64 207456, !10, i64 207460, !30, i64 207464, !7, i64 207468, !7, i64 208492, !7, i64 210540, !10, i64 210604, !10, i64 210608, !10, i64 210612, !10, i64 210616, !10, i64 210620, !10, i64 210624, !10, i64 210628, !10, i64 210632, !10, i64 210636, !27, i64 210640, !27, i64 210648, !30, i64 210656, !6, i64 210664, !10, i64 210672, !30, i64 210676, !30, i64 210677}
!17 = !{!"_ZTS14ICompressCoder", !18, i64 0}
!18 = !{!"_ZTS8IUnknown"}
!19 = !{!"_ZTS21ICompressSetOutStream", !18, i64 0}
!20 = !{!"_ZTS27ICompressSetCoderProperties", !18, i64 0}
!21 = !{!"_ZTS29ICompressWriteCoderProperties", !18, i64 0}
!22 = !{!"_ZTSN9NCompress5NLZMA10CBaseStateE", !23, i64 0, !7, i64 1, !7, i64 4}
!23 = !{!"_ZTSN9NCompress5NLZMA6CStateE", !7, i64 0}
!24 = !{!"_ZTS13CMyUnknownImp", !10, i64 0}
!25 = !{!"_ZTS9CMyComPtrI12IMatchFinderE", !6, i64 0}
!26 = !{!"_ZTSN9NCompress11NRangeCoder8CEncoderE", !10, i64 0, !7, i64 4, !27, i64 8, !10, i64 16, !28, i64 24}
!27 = !{!"long long", !7, i64 0}
!28 = !{!"_ZTS10COutBuffer", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !29, i64 24, !27, i64 32, !6, i64 40, !30, i64 48}
!29 = !{!"_ZTS9CMyComPtrI20ISequentialOutStreamE", !6, i64 0}
!30 = !{!"bool", !7, i64 0}
!31 = !{!"_ZTSN9NCompress11NRangeCoder15CBitTreeEncoderILi5ELi4EEE", !7, i64 0}
!32 = !{!"_ZTSN9NCompress5NLZMA7NLength18CPriceTableEncoderE", !33, i64 0, !7, i64 2056, !10, i64 19464, !7, i64 19468}
!33 = !{!"_ZTSN9NCompress5NLZMA7NLength8CEncoderE", !34, i64 0, !34, i64 4, !7, i64 8, !7, i64 520, !36, i64 1032}
!34 = !{!"_ZTSN9NCompress11NRangeCoder11CBitEncoderILi5EEE", !35, i64 0}
!35 = !{!"_ZTSN9NCompress11NRangeCoder9CBitModelILi5EEE", !10, i64 0}
!36 = !{!"_ZTSN9NCompress11NRangeCoder15CBitTreeEncoderILi5ELi8EEE", !7, i64 0}
!37 = !{!"_ZTSN9NCompress5NLZMA15CLiteralEncoderE", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16}
!38 = !{!16, !30, i64 207440}
!39 = !{!16, !30, i64 207441}
!40 = !{!16, !10, i64 210672}
!41 = !{!16, !10, i64 210632}
!42 = !{!16, !10, i64 210628}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = !{!16, !10, i64 210608}
!46 = !{!16, !10, i64 210612}
!47 = !{!16, !10, i64 210616}
!48 = !{!16, !10, i64 210620}
!49 = !{!16, !10, i64 210624}
!50 = distinct !{!50, !44}


; 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.tagPROPVARIANT = type { i16, i16, i16, i16, %union.anon.9 }
%union.anon.9 = type { %struct.LARGE_INTEGER }
%struct.LARGE_INTEGER = type { i64 }

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN9NCompress5NLZMA8CEncoder18SetCoderPropertiesEPKjPK14tagPROPVARIANTj(ptr noundef nonnull align 8 dereferenceable(210678) %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3) unnamed_addr #1 align 2 {
  %5 = getelementptr inbounds i8, ptr %0, i64 210672
  %.not109110.not = icmp eq i32 %3, 0
  br i1 %.not109110.not, label %.thread106, label %.lr.ph

.lr.ph:                                           ; preds = %4
  %6 = getelementptr inbounds i8, ptr %0, i64 210624
  %7 = getelementptr inbounds i8, ptr %0, i64 210620
  %8 = getelementptr inbounds i8, ptr %0, i64 210612
  %9 = getelementptr inbounds i8, ptr %0, i64 210616
  %10 = getelementptr inbounds i8, ptr %0, i64 210628
  %11 = getelementptr inbounds i8, ptr %0, i64 210608
  %12 = getelementptr inbounds i8, ptr %0, i64 163896
  %13 = getelementptr inbounds i8, ptr %0, i64 210632
  %14 = getelementptr inbounds i8, ptr %0, i64 207440
  %15 = getelementptr inbounds i8, ptr %0, i64 207441
  %16 = getelementptr inbounds i8, ptr %0, i64 207444
  %wide.trip.count = zext i32 %3 to i64
  br label %17

17:                                               ; preds = %.lr.ph, %.thread93
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %.thread93 ]
  %18 = getelementptr inbounds %struct.tagPROPVARIANT, ptr %2, i64 %indvars.iv
  %19 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv
  %20 = load i32, ptr %19, align 4, !tbaa !5
  switch i32 %20, label %.thread106 [
    i32 1104, label %21
    i32 1136, label %27
    i32 1105, label %36
    i32 1024, label %48
    i32 1088, label %61
    i32 1090, label %68
    i32 1089, label %74
    i32 1168, label %80
  ]

21:                                               ; preds = %17
  %22 = load i16, ptr %18, align 8, !tbaa !9
  %.not89 = icmp eq i16 %22, 19
  br i1 %.not89, label %23, label %.thread106

23:                                               ; preds = %21
  %24 = getelementptr inbounds i8, ptr %18, i64 8
  %25 = load i32, ptr %24, align 8, !tbaa !12
  %26 = add i32 %25, -5
  %or.cond = icmp ult i32 %26, 269
  br i1 %or.cond, label %.thread, label %.thread106

.thread:                                          ; preds = %23
  store i32 %25, ptr %16, align 4, !tbaa !13
  br label %.thread93

27:                                               ; preds = %17
  %28 = load i16, ptr %18, align 8, !tbaa !9
  %.not88 = icmp eq i16 %28, 19
  br i1 %.not88, label %29, label %.thread106

29:                                               ; preds = %27
  %30 = getelementptr inbounds i8, ptr %18, i64 8
  %31 = load i32, ptr %30, align 8, !tbaa !12
  %32 = icmp eq i32 %31, 0
  %33 = zext i1 %32 to i8
  store i8 %33, ptr %14, align 8, !tbaa !37
  %34 = icmp ugt i32 %31, 1
  %35 = zext i1 %34 to i8
  store i8 %35, ptr %15, align 1, !tbaa !38
  br label %.thread93

36:                                               ; preds = %17
  %37 = load i16, ptr %18, align 8, !tbaa !9
  %.not85 = icmp eq i16 %37, 8
  br i1 %.not85, label %38, label %.thread106

38:                                               ; preds = %36
  %39 = load i32, ptr %5, align 8, !tbaa !39
  %40 = getelementptr inbounds i8, ptr %18, i64 8
  %41 = load ptr, ptr %40, align 8, !tbaa !12
  %42 = tail call noundef i32 @_ZN9NCompress5NLZMAL15FindMatchFinderEPKw(ptr noundef %41)
  %43 = icmp sgt i32 %42, -1
  br i1 %43, label %44, label %.thread106

44:                                               ; preds = %38
  store i32 %42, ptr %5, align 8, !tbaa !39
  %45 = tail call noundef ptr @_ZNK9CMyComPtrI12IMatchFinderEcvPS0_Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
  %.not86 = icmp eq ptr %45, null
  %46 = load i32, ptr %5, align 8
  %.not87 = icmp eq i32 %39, %46
  %or.cond90 = select i1 %.not86, i1 true, i1 %.not87
  br i1 %or.cond90, label %.thread93, label %47

47:                                               ; preds = %44
  store i32 -1, ptr %13, align 8, !tbaa !40
  tail call void @_ZN9CMyComPtrI12IMatchFinderE7ReleaseEv(ptr noundef nonnull align 8 dereferenceable(8) %12)
  br label %.thread93

48:                                               ; preds = %17
  %49 = load i16, ptr %18, align 8, !tbaa !9
  %.not83 = icmp eq i16 %49, 19
  br i1 %.not83, label %50, label %.thread106

50:                                               ; preds = %48
  %51 = getelementptr inbounds i8, ptr %18, i64 8
  %52 = load i32, ptr %51, align 8, !tbaa !12
  %53 = add i32 %52, -268435457
  %or.cond9 = icmp ult i32 %53, -268435456
  br i1 %or.cond9, label %.thread106, label %54

54:                                               ; preds = %50
  store i32 %52, ptr %10, align 4, !tbaa !41
  br label %55

55:                                               ; preds = %55, %54
  %.073 = phi i32 [ 0, %54 ], [ %58, %55 ]
  %56 = icmp ult i32 %.073, 28
  %57 = shl nuw nsw i32 1, %.073
  %.not84 = icmp ugt i32 %52, %57
  %or.cond91 = select i1 %56, i1 %.not84, i1 false
  %58 = add nuw nsw i32 %.073, 1
  br i1 %or.cond91, label %55, label %59, !llvm.loop !42

59:                                               ; preds = %55
  %60 = shl nuw nsw i32 %.073, 1
  store i32 %60, ptr %11, align 8, !tbaa !44
  br label %.thread93

61:                                               ; preds = %17
  %62 = load i16, ptr %18, align 8, !tbaa !9
  %.not82 = icmp eq i16 %62, 19
  br i1 %.not82, label %63, label %.thread106

63:                                               ; preds = %61
  %64 = getelementptr inbounds i8, ptr %18, i64 8
  %65 = load i32, ptr %64, align 8, !tbaa !12
  %66 = icmp ult i32 %65, 5
  br i1 %66, label %.thread99, label %.thread106

.thread99:                                        ; preds = %63
  store i32 %65, ptr %8, align 4, !tbaa !45
  %notmask = shl nsw i32 -1, %65
  %67 = xor i32 %notmask, -1
  store i32 %67, ptr %9, align 8, !tbaa !46
  br label %.thread93

68:                                               ; preds = %17
  %69 = load i16, ptr %18, align 8, !tbaa !9
  %.not81 = icmp eq i16 %69, 19
  br i1 %.not81, label %70, label %.thread106

70:                                               ; preds = %68
  %71 = getelementptr inbounds i8, ptr %18, i64 8
  %72 = load i32, ptr %71, align 8, !tbaa !12
  %73 = icmp ult i32 %72, 5
  br i1 %73, label %.thread101, label %.thread106

.thread101:                                       ; preds = %70
  store i32 %72, ptr %7, align 4, !tbaa !47
  br label %.thread93

74:                                               ; preds = %17
  %75 = load i16, ptr %18, align 8, !tbaa !9
  %.not80 = icmp eq i16 %75, 19
  br i1 %.not80, label %76, label %.thread106

76:                                               ; preds = %74
  %77 = getelementptr inbounds i8, ptr %18, i64 8
  %78 = load i32, ptr %77, align 8, !tbaa !12
  %79 = icmp ult i32 %78, 9
  br i1 %79, label %.thread103, label %.thread106

.thread103:                                       ; preds = %76
  store i32 %78, ptr %6, align 8, !tbaa !48
  br label %.thread93

80:                                               ; preds = %17
  %81 = load i16, ptr %18, align 8, !tbaa !9
  %.not = icmp eq i16 %81, 11
  br i1 %.not, label %82, label %.thread106

82:                                               ; preds = %80
  %83 = getelementptr inbounds i8, ptr %18, i64 8
  %84 = load i16, ptr %83, align 8, !tbaa !12
  %85 = icmp eq i16 %84, -1
  tail call void @_ZN9NCompress5NLZMA8CEncoder21SetWriteEndMarkerModeEb(ptr noundef nonnull align 8 dereferenceable(210678) %0, i1 noundef zeroext %85)
  br label %.thread93

.thread93:                                        ; preds = %47, %44, %.thread103, %.thread101, %.thread99, %59, %.thread, %82, %29
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.thread106, label %17, !llvm.loop !49

.thread106:                                       ; preds = %.thread93, %21, %27, %36, %61, %68, %74, %80, %17, %23, %38, %63, %70, %76, %48, %50, %4
  %spec.select = phi i32 [ 0, %4 ], [ -2147024809, %50 ], [ -2147024809, %48 ], [ -2147024809, %76 ], [ -2147024809, %70 ], [ -2147024809, %63 ], [ -2147024809, %38 ], [ -2147024809, %23 ], [ -2147024809, %17 ], [ -2147024809, %80 ], [ -2147024809, %74 ], [ -2147024809, %68 ], [ -2147024809, %61 ], [ -2147024809, %36 ], [ -2147024809, %27 ], [ -2147024809, %21 ], [ 0, %.thread93 ]
  ret i32 %spec.select
}

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

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

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

attributes #0 = { 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 #1 = { 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" }

!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, !11, i64 0}
!10 = !{!"_ZTS14tagPROPVARIANT", !11, i64 0, !11, i64 2, !11, i64 4, !11, i64 6, !7, i64 8}
!11 = !{!"short", !7, i64 0}
!12 = !{!7, !7, i64 0}
!13 = !{!14, !6, i64 207444}
!14 = !{!"_ZTSN9NCompress5NLZMA8CEncoderE", !15, i64 0, !17, i64 8, !18, i64 16, !19, i64 24, !20, i64 32, !22, i64 52, !7, i64 56, !23, i64 163896, !25, i64 163904, !7, i64 163984, !7, i64 164752, !7, i64 164800, !7, i64 164848, !7, i64 164896, !7, i64 164944, !7, i64 165712, !7, i64 166736, !30, i64 167192, !31, i64 167256, !31, i64 186788, !36, i64 206320, !7, i64 206344, !29, i64 207440, !29, i64 207441, !6, i64 207444, !6, i64 207448, !6, i64 207452, !6, i64 207456, !6, i64 207460, !29, i64 207464, !7, i64 207468, !7, i64 208492, !7, i64 210540, !6, i64 210604, !6, i64 210608, !6, i64 210612, !6, i64 210616, !6, i64 210620, !6, i64 210624, !6, i64 210628, !6, i64 210632, !6, i64 210636, !26, i64 210640, !26, i64 210648, !29, i64 210656, !24, i64 210664, !6, i64 210672, !29, i64 210676, !29, i64 210677}
!15 = !{!"_ZTS14ICompressCoder", !16, i64 0}
!16 = !{!"_ZTS8IUnknown"}
!17 = !{!"_ZTS21ICompressSetOutStream", !16, i64 0}
!18 = !{!"_ZTS27ICompressSetCoderProperties", !16, i64 0}
!19 = !{!"_ZTS29ICompressWriteCoderProperties", !16, i64 0}
!20 = !{!"_ZTSN9NCompress5NLZMA10CBaseStateE", !21, i64 0, !7, i64 1, !7, i64 4}
!21 = !{!"_ZTSN9NCompress5NLZMA6CStateE", !7, i64 0}
!22 = !{!"_ZTS13CMyUnknownImp", !6, i64 0}
!23 = !{!"_ZTS9CMyComPtrI12IMatchFinderE", !24, i64 0}
!24 = !{!"any pointer", !7, i64 0}
!25 = !{!"_ZTSN9NCompress11NRangeCoder8CEncoderE", !6, i64 0, !7, i64 4, !26, i64 8, !6, i64 16, !27, i64 24}
!26 = !{!"long long", !7, i64 0}
!27 = !{!"_ZTS10COutBuffer", !24, i64 0, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !28, i64 24, !26, i64 32, !24, i64 40, !29, i64 48}
!28 = !{!"_ZTS9CMyComPtrI20ISequentialOutStreamE", !24, i64 0}
!29 = !{!"bool", !7, i64 0}
!30 = !{!"_ZTSN9NCompress11NRangeCoder15CBitTreeEncoderILi5ELi4EEE", !7, i64 0}
!31 = !{!"_ZTSN9NCompress5NLZMA7NLength18CPriceTableEncoderE", !32, i64 0, !7, i64 2056, !6, i64 19464, !7, i64 19468}
!32 = !{!"_ZTSN9NCompress5NLZMA7NLength8CEncoderE", !33, i64 0, !33, i64 4, !7, i64 8, !7, i64 520, !35, i64 1032}
!33 = !{!"_ZTSN9NCompress11NRangeCoder11CBitEncoderILi5EEE", !34, i64 0}
!34 = !{!"_ZTSN9NCompress11NRangeCoder9CBitModelILi5EEE", !6, i64 0}
!35 = !{!"_ZTSN9NCompress11NRangeCoder15CBitTreeEncoderILi5ELi8EEE", !7, i64 0}
!36 = !{!"_ZTSN9NCompress5NLZMA15CLiteralEncoderE", !24, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!37 = !{!14, !29, i64 207440}
!38 = !{!14, !29, i64 207441}
!39 = !{!14, !6, i64 210672}
!40 = !{!14, !6, i64 210632}
!41 = !{!14, !6, i64 210628}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!14, !6, i64 210608}
!45 = !{!14, !6, i64 210612}
!46 = !{!14, !6, i64 210616}
!47 = !{!14, !6, i64 210620}
!48 = !{!14, !6, i64 210624}
!49 = distinct !{!49, !43}


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