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

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

?? inffas8664.c

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數據庫控件
?? C
字號:
/* inffas8664.c is a hand tuned assembler version of inffast.c - fast decoding
 * version for AMD64 on Windows using Microsoft C compiler
 *
 * Copyright (C) 1995-2003 Mark Adler
 * For conditions of distribution and use, see copyright notice in zlib.h
 *
 * Copyright (C) 2003 Chris Anderson <christop@charm.net>
 * Please use the copyright conditions above.
 *
 * 2005 - Adaptation to Microsoft C Compiler for AMD64 by Gilles Vollant
 *
 * inffas8664.c call function inffas8664fnc in inffasx64.asm
 *  inffasx64.asm is automatically convert from AMD64 portion of inffas86.c
 *
 * Dec-29-2003 -- I added AMD64 inflate asm support.  This version is also
 * slightly quicker on x86 systems because, instead of using rep movsb to copy
 * data, it uses rep movsw, which moves data in 2-byte chunks instead of single
 * bytes.  I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates
 * from http://fedora.linux.duke.edu/fc1_x86_64
 * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with
 * 1GB ram.  The 64-bit version is about 4% faster than the 32-bit version,
 * when decompressing mozilla-source-1.3.tar.gz.
 *
 * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
 * the gcc -S output of zlib-1.2.0/inffast.c.  Zlib-1.2.0 is in beta release at
 * the moment.  I have successfully compiled and tested this code with gcc2.96,
 * gcc3.2, icc5.0, msvc6.0.  It is very close to the speed of inffast.S
 * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
 * enabled.  I will attempt to merge the MMX code into this version.  Newer
 * versions of this and inffast.S can be found at
 * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
 *
 */

#include <stdio.h>
#include "zutil.h"
#include "inftrees.h"
#include "inflate.h"
#include "inffast.h"

/* Mark Adler's comments from inffast.c: */

/*
   Decode literal, length, and distance codes and write out the resulting
   literal and match bytes until either not enough input or output is
   available, an end-of-block is encountered, or a data error is encountered.
   When large enough input and output buffers are supplied to inflate(), for
   example, a 16K input buffer and a 64K output buffer, more than 95% of the
   inflate execution time is spent in this routine.

   Entry assumptions:

        state->mode == LEN
        strm->avail_in >= 6
        strm->avail_out >= 258
        start >= strm->avail_out
        state->bits < 8

   On return, state->mode is one of:

        LEN -- ran out of enough output space or enough available input
        TYPE -- reached end of block code, inflate() to interpret next block
        BAD -- error in block data

   Notes:

    - The maximum input bits used by a length/distance pair is 15 bits for the
      length code, 5 bits for the length extra, 15 bits for the distance code,
      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
      Therefore if strm->avail_in >= 6, then there is enough input to avoid
      checking for available input while decoding.

    - The maximum bytes that a single length/distance pair can output is 258
      bytes, which is the maximum length that can be coded.  inflate_fast()
      requires strm->avail_out >= 258 for each loop to avoid checking for
      output space.
 */



    typedef struct inffast_ar {
/* 64   32                               x86  x86_64 */
/* ar offset                              register */
/*  0    0 */ void *esp;                /* esp save */
/*  8    4 */ void *ebp;                /* ebp save */
/* 16    8 */ unsigned char FAR *in;    /* esi rsi  local strm->next_in */
/* 24   12 */ unsigned char FAR *last;  /*     r9   while in < last */
/* 32   16 */ unsigned char FAR *out;   /* edi rdi  local strm->next_out */
/* 40   20 */ unsigned char FAR *beg;   /*          inflate()'s init next_out */
/* 48   24 */ unsigned char FAR *end;   /*     r10  while out < end */
/* 56   28 */ unsigned char FAR *window;/*          size of window, wsize!=0 */
/* 64   32 */ code const FAR *lcode;    /* ebp rbp  local strm->lencode */
/* 72   36 */ code const FAR *dcode;    /*     r11  local strm->distcode */
/* 80   40 */ size_t /*unsigned long */hold;       /* edx rdx  local strm->hold */
/* 88   44 */ unsigned bits;            /* ebx rbx  local strm->bits */
/* 92   48 */ unsigned wsize;           /*          window size */
/* 96   52 */ unsigned write;           /*          window write index */
/*100   56 */ unsigned lmask;           /*     r12  mask for lcode */
/*104   60 */ unsigned dmask;           /*     r13  mask for dcode */
/*108   64 */ unsigned len;             /*     r14  match length */
/*112   68 */ unsigned dist;            /*     r15  match distance */
/*116   72 */ unsigned status;          /*          set when state chng*/
    } type_ar;
#ifdef ASMINF

void inflate_fast(strm, start)
z_streamp strm;
unsigned start;         /* inflate()'s starting value for strm->avail_out */
{
    struct inflate_state FAR *state;
    type_ar ar;
    void inffas8664fnc(struct inffast_ar * par);

    

#if (defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )) || (defined(_MSC_VER) && defined(_M_AMD64))
#define PAD_AVAIL_IN 6
#define PAD_AVAIL_OUT 258    
#else
#define PAD_AVAIL_IN 5
#define PAD_AVAIL_OUT 257
#endif

    /* copy state to local variables */
    state = (struct inflate_state FAR *)strm->state;

    ar.in = strm->next_in;
    ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN);
    ar.out = strm->next_out;
    ar.beg = ar.out - (start - strm->avail_out);
    ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT);
    ar.wsize = state->wsize;
    ar.write = state->write;
    ar.window = state->window;
    ar.hold = state->hold;
    ar.bits = state->bits;
    ar.lcode = state->lencode;
    ar.dcode = state->distcode;
    ar.lmask = (1U << state->lenbits) - 1;
    ar.dmask = (1U << state->distbits) - 1;

    /* decode literals and length/distances until end-of-block or not enough
       input data or output space */

    /* align in on 1/2 hold size boundary */
    while (((size_t)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) {
        ar.hold += (unsigned long)*ar.in++ << ar.bits;
        ar.bits += 8;
    }

    inffas8664fnc(&ar);

    if (ar.status > 1) {
        if (ar.status == 2)
            strm->msg = "invalid literal/length code";
        else if (ar.status == 3)
            strm->msg = "invalid distance code";
        else
            strm->msg = "invalid distance too far back";
        state->mode = BAD;
    }
    else if ( ar.status == 1 ) {
        state->mode = TYPE;
    }

    /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
    ar.len = ar.bits >> 3;
    ar.in -= ar.len;
    ar.bits -= ar.len << 3;
    ar.hold &= (1U << ar.bits) - 1;

    /* update state and return */
    strm->next_in = ar.in;
    strm->next_out = ar.out;
    strm->avail_in = (unsigned)(ar.in < ar.last ?
                                PAD_AVAIL_IN + (ar.last - ar.in) :
                                PAD_AVAIL_IN - (ar.in - ar.last));
    strm->avail_out = (unsigned)(ar.out < ar.end ?
                                 PAD_AVAIL_OUT + (ar.end - ar.out) :
                                 PAD_AVAIL_OUT - (ar.out - ar.end));
    state->hold = (unsigned long)ar.hold;
    state->bits = ar.bits;
    return;
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美中文在线| 欧美精品xxxxbbbb| 亚洲综合在线视频| 中文字幕在线观看不卡视频| 欧美一区二区三区电影| 337p亚洲精品色噜噜狠狠| 欧美日韩精品福利| 91麻豆精品久久久久蜜臀| 欧美一级日韩一级| 日韩一区二区三区在线视频| 欧洲视频一区二区| 色综合久久综合中文综合网| 欧美一区二区网站| 久久久99精品久久| 亚洲成人自拍网| 精久久久久久久久久久| 色综合久久久久久久久| 欧美一级搡bbbb搡bbbb| 成人免费小视频| 国内成人精品2018免费看| 91国产视频在线观看| 欧美高清一级片在线观看| 亚洲成人av在线电影| 91久久人澡人人添人人爽欧美 | 欧美一区二区大片| 亚洲精品免费播放| 成人动漫一区二区三区| 日韩精品一区二区三区四区| 亚洲成人自拍网| 在线日韩一区二区| 亚洲免费观看视频| 99re在线精品| 国产精品区一区二区三区| 国产麻豆视频一区| 久久一区二区三区国产精品| 午夜精品久久久久久| 一本大道久久a久久综合| 日韩一区欧美一区| 99久久精品国产精品久久 | 国内精品久久久久影院色| 51精品久久久久久久蜜臀| 日韩中文字幕91| 欧美一级黄色录像| 韩国毛片一区二区三区| 久久久久久亚洲综合影院红桃| 国产精品99久久久久久似苏梦涵| xvideos.蜜桃一区二区| 国产精品一级片| 亚洲视频狠狠干| 欧美日韩国产首页在线观看| 五月激情综合网| 欧美大黄免费观看| 成人黄色网址在线观看| 亚洲私人黄色宅男| 91精品国产欧美一区二区| 国产真实乱对白精彩久久| 日韩免费成人网| 波多野结衣欧美| 亚洲一区二区精品3399| 日韩欧美亚洲国产另类| 丁香网亚洲国际| 亚洲va在线va天堂| 国产欧美精品国产国产专区 | 日本道精品一区二区三区| 国产成人亚洲精品青草天美| 一区二区在线看| 欧美国产丝袜视频| 日韩一区二区三区电影| 91高清视频在线| 欧美色精品天天在线观看视频| 日韩av高清在线观看| 亚洲激情av在线| 亚洲精品亚洲人成人网在线播放| 91精品久久久久久久99蜜桃| 91国产精品成人| 一本色道亚洲精品aⅴ| 色综合夜色一区| 国产91露脸合集magnet| 国产精品一卡二卡在线观看| 国产在线观看免费一区| 国产最新精品免费| 韩国女主播成人在线| 九一久久久久久| 国产激情精品久久久第一区二区| 国内外成人在线视频| 成人免费观看男女羞羞视频| 成人av在线观| 欧美色图一区二区三区| 91精品国产综合久久精品app| 欧美性xxxxxx少妇| 欧美mv日韩mv| 综合久久久久综合| 亚洲一区av在线| 亚洲成人一区二区在线观看| 日本一区中文字幕| 国内精品久久久久影院一蜜桃| 成人中文字幕在线| 欧美色区777第一页| 538在线一区二区精品国产| 久久影院午夜片一区| 亚洲一级在线观看| 精品一区二区三区免费视频| 成人午夜在线免费| 欧美一区二区三区成人| 亚洲欧洲成人精品av97| 奇米777欧美一区二区| 99综合影院在线| 日韩一级完整毛片| 一区二区三区不卡在线观看| 国产在线一区观看| 欧美一区二区三区在线视频| 亚洲人123区| 成人小视频免费在线观看| 精品国产一区二区在线观看| 亚洲国产精品视频| 欧美性三三影院| 亚洲视频在线一区二区| 成人看片黄a免费看在线| 日韩女优视频免费观看| 日韩精品午夜视频| 日韩视频免费观看高清完整版 | 亚洲欧洲制服丝袜| 国产成人av一区二区| 久久久一区二区| 韩国精品免费视频| 欧美国产精品一区二区| 国产久卡久卡久卡久卡视频精品| 精品人伦一区二区色婷婷| 奇米色一区二区| 日韩一区二区不卡| 国内精品嫩模私拍在线| 国产清纯美女被跳蛋高潮一区二区久久w| 青青草成人在线观看| 久久久99久久| 91视频在线看| 视频一区二区中文字幕| 日韩一区二区精品| 国产精一区二区三区| 中文字幕中文乱码欧美一区二区| 91视频观看视频| 日本91福利区| 中文字幕成人在线观看| 99这里只有久久精品视频| 日韩av一级片| 国产精品久久久久久久第一福利| 色香蕉成人二区免费| 美国欧美日韩国产在线播放| 中文字幕一区二区视频| 欧美xxxxxxxx| 欧美在线视频全部完| 麻豆精品久久精品色综合| 亚洲人午夜精品天堂一二香蕉| 337p亚洲精品色噜噜| eeuss国产一区二区三区| 久久国产三级精品| 亚洲一区二区视频| 国产精品久久久久久久久免费樱桃| 欧美精品亚洲二区| 91黄色免费网站| 97精品久久久午夜一区二区三区| 欧美aaa在线| 免费在线看一区| 亚洲精品亚洲人成人网在线播放| 精品国产3级a| 欧美激情综合五月色丁香 | 日韩综合在线视频| 亚洲成av人片在www色猫咪| 亚洲激情图片小说视频| 亚洲视频图片小说| 亚洲国产一区二区三区青草影视 | 欧美色倩网站大全免费| 欧美性大战久久久久久久蜜臀| 91免费在线视频观看| 99久久婷婷国产精品综合| 色域天天综合网| 欧美性受xxxx| 在线成人午夜影院| 久久久三级国产网站| 中文字幕av在线一区二区三区| 亚洲国产精品ⅴa在线观看| 国产精品大尺度| 一区二区在线观看免费| 五月综合激情日本mⅴ| 亚洲成a天堂v人片| 亚洲一区二区三区视频在线 | 色嗨嗨av一区二区三区| 成人高清免费在线播放| 国产成人免费在线观看| 精品一区二区三区蜜桃| 久久精品国产在热久久| 国产精品一区二区免费不卡| 一道本成人在线| 91精品欧美一区二区三区综合在 | 奇米综合一区二区三区精品视频| 精品在线免费观看| 欧美午夜理伦三级在线观看| 26uuu久久天堂性欧美| 亚洲二区在线视频| jiyouzz国产精品久久| 欧美精品v国产精品v日韩精品|