public static uint ReverseDecode( LzmaRangeBitDecoder[] models, uint startIndex, LzmaRangeDecoder rangeDecoder, int numBitLevels) { uint num1 = 1; uint num2 = 0; if (rangeDecoder.CheckInputRequired(numBitLevels, false)) { for (int index = 0; index < numBitLevels; ++index) { uint num3 = models[(IntPtr)(startIndex + num1)].Decode(rangeDecoder); if (!rangeDecoder.InputRequired) { num1 = (num1 << 1) + num3; num2 |= num3 << index; } else { break; } } } return(num2); }
public uint Decode(LzmaRangeDecoder rangeDecoder) { uint num = 1; if (rangeDecoder.CheckInputRequired(this.bitLevels, false)) { for (int bitLevels = this.bitLevels; bitLevels > 0; --bitLevels) { num = (num << 1) + this.models[(IntPtr)num].Decode(rangeDecoder); } } return(num - (uint)(1 << this.bitLevels)); }