示例#1
0
        public uint Decode(LzmaRangeDecoder rangeDecoder, uint positionState)
        {
            rangeDecoder.SaveState();
            uint num1 = this.choice.Decode(rangeDecoder);

            if (rangeDecoder.InputRequired)
            {
                return(0);
            }
            uint num2;

            if (num1 == 0U)
            {
                num2 = this.lowCoder[(IntPtr)positionState].Decode(rangeDecoder);
            }
            else
            {
                num2 = 8U;
                uint num3 = this.choice2.Decode(rangeDecoder);
                if (!rangeDecoder.InputRequired)
                {
                    if (num3 == 0U)
                    {
                        num2 += this.middleCoder[(IntPtr)positionState].Decode(rangeDecoder);
                    }
                    else
                    {
                        num2 = num2 + 8U + this.highCoder.Decode(rangeDecoder);
                    }
                }
                if (rangeDecoder.InputRequired)
                {
                    this.choice2.RestoreState();
                }
            }
            if (rangeDecoder.InputRequired)
            {
                this.choice.RestoreState();
                rangeDecoder.RestoreState();
            }
            return(num2);
        }