private void DecompressPosSlotProcess() { if (this.positionSlot >= 4U) { int numBitLevels = (int)(this.positionSlot >> 1) - 1; this.repeater = (uint)((2 | (int)this.positionSlot & 1) << numBitLevels); if (this.positionSlot < 14U) { uint num = LzmaBitTreeDecoder.ReverseDecode(this.positionDecoders, (uint)((int)this.repeater - (int)this.positionSlot - 1), this.rangeDecoder, numBitLevels); if (this.rangeDecoder.InputRequired) { return; } this.repeater += num; } else { uint num = this.rangeDecoder.DecodeDirectBits(numBitLevels - 4) << 4; if (this.rangeDecoder.InputRequired) { return; } this.repeater += num; this.decompressState = LzmaDecompressor.LzmaDecompressorState.ReverseDecoder; return; } } else { this.repeater = this.positionSlot; } this.decompressState = LzmaDecompressor.LzmaDecompressorState.CopyBlock; }
public uint ReverseDecode(LzmaRangeDecoder rangeDecoder) { return(LzmaBitTreeDecoder.ReverseDecode(this.models, 0U, rangeDecoder, this.bitLevels)); }