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

; 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.NCompress::NLZMA::CDecoder" = type <{ %struct.ICompressCoder, %struct.ICompressSetDecoderProperties2, %class.CMyUnknownImp, [4 x i8], %class.CLZOutWindow, %"class.NCompress::NRangeCoder::CDecoder", [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], [12 x %"class.NCompress::NRangeCoder::CBitDecoder"], [12 x %"class.NCompress::NRangeCoder::CBitDecoder"], [12 x %"class.NCompress::NRangeCoder::CBitDecoder"], [12 x %"class.NCompress::NRangeCoder::CBitDecoder"], [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], [4 x %"class.NCompress::NRangeCoder::CBitTreeDecoder"], [114 x %"class.NCompress::NRangeCoder::CBitDecoder"], %"class.NCompress::NRangeCoder::CBitTreeDecoder.1", %"class.NCompress::NLZMA::NLength::CDecoder", %"class.NCompress::NLZMA::NLength::CDecoder", %"class.NCompress::NLZMA::CLiteralDecoder", i32, [4 x i32], %"class.NCompress::NLZMA::CState", [3 x i8], i32, [4 x i8], i64, i8, [7 x i8] }>
%struct.ICompressCoder = type { %struct.IUnknown }
%struct.IUnknown = type { ptr }
%struct.ICompressSetDecoderProperties2 = type { %struct.IUnknown }
%class.CMyUnknownImp = type { i32 }
%class.CLZOutWindow = type { %class.COutBuffer.base, [7 x i8] }
%class.COutBuffer.base = type <{ ptr, i32, i32, i32, i32, %class.CMyComPtr, i64, ptr, i8 }>
%class.CMyComPtr = type { ptr }
%"class.NCompress::NRangeCoder::CDecoder" = type { %class.CInBuffer, i32, i32 }
%class.CInBuffer = type <{ ptr, ptr, ptr, %class.CMyComPtr.0, i64, i32, i8, [3 x i8] }>
%class.CMyComPtr.0 = type { ptr }
%"class.NCompress::NRangeCoder::CBitDecoder" = type { %"class.NCompress::NRangeCoder::CBitModel" }
%"class.NCompress::NRangeCoder::CBitModel" = type { i32 }
%"class.NCompress::NRangeCoder::CBitTreeDecoder" = type { [64 x %"class.NCompress::NRangeCoder::CBitDecoder"] }
%"class.NCompress::NRangeCoder::CBitTreeDecoder.1" = type { [16 x %"class.NCompress::NRangeCoder::CBitDecoder"] }
%"class.NCompress::NLZMA::NLength::CDecoder" = type { %"class.NCompress::NRangeCoder::CBitDecoder", %"class.NCompress::NRangeCoder::CBitDecoder", [16 x %"class.NCompress::NRangeCoder::CBitTreeDecoder.2"], [16 x %"class.NCompress::NRangeCoder::CBitTreeDecoder.2"], %"class.NCompress::NRangeCoder::CBitTreeDecoder.3" }
%"class.NCompress::NRangeCoder::CBitTreeDecoder.2" = type { [8 x %"class.NCompress::NRangeCoder::CBitDecoder"] }
%"class.NCompress::NRangeCoder::CBitTreeDecoder.3" = type { [256 x %"class.NCompress::NRangeCoder::CBitDecoder"] }
%"class.NCompress::NLZMA::CLiteralDecoder" = type <{ ptr, i32, i32, i32, [4 x i8] }>
%"class.NCompress::NLZMA::CState" = type { i8 }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9NCompress5NLZMA8CDecoder4InitEv(ptr noundef nonnull align 8 dereferenceable(7585) %0) #0 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %8 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #3
  store i32 0, ptr %3, align 4, !tbaa !9
  br label %9

9:                                                ; preds = %55, %1
  %10 = load i32, ptr %3, align 4, !tbaa !9
  %11 = icmp slt i32 %10, 12
  br i1 %11, label %13, label %12

12:                                               ; preds = %9
  store i32 2, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #3
  br label %58

13:                                               ; preds = %9
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #3
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %14

14:                                               ; preds = %35, %13
  %15 = load i32, ptr %5, align 4, !tbaa !9
  %16 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 18
  %17 = load i32, ptr %16, align 8, !tbaa !11
  %18 = icmp ule i32 %15, %17
  br i1 %18, label %20, label %19

19:                                               ; preds = %14
  store i32 5, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  br label %38

20:                                               ; preds = %14
  %21 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 6
  %22 = load i32, ptr %3, align 4, !tbaa !9
  %23 = sext i32 %22 to i64
  %24 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %21, i64 0, i64 %23
  %25 = load i32, ptr %5, align 4, !tbaa !9
  %26 = zext i32 %25 to i64
  %27 = getelementptr inbounds [16 x %"class.NCompress::NRangeCoder::CBitDecoder"], ptr %24, i64 0, i64 %26
  call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %27)
  %28 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 11
  %29 = load i32, ptr %3, align 4, !tbaa !9
  %30 = sext i32 %29 to i64
  %31 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %28, i64 0, i64 %30
  %32 = load i32, ptr %5, align 4, !tbaa !9
  %33 = zext i32 %32 to i64
  %34 = getelementptr inbounds [16 x %"class.NCompress::NRangeCoder::CBitDecoder"], ptr %31, i64 0, i64 %33
  call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %34)
  br label %35

35:                                               ; preds = %20
  %36 = load i32, ptr %5, align 4, !tbaa !9
  %37 = add i32 %36, 1
  store i32 %37, ptr %5, align 4, !tbaa !9
  br label %14, !llvm.loop !32

38:                                               ; preds = %19
  %39 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 7
  %40 = load i32, ptr %3, align 4, !tbaa !9
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds [12 x %"class.NCompress::NRangeCoder::CBitDecoder"], ptr %39, i64 0, i64 %41
  call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %42)
  %43 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 8
  %44 = load i32, ptr %3, align 4, !tbaa !9
  %45 = sext i32 %44 to i64
  %46 = getelementptr inbounds [12 x %"class.NCompress::NRangeCoder::CBitDecoder"], ptr %43, i64 0, i64 %45
  call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %46)
  %47 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 9
  %48 = load i32, ptr %3, align 4, !tbaa !9
  %49 = sext i32 %48 to i64
  %50 = getelementptr inbounds [12 x %"class.NCompress::NRangeCoder::CBitDecoder"], ptr %47, i64 0, i64 %49
  call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %50)
  %51 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 10
  %52 = load i32, ptr %3, align 4, !tbaa !9
  %53 = sext i32 %52 to i64
  %54 = getelementptr inbounds [12 x %"class.NCompress::NRangeCoder::CBitDecoder"], ptr %51, i64 0, i64 %53
  call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  br label %55

55:                                               ; preds = %38
  %56 = load i32, ptr %3, align 4, !tbaa !9
  %57 = add nsw i32 %56, 1
  store i32 %57, ptr %3, align 4, !tbaa !9
  br label %9, !llvm.loop !34

58:                                               ; preds = %12
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  store i32 0, ptr %6, align 4, !tbaa !9
  br label %59

59:                                               ; preds = %68, %58
  %60 = load i32, ptr %6, align 4, !tbaa !9
  %61 = icmp ult i32 %60, 4
  br i1 %61, label %63, label %62

62:                                               ; preds = %59
  store i32 8, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  br label %71

63:                                               ; preds = %59
  %64 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 12
  %65 = load i32, ptr %6, align 4, !tbaa !9
  %66 = zext i32 %65 to i64
  %67 = getelementptr inbounds [4 x %"class.NCompress::NRangeCoder::CBitTreeDecoder"], ptr %64, i64 0, i64 %66
  call void @_ZN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi6EE4InitEv(ptr noundef nonnull align 4 dereferenceable(256) %67)
  br label %68

68:                                               ; preds = %63
  %69 = load i32, ptr %6, align 4, !tbaa !9
  %70 = add i32 %69, 1
  store i32 %70, ptr %6, align 4, !tbaa !9
  br label %59, !llvm.loop !35

71:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %72

72:                                               ; preds = %81, %71
  %73 = load i32, ptr %7, align 4, !tbaa !9
  %74 = icmp ult i32 %73, 114
  br i1 %74, label %76, label %75

75:                                               ; preds = %72
  store i32 11, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  br label %84

76:                                               ; preds = %72
  %77 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 13
  %78 = load i32, ptr %7, align 4, !tbaa !9
  %79 = zext i32 %78 to i64
  %80 = getelementptr inbounds [114 x %"class.NCompress::NRangeCoder::CBitDecoder"], ptr %77, i64 0, i64 %79
  call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %80)
  br label %81

81:                                               ; preds = %76
  %82 = load i32, ptr %7, align 4, !tbaa !9
  %83 = add i32 %82, 1
  store i32 %83, ptr %7, align 4, !tbaa !9
  br label %72, !llvm.loop !36

84:                                               ; preds = %75
  %85 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 14
  call void @_ZN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi4EE4InitEv(ptr noundef nonnull align 4 dereferenceable(64) %85)
  %86 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 15
  %87 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 18
  %88 = load i32, ptr %87, align 8, !tbaa !11
  %89 = add i32 %88, 1
  call void @_ZN9NCompress5NLZMA7NLength8CDecoder4InitEj(ptr noundef nonnull align 4 dereferenceable(2056) %86, i32 noundef %89)
  %90 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 16
  %91 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 18
  %92 = load i32, ptr %91, align 8, !tbaa !11
  %93 = add i32 %92, 1
  call void @_ZN9NCompress5NLZMA7NLength8CDecoder4InitEj(ptr noundef nonnull align 4 dereferenceable(2056) %90, i32 noundef %93)
  %94 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 17
  call void @_ZN9NCompress5NLZMA15CLiteralDecoder4InitEv(ptr noundef nonnull align 8 dereferenceable(20) %94)
  %95 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 20
  call void @_ZN9NCompress5NLZMA6CState4InitEv(ptr noundef nonnull align 1 dereferenceable(1) %95)
  %96 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 19
  %97 = getelementptr inbounds [4 x i32], ptr %96, i64 0, i64 3
  store i32 0, ptr %97, align 4, !tbaa !9
  %98 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 19
  %99 = getelementptr inbounds [4 x i32], ptr %98, i64 0, i64 2
  store i32 0, ptr %99, align 4, !tbaa !9
  %100 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 19
  %101 = getelementptr inbounds [4 x i32], ptr %100, i64 0, i64 1
  store i32 0, ptr %101, align 4, !tbaa !9
  %102 = getelementptr inbounds %"class.NCompress::NLZMA::CDecoder", ptr %8, i32 0, i32 19
  %103 = getelementptr inbounds [4 x i32], ptr %102, i64 0, i64 0
  store i32 0, ptr %103, align 4, !tbaa !9
  ret void
}

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NCompress5NLZMA7NLength8CDecoder4InitEj(ptr noundef nonnull align 4 dereferenceable(2056), i32 noundef) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9NCompress5NLZMA6CState4InitEv(ptr noundef nonnull align 1 dereferenceable(1)) #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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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, !10, i64 7544}
!12 = !{!"_ZTSN9NCompress5NLZMA8CDecoderE", !13, i64 0, !15, i64 8, !16, i64 16, !17, i64 24, !22, i64 80, !7, i64 136, !7, i64 904, !7, i64 952, !7, i64 1000, !7, i64 1048, !7, i64 1096, !7, i64 1864, !7, i64 2888, !25, i64 3344, !26, i64 3408, !26, i64 5464, !30, i64 7520, !10, i64 7544, !7, i64 7548, !31, i64 7564, !10, i64 7568, !20, i64 7576, !21, i64 7584}
!13 = !{!"_ZTS14ICompressCoder", !14, i64 0}
!14 = !{!"_ZTS8IUnknown"}
!15 = !{!"_ZTS30ICompressSetDecoderProperties2", !14, i64 0}
!16 = !{!"_ZTS13CMyUnknownImp", !10, i64 0}
!17 = !{!"_ZTS12CLZOutWindow", !18, i64 0}
!18 = !{!"_ZTS10COutBuffer", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !19, i64 24, !20, i64 32, !6, i64 40, !21, i64 48}
!19 = !{!"_ZTS9CMyComPtrI20ISequentialOutStreamE", !6, i64 0}
!20 = !{!"long long", !7, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{!"_ZTSN9NCompress11NRangeCoder8CDecoderE", !23, i64 0, !10, i64 48, !10, i64 52}
!23 = !{!"_ZTS9CInBuffer", !6, i64 0, !6, i64 8, !6, i64 16, !24, i64 24, !20, i64 32, !10, i64 40, !21, i64 44}
!24 = !{!"_ZTS9CMyComPtrI19ISequentialInStreamE", !6, i64 0}
!25 = !{!"_ZTSN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi4EEE", !7, i64 0}
!26 = !{!"_ZTSN9NCompress5NLZMA7NLength8CDecoderE", !27, i64 0, !27, i64 4, !7, i64 8, !7, i64 520, !29, i64 1032}
!27 = !{!"_ZTSN9NCompress11NRangeCoder11CBitDecoderILi5EEE", !28, i64 0}
!28 = !{!"_ZTSN9NCompress11NRangeCoder9CBitModelILi5EEE", !10, i64 0}
!29 = !{!"_ZTSN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi8EEE", !7, i64 0}
!30 = !{!"_ZTSN9NCompress5NLZMA15CLiteralDecoderE", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16}
!31 = !{!"_ZTSN9NCompress5NLZMA6CStateE", !7, i64 0}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !33}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !33}


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

%"class.NCompress::NRangeCoder::CBitDecoder" = type { %"class.NCompress::NRangeCoder::CBitModel" }
%"class.NCompress::NRangeCoder::CBitModel" = type { i32 }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9NCompress5NLZMA8CDecoder4InitEv(ptr noundef nonnull align 8 dereferenceable(7585) %0) local_unnamed_addr #0 align 2 {
.preheader22:
  %1 = getelementptr inbounds i8, ptr %0, i64 7544
  %2 = getelementptr inbounds i8, ptr %0, i64 136
  %3 = getelementptr inbounds i8, ptr %0, i64 1096
  %4 = getelementptr inbounds i8, ptr %0, i64 904
  %5 = getelementptr inbounds i8, ptr %0, i64 952
  %6 = getelementptr inbounds i8, ptr %0, i64 1000
  %7 = getelementptr inbounds i8, ptr %0, i64 1048
  br label %123

.preheader22.1:                                   ; preds = %123
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %4)
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %5)
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %6)
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %7)
  br label %8

8:                                                ; preds = %8, %.preheader22.1
  %.01923.1 = phi i32 [ 0, %.preheader22.1 ], [ %12, %8 ]
  %9 = zext i32 %.01923.1 to i64
  %10 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 1, i64 %9
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %10)
  %11 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 1, i64 %9
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %11)
  %12 = add i32 %.01923.1, 1
  %13 = load i32, ptr %1, align 8, !tbaa !5
  %.not.1 = icmp ugt i32 %12, %13
  br i1 %.not.1, label %.preheader22.2, label %8, !llvm.loop !30

.preheader22.2:                                   ; preds = %8
  %14 = getelementptr inbounds i8, ptr %0, i64 908
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %14)
  %15 = getelementptr inbounds i8, ptr %0, i64 956
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %15)
  %16 = getelementptr inbounds i8, ptr %0, i64 1004
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %16)
  %17 = getelementptr inbounds i8, ptr %0, i64 1052
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %17)
  br label %18

18:                                               ; preds = %18, %.preheader22.2
  %.01923.2 = phi i32 [ 0, %.preheader22.2 ], [ %22, %18 ]
  %19 = zext i32 %.01923.2 to i64
  %20 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 2, i64 %19
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %20)
  %21 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 2, i64 %19
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %21)
  %22 = add i32 %.01923.2, 1
  %23 = load i32, ptr %1, align 8, !tbaa !5
  %.not.2 = icmp ugt i32 %22, %23
  br i1 %.not.2, label %.preheader22.3, label %18, !llvm.loop !30

.preheader22.3:                                   ; preds = %18
  %24 = getelementptr inbounds i8, ptr %0, i64 912
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %24)
  %25 = getelementptr inbounds i8, ptr %0, i64 960
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %25)
  %26 = getelementptr inbounds i8, ptr %0, i64 1008
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %26)
  %27 = getelementptr inbounds i8, ptr %0, i64 1056
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %27)
  br label %28

28:                                               ; preds = %28, %.preheader22.3
  %.01923.3 = phi i32 [ 0, %.preheader22.3 ], [ %32, %28 ]
  %29 = zext i32 %.01923.3 to i64
  %30 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 3, i64 %29
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %30)
  %31 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 3, i64 %29
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %31)
  %32 = add i32 %.01923.3, 1
  %33 = load i32, ptr %1, align 8, !tbaa !5
  %.not.3 = icmp ugt i32 %32, %33
  br i1 %.not.3, label %.preheader22.4, label %28, !llvm.loop !30

.preheader22.4:                                   ; preds = %28
  %34 = getelementptr inbounds i8, ptr %0, i64 916
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %34)
  %35 = getelementptr inbounds i8, ptr %0, i64 964
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %35)
  %36 = getelementptr inbounds i8, ptr %0, i64 1012
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %36)
  %37 = getelementptr inbounds i8, ptr %0, i64 1060
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %37)
  br label %38

38:                                               ; preds = %38, %.preheader22.4
  %.01923.4 = phi i32 [ 0, %.preheader22.4 ], [ %42, %38 ]
  %39 = zext i32 %.01923.4 to i64
  %40 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 4, i64 %39
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %40)
  %41 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 4, i64 %39
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %41)
  %42 = add i32 %.01923.4, 1
  %43 = load i32, ptr %1, align 8, !tbaa !5
  %.not.4 = icmp ugt i32 %42, %43
  br i1 %.not.4, label %.preheader22.5, label %38, !llvm.loop !30

.preheader22.5:                                   ; preds = %38
  %44 = getelementptr inbounds i8, ptr %0, i64 920
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %44)
  %45 = getelementptr inbounds i8, ptr %0, i64 968
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %45)
  %46 = getelementptr inbounds i8, ptr %0, i64 1016
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %46)
  %47 = getelementptr inbounds i8, ptr %0, i64 1064
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %47)
  br label %48

48:                                               ; preds = %48, %.preheader22.5
  %.01923.5 = phi i32 [ 0, %.preheader22.5 ], [ %52, %48 ]
  %49 = zext i32 %.01923.5 to i64
  %50 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 5, i64 %49
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %50)
  %51 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 5, i64 %49
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %51)
  %52 = add i32 %.01923.5, 1
  %53 = load i32, ptr %1, align 8, !tbaa !5
  %.not.5 = icmp ugt i32 %52, %53
  br i1 %.not.5, label %.preheader22.6, label %48, !llvm.loop !30

.preheader22.6:                                   ; preds = %48
  %54 = getelementptr inbounds i8, ptr %0, i64 924
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  %55 = getelementptr inbounds i8, ptr %0, i64 972
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %55)
  %56 = getelementptr inbounds i8, ptr %0, i64 1020
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %56)
  %57 = getelementptr inbounds i8, ptr %0, i64 1068
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %57)
  br label %58

58:                                               ; preds = %58, %.preheader22.6
  %.01923.6 = phi i32 [ 0, %.preheader22.6 ], [ %62, %58 ]
  %59 = zext i32 %.01923.6 to i64
  %60 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 6, i64 %59
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %60)
  %61 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 6, i64 %59
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %61)
  %62 = add i32 %.01923.6, 1
  %63 = load i32, ptr %1, align 8, !tbaa !5
  %.not.6 = icmp ugt i32 %62, %63
  br i1 %.not.6, label %.preheader22.7, label %58, !llvm.loop !30

.preheader22.7:                                   ; preds = %58
  %64 = getelementptr inbounds i8, ptr %0, i64 928
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %64)
  %65 = getelementptr inbounds i8, ptr %0, i64 976
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %65)
  %66 = getelementptr inbounds i8, ptr %0, i64 1024
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %66)
  %67 = getelementptr inbounds i8, ptr %0, i64 1072
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %67)
  br label %68

68:                                               ; preds = %68, %.preheader22.7
  %.01923.7 = phi i32 [ 0, %.preheader22.7 ], [ %72, %68 ]
  %69 = zext i32 %.01923.7 to i64
  %70 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 7, i64 %69
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %70)
  %71 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 7, i64 %69
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %71)
  %72 = add i32 %.01923.7, 1
  %73 = load i32, ptr %1, align 8, !tbaa !5
  %.not.7 = icmp ugt i32 %72, %73
  br i1 %.not.7, label %.preheader22.8, label %68, !llvm.loop !30

.preheader22.8:                                   ; preds = %68
  %74 = getelementptr inbounds i8, ptr %0, i64 932
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %74)
  %75 = getelementptr inbounds i8, ptr %0, i64 980
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %75)
  %76 = getelementptr inbounds i8, ptr %0, i64 1028
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %76)
  %77 = getelementptr inbounds i8, ptr %0, i64 1076
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %77)
  br label %78

78:                                               ; preds = %78, %.preheader22.8
  %.01923.8 = phi i32 [ 0, %.preheader22.8 ], [ %82, %78 ]
  %79 = zext i32 %.01923.8 to i64
  %80 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 8, i64 %79
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %80)
  %81 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 8, i64 %79
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %81)
  %82 = add i32 %.01923.8, 1
  %83 = load i32, ptr %1, align 8, !tbaa !5
  %.not.8 = icmp ugt i32 %82, %83
  br i1 %.not.8, label %.preheader22.9, label %78, !llvm.loop !30

.preheader22.9:                                   ; preds = %78
  %84 = getelementptr inbounds i8, ptr %0, i64 936
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %84)
  %85 = getelementptr inbounds i8, ptr %0, i64 984
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %85)
  %86 = getelementptr inbounds i8, ptr %0, i64 1032
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %86)
  %87 = getelementptr inbounds i8, ptr %0, i64 1080
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %87)
  br label %88

88:                                               ; preds = %88, %.preheader22.9
  %.01923.9 = phi i32 [ 0, %.preheader22.9 ], [ %92, %88 ]
  %89 = zext i32 %.01923.9 to i64
  %90 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 9, i64 %89
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %90)
  %91 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 9, i64 %89
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %91)
  %92 = add i32 %.01923.9, 1
  %93 = load i32, ptr %1, align 8, !tbaa !5
  %.not.9 = icmp ugt i32 %92, %93
  br i1 %.not.9, label %.preheader22.10, label %88, !llvm.loop !30

.preheader22.10:                                  ; preds = %88
  %94 = getelementptr inbounds i8, ptr %0, i64 940
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %94)
  %95 = getelementptr inbounds i8, ptr %0, i64 988
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %96 = getelementptr inbounds i8, ptr %0, i64 1036
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %96)
  %97 = getelementptr inbounds i8, ptr %0, i64 1084
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %97)
  br label %98

98:                                               ; preds = %98, %.preheader22.10
  %.01923.10 = phi i32 [ 0, %.preheader22.10 ], [ %102, %98 ]
  %99 = zext i32 %.01923.10 to i64
  %100 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 10, i64 %99
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %100)
  %101 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 10, i64 %99
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %101)
  %102 = add i32 %.01923.10, 1
  %103 = load i32, ptr %1, align 8, !tbaa !5
  %.not.10 = icmp ugt i32 %102, %103
  br i1 %.not.10, label %.preheader22.11, label %98, !llvm.loop !30

.preheader22.11:                                  ; preds = %98
  %104 = getelementptr inbounds i8, ptr %0, i64 944
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %104)
  %105 = getelementptr inbounds i8, ptr %0, i64 992
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %105)
  %106 = getelementptr inbounds i8, ptr %0, i64 1040
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %106)
  %107 = getelementptr inbounds i8, ptr %0, i64 1088
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %107)
  br label %108

108:                                              ; preds = %108, %.preheader22.11
  %.01923.11 = phi i32 [ 0, %.preheader22.11 ], [ %112, %108 ]
  %109 = zext i32 %.01923.11 to i64
  %110 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 11, i64 %109
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %110)
  %111 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 11, i64 %109
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %112 = add i32 %.01923.11, 1
  %113 = load i32, ptr %1, align 8, !tbaa !5
  %.not.11 = icmp ugt i32 %112, %113
  br i1 %.not.11, label %.preheader21, label %108, !llvm.loop !30

.preheader21:                                     ; preds = %108
  %114 = getelementptr inbounds i8, ptr %0, i64 948
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %114)
  %115 = getelementptr inbounds i8, ptr %0, i64 996
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %115)
  %116 = getelementptr inbounds i8, ptr %0, i64 1044
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %116)
  %117 = getelementptr inbounds i8, ptr %0, i64 1092
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %117)
  %118 = getelementptr inbounds i8, ptr %0, i64 1864
  tail call void @_ZN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi6EE4InitEv(ptr noundef nonnull align 4 dereferenceable(256) %118)
  %119 = getelementptr inbounds i8, ptr %0, i64 2120
  tail call void @_ZN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi6EE4InitEv(ptr noundef nonnull align 4 dereferenceable(256) %119)
  %120 = getelementptr inbounds i8, ptr %0, i64 2376
  tail call void @_ZN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi6EE4InitEv(ptr noundef nonnull align 4 dereferenceable(256) %120)
  %121 = getelementptr inbounds i8, ptr %0, i64 2632
  tail call void @_ZN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi6EE4InitEv(ptr noundef nonnull align 4 dereferenceable(256) %121)
  %122 = getelementptr inbounds i8, ptr %0, i64 2888
  br label %140

123:                                              ; preds = %.preheader22, %123
  %.01923 = phi i32 [ 0, %.preheader22 ], [ %127, %123 ]
  %124 = zext i32 %.01923 to i64
  %125 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %2, i64 0, i64 0, i64 %124
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %125)
  %126 = getelementptr inbounds [12 x [16 x %"class.NCompress::NRangeCoder::CBitDecoder"]], ptr %3, i64 0, i64 0, i64 %124
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %126)
  %127 = add i32 %.01923, 1
  %128 = load i32, ptr %1, align 8, !tbaa !5
  %.not = icmp ugt i32 %127, %128
  br i1 %.not, label %.preheader22.1, label %123, !llvm.loop !30

129:                                              ; preds = %140
  %130 = getelementptr inbounds i8, ptr %0, i64 3344
  tail call void @_ZN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi4EE4InitEv(ptr noundef nonnull align 4 dereferenceable(64) %130)
  %131 = getelementptr inbounds i8, ptr %0, i64 3408
  %132 = load i32, ptr %1, align 8, !tbaa !5
  %133 = add i32 %132, 1
  tail call void @_ZN9NCompress5NLZMA7NLength8CDecoder4InitEj(ptr noundef nonnull align 4 dereferenceable(2056) %131, i32 noundef %133)
  %134 = getelementptr inbounds i8, ptr %0, i64 5464
  %135 = load i32, ptr %1, align 8, !tbaa !5
  %136 = add i32 %135, 1
  tail call void @_ZN9NCompress5NLZMA7NLength8CDecoder4InitEj(ptr noundef nonnull align 4 dereferenceable(2056) %134, i32 noundef %136)
  %137 = getelementptr inbounds i8, ptr %0, i64 7520
  tail call void @_ZN9NCompress5NLZMA15CLiteralDecoder4InitEv(ptr noundef nonnull align 8 dereferenceable(20) %137)
  %138 = getelementptr inbounds i8, ptr %0, i64 7564
  tail call void @_ZN9NCompress5NLZMA6CState4InitEv(ptr noundef nonnull align 1 dereferenceable(1) %138)
  %139 = getelementptr inbounds i8, ptr %0, i64 7548
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %139, i8 0, i64 16, i1 false)
  ret void

140:                                              ; preds = %.preheader21, %140
  %indvars.iv = phi i64 [ 0, %.preheader21 ], [ %indvars.iv.next, %140 ]
  %141 = getelementptr inbounds [114 x %"class.NCompress::NRangeCoder::CBitDecoder"], ptr %122, i64 0, i64 %indvars.iv
  tail call void @_ZN9NCompress11NRangeCoder9CBitModelILi5EE4InitEv(ptr noundef nonnull align 4 dereferenceable(4) %141)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 114
  br i1 %exitcond.not, label %129, label %140, !llvm.loop !32
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi6EE4InitEv(ptr noundef nonnull align 4 dereferenceable(256)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi4EE4InitEv(ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9NCompress5NLZMA7NLength8CDecoder4InitEj(ptr noundef nonnull align 4 dereferenceable(2056), i32 noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9NCompress5NLZMA6CState4InitEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #1 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 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 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) }

!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, !11, i64 7544}
!6 = !{!"_ZTSN9NCompress5NLZMA8CDecoderE", !7, i64 0, !9, i64 8, !10, i64 16, !14, i64 24, !20, i64 80, !12, i64 136, !12, i64 904, !12, i64 952, !12, i64 1000, !12, i64 1048, !12, i64 1096, !12, i64 1864, !12, i64 2888, !23, i64 3344, !24, i64 3408, !24, i64 5464, !28, i64 7520, !11, i64 7544, !12, i64 7548, !29, i64 7564, !11, i64 7568, !18, i64 7576, !19, i64 7584}
!7 = !{!"_ZTS14ICompressCoder", !8, i64 0}
!8 = !{!"_ZTS8IUnknown"}
!9 = !{!"_ZTS30ICompressSetDecoderProperties2", !8, i64 0}
!10 = !{!"_ZTS13CMyUnknownImp", !11, i64 0}
!11 = !{!"int", !12, i64 0}
!12 = !{!"omnipotent char", !13, i64 0}
!13 = !{!"Simple C++ TBAA"}
!14 = !{!"_ZTS12CLZOutWindow", !15, i64 0}
!15 = !{!"_ZTS10COutBuffer", !16, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !17, i64 24, !18, i64 32, !16, i64 40, !19, i64 48}
!16 = !{!"any pointer", !12, i64 0}
!17 = !{!"_ZTS9CMyComPtrI20ISequentialOutStreamE", !16, i64 0}
!18 = !{!"long long", !12, i64 0}
!19 = !{!"bool", !12, i64 0}
!20 = !{!"_ZTSN9NCompress11NRangeCoder8CDecoderE", !21, i64 0, !11, i64 48, !11, i64 52}
!21 = !{!"_ZTS9CInBuffer", !16, i64 0, !16, i64 8, !16, i64 16, !22, i64 24, !18, i64 32, !11, i64 40, !19, i64 44}
!22 = !{!"_ZTS9CMyComPtrI19ISequentialInStreamE", !16, i64 0}
!23 = !{!"_ZTSN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi4EEE", !12, i64 0}
!24 = !{!"_ZTSN9NCompress5NLZMA7NLength8CDecoderE", !25, i64 0, !25, i64 4, !12, i64 8, !12, i64 520, !27, i64 1032}
!25 = !{!"_ZTSN9NCompress11NRangeCoder11CBitDecoderILi5EEE", !26, i64 0}
!26 = !{!"_ZTSN9NCompress11NRangeCoder9CBitModelILi5EEE", !11, i64 0}
!27 = !{!"_ZTSN9NCompress11NRangeCoder15CBitTreeDecoderILi5ELi8EEE", !12, i64 0}
!28 = !{!"_ZTSN9NCompress5NLZMA15CLiteralDecoderE", !16, i64 0, !11, i64 8, !11, i64 12, !11, i64 16}
!29 = !{!"_ZTSN9NCompress5NLZMA6CStateE", !12, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !31}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,MemCpyOptPass,SROAPass,SimplifyCFGPass,TailCallElimPass