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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lzx.cpp

?? Pocket PC CHM 文件閱讀器 (源代碼)
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
            /* it's possible to have a file where the next run is less than
             * 16 bits in size. In this case, the READ_HUFFSYM() macro used
             * in building the tables will exhaust the buffer, so we should
             * allow for this, but not allow those accidentally read bits to
             * be used (so we check that there are at least 16 bits
             * remaining - in this boundary case they aren't really part of
             * the compressed data)
             */
            if (inpos > (endinp+2) || bitsleft < 16) return DECR_ILLEGALDATA;
        }

        while ((this_run = pState->block_remaining) > 0 && togo > 0) {
            if (this_run > togo) this_run = togo;
            togo -= this_run;
            pState->block_remaining -= this_run;

            /* apply 2^x-1 mask */
            window_posn &= window_size - 1;
            /* runs can't straddle the window wraparound */
            if ((window_posn + this_run) > window_size)
                return DECR_DATAFORMAT;

            switch (pState->block_type) {

                case LZX_BLOCKTYPE_VERBATIM:
                    while (this_run > 0) {
                        READ_HUFFSYM(MAINTREE, main_element);

                        if (main_element < LZX_NUM_CHARS) {
                            /* literal: 0 to LZX_NUM_CHARS-1 */
                            window[window_posn++] = main_element;
                            this_run--;
                        }
                        else {
                            /* match: LZX_NUM_CHARS + ((slot<<3) | length_header (3 bits)) */
                            main_element -= LZX_NUM_CHARS;

                            match_length = main_element & LZX_NUM_PRIMARY_LENGTHS;
                            if (match_length == LZX_NUM_PRIMARY_LENGTHS) {
                                READ_HUFFSYM(LENGTH, length_footer);
                                match_length += length_footer;
                            }
                            match_length += LZX_MIN_MATCH;

                            match_offset = main_element >> 3;

                            if (match_offset > 2) {
                                /* not repeated offset */
                                if (match_offset != 3) {
                                    extra = extra_bits[match_offset];
                                    READ_BITS(verbatim_bits, extra);
                                    match_offset = position_base[match_offset] - 2 + verbatim_bits;
                                }
                                else {
                                    match_offset = 1;
                                }

                                /* update repeated offset LRU queue */
                                R2 = R1; R1 = R0; R0 = match_offset;
                            }
                            else if (match_offset == 0) {
                                match_offset = R0;
                            }
                            else if (match_offset == 1) {
                                match_offset = R1;
                                R1 = R0; R0 = match_offset;
                            }
                            else /* match_offset == 2 */ {
                                match_offset = R2;
                                R2 = R0; R0 = match_offset;
                            }

                            rundest = window + window_posn;
                            runsrc  = rundest - match_offset;
                            window_posn += match_length;
                            this_run -= match_length;

                            /* copy any wrapped around source data */
                            while ((runsrc < window) && (match_length-- > 0)) {
                                *rundest++ = *(runsrc + window_size); runsrc++;
                            }
                            /* copy match data - no worries about destination wraps */
                            while (match_length-- > 0) *rundest++ = *runsrc++;

                        }
                    }
                    break;

                case LZX_BLOCKTYPE_ALIGNED:
                    while (this_run > 0) {
                        READ_HUFFSYM(MAINTREE, main_element);

                        if (main_element < LZX_NUM_CHARS) {
                            /* literal: 0 to LZX_NUM_CHARS-1 */
                            window[window_posn++] = main_element;
                            this_run--;
                        }
                        else {
                            /* match: LZX_NUM_CHARS + ((slot<<3) | length_header (3 bits)) */
                            main_element -= LZX_NUM_CHARS;

                            match_length = main_element & LZX_NUM_PRIMARY_LENGTHS;
                            if (match_length == LZX_NUM_PRIMARY_LENGTHS) {
                                READ_HUFFSYM(LENGTH, length_footer);
                                match_length += length_footer;
                            }
                            match_length += LZX_MIN_MATCH;

                            match_offset = main_element >> 3;

                            if (match_offset > 2) {
                                /* not repeated offset */
                                extra = extra_bits[match_offset];
                                match_offset = position_base[match_offset] - 2;
                                if (extra > 3) {
                                    /* verbatim and aligned bits */
                                    extra -= 3;
                                    READ_BITS(verbatim_bits, extra);
                                    match_offset += (verbatim_bits << 3);
                                    READ_HUFFSYM(ALIGNED, aligned_bits);
                                    match_offset += aligned_bits;
                                }
                                else if (extra == 3) {
                                    /* aligned bits only */
                                    READ_HUFFSYM(ALIGNED, aligned_bits);
                                    match_offset += aligned_bits;
                                }
                                else if (extra > 0) { /* extra==1, extra==2 */
                                    /* verbatim bits only */
                                    READ_BITS(verbatim_bits, extra);
                                    match_offset += verbatim_bits;
                                }
                                else /* extra == 0 */ {
                                    /* ??? */
                                    match_offset = 1;
                                }

                                /* update repeated offset LRU queue */
                                R2 = R1; R1 = R0; R0 = match_offset;
                            }
                            else if (match_offset == 0) {
                                match_offset = R0;
                            }
                            else if (match_offset == 1) {
                                match_offset = R1;
                                R1 = R0; R0 = match_offset;
                            }
                            else /* match_offset == 2 */ {
                                match_offset = R2;
                                R2 = R0; R0 = match_offset;
                            }

                            rundest = window + window_posn;
                            runsrc  = rundest - match_offset;
                            window_posn += match_length;
                            this_run -= match_length;

                            /* copy any wrapped around source data */
                            while ((runsrc < window) && (match_length-- > 0)) {
                                *rundest++ = *(runsrc + window_size); runsrc++;
                            }
                            /* copy match data - no worries about destination wraps */
                            while (match_length-- > 0) *rundest++ = *runsrc++;

                        }
                    }
                    break;

                case LZX_BLOCKTYPE_UNCOMPRESSED:
                    if ((inpos + this_run) > endinp) return DECR_ILLEGALDATA;
                    memcpy(window + window_posn, inpos, (size_t) this_run);
                    inpos += this_run; window_posn += this_run;
                    break;

                default:
                    return DECR_ILLEGALDATA; /* might as well */
            }

        }
    }

    if (togo != 0) return DECR_ILLEGALDATA;
    memcpy(outpos, window + ((!window_posn) ? window_size : window_posn) - outlen, (size_t) outlen);

    pState->window_posn = window_posn;
    pState->R0 = R0;
    pState->R1 = R1;
    pState->R2 = R2;

    /* intel E8 decoding */
    if ((pState->frames_read++ < 32768) && pState->intel_filesize != 0) {
        if (outlen <= 6 || !pState->intel_started) {
            pState->intel_curpos += outlen;
        }
        else {
            UBYTE *data    = outpos;
            UBYTE *dataend = data + outlen - 10;
            LONG curpos    = pState->intel_curpos;
            LONG filesize  = pState->intel_filesize;
            LONG abs_off, rel_off;

            pState->intel_curpos = curpos + outlen;

            while (data < dataend) {
                if (*data++ != 0xE8) { curpos++; continue; }
                abs_off = data[0] | (data[1]<<8) | (data[2]<<16) | (data[3]<<24);
                if ((abs_off >= -curpos) && (abs_off < filesize)) {
                    rel_off = (abs_off >= 0) ? abs_off - curpos : abs_off + filesize;
                    data[0] = (UBYTE) rel_off;
                    data[1] = (UBYTE) (rel_off >> 8);
                    data[2] = (UBYTE) (rel_off >> 16);
                    data[3] = (UBYTE) (rel_off >> 24);
                }
                data += 4;
                curpos += 5;
            }
        }
    }
    return DECR_OK;
}

#ifdef LZX_CHM_TESTDRIVER
int main(int c, char **v)
{
    FILE *fin, *fout;
    struct LZXstate state;
    UBYTE ibuf[16384];
    UBYTE obuf[32768];
    int ilen, olen;
    int status;
    int i;
    int count=0;
    int w = atoi(v[1]);
    LZXinit(&state, w);
    fout = fopen(v[2], "wb");
    for (i=3; i<c; i++)
    {
        fin = fopen(v[i], "rb");
        ilen = fread(ibuf, 1, 16384, fin);
        status = LZXdecompress(&state, ibuf, obuf, ilen, 32768);
        switch (status)
        {
            case DECR_OK:
                printf("ok\n");
                fwrite(obuf, 1, 32768, fout);
                break;
            case DECR_DATAFORMAT:
                printf("bad format\n");
                break;
            case DECR_ILLEGALDATA:
                printf("illegal data\n");
                break;
            case DECR_NOMEMORY:
                printf("no memory\n");
                break;
            default:
                break;
        }
        fclose(fin);
        if (++count == 2)
        {
            count = 0;
            LZXreset(&state);
        }
    }
    fclose(fout);
}
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美唯美清纯偷拍| 丰满放荡岳乱妇91ww| 欧美日本在线一区| 香蕉加勒比综合久久| 欧美日韩成人在线| 蜜桃av一区二区| 国产喂奶挤奶一区二区三区| 成人综合激情网| 一区二区三区在线免费| 欧美日韩国产中文| 久久99久久精品欧美| 久久精品日韩一区二区三区| 成人av影院在线| 一区二区三区日韩欧美精品 | 专区另类欧美日韩| 欧美自拍偷拍午夜视频| 日本三级韩国三级欧美三级| 精品免费日韩av| 91免费国产在线| 日本亚洲天堂网| 中文一区在线播放| 欧美顶级少妇做爰| 国产东北露脸精品视频| 亚洲成人激情综合网| 精品久久久久久久久久久久久久久久久 | 欧美大胆人体bbbb| 岛国一区二区在线观看| 亚洲一区二区三区视频在线播放| 91精品国产综合久久国产大片| 国产成人免费在线视频| 亚洲va欧美va天堂v国产综合| 久久这里只精品最新地址| 91豆麻精品91久久久久久| 裸体歌舞表演一区二区| 亚洲伦理在线精品| 国产亚洲综合av| 欧美另类z0zxhd电影| 成人污污视频在线观看| 免费成人性网站| 亚洲午夜精品在线| 欧美激情一区二区三区不卡| 日韩三区在线观看| 精品视频在线免费观看| hitomi一区二区三区精品| 蜜臀av一区二区三区| 亚洲美腿欧美偷拍| 国产日本亚洲高清| 日韩欧美一级特黄在线播放| 在线视频一区二区免费| 国产iv一区二区三区| 激情图片小说一区| 日韩国产高清在线| 亚洲资源在线观看| 亚洲欧美成aⅴ人在线观看| 国产三级精品三级在线专区| 精品日产卡一卡二卡麻豆| 欧美一区二区二区| 欧美日韩日本视频| 在线国产电影不卡| 91免费在线看| 色伊人久久综合中文字幕| 粉嫩在线一区二区三区视频| 国产精品影视在线| 国产精选一区二区三区| 久久成人免费网| 久久99精品久久久久久国产越南 | 久久嫩草精品久久久精品一| 欧美一级生活片| 91精品婷婷国产综合久久性色| 欧美亚洲高清一区二区三区不卡| 色婷婷久久久综合中文字幕| 99精品视频在线播放观看| 成人动漫一区二区| jizz一区二区| 91九色最新地址| 欧美日韩中文字幕一区二区| 精品视频一区二区不卡| 欧美少妇bbb| 在线91免费看| 欧美成人精精品一区二区频| 欧美电视剧在线观看完整版| 久久亚洲私人国产精品va媚药| 精品国产一区二区精华| 久久久夜色精品亚洲| 久久精品欧美一区二区三区麻豆 | 色天天综合久久久久综合片| 91小视频免费观看| 精品视频在线免费| 日韩精品一区二| 欧美国产一区在线| 亚洲视频中文字幕| 亚洲国产成人av网| 调教+趴+乳夹+国产+精品| 日韩精品成人一区二区三区| 日本vs亚洲vs韩国一区三区二区| 韩国精品一区二区| 成人亚洲精品久久久久软件| 99精品在线观看视频| 欧美日韩国产系列| 精品久久久久一区| 中文字幕亚洲区| 日韩电影网1区2区| 丁香婷婷综合激情五月色| 91九色02白丝porn| 精品国产91久久久久久久妲己| 国产精品全国免费观看高清| 亚洲国产日韩av| 国产在线一区二区| 色综合久久久久综合99| 日韩亚洲欧美成人一区| 中文字幕日本乱码精品影院| 水野朝阳av一区二区三区| 国产v综合v亚洲欧| 欧美老肥妇做.爰bbww视频| 337p日本欧洲亚洲大胆色噜噜| 亚洲婷婷在线视频| 久久99久久久久久久久久久| 日本韩国欧美在线| 精品精品欲导航| 亚洲一区二区av在线| 国产高清亚洲一区| 欧美精品久久天天躁| 国产精品福利在线播放| 蜜臀av性久久久久蜜臀av麻豆| 大陆成人av片| 欧美大片日本大片免费观看| 亚洲人成影院在线观看| 久久精品国产亚洲一区二区三区| 99久免费精品视频在线观看| 欧美v国产在线一区二区三区| 亚洲麻豆国产自偷在线| 国产一区二区三区最好精华液| 欧美色中文字幕| 国产嫩草影院久久久久| 麻豆91在线观看| 欧美日韩精品二区第二页| 国产精品人成在线观看免费| 狠狠色狠狠色综合系列| 欧美亚洲愉拍一区二区| 中文字幕一区二区不卡| 国产99久久久国产精品潘金| 日韩午夜激情电影| 午夜欧美视频在线观看 | 成av人片一区二区| 精品国精品自拍自在线| 肉肉av福利一精品导航| 一本到不卡免费一区二区| 国产精品素人视频| 国产精品伊人色| 久久影院午夜片一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美日韩日本视频| 一区二区三区在线观看国产 | 亚洲成人中文在线| 91亚洲国产成人精品一区二区三 | 欧美精品一区二区久久婷婷 | 成人丝袜18视频在线观看| 久久综合狠狠综合久久激情| 久久99精品视频| 欧美大片一区二区三区| 奇米综合一区二区三区精品视频| 欧美视频精品在线| 午夜日韩在线电影| 91精品国产高清一区二区三区| 性感美女久久精品| 91精品综合久久久久久| 秋霞午夜av一区二区三区| 欧美一区二区三区视频在线| 美腿丝袜亚洲一区| 欧美精品一区视频| 国产成人精品三级| 国产精品看片你懂得| av资源网一区| 一区二区三区视频在线看| 欧美丝袜丝nylons| 日韩在线a电影| 精品日韩一区二区三区| 国产精品99久久久久久有的能看 | 精品一区二区免费在线观看| 精品国产露脸精彩对白| 国产精品一区二区久久精品爱涩| 国产日韩精品一区二区三区在线| thepron国产精品| 亚洲制服丝袜av| 欧美一卡在线观看| 国产二区国产一区在线观看| 日韩美女啊v在线免费观看| 在线观看视频一区| 日韩精品亚洲一区二区三区免费| 欧美草草影院在线视频| 成人午夜免费视频| 亚洲一区二区精品视频| 精品国产91久久久久久久妲己| 成人久久18免费网站麻豆 | 久久er99热精品一区二区| 日本一区二区三区在线不卡| 在线观看日韩毛片| 久久精品噜噜噜成人av农村| 国产精品女人毛片| 欧美精品免费视频|