crctable.c revision 78556
178556Sobrien
278556Sobrien/*-------------------------------------------------------------*/
378556Sobrien/*--- Table for doing CRCs                                  ---*/
478556Sobrien/*---                                            crctable.c ---*/
578556Sobrien/*-------------------------------------------------------------*/
678556Sobrien
778556Sobrien/*--
878556Sobrien  This file is a part of bzip2 and/or libbzip2, a program and
978556Sobrien  library for lossless, block-sorting data compression.
1078556Sobrien
1178556Sobrien  Copyright (C) 1996-2000 Julian R Seward.  All rights reserved.
1278556Sobrien
1378556Sobrien  Redistribution and use in source and binary forms, with or without
1478556Sobrien  modification, are permitted provided that the following conditions
1578556Sobrien  are met:
1678556Sobrien
1778556Sobrien  1. Redistributions of source code must retain the above copyright
1878556Sobrien     notice, this list of conditions and the following disclaimer.
1978556Sobrien
2078556Sobrien  2. The origin of this software must not be misrepresented; you must
2178556Sobrien     not claim that you wrote the original software.  If you use this
2278556Sobrien     software in a product, an acknowledgment in the product
2378556Sobrien     documentation would be appreciated but is not required.
2478556Sobrien
2578556Sobrien  3. Altered source versions must be plainly marked as such, and must
2678556Sobrien     not be misrepresented as being the original software.
2778556Sobrien
2878556Sobrien  4. The name of the author may not be used to endorse or promote
2978556Sobrien     products derived from this software without specific prior written
3078556Sobrien     permission.
3178556Sobrien
3278556Sobrien  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
3378556Sobrien  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
3478556Sobrien  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
3578556Sobrien  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
3678556Sobrien  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3778556Sobrien  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
3878556Sobrien  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
3978556Sobrien  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
4078556Sobrien  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
4178556Sobrien  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
4278556Sobrien  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4378556Sobrien
4478556Sobrien  Julian Seward, Cambridge, UK.
4578556Sobrien  jseward@acm.org
4678556Sobrien  bzip2/libbzip2 version 1.0 of 21 March 2000
4778556Sobrien
4878556Sobrien  This program is based on (at least) the work of:
4978556Sobrien     Mike Burrows
5078556Sobrien     David Wheeler
5178556Sobrien     Peter Fenwick
5278556Sobrien     Alistair Moffat
5378556Sobrien     Radford Neal
5478556Sobrien     Ian H. Witten
5578556Sobrien     Robert Sedgewick
5678556Sobrien     Jon L. Bentley
5778556Sobrien
5878556Sobrien  For more information on these sources, see the manual.
5978556Sobrien--*/
6078556Sobrien
6178556Sobrien
6278556Sobrien#include "bzlib_private.h"
6378556Sobrien
6478556Sobrien/*--
6578556Sobrien  I think this is an implementation of the AUTODIN-II,
6678556Sobrien  Ethernet & FDDI 32-bit CRC standard.  Vaguely derived
6778556Sobrien  from code by Rob Warnock, in Section 51 of the
6878556Sobrien  comp.compression FAQ.
6978556Sobrien--*/
7078556Sobrien
7178556SobrienUInt32 BZ2_crc32Table[256] = {
7278556Sobrien
7378556Sobrien   /*-- Ugly, innit? --*/
7478556Sobrien
7578556Sobrien   0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L,
7678556Sobrien   0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L,
7778556Sobrien   0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L,
7878556Sobrien   0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL,
7978556Sobrien   0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L,
8078556Sobrien   0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L,
8178556Sobrien   0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L,
8278556Sobrien   0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL,
8378556Sobrien   0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L,
8478556Sobrien   0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L,
8578556Sobrien   0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L,
8678556Sobrien   0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL,
8778556Sobrien   0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L,
8878556Sobrien   0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L,
8978556Sobrien   0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L,
9078556Sobrien   0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL,
9178556Sobrien   0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL,
9278556Sobrien   0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L,
9378556Sobrien   0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L,
9478556Sobrien   0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL,
9578556Sobrien   0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL,
9678556Sobrien   0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L,
9778556Sobrien   0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L,
9878556Sobrien   0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL,
9978556Sobrien   0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL,
10078556Sobrien   0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L,
10178556Sobrien   0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L,
10278556Sobrien   0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL,
10378556Sobrien   0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL,
10478556Sobrien   0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L,
10578556Sobrien   0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L,
10678556Sobrien   0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL,
10778556Sobrien   0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L,
10878556Sobrien   0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL,
10978556Sobrien   0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL,
11078556Sobrien   0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L,
11178556Sobrien   0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L,
11278556Sobrien   0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL,
11378556Sobrien   0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL,
11478556Sobrien   0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L,
11578556Sobrien   0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L,
11678556Sobrien   0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL,
11778556Sobrien   0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL,
11878556Sobrien   0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L,
11978556Sobrien   0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L,
12078556Sobrien   0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL,
12178556Sobrien   0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL,
12278556Sobrien   0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L,
12378556Sobrien   0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L,
12478556Sobrien   0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL,
12578556Sobrien   0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L,
12678556Sobrien   0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L,
12778556Sobrien   0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L,
12878556Sobrien   0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL,
12978556Sobrien   0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L,
13078556Sobrien   0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L,
13178556Sobrien   0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L,
13278556Sobrien   0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL,
13378556Sobrien   0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L,
13478556Sobrien   0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L,
13578556Sobrien   0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L,
13678556Sobrien   0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL,
13778556Sobrien   0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L,
13878556Sobrien   0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L
13978556Sobrien};
14078556Sobrien
14178556Sobrien
14278556Sobrien/*-------------------------------------------------------------*/
14378556Sobrien/*--- end                                        crctable.c ---*/
14478556Sobrien/*-------------------------------------------------------------*/
145