Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 public uint ReverseDecode(LzmaRangeDecoder rangeDecoder)
 {
     return(LzmaBitTreeDecoder.ReverseDecode(this.models, 0U, rangeDecoder, this.bitLevels));
 }