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

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

?? inflate.c

?? tftp client sorser code,Please download it and compolie it ,byebye
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <sys/types.h>#include "tailor.h"#if defined(STDC_HEADERS) || !defined(NO_STDLIB_H)#  include <stdlib.h>#endif#include "gzip.h"#define slide windowstruct huft {  uch e;                /* number of extra bits or operation */  uch b;                /* number of bits in this code or subcode */  union {    ush n;              /* literal, length base, or distance base */    struct huft *t;     /* pointer to next level of table */  } v;};/* Function prototypes */int huft_build OF((unsigned *, unsigned, unsigned, ush *, ush *,                   struct huft **, int *));int huft_free OF((struct huft *));int inflate_codes OF((struct huft *, struct huft *, int, int));int inflate_stored OF((void));int inflate_fixed OF((void));int inflate_dynamic OF((void));int inflate_block OF((int *));int inflate OF((void));#define wp outcnt#define flush_output(w) (wp=(w),flush_window())/* Tables for deflate from PKZIP's appnote.txt. */static unsigned border[] = {    /* Order of the bit length code lengths */        16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};static ush cplens[] = {         /* Copy lengths for literal codes 257..285 */        3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,        35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};        /* note: see note #13 above about the 258 in this list. */static ush cplext[] = {         /* Extra bits for literal codes 257..285 */        0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,        3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99}; /* 99==invalid */static ush cpdist[] = {         /* Copy offsets for distance codes 0..29 */        1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,        257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,        8193, 12289, 16385, 24577};static ush cpdext[] = {         /* Extra bits for distance codes */        0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,        7, 7, 8, 8, 9, 9, 10, 10, 11, 11,        12, 12, 13, 13};ulg bb;                         /* bit buffer */unsigned bk;                    /* bits in bit buffer */ush mask_bits[] = {    0x0000,    0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,    0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff};#ifdef CRYPT  uch cc;#  define NEXTBYTE() \     (decrypt ? (cc = get_byte(), zdecode(cc), cc) : get_byte())#else#  define NEXTBYTE()  (uch)get_byte()#endif#define NEEDBITS(n) {while(k<(n)){b|=((ulg)NEXTBYTE())<<k;k+=8;}}#define DUMPBITS(n) {b>>=(n);k-=(n);}int lbits = 9;          /* bits in base literal/length lookup table */int dbits = 6;          /* bits in base distance lookup table *//* If BMAX needs to be larger than 16, then h and x[] should be ulg. */#define BMAX 16         /* maximum bit length of any code (16 for explode) */#define N_MAX 288       /* maximum number of codes in any set */unsigned hufts;         /* track memory usage *///int huft_build(unsigned *b, unsigned n, unsigned s, ush *d, ush *e, struct huft **t, int *m)


int huft_build(b, n, s, d, e, t, m)unsigned *b;            /* code lengths in bits (all assumed <= BMAX) */unsigned n;             /* number of codes (assumed <= N_MAX) */unsigned s;             /* number of simple-valued codes (0..s-1) */ush *d;                 /* list of base values for non-simple codes */ush *e;                 /* list of extra bits for non-simple codes */struct huft **t;        /* result: starting table */int *m;                 /* maximum lookup bits, returns actual */{  unsigned a;                   /* counter for codes of length k */  unsigned c[BMAX+1];           /* bit length count table */  unsigned f;                   /* i repeats in table every f entries */  int g;                        /* maximum code length */  int h;                        /* table level */  register unsigned i;          /* counter, current code */  register unsigned j;          /* counter */  register int k;               /* number of bits in current code */  int l;                        /* bits per table (returned in m) */  register unsigned *p;         /* pointer into c[], b[], or v[] */  register struct huft *q;      /* points to current table */  struct huft r;                /* table entry for structure assignment */  struct huft *u[BMAX];         /* table stack */  unsigned v[N_MAX];            /* values in order of bit length */  register int w;               /* bits before this table == (l * h) */  unsigned x[BMAX+1];           /* bit offsets, then code stack */  unsigned *xp;                 /* pointer into x */  int y;                        /* number of dummy codes added */  unsigned z;                   /* number of entries in current table */  /* Generate counts for each bit length */  memzero(c, sizeof(c));  p = b;  i = n;  do {    Tracecv(*p, (stderr, (n-i >= ' ' && n-i <= '~' ? "%c %d\n" : "0x%x %d\n"), 	    n-i, *p));    c[*p]++;                    /* assume all entries <= BMAX */    p++;                      /* Can't combine with above line (Solaris bug) */  } while (--i);  if (c[0] == n)                /* null input--all zero length codes */  {    *t = (struct huft *)NULL;    *m = 0;    return 0;  }  /* Find minimum and maximum length, bound *m by those */  l = *m;  for (j = 1; j <= BMAX; j++)    if (c[j])      break;  k = j;                        /* minimum code length */  if ((unsigned)l < j)    l = j;  for (i = BMAX; i; i--)    if (c[i])      break;  g = i;                        /* maximum code length */  if ((unsigned)l > i)    l = i;  *m = l;  /* Adjust last length count to fill out codes, if needed */  for (y = 1 << j; j < i; j++, y <<= 1)    if ((y -= c[j]) < 0)      return 2;                 /* bad input: more codes than bits */  if ((y -= c[i]) < 0)    return 2;  c[i] += y;  /* Generate starting offsets into the value table for each length */  x[1] = j = 0;  p = c + 1;  xp = x + 2;  while (--i) {                 /* note that i == g from above */    *xp++ = (j += *p++);  }  /* Make a table of values in order of bit lengths */  p = b;  i = 0;  do {    if ((j = *p++) != 0)      v[x[j]++] = i;  } while (++i < n);  /* Generate the Huffman codes and for each, make the table entries */  x[0] = i = 0;                 /* first Huffman code is zero */  p = v;                        /* grab values in bit order */  h = -1;                       /* no tables yet--level -1 */  w = -l;                       /* bits decoded == (l * h) */  u[0] = (struct huft *)NULL;   /* just to keep compilers happy */  q = (struct huft *)NULL;      /* ditto */  z = 0;                        /* ditto */  /* go through the bit lengths (k already is bits in shortest code) */  for (; k <= g; k++)  {    a = c[k];    while (a--)    {      /* here i is the Huffman code of length k bits for value *p */      /* make tables up to required level */      while (k > w + l)      {        h++;        w += l;                 /* previous table always l bits */        /* compute minimum size table less than or equal to l bits */        z = (z = g - w) > (unsigned)l ? l : z;  /* upper limit on table size */        if ((f = 1 << (j = k - w)) > a + 1)     /* try a k-w bit table */        {                       /* too few codes for k-w bit table */          f -= a + 1;           /* deduct codes from patterns left */          xp = c + k;          while (++j < z)       /* try smaller tables up to z bits */          {            if ((f <<= 1) <= *++xp)              break;            /* enough codes to use up j bits */            f -= *xp;           /* else deduct codes from patterns */          }        }        z = 1 << j;             /* table entries for j-bit table */        /* allocate and link in new table */        if ((q = (struct huft *)malloc((z + 1)*sizeof(struct huft))) ==            (struct huft *)NULL)        {          if (h)            huft_free(u[0]);          return 3;             /* not enough memory */        }        hufts += z + 1;         /* track memory usage */        *t = q + 1;             /* link to list for huft_free() */        *(t = &(q->v.t)) = (struct huft *)NULL;        u[h] = ++q;             /* table starts after link */        /* connect to last table, if there is one */        if (h)        {          x[h] = i;             /* save pattern for backing up */          r.b = (uch)l;         /* bits to dump before this table */          r.e = (uch)(16 + j);  /* bits in this table */          r.v.t = q;            /* pointer to this table */          j = i >> (w - l);     /* (get around Turbo C bug) */          u[h-1][j] = r;        /* connect to last table */        }      }      /* set up table entry in r */      r.b = (uch)(k - w);      if (p >= v + n)        r.e = 99;               /* out of values--invalid code */      else if (*p < s)      {        r.e = (uch)(*p < 256 ? 16 : 15);    /* 256 is end-of-block code */        r.v.n = (ush)(*p);             /* simple code is just the value */	p++;                           /* one compiler does not like *p++ */      }      else      {        r.e = (uch)e[*p - s];   /* non-simple--look up in lists */        r.v.n = d[*p++ - s];      }      /* fill code-like entries with r */      f = 1 << (k - w);      for (j = i >> w; j < z; j += f)        q[j] = r;      /* backwards increment the k-bit code i */      for (j = 1 << (k - 1); i & j; j >>= 1)        i ^= j;      i ^= j;      /* backup over finished tables */      while ((i & ((1 << w) - 1)) != x[h])      {        h--;                    /* don't need to update q */        w -= l;      }    }  }  /* Return true (1) if we were given an incomplete table */  return y != 0 && g != 1;}int huft_free(t)struct huft *t;         /* table to free *//* Free the malloc'ed tables built by huft_build(), which makes a linked   list of the tables it made, with the links in a dummy first entry of   each table. */{  register struct huft *p, *q;  /* Go through linked list, freeing from the malloced (t[-1]) address. */  p = t;  while (p != (struct huft *)NULL)  {    q = (--p)->v.t;    free((char*)p);    p = q;  }   return 0;}//int inflate_codes(struct huft *tl, struct huft *td, int bl, int bd)int inflate_codes(tl, td, bl, bd)struct huft *tl, *td;   /* literal/length and distance decoder tables */int bl, bd;             /* number of bits decoded by tl[] and td[] *//* inflate (decompress) the codes in a deflated (compressed) block.   Return an error code or zero if it all goes ok. */{  register unsigned e;  /* table entry flag/number of extra bits */  unsigned n, d;        /* length and index for copy */  unsigned long  w;           /* current window position */  struct huft *t;       /* pointer to table entry */  unsigned ml, md;      /* masks for bl and bd bits */  register ulg b;       /* bit buffer */  register unsigned k;  /* number of bits in bit buffer */  long nk = 0;  /* make local copies of globals */  b = bb;                       /* initialize bit buffer */  k = bk;  w = wp;                       /* initialize window position */  /* inflate the coded data */  ml = mask_bits[bl];           /* precompute masks for speed */  md = mask_bits[bd];  for (;;)                      /* do until end of block */  {    NEEDBITS((unsigned)bl)    if ((e = (t = tl + ((unsigned)b & ml))->e) > 16)      do {        if (e == 99)          return 1;        DUMPBITS(t->b)        e -= 16;        NEEDBITS(e)      } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16);    DUMPBITS(t->b)    if (e == 16)                /* then it's a literal */    {      slide[w++] = (uch)t->v.n;      Tracevv((stderr, "%c", slide[w-1]));      if (w == WSIZE)      {        flush_output(w);        w = 0;      }    }    else                        /* it's an EOB or a length */    {      /* exit if end of block */      if (e == 15)        break;      /* get length of block to copy */      NEEDBITS(e)      n = t->v.n + ((unsigned)b & mask_bits[e]);      DUMPBITS(e);      /* decode distance of block to copy */      NEEDBITS((unsigned)bd)      if ((e = (t = td + ((unsigned)b & md))->e) > 16)        do {          if (e == 99)            return 1;          DUMPBITS(t->b)          e -= 16;          NEEDBITS(e)        } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16);      DUMPBITS(t->b)      NEEDBITS(e)      d = w - t->v.n - ((unsigned)b & mask_bits[e]);      DUMPBITS(e)      Tracevv((stderr,"\\[%d,%d]", w-d, n));      /* do the copy */      do {        n -= (e = (e = WSIZE - ((d &= WSIZE-1) > w ? d : w)) > n ? n : e);#if !defined(NOMEMCPY) && !defined(DEBUG)        if (w - d >= e)         /* (this test assumes unsigned comparison) */        {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美区自拍先锋| 色呦呦网站一区| 91小宝寻花一区二区三区| 欧美日本在线观看| 国产精品理论片| 精东粉嫩av免费一区二区三区| a级精品国产片在线观看| 欧美mv日韩mv| 亚洲r级在线视频| 一本色道综合亚洲| 国产婷婷色一区二区三区四区| 日本欧美在线观看| 欧美在线999| 亚洲欧美日韩久久| www.爱久久.com| 国产精品无人区| 国产高清在线精品| 亚洲精品在线观| 麻豆一区二区三| 777亚洲妇女| 亚洲a一区二区| 欧美乱妇23p| 视频精品一区二区| 欧美日韩一区小说| 亚洲午夜激情av| 欧美日韩美少妇| 亚洲午夜国产一区99re久久| 91九色最新地址| 亚洲精品中文字幕在线观看| av色综合久久天堂av综合| 久久综合九色综合欧美亚洲| 免费在线观看一区二区三区| 7777精品伊人久久久大香线蕉完整版| 亚洲国产视频直播| 51精品国自产在线| 久久福利视频一区二区| 欧美成人性福生活免费看| 激情综合网最新| 国产日产欧美一区| 99亚偷拍自图区亚洲| 日本伊人色综合网| 日韩欧美国产一区二区在线播放| 亚洲国产精品久久人人爱蜜臀 | 国产精品女主播av| 99综合电影在线视频| 亚洲少妇屁股交4| 欧美日韩一区二区三区免费看| 亚洲成人三级小说| 日韩精品一区在线观看| 国产成人精品综合在线观看| 日韩美女精品在线| 6080yy午夜一二三区久久| 美女性感视频久久| 中文字幕第一区二区| 91在线精品秘密一区二区| 亚洲一区在线视频| 欧美videofree性高清杂交| 国产二区国产一区在线观看| 日韩毛片在线免费观看| 欧美一区永久视频免费观看| 国产福利一区二区三区视频在线| 综合自拍亚洲综合图不卡区| 91精品黄色片免费大全| 高清视频一区二区| 日韩高清一区二区| 国产精品高潮呻吟久久| 91精品国产综合久久蜜臀| 国产激情视频一区二区三区欧美| 玉足女爽爽91| 久久久亚洲精品一区二区三区| 色哟哟欧美精品| 极品销魂美女一区二区三区| 亚洲精品欧美激情| 久久久国产午夜精品 | 亚洲色图欧美偷拍| 日韩一区二区三区观看| 一本色道久久综合亚洲91| 麻豆精品在线观看| 亚洲一区二区三区视频在线播放| 久久亚洲综合av| 69精品人人人人| 色综合久久久久综合| 国产成人综合在线观看| 天堂久久一区二区三区| 国产精品美女久久久久aⅴ| 日韩女优视频免费观看| 91国偷自产一区二区使用方法| 久久福利资源站| 日韩有码一区二区三区| 亚洲美女淫视频| 国产精品嫩草久久久久| 欧美成人精品二区三区99精品| 欧美在线观看你懂的| 色先锋资源久久综合| 国产成人在线观看免费网站| caoporen国产精品视频| 国产精品资源在线看| 老司机午夜精品99久久| 亚洲va韩国va欧美va精品| 亚洲激情在线激情| 一区视频在线播放| 亚洲欧洲国产专区| 国产精品美女久久久久aⅴ | 91麻豆精品国产综合久久久久久| 99视频精品在线| 懂色av一区二区在线播放| 国产精品99久久久久久似苏梦涵| 卡一卡二国产精品 | 一区二区三区精品在线观看| 国产精品乱码一区二三区小蝌蚪| 久久精品网站免费观看| 久久精品水蜜桃av综合天堂| 日本一区二区免费在线观看视频 | 欧美xxxx在线观看| 日韩三级.com| www国产亚洲精品久久麻豆| 精品国产一区二区三区久久影院| 日韩欧美精品在线| 精品免费国产一区二区三区四区| 精品日韩欧美一区二区| 久久综合久久久久88| 欧美经典三级视频一区二区三区| 中文在线资源观看网站视频免费不卡| 国产精品久久久久久久久免费樱桃| 中文字幕日韩av资源站| 亚洲一区在线视频观看| 日韩av中文字幕一区二区| 老司机精品视频在线| 国产成人av一区二区三区在线| 不卡高清视频专区| 欧美在线看片a免费观看| 91精品国产91热久久久做人人| 91精品国产综合久久久久久漫画| 欧美精品一区二区三区在线| 国产精品美女久久久久久久久 | 激情都市一区二区| 成人丝袜视频网| 在线看日本不卡| 欧美一级日韩不卡播放免费| 久久精品欧美一区二区三区不卡 | 国产亚洲人成网站| 亚洲视频一二三区| 日韩av成人高清| 国产精品原创巨作av| 色综合一个色综合亚洲| 91精品国产综合久久香蕉麻豆 | 99re热视频精品| 欧美日韩国产精选| 久久精品免费在线观看| 亚洲综合视频网| 国产精品2024| 欧美日韩电影一区| 亚洲国产精品成人久久综合一区| 亚洲综合999| 国产成人精品影视| 欧美精品粉嫩高潮一区二区| 国产性做久久久久久| 亚洲综合精品久久| 国产不卡免费视频| 欧美一级久久久| 亚洲最大色网站| 粉嫩久久99精品久久久久久夜 | 中文字幕成人av| 日本中文在线一区| 99视频热这里只有精品免费| 日韩一区二区三区电影| 艳妇臀荡乳欲伦亚洲一区| 国产精品资源在线看| 欧美一区二区三区的| 亚洲精品第一国产综合野| 国产成人在线视频免费播放| 制服丝袜日韩国产| 一区二区成人在线观看| 成人国产在线观看| 久久久av毛片精品| 久久精品国产成人一区二区三区| 欧美色综合影院| 亚洲欧美国产高清| 成人国产精品免费观看视频| 日韩无一区二区| 亚洲电影激情视频网站| 91久久精品一区二区三| 亚洲天堂a在线| 懂色av中文字幕一区二区三区 | 6080午夜不卡| 亚洲成人动漫av| 欧美日精品一区视频| 亚洲精品日产精品乱码不卡| 99麻豆久久久国产精品免费| 久久女同精品一区二区| 国产精品自产自拍| 久久免费偷拍视频| 国产成人欧美日韩在线电影| 精品久久久久久亚洲综合网| 免费在线看成人av| 日韩精品一区二区三区蜜臀 | 午夜视频在线观看一区| 国产日产欧美一区二区视频| 国产激情精品久久久第一区二区| 精品国内二区三区|