public byte DecodeNormal(Powerasp.Enterprise.Core.Compress.SevenZip.Compress.RangeCoder.Decoder rangeDecoder)
 {
     uint symbol = 1;
     do
         symbol = (symbol << 1) | m_Decoders[symbol].Decode(rangeDecoder);
     while (symbol < 0x100);
     return (byte)symbol;
 }
 public void Encode(Powerasp.Enterprise.Core.Compress.SevenZip.Compress.RangeCoder.Encoder rangeEncoder, byte symbol)
 {
     uint context = 1;
     for (int i = 7; i >= 0; i--)
     {
         uint bit = (uint)((symbol >> i) & 1);
         m_Encoders[context].Encode(rangeEncoder, bit);
         context = (context << 1) | bit;
     }
 }
 public uint Decode(Powerasp.Enterprise.Core.Compress.SevenZip.Compress.RangeCoder.Decoder rangeDecoder, uint posState)
 {
     if (m_Choice.Decode(rangeDecoder) == 0)
         return m_LowCoder[posState].Decode(rangeDecoder);
     else
     {
         uint symbol = Base.kNumLowLenSymbols;
         if (m_Choice2.Decode(rangeDecoder) == 0)
             symbol += m_MidCoder[posState].Decode(rangeDecoder);
         else
         {
             symbol += Base.kNumMidLenSymbols;
             symbol += m_HighCoder.Decode(rangeDecoder);
         }
         return symbol;
     }
 }
 public byte DecodeWithMatchByte(Powerasp.Enterprise.Core.Compress.SevenZip.Compress.RangeCoder.Decoder rangeDecoder, byte matchByte)
 {
     uint symbol = 1;
     do
     {
         uint matchBit = (uint)(matchByte >> 7) & 1;
         matchByte <<= 1;
         uint bit = m_Decoders[((1 + matchBit) << 8) + symbol].Decode(rangeDecoder);
         symbol = (symbol << 1) | bit;
         if (matchBit != bit)
         {
             while (symbol < 0x100)
                 symbol = (symbol << 1) | m_Decoders[symbol].Decode(rangeDecoder);
             break;
         }
     }
     while (symbol < 0x100);
     return (byte)symbol;
 }
 public void EncodeMatched(Powerasp.Enterprise.Core.Compress.SevenZip.Compress.RangeCoder.Encoder rangeEncoder, byte matchByte, byte symbol)
 {
     uint context = 1;
     bool same = true;
     for (int i = 7; i >= 0; i--)
     {
         uint bit = (uint)((symbol >> i) & 1);
         uint state = context;
         if (same)
         {
             uint matchBit = (uint)((matchByte >> i) & 1);
             state += ((1 + matchBit) << 8);
             same = (matchBit == bit);
         }
         m_Encoders[state].Encode(rangeEncoder, bit);
         context = (context << 1) | bit;
     }
 }
 public new void Encode(Powerasp.Enterprise.Core.Compress.SevenZip.Compress.RangeCoder.Encoder rangeEncoder, UInt32 symbol, UInt32 posState)
 {
     base.Encode(rangeEncoder, symbol, posState);
     if (--_counters[posState] == 0)
         UpdateTable(posState);
 }
 public void Encode(Powerasp.Enterprise.Core.Compress.SevenZip.Compress.RangeCoder.Encoder rangeEncoder, UInt32 symbol, UInt32 posState)
 {
     if (symbol < Base.kNumLowLenSymbols)
     {
         _choice.Encode(rangeEncoder, 0);
         _lowCoder[posState].Encode(rangeEncoder, symbol);
     }
     else
     {
         symbol -= Base.kNumLowLenSymbols;
         _choice.Encode(rangeEncoder, 1);
         if (symbol < Base.kNumMidLenSymbols)
         {
             _choice2.Encode(rangeEncoder, 0);
             _midCoder[posState].Encode(rangeEncoder, symbol);
         }
         else
         {
             _choice2.Encode(rangeEncoder, 1);
             _highCoder.Encode(rangeEncoder, symbol - Base.kNumMidLenSymbols);
         }
     }
 }
 public byte DecodeWithMatchByte(Powerasp.Enterprise.Core.Compress.SevenZip.Compress.RangeCoder.Decoder rangeDecoder, uint pos, byte prevByte, byte matchByte)
 { return m_Coders[GetState(pos, prevByte)].DecodeWithMatchByte(rangeDecoder, matchByte); }
 public byte DecodeNormal(Powerasp.Enterprise.Core.Compress.SevenZip.Compress.RangeCoder.Decoder rangeDecoder, uint pos, byte prevByte)
 { return m_Coders[GetState(pos, prevByte)].DecodeNormal(rangeDecoder); }