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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? crc32.c

?? minix操作系統(tǒng)最新版本(3.1.1)的源代碼
?? C
字號(hào):
/* crc32.c -- compute the CRC-32 of a data stream * Copyright (C) 1995-2005 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h * * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing * tables for updating the shift register in one step with three exclusive-ors * instead of four steps with four exclusive-ors.  This results in about a * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3. *//* @(#) $Id: crc32.c,v 1.1 2005/09/23 22:39:00 beng Exp $ *//*  Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore  protection on the static variables used to control the first-use generation  of the crc tables.  Therefore, if you #define DYNAMIC_CRC_TABLE, you should  first call get_crc_table() to initialize the tables before allowing more than  one thread to use crc32(). */#ifdef MAKECRCH#  include <stdio.h>#  ifndef DYNAMIC_CRC_TABLE#    define DYNAMIC_CRC_TABLE#  endif /* !DYNAMIC_CRC_TABLE */#endif /* MAKECRCH */#include "zutil.h"      /* for STDC and FAR definitions */#define local static/* Find a four-byte integer type for crc32_little() and crc32_big(). */#ifndef NOBYFOUR#  ifdef STDC           /* need ANSI C limits.h to determine sizes */#    include <limits.h>#    define BYFOUR#    if (UINT_MAX == 0xffffffffUL)       typedef unsigned int u4;#    else#      if (ULONG_MAX == 0xffffffffUL)         typedef unsigned long u4;#      else#        if (USHRT_MAX == 0xffffffffUL)           typedef unsigned short u4;#        else#          undef BYFOUR     /* can't find a four-byte integer type! */#        endif#      endif#    endif#  endif /* STDC */#endif /* !NOBYFOUR *//* Definitions for doing the crc four data bytes at a time. */#ifdef BYFOUR#  define REV(w) (((w)>>24)+(((w)>>8)&0xff00)+ \                (((w)&0xff00)<<8)+(((w)&0xff)<<24))   local unsigned long crc32_little OF((unsigned long,                        const unsigned char FAR *, unsigned));   local unsigned long crc32_big OF((unsigned long,                        const unsigned char FAR *, unsigned));#  define TBLS 8#else#  define TBLS 1#endif /* BYFOUR *//* Local functions for crc concatenation */local unsigned long gf2_matrix_times OF((unsigned long *mat,                                         unsigned long vec));local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));#ifdef DYNAMIC_CRC_TABLElocal volatile int crc_table_empty = 1;local unsigned long FAR crc_table[TBLS][256];local void make_crc_table OF((void));#ifdef MAKECRCH   local void write_table OF((FILE *, const unsigned long FAR *));#endif /* MAKECRCH *//*  Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:  x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.  Polynomials over GF(2) are represented in binary, one bit per coefficient,  with the lowest powers in the most significant bit.  Then adding polynomials  is just exclusive-or, and multiplying a polynomial by x is a right shift by  one.  If we call the above polynomial p, and represent a byte as the  polynomial q, also with the lowest power in the most significant bit (so the  byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,  where a mod b means the remainder after dividing a by b.  This calculation is done using the shift-register method of multiplying and  taking the remainder.  The register is initialized to zero, and for each  incoming bit, x^32 is added mod p to the register if the bit is a one (where  x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by  x (which is shifting right by one and adding x^32 mod p if the bit shifted  out is a one).  We start with the highest power (least significant bit) of  q and repeat for all eight bits of q.  The first table is simply the CRC of all possible eight bit values.  This is  all the information needed to generate CRCs on data a byte at a time for all  combinations of CRC register values and incoming bytes.  The remaining tables  allow for word-at-a-time CRC calculation for both big-endian and little-  endian machines, where a word is four bytes.*/local void make_crc_table(){    unsigned long c;    int n, k;    unsigned long poly;                 /* polynomial exclusive-or pattern */    /* terms of polynomial defining this crc (except x^32): */    static volatile int first = 1;      /* flag to limit concurrent making */    static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};    /* See if another task is already doing this (not thread-safe, but better       than nothing -- significantly reduces duration of vulnerability in       case the advice about DYNAMIC_CRC_TABLE is ignored) */    if (first) {        first = 0;        /* make exclusive-or pattern from polynomial (0xedb88320UL) */        poly = 0UL;        for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)            poly |= 1UL << (31 - p[n]);        /* generate a crc for every 8-bit value */        for (n = 0; n < 256; n++) {            c = (unsigned long)n;            for (k = 0; k < 8; k++)                c = c & 1 ? poly ^ (c >> 1) : c >> 1;            crc_table[0][n] = c;        }#ifdef BYFOUR        /* generate crc for each value followed by one, two, and three zeros,           and then the byte reversal of those as well as the first table */        for (n = 0; n < 256; n++) {            c = crc_table[0][n];            crc_table[4][n] = REV(c);            for (k = 1; k < 4; k++) {                c = crc_table[0][c & 0xff] ^ (c >> 8);                crc_table[k][n] = c;                crc_table[k + 4][n] = REV(c);            }        }#endif /* BYFOUR */        crc_table_empty = 0;    }    else {      /* not first */        /* wait for the other guy to finish (not efficient, but rare) */        while (crc_table_empty)            ;    }#ifdef MAKECRCH    /* write out CRC tables to crc32.h */    {        FILE *out;        out = fopen("crc32.h", "w");        if (out == NULL) return;        fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");        fprintf(out, " * Generated automatically by crc32.c\n */\n\n");        fprintf(out, "local const unsigned long FAR ");        fprintf(out, "crc_table[TBLS][256] =\n{\n  {\n");        write_table(out, crc_table[0]);#  ifdef BYFOUR        fprintf(out, "#ifdef BYFOUR\n");        for (k = 1; k < 8; k++) {            fprintf(out, "  },\n  {\n");            write_table(out, crc_table[k]);        }        fprintf(out, "#endif\n");#  endif /* BYFOUR */        fprintf(out, "  }\n};\n");        fclose(out);    }#endif /* MAKECRCH */}#ifdef MAKECRCHlocal void write_table(out, table)    FILE *out;    const unsigned long FAR *table;{    int n;    for (n = 0; n < 256; n++)        fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : "    ", table[n],                n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));}#endif /* MAKECRCH */#else /* !DYNAMIC_CRC_TABLE *//* ======================================================================== * Tables of CRC-32s of all single-byte values, made by make_crc_table(). */#include "crc32.h"#endif /* DYNAMIC_CRC_TABLE *//* ========================================================================= * This function can be used by asm versions of crc32() */const unsigned long FAR * ZEXPORT get_crc_table(){#ifdef DYNAMIC_CRC_TABLE    if (crc_table_empty)        make_crc_table();#endif /* DYNAMIC_CRC_TABLE */    return (const unsigned long FAR *)crc_table;}/* ========================================================================= */#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1/* ========================================================================= */unsigned long ZEXPORT crc32(crc, buf, len)    unsigned long crc;    const unsigned char FAR *buf;    unsigned len;{    if (buf == Z_NULL) return 0UL;#ifdef DYNAMIC_CRC_TABLE    if (crc_table_empty)        make_crc_table();#endif /* DYNAMIC_CRC_TABLE */#ifdef BYFOUR    if (sizeof(void *) == sizeof(ptrdiff_t)) {        u4 endian;        endian = 1;        if (*((unsigned char *)(&endian)))            return crc32_little(crc, buf, len);        else            return crc32_big(crc, buf, len);    }#endif /* BYFOUR */    crc = crc ^ 0xffffffffUL;    while (len >= 8) {        DO8;        len -= 8;    }    if (len) do {        DO1;    } while (--len);    return crc ^ 0xffffffffUL;}#ifdef BYFOUR/* ========================================================================= */#define DOLIT4 c ^= *buf4++; \        c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \            crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4/* ========================================================================= */local unsigned long crc32_little(crc, buf, len)    unsigned long crc;    const unsigned char FAR *buf;    unsigned len;{    register u4 c;    register const u4 FAR *buf4;    c = (u4)crc;    c = ~c;    while (len && ((ptrdiff_t)buf & 3)) {        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);        len--;    }    buf4 = (const u4 FAR *)(const void FAR *)buf;    while (len >= 32) {        DOLIT32;        len -= 32;    }    while (len >= 4) {        DOLIT4;        len -= 4;    }    buf = (const unsigned char FAR *)buf4;    if (len) do {        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);    } while (--len);    c = ~c;    return (unsigned long)c;}/* ========================================================================= */#define DOBIG4 c ^= *++buf4; \        c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \            crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4/* ========================================================================= */local unsigned long crc32_big(crc, buf, len)    unsigned long crc;    const unsigned char FAR *buf;    unsigned len;{    register u4 c;    register const u4 FAR *buf4;    c = REV((u4)crc);    c = ~c;    while (len && ((ptrdiff_t)buf & 3)) {        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);        len--;    }    buf4 = (const u4 FAR *)(const void FAR *)buf;    buf4--;    while (len >= 32) {        DOBIG32;        len -= 32;    }    while (len >= 4) {        DOBIG4;        len -= 4;    }    buf4++;    buf = (const unsigned char FAR *)buf4;    if (len) do {        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);    } while (--len);    c = ~c;    return (unsigned long)(REV(c));}#endif /* BYFOUR */#define GF2_DIM 32      /* dimension of GF(2) vectors (length of CRC) *//* ========================================================================= */local unsigned long gf2_matrix_times(mat, vec)    unsigned long *mat;    unsigned long vec;{    unsigned long sum;    sum = 0;    while (vec) {        if (vec & 1)            sum ^= *mat;        vec >>= 1;        mat++;    }    return sum;}/* ========================================================================= */local void gf2_matrix_square(square, mat)    unsigned long *square;    unsigned long *mat;{    int n;    for (n = 0; n < GF2_DIM; n++)        square[n] = gf2_matrix_times(mat, mat[n]);}/* ========================================================================= */uLong ZEXPORT crc32_combine(crc1, crc2, len2)    uLong crc1;    uLong crc2;    z_off_t len2;{    int n;    unsigned long row;    unsigned long even[GF2_DIM];    /* even-power-of-two zeros operator */    unsigned long odd[GF2_DIM];     /* odd-power-of-two zeros operator */    /* degenerate case */    if (len2 == 0)        return crc1;    /* put operator for one zero bit in odd */    odd[0] = 0xedb88320L;           /* CRC-32 polynomial */    row = 1;    for (n = 1; n < GF2_DIM; n++) {        odd[n] = row;        row <<= 1;    }    /* put operator for two zero bits in even */    gf2_matrix_square(even, odd);    /* put operator for four zero bits in odd */    gf2_matrix_square(odd, even);    /* apply len2 zeros to crc1 (first square will put the operator for one       zero byte, eight zero bits, in even) */    do {        /* apply zeros operator for this bit of len2 */        gf2_matrix_square(even, odd);        if (len2 & 1)            crc1 = gf2_matrix_times(even, crc1);        len2 >>= 1;        /* if no more bits set, then done */        if (len2 == 0)            break;        /* another iteration of the loop with odd and even swapped */        gf2_matrix_square(odd, even);        if (len2 & 1)            crc1 = gf2_matrix_times(odd, crc1);        len2 >>= 1;        /* if no more bits set, then done */    } while (len2 != 0);    /* return combined crc */    crc1 ^= crc2;    return crc1;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费日韩伦理电影| 久久综合九色综合97婷婷| 国产精品萝li| 成人午夜短视频| 最新日韩在线视频| 99麻豆久久久国产精品免费| 亚洲欧美中日韩| 欧美视频在线一区| 精品一区二区综合| 国产丝袜欧美中文另类| 91在线视频观看| 日韩精品国产欧美| 久久影院午夜论| 久久免费电影网| 日韩 欧美一区二区三区| 91精品国产综合久久久蜜臀粉嫩| 免费高清在线一区| 中文字幕一区二区三区视频| 在线日韩av片| 国产真实乱对白精彩久久| 久久久久久综合| 欧美三级日本三级少妇99| 激情综合网天天干| 亚洲一区二区三区爽爽爽爽爽| 91精品国产福利在线观看| 99精品欧美一区二区三区小说| 亚洲v日本v欧美v久久精品| 欧美国产一区视频在线观看| 精品污污网站免费看| 成人手机在线视频| 国产麻豆精品视频| 麻豆视频一区二区| 日本欧美大码aⅴ在线播放| 亚洲男人天堂av网| 中文一区二区完整视频在线观看| 日韩免费福利电影在线观看| 色狠狠桃花综合| aaa国产一区| 成人教育av在线| 国产盗摄一区二区| 国产成人综合网| 精品一区二区三区免费| 日韩精品一级中文字幕精品视频免费观看| 国产精品每日更新| 国产精品久久久久久久久免费樱桃| 久久精品一级爱片| 久久久一区二区| 国产精品视频第一区| 久久久99久久精品欧美| 久久久久久久久久美女| 国产日产欧美一区二区三区| 国产欧美日韩在线看| 日本一区二区三区国色天香| 亚洲欧美偷拍卡通变态| 亚洲人成亚洲人成在线观看图片 | 国产精品资源网站| 成人午夜视频在线| 在线免费观看成人短视频| 欧美日韩在线播放一区| 4438x成人网最大色成网站| 久久综合九色综合97婷婷女人| 国产精品进线69影院| 亚洲va欧美va人人爽午夜| 麻豆专区一区二区三区四区五区| 国产一区二区免费在线| 99精品欧美一区| 欧美精品一区二区三区视频| 亚洲日本中文字幕区| 免费成人深夜小野草| 91色在线porny| 91精品一区二区三区久久久久久| 久久精品一区二区三区av| 亚洲午夜电影网| 99视频一区二区| 精品久久99ma| 亚洲成人一区二区在线观看| 不卡一卡二卡三乱码免费网站| 欧美日韩一区二区三区四区五区| 久久免费国产精品| 日韩黄色片在线观看| 2020日本不卡一区二区视频| 亚洲高清在线精品| 欧美亚洲国产bt| 亚洲一区视频在线观看视频| eeuss鲁片一区二区三区| 26uuu色噜噜精品一区二区| 天天影视涩香欲综合网| 欧美亚洲综合在线| 伊人色综合久久天天人手人婷| 国产91丝袜在线18| 日本一区二区三区四区| 成人午夜视频免费看| 国产欧美一区二区在线| 成人久久18免费网站麻豆 | 欧美精品一区二区三| 黄网站免费久久| 久久综合999| 成人免费视频播放| 亚洲精品一二三| 欧美喷水一区二区| 美女看a上一区| 国产亚洲精品精华液| 91在线国内视频| 亚洲二区在线视频| 欧美一区二区精品久久911| 久久aⅴ国产欧美74aaa| 久久久91精品国产一区二区精品| 国产露脸91国语对白| 最近中文字幕一区二区三区| 欧美日韩三级在线| 国产乱人伦精品一区二区在线观看| 国产亚洲欧美在线| 91国偷自产一区二区三区观看| 天天影视网天天综合色在线播放| www亚洲一区| 欧美日韩综合在线| 国产成人aaaa| 婷婷丁香激情综合| 国产欧美日韩不卡| 欧美一级夜夜爽| 精品国精品自拍自在线| 色婷婷综合在线| 精品一区二区在线播放| 亚洲综合激情另类小说区| 久久精品一区蜜桃臀影院| 欧美日韩一级大片网址| 成人禁用看黄a在线| 国产一区欧美日韩| 日本va欧美va精品发布| 一区二区三区四区在线播放| 亚洲精品一区二区三区在线观看 | 国产精品一区二区三区乱码| 婷婷开心激情综合| 亚洲国产一区在线观看| 中文字幕一区二区三区四区不卡 | 日韩免费高清av| 欧美日韩美女一区二区| 色悠悠久久综合| 91久久精品国产91性色tv| av一区二区三区黑人| 丁香五精品蜜臀久久久久99网站 | 国产成人啪午夜精品网站男同| 麻豆国产精品777777在线| 日韩不卡在线观看日韩不卡视频| 亚洲国产精品久久久久秋霞影院| 亚洲在线免费播放| 日韩国产一区二| 国产一区二区免费视频| 丰满少妇久久久久久久| 国产99久久久国产精品 | 天使萌一区二区三区免费观看| 亚洲成a人v欧美综合天堂| 天天综合色天天综合色h| 日本vs亚洲vs韩国一区三区| 精品在线一区二区三区| 国产一区二区三区四| 99久久婷婷国产综合精品电影| 色吊一区二区三区| 日韩一区二区免费在线电影| 精品国产亚洲在线| 中文字幕第一区| 午夜精品福利久久久| 国产成人免费在线观看| 欧美主播一区二区三区美女| 精品国产91洋老外米糕| 国产精品日产欧美久久久久| 香蕉成人啪国产精品视频综合网 | 91捆绑美女网站| 欧美v日韩v国产v| 有码一区二区三区| 国产精一区二区三区| 欧美理论片在线| 亚洲免费观看高清完整版在线| 91丨九色丨蝌蚪丨老版| 日韩精品专区在线影院重磅| 一区二区三区四区精品在线视频| 久久国产日韩欧美精品| 91精品福利视频| 亚洲免费伊人电影| 99国内精品久久| 国产精品久久夜| 粉嫩av一区二区三区粉嫩 | 欧美国产日韩一二三区| 蜜桃av噜噜一区二区三区小说| 色婷婷综合视频在线观看| 国产精品丝袜黑色高跟| 国内欧美视频一区二区| 欧美成人女星排行榜| 日韩国产一二三区| 3atv一区二区三区| 日韩不卡手机在线v区| 欧美视频一区二区三区四区| 亚洲欧美日韩在线播放| 欧美系列在线观看| 日日嗨av一区二区三区四区| 欧美午夜精品久久久久久超碰| 亚洲欧美激情小说另类| 欧美在线色视频| 奇米色777欧美一区二区| 日韩精品一区二区三区视频在线观看 |