public uint Decode(LzmaRangeDecoder rangeDecoder)
        {
            uint newBound = (rangeDecoder.Range >> 11) * this.bitMask;

            this.SaveState();
            uint num;

            if (rangeDecoder.Code < newBound)
            {
                this.bitMask += 2048U - this.bitMask >> 5;
                rangeDecoder.UpdateRange(newBound);
                num = 0U;
            }
            else
            {
                this.bitMask -= this.bitMask >> 5;
                rangeDecoder.MoveRange(newBound);
                num = 1U;
            }
            if (rangeDecoder.InputRequired)
            {
                this.RestoreState();
            }
            return(num);
        }
        public uint DecodeState(LzmaRangeDecoder rangeDecoder)
        {
            rangeDecoder.SaveState();
            uint num = this.Decode(rangeDecoder);

            if (rangeDecoder.InputRequired)
            {
                rangeDecoder.RestoreState();
            }
            return(num);
        }