亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lzmadecode.c

?? lzma 壓縮 4.06version
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
  LzmaDecode.c
  LZMA Decoder
  
  LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
  http://www.7-zip.org/

  LZMA SDK is licensed under two licenses:
  1) GNU Lesser General Public License (GNU LGPL)
  2) Common Public License (CPL)
  It means that you can select one of these two licenses and 
  follow rules of that license.

  SPECIAL EXCEPTION:
  Igor Pavlov, as the author of this code, expressly permits you to 
  statically or dynamically link your code (or bind by name) to the 
  interfaces of this file without subjecting your linked code to the 
  terms of the CPL or GNU LGPL. Any modifications or additions 
  to this file, however, are subject to the LGPL or CPL terms.
*/

#include "LzmaDecode.h"

#ifndef Byte
#define Byte unsigned char
#endif

#define kNumTopBits 24
#define kTopValue ((UInt32)1 << kNumTopBits)

#define kNumBitModelTotalBits 11
#define kBitModelTotal (1 << kNumBitModelTotalBits)
#define kNumMoveBits 5

typedef struct _CRangeDecoder
{
  Byte *Buffer;
  Byte *BufferLim;
  UInt32 Range;
  UInt32 Code;
  #ifdef _LZMA_IN_CB
  ILzmaInCallback *InCallback;
  int Result;
  #endif
  int ExtraBytes;
} CRangeDecoder;

Byte RangeDecoderReadByte(CRangeDecoder *rd)
{
  if (rd->Buffer == rd->BufferLim)
  {
    #ifdef _LZMA_IN_CB
    UInt32 size;
    rd->Result = rd->InCallback->Read(rd->InCallback, &rd->Buffer, &size);
    rd->BufferLim = rd->Buffer + size;
    if (size == 0)
    #endif
    {
      rd->ExtraBytes = 1;
      return 0xFF;
    }
  }
  return (*rd->Buffer++);
}

/* #define ReadByte (*rd->Buffer++) */
#define ReadByte (RangeDecoderReadByte(rd))

void RangeDecoderInit(CRangeDecoder *rd,
  #ifdef _LZMA_IN_CB
    ILzmaInCallback *inCallback
  #else
    Byte *stream, UInt32 bufferSize
  #endif
    )
{
  int i;
  #ifdef _LZMA_IN_CB
  rd->InCallback = inCallback;
  rd->Buffer = rd->BufferLim = 0;
  #else
  rd->Buffer = stream;
  rd->BufferLim = stream + bufferSize;
  #endif
  rd->ExtraBytes = 0;
  rd->Code = 0;
  rd->Range = (0xFFFFFFFF);
  for(i = 0; i < 5; i++)
    rd->Code = (rd->Code << 8) | ReadByte;
}

#define RC_INIT_VAR UInt32 range = rd->Range; UInt32 code = rd->Code;        
#define RC_FLUSH_VAR rd->Range = range; rd->Code = code;
#define RC_NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | ReadByte; }

UInt32 RangeDecoderDecodeDirectBits(CRangeDecoder *rd, int numTotalBits)
{
  RC_INIT_VAR
  UInt32 result = 0;
  int i;
  for (i = numTotalBits; i > 0; i--)
  {
    /* UInt32 t; */
    range >>= 1;

    result <<= 1;
    if (code >= range)
    {
      code -= range;
      result |= 1;
    }
    /*
    t = (code - range) >> 31;
    t &= 1;
    code -= range & (t - 1);
    result = (result + result) | (1 - t);
    */
    RC_NORMALIZE
  }
  RC_FLUSH_VAR
  return result;
}

int RangeDecoderBitDecode(CProb *prob, CRangeDecoder *rd)
{
  UInt32 bound = (rd->Range >> kNumBitModelTotalBits) * *prob;
  if (rd->Code < bound)
  {
    rd->Range = bound;
    *prob += (kBitModelTotal - *prob) >> kNumMoveBits;
    if (rd->Range < kTopValue)
    {
      rd->Code = (rd->Code << 8) | ReadByte;
      rd->Range <<= 8;
    }
    return 0;
  }
  else
  {
    rd->Range -= bound;
    rd->Code -= bound;
    *prob -= (*prob) >> kNumMoveBits;
    if (rd->Range < kTopValue)
    {
      rd->Code = (rd->Code << 8) | ReadByte;
      rd->Range <<= 8;
    }
    return 1;
  }
}

#define RC_GET_BIT2(prob, mi, A0, A1) \
  UInt32 bound = (range >> kNumBitModelTotalBits) * *prob; \
  if (code < bound) \
    { A0; range = bound; *prob += (kBitModelTotal - *prob) >> kNumMoveBits; mi <<= 1; } \
  else \
    { A1; range -= bound; code -= bound; *prob -= (*prob) >> kNumMoveBits; mi = (mi + mi) + 1; } \
  RC_NORMALIZE

#define RC_GET_BIT(prob, mi) RC_GET_BIT2(prob, mi, ; , ;)               

int RangeDecoderBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
{
  int mi = 1;
  int i;
  #ifdef _LZMA_LOC_OPT
  RC_INIT_VAR
  #endif
  for(i = numLevels; i > 0; i--)
  {
    #ifdef _LZMA_LOC_OPT
    CProb *prob = probs + mi;
    RC_GET_BIT(prob, mi)
    #else
    mi = (mi + mi) + RangeDecoderBitDecode(probs + mi, rd);
    #endif
  }
  #ifdef _LZMA_LOC_OPT
  RC_FLUSH_VAR
  #endif
  return mi - (1 << numLevels);
}

int RangeDecoderReverseBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
{
  int mi = 1;
  int i;
  int symbol = 0;
  #ifdef _LZMA_LOC_OPT
  RC_INIT_VAR
  #endif
  for(i = 0; i < numLevels; i++)
  {
    #ifdef _LZMA_LOC_OPT
    CProb *prob = probs + mi;
    RC_GET_BIT2(prob, mi, ; , symbol |= (1 << i))
    #else
    int bit = RangeDecoderBitDecode(probs + mi, rd);
    mi = mi + mi + bit;
    symbol |= (bit << i);
    #endif
  }
  #ifdef _LZMA_LOC_OPT
  RC_FLUSH_VAR
  #endif
  return symbol;
}

Byte LzmaLiteralDecode(CProb *probs, CRangeDecoder *rd)
{ 
  int symbol = 1;
  #ifdef _LZMA_LOC_OPT
  RC_INIT_VAR
  #endif
  do
  {
    #ifdef _LZMA_LOC_OPT
    CProb *prob = probs + symbol;
    RC_GET_BIT(prob, symbol)
    #else
    symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
    #endif
  }
  while (symbol < 0x100);
  #ifdef _LZMA_LOC_OPT
  RC_FLUSH_VAR
  #endif
  return symbol;
}

Byte LzmaLiteralDecodeMatch(CProb *probs, CRangeDecoder *rd, Byte matchByte)
{ 
  int symbol = 1;
  #ifdef _LZMA_LOC_OPT
  RC_INIT_VAR
  #endif
  do
  {
    int bit;
    int matchBit = (matchByte >> 7) & 1;
    matchByte <<= 1;
    #ifdef _LZMA_LOC_OPT
    {
      CProb *prob = probs + ((1 + matchBit) << 8) + symbol;
      RC_GET_BIT2(prob, symbol, bit = 0, bit = 1)
    }
    #else
    bit = RangeDecoderBitDecode(probs + ((1 + matchBit) << 8) + symbol, rd);
    symbol = (symbol << 1) | bit;
    #endif
    if (matchBit != bit)
    {
      while (symbol < 0x100)
      {
        #ifdef _LZMA_LOC_OPT
        CProb *prob = probs + symbol;
        RC_GET_BIT(prob, symbol)
        #else
        symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
        #endif
      }
      break;
    }
  }
  while (symbol < 0x100);
  #ifdef _LZMA_LOC_OPT
  RC_FLUSH_VAR
  #endif
  return symbol;
}

#define kNumPosBitsMax 4
#define kNumPosStatesMax (1 << kNumPosBitsMax)

#define kLenNumLowBits 3
#define kLenNumLowSymbols (1 << kLenNumLowBits)
#define kLenNumMidBits 3
#define kLenNumMidSymbols (1 << kLenNumMidBits)
#define kLenNumHighBits 8
#define kLenNumHighSymbols (1 << kLenNumHighBits)

#define LenChoice 0
#define LenChoice2 (LenChoice + 1)
#define LenLow (LenChoice2 + 1)
#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
#define kNumLenProbs (LenHigh + kLenNumHighSymbols) 

int LzmaLenDecode(CProb *p, CRangeDecoder *rd, int posState)
{
  if(RangeDecoderBitDecode(p + LenChoice, rd) == 0)
    return RangeDecoderBitTreeDecode(p + LenLow +
        (posState << kLenNumLowBits), kLenNumLowBits, rd);
  if(RangeDecoderBitDecode(p + LenChoice2, rd) == 0)
    return kLenNumLowSymbols + RangeDecoderBitTreeDecode(p + LenMid +
        (posState << kLenNumMidBits), kLenNumMidBits, rd);
  return kLenNumLowSymbols + kLenNumMidSymbols + 
      RangeDecoderBitTreeDecode(p + LenHigh, kLenNumHighBits, rd);
}

#define kNumStates 12

#define kStartPosModelIndex 4
#define kEndPosModelIndex 14
#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))

#define kNumPosSlotBits 6
#define kNumLenToPosStates 4

#define kNumAlignBits 4
#define kAlignTableSize (1 << kNumAlignBits)

#define kMatchMinLen 2

#define IsMatch 0
#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
#define IsRepG0 (IsRep + kNumStates)
#define IsRepG1 (IsRepG0 + kNumStates)
#define IsRepG2 (IsRepG1 + kNumStates)
#define IsRep0Long (IsRepG2 + kNumStates)
#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
#define LenCoder (Align + kAlignTableSize)
#define RepLenCoder (LenCoder + kNumLenProbs)
#define Literal (RepLenCoder + kNumLenProbs)

#if Literal != LZMA_BASE_SIZE
StopCompilingDueBUG
#endif

#ifdef _LZMA_OUT_READ

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产免费看久久精品| 成人晚上爱看视频| 成人综合婷婷国产精品久久| 色综合久久中文综合久久牛| 欧美一区二区三区小说| 中文字幕日韩精品一区| 日韩精品电影在线观看| 一本色道亚洲精品aⅴ| 久久亚洲精精品中文字幕早川悠里 | 在线观看欧美精品| 26uuu国产电影一区二区| 亚洲精品免费在线播放| 国产美女视频一区| 日韩三级在线观看| 亚洲精品国产无天堂网2021| 国产精品88av| 在线国产电影不卡| 日本一区二区视频在线| 九九九久久久精品| 欧美日韩国产bt| 亚洲美女在线国产| 成人性视频免费网站| 日韩免费福利电影在线观看| 亚洲成人免费观看| 一道本成人在线| 国产精品剧情在线亚洲| 懂色中文一区二区在线播放| 欧美不卡一区二区三区| 五月天欧美精品| 欧美性生活大片视频| 亚洲色图欧洲色图| 懂色av一区二区三区免费观看| 日韩一级在线观看| 奇米一区二区三区| 91精品国产高清一区二区三区 | 日韩av一区二区三区| 欧美伊人久久大香线蕉综合69| 亚洲欧美一区二区视频| 成人黄页毛片网站| 久久精品视频一区二区| 激情五月播播久久久精品| 日韩欧美精品在线| 狠狠色狠狠色综合日日91app| 91精品国产一区二区三区| 日韩综合小视频| 欧美美女一区二区| 奇米色777欧美一区二区| 日韩欧美在线观看一区二区三区| 日韩在线一区二区| 日韩欧美一级二级三级| 国产一级精品在线| 国产精品人人做人人爽人人添| 国产a久久麻豆| 国产欧美日本一区二区三区| 成人精品视频一区二区三区尤物| 国产精品系列在线| 91美女福利视频| 亚洲高清视频的网址| 欧美精品 日韩| 蜜桃av一区二区| 欧美国产1区2区| 一本大道久久a久久综合| 亚洲国产欧美另类丝袜| 日韩欧美一区二区在线视频| 国产一区二区三区在线观看精品 | 成人国产视频在线观看| 亚洲视频在线观看一区| 欧美精选一区二区| 极品销魂美女一区二区三区| 日本一区二区三区四区| 在线观看区一区二| 激情欧美日韩一区二区| 国产精品家庭影院| 欧美午夜寂寞影院| 国产一区二区三区观看| 亚洲已满18点击进入久久| 精品久久久久久久久久久久久久久 | 狠狠色综合日日| 亚洲人成网站色在线观看| 91麻豆精品久久久久蜜臀| 国产美女精品在线| 亚洲国产一区二区视频| 久久久综合视频| 色综合久久久久综合99| 日韩成人精品在线| 91国内精品野花午夜精品| 免费一区二区视频| 国产精品久久三区| 欧美日韩国产另类一区| 国产在线播放一区| 国产精品久久久久久久久久免费看 | 成人app网站| 一区二区三区中文免费| 91精品福利在线一区二区三区| 青草国产精品久久久久久| 欧美激情在线一区二区| 在线视频中文字幕一区二区| 精品在线一区二区三区| 亚洲视频一区在线| 91麻豆精品国产91久久久资源速度 | 国产呦萝稀缺另类资源| 亚洲综合视频在线观看| 日韩精品一区二区三区三区免费| 粉嫩在线一区二区三区视频| 天天色天天操综合| 国产精品区一区二区三区| 7799精品视频| 九色综合狠狠综合久久| 亚洲国产成人va在线观看天堂 | 91影院在线观看| 麻豆精品视频在线观看| 亚洲精品视频在线观看网站| 久久精品视频一区二区三区| 欧美丰满一区二区免费视频| 成人网页在线观看| 春色校园综合激情亚洲| 激情综合色播激情啊| 五月激情丁香一区二区三区| 成人免费视频在线观看| 久久午夜羞羞影院免费观看| 欧美疯狂性受xxxxx喷水图片| 色婷婷综合激情| 91网站在线播放| www.色综合.com| 国产一区二区不卡老阿姨| 蜜臀久久99精品久久久画质超高清| 一区二区三区精品视频在线| 国产精品成人免费精品自在线观看 | 久久品道一品道久久精品| 欧美一区二区三区人| 成人免费毛片嘿嘿连载视频| 午夜欧美视频在线观看| 日本一区二区在线不卡| 久久久噜噜噜久久中文字幕色伊伊| 欧美精品1区2区| 欧美理论电影在线| 欧美日韩精品高清| 国产精品一区专区| 国产精品一区二区你懂的| 久久国产精品色婷婷| 九九精品一区二区| 精品午夜久久福利影院| 国产剧情一区二区| 国精产品一区一区三区mba视频| 日韩中文字幕不卡| 日日骚欧美日韩| 青青草原综合久久大伊人精品| 日本三级韩国三级欧美三级| 日韩国产欧美三级| 毛片基地黄久久久久久天堂| 一区av在线播放| 亚洲va国产天堂va久久en| 肉丝袜脚交视频一区二区| 麻豆精品视频在线| 捆绑调教美女网站视频一区| 久久精品99国产精品日本| 精品一区二区免费| 国产一区在线观看视频| 久久精品国产成人一区二区三区| 亚洲第一主播视频| 日韩黄色小视频| 精品一区二区三区香蕉蜜桃 | 亚洲女人****多毛耸耸8| 一区二区三区免费| 性欧美大战久久久久久久久| 天天亚洲美女在线视频| 国产在线观看免费一区| 99国产精品久久| 99re亚洲国产精品| 99久久精品免费| 欧美男人的天堂一二区| 欧美高清www午色夜在线视频| 精品蜜桃在线看| 亚洲免费观看高清完整版在线| 一区二区三区四区视频精品免费 | 免费的成人av| 免费日韩伦理电影| 国产激情91久久精品导航 | 精品无人区卡一卡二卡三乱码免费卡 | 欧美日韩一本到| 国产日韩精品一区二区三区 | 成人欧美一区二区三区黑人麻豆 | 国产一区二区中文字幕| 99精品欧美一区| 日韩精品一区二区三区在线播放| 国产精品国产三级国产有无不卡| 亚洲一区二区三区视频在线播放| 久久电影网电视剧免费观看| va亚洲va日韩不卡在线观看| 欧美精品免费视频| 国产日韩三级在线| 一区二区三区在线高清| 国产精品资源在线看| 欧美一区二区三区视频在线| 国产精品天干天干在线综合| 美国欧美日韩国产在线播放| 欧美制服丝袜第一页| 国产午夜亚洲精品午夜鲁丝片| 日韩不卡一二三区| 欧洲中文字幕精品|