; LLVM IR from SSBMTonberry/pocketlzma :: ref_spec/lzma1900/CPP/7zip/Common/FilterCoder.ll (ZN12CFilterCoderC2Eb)

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

%class.CFilterCoder = type { %struct.ICompressCoder, %struct.ICompressSetOutStreamSize, %struct.ICompressInitEncoder, %struct.ICompressSetInStream, %struct.ISequentialInStream, %struct.ICompressSetOutStream, %struct.ISequentialOutStream, %struct.IOutStreamFinish, %struct.ICompressSetBufSize, %struct.ICryptoSetPassword, %struct.ICryptoProperties, %struct.ICompressSetCoderProperties, %struct.ICompressWriteCoderProperties, %struct.ICryptoResetInitVector, %struct.ICompressSetDecoderProperties2, %class.CMyUnknownImp, %struct.CAlignedMidBuffer, i32, i32, i32, i8, i8, i64, i64, %class.CMyComPtr, %class.CMyComPtr.0, i32, i32, i32, %class.CMyComPtr.1, %class.CMyComPtr.2, %class.CMyComPtr.3, %class.CMyComPtr.4, %class.CMyComPtr.5, %class.CMyComPtr.6, %class.CMyComPtr.7 }
%struct.ICompressCoder = type { %struct.IUnknown }
%struct.IUnknown = type { ptr }
%struct.ICompressSetOutStreamSize = type { %struct.IUnknown }
%struct.ICompressInitEncoder = type { %struct.IUnknown }
%struct.ICompressSetInStream = type { %struct.IUnknown }
%struct.ISequentialInStream = type { %struct.IUnknown }
%struct.ICompressSetOutStream = type { %struct.IUnknown }
%struct.ISequentialOutStream = type { %struct.IUnknown }
%struct.IOutStreamFinish = type { %struct.IUnknown }
%struct.ICompressSetBufSize = type { %struct.IUnknown }
%struct.ICryptoSetPassword = type { %struct.IUnknown }
%struct.ICryptoProperties = type { %struct.IUnknown }
%struct.ICompressSetCoderProperties = type { %struct.IUnknown }
%struct.ICompressWriteCoderProperties = type { %struct.IUnknown }
%struct.ICryptoResetInitVector = type { %struct.IUnknown }
%struct.ICompressSetDecoderProperties2 = type { %struct.IUnknown }
%class.CMyUnknownImp = type { i32 }
%struct.CAlignedMidBuffer = type { ptr }
%class.CMyComPtr = type { ptr }
%class.CMyComPtr.0 = type { ptr }
%class.CMyComPtr.1 = type { ptr }
%class.CMyComPtr.2 = type { ptr }
%class.CMyComPtr.3 = type { ptr }
%class.CMyComPtr.4 = type { ptr }
%class.CMyComPtr.5 = type { ptr }
%class.CMyComPtr.6 = type { ptr }
%class.CMyComPtr.7 = type { ptr }

@_ZTV12CFilterCoder = external dso_local unnamed_addr constant { [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, align 8

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN12CFilterCoderC2Eb(ptr noundef nonnull align 8 dereferenceable(256) %0, i1 noundef zeroext %1) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca i8, align 1
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %7 = zext i1 %1 to i8
  store i8 %7, ptr %4, align 1, !tbaa !9
  %8 = load ptr, ptr %3, align 8
  call void @_ZN14ICompressCoderC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #3
  %9 = getelementptr inbounds i8, ptr %8, i64 8
  call void @_ZN25ICompressSetOutStreamSizeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #3
  %10 = getelementptr inbounds i8, ptr %8, i64 16
  call void @_ZN20ICompressInitEncoderC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #3
  %11 = getelementptr inbounds i8, ptr %8, i64 24
  call void @_ZN20ICompressSetInStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #3
  %12 = getelementptr inbounds i8, ptr %8, i64 32
  call void @_ZN19ISequentialInStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #3
  %13 = getelementptr inbounds i8, ptr %8, i64 40
  call void @_ZN21ICompressSetOutStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #3
  %14 = getelementptr inbounds i8, ptr %8, i64 48
  call void @_ZN20ISequentialOutStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #3
  %15 = getelementptr inbounds i8, ptr %8, i64 56
  call void @_ZN16IOutStreamFinishC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #3
  %16 = getelementptr inbounds i8, ptr %8, i64 64
  call void @_ZN19ICompressSetBufSizeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #3
  %17 = getelementptr inbounds i8, ptr %8, i64 72
  call void @_ZN18ICryptoSetPasswordC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #3
  %18 = getelementptr inbounds i8, ptr %8, i64 80
  call void @_ZN17ICryptoPropertiesC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #3
  %19 = getelementptr inbounds i8, ptr %8, i64 88
  call void @_ZN27ICompressSetCoderPropertiesC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #3
  %20 = getelementptr inbounds i8, ptr %8, i64 96
  call void @_ZN29ICompressWriteCoderPropertiesC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #3
  %21 = getelementptr inbounds i8, ptr %8, i64 104
  call void @_ZN22ICryptoResetInitVectorC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #3
  %22 = getelementptr inbounds i8, ptr %8, i64 112
  call void @_ZN30ICompressSetDecoderProperties2C2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #3
  %23 = getelementptr inbounds i8, ptr %8, i64 120
  invoke void @_ZN13CMyUnknownImpC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %24 unwind label %69

24:                                               ; preds = %2
  %25 = getelementptr inbounds i8, ptr %8, i64 128
  invoke void @_ZN17CAlignedMidBufferC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %26 unwind label %73

26:                                               ; preds = %24
  store ptr getelementptr inbounds inrange(-16, 192) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 0, i32 2), ptr %8, align 8, !tbaa !11
  %27 = getelementptr inbounds i8, ptr %8, i64 8
  store ptr getelementptr inbounds inrange(-16, 48) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 1, i32 2), ptr %27, align 8, !tbaa !11
  %28 = getelementptr inbounds i8, ptr %8, i64 16
  store ptr getelementptr inbounds inrange(-16, 48) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 2, i32 2), ptr %28, align 8, !tbaa !11
  %29 = getelementptr inbounds i8, ptr %8, i64 24
  store ptr getelementptr inbounds inrange(-16, 56) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 3, i32 2), ptr %29, align 8, !tbaa !11
  %30 = getelementptr inbounds i8, ptr %8, i64 32
  store ptr getelementptr inbounds inrange(-16, 48) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 4, i32 2), ptr %30, align 8, !tbaa !11
  %31 = getelementptr inbounds i8, ptr %8, i64 40
  store ptr getelementptr inbounds inrange(-16, 56) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 5, i32 2), ptr %31, align 8, !tbaa !11
  %32 = getelementptr inbounds i8, ptr %8, i64 48
  store ptr getelementptr inbounds inrange(-16, 48) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 6, i32 2), ptr %32, align 8, !tbaa !11
  %33 = getelementptr inbounds i8, ptr %8, i64 56
  store ptr getelementptr inbounds inrange(-16, 48) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 7, i32 2), ptr %33, align 8, !tbaa !11
  %34 = getelementptr inbounds i8, ptr %8, i64 64
  store ptr getelementptr inbounds inrange(-16, 56) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 8, i32 2), ptr %34, align 8, !tbaa !11
  %35 = getelementptr inbounds i8, ptr %8, i64 72
  store ptr getelementptr inbounds inrange(-16, 48) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 9, i32 2), ptr %35, align 8, !tbaa !11
  %36 = getelementptr inbounds i8, ptr %8, i64 80
  store ptr getelementptr inbounds inrange(-16, 56) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 10, i32 2), ptr %36, align 8, !tbaa !11
  %37 = getelementptr inbounds i8, ptr %8, i64 88
  store ptr getelementptr inbounds inrange(-16, 48) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 11, i32 2), ptr %37, align 8, !tbaa !11
  %38 = getelementptr inbounds i8, ptr %8, i64 96
  store ptr getelementptr inbounds inrange(-16, 48) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 12, i32 2), ptr %38, align 8, !tbaa !11
  %39 = getelementptr inbounds i8, ptr %8, i64 104
  store ptr getelementptr inbounds inrange(-16, 48) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 13, i32 2), ptr %39, align 8, !tbaa !11
  %40 = getelementptr inbounds i8, ptr %8, i64 112
  store ptr getelementptr inbounds inrange(-16, 48) ({ [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, ptr @_ZTV12CFilterCoder, i32 0, i32 14, i32 2), ptr %40, align 8, !tbaa !11
  %41 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 17
  store i32 0, ptr %41, align 8, !tbaa !13
  %42 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 18
  store i32 1048576, ptr %42, align 4, !tbaa !44
  %43 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 19
  store i32 1048576, ptr %43, align 8, !tbaa !45
  %44 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 20
  %45 = load i8, ptr %4, align 1, !tbaa !9, !range !46, !noundef !47
  %46 = trunc i8 %45 to i1
  %47 = zext i1 %46 to i8
  store i8 %47, ptr %44, align 4, !tbaa !48
  %48 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 21
  store i8 0, ptr %48, align 1, !tbaa !49
  %49 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 22
  store i64 0, ptr %49, align 8, !tbaa !50
  %50 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 23
  store i64 0, ptr %50, align 8, !tbaa !51
  %51 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 24
  invoke void @_ZN9CMyComPtrI19ISequentialInStreamEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %52 unwind label %77

52:                                               ; preds = %26
  %53 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 25
  invoke void @_ZN9CMyComPtrI20ISequentialOutStreamEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %54 unwind label %81

54:                                               ; preds = %52
  %55 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 29
  invoke void @_ZN9CMyComPtrI18ICryptoSetPasswordEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %56 unwind label %85

56:                                               ; preds = %54
  %57 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 30
  invoke void @_ZN9CMyComPtrI17ICryptoPropertiesEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %58 unwind label %89

58:                                               ; preds = %56
  %59 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 31
  invoke void @_ZN9CMyComPtrI27ICompressSetCoderPropertiesEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %60 unwind label %93

60:                                               ; preds = %58
  %61 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 32
  invoke void @_ZN9CMyComPtrI29ICompressWriteCoderPropertiesEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %62 unwind label %97

62:                                               ; preds = %60
  %63 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 33
  invoke void @_ZN9CMyComPtrI22ICryptoResetInitVectorEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %64 unwind label %101

64:                                               ; preds = %62
  %65 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 34
  invoke void @_ZN9CMyComPtrI30ICompressSetDecoderProperties2EC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %66 unwind label %105

66:                                               ; preds = %64
  %67 = getelementptr inbounds %class.CFilterCoder, ptr %8, i32 0, i32 35
  invoke void @_ZN9CMyComPtrI15ICompressFilterEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %68 unwind label %109

68:                                               ; preds = %66
  ret void

69:                                               ; preds = %2
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %5, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %6, align 4
  br label %124

73:                                               ; preds = %24
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %5, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %6, align 4
  br label %122

77:                                               ; preds = %26
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %5, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %6, align 4
  br label %120

81:                                               ; preds = %52
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %5, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %6, align 4
  br label %119

85:                                               ; preds = %54
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %5, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %6, align 4
  br label %118

89:                                               ; preds = %56
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %5, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %6, align 4
  br label %117

93:                                               ; preds = %58
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %5, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %6, align 4
  br label %116

97:                                               ; preds = %60
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %5, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %6, align 4
  br label %115

101:                                              ; preds = %62
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %5, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %6, align 4
  br label %114

105:                                              ; preds = %64
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %5, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %6, align 4
  br label %113

109:                                              ; preds = %66
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %5, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %6, align 4
  call void @_ZN9CMyComPtrI30ICompressSetDecoderProperties2ED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #3
  br label %113

113:                                              ; preds = %109, %105
  call void @_ZN9CMyComPtrI22ICryptoResetInitVectorED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #3
  br label %114

114:                                              ; preds = %113, %101
  call void @_ZN9CMyComPtrI29ICompressWriteCoderPropertiesED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #3
  br label %115

115:                                              ; preds = %114, %97
  call void @_ZN9CMyComPtrI27ICompressSetCoderPropertiesED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #3
  br label %116

116:                                              ; preds = %115, %93
  call void @_ZN9CMyComPtrI17ICryptoPropertiesED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #3
  br label %117

117:                                              ; preds = %116, %89
  call void @_ZN9CMyComPtrI18ICryptoSetPasswordED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #3
  br label %118

118:                                              ; preds = %117, %85
  call void @_ZN9CMyComPtrI20ISequentialOutStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #3
  br label %119

119:                                              ; preds = %118, %81
  call void @_ZN9CMyComPtrI19ISequentialInStreamED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #3
  br label %120

120:                                              ; preds = %119, %77
  %121 = getelementptr inbounds i8, ptr %8, i64 128
  call void @_ZN17CAlignedMidBufferD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #3
  br label %122

122:                                              ; preds = %120, %73
  %123 = getelementptr inbounds i8, ptr %8, i64 120
  call void @_ZN13CMyUnknownImpD2Ev(ptr noundef nonnull align 4 dereferenceable(4) %123) #3
  br label %124

124:                                              ; preds = %122, %69
  %125 = getelementptr inbounds i8, ptr %8, i64 112
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #3
  %126 = getelementptr inbounds i8, ptr %8, i64 104
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #3
  %127 = getelementptr inbounds i8, ptr %8, i64 96
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #3
  %128 = getelementptr inbounds i8, ptr %8, i64 88
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #3
  %129 = getelementptr inbounds i8, ptr %8, i64 80
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #3
  %130 = getelementptr inbounds i8, ptr %8, i64 72
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #3
  %131 = getelementptr inbounds i8, ptr %8, i64 64
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %131) #3
  %132 = getelementptr inbounds i8, ptr %8, i64 56
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #3
  %133 = getelementptr inbounds i8, ptr %8, i64 48
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #3
  %134 = getelementptr inbounds i8, ptr %8, i64 40
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #3
  %135 = getelementptr inbounds i8, ptr %8, i64 32
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %135) #3
  %136 = getelementptr inbounds i8, ptr %8, i64 24
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #3
  %137 = getelementptr inbounds i8, ptr %8, i64 16
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #3
  %138 = getelementptr inbounds i8, ptr %8, i64 8
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #3
  call void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #3
  br label %139

139:                                              ; preds = %124
  %140 = load ptr, ptr %5, align 8
  %141 = load i32, ptr %6, align 4
  %142 = insertvalue { ptr, i32 } poison, ptr %140, 0
  %143 = insertvalue { ptr, i32 } %142, i32 %141, 1
  resume { ptr, i32 } %143
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8IUnknownD2Ev(ptr noundef nonnull align 8 dereferenceable(8)) 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" }
attributes #2 = { 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 #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 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !32, i64 136}
!14 = !{!"_ZTS12CFilterCoder", !15, i64 0, !17, i64 8, !18, i64 16, !19, i64 24, !20, i64 32, !21, i64 40, !22, i64 48, !23, i64 56, !24, i64 64, !25, i64 72, !26, i64 80, !27, i64 88, !28, i64 96, !29, i64 104, !30, i64 112, !31, i64 120, !33, i64 128, !32, i64 136, !32, i64 140, !32, i64 144, !10, i64 148, !10, i64 149, !34, i64 152, !34, i64 160, !35, i64 168, !36, i64 176, !32, i64 184, !32, i64 188, !32, i64 192, !37, i64 200, !38, i64 208, !39, i64 216, !40, i64 224, !41, i64 232, !42, i64 240, !43, i64 248}
!15 = !{!"_ZTS14ICompressCoder", !16, i64 0}
!16 = !{!"_ZTS8IUnknown"}
!17 = !{!"_ZTS25ICompressSetOutStreamSize", !16, i64 0}
!18 = !{!"_ZTS20ICompressInitEncoder", !16, i64 0}
!19 = !{!"_ZTS20ICompressSetInStream", !16, i64 0}
!20 = !{!"_ZTS19ISequentialInStream", !16, i64 0}
!21 = !{!"_ZTS21ICompressSetOutStream", !16, i64 0}
!22 = !{!"_ZTS20ISequentialOutStream", !16, i64 0}
!23 = !{!"_ZTS16IOutStreamFinish", !16, i64 0}
!24 = !{!"_ZTS19ICompressSetBufSize", !16, i64 0}
!25 = !{!"_ZTS18ICryptoSetPassword", !16, i64 0}
!26 = !{!"_ZTS17ICryptoProperties", !16, i64 0}
!27 = !{!"_ZTS27ICompressSetCoderProperties", !16, i64 0}
!28 = !{!"_ZTS29ICompressWriteCoderProperties", !16, i64 0}
!29 = !{!"_ZTS22ICryptoResetInitVector", !16, i64 0}
!30 = !{!"_ZTS30ICompressSetDecoderProperties2", !16, i64 0}
!31 = !{!"_ZTS13CMyUnknownImp", !32, i64 0}
!32 = !{!"int", !7, i64 0}
!33 = !{!"_ZTS17CAlignedMidBuffer", !6, i64 0}
!34 = !{!"long long", !7, i64 0}
!35 = !{!"_ZTS9CMyComPtrI19ISequentialInStreamE", !6, i64 0}
!36 = !{!"_ZTS9CMyComPtrI20ISequentialOutStreamE", !6, i64 0}
!37 = !{!"_ZTS9CMyComPtrI18ICryptoSetPasswordE", !6, i64 0}
!38 = !{!"_ZTS9CMyComPtrI17ICryptoPropertiesE", !6, i64 0}
!39 = !{!"_ZTS9CMyComPtrI27ICompressSetCoderPropertiesE", !6, i64 0}
!40 = !{!"_ZTS9CMyComPtrI29ICompressWriteCoderPropertiesE", !6, i64 0}
!41 = !{!"_ZTS9CMyComPtrI22ICryptoResetInitVectorE", !6, i64 0}
!42 = !{!"_ZTS9CMyComPtrI30ICompressSetDecoderProperties2E", !6, i64 0}
!43 = !{!"_ZTS9CMyComPtrI15ICompressFilterE", !6, i64 0}
!44 = !{!14, !32, i64 140}
!45 = !{!14, !32, i64 144}
!46 = !{i8 0, i8 2}
!47 = !{}
!48 = !{!14, !10, i64 148}
!49 = !{!14, !10, i64 149}
!50 = !{!14, !34, i64 152}
!51 = !{!14, !34, i64 160}


; 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"

@_ZTV12CFilterCoder = external dso_local unnamed_addr constant { [26 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [9 x ptr], [8 x ptr], [8 x ptr], [8 x ptr], [8 x ptr] }, align 8

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN12CFilterCoderC2Eb(ptr noundef nonnull align 8 dereferenceable(256) %0, i1 noundef zeroext %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = zext i1 %1 to i8
  tail call void @_ZN14ICompressCoderC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #3
  %4 = getelementptr inbounds i8, ptr %0, i64 8
  tail call void @_ZN25ICompressSetOutStreamSizeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #3
  %5 = getelementptr inbounds i8, ptr %0, i64 16
  tail call void @_ZN20ICompressInitEncoderC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
  %6 = getelementptr inbounds i8, ptr %0, i64 24
  tail call void @_ZN20ICompressSetInStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #3
  %7 = getelementptr inbounds i8, ptr %0, i64 32
  tail call void @_ZN19ISequentialInStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #3
  %8 = getelementptr inbounds i8, ptr %0, i64 40
  tail call void @_ZN21ICompressSetOutStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #3
  %9 = getelementptr inbounds i8, ptr %0, i64 48
  tail call void @_ZN20ISequentialOutStreamC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #3
  %10 = getelementptr inbounds i8, ptr %0, i64 56
  tail call void @_ZN16IOutStreamFinishC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #3
  %11 = getelementptr inbounds i8, ptr %0, i64 64
  tail call void @_ZN19ICompressSetBufSizeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #3
  %12 = getelementptr inbounds i8, ptr %0, i64 72
  tail call void @_ZN18ICryptoSetPasswordC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #3
  %13 = getelementptr inbounds i8, ptr %0, i64 80
  tail call void @_ZN17ICryptoPropertiesC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #3
  %14 = getelementptr inbounds i8, ptr %0, i64 88
  tail call void @_ZN27ICompressSetCoderPropertiesC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #3
  %15 = getelementptr inbounds i8, ptr %0, i64 96
  tail call void @_ZN29ICompressWriteCoderPropertiesC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #3
  %16 = getelementptr inbounds i8, ptr %0, i64 104
  tail call void @_ZN22ICryptoResetInitVectorC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #3
  %17 = getelementptr inbounds i8, ptr %0, i64 112
  tail call void @_ZN30ICompressSetDecoderProperties2C2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #3
  %18 = getelementptr inbounds i8, ptr %0, i64 120
  tail call void @_ZN13CMyUnknownImpC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %18)
  %19 = getelementptr inbounds i8, ptr %0, i64 128
  tail call void @_ZN17CAlignedMidBufferC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
  store ptr getelementptr inbounds inrange(-16, 192) (i8, ptr @_ZTV12CFilterCoder, i64 16), ptr %0, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 48) (i8, ptr @_ZTV12CFilterCoder, i64 224), ptr %4, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 48) (i8, ptr @_ZTV12CFilterCoder, i64 288), ptr %5, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 56) (i8, ptr @_ZTV12CFilterCoder, i64 352), ptr %6, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 48) (i8, ptr @_ZTV12CFilterCoder, i64 424), ptr %7, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 56) (i8, ptr @_ZTV12CFilterCoder, i64 488), ptr %8, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 48) (i8, ptr @_ZTV12CFilterCoder, i64 560), ptr %9, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 48) (i8, ptr @_ZTV12CFilterCoder, i64 624), ptr %10, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 56) (i8, ptr @_ZTV12CFilterCoder, i64 688), ptr %11, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 48) (i8, ptr @_ZTV12CFilterCoder, i64 760), ptr %12, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 56) (i8, ptr @_ZTV12CFilterCoder, i64 824), ptr %13, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 48) (i8, ptr @_ZTV12CFilterCoder, i64 896), ptr %14, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 48) (i8, ptr @_ZTV12CFilterCoder, i64 960), ptr %15, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 48) (i8, ptr @_ZTV12CFilterCoder, i64 1024), ptr %16, align 8, !tbaa !5
  store ptr getelementptr inbounds inrange(-16, 48) (i8, ptr @_ZTV12CFilterCoder, i64 1088), ptr %17, align 8, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %0, i64 136
  store i32 0, ptr %20, align 8, !tbaa !8
  %21 = getelementptr inbounds i8, ptr %0, i64 140
  store i32 1048576, ptr %21, align 4, !tbaa !42
  %22 = getelementptr inbounds i8, ptr %0, i64 144
  store i32 1048576, ptr %22, align 8, !tbaa !43
  %23 = getelementptr inbounds i8, ptr %0, i64 148
  store i8 %3, ptr %23, align 4, !tbaa !44
  %24 = getelementptr inbounds i8, ptr %0, i64 149
  store i8 0, ptr %24, align 1, !tbaa !45
  %25 = getelementptr inbounds i8, ptr %0, i64 152
  %26 = getelementptr inbounds i8, ptr %0, i64 168
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %25, i8 0, i64 16, i1 false)
  tail call void @_ZN9CMyComPtrI19ISequentialInStreamEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
  %27 = getelementptr inbounds i8, ptr %0, i64 176
  tail call void @_ZN9CMyComPtrI20ISequentialOutStreamEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
  %28 = getelementptr inbounds i8, ptr %0, i64 200
  tail call void @_ZN9CMyComPtrI18ICryptoSetPasswordEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %29 = getelementptr inbounds i8, ptr %0, i64 208
  tail call void @_ZN9CMyComPtrI17ICryptoPropertiesEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
  %30 = getelementptr inbounds i8, ptr %0, i64 216
  tail call void @_ZN9CMyComPtrI27ICompressSetCoderPropertiesEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
  %31 = getelementptr inbounds i8, ptr %0, i64 224
  tail call void @_ZN9CMyComPtrI29ICompressWriteCoderPropertiesEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
  %32 = getelementptr inbounds i8, ptr %0, i64 232
  tail call void @_ZN9CMyComPtrI22ICryptoResetInitVectorEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32)
  %33 = getelementptr inbounds i8, ptr %0, i64 240
  tail call void @_ZN9CMyComPtrI30ICompressSetDecoderProperties2EC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
  %34 = getelementptr inbounds i8, ptr %0, i64 248
  tail call void @_ZN9CMyComPtrI15ICompressFilterEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 = { 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 #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !27, i64 136}
!9 = !{!"_ZTS12CFilterCoder", !10, i64 0, !12, i64 8, !13, i64 16, !14, i64 24, !15, i64 32, !16, i64 40, !17, i64 48, !18, i64 56, !19, i64 64, !20, i64 72, !21, i64 80, !22, i64 88, !23, i64 96, !24, i64 104, !25, i64 112, !26, i64 120, !29, i64 128, !27, i64 136, !27, i64 140, !27, i64 144, !31, i64 148, !31, i64 149, !32, i64 152, !32, i64 160, !33, i64 168, !34, i64 176, !27, i64 184, !27, i64 188, !27, i64 192, !35, i64 200, !36, i64 208, !37, i64 216, !38, i64 224, !39, i64 232, !40, i64 240, !41, i64 248}
!10 = !{!"_ZTS14ICompressCoder", !11, i64 0}
!11 = !{!"_ZTS8IUnknown"}
!12 = !{!"_ZTS25ICompressSetOutStreamSize", !11, i64 0}
!13 = !{!"_ZTS20ICompressInitEncoder", !11, i64 0}
!14 = !{!"_ZTS20ICompressSetInStream", !11, i64 0}
!15 = !{!"_ZTS19ISequentialInStream", !11, i64 0}
!16 = !{!"_ZTS21ICompressSetOutStream", !11, i64 0}
!17 = !{!"_ZTS20ISequentialOutStream", !11, i64 0}
!18 = !{!"_ZTS16IOutStreamFinish", !11, i64 0}
!19 = !{!"_ZTS19ICompressSetBufSize", !11, i64 0}
!20 = !{!"_ZTS18ICryptoSetPassword", !11, i64 0}
!21 = !{!"_ZTS17ICryptoProperties", !11, i64 0}
!22 = !{!"_ZTS27ICompressSetCoderProperties", !11, i64 0}
!23 = !{!"_ZTS29ICompressWriteCoderProperties", !11, i64 0}
!24 = !{!"_ZTS22ICryptoResetInitVector", !11, i64 0}
!25 = !{!"_ZTS30ICompressSetDecoderProperties2", !11, i64 0}
!26 = !{!"_ZTS13CMyUnknownImp", !27, i64 0}
!27 = !{!"int", !28, i64 0}
!28 = !{!"omnipotent char", !7, i64 0}
!29 = !{!"_ZTS17CAlignedMidBuffer", !30, i64 0}
!30 = !{!"any pointer", !28, i64 0}
!31 = !{!"bool", !28, i64 0}
!32 = !{!"long long", !28, i64 0}
!33 = !{!"_ZTS9CMyComPtrI19ISequentialInStreamE", !30, i64 0}
!34 = !{!"_ZTS9CMyComPtrI20ISequentialOutStreamE", !30, i64 0}
!35 = !{!"_ZTS9CMyComPtrI18ICryptoSetPasswordE", !30, i64 0}
!36 = !{!"_ZTS9CMyComPtrI17ICryptoPropertiesE", !30, i64 0}
!37 = !{!"_ZTS9CMyComPtrI27ICompressSetCoderPropertiesE", !30, i64 0}
!38 = !{!"_ZTS9CMyComPtrI29ICompressWriteCoderPropertiesE", !30, i64 0}
!39 = !{!"_ZTS9CMyComPtrI22ICryptoResetInitVectorE", !30, i64 0}
!40 = !{!"_ZTS9CMyComPtrI30ICompressSetDecoderProperties2E", !30, i64 0}
!41 = !{!"_ZTS9CMyComPtrI15ICompressFilterE", !30, i64 0}
!42 = !{!9, !27, i64 140}
!43 = !{!9, !27, i64 144}
!44 = !{!9, !31, i64 148}
!45 = !{!9, !31, i64 149}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InstCombinePass,MemCpyOptPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass